pandoc-3.1.3/0000755000000000000000000000000007346545000011153 5ustar0000000000000000pandoc-3.1.3/AUTHORS.md0000644000000000000000000001542407346545000012630 0ustar0000000000000000# Contributors - Aaron Wolen - Agustín Martín Barbero - Akos Marton - Albert Krewinkel - Alex Ivkin - Alex Toldaiev - Alex Vong - Alexander Batischev - Alexander Kondratskiy - Alexander Krotov - Alexander Sulfrian - Alexander V Vershilov - Alexandre Franke - Alfred Wechselberger - Amar Al-Zubaidi - Amir Dekel - Amogh Rathore - Amy de Buitléir - Anabra - Anders Waldenborg - Andreas Lööw - Andreas Scherer - Andres Freund - Andrew Dunning - Andy Morris - Aner Lucero - Anti-Distinctlyminty - Antoine Latter - Antonio Terceiro - Arata Mizuki - Arata Mizuki - Arfon Smith - Arlo O'Keeffe - Artem Pelenitsyn - Artyom Kazak - B. Scott Michel - Bastien Dumont - Ben Firshman - Ben Gamari - Ben Steinberg - Beni Cherniavsky-Paskin - Benjamin Bray - Benjamin Wuethrich - Benoit Schweblin - Benson Muite - Bjorn Buckwalter - Blake Eryx - Bodigrim - Bradley Kuhn - Brent Yorgey - Brian Leung - Bryan O'Sullivan - Caleb McDaniel - Caleb Mclennan - Calvin Beck - Carlos Scheidegger - Carlos Sosa - Carsten Allefeld - Castedo Ellerman - Cécile Chemin - Cédric Couralet - Cezary Drożak - Charanjit Singh - Charlotte Koch - Chris Black - Christian Conkle - Christian Christiansen - Christian Despres - Christoffer Ackelman - Christoffer Sawicki - Christophe Dervieux - Clare Macrae - Clint Adams - Conal Elliott - Cormac Relf - Craig S. Bosma - Damien Clochard - Daniel Bergey - Daniel Kessler - Daniel Maslowski - Daniel T. Staal - Daniele D'Orazio - David A Roberts - David Lazar - David Martschenko - David Röthlisberger - Denis Laxalde - Denis Maier - Derek Chen-Becker - Diego Balseiro - Dimitri Sabadie - Dimitris Apostolou - Dmitry Pogodin - Dmitry Volodin - Douglas Calvert - Eigil Rischel - Elliot Bobrow - Emanuel Evans - Emerson Harkin - Emily Bourke - Emily Eisenberg - Eric Kow - Eric Schrijver - Eric Seidel - Erik Rask - Ethan Riley - Étienne Bersac - Even Brenden - Ezwal - Fabián Heredia Montiel - Félix Baylac-Jacqué - Felix Yan - Florian Beeres - Florian Eitel - Florian Klink - Florian Kohrt - Francesco Mazzoli - Francesco Occhipinti - François Gannaz - Frank Seifferth - Frederik Elwert - Freiric Barral - Freirich Raabe - Frerich Raabe - Fyodor Sheremetyev - Gabor Pali - Gabriel Lewertowski - Gavin Beatty - Georgi Lyubenov - Gottfried Haider - Greg Maslov - Greg Rundlett - Grégory Bataille - Guriy Samarin - Gwern Branwen - Hamish Mackenzie - Hans-Peter Deifel - Heiko Schlittermann - Henrik Tramberend - Henry de Valence - Herwig Stuetz - Hos Es - Hubert Plociniczak - Ian Max Andolina - Igor Khorlo - Igor Pashev - Ilona Silverwood - Ilya V. Portnov - Ivan Panchenko - Ivan Trubach - Ivar de Bruin - Ivo Clarysse - Jaap de Jong - J. B. Rainsberger - J. Lewis Muir - Jaehwang Jung - Jaime Marquínez Ferrándiz - Jake Zimmerman - Jakob Voß - James Aspnes - James Scott-Brown - Jamie F. Olson - Jan Larres - Jan Schulz - Jan Tojnar - Jannik Buhr - Jan-Otto Kröpke - Jared Lander - Jason Ronallo - Jeff Arnold - Jeff Runningen - Jens Getreu - Jens Petersen - Jesse Hathaway - Jeremie Knuesel - Jérémy Bobbio - Jeroen de Haas - Jerry Sky - Jesse Rosenthal - Joe Hermaszewski - Joe Hillenbrand - John KetzerX - John Luke Bentley - John MacFarlane - John Muccigrosso - Jonas Scholl - Jonas Smedegaard - Jonathan Daugherty - Jonathan Dönszelmann - Jose Luis Duran - José de Mattos Neto - Josef Svenningsson - Joseph C. Sible - Julien Cretel - Julien Dutant - Juliette Fourcot - Juliusz Gonera - Justin Bogner - Justin Wood - Karl Pettersson - Keiichiro Shikano - Kelsey Hightower - Kolen Cheung - Konstantin Zudov - Kristof Bastiaensen - Krystof Beuermann - Lars-Dominik Braun - Laurent P. René de Cotret - Leif Metcalf - Leonard Rosenthol - Lila - Link Swanson - Loïc Grobol - Lorenzo - Lucas Escot - Lucas Viana - Lucas V. R - Luke Plant - Marc Schreiber - Marcin Serwin - Mario Lang - Mark Szepieniec - Mark Wright - Martin Joerg - Martin Linn - Martín Pozo - Masataka Ogawa - Masayoshi Takahashi - Matej Kollar - Mathias Schenner - Mathias Walter - Mathieu Boespflug - Mathieu Duponchelle - Matt Dodson - Matthew Doty - Matthew Eddey - Matthew Pickering - Matthias C. M. Troffaes - Mauro Bieg - Max Bolingbroke - Max Rydahl Andersen - Merijn Verstraaten - Michael Beaumont - Michael Chladek - Michael Hoffmann - Michael Peyton Jones - Michael Reed - Michael Snoyman - Michael Stahl - Michael Thompson - Mike Tzou - Mikołaj Machowski - Milan Bracke - MinRK - Morgan Willcock - Morton Fox - Nathan Gass - Naveen - Neil Mayhew - Nick Bart - Nick Berendsen - Nick Fleisher - Nicolas Kaiser - Nikolai Korobeinikov - Nikolay Yakimov - Nils Carlson - Nixon Enraght-Moony - Noah Malmed - Nokome Bentley - OCzarnecki - Ola Wolska - Ole Martin Ruud - Oliver Matthews - Olivier Benz - Ophir Lifshitz - Or Neeman - OvidiusCicero - Owen McGrath - Pablo Rodríguez - Pascal Wagler - Paul Rivier - Paul Tilley - Paulo Tanimoto - Pavol Otto - Pete Ryland - Peter Fabinksi - Peter Wang - Philip Pesca - Philippe Ombredanne - Phillip Alday - Pranesh Prakash - Prat - Prayag Verma - Puneeth Chaganti - Quinn - R. N. West - Ralf Stephan - Raniere Silva - Raymond Ehlers - Recai Oktaş - Rowan Rodrik van der Molen - Roland Hieber - Roman Beránek - Ruqi - RyanGlScott - S.P.H - Salim B - Samuel Tardieu - Saumel Lemmenmeier - Sascha Wilde - Scott Morrison - Sebastian Talmon - Sergei Trofimovich - Sergey Astanin - Shahbaz Youssefi - Shaun Attfield - Shim Myeongseob - Shin Sang-jae - Sidarth Kapur - Sidharth Kapur - Simon Hengel - Simon Schuster - Siphalor - Stefan Dresselhaus - Stephan Meijer - Stephen Altamirano - Sukil Etxenike - Sukka - Sumit Sahrawat - Sven Wick - TEC - Tarik Graba - Tatiana Porras - Terence Eden - Thenaesh Elango - Thomas Hodgson - Thomas Weißschuh - Tim Lin - Tim Wisotzki - Timm Albers - Timothy Humphries - Tiziano Müller - Todd Sifleet - TomBen - Tom Leese - Toni Dietze - Tristan Stenner - Tristan de Cacqueray - Tuong Nguyen Manh - Uli Köhler - Urs Liska - Václav Haisman - Václav Zeman - Vaibhav Sagar - Vanessa McHale - Vasily Alferov - Veratyr - Viktor Kronvall - Vincent - Vlad Hanciuta - Vladimir Alexiev - Waldir Pimenta - Wandmalfarbe - Wentao Han - Wikiwide - William Lupton - William Rusnack - Winnie Hellmann - Wout Gevaert - Xavier Olive - Yan Pashkovsky - YI - Yoan Blanc - Yuchen Pei - Zihang Chen - arcnmx - a-vrma - andrebauer - black-desk - blmage - bucklereed - bumper314 - chinapedia - cholonam - csforste - d-dorazio - damon-sava-stanley - dbecher-ito - ebiim - favonia - hseg - infinity0x - jeongminkim-islab - kaizshang91 - lifeunleaded - lux-lth - luz paz - lwolfsonkin - mbrackeantidot - mjfs - mt_caret - nbehrnd - niszet - nkalvi - nuew - obcat - oltolm - oquechy - perro tuerto - qerub - quasicomputational - ricnorr - robabla - roblabla - rodja.trappe - rski - sdhoward - shreevatsa.public - takahashim - taotieren - tecosaur - tgkokk - the-solipsist - thsutton - thron7 - timo-a - vijayphoenix - vkraven - wgevaert - wiefling - willj-dev - wuffi pandoc-3.1.3/BUGS0000644000000000000000000000023607346545000011637 0ustar0000000000000000To view a list of known bugs, or to enter a bug report, please use Pandoc's issue tracker: . See also CONTRIBUTING.md. pandoc-3.1.3/CONTRIBUTING.md0000644000000000000000000004505407346545000013414 0ustar0000000000000000Contributing to pandoc ====================== Welcome to pandoc! Very soon after its beginnings in 2006, pandoc has been influenced, improved, and modified, by users, devs, and newcomers alike. The project thrives on its active community. It is great to have you here. How can I help? --------------- There are many ways in which you can support pandoc. Here are a few ideas: * Participate in online discussions. The [pandoc-discuss] mailing list is a good place for this. This gives valuable input and makes it easier to improve the program. * Help with questions. Every request that is answered by the wider community frees time for programming contributors. This will speed up development of new features and issue fixes. Don't underestimate your knowledge, please share it! Good places to help are the [pandoc-discuss] mailing list, Q/A sites like StackOverflow, community forums (e.g. [RStudio][RStudio Community], [Zettlr][Zettlr Forum]), and, for technical questions, the GitHub [issue tracker]. * Write or improve documentation. If you ran into a problem which took more time to figure out than expected, please consider to save other users from the same experience. People writing the documentation tend to lack an outside view, so please help provide one. Good documentation is both difficult and extremely important. The official docs are not the only place for documentation. Pandoc also has a [Wiki][pandoc wiki]. Private blogs can serve as documentation just as the official manual can. * Contribute code. No matter whether it's a small fix in a format template or a huge lump of Haskell code: help is welcome. It's usually a good idea to talk about the plans early, as this can prevent unnecessary work. See below for more information. * Last but not least: consider funding the development and maintenance of pandoc financially. You can find sponsor buttons on the [pandoc website] and the [GitHub repository][GitHub repo]. A rich ecosystem of libraries, editors, filters, and templates has developed around pandoc; conversely, pandoc builds and depends on a large number of libraries. Contributing to any of these projects is another way that can help to ensure stability, and to keep pushing the boundaries of what is possible with pandoc. [RStudio Community]: https://community.rstudio.com/ [Zettlr Forum]: https://forum.zettlr.com/ [pandoc wiki]: https://github.com/jgm/pandoc/wiki [pandoc website]: https://pandoc.org [GitHub repo]: https://github.com/jgm/pandoc Have a question? ---------------- Ask on [pandoc-discuss]. Found a bug? ------------ Bug reports are welcome! Please report all bugs on pandoc's GitHub [issue tracker]. Before you submit a bug report, search the [open issues] *and* [closed issues] to make sure the issue hasn't come up before. Also, check the [User's Guide] and [FAQs] for anything relevant. Make sure you can reproduce the bug with the [latest released version] of pandoc---or, even better, the development version, since the bug may have been fixed since the last release. [Nightly builds] are available, so you don't need to compile from source to test against the development version. (To fetch a nightly, visit the link, click the topmost "Nightly" in the table, then choose your platform under "Artifacts." Note that you must be logged in with a GitHub account.) Your report should give detailed, *reproducible* instructions, including * the pandoc version (check using `pandoc -v`) * the exact command line used * the exact input used * the output received * the output you expected instead A small test case (just a few lines) is ideal. If your input is large, try to whittle it down to a *minimum working example*. Out of scope? ------------- A less than perfect conversion does not necessarily mean there's a bug in pandoc. Quoting from the MANUAL: > Because pandoc's intermediate representation of a document is less > expressive than many of the formats it converts between, one should > not expect perfect conversions between every format and every other. > Pandoc attempts to preserve the structural elements of a document, but > not formatting details such as margin size. And some document elements, > such as complex tables, may not fit into pandoc's simple document > model. While conversions from pandoc's Markdown to all formats aspire > to be perfect, conversions from formats more expressive than pandoc's > Markdown can be expected to be lossy. For example, both `docx` and `odt` formats can represent margin size, but because pandoc's internal document model does not contain a representation of margin size, this information will be lost on converting from docx to `odt`. (You can, however, customize margin size using `--reference-doc`.) So before submitting a bug report, consider whether it might be "out of scope." If it concerns a feature of documents that isn't representable in pandoc's Markdown, then it very likely is. (If in doubt, you can always ask on [pandoc-discuss].) Fixing bugs from the issue tracker ---------------------------------- Almost all the bugs on the issue tracker have one or more associated tags. These are used to indicate the *complexity* and *nature* of a bug. There is not yet a way to indicate priority. An up to date summary of issues can be found on [GitHub labels]. * [good first issue] — The perfect starting point for new contributors. The issue is generic and can be resolved without deep knowledge of the code base. * [enhancement] — A feature which would be desirable. We recommend you discuss any proposed enhancement on pandoc-discuss before writing code. * [bug] — A problem which needs to be fixed. * [complexity:low] — The fix should only be a couple of lines. * [complexity:high] — The fix might require structural changes or in depth knowledge of the code base. * [new:reader] — A request to add a new input format. * [new:writer] — A request to add a new output format. * [docs] — A discrepancy, or ambiguity in the documentation. * [status:in-progress] — Someone is actively working on or planning to work on the ticket. * [status:more-discussion-needed] — It is unclear what the correct approach to solving the ticket is. Before starting on tickets such as this it would be advisable to post on the ticket. * [status:more-info-needed] — We require more information from a user before we can classify a report properly. Issues related to a specific format are tagged accordingly, e.g. feature request or bug reports related to Markdown are labelled with [format:markdown]. Have an idea for a new feature? ------------------------------- First, search [pandoc-discuss] and the issue tracker (both [open issues] *and* [closed issues]) to make sure that the idea has not been discussed before. Explain the rationale for the feature you're requesting. Why would this feature be useful? Consider also any possible drawbacks, including backwards compatibility, new library dependencies, and performance issues. Features are very rarely "implement and forget", as all code must be maintained. This is especially relevant for large or complex contributions. It is helpful to be sympathetic to that fact, and to communicate future plans and availability clearly. Any potential new feature is best discussed on [pandoc-discuss] before opening an issue. Patches and pull requests ------------------------- Patches and pull requests are welcome. Before you put time into a nontrivial patch, it is a good idea to discuss it on [pandoc-discuss], especially if it is for a new feature (rather than fixing a bug). Please follow these guidelines: 1. Each patch (commit) should make a single logical change (fix a bug, add a feature, clean up some code, add documentation). Everything related to that change should be included (including tests and documentation), and nothing unrelated should be included. 2. The first line of the commit message should be a short description of the whole commit (ideally <= 50 characters). Then there should be a blank line, followed by a more detailed description of the change. 3. Follow the stylistic conventions you find in the existing pandoc code. Use spaces, not tabs, and wrap code to 80 columns. Always include type signatures for top-level functions. Consider installing [EditorConfig], this will help you to follow the coding style prevalent in pandoc. 4. Your code should compile without warnings (`-Wall` clean). 5. Run the tests to make sure your code does not introduce new bugs. (See below under [Tests](#tests).) All tests should pass. 6. It is a good idea to add test cases for the bug you are fixing. (See below under [Tests](#tests).) If you are adding a new writer or reader, you must include tests. 7. If you are adding a new feature, include updates to `MANUAL.txt`. 8. All code must be released under the general license governing pandoc (GPL v2). 9. It is better not to introduce new dependencies. Dependencies on external C libraries should especially be avoided. 10. We aim for compatibility with at least the last three released ghc versions, and sometimes more. Currently pandoc can be compiled on ghc 8.6 an higher. All pull requests and commits are tested automatically on GitHub Actions. Tests ----- Tests can be run as follows: cabal install --only-dependencies --enable-tests cabal configure --enable-tests cabal build cabal test or, if you're using [stack], stack setup stack test The test program is `test/test-pandoc.hs`. To run particular tests (pattern-matching on their names), use the `-p` option: cabal install pandoc --enable-tests cabal test --test-options='-p markdown' Or with stack: stack test --test-arguments='-p markdown' It is often helpful to add `-j4` (run tests in parallel) and `--hide-successes` (don't clutter output with successes) to the test arguments as well. Collecting all options in a `cabal.project.local` file in the project's root directory can help to keep `cabal` commands short. E.g.: flags: +embed_data_files tests: True test-show-details: direct test-options: -j4 --hide-successes If you add a new feature to pandoc, please add tests as well, following the pattern of the existing tests. The test suite code is in `test/test-pandoc.hs`. If you are adding a new reader or writer, it is probably easiest to add some data files to the `test` directory, and modify `test/Tests/Old.hs`. Otherwise, it is better to modify the module under the `test/Tests` hierarchy corresponding to the pandoc module you are changing. Alternatively, you may add a "command test" to the `/test/command/` hierarchy, following the pattern of the tests there. These test files should have a meaningful name, which can include the issue number and/or the feature that's being tested. For example, `5474-tables.md` refers to both issue and feature. You can rebuild the golden tests in `tests/` by passing `--accept` to the test script. (If you're using stack, `stack test --test-arguments "--accept"`; or `make TESTARGS=--accept`). Then check the changed golden files for accuracy, and commit the changes. For docx or pptx tests, open the files in Word or Powerpoint to ensure that they weren't corrupted and that they had the expected result, and mention the Word/Powerpoint version and OS in your commit comment. Code style ---------- Pandoc uses [hlint] to identify opportunities for code improvements like redundant brackets or unnecessary `Language` extensions. However, sometimes there are cases where there are good reasons to use code different from what hlint proposes. In these cases, the respective warning should be disabled in the file `.hlint.yaml`. There should be no errors when running `hlint .`; this is checked by the continuous integration (CI) setup. It is recommended that contributors check their code with a local hlint installation, but relying on the CI is fine, too. A good way to ensure no new warnings are introduced is to use a Git [pre-commit hook] which runs hlint on all updated Haskell files before creating a commit: #!/bin/sh git diff --diff-filter=MA --cached --name-only | grep '\.hs$' | \ xargs hlint --hint .hlint.yaml (If you are using GNU `xargs`, add the `-r` option immediately after `xargs`.) Saving this to `.git/hooks/pre-commit`, and making the script executable, will prevent accidental introduction of potentially problematic code. Benchmarks ---------- To run benchmarks with cabal: cabal configure --enable-benchmarks cabal build cabal bench With stack: stack bench Using the REPL -------------- With a recent version of cabal, you can do `cabal repl` and get a ghci REPL for working with pandoc. With [stack], use `stack ghci`. We recommend using the following `.ghci` file (which can be placed in the source directory): :set -fobject-code :set -XTypeSynonymInstances :set -XScopedTypeVariables :set -XOverloadedStrings Profiling --------- To diagnose a performance issue with parsing, first try using the `--trace` option. This will give you a record of when block parsers succeed, so you can spot backtracking issues. To use the GHC profiler with cabal: cabal clean cabal install --enable-library-profiling --enable-executable-profiling pandoc +RTS -p -RTS [file]... less pandoc.prof With stack: stack clean stack install --profile pandoc +RTS -p -RTS [file]... less pandoc.prof The code -------- Pandoc has a publicly accessible git repository on GitHub: . To get a local copy of the source: git clone https://github.com/jgm/pandoc.git The source for the main pandoc program is `pandoc.hs`. The source for the pandoc library is in `src/`, the source for the tests is in `test/`, and the source for the benchmarks is in `benchmark/`. The modules `Text.Pandoc.Definition`, `Text.Pandoc.Builder`, and `Text.Pandoc.Generic` are in a separate library `pandoc-types`. The code can be found in . To build pandoc, you will need a working installation of the [Haskell platform]. The library is structured as follows: - `Text.Pandoc` is a top-level module that exports what is needed by most users of the library. Any patches that add new readers or writers will need to make changes here, too. - `Text.Pandoc.Definition` (in `pandoc-types`) defines the types used for representing a pandoc document. - `Text.Pandoc.Builder` (in `pandoc-types`) provides functions for building pandoc documents programmatically. - `Text.Pandoc.Generics` (in `pandoc-types`) provides functions allowing you to promote functions that operate on parts of pandoc documents to functions that operate on whole pandoc documents, walking the tree automatically. - `Text.Pandoc.Readers.*` are the readers, and `Text.Pandoc.Writers.*` are the writers. - `Text.Pandoc.Citeproc.*` contain the code for citation handling, including an interface to the [citeproc] library. - `Text.Pandoc.Data` is used to embed data files when the `embed_data_files` cabal flag is used. - `Text.Pandoc.Emoji` is a thin wrapper around [emojis]. - `Text.Pandoc.Highlighting` contains the interface to the skylighting library, which is used for code syntax highlighting. - `Text.Pandoc.ImageSize` is a utility module containing functions for calculating image sizes from the contents of image files. - `Text.Pandoc.MIME` contains functions for associating MIME types with extensions. - `Text.Pandoc.Options` defines reader and writer options. - `Text.Pandoc.PDF` contains functions for producing a PDF from a LaTeX source. - `Text.Pandoc.Parsing` contains parsing functions used in multiple readers. the needs of pandoc. - `Text.Pandoc.SelfContained` contains functions for making an HTML file "self-contained," by importing remotely linked images, CSS, and JavaScript and turning them into `data:` URLs. - `Text.Pandoc.Shared` is a grab-bag of shared utility functions. - `Text.Pandoc.Writers.Shared` contains utilities used in writers only. - `Text.Pandoc.Slides` contains functions for splitting a markdown document into slides, using the conventions described in the MANUAL. - `Text.Pandoc.Templates` defines pandoc's templating system. - `Text.Pandoc.UTF8` contains functions for converting text to and from UTF8 bytestrings (strict and lazy). - `Text.Pandoc.Asciify` contains functions to derive ascii versions of identifiers that use accented characters. - `Text.Pandoc.UUID` contains functions for generating UUIDs. - `Text.Pandoc.XML` contains functions for formatting XML. Lua filters ----------- If you've written a useful pandoc [lua filter](lua-filters.html), you may want to consider submitting a pull request to the [lua-filters repository](https://github.com/pandoc/lua-filters). [open issues]: https://github.com/jgm/pandoc/issues [closed issues]: https://github.com/jgm/pandoc/issues?q=is%3Aissue+is%3Aclosed [latest released version]: https://github.com/jgm/pandoc/releases/latest [Nightly builds]: https://github.com/jgm/pandoc/actions?query=workflow%3ANightly [pandoc-discuss]: https://groups.google.com/group/pandoc-discuss [issue tracker]: https://github.com/jgm/pandoc/issues [User's Guide]: https://pandoc.org/MANUAL.html [FAQs]: https://pandoc.org/faqs.html [EditorConfig]: https://editorconfig.org/ [Haskell platform]: https://www.haskell.org/platform/ [hlint]: https://hackage.haskell.org/package/hlint [citeproc]: https://hackage.haskell.org/package/citeproc [emojis]: https://hackage.haskell.org/package/emojis [hsb2hs]: https://hackage.haskell.org/package/hsb2hs [pre-commit hook]: https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks [GitHub labels]: https://github.com/jgm/pandoc/labels [good first issue]:https://github.com/jgm/pandoc/labels/good%20first%20issue [enhancement]: https://github.com/jgm/pandoc/labels/enhancement [bug]: https://github.com/jgm/pandoc/labels/bug [complexity:low]: https://github.com/jgm/pandoc/labels/complexity:low [complexity:high]: https://github.com/jgm/pandoc/labels/complexity:high [docs]: https://github.com/jgm/pandoc/labels/docs [format:markdown]: https://github.com/jgm/pandoc/labels/format:markdown [new:reader]: https://github.com/jgm/pandoc/labels/new:reader [new:writer]: https://github.com/jgm/pandoc/labels/new:writer [status:in-progress]: https://github.com/jgm/pandoc/labels/status:in-progress [status:more-discussion-needed]: https://github.com/jgm/pandoc/labels/status:more-discussion-needed [status:more-info-needed]: https://github.com/jgm/pandoc/labels/status:more-info-needed [stack]: https://github.com/commercialhaskell/stack pandoc-3.1.3/COPYING.md0000644000000000000000000004274607346545000012622 0ustar0000000000000000### GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. ### Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. 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 this service 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. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. ### TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION **0.** This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. **1.** You may copy and distribute 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 and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. **2.** You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: **a)** You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. **b)** You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. **c)** If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. **3.** You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: **a)** Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, **b)** Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, **c)** Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. **4.** You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. **5.** You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. **6.** Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. **7.** If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. **8.** If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. **9.** The Free Software Foundation may publish revised and/or new versions of the 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 a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. **10.** If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. **NO WARRANTY** **11.** BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. **12.** IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE 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. ### END OF TERMS AND CONDITIONS ### How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. one line to give the program's name and an idea of what it does. Copyright (C) yyyy name of author This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands \`show w' and \`show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than \`show w' and \`show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. signature of Ty Coon, 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the [GNU Lesser General Public License](https://www.gnu.org/licenses/lgpl.html) instead of this License.pandoc-3.1.3/COPYRIGHT0000644000000000000000000002014307346545000012446 0ustar0000000000000000Pandoc Copyright (C) 2006-2023 John MacFarlane With the exceptions noted below, this code is released under the [GPL], version 2 or later: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA The GNU General Public License is available in the file COPYING.md in the source distribution. On Debian systems, the complete text of the GPL can be found in `/usr/share/common-licenses/GPL`. [GPL]: https://www.gnu.org/copyleft/gpl.html Pandoc's complete source code is available from the [Pandoc home page]. [Pandoc home page]: https://pandoc.org Pandoc includes some code with different copyrights, or subject to different licenses. The copyright and license statements for these sources are included below. All are GPL-compatible licenses. ---------------------------------------------------------------------- The modules in the `pandoc-types` repository (Text.Pandoc.Definition, Text.Pandoc.Builder, Text.Pandoc.Generics, Text.Pandoc.JSON, Text.Pandoc.Walk) are licensed under the BSD 3-clause license: Copyright (c) 2006-2023, John MacFarlane All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of John MacFarlane nor the names of other contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------- Pandoc's templates (in `data/templates`) are dual-licensed as either GPL (v2 or higher, same as pandoc) or (at your option) the BSD 3-clause license. Copyright (c) 2014--2023, John MacFarlane ---------------------------------------------------------------------- src/Text/Pandoc/Writers/Muse.hs Copyright (C) 2017-2020 Alexander Krotov Released under the GNU General Public License version 2 or later. ---------------------------------------------------------------------- src/Text/Pandoc/Writers/Texinfo.hs Copyright (C) 2008-2023 John MacFarlane and Peter Wang Released under the GNU General Public License version 2 or later. ---------------------------------------------------------------------- src/Text/Pandoc/Writers/OpenDocument.hs Copyright (C) 2008-2023 Andrea Rossato and John MacFarlane Released under the GNU General Public License version 2 or later. ---------------------------------------------------------------------- src/Text/Pandoc/Writers/Org.hs Copyright (C) 2010-2023 Puneeth Chaganti, John MacFarlane, and Albert Krewinkel Released under the GNU General Public License version 2 or later. ---------------------------------------------------------------------- src/Text/Pandoc/Writers/ZimWiki.hs Copyright (C) 2017 Alex Ivkin Released under the GNU General Public License version 2 or later. ---------------------------------------------------------------------- src/Text/Pandoc/Readers/Docx.hs src/Text/Pandoc/Readers/Docx/* Copyright (C) 2014-2020 Jesse Rosenthal Released under the GNU General Public License version 2 or later. ---------------------------------------------------------------------- src/Text/Pandoc/Readers/Textile.hs Copyright (C) 2010-2023 Paul Rivier and John MacFarlane Released under the GNU General Public License version 2 or later. ---------------------------------------------------------------------- src/Text/Pandoc/Readers/TikiWiki.hs Copyright (C) 2017 Robin Lee Powell Released under the GNU General Public License version 2 or later. ---------------------------------------------------------------------- src/Text/Pandoc/Readers/JATS.hs Copyright (C) 2017-2018 Hamish Mackenzie Released under the GNU General Public License version 2 or later. ---------------------------------------------------------------------- src/Text/Pandoc/Readers/EPUB.hs Copyright (C) 2014-2023 Matthew Pickering and John MacFarlane Released under the GNU General Public License version 2 or later. ---------------------------------------------------------------------- src/Text/Pandoc/Readers/Org.hs src/Text/Pandoc/Readers/Org/* test/Tests/Readers/Org/* Copyright (C) 2014-2023 Albert Krewinkel Released under the GNU General Public License version 2 or later. ---------------------------------------------------------------------- pandoc-lua-engine/src/Text/Pandoc/Lua.hs pandoc-lua-engine/src/Text/Pandoc/Lua/* pandoc-lua-engine/test/lua/* Copyright (C) 2017--2023 Albert Krewinkel and John MacFarlane Released under the GNU General Public License version 2 or later. ---------------------------------------------------------------------- src/Text/Pandoc/Readers/Jira.hs src/Text/Pandoc/Writers/Jira.hs test/Tests/Readers/Jira.hs Copyright (C) 2019--2023 Albert Krewinkel Released under the GNU General Public License version 2 or later. ---------------------------------------------------------------------- src/Text/Pandoc/Readers/FB2.hs Copyright (C) 2018--2019 Alexander Krotov Released under the GNU General Public License version 2 or later. ---------------------------------------------------------------------- The dzslides template contains JavaScript and CSS from Paul Rouget's dzslides template. https://github.com/paulrouget/dzslides Released under the Do What the Fuck You Want To Public License. ------------------------------------------------------------------------ Pandoc embeds a Lua interpreter (via hslua). Copyright © 1994–2022 Lua.org, PUC-Rio. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. pandoc-3.1.3/INSTALL.md0000644000000000000000000003166407346545000012615 0ustar0000000000000000# Installing pandoc The simplest way to get the latest pandoc release is to use the installer. Download the latest installer For alternative ways to install pandoc, see below under the heading for your operating system. ## Windows There is a package installer at pandoc's [download page]. This will install pandoc, replacing older versions, and update your path to include the directory where pandoc's binaries are installed. If you prefer not to use the msi installer, we also provide a zip file that contains pandoc's binaries and documentation. Simply unzip this file and move the binaries to a directory of your choice. Alternatively, you can install pandoc using [Chocolatey](https://chocolatey.org): choco install pandoc Chocolatey can also install other software that integrates with Pandoc. For example, to install `rsvg-convert` (from [librsvg], covering formats without SVG support), [Python] (to use Pandoc filters), and [MiKTeX] (to typeset PDFs with [LaTeX]): choco install rsvg-convert python miktex Or, you can install pandoc using [winget](https://github.com/microsoft/winget-pkgs): winget install --source winget --exact --id JohnMacFarlane.Pandoc Using multiple installation methods can result in two separate installations of pandoc; it is recommended to properly uninstall pandoc before switching to an alternative installation method. By default, Pandoc creates PDFs using LaTeX. We recommend installing it via [MiKTeX]. ## macOS There is a package installer at pandoc's [download page]. If you later want to uninstall the package, you can do so by downloading [this script][uninstaller] and running it with `perl uninstall-pandoc.pl`. Alternatively, you can install pandoc using [Homebrew](https://brew.sh): brew install pandoc Homebrew can also install other software that integrates with Pandoc. For example, to install [librsvg] (its `rsvg-convert` covers formats without SVG support), [Python] (to use Pandoc filters), and [BasicTeX] (to typeset PDFs with [LaTeX]): brew install librsvg python homebrew/cask/basictex Note: On unsupported versions of macOS (more than three releases old), Homebrew installs from source, which takes additional time and disk space for the `ghc` compiler and dependent Haskell libraries. We also provide a zip file containing the binaries and man pages, for those who prefer not to use the installer. Simply unzip the file and move the binaries and man pages to whatever directory you like. By default, Pandoc creates PDFs using LaTeX. Because a full [MacTeX] installation uses four gigabytes of disk space, we recommend [BasicTeX] or [TinyTeX](https://yihui.org/tinytex/) and using the `tlmgr` tool to install additional packages as needed. If you receive errors warning of fonts not found: tlmgr install collection-fontsrecommended ## Linux Check whether the pandoc version in your package manager is not outdated. Pandoc is in the [Debian], [Ubuntu], [Slackware], [Arch], [Fedora], [NiXOS], [openSUSE], [gentoo] and [Void] repositories. To get the latest release, we provide a binary package for amd64 architecture on the **[download page]**. The executable is statically linked and has no dynamic dependencies or dependencies on external data files. Note: because of the static linking, the pandoc binary from this package cannot use lua filters that require external lua modules written in C. Both a tarball and a deb installer are provided. To install the deb: sudo dpkg -i $DEB where `$DEB` is the path to the downloaded deb. This will install the `pandoc` executable and man page. If you use an RPM-based distro, you may be able to install the deb from our download page using `alien`. On any distro, you may install from the tarball into `$DEST` (say, `/usr/local/` or `$HOME/.local`) by doing tar xvzf $TGZ --strip-components 1 -C $DEST where `$TGZ` is the path to the downloaded zipped tarball. For Pandoc versions before 2.0, which don't provide a tarball, try instead ar p $DEB data.tar.gz | tar xvz --strip-components 2 -C $DEST You can also install from source, using the instructions below under [Compiling from source]. Note that most distros have the Haskell platform in their package repositories. For example, on Debian/Ubuntu, you can install it with `apt-get install haskell-platform`. For PDF output, you'll need LaTeX. We recommend installing [TeX Live](https://www.tug.org/texlive/) via your package manager. (On Debian/Ubuntu, `apt-get install texlive`.) ## Chrome OS On Chrome OS, pandoc can be installed using the [chromebrew](https://github.com/skycocker/chromebrew) package manager with the command: ```sh crew install pandoc ``` This will automatically build and configure pandoc for the specific device you are using. ## BSD Pandoc is in the [NetBSD] and [FreeBSD ports] repositories. ## Docker The official Docker images for pandoc can be found at and at [dockerhub](https://hub.docker.com/). The [pandoc/core](https://hub.docker.com/r/pandoc/core) image contains `pandoc`. The [pandoc/latex](https://hub.docker.com/r/pandoc/latex) image also contains the minimal LaTeX installation needed to produce PDFs using pandoc. To run pandoc using Docker, converting `README.md` to `README.pdf`: docker run --rm --volume "`pwd`:/data" --user `id -u`:`id -g` pandoc/latex README.md -o README.pdf ## GitHub Actions Pandoc can be run through [GitHub Actions](https://github.com/features/actions). For some examples, see . ## GitLab CI/CD Pandoc can be run through [GitLab CI/CD]. For some examples, see . ## Compiling from source If for some reason a binary package is not available for your platform, or if you want to hack on pandoc or use a non-released version, you can install from source. ### Getting the pandoc source code Source tarballs can be found at . For example, to fetch the source for version 1.17.0.3: wget https://hackage.haskell.org/package/pandoc-1.17.0.3/pandoc-1.17.0.3.tar.gz tar xvzf pandoc-1.17.0.3.tar.gz cd pandoc-1.17.0.3 Or you can fetch the development code by cloning the repository: git clone https://github.com/jgm/pandoc cd pandoc Note: there may be times when the development code is broken or depends on other libraries which must be installed separately. Unless you really know what you're doing, install the last released version. ### Quick stack method The easiest way to build pandoc from source is to use [stack][stack]: 1. Install [stack][stack]. Note that Pandoc requires stack >= 1.7.0. 2. stack setup stack install pandoc-cli `stack setup` will automatically download the ghc compiler if you don't have it. `stack install` will install the `pandoc` executable into `~/.local/bin`, which you should add to your `PATH`. This process will take a while, and will consume a considerable amount of disk space. ### Quick cabal method 1. Install [ghcup](https://www.haskell.org/ghcup/install/). This will give you `ghc` and `cabal`. 2. Update your package database: cabal update 3. Use `cabal` to install pandoc and its dependencies: cabal install pandoc-cli This procedure will install the released version of pandoc, which will be downloaded automatically from HackageDB. The `pandoc` executable will be placed in `$HOME/.cabal/bin` on linux/unix/macOS and in `%APPDATA%\cabal\bin` on Windows. Make sure this directory is in your path. If you want to install a modified or development version of pandoc instead, switch to the source directory before running the above command -- cabal will use the local code for all projects mentioned in the `cabal.project`. 4. You should now be able to run `pandoc`: pandoc --help 5. Cabal does not install the `pandoc.1` man page, but you can copy it from the `man/` directory of the source code to `/usr/local/share/man/man1/` or wherever man pages go on your system. ### Custom cabal method This is a step-by-step procedure that offers maximal control over the build and installation. Most users should use the quick install, but this information may be of use to packagers. For more details, see the [Cabal User's Guide]. These instructions assume that the pandoc source directory is your working directory. You will need cabal version 2.0 or higher. 1. Install dependencies: in addition to the [Haskell platform], you will need a number of additional libraries. You can install them all with cabal update cabal install --only-dependencies 2. Configure: cabal configure --prefix=DIR --bindir=DIR --libdir=DIR \ --datadir=DIR --libsubdir=DIR --datasubdir=DIR --docdir=DIR \ --htmldir=DIR --program-prefix=PREFIX --program-suffix=SUFFIX \ --mandir=DIR --flags=FLAGSPEC --enable-tests All of the options have sensible defaults that can be overridden as needed. `FLAGSPEC` is a list of Cabal configuration flags, optionally preceded by a `-` (to force the flag to `false`), and separated by spaces. `pandoc`'s flags include: - `embed_data_files`: embed all data files into the binary (default no). This is helpful if you want to create a relocatable binary. `pandoc-cli`'s flags include: - `lua`: compile in support for Lua filters and custom writers. - `server`: compile in support for running in HTTP server mode when the executable is renamed (or symlinked as) `pandoc-server`. 3. Build: cabal build cabal test 4. Build API documentation: cabal haddock --html-location=URL --hyperlink-source ### Creating a relocatable binary It is possible to compile pandoc such that the data files pandoc uses are embedded in the binary. The resulting binary can be run from any directory and is completely self-contained. With cabal, add `-fembed_data_files` to the `cabal configure` or `cabal install` commands. With stack, use `--flag pandoc:embed_data_files`. ### Running tests Pandoc comes with an automated test suite. To run with cabal, `cabal test`; to run with stack, `stack test`. To run particular tests (pattern-matching on their names), use the `-p` option: cabal test --test-options='-p markdown' Or with stack: stack test --test-arguments='-p markdown' It is often helpful to add `-j4` (run tests in parallel) and `--hide-successes` (don't clutter output with successes) to the test arguments as well. If you add a new feature to pandoc, please add tests as well, following the pattern of the existing tests. The test suite code is in `test/test-pandoc.hs`. If you are adding a new reader or writer, it is probably easiest to add some data files to the `test` directory, and modify `test/Tests/Old.hs`. Otherwise, it is better to modify the module under the `test/Tests` hierarchy corresponding to the pandoc module you are changing. ### Running benchmarks To build and run the benchmarks: cabal configure --enable-benchmarks && cabal build cabal bench or with stack: stack bench To use a smaller sample size so the benchmarks run faster: cabal bench --benchmark-options='-s 20' To run just the markdown benchmarks: cabal bench --benchmark-options='markdown' [Arch]: https://www.archlinux.org/packages/community/x86_64/pandoc/ [Cabal User's Guide]: https://cabal.readthedocs.io/ [Debian]: https://packages.debian.org/pandoc [Fedora]: https://packages.fedoraproject.org/pkgs/pandoc/pandoc/ [FreeBSD ports]: https://www.freshports.org/textproc/hs-pandoc/ [GHC]: https://www.haskell.org/ghc/ [GitLab CI/CD]: https://about.gitlab.com/stages-devops-lifecycle/continuous-integration/ [Haskell platform]: https://hackage.haskell.org/platform/ [MacPorts]: https://trac.macports.org/browser/trunk/dports/textproc/pandoc/Portfile [MacTeX]: https://tug.org/mactex/ [BasicTeX]: https://www.tug.org/mactex/morepackages.html [LaTeX]: https://www.latex-project.org [MiKTeX]: https://miktex.org/ [librsvg]: https://wiki.gnome.org/Projects/LibRsvg [Python]: https://www.python.org [NetBSD]: https://pkgsrc.se/converters/pandoc [NixOS]: https://nixos.org/nixos/packages.html [Slackware]: https://www.slackbuilds.org/result/?search=pandoc&sv= [Ubuntu]: https://packages.ubuntu.com/pandoc [download page]: https://github.com/jgm/pandoc/releases/latest [gentoo]: https://packages.gentoo.org/package/app-text/pandoc [haskell repository]: https://wiki.archlinux.org/index.php/Haskell_Package_Guidelines#.5Bhaskell.5D [openSUSE]: https://software.opensuse.org/package/pandoc [source tarball]: https://hackage.haskell.org/package/pandoc [stack]: https://docs.haskellstack.org/en/stable/install_and_upgrade.html [cabal-install]: https://hackage.haskell.org/package/cabal-install [Void]: https://voidlinux.org/ [uninstaller]: https://raw.githubusercontent.com/jgm/pandoc/main/macos/uninstall-pandoc.pl pandoc-3.1.3/MANUAL.txt0000644000000000000000000102730007346545000012674 0ustar0000000000000000--- title: Pandoc User's Guide author: John MacFarlane date: June 6, 2023 --- # Synopsis `pandoc` [*options*] [*input-file*]... # Description Pandoc is a [Haskell] library for converting from one markup format to another, and a command-line tool that uses this library. Pandoc can convert between numerous markup and word processing formats, including, but not limited to, various flavors of [Markdown], [HTML], [LaTeX] and [Word docx]. For the full lists of input and output formats, see the `--from` and `--to` [options below][General options]. Pandoc can also produce [PDF] output: see [creating a PDF], below. Pandoc's enhanced version of Markdown includes syntax for [tables], [definition lists], [metadata blocks], [footnotes], [citations], [math], and much more. See below under [Pandoc's Markdown]. Pandoc has a modular design: it consists of a set of readers, which parse text in a given format and produce a native representation of the document (an _abstract syntax tree_ or AST), and a set of writers, which convert this native representation into a target format. Thus, adding an input or output format requires only adding a reader or writer. Users can also run custom [pandoc filters] to modify the intermediate AST. Because pandoc's intermediate representation of a document is less expressive than many of the formats it converts between, one should not expect perfect conversions between every format and every other. Pandoc attempts to preserve the structural elements of a document, but not formatting details such as margin size. And some document elements, such as complex tables, may not fit into pandoc's simple document model. While conversions from pandoc's Markdown to all formats aspire to be perfect, conversions from formats more expressive than pandoc's Markdown can be expected to be lossy. ## Using pandoc If no *input-files* are specified, input is read from *stdin*. Output goes to *stdout* by default. For output to a file, use the `-o` option: pandoc -o output.html input.txt By default, pandoc produces a document fragment. To produce a standalone document (e.g. a valid HTML file including `` and ``), use the `-s` or `--standalone` flag: pandoc -s -o output.html input.txt For more information on how standalone documents are produced, see [Templates] below. If multiple input files are given, pandoc will concatenate them all (with blank lines between them) before parsing. (Use `--file-scope` to parse files individually.) ## Specifying formats The format of the input and output can be specified explicitly using command-line options. The input format can be specified using the `-f/--from` option, the output format using the `-t/--to` option. Thus, to convert `hello.txt` from Markdown to LaTeX, you could type: pandoc -f markdown -t latex hello.txt To convert `hello.html` from HTML to Markdown: pandoc -f html -t markdown hello.html Supported input and output formats are listed below under [Options] (see `-f` for input formats and `-t` for output formats). You can also use `pandoc --list-input-formats` and `pandoc --list-output-formats` to print lists of supported formats. If the input or output format is not specified explicitly, pandoc will attempt to guess it from the extensions of the filenames. Thus, for example, pandoc -o hello.tex hello.txt will convert `hello.txt` from Markdown to LaTeX. If no output file is specified (so that output goes to *stdout*), or if the output file's extension is unknown, the output format will default to HTML. If no input file is specified (so that input comes from *stdin*), or if the input files' extensions are unknown, the input format will be assumed to be Markdown. ## Character encoding Pandoc uses the UTF-8 character encoding for both input and output. If your local character encoding is not UTF-8, you should pipe input and output through [`iconv`]: iconv -t utf-8 input.txt | pandoc | iconv -f utf-8 Note that in some output formats (such as HTML, LaTeX, ConTeXt, RTF, OPML, DocBook, and Texinfo), information about the character encoding is included in the document header, which will only be included if you use the `-s/--standalone` option. [`iconv`]: https://www.gnu.org/software/libiconv/ ## Creating a PDF To produce a PDF, specify an output file with a `.pdf` extension: pandoc test.txt -o test.pdf By default, pandoc will use LaTeX to create the PDF, which requires that a LaTeX engine be installed (see `--pdf-engine` below). Alternatively, pandoc can use ConTeXt, roff ms, or HTML as an intermediate format. To do this, specify an output file with a `.pdf` extension, as before, but add the `--pdf-engine` option or `-t context`, `-t html`, or `-t ms` to the command line. The tool used to generate the PDF from the intermediate format may be specified using `--pdf-engine`. You can control the PDF style using variables, depending on the intermediate format used: see [variables for LaTeX], [variables for ConTeXt], [variables for `wkhtmltopdf`], [variables for ms]. When HTML is used as an intermediate format, the output can be styled using `--css`. To debug the PDF creation, it can be useful to look at the intermediate representation: instead of `-o test.pdf`, use for example `-s -o test.tex` to output the generated LaTeX. You can then test it with `pdflatex test.tex`. When using LaTeX, the following packages need to be available (they are included with all recent versions of [TeX Live]): [`amsfonts`], [`amsmath`], [`lm`], [`unicode-math`], [`iftex`], [`listings`] (if the `--listings` option is used), [`fancyvrb`], [`longtable`], [`booktabs`], [`graphicx`] (if the document contains images), [`hyperref`], [`xcolor`], [`soul`], [`geometry`] (with the `geometry` variable set), [`setspace`] (with `linestretch`), and [`babel`] (with `lang`). If `CJKmainfont` is set, [`xeCJK`] is needed. The use of `xelatex` or `lualatex` as the PDF engine requires [`fontspec`]. `lualatex` uses [`selnolig`]. `xelatex` uses [`bidi`] (with the `dir` variable set). If the `mathspec` variable is set, `xelatex` will use [`mathspec`] instead of [`unicode-math`]. The [`upquote`] and [`microtype`] packages are used if available, and [`csquotes`] will be used for [typography] if the `csquotes` variable or metadata field is set to a true value. The [`natbib`], [`biblatex`], [`bibtex`], and [`biber`] packages can optionally be used for [citation rendering]. The following packages will be used to improve output quality if present, but pandoc does not require them to be present: [`upquote`] (for straight quotes in verbatim environments), [`microtype`] (for better spacing adjustments), [`parskip`] (for better inter-paragraph spaces), [`xurl`] (for better line breaks in URLs), [`bookmark`] (for better PDF bookmarks), and [`footnotehyper`] or [`footnote`] (to allow footnotes in tables). [TeX Live]: https://www.tug.org/texlive/ [`amsfonts`]: https://ctan.org/pkg/amsfonts [`amsmath`]: https://ctan.org/pkg/amsmath [`babel`]: https://ctan.org/pkg/babel [`biber`]: https://ctan.org/pkg/biber [`biblatex`]: https://ctan.org/pkg/biblatex [`bibtex`]: https://ctan.org/pkg/bibtex [`bidi`]: https://ctan.org/pkg/bidi [`bookmark`]: https://ctan.org/pkg/bookmark [`booktabs`]: https://ctan.org/pkg/booktabs [`csquotes`]: https://ctan.org/pkg/csquotes [`fancyvrb`]: https://ctan.org/pkg/fancyvrb [`fontspec`]: https://ctan.org/pkg/fontspec [`footnote`]: https://ctan.org/pkg/footnote [`footnotehyper`]: https://ctan.org/pkg/footnotehyper [`geometry`]: https://ctan.org/pkg/geometry [`graphicx`]: https://ctan.org/pkg/graphicx [`grffile`]: https://ctan.org/pkg/grffile [`hyperref`]: https://ctan.org/pkg/hyperref [`iftex`]: https://ctan.org/pkg/iftex [`listings`]: https://ctan.org/pkg/listings [`lm`]: https://ctan.org/pkg/lm [`longtable`]: https://ctan.org/pkg/longtable [`mathspec`]: https://ctan.org/pkg/mathspec [`microtype`]: https://ctan.org/pkg/microtype [`natbib`]: https://ctan.org/pkg/natbib [`parskip`]: https://ctan.org/pkg/parskip [`polyglossia`]: https://ctan.org/pkg/polyglossia [`prince`]: https://www.princexml.com/ [`setspace`]: https://ctan.org/pkg/setspace [`soul`]: https://ctan.org/pkg/soul [`unicode-math`]: https://ctan.org/pkg/unicode-math [`upquote`]: https://ctan.org/pkg/upquote [`weasyprint`]: https://weasyprint.org [`wkhtmltopdf`]: https://wkhtmltopdf.org [`xcolor`]: https://ctan.org/pkg/xcolor [`xeCJK`]: https://ctan.org/pkg/xecjk [`xurl`]: https://ctan.org/pkg/xurl [`selnolig`]: https://ctan.org/pkg/selnolig ## Reading from the Web Instead of an input file, an absolute URI may be given. In this case pandoc will fetch the content using HTTP: pandoc -f html -t markdown https://www.fsf.org It is possible to supply a custom User-Agent string or other header when requesting a document from a URL: pandoc -f html -t markdown --request-header User-Agent:"Mozilla/5.0" \ https://www.fsf.org # Options ## General options {.options} `-f` *FORMAT*, `-r` *FORMAT*, `--from=`*FORMAT*, `--read=`*FORMAT* : Specify input format. *FORMAT* can be: ::: {#input-formats} - `bibtex` ([BibTeX] bibliography) - `biblatex` ([BibLaTeX] bibliography) - `commonmark` ([CommonMark] Markdown) - `commonmark_x` ([CommonMark] Markdown with extensions) - `creole` ([Creole 1.0]) - `csljson` ([CSL JSON] bibliography) - `csv` ([CSV] table) - `tsv` ([TSV] table) - `docbook` ([DocBook]) - `docx` ([Word docx]) - `dokuwiki` ([DokuWiki markup]) - `endnotexml` ([EndNote XML bibliography]) - `epub` ([EPUB]) - `fb2` ([FictionBook2] e-book) - `gfm` ([GitHub-Flavored Markdown]), or the deprecated and less accurate `markdown_github`; use [`markdown_github`](#markdown-variants) only if you need extensions not supported in [`gfm`](#markdown-variants). - `haddock` ([Haddock markup]) - `html` ([HTML]) - `ipynb` ([Jupyter notebook]) - `jats` ([JATS] XML) - `jira` ([Jira]/Confluence wiki markup) - `json` (JSON version of native AST) - `latex` ([LaTeX]) - `markdown` ([Pandoc's Markdown]) - `markdown_mmd` ([MultiMarkdown]) - `markdown_phpextra` ([PHP Markdown Extra]) - `markdown_strict` (original unextended [Markdown]) - `mediawiki` ([MediaWiki markup]) - `man` ([roff man]) - `muse` ([Muse]) - `native` (native Haskell) - `odt` ([ODT]) - `opml` ([OPML]) - `org` ([Emacs Org mode]) - `ris` ([RIS] bibliography) - `rtf` ([Rich Text Format]) - `rst` ([reStructuredText]) - `t2t` ([txt2tags]) - `textile` ([Textile]) - `tikiwiki` ([TikiWiki markup]) - `twiki` ([TWiki markup]) - `typst` ([typst]) - `vimwiki` ([Vimwiki]) - the path of a custom Lua reader, see [Custom readers and writers] below ::: Extensions can be individually enabled or disabled by appending `+EXTENSION` or `-EXTENSION` to the format name. See [Extensions] below, for a list of extensions and their names. See `--list-input-formats` and `--list-extensions`, below. `-t` *FORMAT*, `-w` *FORMAT*, `--to=`*FORMAT*, `--write=`*FORMAT* : Specify output format. *FORMAT* can be: ::: {#output-formats} - `asciidoc` ([AsciiDoc]) or `asciidoctor` ([AsciiDoctor]) - `beamer` ([LaTeX beamer][`beamer`] slide show) - `bibtex` ([BibTeX] bibliography) - `biblatex` ([BibLaTeX] bibliography) - `chunkedhtml` (zip archive of multiple linked HTML files) - `commonmark` ([CommonMark] Markdown) - `commonmark_x` ([CommonMark] Markdown with extensions) - `context` ([ConTeXt]) - `csljson` ([CSL JSON] bibliography) - `docbook` or `docbook4` ([DocBook] 4) - `docbook5` (DocBook 5) - `docx` ([Word docx]) - `dokuwiki` ([DokuWiki markup]) - `epub` or `epub3` ([EPUB] v3 book) - `epub2` (EPUB v2) - `fb2` ([FictionBook2] e-book) - `gfm` ([GitHub-Flavored Markdown]), or the deprecated and less accurate `markdown_github`; use [`markdown_github`](#markdown-variants) only if you need extensions not supported in [`gfm`](#markdown-variants). - `haddock` ([Haddock markup]) - `html` or `html5` ([HTML], i.e. [HTML5]/XHTML [polyglot markup]) - `html4` ([XHTML] 1.0 Transitional) - `icml` ([InDesign ICML]) - `ipynb` ([Jupyter notebook]) - `jats_archiving` ([JATS] XML, Archiving and Interchange Tag Set) - `jats_articleauthoring` ([JATS] XML, Article Authoring Tag Set) - `jats_publishing` ([JATS] XML, Journal Publishing Tag Set) - `jats` (alias for `jats_archiving`) - `jira` ([Jira]/Confluence wiki markup) - `json` (JSON version of native AST) - `latex` ([LaTeX]) - `man` ([roff man]) - `markdown` ([Pandoc's Markdown]) - `markdown_mmd` ([MultiMarkdown]) - `markdown_phpextra` ([PHP Markdown Extra]) - `markdown_strict` (original unextended [Markdown]) - `markua` ([Markua]) - `mediawiki` ([MediaWiki markup]) - `ms` ([roff ms]) - `muse` ([Muse]) - `native` (native Haskell) - `odt` ([OpenOffice text document][ODT]) - `opml` ([OPML]) - `opendocument` ([OpenDocument]) - `org` ([Emacs Org mode]) - `pdf` ([PDF]) - `plain` (plain text) - `pptx` ([PowerPoint] slide show) - `rst` ([reStructuredText]) - `rtf` ([Rich Text Format]) - `texinfo` ([GNU Texinfo]) - `textile` ([Textile]) - `slideous` ([Slideous] HTML and JavaScript slide show) - `slidy` ([Slidy] HTML and JavaScript slide show) - `dzslides` ([DZSlides] HTML5 + JavaScript slide show) - `revealjs` ([reveal.js] HTML5 + JavaScript slide show) - `s5` ([S5] HTML and JavaScript slide show) - `tei` ([TEI Simple]) - `typst` ([typst]) - `xwiki` ([XWiki markup]) - `zimwiki` ([ZimWiki markup]) - the path of a custom Lua writer, see [Custom readers and writers] below ::: Note that `odt`, `docx`, `epub`, and `pdf` output will not be directed to *stdout* unless forced with `-o -`. Extensions can be individually enabled or disabled by appending `+EXTENSION` or `-EXTENSION` to the format name. See [Extensions] below, for a list of extensions and their names. See `--list-output-formats` and `--list-extensions`, below. `-o` *FILE*, `--output=`*FILE* : Write output to *FILE* instead of *stdout*. If *FILE* is `-`, output will go to *stdout*, even if a non-textual format (`docx`, `odt`, `epub2`, `epub3`) is specified. If the output format is `chunkedhtml` and *FILE* has no extension, then instead of producing a `.zip` file pandoc will create a directory *FILE* and unpack the zip archive there (unless *FILE* already exists, in which case an error will be raised). `--data-dir=`*DIRECTORY* : Specify the user data directory to search for pandoc data files. If this option is not specified, the default user data directory will be used. On \*nix and macOS systems this will be the `pandoc` subdirectory of the XDG data directory (by default, `$HOME/.local/share`, overridable by setting the `XDG_DATA_HOME` environment variable). If that directory does not exist and `$HOME/.pandoc` exists, it will be used (for backwards compatibility). On Windows the default user data directory is `%APPDATA%\pandoc`. You can find the default user data directory on your system by looking at the output of `pandoc --version`. Data files placed in this directory (for example, `reference.odt`, `reference.docx`, `epub.css`, `templates`) will override pandoc's normal defaults. (Note that the user data directory is not created by pandoc, so you will need to create it yourself if you want to make use of it.) `-d` *FILE*, `--defaults=`*FILE* : Specify a set of default option settings. *FILE* is a YAML file whose fields correspond to command-line option settings. All options for document conversion, including input and output files, can be set using a defaults file. The file will be searched for first in the working directory, and then in the `defaults` subdirectory of the user data directory (see `--data-dir`). The `.yaml` extension may be omitted. See the section [Defaults files] for more information on the file format. Settings from the defaults file may be overridden or extended by subsequent options on the command line. `--bash-completion` : Generate a bash completion script. To enable bash completion with pandoc, add this to your `.bashrc`: eval "$(pandoc --bash-completion)" `--verbose` : Give verbose debugging output. `--quiet` : Suppress warning messages. `--fail-if-warnings` : Exit with error status if there are any warnings. `--log=`*FILE* : Write log messages in machine-readable JSON format to *FILE*. All messages above DEBUG level will be written, regardless of verbosity settings (`--verbose`, `--quiet`). `--list-input-formats` : List supported input formats, one per line. `--list-output-formats` : List supported output formats, one per line. `--list-extensions`[`=`*FORMAT*] : List supported extensions for *FORMAT*, one per line, preceded by a `+` or `-` indicating whether it is enabled by default in *FORMAT*. If *FORMAT* is not specified, defaults for pandoc's Markdown are given. `--list-highlight-languages` : List supported languages for syntax highlighting, one per line. `--list-highlight-styles` : List supported styles for syntax highlighting, one per line. See `--highlight-style`. `-v`, `--version` : Print version. `-h`, `--help` : Show usage message. [Markdown]: https://daringfireball.net/projects/markdown/ [CommonMark]: https://commonmark.org [PHP Markdown Extra]: https://michelf.ca/projects/php-markdown/extra/ [GitHub-Flavored Markdown]: https://help.github.com/articles/github-flavored-markdown/ [MultiMarkdown]: https://fletcherpenney.net/multimarkdown/ [reStructuredText]: https://docutils.sourceforge.io/docs/ref/rst/introduction.html [S5]: https://meyerweb.com/eric/tools/s5/ [Slidy]: https://www.w3.org/Talks/Tools/Slidy2/ [Slideous]: https://goessner.net/articles/slideous/ [HTML]: https://www.w3.org/html/ [HTML5]: https://html.spec.whatwg.org/ [polyglot markup]: https://www.w3.org/TR/html-polyglot/ [XHTML]: https://www.w3.org/TR/xhtml1/ [LaTeX]: https://www.latex-project.org/ [`beamer`]: https://ctan.org/pkg/beamer [Beamer User's Guide]: http://mirrors.ctan.org/macros/latex/contrib/beamer/doc/beameruserguide.pdf [ConTeXt]: https://www.contextgarden.net/ [Rich Text Format]: https://en.wikipedia.org/wiki/Rich_Text_Format [DocBook]: https://docbook.org [JATS]: https://jats.nlm.nih.gov [Jira]: https://jira.atlassian.com/secure/WikiRendererHelpAction.jspa?section=all [txt2tags]: https://txt2tags.org [EPUB]: http://idpf.org/epub [OPML]: http://dev.opml.org/spec2.html [OpenDocument]: http://opendocument.xml.org [ODT]: https://en.wikipedia.org/wiki/OpenDocument [Textile]: https://textile-lang.com [MediaWiki markup]: https://www.mediawiki.org/wiki/Help:Formatting [DokuWiki markup]: https://www.dokuwiki.org/dokuwiki [ZimWiki markup]: https://zim-wiki.org/manual/Help/Wiki_Syntax.html [XWiki markup]: https://www.xwiki.org/xwiki/bin/view/Documentation/UserGuide/Features/XWikiSyntax/ [TWiki markup]: https://twiki.org/cgi-bin/view/TWiki/TextFormattingRules [TikiWiki markup]: https://doc.tiki.org/Wiki-Syntax-Text#The_Markup_Language_Wiki-Syntax [Haddock markup]: https://www.haskell.org/haddock/doc/html/ch03s08.html [Creole 1.0]: http://www.wikicreole.org/wiki/Creole1.0 [CSV]: https://tools.ietf.org/html/rfc4180 [TSV]: https://www.iana.org/assignments/media-types/text/tab-separated-values [roff man]: https://man.cx/groff_man(7) [roff ms]: https://man.cx/groff_ms(7) [Haskell]: https://www.haskell.org [GNU Texinfo]: https://www.gnu.org/software/texinfo/ [RIS]: https://en.wikipedia.org/wiki/RIS_(file_format) [Emacs Org mode]: https://orgmode.org [AsciiDoc]: https://www.methods.co.nz/asciidoc/ [AsciiDoctor]: https://asciidoctor.org/ [DZSlides]: https://paulrouget.com/dzslides/ [Word docx]: https://en.wikipedia.org/wiki/Office_Open_XML [PDF]: https://www.adobe.com/pdf/ [reveal.js]: https://revealjs.com/ [FictionBook2]: http://www.fictionbook.org/index.php/Eng:XML_Schema_Fictionbook_2.1 [Jupyter notebook]: https://nbformat.readthedocs.io/en/latest/ [InDesign ICML]: https://wwwimages.adobe.com/www.adobe.com/content/dam/acom/en/devnet/indesign/sdk/cs6/idml/idml-cookbook.pdf [TEI Simple]: https://github.com/TEIC/TEI-Simple [Muse]: https://amusewiki.org/library/manual [PowerPoint]: https://en.wikipedia.org/wiki/Microsoft_PowerPoint [Vimwiki]: https://vimwiki.github.io [CSL JSON]: https://citeproc-js.readthedocs.io/en/latest/csl-json/markup.html [BibTeX]: https://ctan.org/pkg/bibtex [BibLaTeX]: https://ctan.org/pkg/biblatex [Markua]: https://leanpub.com/markua/read [EndNote XML bibliography]: https://support.clarivate.com/Endnote/s/article/EndNote-XML-Document-Type-Definition [typst]: https://typst.app ## Reader options {.options} `--shift-heading-level-by=`*NUMBER* : Shift heading levels by a positive or negative integer. For example, with `--shift-heading-level-by=-1`, level 2 headings become level 1 headings, and level 3 headings become level 2 headings. Headings cannot have a level less than 1, so a heading that would be shifted below level 1 becomes a regular paragraph. Exception: with a shift of -N, a level-N heading at the beginning of the document replaces the metadata title. `--shift-heading-level-by=-1` is a good choice when converting HTML or Markdown documents that use an initial level-1 heading for the document title and level-2+ headings for sections. `--shift-heading-level-by=1` may be a good choice for converting Markdown documents that use level-1 headings for sections to HTML, since pandoc uses a level-1 heading to render the document title. `--base-header-level=`*NUMBER* : *Deprecated. Use `--shift-heading-level-by`=X instead, where X = NUMBER - 1.* Specify the base level for headings (defaults to 1). `--indented-code-classes=`*CLASSES* : Specify classes to use for indented code blocks--for example, `perl,numberLines` or `haskell`. Multiple classes may be separated by spaces or commas. `--default-image-extension=`*EXTENSION* : Specify a default extension to use when image paths/URLs have no extension. This allows you to use the same source for formats that require different kinds of images. Currently this option only affects the Markdown and LaTeX readers. `--file-scope` : Parse each file individually before combining for multifile documents. This will allow footnotes in different files with the same identifiers to work as expected. If this option is set, footnotes and links will not work across files. Reading binary files (docx, odt, epub) implies `--file-scope`. If two or more files are processed using `--file-scope`, prefixes based on the filenames will be added to identifiers in order to disambiguate them, and internal links will be adjusted accordingly. For example, a header with identifier `foo` in `subdir/file1.txt` will have its identifier changed to `subdir__file1.txt__foo`. In addition, a Div with an identifier based on the filename will be added around the file's content, so that internal links to the filename will point to this Div's identifier. `-F` *PROGRAM*, `--filter=`*PROGRAM* : Specify an executable to be used as a filter transforming the pandoc AST after the input is parsed and before the output is written. The executable should read JSON from stdin and write JSON to stdout. The JSON must be formatted like pandoc's own JSON input and output. The name of the output format will be passed to the filter as the first argument. Hence, pandoc --filter ./caps.py -t latex is equivalent to pandoc -t json | ./caps.py latex | pandoc -f json -t latex The latter form may be useful for debugging filters. Filters may be written in any language. `Text.Pandoc.JSON` exports `toJSONFilter` to facilitate writing filters in Haskell. Those who would prefer to write filters in python can use the module [`pandocfilters`], installable from PyPI. There are also pandoc filter libraries in [PHP], [perl], and [JavaScript/node.js]. In order of preference, pandoc will look for filters in 1. a specified full or relative path (executable or non-executable), 2. `$DATADIR/filters` (executable or non-executable) where `$DATADIR` is the user data directory (see `--data-dir`, above), 3. `$PATH` (executable only). Filters, Lua-filters, and citeproc processing are applied in the order specified on the command line. `-L` *SCRIPT*, `--lua-filter=`*SCRIPT* : Transform the document in a similar fashion as JSON filters (see `--filter`), but use pandoc's built-in Lua filtering system. The given Lua script is expected to return a list of Lua filters which will be applied in order. Each Lua filter must contain element-transforming functions indexed by the name of the AST element on which the filter function should be applied. The `pandoc` Lua module provides helper functions for element creation. It is always loaded into the script's Lua environment. See the [Lua filters documentation] for further details. In order of preference, pandoc will look for Lua filters in 1. a specified full or relative path, 2. `$DATADIR/filters` where `$DATADIR` is the user data directory (see `--data-dir`, above). Filters, Lua filters, and citeproc processing are applied in the order specified on the command line. `-M` *KEY*[`=`*VAL*], `--metadata=`*KEY*[`:`*VAL*] : Set the metadata field *KEY* to the value *VAL*. A value specified on the command line overrides a value specified in the document using [YAML metadata blocks][Extension: `yaml_metadata_block`]. Values will be parsed as YAML boolean or string values. If no value is specified, the value will be treated as Boolean true. Like `--variable`, `--metadata` causes template variables to be set. But unlike `--variable`, `--metadata` affects the metadata of the underlying document (which is accessible from filters and may be printed in some output formats) and metadata values will be escaped when inserted into the template. `--metadata-file=`*FILE* : Read metadata from the supplied YAML (or JSON) file. This option can be used with every input format, but string scalars in the metadata file will always be parsed as Markdown. (If the input format is Markdown or a Markdown variant, then the same variant will be used to parse the metadata file; if it is a non-Markdown format, pandoc's default Markdown extensions will be used.) This option can be used repeatedly to include multiple metadata files; values in files specified later on the command line will be preferred over those specified in earlier files. Metadata values specified inside the document, or by using `-M`, overwrite values specified with this option. The file will be searched for first in the working directory, and then in the `metadata` subdirectory of the user data directory (see `--data-dir`). `-p`, `--preserve-tabs` : Preserve tabs instead of converting them to spaces. (By default, pandoc converts tabs to spaces before parsing its input.) Note that this will only affect tabs in literal code spans and code blocks. Tabs in regular text are always treated as spaces. `--tab-stop=`*NUMBER* : Specify the number of spaces per tab (default is 4). `--track-changes=accept`|`reject`|`all` : Specifies what to do with insertions, deletions, and comments produced by the MS Word "Track Changes" feature. `accept` (the default) processes all the insertions and deletions. `reject` ignores them. Both `accept` and `reject` ignore comments. `all` includes all insertions, deletions, and comments, wrapped in spans with `insertion`, `deletion`, `comment-start`, and `comment-end` classes, respectively. The author and time of change is included. `all` is useful for scripting: only accepting changes from a certain reviewer, say, or before a certain date. If a paragraph is inserted or deleted, `track-changes=all` produces a span with the class `paragraph-insertion`/`paragraph-deletion` before the affected paragraph break. This option only affects the docx reader. `--extract-media=`*DIR* : Extract images and other media contained in or linked from the source document to the path *DIR*, creating it if necessary, and adjust the images references in the document so they point to the extracted files. Media are downloaded, read from the file system, or extracted from a binary container (e.g. docx), as needed. The original file paths are used if they are relative paths not containing `..`. Otherwise filenames are constructed from the SHA1 hash of the contents. `--abbreviations=`*FILE* : Specifies a custom abbreviations file, with abbreviations one to a line. If this option is not specified, pandoc will read the data file `abbreviations` from the user data directory or fall back on a system default. To see the system default, use `pandoc --print-default-data-file=abbreviations`. The only use pandoc makes of this list is in the Markdown reader. Strings found in this list will be followed by a nonbreaking space, and the period will not produce sentence-ending space in formats like LaTeX. The strings may not contain spaces. `--trace` : Print diagnostic output tracing parser progress to stderr. This option is intended for use by developers in diagnosing performance issues. [`pandocfilters`]: https://github.com/jgm/pandocfilters [PHP]: https://github.com/vinai/pandocfilters-php [perl]: https://metacpan.org/pod/Pandoc::Filter [JavaScript/node.js]: https://github.com/mvhenderson/pandoc-filter-node [Lua filters documentation]: https://pandoc.org/lua-filters.html ## General writer options {.options} `-s`, `--standalone` : Produce output with an appropriate header and footer (e.g. a standalone HTML, LaTeX, TEI, or RTF file, not a fragment). This option is set automatically for `pdf`, `epub`, `epub3`, `fb2`, `docx`, and `odt` output. For `native` output, this option causes metadata to be included; otherwise, metadata is suppressed. `--template=`*FILE*|*URL* : Use the specified file as a custom template for the generated document. Implies `--standalone`. See [Templates], below, for a description of template syntax. If no extension is specified, an extension corresponding to the writer will be added, so that `--template=special` looks for `special.html` for HTML output. If the template is not found, pandoc will search for it in the `templates` subdirectory of the user data directory (see `--data-dir`). If this option is not used, a default template appropriate for the output format will be used (see `-D/--print-default-template`). `-V` *KEY*[`=`*VAL*], `--variable=`*KEY*[`:`*VAL*] : Set the template variable *KEY* to the value *VAL* when rendering the document in standalone mode. If no *VAL* is specified, the key will be given the value `true`. `--sandbox` : Run pandoc in a sandbox, limiting IO operations in readers and writers to reading the files specified on the command line. Note that this option does not limit IO operations by filters or in the production of PDF documents. But it does offer security against, for example, disclosure of files through the use of `include` directives. Anyone using pandoc on untrusted user input should use this option. Note: some readers and writers (e.g., `docx`) need access to data files. If these are stored on the file system, then pandoc will not be able to find them when run in `--sandbox` mode and will raise an error. For these applications, we recommend using a pandoc binary compiled with the `embed_data_files` option, which causes the data files to be baked into the binary instead of being stored on the file system. `-D` *FORMAT*, `--print-default-template=`*FORMAT* : Print the system default template for an output *FORMAT*. (See `-t` for a list of possible *FORMAT*s.) Templates in the user data directory are ignored. This option may be used with `-o`/`--output` to redirect output to a file, but `-o`/`--output` must come before `--print-default-template` on the command line. Note that some of the default templates use partials, for example `styles.html`. To print the partials, use `--print-default-data-file`: for example, `--print-default-data-file=templates/styles.html`. `--print-default-data-file=`*FILE* : Print a system default data file. Files in the user data directory are ignored. This option may be used with `-o`/`--output` to redirect output to a file, but `-o`/`--output` must come before `--print-default-data-file` on the command line. `--eol=crlf`|`lf`|`native` : Manually specify line endings: `crlf` (Windows), `lf` (macOS/Linux/UNIX), or `native` (line endings appropriate to the OS on which pandoc is being run). The default is `native`. `--dpi`=*NUMBER* : Specify the default dpi (dots per inch) value for conversion from pixels to inch/centimeters and vice versa. (Technically, the correct term would be ppi: pixels per inch.) The default is 96dpi. When images contain information about dpi internally, the encoded value is used instead of the default specified by this option. `--wrap=auto`|`none`|`preserve` : Determine how text is wrapped in the output (the source code, not the rendered version). With `auto` (the default), pandoc will attempt to wrap lines to the column width specified by `--columns` (default 72). With `none`, pandoc will not wrap lines at all. With `preserve`, pandoc will attempt to preserve the wrapping from the source document (that is, where there are nonsemantic newlines in the source, there will be nonsemantic newlines in the output as well). In `ipynb` output, this option affects wrapping of the contents of markdown cells. `--columns=`*NUMBER* : Specify length of lines in characters. This affects text wrapping in the generated source code (see `--wrap`). It also affects calculation of column widths for plain text tables (see [Tables] below). `--toc`, `--table-of-contents` : Include an automatically generated table of contents (or, in the case of `latex`, `context`, `docx`, `odt`, `opendocument`, `rst`, or `ms`, an instruction to create one) in the output document. This option has no effect unless `-s/--standalone` is used, and it has no effect on `man`, `docbook4`, `docbook5`, or `jats` output. Note that if you are producing a PDF via `ms`, the table of contents will appear at the beginning of the document, before the title. If you would prefer it to be at the end of the document, use the option `--pdf-engine-opt=--no-toc-relocation`. `--toc-depth=`*NUMBER* : Specify the number of section levels to include in the table of contents. The default is 3 (which means that level-1, 2, and 3 headings will be listed in the contents). `--strip-comments` : Strip out HTML comments in the Markdown or Textile source, rather than passing them on to Markdown, Textile or HTML output as raw HTML. This does not apply to HTML comments inside raw HTML blocks when the `markdown_in_html_blocks` extension is not set. `--no-highlight` : Disables syntax highlighting for code blocks and inlines, even when a language attribute is given. `--highlight-style=`*STYLE*|*FILE* : Specifies the coloring style to be used in highlighted source code. Options are `pygments` (the default), `kate`, `monochrome`, `breezeDark`, `espresso`, `zenburn`, `haddock`, and `tango`. For more information on syntax highlighting in pandoc, see [Syntax highlighting], below. See also `--list-highlight-styles`. Instead of a *STYLE* name, a JSON file with extension `.theme` may be supplied. This will be parsed as a KDE syntax highlighting theme and (if valid) used as the highlighting style. To generate the JSON version of an existing style, use `--print-highlight-style`. `--print-highlight-style=`*STYLE*|*FILE* : Prints a JSON version of a highlighting style, which can be modified, saved with a `.theme` extension, and used with `--highlight-style`. This option may be used with `-o`/`--output` to redirect output to a file, but `-o`/`--output` must come before `--print-highlight-style` on the command line. `--syntax-definition=`*FILE* : Instructs pandoc to load a KDE XML syntax definition file, which will be used for syntax highlighting of appropriately marked code blocks. This can be used to add support for new languages or to use altered syntax definitions for existing languages. This option may be repeated to add multiple syntax definitions. `-H` *FILE*, `--include-in-header=`*FILE*|*URL* : Include contents of *FILE*, verbatim, at the end of the header. This can be used, for example, to include special CSS or JavaScript in HTML documents. This option can be used repeatedly to include multiple files in the header. They will be included in the order specified. Implies `--standalone`. `-B` *FILE*, `--include-before-body=`*FILE*|*URL* : Include contents of *FILE*, verbatim, at the beginning of the document body (e.g. after the `` tag in HTML, or the `\begin{document}` command in LaTeX). This can be used to include navigation bars or banners in HTML documents. This option can be used repeatedly to include multiple files. They will be included in the order specified. Implies `--standalone`. `-A` *FILE*, `--include-after-body=`*FILE*|*URL* : Include contents of *FILE*, verbatim, at the end of the document body (before the `` tag in HTML, or the `\end{document}` command in LaTeX). This option can be used repeatedly to include multiple files. They will be included in the order specified. Implies `--standalone`. `--resource-path=`*SEARCHPATH* : List of paths to search for images and other resources. The paths should be separated by `:` on Linux, UNIX, and macOS systems, and by `;` on Windows. If `--resource-path` is not specified, the default resource path is the working directory. Note that, if `--resource-path` is specified, the working directory must be explicitly listed or it will not be searched. For example: `--resource-path=.:test` will search the working directory and the `test` subdirectory, in that order. This option can be used repeatedly. Search path components that come later on the command line will be searched before those that come earlier, so `--resource-path foo:bar --resource-path baz:bim` is equivalent to `--resource-path baz:bim:foo:bar`. `--request-header=`*NAME*`:`*VAL* : Set the request header *NAME* to the value *VAL* when making HTTP requests (for example, when a URL is given on the command line, or when resources used in a document must be downloaded). If you're behind a proxy, you also need to set the environment variable `http_proxy` to `http://...`. `--no-check-certificate` : Disable the certificate verification to allow access to unsecure HTTP resources (for example when the certificate is no longer valid or self signed). ## Options affecting specific writers {.options} `--self-contained` : *Deprecated synonym for `--embed-resources --standalone`.* `--embed-resources` : Produce a standalone HTML file with no external dependencies, using `data:` URIs to incorporate the contents of linked scripts, stylesheets, images, and videos. The resulting file should be "self-contained," in the sense that it needs no external files and no net access to be displayed properly by a browser. This option works only with HTML output formats, including `html4`, `html5`, `html+lhs`, `html5+lhs`, `s5`, `slidy`, `slideous`, `dzslides`, and `revealjs`. Scripts, images, and stylesheets at absolute URLs will be downloaded; those at relative URLs will be sought relative to the working directory (if the first source file is local) or relative to the base URL (if the first source file is remote). Elements with the attribute `data-external="1"` will be left alone; the documents they link to will not be incorporated in the document. Limitation: resources that are loaded dynamically through JavaScript cannot be incorporated; as a result, fonts may be missing when `--mathjax` is used, and some advanced features (e.g. zoom or speaker notes) may not work in an offline "self-contained" `reveal.js` slide show. `--html-q-tags` : Use `` tags for quotes in HTML. (This option only has an effect if the `smart` extension is enabled for the input format used.) `--ascii` : Use only ASCII characters in output. Currently supported for XML and HTML formats (which use entities instead of UTF-8 when this option is selected), CommonMark, gfm, and Markdown (which use entities), roff man and ms (which use hexadecimal escapes), and to a limited degree LaTeX (which uses standard commands for accented characters when possible). `--reference-links` : Use reference-style links, rather than inline links, in writing Markdown or reStructuredText. By default inline links are used. The placement of link references is affected by the `--reference-location` option. `--reference-location=block`|`section`|`document` : Specify whether footnotes (and references, if `reference-links` is set) are placed at the end of the current (top-level) block, the current section, or the document. The default is `document`. Currently this option only affects the `markdown`, `muse`, `html`, `epub`, `slidy`, `s5`, `slideous`, `dzslides`, and `revealjs` writers. In slide formats, specifying `--reference-location=section` will cause notes to be rendered at the bottom of a slide. `--markdown-headings=setext`|`atx` : Specify whether to use ATX-style (`#`-prefixed) or Setext-style (underlined) headings for level 1 and 2 headings in Markdown output. (The default is `atx`.) ATX-style headings are always used for levels 3+. This option also affects Markdown cells in `ipynb` output. `--list-tables` : Render tables as list tables in RST output. `--top-level-division=default`|`section`|`chapter`|`part` : Treat top-level headings as the given division type in LaTeX, ConTeXt, DocBook, and TEI output. The hierarchy order is part, chapter, then section; all headings are shifted such that the top-level heading becomes the specified type. The default behavior is to determine the best division type via heuristics: unless other conditions apply, `section` is chosen. When the `documentclass` variable is set to `report`, `book`, or `memoir` (unless the `article` option is specified), `chapter` is implied as the setting for this option. If `beamer` is the output format, specifying either `chapter` or `part` will cause top-level headings to become `\part{..}`, while second-level headings remain as their default type. `-N`, `--number-sections` : Number section headings in LaTeX, ConTeXt, HTML, Docx, ms, or EPUB output. By default, sections are not numbered. Sections with class `unnumbered` will never be numbered, even if `--number-sections` is specified. `--number-offset=`*NUMBER*[`,`*NUMBER*`,`*...*] : Offset for section headings in HTML output (ignored in other output formats). The first number is added to the section number for top-level headings, the second for second-level headings, and so on. So, for example, if you want the first top-level heading in your document to be numbered "6", specify `--number-offset=5`. If your document starts with a level-2 heading which you want to be numbered "1.5", specify `--number-offset=1,4`. Offsets are 0 by default. Implies `--number-sections`. `--listings` : Use the [`listings`] package for LaTeX code blocks. The package does not support multi-byte encoding for source code. To handle UTF-8 you would need to use a custom template. This issue is fully documented here: [Encoding issue with the listings package]. `-i`, `--incremental` : Make list items in slide shows display incrementally (one by one). The default is for lists to be displayed all at once. `--slide-level=`*NUMBER* : Specifies that headings with the specified level create slides (for `beamer`, `s5`, `slidy`, `slideous`, `dzslides`). Headings above this level in the hierarchy are used to divide the slide show into sections; headings below this level create subheads within a slide. Valid values are 0-6. If a slide level of 0 is specified, slides will not be split automatically on headings, and horizontal rules must be used to indicate slide boundaries. If a slide level is not specified explicitly, the slide level will be set automatically based on the contents of the document; see [Structuring the slide show]. `--section-divs` : Wrap sections in `
` tags (or `
` tags for `html4`), and attach identifiers to the enclosing `
` (or `
`) rather than the heading itself. See [Heading identifiers], below. `--email-obfuscation=none`|`javascript`|`references` : Specify a method for obfuscating `mailto:` links in HTML documents. `none` leaves `mailto:` links as they are. `javascript` obfuscates them using JavaScript. `references` obfuscates them by printing their letters as decimal or hexadecimal character references. The default is `none`. `--id-prefix=`*STRING* : Specify a prefix to be added to all identifiers and internal links in HTML and DocBook output, and to footnote numbers in Markdown and Haddock output. This is useful for preventing duplicate identifiers when generating fragments to be included in other pages. `-T` *STRING*, `--title-prefix=`*STRING* : Specify *STRING* as a prefix at the beginning of the title that appears in the HTML header (but not in the title as it appears at the beginning of the HTML body). Implies `--standalone`. `-c` *URL*, `--css=`*URL* : Link to a CSS style sheet. This option can be used repeatedly to include multiple files. They will be included in the order specified. This option only affects HTML (including HTML slide shows) and EPUB output. It should be used together with `-s/--standalone`, because the link to the stylesheet goes in the document header. A stylesheet is required for generating EPUB. If none is provided using this option (or the `css` or `stylesheet` metadata fields), pandoc will look for a file `epub.css` in the user data directory (see `--data-dir`). If it is not found there, sensible defaults will be used. `--reference-doc=`*FILE*|*URL* : Use the specified file as a style reference in producing a docx or ODT file. Docx : For best results, the reference docx should be a modified version of a docx file produced using pandoc. The contents of the reference docx are ignored, but its stylesheets and document properties (including margins, page size, header, and footer) are used in the new docx. If no reference docx is specified on the command line, pandoc will look for a file `reference.docx` in the user data directory (see `--data-dir`). If this is not found either, sensible defaults will be used. To produce a custom `reference.docx`, first get a copy of the default `reference.docx`: `pandoc -o custom-reference.docx --print-default-data-file reference.docx`. Then open `custom-reference.docx` in Word, modify the styles as you wish, and save the file. For best results, do not make changes to this file other than modifying the styles used by pandoc: Paragraph styles: - Normal - Body Text - First Paragraph - Compact - Title - Subtitle - Author - Date - Abstract - AbstractTitle - Bibliography - Heading 1 - Heading 2 - Heading 3 - Heading 4 - Heading 5 - Heading 6 - Heading 7 - Heading 8 - Heading 9 - Block Text - Source Code - Footnote Text - Definition Term - Definition - Caption - Table Caption - Image Caption - Figure - Captioned Figure - TOC Heading Character styles: - Default Paragraph Font - Body Text Char - Verbatim Char - Footnote Reference - Hyperlink - Section Number Table style: - Table ODT : For best results, the reference ODT should be a modified version of an ODT produced using pandoc. The contents of the reference ODT are ignored, but its stylesheets are used in the new ODT. If no reference ODT is specified on the command line, pandoc will look for a file `reference.odt` in the user data directory (see `--data-dir`). If this is not found either, sensible defaults will be used. To produce a custom `reference.odt`, first get a copy of the default `reference.odt`: `pandoc -o custom-reference.odt --print-default-data-file reference.odt`. Then open `custom-reference.odt` in LibreOffice, modify the styles as you wish, and save the file. PowerPoint : Templates included with Microsoft PowerPoint 2013 (either with `.pptx` or `.potx` extension) are known to work, as are most templates derived from these. The specific requirement is that the template should contain layouts with the following names (as seen within PowerPoint): - Title Slide - Title and Content - Section Header - Two Content - Comparison - Content with Caption - Blank For each name, the first layout found with that name will be used. If no layout is found with one of the names, pandoc will output a warning and use the layout with that name from the default reference doc instead. (How these layouts are used is described in [PowerPoint layout choice](#powerpoint-layout-choice).) All templates included with a recent version of MS PowerPoint will fit these criteria. (You can click on `Layout` under the `Home` menu to check.) You can also modify the default `reference.pptx`: first run `pandoc -o custom-reference.pptx --print-default-data-file reference.pptx`, and then modify `custom-reference.pptx` in MS PowerPoint (pandoc will use the layouts with the names listed above). `--split-level=`*NUMBER* : Specify the heading level at which to split an EPUB or chunked HTML document into separate files. The default is to split into chapters at level-1 headings. In the case of EPUB, this option only affects the internal composition of the EPUB, not the way chapters and sections are displayed to users. Some readers may be slow if the chapter files are too large, so for large documents with few level-1 headings, one might want to use a chapter level of 2 or 3. For chunked HTML, this option determines how much content goes in each "chunk." `--chunk-template=`*PATHTEMPLATE* : Specify a template for the filenames in a `chunkedhtml` document. In the template, `%n` will be replaced by the chunk number (padded with leading 0s to 3 digits), `%s` with the section number of the chunk, `%h` with the heading text (with formatting removed), `%i` with the section identifier. For example, `%section-%s-%i.html` might be resolved to `section-1.1-introduction.html`. The characters `/` and `\` are not allowed in chunk templates and will be ignored. The default is `%s-%i.html`. `--epub-chapter-level=`*NUMBER* : *Deprecated synonym for `--split-level`.* `--epub-cover-image=`*FILE* : Use the specified image as the EPUB cover. It is recommended that the image be less than 1000px in width and height. Note that in a Markdown source document you can also specify `cover-image` in a YAML metadata block (see [EPUB Metadata], below). `--epub-title-page=true`|`false` : Determines whether a the title page is included in the EPUB (default is `true`). `--epub-metadata=`*FILE* : Look in the specified XML file for metadata for the EPUB. The file should contain a series of [Dublin Core elements]. For example: Creative Commons es-AR By default, pandoc will include the following metadata elements: `` (from the document title), `` (from the document authors), `` (from the document date, which should be in [ISO 8601 format]), `` (from the `lang` variable, or, if is not set, the locale), and `` (a randomly generated UUID). Any of these may be overridden by elements in the metadata file. Note: if the source document is Markdown, a YAML metadata block in the document can be used instead. See below under [EPUB Metadata]. `--epub-embed-font=`*FILE* : Embed the specified font in the EPUB. This option can be repeated to embed multiple fonts. Wildcards can also be used: for example, `DejaVuSans-*.ttf`. However, if you use wildcards on the command line, be sure to escape them or put the whole filename in single quotes, to prevent them from being interpreted by the shell. To use the embedded fonts, you will need to add declarations like the following to your CSS (see `--css`): @font-face { font-family: DejaVuSans; font-style: normal; font-weight: normal; src:url("../fonts/DejaVuSans-Regular.ttf"); } @font-face { font-family: DejaVuSans; font-style: normal; font-weight: bold; src:url("../fonts/DejaVuSans-Bold.ttf"); } @font-face { font-family: DejaVuSans; font-style: italic; font-weight: normal; src:url("../fonts/DejaVuSans-Oblique.ttf"); } @font-face { font-family: DejaVuSans; font-style: italic; font-weight: bold; src:url("../fonts/DejaVuSans-BoldOblique.ttf"); } body { font-family: "DejaVuSans"; } `--epub-subdirectory=`*DIRNAME* : Specify the subdirectory in the OCF container that is to hold the EPUB-specific contents. The default is `EPUB`. To put the EPUB contents in the top level, use an empty string. `--ipynb-output=all|none|best` : Determines how ipynb output cells are treated. `all` means that all of the data formats included in the original are preserved. `none` means that the contents of data cells are omitted. `best` causes pandoc to try to pick the richest data block in each output cell that is compatible with the output format. The default is `best`. `--pdf-engine=`*PROGRAM* : Use the specified engine when producing PDF output. Valid values are `pdflatex`, `lualatex`, `xelatex`, `latexmk`, `tectonic`, `wkhtmltopdf`, `weasyprint`, `pagedjs-cli`, `prince`, `context`, `pdfroff`, and `typst`. If the engine is not in your PATH, the full path of the engine may be specified here. If this option is not specified, pandoc uses the following defaults depending on the output format specified using `-t/--to`: - `-t latex` or none: `pdflatex` (other options: `xelatex`, `lualatex`, `tectonic`, `latexmk`) - `-t context`: `context` - `-t html`: `wkhtmltopdf` (other options: `prince`, `weasyprint`, `pagedjs-cli`; see [print-css.rocks](https://print-css.rocks) for a good introduction to PDF generation from HTML/CSS) - `-t ms`: `pdfroff` - `-t typst`: `typst` `--pdf-engine-opt=`*STRING* : Use the given string as a command-line argument to the `pdf-engine`. For example, to use a persistent directory `foo` for `latexmk`'s auxiliary files, use `--pdf-engine-opt=-outdir=foo`. Note that no check for duplicate options is done. [Dublin Core elements]: https://www.dublincore.org/specifications/dublin-core/dces/ [ISO 8601 format]: https://www.w3.org/TR/NOTE-datetime [Encoding issue with the listings package]: https://en.wikibooks.org/wiki/LaTeX/Source_Code_Listings#Encoding_issue ## Citation rendering {.options} `-C`, `--citeproc` : Process the citations in the file, replacing them with rendered citations and adding a bibliography. Citation processing will not take place unless bibliographic data is supplied, either through an external file specified using the `--bibliography` option or the `bibliography` field in metadata, or via a `references` section in metadata containing a list of citations in CSL YAML format with Markdown formatting. The style is controlled by a [CSL] stylesheet specified using the `--csl` option or the `csl` field in metadata. (If no stylesheet is specified, the `chicago-author-date` style will be used by default.) The citation processing transformation may be applied before or after filters or Lua filters (see `--filter`, `--lua-filter`): these transformations are applied in the order they appear on the command line. For more information, see the section on [Citations]. `--bibliography=`*FILE* : Set the `bibliography` field in the document's metadata to *FILE*, overriding any value set in the metadata. If you supply this argument multiple times, each *FILE* will be added to bibliography. If *FILE* is a URL, it will be fetched via HTTP. If *FILE* is not found relative to the working directory, it will be sought in the resource path (see `--resource-path`). `--csl=`*FILE* : Set the `csl` field in the document's metadata to *FILE*, overriding any value set in the metadata. (This is equivalent to `--metadata csl=FILE`.) If *FILE* is a URL, it will be fetched via HTTP. If *FILE* is not found relative to the working directory, it will be sought in the resource path (see `--resource-path`) and finally in the `csl` subdirectory of the pandoc user data directory. `--citation-abbreviations=`*FILE* : Set the `citation-abbreviations` field in the document's metadata to *FILE*, overriding any value set in the metadata. (This is equivalent to `--metadata citation-abbreviations=FILE`.) If *FILE* is a URL, it will be fetched via HTTP. If *FILE* is not found relative to the working directory, it will be sought in the resource path (see `--resource-path`) and finally in the `csl` subdirectory of the pandoc user data directory. `--natbib` : Use [`natbib`] for citations in LaTeX output. This option is not for use with the `--citeproc` option or with PDF output. It is intended for use in producing a LaTeX file that can be processed with [`bibtex`]. `--biblatex` : Use [`biblatex`] for citations in LaTeX output. This option is not for use with the `--citeproc` option or with PDF output. It is intended for use in producing a LaTeX file that can be processed with [`bibtex`] or [`biber`]. ## Math rendering in HTML {.options} The default is to render TeX math as far as possible using Unicode characters. Formulas are put inside a `span` with `class="math"`, so that they may be styled differently from the surrounding text if needed. However, this gives acceptable results only for basic math, usually you will want to use `--mathjax` or another of the following options. `--mathjax`[`=`*URL*] : Use [MathJax] to display embedded TeX math in HTML output. TeX math will be put between `\(...\)` (for inline math) or `\[...\]` (for display math) and wrapped in `` tags with class `math`. Then the MathJax JavaScript will render it. The *URL* should point to the `MathJax.js` load script. If a *URL* is not provided, a link to the Cloudflare CDN will be inserted. `--mathml` : Convert TeX math to [MathML] (in `epub3`, `docbook4`, `docbook5`, `jats`, `html4` and `html5`). This is the default in `odt` output. MathML is supported natively by the main web browsers and select e-book readers. `--webtex`[`=`*URL*] : Convert TeX formulas to `` tags that link to an external script that converts formulas to images. The formula will be URL-encoded and concatenated with the URL provided. For SVG images you can for example use `--webtex https://latex.codecogs.com/svg.latex?`. If no URL is specified, the CodeCogs URL generating PNGs will be used (`https://latex.codecogs.com/png.latex?`). Note: the `--webtex` option will affect Markdown output as well as HTML, which is useful if you're targeting a version of Markdown without native math support. `--katex`[`=`*URL*] : Use [KaTeX] to display embedded TeX math in HTML output. The *URL* is the base URL for the KaTeX library. That directory should contain a `katex.min.js` and a `katex.min.css` file. If a *URL* is not provided, a link to the KaTeX CDN will be inserted. `--gladtex` : Enclose TeX math in `` tags in HTML output. The resulting HTML can then be processed by [GladTeX] to produce SVG images of the typeset formulas and an HTML file with these images embedded. pandoc -s --gladtex input.md -o myfile.htex gladtex -d image_dir myfile.htex # produces myfile.html and images in image_dir [MathML]: https://www.w3.org/Math/ [MathJax]: https://www.mathjax.org [KaTeX]: https://github.com/Khan/KaTeX [GladTeX]: https://humenda.github.io/GladTeX/ ## Options for wrapper scripts {.options} `--dump-args` : Print information about command-line arguments to *stdout*, then exit. This option is intended primarily for use in wrapper scripts. The first line of output contains the name of the output file specified with the `-o` option, or `-` (for *stdout*) if no output file was specified. The remaining lines contain the command-line arguments, one per line, in the order they appear. These do not include regular pandoc options and their arguments, but do include any options appearing after a `--` separator at the end of the line. `--ignore-args` : Ignore command-line arguments (for use in wrapper scripts). Regular pandoc options are not ignored. Thus, for example, pandoc --ignore-args -o foo.html -s foo.txt -- -e latin1 is equivalent to pandoc -o foo.html -s # Exit codes If pandoc completes successfully, it will return exit code 0. Nonzero exit codes have the following meanings: Code Error ----- ------------------------------------ 1 PandocIOError 3 PandocFailOnWarningError 4 PandocAppError 5 PandocTemplateError 6 PandocOptionError 21 PandocUnknownReaderError 22 PandocUnknownWriterError 23 PandocUnsupportedExtensionError 24 PandocCiteprocError 25 PandocBibliographyError 31 PandocEpubSubdirectoryError 43 PandocPDFError 44 PandocXMLError 47 PandocPDFProgramNotFoundError 61 PandocHttpError 62 PandocShouldNeverHappenError 63 PandocSomeError 64 PandocParseError 66 PandocMakePDFError 67 PandocSyntaxMapError 83 PandocFilterError 84 PandocLuaError 89 PandocNoScriptingEngine 91 PandocMacroLoop 92 PandocUTF8DecodingError 93 PandocIpynbDecodingError 94 PandocUnsupportedCharsetError 97 PandocCouldNotFindDataFileError 98 PandocCouldNotFindMetadataFileError 99 PandocResourceNotFound ----- ------------------------------------ # Defaults files The `--defaults` option may be used to specify a package of options, in the form of a YAML file. Fields that are omitted will just have their regular default values. So a defaults file can be as simple as one line: ``` yaml verbosity: INFO ``` In fields that expect a file path (or list of file paths), the following syntax may be used to interpolate environment variables: ``` yaml csl: ${HOME}/mycsldir/special.csl ``` `${USERDATA}` may also be used; this will always resolve to the user data directory that is current when the defaults file is parsed, regardless of the setting of the environment variable `USERDATA`. `${.}` will resolve to the directory containing the defaults file itself. This allows you to refer to resources contained in that directory: ``` yaml epub-cover-image: ${.}/cover.jpg epub-metadata: ${.}/meta.xml resource-path: - . # the working directory from which pandoc is run - ${.}/images # the images subdirectory of the directory # containing this defaults file ``` This environment variable interpolation syntax *only* works in fields that expect file paths. Defaults files can be placed in the `defaults` subdirectory of the user data directory and used from any directory. For example, one could create a file specifying defaults for writing letters, save it as `letter.yaml` in the `defaults` subdirectory of the user data directory, and then invoke these defaults from any directory using `pandoc --defaults letter` or `pandoc -dletter`. When multiple defaults are used, their contents will be combined. Note that, where command-line arguments may be repeated (`--metadata-file`, `--css`, `--include-in-header`, `--include-before-body`, `--include-after-body`, `--variable`, `--metadata`, `--syntax-definition`), the values specified on the command line will combine with values specified in the defaults file, rather than replacing them. The following tables show the mapping between the command line and defaults file entries. +----------------------------------+-----------------------------------+ | command line | defaults file | +:=================================+:==================================+ | ``` | ``` yaml | | foo.md | input-file: foo.md | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | foo.md bar.md | input-files: | | | - foo.md | | | - bar.md | | ``` | ``` | +----------------------------------+-----------------------------------+ The value of `input-files` may be left empty to indicate input from stdin, and it can be an empty sequence `[]` for no input. ## General options +----------------------------------+-----------------------------------+ | command line | defaults file | +:=================================+:==================================+ | ``` | ``` yaml | | --from markdown+emoji | from: markdown+emoji | | ``` | ``` | | | ``` yaml | | | reader: markdown+emoji | | | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --to markdown+hard_line_breaks | to: markdown+hard_line_breaks | | ``` | ``` | | | ``` yaml | | | writer: markdown+hard_line_breaks | | | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --output foo.pdf | output-file: foo.pdf | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --output - | output-file: | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --data-dir dir | data-dir: dir | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --defaults file | defaults: | | ``` | - file | | | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --verbose | verbosity: INFO | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --quiet | verbosity: ERROR | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --fail-if-warnings | fail-if-warnings: true | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --sandbox | sandbox: true | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --log=FILE | log-file: FILE | | ``` | ``` | +----------------------------------+-----------------------------------+ Options specified in a defaults file itself always have priority over those in another file included with a `defaults:` entry. `verbosity` can have the values `ERROR`, `WARNING`, or `INFO`. ## Reader options +----------------------------------+-----------------------------------+ | command line | defaults file | +:=================================+:==================================+ | ``` | ``` yaml | | --shift-heading-level-by -1 | shift-heading-level-by: -1 | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --indented-code-classes python | indented-code-classes: | | | - python | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --default-image-extension ".jpg" | default-image-extension: '.jpg' | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --file-scope | file-scope: true | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --filter pandoc-citeproc \ | filters: | | --lua-filter count-words.lua \ | - pandoc-citeproc | | --filter special.lua | - count-words.lua | | | - type: json | | | path: special.lua | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --metadata key=value \ | metadata: | | --metadata key2 | key: value | | | key2: true | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --metadata-file meta.yaml | metadata-files: | | | - meta.yaml | | ``` | ``` | | | ``` yaml | | | metadata-file: meta.yaml | | | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --preserve-tabs | preserve-tabs: true | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --tab-stop 8 | tab-stop: 8 | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --track-changes accept | track-changes: accept | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --extract-media dir | extract-media: dir | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --abbreviations abbrevs.txt | abbreviations: abbrevs.txt | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --trace | trace: true | | ``` | ``` | +----------------------------------+-----------------------------------+ Metadata values specified in a defaults file are parsed as literal string text, not Markdown. Filters will be assumed to be Lua filters if they have the `.lua` extension, and JSON filters otherwise. But the filter type can also be specified explicitly, as shown. Filters are run in the order specified. To include the built-in citeproc filter, use either `citeproc` or `{type: citeproc}`. ## General writer options +----------------------------------+-----------------------------------+ | command line | defaults file | +:=================================+:==================================+ | ``` | ``` yaml | | --standalone | standalone: true | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --template letter | template: letter | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --variable key=val \ | variables: | | --variable key2 | key: val | | | key2: true | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --eol nl | eol: nl | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --dpi 300 | dpi: 300 | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --wrap 60 | wrap: 60 | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --columns 72 | columns: 72 | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --table-of-contents | table-of-contents: true | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --toc | toc: true | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --toc-depth 3 | toc-depth: 3 | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --strip-comments | strip-comments: true | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --no-highlight | highlight-style: null | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --highlight-style kate | highlight-style: kate | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --syntax-definition mylang.xml | syntax-definitions: | | | - mylang.xml | | ``` | ``` | | | ``` yaml | | | syntax-definition: mylang.xml | | | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --include-in-header inc.tex | include-in-header: | | | - inc.tex | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --include-before-body inc.tex | include-before-body: | | | - inc.tex | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --include-after-body inc.tex | include-after-body: | | | - inc.tex | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --resource-path .:foo | resource-path: ['.','foo'] | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --request-header foo:bar | request-headers: | | | - ["User-Agent", "Mozilla/5.0"] | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --no-check-certificate | no-check-certificate: true | | ``` | ``` | +----------------------------------+-----------------------------------+ ## Options affecting specific writers +----------------------------------+-----------------------------------+ | command line | defaults file | +:=================================+:==================================+ | ``` | ``` yaml | | --self-contained | self-contained: true | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --html-q-tags | html-q-tags: true | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --ascii | ascii: true | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --reference-links | reference-links: true | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --reference-location block | reference-location: block | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --markdown-headings atx | markdown-headings: atx | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --list-tables | list-tables: true | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --top-level-division chapter | top-level-division: chapter | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --number-sections | number-sections: true | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --number-offset=1,4 | number-offset: \[1,4\] | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --listings | listings: true | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --incremental | incremental: true | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --slide-level 2 | slide-level: 2 | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --section-divs | section-divs: true | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --email-obfuscation references | email-obfuscation: references | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --id-prefix ch1 | identifier-prefix: ch1 | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --title-prefix MySite | title-prefix: MySite | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --css styles/screen.css \ | css: | | --css styles/special.css | - styles/screen.css | | | - styles/special.css | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --reference-doc my.docx | reference-doc: my.docx | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --epub-cover-image cover.jpg | epub-cover-image: cover.jpg | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --epub-title-page=false | epub-title-page: false | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --epub-metadata meta.xml | epub-metadata: meta.xml | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --epub-embed-font special.otf \ | epub-fonts: | | --epub-embed-font headline.otf | - special.otf | | | - headline.otf | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --split-level 2 | split-level: 2 | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --chunk-template="%i.html" | chunk-template: "%i.html" | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --epub-subdirectory="" | epub-subdirectory: '' | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --ipynb-output best | ipynb-output: best | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --pdf-engine xelatex | pdf-engine: xelatex | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --pdf-engine-opt=--shell-escape | pdf-engine-opts: | | | - '-shell-escape' | | ``` | ``` | | | ``` yaml | | | pdf-engine-opt: '-shell-escape' | | | ``` | +----------------------------------+-----------------------------------+ ## Citation rendering +----------------------------------+-----------------------------------+ | command line | defaults file | +:=================================+:==================================+ | ``` | ``` yaml | | --citeproc | citeproc: true | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --bibliography logic.bib | metadata: | | | bibliography: logic.bib | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --csl ieee.csl | metadata: | | | csl: ieee.csl | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --citation-abbreviations ab.json | metadata: | | | citation-abbreviations: ab.json | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --natbib | cite-method: natbib | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --biblatex | cite-method: biblatex | | ``` | ``` | +----------------------------------+-----------------------------------+ `cite-method` can be `citeproc`, `natbib`, or `biblatex`. This only affects LaTeX output. If you want to use citeproc to format citations, you should also set 'citeproc: true'. If you need control over when the citeproc processing is done relative to other filters, you should instead use `citeproc` in the list of `filters` (see above). ## Math rendering in HTML +----------------------------------+-----------------------------------+ | command line | defaults file | +:=================================+:==================================+ | ``` | ``` yaml | | --mathjax | html-math-method: | | | method: mathjax | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --mathml | html-math-method: | | | method: mathml | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --webtex | html-math-method: | | | method: webtex | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --katex | html-math-method: | | | method: katex | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --gladtex | html-math-method: | | | method: gladtex | | ``` | ``` | +----------------------------------+-----------------------------------+ In addition to the values listed above, `method` can have the value `plain`. If the command line option accepts a URL argument, an `url:` field can be added to `html-math-method:`. ## Options for wrapper scripts +----------------------------------+-----------------------------------+ | command line | defaults file | +:=================================+:==================================+ | ``` | ``` yaml | | --dump-args | dump-args: true | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml | | --ignore-args | ignore-args: true | | ``` | ``` | +----------------------------------+-----------------------------------+ # Templates When the `-s/--standalone` option is used, pandoc uses a template to add header and footer material that is needed for a self-standing document. To see the default template that is used, just type pandoc -D *FORMAT* where *FORMAT* is the name of the output format. A custom template can be specified using the `--template` option. You can also override the system default templates for a given output format *FORMAT* by putting a file `templates/default.*FORMAT*` in the user data directory (see `--data-dir`, above). *Exceptions:* - For `odt` output, customize the `default.opendocument` template. - For `pdf` output, customize the `default.latex` template (or the `default.context` template, if you use `-t context`, or the `default.ms` template, if you use `-t ms`, or the `default.html` template, if you use `-t html`). - `docx` and `pptx` have no template (however, you can use `--reference-doc` to customize the output). Templates contain *variables*, which allow for the inclusion of arbitrary information at any point in the file. They may be set at the command line using the `-V/--variable` option. If a variable is not set, pandoc will look for the key in the document's metadata, which can be set using either [YAML metadata blocks][Extension: `yaml_metadata_block`] or with the `-M/--metadata` option. In addition, some variables are given default values by pandoc. See [Variables] below for a list of variables used in pandoc's default templates. If you use custom templates, you may need to revise them as pandoc changes. We recommend tracking the changes in the default templates, and modifying your custom templates accordingly. An easy way to do this is to fork the [pandoc-templates] repository and merge in changes after each pandoc release. [pandoc-templates]: https://github.com/jgm/pandoc-templates ## Template syntax ### Comments Anything between the sequence `$--` and the end of the line will be treated as a comment and omitted from the output. ### Delimiters To mark variables and control structures in the template, either `$`...`$` or `${`...`}` may be used as delimiters. The styles may also be mixed in the same template, but the opening and closing delimiter must match in each case. The opening delimiter may be followed by one or more spaces or tabs, which will be ignored. The closing delimiter may be preceded by one or more spaces or tabs, which will be ignored. To include a literal `$` in the document, use `$$`. ### Interpolated variables A slot for an interpolated variable is a variable name surrounded by matched delimiters. Variable names must begin with a letter and can contain letters, numbers, `_`, `-`, and `.`. The keywords `it`, `if`, `else`, `endif`, `for`, `sep`, and `endfor` may not be used as variable names. Examples: ``` $foo$ $foo.bar.baz$ $foo_bar.baz-bim$ $ foo $ ${foo} ${foo.bar.baz} ${foo_bar.baz-bim} ${ foo } ``` Variable names with periods are used to get at structured variable values. So, for example, `employee.salary` will return the value of the `salary` field of the object that is the value of the `employee` field. - If the value of the variable is a simple value, it will be rendered verbatim. (Note that no escaping is done; the assumption is that the calling program will escape the strings appropriately for the output format.) - If the value is a list, the values will be concatenated. - If the value is a map, the string `true` will be rendered. - Every other value will be rendered as the empty string. ### Conditionals A conditional begins with `if(variable)` (enclosed in matched delimiters) and ends with `endif` (enclosed in matched delimiters). It may optionally contain an `else` (enclosed in matched delimiters). The `if` section is used if `variable` has a non-empty value, otherwise the `else` section is used (if present). Examples: ``` $if(foo)$bar$endif$ $if(foo)$ $foo$ $endif$ $if(foo)$ part one $else$ part two $endif$ ${if(foo)}bar${endif} ${if(foo)} ${foo} ${endif} ${if(foo)} ${ foo.bar } ${else} no foo! ${endif} ``` The keyword `elseif` may be used to simplify complex nested conditionals: ``` $if(foo)$ XXX $elseif(bar)$ YYY $else$ ZZZ $endif$ ``` ### For loops A for loop begins with `for(variable)` (enclosed in matched delimiters) and ends with `endfor` (enclosed in matched delimiters). - If `variable` is an array, the material inside the loop will be evaluated repeatedly, with `variable` being set to each value of the array in turn, and concatenated. - If `variable` is a map, the material inside will be set to the map. - If the value of the associated variable is not an array or a map, a single iteration will be performed on its value. Examples: ``` $for(foo)$$foo$$sep$, $endfor$ $for(foo)$ - $foo.last$, $foo.first$ $endfor$ ${ for(foo.bar) } - ${ foo.bar.last }, ${ foo.bar.first } ${ endfor } $for(mymap)$ $it.name$: $it.office$ $endfor$ ``` You may optionally specify a separator between consecutive values using `sep` (enclosed in matched delimiters). The material between `sep` and the `endfor` is the separator. ``` ${ for(foo) }${ foo }${ sep }, ${ endfor } ``` Instead of using `variable` inside the loop, the special anaphoric keyword `it` may be used. ``` ${ for(foo.bar) } - ${ it.last }, ${ it.first } ${ endfor } ``` ### Partials Partials (subtemplates stored in different files) may be included by using the name of the partial, followed by `()`, for example: ``` ${ styles() } ``` Partials will be sought in the directory containing the main template. The file name will be assumed to have the same extension as the main template if it lacks an extension. When calling the partial, the full name including file extension can also be used: ``` ${ styles.html() } ``` (If a partial is not found in the directory of the template and the template path is given as a relative path, it will also be sought in the `templates` subdirectory of the user data directory.) Partials may optionally be applied to variables using a colon: ``` ${ date:fancy() } ${ articles:bibentry() } ``` If `articles` is an array, this will iterate over its values, applying the partial `bibentry()` to each one. So the second example above is equivalent to ``` ${ for(articles) } ${ it:bibentry() } ${ endfor } ``` Note that the anaphoric keyword `it` must be used when iterating over partials. In the above examples, the `bibentry` partial should contain `it.title` (and so on) instead of `articles.title`. Final newlines are omitted from included partials. Partials may include other partials. A separator between values of an array may be specified in square brackets, immediately after the variable name or partial: ``` ${months[, ]}$ ${articles:bibentry()[; ]$ ``` The separator in this case is literal and (unlike with `sep` in an explicit `for` loop) cannot contain interpolated variables or other template directives. ### Nesting To ensure that content is "nested," that is, subsequent lines indented, use the `^` directive: ``` $item.number$ $^$$item.description$ ($item.price$) ``` In this example, if `item.description` has multiple lines, they will all be indented to line up with the first line: ``` 00123 A fine bottle of 18-year old Oban whiskey. ($148) ``` To nest multiple lines to the same level, align them with the `^` directive in the template. For example: ``` $item.number$ $^$$item.description$ ($item.price$) (Available til $item.sellby$.) ``` will produce ``` 00123 A fine bottle of 18-year old Oban whiskey. ($148) (Available til March 30, 2020.) ``` If a variable occurs by itself on a line, preceded by whitespace and not followed by further text or directives on the same line, and the variable's value contains multiple lines, it will be nested automatically. ### Breakable spaces Normally, spaces in the template itself (as opposed to values of the interpolated variables) are not breakable, but they can be made breakable in part of the template by using the `~` keyword (ended with another `~`). ``` $~$This long line may break if the document is rendered with a short line length.$~$ ``` ### Pipes A pipe transforms the value of a variable or partial. Pipes are specified using a slash (`/`) between the variable name (or partial) and the pipe name. Example: ``` $for(name)$ $name/uppercase$ $endfor$ $for(metadata/pairs)$ - $it.key$: $it.value$ $endfor$ $employee:name()/uppercase$ ``` Pipes may be chained: ``` $for(employees/pairs)$ $it.key/alpha/uppercase$. $it.name$ $endfor$ ``` Some pipes take parameters: ``` |----------------------|------------| $for(employee)$ $it.name.first/uppercase/left 20 "| "$$it.name.salary/right 10 " | " " |"$ $endfor$ |----------------------|------------| ``` Currently the following pipes are predefined: - `pairs`: Converts a map or array to an array of maps, each with `key` and `value` fields. If the original value was an array, the `key` will be the array index, starting with 1. - `uppercase`: Converts text to uppercase. - `lowercase`: Converts text to lowercase. - `length`: Returns the length of the value: number of characters for a textual value, number of elements for a map or array. - `reverse`: Reverses a textual value or array, and has no effect on other values. - `first`: Returns the first value of an array, if applied to a non-empty array; otherwise returns the original value. - `last`: Returns the last value of an array, if applied to a non-empty array; otherwise returns the original value. - `rest`: Returns all but the first value of an array, if applied to a non-empty array; otherwise returns the original value. - `allbutlast`: Returns all but the last value of an array, if applied to a non-empty array; otherwise returns the original value. - `chomp`: Removes trailing newlines (and breakable space). - `nowrap`: Disables line wrapping on breakable spaces. - `alpha`: Converts textual values that can be read as an integer into lowercase alphabetic characters `a..z` (mod 26). This can be used to get lettered enumeration from array indices. To get uppercase letters, chain with `uppercase`. - `roman`: Converts textual values that can be read as an integer into lowercase roman numerals. This can be used to get lettered enumeration from array indices. To get uppercase roman, chain with `uppercase`. - `left n "leftborder" "rightborder"`: Renders a textual value in a block of width `n`, aligned to the left, with an optional left and right border. Has no effect on other values. This can be used to align material in tables. Widths are positive integers indicating the number of characters. Borders are strings inside double quotes; literal `"` and `\` characters must be backslash-escaped. - `right n "leftborder" "rightborder"`: Renders a textual value in a block of width `n`, aligned to the right, and has no effect on other values. - `center n "leftborder" "rightborder"`: Renders a textual value in a block of width `n`, aligned to the center, and has no effect on other values. ## Variables ### Metadata variables `title`, `author`, `date` : allow identification of basic aspects of the document. Included in PDF metadata through LaTeX and ConTeXt. These can be set through a [pandoc title block][Extension: `pandoc_title_block`], which allows for multiple authors, or through a [YAML metadata block][Extension: `yaml_metadata_block`]: --- author: - Aristotle - Peter Abelard ... Note that if you just want to set PDF or HTML metadata, without including a title block in the document itself, you can set the `title-meta`, `author-meta`, and `date-meta` variables. (By default these are set automatically, based on `title`, `author`, and `date`.) The page title in HTML is set by `pagetitle`, which is equal to `title` by default. `subtitle` : document subtitle, included in HTML, EPUB, LaTeX, ConTeXt, and docx documents `abstract` : document summary, included in HTML, LaTeX, ConTeXt, AsciiDoc, and docx documents `abstract-title` : title of abstract, currently used only in HTML and EPUB. This will be set automatically to a localized value, depending on `lang`, but can be manually overridden. `keywords` : list of keywords to be included in HTML, PDF, ODT, pptx, docx and AsciiDoc metadata; repeat as for `author`, above `subject` : document subject, included in ODT, PDF, docx, EPUB, and pptx metadata `description` : document description, included in ODT, docx and pptx metadata. Some applications show this as `Comments` metadata. `category` : document category, included in docx and pptx metadata Additionally, any root-level string metadata, not included in ODT, docx or pptx metadata is added as a *custom property*. The following [YAML] metadata block for instance: --- title: 'This is the title' subtitle: "This is the subtitle" author: - Author One - Author Two description: | This is a long description. It consists of two paragraphs ... will include `title`, `author` and `description` as standard document properties and `subtitle` as a custom property when converting to docx, ODT or pptx. ### Language variables `lang` : identifies the main language of the document using IETF language tags (following the [BCP 47] standard), such as `en` or `en-GB`. The [Language subtag lookup] tool can look up or verify these tags. This affects most formats, and controls hyphenation in PDF output when using LaTeX (through [`babel`] and [`polyglossia`]) or ConTeXt. Use native pandoc [Divs and Spans] with the `lang` attribute to switch the language: --- lang: en-GB ... Text in the main document language (British English). ::: {lang=fr-CA} > Cette citation est écrite en français canadien. ::: More text in English. ['Zitat auf Deutsch.']{lang=de} `dir` : the base script direction, either `rtl` (right-to-left) or `ltr` (left-to-right). For bidirectional documents, native pandoc `span`s and `div`s with the `dir` attribute (value `rtl` or `ltr`) can be used to override the base direction in some output formats. This may not always be necessary if the final renderer (e.g. the browser, when generating HTML) supports the [Unicode Bidirectional Algorithm]. When using LaTeX for bidirectional documents, only the `xelatex` engine is fully supported (use `--pdf-engine=xelatex`). [BCP 47]: https://tools.ietf.org/html/bcp47 [Unicode Bidirectional Algorithm]: https://www.w3.org/International/articles/inline-bidi-markup/uba-basics [Language subtag lookup]: https://r12a.github.io/app-subtags/ ### Variables for HTML `document-css` : Enables inclusion of most of the [CSS] in the `styles.html` [partial](#partials) (have a look with `pandoc --print-default-data-file=templates/styles.html`). Unless you use [`--css`](#option--css), this variable is set to `true` by default. You can disable it with e.g. `pandoc -M document-css=false`. `mainfont` : sets the CSS `font-family` property on the `html` element. `fontsize` : sets the base CSS `font-size`, which you'd usually set to e.g. `20px`, but it also accepts `pt` (12pt = 16px in most browsers). `fontcolor` : sets the CSS `color` property on the `html` element. `linkcolor` : sets the CSS `color` property on all links. `monofont` : sets the CSS `font-family` property on `code` elements. `monobackgroundcolor` : sets the CSS `background-color` property on `code` elements and adds extra padding. `linestretch` : sets the CSS `line-height` property on the `html` element, which is preferred to be unitless. `maxwidth` : sets the CSS `max-width` property (default is 32em). `backgroundcolor` : sets the CSS `background-color` property on the `html` element. `margin-left`, `margin-right`, `margin-top`, `margin-bottom` : sets the corresponding CSS `padding` properties on the `body` element. To override or extend some [CSS] for just one document, include for example: --- header-includes: | --- [CSS]: https://developer.mozilla.org/en-US/docs/Learn/CSS ### Variables for HTML math `classoption` : when using [KaTeX](#option--katex), you can render display math equations flush left using [YAML metadata](#layout) or with `-M classoption=fleqn`. ### Variables for HTML slides These affect HTML output when [producing slide shows with pandoc](#slide-shows). `institute` : author affiliations: can be a list when there are multiple authors `revealjs-url` : base URL for reveal.js documents (defaults to `https://unpkg.com/reveal.js@^4/`) `s5-url` : base URL for S5 documents (defaults to `s5/default`) `slidy-url` : base URL for Slidy documents (defaults to `https://www.w3.org/Talks/Tools/Slidy2`) `slideous-url` : base URL for Slideous documents (defaults to `slideous`) `title-slide-attributes` : additional attributes for the title slide of reveal.js slide shows. See [background in reveal.js, beamer, and pptx] for an example. All [reveal.js configuration options] are available as variables. To turn off boolean flags that default to true in reveal.js, use `0`. [reveal.js configuration options]: https://revealjs.com/config/ ### Variables for Beamer slides These variables change the appearance of PDF slides using [`beamer`]. `aspectratio` : slide aspect ratio (`43` for 4:3 [default], `169` for 16:9, `1610` for 16:10, `149` for 14:9, `141` for 1.41:1, `54` for 5:4, `32` for 3:2) `beameroption` : add extra beamer option with `\setbeameroption{}` `institute` : author affiliations: can be a list when there are multiple authors `logo` : logo image for slides `navigation` : controls navigation symbols (default is `empty` for no navigation symbols; other valid values are `frame`, `vertical`, and `horizontal`) `section-titles` : enables "title pages" for new sections (default is true) `theme`, `colortheme`, `fonttheme`, `innertheme`, `outertheme` : beamer themes `themeoptions` : options for LaTeX beamer themes (a list). `titlegraphic` : image for title slide ### Variables for PowerPoint These variables control the visual aspects of a slide show that are not easily controlled via templates. `monofont` : font to use for code. ### Variables for LaTeX Pandoc uses these variables when [creating a PDF] with a LaTeX engine. #### Layout `block-headings` : make `\paragraph` and `\subparagraph` (fourth- and fifth-level headings, or fifth- and sixth-level with book classes) free-standing rather than run-in; requires further formatting to distinguish from `\subsubsection` (third- or fourth-level headings). Instead of using this option, [KOMA-Script] can adjust headings more extensively: --- documentclass: scrartcl header-includes: | \RedeclareSectionCommand[ beforeskip=-10pt plus -2pt minus -1pt, afterskip=1sp plus -1sp minus 1sp, font=\normalfont\itshape]{paragraph} \RedeclareSectionCommand[ beforeskip=-10pt plus -2pt minus -1pt, afterskip=1sp plus -1sp minus 1sp, font=\normalfont\scshape, indent=0pt]{subparagraph} ... `classoption` : option for document class, e.g. `oneside`; repeat for multiple options: --- classoption: - twocolumn - landscape ... `documentclass` : document class: usually one of the standard classes, [`article`], [`book`], and [`report`]; the [KOMA-Script] equivalents, `scrartcl`, `scrbook`, and `scrreprt`, which default to smaller margins; or [`memoir`] `geometry` : option for [`geometry`] package, e.g. `margin=1in`; repeat for multiple options: --- geometry: - top=30mm - left=20mm - heightrounded ... `hyperrefoptions` : option for [`hyperref`] package, e.g. `linktoc=all`; repeat for multiple options: --- hyperrefoptions: - linktoc=all - pdfwindowui - pdfpagemode=FullScreen ... `indent` : if true, pandoc will use document class settings for indentation (the default LaTeX template otherwise removes indentation and adds space between paragraphs) `linestretch` : adjusts line spacing using the [`setspace`] package, e.g. `1.25`, `1.5` `margin-left`, `margin-right`, `margin-top`, `margin-bottom` : sets margins if `geometry` is not used (otherwise `geometry` overrides these) `pagestyle` : control `\pagestyle{}`: the default article class supports `plain` (default), `empty` (no running heads or page numbers), and `headings` (section titles in running heads) `papersize` : paper size, e.g. `letter`, `a4` `secnumdepth` : numbering depth for sections (with `--number-sections` option or `numbersections` variable) `beamerarticle` : produce an article from Beamer slides #### Fonts `fontenc` : allows font encoding to be specified through `fontenc` package (with `pdflatex`); default is `T1` (see [LaTeX font encodings guide]) `fontfamily` : font package for use with `pdflatex`: [TeX Live] includes many options, documented in the [LaTeX Font Catalogue]. The default is [Latin Modern][`lm`]. `fontfamilyoptions` : options for package used as `fontfamily`; repeat for multiple options. For example, to use the Libertine font with proportional lowercase (old-style) figures through the [`libertinus`] package: --- fontfamily: libertinus fontfamilyoptions: - osf - p ... `fontsize` : font size for body text. The standard classes allow 10pt, 11pt, and 12pt. To use another size, set `documentclass` to one of the [KOMA-Script] classes, such as `scrartcl` or `scrbook`. `mainfont`, `sansfont`, `monofont`, `mathfont`, `CJKmainfont`, `CJKsansfont`, `CJKmonofont` : font families for use with `xelatex` or `lualatex`: take the name of any system font, using the [`fontspec`] package. `CJKmainfont` uses the [`xecjk`] package. `mainfontoptions`, `sansfontoptions`, `monofontoptions`, `mathfontoptions`, `CJKoptions` : options to use with `mainfont`, `sansfont`, `monofont`, `mathfont`, `CJKmainfont` in `xelatex` and `lualatex`. Allow for any choices available through [`fontspec`]; repeat for multiple options. For example, to use the [TeX Gyre] version of Palatino with lowercase figures: --- mainfont: TeX Gyre Pagella mainfontoptions: - Numbers=Lowercase - Numbers=Proportional ... `babelfonts` : a map of Babel language names (e.g. `chinese`) to the font to be used with the language: --- babelfonts: chinese-hant: "Noto Serif CJK TC" russian: "Noto Serif" ... `microtypeoptions` : options to pass to the microtype package #### Links `colorlinks` : add color to link text; automatically enabled if any of `linkcolor`, `filecolor`, `citecolor`, `urlcolor`, or `toccolor` are set `boxlinks` : add visible box around links (has no effect if `colorlinks` is set) `linkcolor`, `filecolor`, `citecolor`, `urlcolor`, `toccolor` : color for internal links, external links, citation links, linked URLs, and links in table of contents, respectively: uses options allowed by [`xcolor`], including the `dvipsnames`, `svgnames`, and `x11names` lists `links-as-notes` : causes links to be printed as footnotes `urlstyle` : style for URLs (e.g., `tt`, `rm`, `sf`, and, the default, `same`) #### Front matter `lof`, `lot` : include list of figures, list of tables `thanks` : contents of acknowledgments footnote after document title `toc` : include table of contents (can also be set using `--toc/--table-of-contents`) `toc-depth` : level of section to include in table of contents #### BibLaTeX Bibliographies These variables function when using BibLaTeX for [citation rendering]. `biblatexoptions` : list of options for biblatex `biblio-style` : bibliography style, when used with `--natbib` and `--biblatex` `biblio-title` : bibliography title, when used with `--natbib` and `--biblatex` `bibliography` : bibliography to use for resolving references `natbiboptions` : list of options for natbib [KOMA-Script]: https://ctan.org/pkg/koma-script [LaTeX Font Catalogue]: https://tug.org/FontCatalogue/ [LaTeX font encodings guide]: https://ctan.org/pkg/encguide [TeX Gyre]: http://www.gust.org.pl/projects/e-foundry/tex-gyre [`article`]: https://ctan.org/pkg/article [`book`]: https://ctan.org/pkg/book [`libertinus`]: https://ctan.org/pkg/libertinus [`memoir`]: https://ctan.org/pkg/memoir [`report`]: https://ctan.org/pkg/report ### Variables for ConTeXt Pandoc uses these variables when [creating a PDF] with ConTeXt. `fontsize` : font size for body text (e.g. `10pt`, `12pt`) `headertext`, `footertext` : text to be placed in running header or footer (see [ConTeXt Headers and Footers]); repeat up to four times for different placement `indenting` : controls indentation of paragraphs, e.g. `yes,small,next` (see [ConTeXt Indentation]); repeat for multiple options `interlinespace` : adjusts line spacing, e.g. `4ex` (using [`setupinterlinespace`]); repeat for multiple options `layout` : options for page margins and text arrangement (see [ConTeXt Layout]); repeat for multiple options `linkcolor`, `contrastcolor` : color for links outside and inside a page, e.g. `red`, `blue` (see [ConTeXt Color]) `linkstyle` : typeface style for links, e.g. `normal`, `bold`, `slanted`, `boldslanted`, `type`, `cap`, `small` `lof`, `lot` : include list of figures, list of tables `mainfont`, `sansfont`, `monofont`, `mathfont` : font families: take the name of any system font (see [ConTeXt Font Switching]) `margin-left`, `margin-right`, `margin-top`, `margin-bottom` : sets margins, if `layout` is not used (otherwise `layout` overrides these) `pagenumbering` : page number style and location (using [`setuppagenumbering`]); repeat for multiple options `papersize` : paper size, e.g. `letter`, `A4`, `landscape` (see [ConTeXt Paper Setup]); repeat for multiple options `pdfa` : adds to the preamble the setup necessary to generate PDF/A of the type specified, e.g. `1a:2005`, `2a`. If no type is specified (i.e. the value is set to True, by e.g. `--metadata=pdfa` or `pdfa: true` in a YAML metadata block), `1b:2005` will be used as default, for reasons of backwards compatibility. Using `--variable=pdfa` without specified value is not supported. To successfully generate PDF/A the required ICC color profiles have to be available and the content and all included files (such as images) have to be standard-conforming. The ICC profiles and output intent may be specified using the variables `pdfaiccprofile` and `pdfaintent`. See also [ConTeXt PDFA] for more details. `pdfaiccprofile` : when used in conjunction with `pdfa`, specifies the ICC profile to use in the PDF, e.g. `default.cmyk`. If left unspecified, `sRGB.icc` is used as default. May be repeated to include multiple profiles. Note that the profiles have to be available on the system. They can be obtained from [ConTeXt ICC Profiles]. `pdfaintent` : when used in conjunction with `pdfa`, specifies the output intent for the colors, e.g. `ISO coated v2 300\letterpercent\space (ECI)` If left unspecified, `sRGB IEC61966-2.1` is used as default. `toc` : include table of contents (can also be set using `--toc/--table-of-contents`) `urlstyle` : typeface style for links without link text, e.g. `normal`, `bold`, `slanted`, `boldslanted`, `type`, `cap`, `small` `whitespace` : spacing between paragraphs, e.g. `none`, `small` (using [`setupwhitespace`]) `includesource` : include all source documents as file attachments in the PDF file [ConTeXt Paper Setup]: https://wiki.contextgarden.net/PaperSetup [ConTeXt Layout]: https://wiki.contextgarden.net/Layout [ConTeXt Font Switching]: https://wiki.contextgarden.net/Font_Switching [ConTeXt Color]: https://wiki.contextgarden.net/Color [ConTeXt Headers and Footers]: https://wiki.contextgarden.net/Headers_and_Footers [ConTeXt Indentation]: https://wiki.contextgarden.net/Indentation [ConTeXt ICC Profiles]: https://wiki.contextgarden.net/PDFX#ICC_profiles [ConTeXt PDFA]: https://wiki.contextgarden.net/PDF/A [`setupwhitespace`]: https://wiki.contextgarden.net/Command/setupwhitespace [`setupinterlinespace`]: https://wiki.contextgarden.net/Command/setupinterlinespace [`setuppagenumbering`]: https://wiki.contextgarden.net/Command/setuppagenumbering ### Variables for `wkhtmltopdf` Pandoc uses these variables when [creating a PDF] with [`wkhtmltopdf`]. The `--css` option also affects the output. `footer-html`, `header-html` : add information to the header and footer `margin-left`, `margin-right`, `margin-top`, `margin-bottom` : set the page margins `papersize` : sets the PDF paper size ### Variables for man pages `adjusting` : adjusts text to left (`l`), right (`r`), center (`c`), or both (`b`) margins `footer` : footer in man pages `header` : header in man pages `hyphenate` : if `true` (the default), hyphenation will be used `section` : section number in man pages ### Variables for Typst `margin` : A dictionary with the fields defined in the Typst documentation: `x`, `y`, `top`, `bottom`, `left`, `right`. `papersize` : Paper size: `a4`, `us-letter`, etc. `mainfont` : Name of system font to use for the main font. `fontsize` : Font size (e.g., `12pt`). `section-numbering` : Schema to use for numbering sections, e.g. `1.A.1`. `columns` : Number of columns for body text. ### Variables for ms `fontfamily` : `A` (Avant Garde), `B` (Bookman), `C` (Helvetica), `HN` (Helvetica Narrow), `P` (Palatino), or `T` (Times New Roman). This setting does not affect source code, which is always displayed using monospace Courier. These built-in fonts are limited in their coverage of characters. Additional fonts may be installed using the script [`install-font.sh`] provided by Peter Schaffter and documented in detail on [his web site][ms-font-steps]. `indent` : paragraph indent (e.g. `2m`) `lineheight` : line height (e.g. `12p`) `pointsize` : point size (e.g. `10p`) [`install-font.sh`]: https://www.schaffter.ca/mom/bin/install-font.sh [ms-font-steps]: https://www.schaffter.ca/mom/momdoc/appendices.html#steps ### Variables set automatically Pandoc sets these variables automatically in response to [options] or document contents; users can also modify them. These vary depending on the output format, and include the following: `body` : body of document `date-meta` : the `date` variable converted to ISO 8601 YYYY-MM-DD, included in all HTML based formats (dzslides, epub, html, html4, html5, revealjs, s5, slideous, slidy). The recognized formats for `date` are: `mm/dd/yyyy`, `mm/dd/yy`, `yyyy-mm-dd` (ISO 8601), `dd MM yyyy` (e.g. either `02 Apr 2018` or `02 April 2018`), `MM dd, yyyy` (e.g. `Apr. 02, 2018` or `April 02, 2018), `yyyy[mm[dd]]` (e.g. `20180402, `201804` or `2018`). `header-includes` : contents specified by `-H/--include-in-header` (may have multiple values) `include-before` : contents specified by `-B/--include-before-body` (may have multiple values) `include-after` : contents specified by `-A/--include-after-body` (may have multiple values) `meta-json` : JSON representation of all of the document's metadata. Field values are transformed to the selected output format. `numbersections` : non-null value if `-N/--number-sections` was specified `sourcefile`, `outputfile` : source and destination filenames, as given on the command line. `sourcefile` can also be a list if input comes from multiple files, or empty if input is from stdin. You can use the following snippet in your template to distinguish them: $if(sourcefile)$ $for(sourcefile)$ $sourcefile$ $endfor$ $else$ (stdin) $endif$ Similarly, `outputfile` can be `-` if output goes to the terminal. If you need absolute paths, use e.g. `$curdir$/$sourcefile$`. `curdir` : working directory from which pandoc is run. `pandoc-version` : pandoc version. `toc` : non-null value if `--toc/--table-of-contents` was specified `toc-title` : title of table of contents (works only with EPUB, HTML, revealjs, opendocument, odt, docx, pptx, beamer, LaTeX) [pandoc-templates]: https://github.com/jgm/pandoc-templates # Extensions The behavior of some of the readers and writers can be adjusted by enabling or disabling various extensions. An extension can be enabled by adding `+EXTENSION` to the format name and disabled by adding `-EXTENSION`. For example, `--from markdown_strict+footnotes` is strict Markdown with footnotes enabled, while `--from markdown-footnotes-pipe_tables` is pandoc's Markdown without footnotes or pipe tables. The markdown reader and writer make by far the most use of extensions. Extensions only used by them are therefore covered in the section [Pandoc's Markdown] below (see [Markdown variants] for `commonmark` and `gfm`). In the following, extensions that also work for other formats are covered. Note that markdown extensions added to the `ipynb` format affect Markdown cells in Jupyter notebooks (as do command-line options like `--markdown-headings`). ## Typography #### Extension: `smart` #### Interpret straight quotes as curly quotes, `---` as em-dashes, `--` as en-dashes, and `...` as ellipses. Nonbreaking spaces are inserted after certain abbreviations, such as "Mr." This extension can be enabled/disabled for the following formats: input formats : `markdown`, `commonmark`, `latex`, `mediawiki`, `org`, `rst`, `twiki`, `html` output formats : `markdown`, `latex`, `context`, `rst` enabled by default in : `markdown`, `latex`, `context` (both input and output) Note: If you are *writing* Markdown, then the `smart` extension has the reverse effect: what would have been curly quotes comes out straight. In LaTeX, `smart` means to use the standard TeX ligatures for quotation marks (` `` ` and ` '' ` for double quotes, `` ` `` and `` ' `` for single quotes) and dashes (`--` for en-dash and `---` for em-dash). If `smart` is disabled, then in reading LaTeX pandoc will parse these characters literally. In writing LaTeX, enabling `smart` tells pandoc to use the ligatures when possible; if `smart` is disabled pandoc will use unicode quotation mark and dash characters. ## Headings and sections #### Extension: `auto_identifiers` #### A heading without an explicitly specified identifier will be automatically assigned a unique identifier based on the heading text. This extension can be enabled/disabled for the following formats: input formats : `markdown`, `latex`, `rst`, `mediawiki`, `textile` output formats : `markdown`, `muse` enabled by default in : `markdown`, `muse` The default algorithm used to derive the identifier from the heading text is: - Remove all formatting, links, etc. - Remove all footnotes. - Remove all non-alphanumeric characters, except underscores, hyphens, and periods. - Replace all spaces and newlines with hyphens. - Convert all alphabetic characters to lowercase. - Remove everything up to the first letter (identifiers may not begin with a number or punctuation mark). - If nothing is left after this, use the identifier `section`. Thus, for example, Heading Identifier ------------------------------- ---------------------------- `Heading identifiers in HTML` `heading-identifiers-in-html` `Maître d'hôtel` `maître-dhôtel` `*Dogs*?--in *my* house?` `dogs--in-my-house` `[HTML], [S5], or [RTF]?` `html-s5-or-rtf` `3. Applications` `applications` `33` `section` These rules should, in most cases, allow one to determine the identifier from the heading text. The exception is when several headings have the same text; in this case, the first will get an identifier as described above; the second will get the same identifier with `-1` appended; the third with `-2`; and so on. (However, a different algorithm is used if `gfm_auto_identifiers` is enabled; see below.) These identifiers are used to provide link targets in the table of contents generated by the `--toc|--table-of-contents` option. They also make it easy to provide links from one section of a document to another. A link to this section, for example, might look like this: See the section on [heading identifiers](#heading-identifiers-in-html-latex-and-context). Note, however, that this method of providing links to sections works only in HTML, LaTeX, and ConTeXt formats. If the `--section-divs` option is specified, then each section will be wrapped in a `section` (or a `div`, if `html4` was specified), and the identifier will be attached to the enclosing `
` (or `
`) tag rather than the heading itself. This allows entire sections to be manipulated using JavaScript or treated differently in CSS. #### Extension: `ascii_identifiers` #### Causes the identifiers produced by `auto_identifiers` to be pure ASCII. Accents are stripped off of accented Latin letters, and non-Latin letters are omitted. #### Extension: `gfm_auto_identifiers` #### Changes the algorithm used by `auto_identifiers` to conform to GitHub's method. Spaces are converted to dashes (`-`), uppercase characters to lowercase characters, and punctuation characters other than `-` and `_` are removed. Emojis are replaced by their names. ## Math Input The extensions [`tex_math_dollars`](#extension-tex_math_dollars), [`tex_math_single_backslash`](#extension-tex_math_single_backslash), and [`tex_math_double_backslash`](#extension-tex_math_double_backslash) are described in the section about Pandoc's Markdown. However, they can also be used with HTML input. This is handy for reading web pages formatted using MathJax, for example. ## Raw HTML/TeX The following extensions are described in more detail in their respective sections of [Pandoc's Markdown]: - [`raw_html`](#extension-raw_html) allows HTML elements which are not representable in pandoc's AST to be parsed as raw HTML. By default, this is disabled for HTML input. - [`raw_tex`](#extension-raw_tex) allows raw LaTeX, TeX, and ConTeXt to be included in a document. This extension can be enabled/disabled for the following formats (in addition to `markdown`): input formats : `latex`, `textile`, `html` (environments, `\ref`, and `\eqref` only), `ipynb` output formats : `textile`, `commonmark` Note: as applied to `ipynb`, `raw_html` and `raw_tex` affect not only raw TeX in markdown cells, but data with mime type `text/html` in output cells. Since the `ipynb` reader attempts to preserve the richest possible outputs when several options are given, you will get best results if you disable `raw_html` and `raw_tex` when converting to formats like `docx` which don't allow raw `html` or `tex`. - [`native_divs`](#extension-native_divs) causes HTML `div` elements to be parsed as native pandoc Div blocks. If you want them to be parsed as raw HTML, use `-f html-native_divs+raw_html`. - [`native_spans`](#extension-native_spans) causes HTML `span` elements to be parsed as native pandoc Span inlines. If you want them to be parsed as raw HTML, use `-f html-native_spans+raw_html`. If you want to drop all `div`s and `span`s when converting HTML to Markdown, you can use `pandoc -f html-native_divs-native_spans -t markdown`. ## Literate Haskell support #### Extension: `literate_haskell` #### Treat the document as literate Haskell source. This extension can be enabled/disabled for the following formats: input formats : `markdown`, `rst`, `latex` output formats : `markdown`, `rst`, `latex`, `html` If you append `+lhs` (or `+literate_haskell`) to one of the formats above, pandoc will treat the document as literate Haskell source. This means that - In Markdown input, "bird track" sections will be parsed as Haskell code rather than block quotations. Text between `\begin{code}` and `\end{code}` will also be treated as Haskell code. For ATX-style headings the character '=' will be used instead of '#'. - In Markdown output, code blocks with classes `haskell` and `literate` will be rendered using bird tracks, and block quotations will be indented one space, so they will not be treated as Haskell code. In addition, headings will be rendered setext-style (with underlines) rather than ATX-style (with '#' characters). (This is because ghc treats '#' characters in column 1 as introducing line numbers.) - In restructured text input, "bird track" sections will be parsed as Haskell code. - In restructured text output, code blocks with class `haskell` will be rendered using bird tracks. - In LaTeX input, text in `code` environments will be parsed as Haskell code. - In LaTeX output, code blocks with class `haskell` will be rendered inside `code` environments. - In HTML output, code blocks with class `haskell` will be rendered with class `literatehaskell` and bird tracks. Examples: pandoc -f markdown+lhs -t html reads literate Haskell source formatted with Markdown conventions and writes ordinary HTML (without bird tracks). pandoc -f markdown+lhs -t html+lhs writes HTML with the Haskell code in bird tracks, so it can be copied and pasted as literate Haskell source. Note that GHC expects the bird tracks in the first column, so indented literate code blocks (e.g. inside an itemized environment) will not be picked up by the Haskell compiler. ## Other extensions #### Extension: `empty_paragraphs` #### Allows empty paragraphs. By default empty paragraphs are omitted. This extension can be enabled/disabled for the following formats: input formats : `docx`, `html` output formats : `docx`, `odt`, `opendocument`, `html` #### Extension: `native_numbering` #### Enables native numbering of figures and tables. Enumeration starts at 1. This extension can be enabled/disabled for the following formats: output formats : `odt`, `opendocument`, `docx` #### Extension: `xrefs_name` #### Links to headings, figures and tables inside the document are substituted with cross-references that will use the name or caption of the referenced item. The original link text is replaced once the generated document is refreshed. This extension can be combined with `xrefs_number` in which case numbers will appear before the name. Text in cross-references is only made consistent with the referenced item once the document has been refreshed. This extension can be enabled/disabled for the following formats: output formats : `odt`, `opendocument` #### Extension: `xrefs_number` #### Links to headings, figures and tables inside the document are substituted with cross-references that will use the number of the referenced item. The original link text is discarded. This extension can be combined with `xrefs_name` in which case the name or caption numbers will appear after the number. For the `xrefs_number` to be useful heading numbers must be enabled in the generated document, also table and figure captions must be enabled using for example the `native_numbering` extension. Numbers in cross-references are only visible in the final document once it has been refreshed. This extension can be enabled/disabled for the following formats: output formats : `odt`, `opendocument` #### Extension: `styles` #### {#ext-styles} When converting from docx, read all docx styles as divs (for paragraph styles) and spans (for character styles) regardless of whether pandoc understands the meaning of these styles. This can be used with [docx custom styles](#custom-styles). Disabled by default. input formats : `docx` #### Extension: `amuse` #### In the `muse` input format, this enables Text::Amuse extensions to Emacs Muse markup. #### Extension: `raw_markdown` #### In the `ipynb` input format, this causes Markdown cells to be included as raw Markdown blocks (allowing lossless round-tripping) rather than being parsed. Use this only when you are targeting `ipynb` or a markdown-based output format. #### Extension: `citations` {#org-citations} When the `citations` extension is enabled in `org`, org-cite and org-ref style citations will be parsed as native pandoc citations. [org-cite]: https://orgmode.org/manual/Citations.html [org-ref]: https://github.com/jkitchin/org-ref When `citations` is enabled in `docx`, citations inserted by Zotero or Mendeley or EndNote plugins will be parsed as native pandoc citations. (Otherwise, the formatted citations generated by the bibliographic software will be parsed as regular text.) #### Extension: `fancy_lists` {#org-fancy-lists} Some aspects of [Pandoc's Markdown fancy lists](#extension-fancy_lists) are also accepted in `org` input, mimicking the option `org-list-allow-alphabetical` in Emacs. As in Org Mode, enabling this extension allows lowercase and uppercase alphabetical markers for ordered lists to be parsed in addition to arabic ones. Note that for Org, this does not include roman numerals or the `#` placeholder that are enabled by the extension in Pandoc's Markdown. #### Extension: `element_citations` #### In the `jats` output formats, this causes reference items to be replaced with `` elements. These elements are not influenced by CSL styles, but all information on the item is included in tags. #### Extension: `ntb` #### In the `context` output format this enables the use of [Natural Tables (TABLE)](https://wiki.contextgarden.net/TABLE) instead of the default [Extreme Tables (xtables)](https://wiki.contextgarden.net/xtables). Natural tables allow more fine-grained global customization but come at a performance penalty compared to extreme tables. #### Extension: `tagging` #### Enabling this extension with `context` output will produce markup suitable for the production of tagged PDFs. This includes additional markers for paragraphs and alternative markup for emphasized text. The `emphasis-command` template variable is set if the extension is enabled. # Pandoc's Markdown Pandoc understands an extended and slightly revised version of John Gruber's [Markdown] syntax. This document explains the syntax, noting differences from original Markdown. Except where noted, these differences can be suppressed by using the `markdown_strict` format instead of `markdown`. Extensions can be enabled or disabled to specify the behavior more granularly. They are described in the following. See also [Extensions] above, for extensions that work also on other formats. ## Philosophy Markdown is designed to be easy to write, and, even more importantly, easy to read: > A Markdown-formatted document should be publishable as-is, as plain > text, without looking like it's been marked up with tags or formatting > instructions. > -- [John Gruber](https://daringfireball.net/projects/markdown/syntax#philosophy) This principle has guided pandoc's decisions in finding syntax for tables, footnotes, and other extensions. There is, however, one respect in which pandoc's aims are different from the original aims of Markdown. Whereas Markdown was originally designed with HTML generation in mind, pandoc is designed for multiple output formats. Thus, while pandoc allows the embedding of raw HTML, it discourages it, and provides other, non-HTMLish ways of representing important document elements like definition lists, tables, mathematics, and footnotes. ## Paragraphs A paragraph is one or more lines of text followed by one or more blank lines. Newlines are treated as spaces, so you can reflow your paragraphs as you like. If you need a hard line break, put two or more spaces at the end of a line. #### Extension: `escaped_line_breaks` #### A backslash followed by a newline is also a hard line break. Note: in multiline and grid table cells, this is the only way to create a hard line break, since trailing spaces in the cells are ignored. ## Headings There are two kinds of headings: Setext and ATX. ### Setext-style headings ### A setext-style heading is a line of text "underlined" with a row of `=` signs (for a level-one heading) or `-` signs (for a level-two heading): A level-one heading =================== A level-two heading ------------------- The heading text can contain inline formatting, such as emphasis (see [Inline formatting], below). ### ATX-style headings ### An ATX-style heading consists of one to six `#` signs and a line of text, optionally followed by any number of `#` signs. The number of `#` signs at the beginning of the line is the heading level: ## A level-two heading ### A level-three heading ### As with setext-style headings, the heading text can contain formatting: # A level-one heading with a [link](/url) and *emphasis* #### Extension: `blank_before_header` #### Original Markdown syntax does not require a blank line before a heading. Pandoc does require this (except, of course, at the beginning of the document). The reason for the requirement is that it is all too easy for a `#` to end up at the beginning of a line by accident (perhaps through line wrapping). Consider, for example: I like several of their flavors of ice cream: #22, for example, and #5. #### Extension: `space_in_atx_header` #### Many Markdown implementations do not require a space between the opening `#`s of an ATX heading and the heading text, so that `#5 bolt` and `#hashtag` count as headings. With this extension, pandoc does require the space. ### Heading identifiers ### See also the [`auto_identifiers` extension](#extension-auto_identifiers) above. #### Extension: `header_attributes` #### Headings can be assigned attributes using this syntax at the end of the line containing the heading text: {#identifier .class .class key=value key=value} Thus, for example, the following headings will all be assigned the identifier `foo`: # My heading {#foo} ## My heading ## {#foo} My other heading {#foo} --------------- (This syntax is compatible with [PHP Markdown Extra].) Note that although this syntax allows assignment of classes and key/value attributes, writers generally don't use all of this information. Identifiers, classes, and key/value attributes are used in HTML and HTML-based formats such as EPUB and slidy. Identifiers are used for labels and link anchors in the LaTeX, ConTeXt, Textile, Jira markup, and AsciiDoc writers. Headings with the class `unnumbered` will not be numbered, even if `--number-sections` is specified. A single hyphen (`-`) in an attribute context is equivalent to `.unnumbered`, and preferable in non-English documents. So, # My heading {-} is just the same as # My heading {.unnumbered} If the `unlisted` class is present in addition to `unnumbered`, the heading will not be included in a table of contents. (Currently this feature is only implemented for certain formats: those based on LaTeX and HTML, PowerPoint, and RTF.) #### Extension: `implicit_header_references` #### Pandoc behaves as if reference links have been defined for each heading. So, to link to a heading # Heading identifiers in HTML you can simply write [Heading identifiers in HTML] or [Heading identifiers in HTML][] or [the section on heading identifiers][heading identifiers in HTML] instead of giving the identifier explicitly: [Heading identifiers in HTML](#heading-identifiers-in-html) If there are multiple headings with identical text, the corresponding reference will link to the first one only, and you will need to use explicit links to link to the others, as described above. Like regular reference links, these references are case-insensitive. Explicit link reference definitions always take priority over implicit heading references. So, in the following example, the link will point to `bar`, not to `#foo`: # Foo [foo]: bar See [foo] ## Block quotations Markdown uses email conventions for quoting blocks of text. A block quotation is one or more paragraphs or other block elements (such as lists or headings), with each line preceded by a `>` character and an optional space. (The `>` need not start at the left margin, but it should not be indented more than three spaces.) > This is a block quote. This > paragraph has two lines. > > 1. This is a list inside a block quote. > 2. Second item. A "lazy" form, which requires the `>` character only on the first line of each block, is also allowed: > This is a block quote. This paragraph has two lines. > 1. This is a list inside a block quote. 2. Second item. Among the block elements that can be contained in a block quote are other block quotes. That is, block quotes can be nested: > This is a block quote. > > > A block quote within a block quote. If the `>` character is followed by an optional space, that space will be considered part of the block quote marker and not part of the indentation of the contents. Thus, to put an indented code block in a block quote, you need five spaces after the `>`: > code #### Extension: `blank_before_blockquote` #### Original Markdown syntax does not require a blank line before a block quote. Pandoc does require this (except, of course, at the beginning of the document). The reason for the requirement is that it is all too easy for a `>` to end up at the beginning of a line by accident (perhaps through line wrapping). So, unless the `markdown_strict` format is used, the following does not produce a nested block quote in pandoc: > This is a block quote. >> Not nested, since `blank_before_blockquote` is enabled by default ## Verbatim (code) blocks ### Indented code blocks ### A block of text indented four spaces (or one tab) is treated as verbatim text: that is, special characters do not trigger special formatting, and all spaces and line breaks are preserved. For example, if (a > 3) { moveShip(5 * gravity, DOWN); } The initial (four space or one tab) indentation is not considered part of the verbatim text, and is removed in the output. Note: blank lines in the verbatim text need not begin with four spaces. ### Fenced code blocks ### #### Extension: `fenced_code_blocks` #### In addition to standard indented code blocks, pandoc supports *fenced* code blocks. These begin with a row of three or more tildes (`~`) and end with a row of tildes that must be at least as long as the starting row. Everything between these lines is treated as code. No indentation is necessary: ~~~~~~~ if (a > 3) { moveShip(5 * gravity, DOWN); } ~~~~~~~ Like regular code blocks, fenced code blocks must be separated from surrounding text by blank lines. If the code itself contains a row of tildes or backticks, just use a longer row of tildes or backticks at the start and end: ~~~~~~~~~~~~~~~~ ~~~~~~~~~~ code including tildes ~~~~~~~~~~ ~~~~~~~~~~~~~~~~ #### Extension: `backtick_code_blocks` #### Same as `fenced_code_blocks`, but uses backticks (`` ` ``) instead of tildes (`~`). #### Extension: `fenced_code_attributes` #### Optionally, you may attach attributes to fenced or backtick code block using this syntax: ~~~~ {#mycode .haskell .numberLines startFrom="100"} qsort [] = [] qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Here `mycode` is an identifier, `haskell` and `numberLines` are classes, and `startFrom` is an attribute with value `100`. Some output formats can use this information to do syntax highlighting. Currently, the only output formats that use this information are HTML, LaTeX, Docx, Ms, and PowerPoint. If highlighting is supported for your output format and language, then the code block above will appear highlighted, with numbered lines. (To see which languages are supported, type `pandoc --list-highlight-languages`.) Otherwise, the code block above will appear as follows:
      
      ...
      
    
The `numberLines` (or `number-lines`) class will cause the lines of the code block to be numbered, starting with `1` or the value of the `startFrom` attribute. The `lineAnchors` (or `line-anchors`) class will cause the lines to be clickable anchors in HTML output. A shortcut form can also be used for specifying the language of the code block: ```haskell qsort [] = [] ``` This is equivalent to: ``` {.haskell} qsort [] = [] ``` This shortcut form may be combined with attributes: ```haskell {.numberLines} qsort [] = [] ``` Which is equivalent to: ``` {.haskell .numberLines} qsort [] = [] ``` If the `fenced_code_attributes` extension is disabled, but input contains class attribute(s) for the code block, the first class attribute will be printed after the opening fence as a bare word. To prevent all highlighting, use the `--no-highlight` flag. To set the highlighting style, use `--highlight-style`. For more information on highlighting, see [Syntax highlighting], below. ## Line blocks #### Extension: `line_blocks` #### A line block is a sequence of lines beginning with a vertical bar (`|`) followed by a space. The division into lines will be preserved in the output, as will any leading spaces; otherwise, the lines will be formatted as Markdown. This is useful for verse and addresses: | The limerick packs laughs anatomical | In space that is quite economical. | But the good ones I've seen | So seldom are clean | And the clean ones so seldom are comical | 200 Main St. | Berkeley, CA 94718 The lines can be hard-wrapped if needed, but the continuation line must begin with a space. | The Right Honorable Most Venerable and Righteous Samuel L. Constable, Jr. | 200 Main St. | Berkeley, CA 94718 Inline formatting (such as emphasis) is allowed in the content, but not block-level formatting (such as block quotes or lists). This syntax is borrowed from [reStructuredText]. ## Lists ### Bullet lists ### A bullet list is a list of bulleted list items. A bulleted list item begins with a bullet (`*`, `+`, or `-`). Here is a simple example: * one * two * three This will produce a "compact" list. If you want a "loose" list, in which each item is formatted as a paragraph, put spaces between the items: * one * two * three The bullets need not be flush with the left margin; they may be indented one, two, or three spaces. The bullet must be followed by whitespace. List items look best if subsequent lines are flush with the first line (after the bullet): * here is my first list item. * and my second. But Markdown also allows a "lazy" format: * here is my first list item. * and my second. ### Block content in list items ### A list item may contain multiple paragraphs and other block-level content. However, subsequent paragraphs must be preceded by a blank line and indented to line up with the first non-space content after the list marker. * First paragraph. Continued. * Second paragraph. With a code block, which must be indented eight spaces: { code } Exception: if the list marker is followed by an indented code block, which must begin 5 spaces after the list marker, then subsequent paragraphs must begin two columns after the last character of the list marker: * code continuation paragraph List items may include other lists. In this case the preceding blank line is optional. The nested list must be indented to line up with the first non-space character after the list marker of the containing list item. * fruits + apples - macintosh - red delicious + pears + peaches * vegetables + broccoli + chard As noted above, Markdown allows you to write list items "lazily," instead of indenting continuation lines. However, if there are multiple paragraphs or other blocks in a list item, the first line of each must be indented. + A lazy, lazy, list item. + Another one; this looks bad but is legal. Second paragraph of second list item. ### Ordered lists ### Ordered lists work just like bulleted lists, except that the items begin with enumerators rather than bullets. In original Markdown, enumerators are decimal numbers followed by a period and a space. The numbers themselves are ignored, so there is no difference between this list: 1. one 2. two 3. three and this one: 5. one 7. two 1. three #### Extension: `fancy_lists` #### Unlike original Markdown, pandoc allows ordered list items to be marked with uppercase and lowercase letters and roman numerals, in addition to Arabic numerals. List markers may be enclosed in parentheses or followed by a single right-parenthesis or period. They must be separated from the text that follows by at least one space, and, if the list marker is a capital letter with a period, by at least two spaces.[^2] [^2]: The point of this rule is to ensure that normal paragraphs starting with people's initials, like B. Russell was an English philosopher. do not get treated as list items. This rule will not prevent (C) 2007 Joe Smith from being interpreted as a list item. In this case, a backslash escape can be used: (C\) 2007 Joe Smith The `fancy_lists` extension also allows '`#`' to be used as an ordered list marker in place of a numeral: #. one #. two Note: the '`#`' ordered list marker doesn't work with `commonmark`. #### Extension: `startnum` #### Pandoc also pays attention to the type of list marker used, and to the starting number, and both of these are preserved where possible in the output format. Thus, the following yields a list with numbers followed by a single parenthesis, starting with 9, and a sublist with lowercase roman numerals: 9) Ninth 10) Tenth 11) Eleventh i. subone ii. subtwo iii. subthree Pandoc will start a new list each time a different type of list marker is used. So, the following will create three lists: (2) Two (5) Three 1. Four * Five If default list markers are desired, use `#.`: #. one #. two #. three #### Extension: `task_lists` #### Pandoc supports task lists, using the syntax of GitHub-Flavored Markdown. - [ ] an unchecked task list item - [x] checked item ### Definition lists ### #### Extension: `definition_lists` #### Pandoc supports definition lists, using the syntax of [PHP Markdown Extra] with some extensions.[^3] Term 1 : Definition 1 Term 2 with *inline markup* : Definition 2 { some code, part of Definition 2 } Third paragraph of definition 2. Each term must fit on one line, which may optionally be followed by a blank line, and must be followed by one or more definitions. A definition begins with a colon or tilde, which may be indented one or two spaces. A term may have multiple definitions, and each definition may consist of one or more block elements (paragraph, code block, list, etc.), each indented four spaces or one tab stop. The body of the definition (not including the first line) should be indented four spaces. However, as with other Markdown lists, you can "lazily" omit indentation except at the beginning of a paragraph or other block element: Term 1 : Definition with lazy continuation. Second paragraph of the definition. If you leave space before the definition (as in the example above), the text of the definition will be treated as a paragraph. In some output formats, this will mean greater spacing between term/definition pairs. For a more compact definition list, omit the space before the definition: Term 1 ~ Definition 1 Term 2 ~ Definition 2a ~ Definition 2b Note that space between items in a definition list is required. (A variant that loosens this requirement, but disallows "lazy" hard wrapping, can be activated with the [`compact_definition_lists` extension][Extension: `compact_definition_lists`].) [^3]: I have been influenced by the suggestions of [David Wheeler](https://justatheory.com/2009/02/modest-markdown-proposal/). ### Numbered example lists ### #### Extension: `example_lists` #### The special list marker `@` can be used for sequentially numbered examples. The first list item with a `@` marker will be numbered '1', the next '2', and so on, throughout the document. The numbered examples need not occur in a single list; each new list using `@` will take up where the last stopped. So, for example: (@) My first example will be numbered (1). (@) My second example will be numbered (2). Explanation of examples. (@) My third example will be numbered (3). Numbered examples can be labeled and referred to elsewhere in the document: (@good) This is a good example. As (@good) illustrates, ... The label can be any string of alphanumeric characters, underscores, or hyphens. Note: continuation paragraphs in example lists must always be indented four spaces, regardless of the length of the list marker. That is, example lists always behave as if the `four_space_rule` extension is set. This is because example labels tend to be long, and indenting content to the first non-space character after the label would be awkward. ### Ending a list ### What if you want to put an indented code block after a list? - item one - item two { my code block } Trouble! Here pandoc (like other Markdown implementations) will treat `{ my code block }` as the second paragraph of item two, and not as a code block. To "cut off" the list after item two, you can insert some non-indented content, like an HTML comment, which won't produce visible output in any format: - item one - item two { my code block } You can use the same trick if you want two consecutive lists instead of one big list: 1. one 2. two 3. three 1. uno 2. dos 3. tres ## Horizontal rules A line containing a row of three or more `*`, `-`, or `_` characters (optionally separated by spaces) produces a horizontal rule: * * * * --------------- We strongly recommend that horizontal rules be separated from surrounding text by blank lines. If a horizontal rule is not followed by a blank line, pandoc may try to interpret the lines that follow as a YAML metadata block or a table. ## Tables Four kinds of tables may be used. The first three kinds presuppose the use of a fixed-width font, such as Courier. The fourth kind can be used with proportionally spaced fonts, as it does not require lining up columns. #### Extension: `table_captions` #### A caption may optionally be provided with all 4 kinds of tables (as illustrated in the examples below). A caption is a paragraph beginning with the string `Table:` (or `table:` or just `:`), which will be stripped off. It may appear either before or after the table. #### Extension: `simple_tables` #### Simple tables look like this: Right Left Center Default ------- ------ ---------- ------- 12 12 12 12 123 123 123 123 1 1 1 1 Table: Demonstration of simple table syntax. The header and table rows must each fit on one line. Column alignments are determined by the position of the header text relative to the dashed line below it:[^4] - If the dashed line is flush with the header text on the right side but extends beyond it on the left, the column is right-aligned. - If the dashed line is flush with the header text on the left side but extends beyond it on the right, the column is left-aligned. - If the dashed line extends beyond the header text on both sides, the column is centered. - If the dashed line is flush with the header text on both sides, the default alignment is used (in most cases, this will be left). [^4]: This scheme is due to Michel Fortin, who proposed it on the [Markdown discussion list](http://six.pairlist.net/pipermail/markdown-discuss/2005-March/001097.html). The table must end with a blank line, or a line of dashes followed by a blank line. The column header row may be omitted, provided a dashed line is used to end the table. For example: ------- ------ ---------- ------- 12 12 12 12 123 123 123 123 1 1 1 1 ------- ------ ---------- ------- When the header row is omitted, column alignments are determined on the basis of the first line of the table body. So, in the tables above, the columns would be right, left, center, and right aligned, respectively. #### Extension: `multiline_tables` #### Multiline tables allow header and table rows to span multiple lines of text (but cells that span multiple columns or rows of the table are not supported). Here is an example: ------------------------------------------------------------- Centered Default Right Left Header Aligned Aligned Aligned ----------- ------- --------------- ------------------------- First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here's another one. Note the blank line between rows. ------------------------------------------------------------- Table: Here's the caption. It, too, may span multiple lines. These work like simple tables, but with the following differences: - They must begin with a row of dashes, before the header text (unless the header row is omitted). - They must end with a row of dashes, then a blank line. - The rows must be separated by blank lines. In multiline tables, the table parser pays attention to the widths of the columns, and the writers try to reproduce these relative widths in the output. So, if you find that one of the columns is too narrow in the output, try widening it in the Markdown source. The header may be omitted in multiline tables as well as simple tables: ----------- ------- --------------- ------------------------- First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here's another one. Note the blank line between rows. ----------- ------- --------------- ------------------------- : Here's a multiline table without a header. It is possible for a multiline table to have just one row, but the row should be followed by a blank line (and then the row of dashes that ends the table), or the table may be interpreted as a simple table. #### Extension: `grid_tables` #### Grid tables look like this: : Sample grid table. +---------------+---------------+--------------------+ | Fruit | Price | Advantages | +===============+===============+====================+ | Bananas | $1.34 | - built-in wrapper | | | | - bright color | +---------------+---------------+--------------------+ | Oranges | $2.10 | - cures scurvy | | | | - tasty | +---------------+---------------+--------------------+ The row of `=`s separates the header from the table body, and can be omitted for a headerless table. The cells of grid tables may contain arbitrary block elements (multiple paragraphs, code blocks, lists, etc.). Cells can span multiple columns or rows: +---------------------+----------+ | Property | Earth | +=============+=======+==========+ | | min | -89.2 °C | | Temperature +-------+----------+ | 1961-1990 | mean | 14 °C | | +-------+----------+ | | max | 56.7 °C | +-------------+-------+----------+ A table header may contain more than one row: +---------------------+-----------------------+ | Location | Temperature 1961-1990 | | | in degree Celsius | | +-------+-------+-------+ | | min | mean | max | +=====================+=======+=======+=======+ | Antarctica | -89.2 | N/A | 19.8 | +---------------------+-------+-------+-------+ | Earth | -89.2 | 14 | 56.7 | +---------------------+-------+-------+-------+ Alignments can be specified as with pipe tables, by putting colons at the boundaries of the separator line after the header: +---------------+---------------+--------------------+ | Right | Left | Centered | +==============:+:==============+:==================:+ | Bananas | $1.34 | built-in wrapper | +---------------+---------------+--------------------+ For headerless tables, the colons go on the top line instead: +--------------:+:--------------+:------------------:+ | Right | Left | Centered | +---------------+---------------+--------------------+ A table foot can be defined by enclosing it with separator lines that use `=` instead of `-`: +---------------+---------------+ | Fruit | Price | +===============+===============+ | Bananas | $1.34 | +---------------+---------------+ | Oranges | $2.10 | +===============+===============+ | Sum | $3.44 | +===============+===============+ The foot must always be placed at the very bottom of the table. Grid tables can be created easily using Emacs' table-mode (`M-x table-insert`). #### Extension: `pipe_tables` #### Pipe tables look like this: | Right | Left | Default | Center | |------:|:-----|---------|:------:| | 12 | 12 | 12 | 12 | | 123 | 123 | 123 | 123 | | 1 | 1 | 1 | 1 | : Demonstration of pipe table syntax. The syntax is identical to [PHP Markdown Extra tables]. The beginning and ending pipe characters are optional, but pipes are required between all columns. The colons indicate column alignment as shown. The header cannot be omitted. To simulate a headerless table, include a header with blank cells. Since the pipes indicate column boundaries, columns need not be vertically aligned, as they are in the above example. So, this is a perfectly legal (though ugly) pipe table: fruit| price -----|-----: apple|2.05 pear|1.37 orange|3.09 The cells of pipe tables cannot contain block elements like paragraphs and lists, and cannot span multiple lines. If any line of the markdown source is longer than the column width (see `--columns`), then the table will take up the full text width and the cell contents will wrap, with the relative cell widths determined by the number of dashes in the line separating the table header from the table body. (For example `---|-` would make the first column 3/4 and the second column 1/4 of the full text width.) On the other hand, if no lines are wider than column width, then cell contents will not be wrapped, and the cells will be sized to their contents. Note: pandoc also recognizes pipe tables of the following form, as can be produced by Emacs' orgtbl-mode: | One | Two | |-----+-------| | my | table | | is | nice | The difference is that `+` is used instead of `|`. Other orgtbl features are not supported. In particular, to get non-default column alignment, you'll need to add colons as above. [PHP Markdown Extra tables]: https://michelf.ca/projects/php-markdown/extra/#table ## Metadata blocks #### Extension: `pandoc_title_block` #### If the file begins with a title block % title % author(s) (separated by semicolons) % date it will be parsed as bibliographic information, not regular text. (It will be used, for example, in the title of standalone LaTeX or HTML output.) The block may contain just a title, a title and an author, or all three elements. If you want to include an author but no title, or a title and a date but no author, you need a blank line: ``` % % Author ``` ``` % My title % % June 15, 2006 ``` The title may occupy multiple lines, but continuation lines must begin with leading space, thus: ``` % My title on multiple lines ``` If a document has multiple authors, the authors may be put on separate lines with leading space, or separated by semicolons, or both. So, all of the following are equivalent: ``` % Author One Author Two ``` ``` % Author One; Author Two ``` ``` % Author One; Author Two ``` The date must fit on one line. All three metadata fields may contain standard inline formatting (italics, links, footnotes, etc.). Title blocks will always be parsed, but they will affect the output only when the `--standalone` (`-s`) option is chosen. In HTML output, titles will appear twice: once in the document head -- this is the title that will appear at the top of the window in a browser -- and once at the beginning of the document body. The title in the document head can have an optional prefix attached (`--title-prefix` or `-T` option). The title in the body appears as an H1 element with class "title", so it can be suppressed or reformatted with CSS. If a title prefix is specified with `-T` and no title block appears in the document, the title prefix will be used by itself as the HTML title. The man page writer extracts a title, man page section number, and other header and footer information from the title line. The title is assumed to be the first word on the title line, which may optionally end with a (single-digit) section number in parentheses. (There should be no space between the title and the parentheses.) Anything after this is assumed to be additional footer and header text. A single pipe character (`|`) should be used to separate the footer text from the header text. Thus, % PANDOC(1) will yield a man page with the title `PANDOC` and section 1. % PANDOC(1) Pandoc User Manuals will also have "Pandoc User Manuals" in the footer. % PANDOC(1) Pandoc User Manuals | Version 4.0 will also have "Version 4.0" in the header. #### Extension: `yaml_metadata_block` #### A [YAML] metadata block is a valid YAML object, delimited by a line of three hyphens (`---`) at the top and a line of three hyphens (`---`) or three dots (`...`) at the bottom. The initial line `---` must not be followed by a blank line. A YAML metadata block may occur anywhere in the document, but if it is not at the beginning, it must be preceded by a blank line. Note that, because of the way pandoc concatenates input files when several are provided, you may also keep the metadata in a separate YAML file and pass it to pandoc as an argument, along with your Markdown files: pandoc chap1.md chap2.md chap3.md metadata.yaml -s -o book.html Just be sure that the YAML file begins with `---` and ends with `---` or `...`. Alternatively, you can use the `--metadata-file` option. Using that approach however, you cannot reference content (like footnotes) from the main markdown input document. Metadata will be taken from the fields of the YAML object and added to any existing document metadata. Metadata can contain lists and objects (nested arbitrarily), but all string scalars will be interpreted as Markdown. Fields with names ending in an underscore will be ignored by pandoc. (They may be given a role by external processors.) Field names must not be interpretable as YAML numbers or boolean values (so, for example, `yes`, `True`, and `15` cannot be used as field names). A document may contain multiple metadata blocks. If two metadata blocks attempt to set the same field, the value from the second block will be taken. Each metadata block is handled internally as an independent YAML document. This means, for example, that any YAML anchors defined in a block cannot be referenced in another block. When pandoc is used with `-t markdown` to create a Markdown document, a YAML metadata block will be produced only if the `-s/--standalone` option is used. All of the metadata will appear in a single block at the beginning of the document. Note that [YAML] escaping rules must be followed. Thus, for example, if a title contains a colon, it must be quoted, and if it contains a backslash escape, then it must be ensured that it is not treated as a [YAML escape sequence]. The pipe character (`|`) can be used to begin an indented block that will be interpreted literally, without need for escaping. This form is necessary when the field contains blank lines or block-level formatting: --- title: 'This is the title: it contains a colon' author: - Author One - Author Two keywords: [nothing, nothingness] abstract: | This is the abstract. It consists of two paragraphs. ... The literal block after the `|` must be indented relative to the line containing the `|`. If it is not, the YAML will be invalid and pandoc will not interpret it as metadata. For an overview of the complex rules governing YAML, see the [Wikipedia entry on YAML syntax]. Template variables will be set automatically from the metadata. Thus, for example, in writing HTML, the variable `abstract` will be set to the HTML equivalent of the Markdown in the `abstract` field:

This is the abstract.

It consists of two paragraphs.

Variables can contain arbitrary YAML structures, but the template must match this structure. The `author` variable in the default templates expects a simple list or string, but can be changed to support more complicated structures. The following combination, for example, would add an affiliation to the author if one is given: --- title: The document title author: - name: Author One affiliation: University of Somewhere - name: Author Two affiliation: University of Nowhere ... To use the structured authors in the example above, you would need a custom template: $for(author)$ $if(author.name)$ $author.name$$if(author.affiliation)$ ($author.affiliation$)$endif$ $else$ $author$ $endif$ $endfor$ Raw content to include in the document's header may be specified using `header-includes`; however, it is important to mark up this content as raw code for a particular output format, using the [`raw_attribute` extension](#extension-raw_attribute), or it will be interpreted as markdown. For example: header-includes: - | ```{=latex} \let\oldsection\section \renewcommand{\section}[1]{\clearpage\oldsection{#1}} ``` Note: the `yaml_metadata_block` extension works with `commonmark` as well as `markdown` (and it is enabled by default in `gfm` and `commonmark_x`). However, in these formats the following restrictions apply: - The YAML metadata block must occur at the beginning of the document (and there can be only one). If multiple files are given as arguments to pandoc, only the first can be a YAML metadata block. - The leaf nodes of the YAML structure are parsed in isolation from each other and from the rest of the document. So, for example, you can't use a reference link in these contexts if the link definition is somewhere else in the document. [YAML escape sequence]: https://yaml.org/spec/1.2/spec.html#id2776092 [Wikipedia entry on YAML syntax]: https://en.wikipedia.org/wiki/YAML#Syntax ## Backslash escapes #### Extension: `all_symbols_escapable` #### Except inside a code block or inline code, any punctuation or space character preceded by a backslash will be treated literally, even if it would normally indicate formatting. Thus, for example, if one writes *\*hello\** one will get *hello* instead of hello This rule is easier to remember than original Markdown's rule, which allows only the following characters to be backslash-escaped: \`*_{}[]()>#+-.! (However, if the `markdown_strict` format is used, the original Markdown rule will be used.) A backslash-escaped space is parsed as a nonbreaking space. In TeX output, it will appear as `~`. In HTML and XML output, it will appear as a literal unicode nonbreaking space character (note that it will thus actually look "invisible" in the generated HTML source; you can still use the `--ascii` command-line option to make it appear as an explicit entity). A backslash-escaped newline (i.e. a backslash occurring at the end of a line) is parsed as a hard line break. It will appear in TeX output as `\\` and in HTML as `
`. This is a nice alternative to Markdown's "invisible" way of indicating hard line breaks using two trailing spaces on a line. Backslash escapes do not work in verbatim contexts. ## Inline formatting ### Emphasis ### To *emphasize* some text, surround it with `*`s or `_`, like this: This text is _emphasized with underscores_, and this is *emphasized with asterisks*. Double `*` or `_` produces **strong emphasis**: This is **strong emphasis** and __with underscores__. A `*` or `_` character surrounded by spaces, or backslash-escaped, will not trigger emphasis: This is * not emphasized *, and \*neither is this\*. #### Extension: `intraword_underscores` #### Because `_` is sometimes used inside words and identifiers, pandoc does not interpret a `_` surrounded by alphanumeric characters as an emphasis marker. If you want to emphasize just part of a word, use `*`: feas*ible*, not feas*able*. ### Strikeout ### #### Extension: `strikeout` #### To strike out a section of text with a horizontal line, begin and end it with `~~`. Thus, for example, This ~~is deleted text.~~ ### Superscripts and subscripts ### #### Extension: `superscript`, `subscript` #### Superscripts may be written by surrounding the superscripted text by `^` characters; subscripts may be written by surrounding the subscripted text by `~` characters. Thus, for example, H~2~O is a liquid. 2^10^ is 1024. The text between `^...^` or `~...~` may not contain spaces or newlines. If the superscripted or subscripted text contains spaces, these spaces must be escaped with backslashes. (This is to prevent accidental superscripting and subscripting through the ordinary use of `~` and `^`, and also bad interactions with footnotes.) Thus, if you want the letter P with 'a cat' in subscripts, use `P~a\ cat~`, not `P~a cat~`. ### Verbatim ### To make a short span of text verbatim, put it inside backticks: What is the difference between `>>=` and `>>`? If the verbatim text includes a backtick, use double backticks: Here is a literal backtick `` ` ``. (The spaces after the opening backticks and before the closing backticks will be ignored.) The general rule is that a verbatim span starts with a string of consecutive backticks (optionally followed by a space) and ends with a string of the same number of backticks (optionally preceded by a space). Note that backslash-escapes (and other Markdown constructs) do not work in verbatim contexts: This is a backslash followed by an asterisk: `\*`. #### Extension: `inline_code_attributes` #### Attributes can be attached to verbatim text, just as with [fenced code blocks]: `<$>`{.haskell} ### Underline ### To underline text, use the `underline` class: [Underline]{.underline} Or, without the `bracketed_spans` extension (but with `native_spans`): Underline This will work in all output formats that support underline. ### Small caps ### To write small caps, use the `smallcaps` class: [Small caps]{.smallcaps} Or, without the `bracketed_spans` extension: Small caps For compatibility with other Markdown flavors, CSS is also supported: Small caps This will work in all output formats that support small caps. ### Highlighting ### To highlight text, use the `mark` class: [Mark]{.mark} Or, without the `bracketed_spans` extension (but with `native_spans`): Mark This will work in all output formats that support highlighting. ## Math #### Extension: `tex_math_dollars` #### Anything between two `$` characters will be treated as TeX math. The opening `$` must have a non-space character immediately to its right, while the closing `$` must have a non-space character immediately to its left, and must not be followed immediately by a digit. Thus, `$20,000 and $30,000` won't parse as math. If for some reason you need to enclose text in literal `$` characters, backslash-escape them and they won't be treated as math delimiters. For display math, use `$$` delimiters. (In this case, the delimiters may be separated from the formula by whitespace. However, there can be no blank lines between the opening and closing `$$` delimiters.) TeX math will be printed in all output formats. How it is rendered depends on the output format: LaTeX ~ It will appear verbatim surrounded by `\(...\)` (for inline math) or `\[...\]` (for display math). Markdown, Emacs Org mode, ConTeXt, ZimWiki ~ It will appear verbatim surrounded by `$...$` (for inline math) or `$$...$$` (for display math). XWiki ~ It will appear verbatim surrounded by `{{formula}}..{{/formula}}`. reStructuredText ~ It will be rendered using an [interpreted text role `:math:`]. AsciiDoc ~ For AsciiDoc output format (`-t asciidoc`) it will appear verbatim surrounded by `latexmath:[$...$]` (for inline math) or `[latexmath]++++\[...\]+++` (for display math). For AsciiDoctor output format (`-t asciidoctor`) the LaTeX delimiters (`$..$` and `\[..\]`) are omitted. Texinfo ~ It will be rendered inside a `@math` command. roff man, Jira markup ~ It will be rendered verbatim without `$`'s. MediaWiki, DokuWiki ~ It will be rendered inside `` tags. Textile ~ It will be rendered inside `` tags. RTF, OpenDocument ~ It will be rendered, if possible, using Unicode characters, and will otherwise appear verbatim. ODT ~ It will be rendered, if possible, using MathML. DocBook ~ If the `--mathml` flag is used, it will be rendered using MathML in an `inlineequation` or `informalequation` tag. Otherwise it will be rendered, if possible, using Unicode characters. Docx and PowerPoint ~ It will be rendered using OMML math markup. FictionBook2 ~ If the `--webtex` option is used, formulas are rendered as images using CodeCogs or other compatible web service, downloaded and embedded in the e-book. Otherwise, they will appear verbatim. HTML, Slidy, DZSlides, S5, EPUB ~ The way math is rendered in HTML will depend on the command-line options selected. Therefore see [Math rendering in HTML] above. [interpreted text role `:math:`]: https://docutils.sourceforge.io/docs/ref/rst/roles.html#math ## Raw HTML #### Extension: `raw_html` #### Markdown allows you to insert raw HTML (or DocBook) anywhere in a document (except verbatim contexts, where `<`, `>`, and `&` are interpreted literally). (Technically this is not an extension, since standard Markdown allows it, but it has been made an extension so that it can be disabled if desired.) The raw HTML is passed through unchanged in HTML, S5, Slidy, Slideous, DZSlides, EPUB, Markdown, CommonMark, Emacs Org mode, and Textile output, and suppressed in other formats. For a more explicit way of including raw HTML in a Markdown document, see the [`raw_attribute` extension][Extension: `raw_attribute`]. In the CommonMark format, if `raw_html` is enabled, superscripts, subscripts, strikeouts and small capitals will be represented as HTML. Otherwise, plain-text fallbacks will be used. Note that even if `raw_html` is disabled, tables will be rendered with HTML syntax if they cannot use pipe syntax. #### Extension: `markdown_in_html_blocks` #### Original Markdown allows you to include HTML "blocks": blocks of HTML between balanced tags that are separated from the surrounding text with blank lines, and start and end at the left margin. Within these blocks, everything is interpreted as HTML, not Markdown; so (for example), `*` does not signify emphasis. Pandoc behaves this way when the `markdown_strict` format is used; but by default, pandoc interprets material between HTML block tags as Markdown. Thus, for example, pandoc will turn
*one* [a link](https://google.com)
into
one a link
whereas `Markdown.pl` will preserve it as is. There is one exception to this rule: text between ` HTML """) ``` ## Image This image ![image](myimage.png) will be included as a cell attachment. ```` If you want to add cell attributes, group cells differently, or add output to code cells, then you need to include divs to indicate the structure. You can use either [fenced divs][Extension: `fenced_divs`] or [native divs][Extension: `native_divs`] for this. Here is an example: ```` :::::: {.cell .markdown} # Lorem **Lorem ipsum** dolor sit amet, consectetur adipiscing elit. Nunc luctus bibendum felis dictum sodales. :::::: :::::: {.cell .code execution_count=1} ``` {.python} print("hello") ``` ::: {.output .stream .stdout} ``` hello ``` ::: :::::: :::::: {.cell .code execution_count=2} ``` {.python} from IPython.display import HTML HTML(""" HTML """) ``` ::: {.output .execute_result execution_count=2} ```{=html} HTML hello ``` ::: :::::: ```` If you include raw HTML or TeX in an output cell, use the [raw attribute](#extension-raw_attribute), as shown in the last cell of the example above. Although pandoc can process "bare" raw HTML and TeX, the result is often interspersed raw elements and normal textual elements, and in an output cell pandoc expects a single, connected raw block. To avoid using raw HTML or TeX except when marked explicitly using raw attributes, we recommend specifying the extensions `-raw_html-raw_tex+raw_attribute` when translating between Markdown and ipynb notebooks. Note that options and extensions that affect reading and writing of Markdown will also affect Markdown cells in ipynb notebooks. For example, `--wrap=preserve` will preserve soft line breaks in Markdown cells; `--markdown-headings=setext` will cause Setext-style headings to be used; and `--preserve-tabs` will prevent tabs from being turned to spaces. # Syntax highlighting Pandoc will automatically highlight syntax in [fenced code blocks] that are marked with a language name. The Haskell library [skylighting] is used for highlighting. Currently highlighting is supported only for HTML, EPUB, Docx, Ms, and LaTeX/PDF output. To see a list of language names that pandoc will recognize, type `pandoc --list-highlight-languages`. The color scheme can be selected using the `--highlight-style` option. The default color scheme is `pygments`, which imitates the default color scheme used by the Python library pygments (though pygments is not actually used to do the highlighting). To see a list of highlight styles, type `pandoc --list-highlight-styles`. If you are not satisfied with the predefined styles, you can use `--print-highlight-style` to generate a JSON `.theme` file which can be modified and used as the argument to `--highlight-style`. To get a JSON version of the `pygments` style, for example: pandoc --print-highlight-style pygments > my.theme Then edit `my.theme` and use it like this: pandoc --highlight-style my.theme If you are not satisfied with the built-in highlighting, or you want to highlight a language that isn't supported, you can use the `--syntax-definition` option to load a [KDE-style XML syntax definition file](https://docs.kde.org/stable5/en/kate/katepart/highlight.html). Before writing your own, have a look at KDE's [repository of syntax definitions](https://github.com/KDE/syntax-highlighting/tree/master/data/syntax). To disable highlighting, use the `--no-highlight` option. [skylighting]: https://github.com/jgm/skylighting # Custom Styles Custom styles can be used in the docx and ICML formats. ## Output By default, pandoc's docx and ICML output applies a predefined set of styles for blocks such as paragraphs and block quotes, and uses largely default formatting (italics, bold) for inlines. This will work for most purposes, especially alongside a `reference.docx` file. However, if you need to apply your own styles to blocks, or match a preexisting set of styles, pandoc allows you to define custom styles for blocks and text using `div`s and `span`s, respectively. If you define a `div` or `span` with the attribute `custom-style`, pandoc will apply your specified style to the contained elements (with the exception of elements whose function depends on a style, like headings, code blocks, block quotes, or links). So, for example, using the `bracketed_spans` syntax, [Get out]{custom-style="Emphatically"}, he said. would produce a docx file with "Get out" styled with character style `Emphatically`. Similarly, using the `fenced_divs` syntax, Dickinson starts the poem simply: ::: {custom-style="Poetry"} | A Bird came down the Walk--- | He did not know I saw--- ::: would style the two contained lines with the `Poetry` paragraph style. For docx output, styles will be defined in the output file as inheriting from normal text, if the styles are not yet in your reference.docx. If they are already defined, pandoc will not alter the definition. This feature allows for greatest customization in conjunction with [pandoc filters]. If you want all paragraphs after block quotes to be indented, you can write a filter to apply the styles necessary. If you want all italics to be transformed to the `Emphasis` character style (perhaps to change their color), you can write a filter which will transform all italicized inlines to inlines within an `Emphasis` custom-style `span`. For docx output, you don't need to enable any extensions for custom styles to work. [pandoc filters]: https://pandoc.org/filters.html ## Input The docx reader, by default, only reads those styles that it can convert into pandoc elements, either by direct conversion or interpreting the derivation of the input document's styles. By enabling the [`styles` extension](#ext-styles) in the docx reader (`-f docx+styles`), you can produce output that maintains the styles of the input document, using the `custom-style` class. Paragraph styles are interpreted as divs, while character styles are interpreted as spans. For example, using the `custom-style-reference.docx` file in the test directory, we have the following different outputs: Without the `+styles` extension: $ pandoc test/docx/custom-style-reference.docx -f docx -t markdown This is some text. This is text with an *emphasized* text style. And this is text with a **strengthened** text style. > Here is a styled paragraph that inherits from Block Text. And with the extension: $ pandoc test/docx/custom-style-reference.docx -f docx+styles -t markdown ::: {custom-style="First Paragraph"} This is some text. ::: ::: {custom-style="Body Text"} This is text with an [emphasized]{custom-style="Emphatic"} text style. And this is text with a [strengthened]{custom-style="Strengthened"} text style. ::: ::: {custom-style="My Block Style"} > Here is a styled paragraph that inherits from Block Text. ::: With these custom styles, you can use your input document as a reference-doc while creating docx output (see below), and maintain the same styles in your input and output files. # Custom readers and writers Pandoc can be extended with custom readers and writers written in [Lua]. (Pandoc includes a Lua interpreter, so Lua need not be installed separately.) To use a custom reader or writer, simply specify the path to the Lua script in place of the input or output format. For example: pandoc -t data/sample.lua pandoc -f my_custom_markup_language.lua -t latex -s If the script is not found relative to the working directory, it will be sought in the `custom` subdirectory of the user data directory (see `--data-dir`). A custom reader is a Lua script that defines one function, Reader, which takes a string as input and returns a Pandoc AST. See the [Lua filters documentation] for documentation of the functions that are available for creating pandoc AST elements. For parsing, the [lpeg] parsing library is available by default. To see a sample custom reader: pandoc --print-default-data-file creole.lua If you want your custom reader to have access to reader options (e.g. the tab stop setting), you give your Reader function a second `options` parameter. A custom writer is a Lua script that defines a function that specifies how to render each element in a Pandoc AST. See the [djot-writer.lua] for a full-featured example. Note that custom writers have no default template. If you want to use `--standalone` with a custom writer, you will need to specify a template manually using `--template` or add a new default template with the name `default.NAME_OF_CUSTOM_WRITER.lua` to the `templates` subdirectory of your user data directory (see [Templates]). [Lua]: https://www.lua.org [lpeg]: http://www.inf.puc-rio.br/~roberto/lpeg/ [djot-writer.lua]: https://github.com/jgm/djot.lua/blob/main/djot-writer.lua # Reproducible builds Some of the document formats pandoc targets (such as EPUB, docx, and ODT) include build timestamps in the generated document. That means that the files generated on successive builds will differ, even if the source does not. To avoid this, set the `SOURCE_DATE_EPOCH` environment variable, and the timestamp will be taken from it instead of the current time. `SOURCE_DATE_EPOCH` should contain an integer unix timestamp (specifying the number of seconds since midnight UTC January 1, 1970). Some document formats also include a unique identifier. For EPUB, this can be set explicitly by setting the `identifier` metadata field (see [EPUB Metadata], above). # Accessible PDFs and PDF archiving standards PDF is a flexible format, and using PDF in certain contexts requires additional conventions. For example, PDFs are not accessible by default; they define how characters are placed on a page but do not contain semantic information on the content. However, it is possible to generate accessible PDFs, which use tagging to add semantic information to the document. Pandoc defaults to LaTeX to generate PDF. Tagging support in LaTeX is in development and not readily available, so PDFs generated in this way will always be untagged and not accessible. This means that alternative engines must be used to generate accessible PDFs. The PDF standards PDF/A and PDF/UA define further restrictions intended to optimize PDFs for archiving and accessibility. Tagging is commonly used in combination with these standards to ensure best results. Note, however, that standard compliance depends on many things, including the colorspace of embedded images. Pandoc cannot check this, and external programs must be used to ensure that generated PDFs are in compliance. ## ConTeXt ConTeXt always produces tagged PDFs, but the quality depends on the input. The default ConTeXt markup generated by pandoc is optimized for readability and reuse, not tagging. Enable the [`tagging`](#extension--tagging) format extension to force markup that is optimized for tagging. This can be combined with the `pdfa` variable to generate standard-compliant PDFs. E.g.: pandoc --to=context+tagging -V pdfa=3a A recent `context` version should be used, as older versions contained a bug that lead to invalid PDF metadata. ## WeasyPrint The HTML-based engine WeasyPrint includes experimental support for PDF/A and PDF/UA since version 57. Tagged PDFs can created with pandoc --pdf-engine=weasyprint \ --pdf-engine-opt=--pdf-variant=pdf/ua-1 ... The feature is experimental and standard compliance should not be assumed. ## Prince XML The non-free HTML-to-PDf converter `prince` has extensive support for various PDF standards as well as tagging. E.g.: pandoc --pdf-engine=prince \ --pdf-engine-opt=--tagged-pdf ... See the prince documentation for more info. ## Word Processors Word processors like LibreOffice and MS Word can also be used to generate standardized and tagged PDF output. Pandoc does not support direct conversions via these tools. However, pandoc can convert a document to a `docx` or `odt` file, which can then be opened and converted to PDF with the respective word processor. See the documentation for [Word][word-accessible-pdfs] and [LibreOffice][lo-pdf-export]. [word-accessible-pdfs]: https://support.microsoft.com/en-us/office/create-accessible-pdfs-064625e0-56ea-4e16-ad71-3aa33bb4b7ed [lo-pdf-export]: https://help.libreoffice.org/7.1/en-US/text/shared/01/ref_pdf_export_general.html # Running pandoc as a web server If you rename (or symlink) the pandoc executable to `pandoc-server`, or if you call pandoc with `server` as the first argument, it will start up a web server with a JSON API. This server exposes most of the conversion functionality of pandoc. For full documentation, see the [pandoc-server] man page. If you rename (or symlink) the pandoc executable to `pandoc-server.cgi`, it will function as a CGI program exposing the same API as `pandoc-server`. `pandoc-server` is designed to be maximally secure; it uses Haskell's type system to provide strong guarantees that no I/O will be performed on the server during pandoc conversions. [pandoc-server]: https://github.com/jgm/pandoc/blob/master/doc/pandoc-server.md # Running pandoc as a Lua interpreter Calling the pandoc executable under the name `pandoc-lua` or with `lua` as the first argument will make it function as a standalone Lua interpreter. The behavior is mostly identical to that of the [standalone `lua` executable][lua standalone], version 5.4. However, there is no REPL yet, and the `-i` option has no effect. For full documentation, see the [pandoc-lua] man page. [lua standalone]: https://www.lua.org/manual/5.4/manual.html#7 [pandoc-lua]: https://github.com/jgm/pandoc/blob/master/doc/pandoc-lua.md # A note on security 1. Although pandoc itself will not create or modify any files other than those you explicitly ask it create (with the exception of temporary files used in producing PDFs), a filter or custom writer could in principle do anything on your file system. Please audit filters and custom writers very carefully before using them. 2. Several input formats (including HTML, Org, and RST) support `include` directives that allow the contents of a file to be included in the output. An untrusted attacker could use these to view the contents of files on the file system. (Using the `--sandbox` option can protect against this threat.) 3. Several output formats (including RTF, FB2, HTML with `--self-contained`, EPUB, Docx, and ODT) will embed encoded or raw images into the output file. An untrusted attacker could exploit this to view the contents of non-image files on the file system. (Using the `--sandbox` option can protect against this threat, but will also prevent including images in these formats.) 4. If your application uses pandoc as a Haskell library (rather than shelling out to the executable), it is possible to use it in a mode that fully isolates pandoc from your file system, by running the pandoc operations in the `PandocPure` monad. See the document [Using the pandoc API](https://pandoc.org/using-the-pandoc-api.html) for more details. (This corresponds to the use of the `--sandbox` option on the command line.) 5. Pandoc's parsers can exhibit pathological performance on some corner cases. It is wise to put any pandoc operations under a timeout, to avoid DOS attacks that exploit these issues. If you are using the pandoc executable, you can add the command line options `+RTS -M512M -RTS` (for example) to limit the heap size to 512MB. Note that the `commonmark` parser (including `commonmark_x` and `gfm`) is much less vulnerable to pathological performance than the `markdown` parser, so it is a better choice when processing untrusted input. 6. The HTML generated by pandoc is not guaranteed to be safe. If `raw_html` is enabled for the Markdown input, users can inject arbitrary HTML. Even if `raw_html` is disabled, users can include dangerous content in URLs and attributes. To be safe, you should run all HTML generated from untrusted user input through an HTML sanitizer. # Authors Copyright 2006--2022 John MacFarlane (jgm@berkeley.edu). Released under the [GPL], version 2 or greater. This software carries no warranty of any kind. (See COPYRIGHT for full copyright and warranty notices.) For a full list of contributors, see the file AUTHORS.md in the pandoc source code. [GPL]: https://www.gnu.org/copyleft/gpl.html "GNU General Public License" [YAML]: https://yaml.org/spec/1.2/spec.html "YAML v1.2 Spec" pandoc-3.1.3/README.md0000644000000000000000000002712507346545000012441 0ustar0000000000000000 # Pandoc [![github release](https://img.shields.io/github/release/jgm/pandoc.svg?label=current+release)](https://github.com/jgm/pandoc/releases) [![hackage release](https://img.shields.io/hackage/v/pandoc.svg?label=hackage)](https://hackage.haskell.org/package/pandoc) [![homebrew](https://img.shields.io/homebrew/v/pandoc.svg)](https://formulae.brew.sh/formula/pandoc) [![stackage LTS package](https://stackage.org/package/pandoc/badge/lts)](https://www.stackage.org/lts/package/pandoc) [![CI tests](https://github.com/jgm/pandoc/workflows/CI%20tests/badge.svg)](https://github.com/jgm/pandoc/actions) [![license](https://img.shields.io/badge/license-GPLv2+-lightgray.svg)](https://www.gnu.org/licenses/gpl.html) [![pandoc-discuss on google groups](https://img.shields.io/badge/pandoc-discuss-red.svg?style=social)](https://groups.google.com/forum/#!forum/pandoc-discuss) ## The universal markup converter Pandoc is a [Haskell](https://haskell.org) library for converting from one markup format to another, and a command-line tool that uses this library. It can convert *from*
- `bibtex` ([BibTeX](https://ctan.org/pkg/bibtex) bibliography) - `biblatex` ([BibLaTeX](https://ctan.org/pkg/biblatex) bibliography) - `commonmark` ([CommonMark](https://commonmark.org) Markdown) - `commonmark_x` ([CommonMark](https://commonmark.org) Markdown with extensions) - `creole` ([Creole 1.0](http://www.wikicreole.org/wiki/Creole1.0)) - `csljson` ([CSL JSON](https://citeproc-js.readthedocs.io/en/latest/csl-json/markup.html) bibliography) - `csv` ([CSV](https://tools.ietf.org/html/rfc4180) table) - `tsv` ([TSV](https://www.iana.org/assignments/media-types/text/tab-separated-values) table) - `docbook` ([DocBook](https://docbook.org)) - `docx` ([Word docx](https://en.wikipedia.org/wiki/Office_Open_XML)) - `dokuwiki` ([DokuWiki markup](https://www.dokuwiki.org/dokuwiki)) - `endnotexml` ([EndNote XML bibliography](https://support.clarivate.com/Endnote/s/article/EndNote-XML-Document-Type-Definition)) - `epub` ([EPUB](http://idpf.org/epub)) - `fb2` ([FictionBook2](http://www.fictionbook.org/index.php/Eng:XML_Schema_Fictionbook_2.1) e-book) - `gfm` ([GitHub-Flavored Markdown](https://help.github.com/articles/github-flavored-markdown/)), or the deprecated and less accurate `markdown_github`; use [`markdown_github`](https://pandoc.org/MANUAL.html#markdown-variants) only if you need extensions not supported in [`gfm`](https://pandoc.org/MANUAL.html#markdown-variants). - `haddock` ([Haddock markup](https://www.haskell.org/haddock/doc/html/ch03s08.html)) - `html` ([HTML](https://www.w3.org/html/)) - `ipynb` ([Jupyter notebook](https://nbformat.readthedocs.io/en/latest/)) - `jats` ([JATS](https://jats.nlm.nih.gov) XML) - `jira` ([Jira](https://jira.atlassian.com/secure/WikiRendererHelpAction.jspa?section=all)/Confluence wiki markup) - `json` (JSON version of native AST) - `latex` ([LaTeX](https://www.latex-project.org/)) - `markdown` ([Pandoc’s Markdown](https://pandoc.org/MANUAL.html#pandocs-markdown)) - `markdown_mmd` ([MultiMarkdown](https://fletcherpenney.net/multimarkdown/)) - `markdown_phpextra` ([PHP Markdown Extra](https://michelf.ca/projects/php-markdown/extra/)) - `markdown_strict` (original unextended [Markdown](https://daringfireball.net/projects/markdown/)) - `mediawiki` ([MediaWiki markup](https://www.mediawiki.org/wiki/Help:Formatting)) - `man` ([roff man](https://man.cx/groff_man(7))) - `muse` ([Muse](https://amusewiki.org/library/manual)) - `native` (native Haskell) - `odt` ([ODT](https://en.wikipedia.org/wiki/OpenDocument)) - `opml` ([OPML](http://dev.opml.org/spec2.html)) - `org` ([Emacs Org mode](https://orgmode.org)) - `ris` ([RIS](https://en.wikipedia.org/wiki/RIS_(file_format)) bibliography) - `rtf` ([Rich Text Format](https://en.wikipedia.org/wiki/Rich_Text_Format)) - `rst` ([reStructuredText](https://docutils.sourceforge.io/docs/ref/rst/introduction.html)) - `t2t` ([txt2tags](https://txt2tags.org)) - `textile` ([Textile](https://textile-lang.com)) - `tikiwiki` ([TikiWiki markup](https://doc.tiki.org/Wiki-Syntax-Text#The_Markup_Language_Wiki-Syntax)) - `twiki` ([TWiki markup](https://twiki.org/cgi-bin/view/TWiki/TextFormattingRules)) - `typst` ([typst](https://typst.app)) - `vimwiki` ([Vimwiki](https://vimwiki.github.io)) - the path of a custom Lua reader, see [Custom readers and writers](https://pandoc.org/MANUAL.html#custom-readers-and-writers) below
It can convert *to*
- `asciidoc` ([AsciiDoc](https://www.methods.co.nz/asciidoc/)) or `asciidoctor` ([AsciiDoctor](https://asciidoctor.org/)) - `beamer` ([LaTeX beamer](https://ctan.org/pkg/beamer) slide show) - `bibtex` ([BibTeX](https://ctan.org/pkg/bibtex) bibliography) - `biblatex` ([BibLaTeX](https://ctan.org/pkg/biblatex) bibliography) - `chunkedhtml` (zip archive of multiple linked HTML files) - `commonmark` ([CommonMark](https://commonmark.org) Markdown) - `commonmark_x` ([CommonMark](https://commonmark.org) Markdown with extensions) - `context` ([ConTeXt](https://www.contextgarden.net/)) - `csljson` ([CSL JSON](https://citeproc-js.readthedocs.io/en/latest/csl-json/markup.html) bibliography) - `docbook` or `docbook4` ([DocBook](https://docbook.org) 4) - `docbook5` (DocBook 5) - `docx` ([Word docx](https://en.wikipedia.org/wiki/Office_Open_XML)) - `dokuwiki` ([DokuWiki markup](https://www.dokuwiki.org/dokuwiki)) - `epub` or `epub3` ([EPUB](http://idpf.org/epub) v3 book) - `epub2` (EPUB v2) - `fb2` ([FictionBook2](http://www.fictionbook.org/index.php/Eng:XML_Schema_Fictionbook_2.1) e-book) - `gfm` ([GitHub-Flavored Markdown](https://help.github.com/articles/github-flavored-markdown/)), or the deprecated and less accurate `markdown_github`; use [`markdown_github`](https://pandoc.org/MANUAL.html#markdown-variants) only if you need extensions not supported in [`gfm`](https://pandoc.org/MANUAL.html#markdown-variants). - `haddock` ([Haddock markup](https://www.haskell.org/haddock/doc/html/ch03s08.html)) - `html` or `html5` ([HTML](https://www.w3.org/html/), i.e. [HTML5](https://html.spec.whatwg.org/)/XHTML [polyglot markup](https://www.w3.org/TR/html-polyglot/)) - `html4` ([XHTML](https://www.w3.org/TR/xhtml1/) 1.0 Transitional) - `icml` ([InDesign ICML](https://wwwimages.adobe.com/www.adobe.com/content/dam/acom/en/devnet/indesign/sdk/cs6/idml/idml-cookbook.pdf)) - `ipynb` ([Jupyter notebook](https://nbformat.readthedocs.io/en/latest/)) - `jats_archiving` ([JATS](https://jats.nlm.nih.gov) XML, Archiving and Interchange Tag Set) - `jats_articleauthoring` ([JATS](https://jats.nlm.nih.gov) XML, Article Authoring Tag Set) - `jats_publishing` ([JATS](https://jats.nlm.nih.gov) XML, Journal Publishing Tag Set) - `jats` (alias for `jats_archiving`) - `jira` ([Jira](https://jira.atlassian.com/secure/WikiRendererHelpAction.jspa?section=all)/Confluence wiki markup) - `json` (JSON version of native AST) - `latex` ([LaTeX](https://www.latex-project.org/)) - `man` ([roff man](https://man.cx/groff_man(7))) - `markdown` ([Pandoc’s Markdown](https://pandoc.org/MANUAL.html#pandocs-markdown)) - `markdown_mmd` ([MultiMarkdown](https://fletcherpenney.net/multimarkdown/)) - `markdown_phpextra` ([PHP Markdown Extra](https://michelf.ca/projects/php-markdown/extra/)) - `markdown_strict` (original unextended [Markdown](https://daringfireball.net/projects/markdown/)) - `markua` ([Markua](https://leanpub.com/markua/read)) - `mediawiki` ([MediaWiki markup](https://www.mediawiki.org/wiki/Help:Formatting)) - `ms` ([roff ms](https://man.cx/groff_ms(7))) - `muse` ([Muse](https://amusewiki.org/library/manual)) - `native` (native Haskell) - `odt` ([OpenOffice text document](https://en.wikipedia.org/wiki/OpenDocument)) - `opml` ([OPML](http://dev.opml.org/spec2.html)) - `opendocument` ([OpenDocument](http://opendocument.xml.org)) - `org` ([Emacs Org mode](https://orgmode.org)) - `pdf` ([PDF](https://www.adobe.com/pdf/)) - `plain` (plain text) - `pptx` ([PowerPoint](https://en.wikipedia.org/wiki/Microsoft_PowerPoint) slide show) - `rst` ([reStructuredText](https://docutils.sourceforge.io/docs/ref/rst/introduction.html)) - `rtf` ([Rich Text Format](https://en.wikipedia.org/wiki/Rich_Text_Format)) - `texinfo` ([GNU Texinfo](https://www.gnu.org/software/texinfo/)) - `textile` ([Textile](https://textile-lang.com)) - `slideous` ([Slideous](https://goessner.net/articles/slideous/) HTML and JavaScript slide show) - `slidy` ([Slidy](https://www.w3.org/Talks/Tools/Slidy2/) HTML and JavaScript slide show) - `dzslides` ([DZSlides](https://paulrouget.com/dzslides/) HTML5 + JavaScript slide show) - `revealjs` ([reveal.js](https://revealjs.com/) HTML5 + JavaScript slide show) - `s5` ([S5](https://meyerweb.com/eric/tools/s5/) HTML and JavaScript slide show) - `tei` ([TEI Simple](https://github.com/TEIC/TEI-Simple)) - `typst` ([typst](https://typst.app)) - `xwiki` ([XWiki markup](https://www.xwiki.org/xwiki/bin/view/Documentation/UserGuide/Features/XWikiSyntax/)) - `zimwiki` ([ZimWiki markup](https://zim-wiki.org/manual/Help/Wiki_Syntax.html)) - the path of a custom Lua writer, see [Custom readers and writers](https://pandoc.org/MANUAL.html#custom-readers-and-writers) below
Pandoc can also produce PDF output via LaTeX, Groff ms, or HTML. Pandoc’s enhanced version of Markdown includes syntax for tables, definition lists, metadata blocks, footnotes, citations, math, and much more. See the User’s Manual below under [Pandoc’s Markdown](https://pandoc.org/MANUAL.html#pandocs-markdown). Pandoc has a modular design: it consists of a set of readers, which parse text in a given format and produce a native representation of the document (an *abstract syntax tree* or AST), and a set of writers, which convert this native representation into a target format. Thus, adding an input or output format requires only adding a reader or writer. Users can also run custom pandoc filters to modify the intermediate AST (see the documentation for [filters](https://pandoc.org/filters.html) and [Lua filters](https://pandoc.org/lua-filters.html)). Because pandoc’s intermediate representation of a document is less expressive than many of the formats it converts between, one should not expect perfect conversions between every format and every other. Pandoc attempts to preserve the structural elements of a document, but not formatting details such as margin size. And some document elements, such as complex tables, may not fit into pandoc’s simple document model. While conversions from pandoc’s Markdown to all formats aspire to be perfect, conversions from formats more expressive than pandoc’s Markdown can be expected to be lossy. ## Installing Here’s [how to install pandoc](INSTALL.md). ## Documentation Pandoc’s website contains a full [User’s Guide](https://pandoc.org/MANUAL.html). It is also available [here](MANUAL.txt) as pandoc-flavored Markdown. The website also contains some [examples of the use of pandoc](https://pandoc.org/demos.html) and a limited [online demo](https://pandoc.org/try). ## Contributing Pull requests, bug reports, and feature requests are welcome. Please make sure to read [the contributor guidelines](CONTRIBUTING.md) before opening a new issue. ## License © 2006-2023 John MacFarlane (jgm@berkeley.edu). Released under the [GPL](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html "GNU General Public License"), version 2 or greater. This software carries no warranty of any kind. (See COPYRIGHT for full copyright and warranty notices.) pandoc-3.1.3/benchmark/0000755000000000000000000000000007346545000013105 5ustar0000000000000000pandoc-3.1.3/benchmark/benchmark-pandoc.hs0000644000000000000000000001006607346545000016640 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- Copyright (C) 2012-2023 John MacFarlane This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -} import Text.Pandoc import Text.Pandoc.MIME import Control.DeepSeq (force) import Control.Monad.Except (throwError) import qualified Text.Pandoc.UTF8 as UTF8 import qualified Data.ByteString as B import qualified Data.Text as T import Test.Tasty.Bench -- import Gauge import qualified Data.ByteString.Lazy as BL import Data.Maybe (mapMaybe) import Data.List (sortOn) import Text.Pandoc.Format (FlavoredFormat(..)) readerBench :: Pandoc -> T.Text -> Maybe Benchmark readerBench _ name | name `elem` ["bibtex", "biblatex", "csljson"] = Nothing readerBench doc name = either (const Nothing) Just $ runPure $ do (rdr, rexts) <- getReader $ FlavoredFormat name mempty (wtr, wexts) <- getWriter $ FlavoredFormat name mempty case (rdr, wtr) of (TextReader r, TextWriter w) -> do inp <- w def{ writerWrapText = WrapAuto , writerExtensions = wexts } doc return $ bench (T.unpack name) $ nf (either (error . show) id . runPure . r def) inp (ByteStringReader r, ByteStringWriter w) -> do tmpl <- Just <$> compileDefaultTemplate name inp <- w def{ writerWrapText = WrapAuto , writerExtensions = wexts , writerTemplate = tmpl } doc return $ bench (T.unpack name) $ nf (either (error . show) id . runPure . r def{readerExtensions = rexts}) inp _ -> throwError $ PandocSomeError $ "text/bytestring format mismatch: " <> name getImages :: IO [(FilePath, MimeType, BL.ByteString)] getImages = do ll <- B.readFile "test/lalune.jpg" mv <- B.readFile "test/movie.jpg" return [("lalune.jpg", "image/jpg", BL.fromStrict ll) ,("movie.jpg", "image/jpg", BL.fromStrict mv)] writerBench :: [(FilePath, MimeType, BL.ByteString)] -> Pandoc -> T.Text -> Maybe Benchmark writerBench _ _ name | name `elem` ["bibtex", "biblatex", "csljson"] = Nothing writerBench imgs doc name = either (const Nothing) Just $ runPure $ do (wtr, wexts) <- getWriter $ FlavoredFormat name mempty case wtr of TextWriter writerFun -> return $ bench (T.unpack name) $ nf (\d -> either (error . show) id $ runPure $ do mapM_ (\(fp,mt,bs) -> insertMedia fp (Just mt) bs) imgs writerFun def{ writerExtensions = wexts} d) doc ByteStringWriter writerFun -> return $ bench (T.unpack name) $ nf (\d -> either (error . show) id $ runPure $ do mapM_ (\(fp,mt,bs) -> insertMedia fp (Just mt) bs) imgs writerFun def{ writerExtensions = wexts} d) doc main :: IO () main = do inp <- UTF8.toText <$> B.readFile "test/testsuite.txt" let opts = def let doc = either (error . show) force $ runPure $ readMarkdown opts inp defaultMain [ env getImages $ \imgs -> bgroup "writers" $ mapMaybe (writerBench imgs doc . fst) (sortOn fst writers :: [(T.Text, Writer PandocPure)]) , bgroup "readers" $ mapMaybe (readerBench doc . fst) (sortOn fst readers :: [(T.Text, Reader PandocPure)]) ] pandoc-3.1.3/changelog.md0000644000000000000000000401221407346545000013430 0ustar0000000000000000# Revision history for pandoc ## pandoc 3.1.3 (2023-06-07) * New output format: `typst`. * New module: Text.Pandoc.Readers.Typst [API change]. * DocBook reader: + Support more emphasis roles (Albert Krewinkel). The role "bf" is taken to indicate "bold face", i.e., "strongly emphasized" text, while "underline" leads to underlined text. * JATS reader: + Improve title and label parsing in the JATS reader (#8718, Noah Malmed.) + Add rowspan, colspan and alignment to cells in jats table reader (#8408, Noah Malmed) * Org reader (Albert Krewinkel): + Require abstract environment to use lowercase. + Treat `#+NAME` as synonym for `#+LABEL` (#8578). * ODT reader: + Allow lists in table cells (#8892). + Allow frames inside spans (#8886). * RST reader: + Fix sorting on anonymous keys (#8877). This fixes a link resolution bug bug affecting RST documents with anonymous links. * HTML reader: + Fix iframe with data URI of an image (#8856). In this case we don't want to try to parse the data at the URL. Instead, create an image inside a div. * RTF reader: + Fix bug in table parsing (#8767). In certain cases, text before a table was being incorporated into the table itself. * Docx reader: + Introduce support for Intense Quote (Stephan Meijer). * Markdown reader: + Disallow escaping of `~` and `"` in `markdown_strict` (#8777, Albert Krewinkel). This matches the behavior of the legacy `Markdown.pl` as well as what is described in the manual. * LaTeX reader: ignore args to column type in `\multicolumn` (#8789). * HTML writer: + Use first paragraph in task item as checkbox label (#8729, Albert Krewinkel). * Ms writer: + Coerce titles to inlines (#8835). Block-level formatting is not allowed inside `.TL`. * LaTeX writer: + Fix width for multicolumn simple table (#8831). * Jira writer: + Use first code block class as highlighting language (#8814, Albert Krewinkel). The writer no longer searches the list of classes for a known programming language but always uses the first class in that list as the language identifier. * OpenDocument writer: + Handle row header column cells as header cells (#8764, Michael Stahl). + Fix invalid `text:p` inside `text:p` from meta (#8256). * ODT writer: + Don't add settings.xml (Michael Stahl). This will cause defaults to be used, which is what we want. + Don't add unnecessary Configurations2 directory (Michael Stahl). + Don't add thumbnail (Michael Stahl). + Put `manifest.version` on directory file-entry (Michael Stahl). See ODF 1.3 part 2, 4.16.14.1. + Stop validator complaints by producing ODF 1.3 (Michael Stahl). * MediaWiki writer: + Remove links from inside links in mediawiki writer (#8739, Wout Gevaert). * Typst writer: + Omit bibliography if `citations` not enabled (#8763). With this change, the typst writer will omit the `#bibliography` command when `citations` is not enabled. (If you want to use pandoc's own `--citeproc`, you should combine it with `-t typst-citations` to disable native typst citations. + Use `<..>` for labels, create internal links. + Use `#footnote` for notes (#8893). + Fix alignment issue in lists. It's an aesthetic issue only; the first line had an extra space indent after the list marker. * Commonmark writer: + Use shortcut reference links: commonmark supports these. * EPUB template: add `lang` attribute to `` (Gabriel Lewertoski). * Template styles.html: fix task-list styling in reveal.js (#8731, Albert Krewinkel). * LaTeX template: Fix `\babelfont` (#8728). * Text.Pandoc.Parsing: + Remove unnecessary 'spaces' in `parseFromString`. * Text.Pandoc.ImageSize: Drop BOM at start of SVG if present. Otherwise our code can fail to determine image size. * Lua subsystem: + Fix value of PANDOC_SCRIPT_FILE for custom readers & writers (#8781, Albert Krewinkel). The value did not hold the actual file path for scripts in the *custom* folder of the datadir. * Fix YAML in translation files for `cs` and `pl` (#8787). * Fix pdf output via typst (#8754). One must now use `typst compile` rather than `typst`. * MANUAL.txt: + Added note that the user will need to create the user data dir (#8727). + Add `wikilinks` to non-default extensions (Ilona). + Update link to custom djot writer (Albert Krewinkel). + Better link to citation syntax. + Fix typo (sdhoward). + Note that `#` fancy list markers don't work with commonmark (#8772, William Lupton). + Add commonmark `fenced_div` note (#8773, William Lupton). + Move highlighting documentation, with minor adjustments (William Lupton). + Fix inaccurate statement about spaces and tabs in template syntax (Frank Seifferth). * Update documentation for org-mode (Christian Christiansen, #8716). * doc/lua-filter.md: + Fix typos (#8734, perro tuerto). + Fix anchor (Toni Dietze). + Use full field name in example (#8857, Matt Dodson). + Fix copy-paste error (#8798, thron7). * CONTRIBUTING.md: update info on ghc versions. * INSTALL.md: + Fix cabal install instructions (Albert Krewinkel). + Use more relevant link to NetBSD/pkgsrc entry (Charlotte Koch). + Fix Windows install instructions for winget (#8799). * Tests: Rename test/docx/block_quotes_parse_indent.native for consistency (Stephan Meijer). * Add `tls` constraint on cabal.project. This is needed to avoid problems caused by the transition to `crypton`. * Require texmath 0.12.8. ## pandoc 3.1.2 (2023-03-26) * Add a Lua REPL (Albert Krewinkel). This can be started with `pandoc lua -i`. It is also possible to instruct a filter to open the REPL at a certain point, for debugging (see `pandoc.cli.repl`). * Support `typst` as a `--pdf-engine`. * Add typst writer (#8713). New module Text.Pandoc.Writers.Typst, exporting `writeTypst` [API change]. * Org reader: + Allow zero width space as an escape character (#8716, Christian Christiansen). Allow the character U+200B to be used as an escape character as described in the Org-mode documentation (). * DocBook reader: + Handle "book" for xref references (#8712, Andres Freund) This also adds a test xref to book and part. + Handle `` (#8712). * HTML reader: + Fix behavior with `-native_spans-raw_html` (#8711). Previously with this configuration, ``s were not treated as inline elements at all. * HTML writer: + Avoid duplicate classes (#8705). + Use img element instead of embed for `.svg.gz` and `.png.gz` etc. (#8699). + HTML writer footnotes changes (#8695): when `--reference-location=section` or `=block`, use an `aside` element for the notes rather than a `section`. When `--reference-location=section`, include the `aside` element inside the section element, rather than outside. (In slide shows, this option causes footnotes on a slide to be displayed at the bottom of the slide.) * EPUB writer: + Use different structure for epub footnotes (#8676, see #8672, #5583). Many EPUB readers are thrown off by pandoc's current footnote output. Both the ol and the fact that the footnote backlink is at the end of the note seem to pose problems. With this commit, we now create a list of aside (or div) elements, instead of an ordered list. Each element begins with a note number that is linked back to the note reference. (So, the backlink occurs at the beginning rather than the end.) Thanks to @Porges and @lewer. * Docx writer: + Include abstract title (#8702). Uses localized term for abstract. * Markdown writer: + Use implicit figures if there's a caption but no alt (#8689, Albert Krewinkel). * Jira reader (Albert Krewinkel): + Add panel title as nested div (#8681). + Require jira-wiki-markup 1.5.1 (#8680). This fixes a bug in the parser that caused text between two exclamation marks to be parsed as an image. The first `!` of image markup must now be followed by a non-space character; otherwise, the enclosed text is parsed as normal content. * Ms writer: + Fix handling of Figure (#8660). * ICML writer: + Fix images with data (#8675). The Contents element should be inside Properties. * LaTeX writer: + Add Chinese to Babel languages. + Fix background image in Beamer when there are figure environments (#8671, Martín Pozo). * LaTeX template: + Add `babelfonts` variable to default LaTeX template. This allows specifying certain fonts to be used with certain babel languages. Thanks to Frederik Elwert. + Fix highlight/underline with lualatex (#8707). We need the lua-ul package instead of soul, which doesn't work with lualatex. * Lua (Albert Krewinkel): + Add `pandoc.cli.repl` function + Fix `json.encode` for nested AST elements. Ensures that objects with nested AST elements can be encoded as JSON. + Auto-generate docs for pandoc modules. + Load text module as `pandoc.text`. This only affects the name in the Lua-internal documentation. It is still possible to load the modules via `require 'text'`, although this is deprecated. + Move docs from module `text` to `pandoc.text` The latter is easier to use and more consistent with the other modules. + Keep the Lua stack clean A metatable used during initialization was not properly removed from the stack. Likewise, accessing the CommonState from Lua previously led to the pollution of the Lua stack with a left-over value. * Add function `pandoc.format.from_path`. + Allow to get the JSON encoding of log messages. * Text.Pandoc.Format: Add new function `formatFromFilePaths` [API change] (#8710, Albert Krewinkel). * The old Text.Pandoc.App.FormatHeuristics module has been removed. * In `--version`, use Windows `%APPDATA%` variable to describe user data dir (#8686, Pablo Rodríguez). * Text.Pandoc.App.CommandLineOptions: don't lowercase arg to `--from`/`--read` (Albert Krewinkel). This prevented users to use custom writers with uppercase characters in their filenames. Format-normalization, including lower-casing of format identifiers, happens during format parsing. * Documentation: + Add `doc/nix.md`. + Add `doc/extras.md`. This was formally in the website repo. + `doc/lua-filters.md`: improve docs for `pandoc.zip`. * Factor out `make_macos_release.sh` from the release candidate workflow. Use cabal instead of stack to build the macos binary. * Modify linux/make_artifacts.sh so it will work on cirrus. * Switch to hslua-2.3 * Depend on latest releases of texmath, doclayout. ## pandoc 3.1.1 (2023-03-05) * EPUB reader: Give additional information in error if the epub zip container can't be unpacked. * TSV reader: don't gobble tabs as whitespace (#8661). * Org reader: accept empty tables (#8659). * LaTeX reader: fix multiplication syntax for tabular (#8658). We recognized `*{6}{...}` but not `*6{...}` or `*6c`. * Docx reader: parse image alt texts in LibreOffice generated files. LibreOffice tags images slightly differently than Word; this change lets the parses take that difference into account when looking for an image description (alt text). * DocBook reader: + Fix `` references to tables in DocBook files (#8626, Pavol Otto). + Parse `figure` as a Figure element in the AST (#8668). * JATS reader: avoid generating duplicate figure captions (#8669). * RST reader: align with spec in syntax for role names (#8653). In particular, we now allow colons in row names. * Add note on converting from .doc format to FAQs (#8654). * Trap error in getAppUserDataDirectory (#8648). This can raise an error if pandoc is run in a non-user environment. * LaTeX writer: do not use longtable foot with Beamer (#8638, Albert Krewinkel). The table foot is made part of the table body, as otherwise it won't show up in the output. The root cause for this is that longtable cannot detect page breaks in Beamer. * LaTeX template: Add CJKsansfont and CJKmonofont for XeLaTeX (#8656, Yudong Jin). `CJKsansfont` and `CJKmonofont` will be set for xelatex only if `CJKmainfont` is also provided. * URL style in ConTeXt (#8612, Thomas Hodgson). Previously, a URL like this would be in monospace text: `\useURL[url1][https://example.com]`. Now, it will match the main text unless the `linkstyle` variable is set, which controls the styling of all links. Closes #8602. * Asciidoc writer: Properly escape `|` in table cells (#8665). * asciidoc{,tor} template: fix revision date when author is unset (#8637, arcnmx). Revision line syntax is only valid in combination with an author line, so the date attribute must be set explicitly when the author is missing * HTML writer: allow "track" element to be treated as block-level HTML (#8629). * Include needed polyfill when MathJaX is used (#8625). * JATS writer: include alt-text in ``, `` elements (#8631, Albert Krewinkel). * Chunked HTML writer: Retain metadata in processing sections for chunked HTML (#8620). Previously we suppressed metadata in all but the top page, in order to prevent the title block from being printed on every page. This prevented use of custom variables set by metadata fields. This commit moves to a better solution: a conditional in the default template restricts the title block to the top page. * Lua API: + Add new function `pandoc.system.cputime` (Albert Krewinkel). The function returns the CPU time consumed by pandoc and can be used to benchmark Lua computations. + Add module `pandoc.json` to handle JSON encoding (#8605, Albert Krewinkel). * Use pandoc-lua-marshal 0.2.1 (Albert Krewinkel). All major AST elements now have `__tojson` metamethods that return the JSON representation of an element. This allows to JSON-encode these elements with libraries that respect the `__tojson` metamethod, including dkjson. * Use latest zip-archive. This allows pandoc to open certain epubs that it could not open before. * Use commonmark-extensions 0.2.3.4. This fixes some bugs involving definition lists and inline formatting. * Use latest skylighting-format-context * MANUAL.txt: + Document chunk-template in defaults file. + Remove obsolete "raw content in a style" section. + Revise documentation for `--mathml` to reflect support in all major browsers (#8667). * docs/custom-readers.md: Update JSON parsing example. The example now uses the built-in `pandoc.json` library to parse the API output. * doc/press.md: Add article on CiTO in J Cheminform by @egonw. * doc/lua-filters.md: fix typo in `run_json_filter` (Morgan Willcock). ## pandoc 3.1 (2023-02-09) * Fix regression with `--print-highlight-style` option (#8586). * Add new `--chunk-template` option (#8581), allowing more control over the filenames in chunked HTML output. * Text.Pandoc.App: Add `optChunkTemplate` constructor to Opt [API change]. * Text.Pandoc.Options: add `writerChunkTemplate` constructor to `WriterOptions` [API change]. * Text.Pandoc.Chunks: add Data, Typeable, Generic, ToJSON, FromJSON instances for `PathTemplate` [API change]. * Text.Pandoc.Citeproc: Fix bug in `metaValueToReference` (#8611). This bug caused us to get some repeated content when converting MetaBlock to Inlines. * Textile reader: + Support footnote backlinks (#8585, Stephen Altamirano). + Don't allow brackets in URLs (#8582). * ODT reader: fix blockquote indent detection (#3437, Daniel Kessler). * LaTeX writer: include short figure/table caption if one is given (Albert Krewinkel). Short captions are used by LaTeX when generating the list of figures or list of tables. Adding a short caption will now overwrite the full caption in these lists. * Powerpoint writer: fix handling of simple figures (#8565, Albert Krewinkel). This ensures that simple figures are displayed in the same way as before the introduction of a dedicated `Figure` constructor in the AST. * Improve handling of `%` in bib(la)tex parsing (#8597, #8595). * Use released skylighting 0.13.2.1 * INSTALL.md: direct people to cabal install pandoc-cli. * doc/lua-filters.md: document 'Figure' type and constructor (Albert Krewinkel). Fix typos (Martin Joerg). * Fix link in manual (#8583, Salim B). ## pandoc 3.0.1 (2023-01-25) * Fix use of extensions with custom readers (#8571). * Text.Pandoc.Writers.Shared: export `setupTranslations` [API change]. Use this in HTML and OpenDocument writers, to ensure that translations are set up properly even when we don't go through `convertWithOpts`. * LaTeX reader: fix regression in macro resolution for environments (#8573). * Chunked HTML writer: Fix handling of images with absolute URLs (#8567). * HTML writer: + Don't omit newlines in task lists. + Don't disable checkboxes in task lists (#8562). * Ensure that automatically set variables `pandoc-version`, `outputfile`, `title-prefix`, `epub-cover-image`, `curdir`, `dzslides-core` can be overridden by `--variable` on the command line. Previously they would create lists in the template Context, which is not desirable. * Fix man page copying in `linux/make_artifacts.sh` (#8566). Previously we were copying the pandoc-server.1 pandoc page to pandoc-lua.1. * pandoc.cabal: remove pandoc.cabal, stack.cabal from extra-source-files (#8560). The problem is that if these are in extra-source-files, then they get put in the tarball, and then anyone trying to build the source from an unpacked tarball will run into the problem that cabal.project and stack.yaml refer to pandoc-server, pandoc-lua-engine, and pandoc-cli, which aren't in the tarball. * Require texmath 0.12.6 for better MathML output. * Fix typo in Lua filter documentation (Carlos Scheidegger). * Fix formatting of link in pandoc-server.md (James Scott-Brown). * Minor changelog fixups. ## pandoc 3.0 (2023-01-18) * Split pandoc-server, pandoc-cli, and pandoc-lua-engine into separate packages (#8309). Note that installing the `pandoc` package from Hackage will no longer give you the `pandoc` executable; for that you need to install `pandoc-cli`. * Pandoc now behaves like a Lua interpreter when called as `pandoc-lua` or when `pandoc lua` is used (#8311, Albert Krewinkel). The Lua API that is available in filters is automatically available to the interpreter. (See the `pandoc-lua` man page.) * Pandoc behaves like a server when called as `pandoc-server` or when `pandoc server` is used. (See the `pandoc-server` man page.) * A new command-line option `--list-tables`, causes tables to be formatted as list tables in RST (#4564, with Francesco Occhipinti). * New command line option: `--epub-title-page=true|false` allows the EPUB title page to be omitted (#6097). * `--reference-doc` can now accept a URL argument (#8535) and load a remote reference doc. * `--version` output no longer contains version info for dependent packages. Instead, it contains a "Features" line that indicates whether the binary was compiled with support for acting as a server, and for using Lua filters and Custom writers. * A new option `--split-level` replaces `--epub-chapter-level` and affects both EPUB and chunked HTML output. `--epub-chapter-level` will still work but is deprecated. * Multiple input files with `--file-scope`: fix case where the links are URL-encoded, e.g. with `%20` (#8467). * Produce error if `--csl` is used more than once (#8195, Prat). * Remove deprecated `--atx-headers` option. * Remove deprecated option `--strip-empty-paragraphs`. * In `--verbose` mode add message when running citeproc (as with other filters). * Add new `mark` extension for highlighted text in Markdown, using `==` delimiters (#7743). * Add new extensions `wikilinks_title_after_pipe` and `wikilinks_title_before_pipe` for `commonmark` and `markdown`. (#2923, Albert Krewinkel). The former enables links of style `[[Name of page|Title]]` and the latter `[[Title|Name of page]]`. Titles are optional in both variants, so this works for both: `[[https://example.org]]`, `[[Name of page]]`. The writer is modified to render links with title `wikilink` as a wikilink if a respective extension is enabled. Pandoc will use `wikilinks_title_after_pipe` if both extensions are enabled. * Add prefixes to identifiers with `--file-scope` (#6384). This change only affects the case where `--file-scope` is used and more than one file is specified on the command line. In this case, identifiers will be prefixed with a string derived from the file path, to disambiguate them. For example, an identifier `foo` in `contents/file1.txt` will become `contents__file1.txt__foo`. Links will be adjusted accordingly: if `file2.txt` links to `file1.txt#foo`, then the link will be changed to point to `#file1.txt__foo`. Similarly, a link to `file1.txt` will point to `#file1.txt`. A Div with an identifier derived from the file path will be added around each file's content, so that links to files will still work. * New output format: `chunkedhtml`. This creates a zip file containing multiple HTML files, one for each section, linked with "next," "previous," "up," and "top" links. (If `-o` is used with an argument without an extension, it is treated as a directory and the zip file is automatically extracted there, unless it already exists.) The top page will contain a table of contents if `--toc` is used. A `sitemap.json` file is also included. The option `--split-level` determines the level at which sections are to be split. * Support complex figures (Albert Krewinkel, Aner Lucero). There is now a dedicate Figure block constructor for figures. The old hack of representing a figure as `Para [Image attr [..alt..] (source, "fig:title")]` has been dropped. Here is a summary of figure support in different formats: + Markdown reader: paragraphs containing just an image are treated as figures if the `implicit_figures` extension is enabled. The identifier is used as the figure's identifier and the image description is also used as figure caption; all other attributes are treated as belonging to the image. + Markdown writer: figures are output as implicit figures if possible, via HTML if the `raw_html` extension is enabled, and as Div elements otherwise. + HTML reader: `
` elements are parsed as figures, with the caption taken from the respective `
` elements. + HTML writer: the alt text is no longer constructed from the caption, as was the case with implicit figures. This reduces duplication, but comes at the risk of images that are missing alt texts. Authors should take care to provide alt texts for all images. Some readers, most notably the Markdown reader with the `implicit_figures` extension, add a caption that's identical to the image description. The writer checks for this and adds an `aria-hidden` attribute to the `
` element in that case. + JATS reader: The `` and `` elements are parsed into figure elements, even if the contents is more complex. + JATS writer: The `` and `` elements are used write figures. + LaTeX reader: support for figures with non-image contents and for subfigures. + LaTeX writer: complex figures, e.g. with non-image contents and subfigures, are supported. The `subfigure` template variable is set if the document contains subfigures, triggering the conditional loading of the *subcaption* package. Contants of figures that contain tables are become unwrapped, as longtable environments are not allowed within figures. + DokuWiki, Haddock, Jira, Man, MediaWiki, Ms, Muse, PPTX, RTF, TEI, ZimWiki writers: Figures are rendered like Div elements. + Asciidoc writer: The figure contents is unwrapped; each image in the the figure becomes a separate figure. + Classic custom writers: Figures are passed to the global function `Figure(caption, contents, attr)`, where `caption` and `contents` are strings and `attr` is a table of key-value pairs. + ConTeXt writer: Figures are wrapped in a "placefigure" environment with `\startplacefigure`/`\endplacefigure`, adding the features caption and listing title as properties. Subfigures are place in a single row with the `\startfloatcombination` environment. + DocBook writer: Uses `mediaobject` elements, unless the figure contains subfigures or tables, in which case the figure content is unwrapped. - Docx writer: figures with multiple content blocks are rendered as tables with style `FigureTable`; like before, single-image figures are still output as paragraphs with style `Figure` or `Captioned Figure`, depending on whether a caption is attached. + DokuWiki writer: Caption and "alt-text" are no longer combined. The alt text of a figure will now be lost in the conversion. + FB2 writer: The figure caption is added as alt text to the images in the figure; pre-existing alt texts are kept. + ICML writer: Only single-image figures are supported. The contents of figures with additional elements gets unwrapped. + OpenDocument writer: A separate paragraph is generated for each block element in a figure, each with style `FigureWithCaption`. Behavior for single-image figures therefore remains unchanged. + Org writer: Only the first element in a figure is given a caption; additional block elements in the figure are appended without any caption being added. + RST writer: Single-image figures are supported as before; the contents of more complex images become nested in a container of type `float`. + Texinfo writer: Figures are rendered as float with type `figure`. + Textile writer: Figures are rendered with the help of HTML elements. + XWiki: Figures are placed in a group. * Changes in custom readers/writers: + It is now possible to have a custom reader and a custom writer for a format together in the same file. The file may also define a custom template for the writer. + Pandoc now checks the folder `custom` in the user's data directory for a matching script if it can't find one in the local directory. Previously, the `readers` and `writers` data directories were searched for custom readers and writers, respectively. Scripts in those directories must be moved to the `custom` folder. + Custom readers used to implement a fallback behavior that allowed to consume just a string value as input to the `Reader` function. This has been removed, the first argument is now always a list of sources. Use `tostring` on that argument to get a string. * New module Text.Pandoc.Writers.ChunkedHTML, exporting `writeChunkedHtml` [API change]. * We now set the `pandoc-version` variable centrally rather than in the writers. One effect is the man writer now emits a comment with the pandoc version. * pandoc-server: + Add simple CORS support to pandoc-server (#8427). + Print message to stderr when starting the server. * Docx reader: + Mark unnumbered headings with class `unnumbered` (#8148, Albert Krewinkel). This change ensures good conversion results when converting with `--number-sections`. + Support parsing of highlighted text. + Fix handling of `oMathPara` in `w:p` with other content (#8483). * ODT reader: + Fix relative links. ODT adds a `../` to relative links (see #3524); this needs to be removed when converting from ODT. + Handle "section" elements (#8409). + Rename Text.Pandoc.Readers.Odt -> Text.Pandoc.Readers.ODT, for consistency with Writers.ODT. Rename `readOdt` -> `readODT`. [API change] * DocBook reader: + Support href on link even in a fragment (#8437). (We now just look for an `href` attribute without worrying about the namespace.) + Parse title from imageobject/objectinfo (#8437). * JATS reader: + Handle uri element in references (#8270). * Ipynb reader: + Add cell id to attachment filename when storing in MediaBag (#8415). Otherwise attachments with the same name can overwrite each other. * LaTeX reader: + Skip parenthenized args of toprule, midrule, etc (#8242). + Handle `##` macro arguments properly (#8243). + Remove unused function `toksToString` in Parsing module. + Support more `soul` commands, including `\hl`. + Add `unnumbered` class for `\part*` (#8447) + Fix `TEXINPUTS` handling (#8392). If `TEXINPUTS` ends with `:`, then the system default `TEXINPUTS` is added. We handle this by just adding the working directory in this case. + Parse short table caption (see jgm/pandoc-types#103). This is not too useful yet, because writers don't do anything with the short caption. * MediaWiki reader: + Parse table cell with attributess, to support rowspan, colspan (#8231, Ruqi). + Refine "blending" rules for MediaWiki links (#8525, Ruqi). The rules for "blending" characters outside a link into the link are described here: https://en.wikipedia.org/wiki/Help:Wikitext#Blend_link These pose a problem for CJK languages, which generally don't have spaces after links. However, it turns out that the blending behavior, as implemented on Wikipedia, is (contrary to the documentation) only for ASCII letters. This commit implements that restriction, which fixes the problem for CJK. * HTML reader: + Fix regression for `` (#8330). It was no longer being parsed as Code (Justin Wood). * RST reader: + Support `mark` role for round-trip. * Textile reader: + Support linked images (#8541). + Fix strong emph ending with link (#8540). + Adding a Parser to look for ordered list start attribute numbers if any (#2465, vkraven). + Handle empty paragraphs (#8487). Also, if attributes are added explicitly to a paragraph, put it in a Div with the attributes. * Markdown reader: + Allow fenced code block "bare" language to be combined with attributes (#8174, Siphalor), e.g. ```` ```haskell {.class #id} ``` ```` + Allow table caption labels to start with lowercase `t` (#8259). + Grid tables: allow specifying a table foot by enclosing it with part separator lines, i.e., row separator lines consisting only of `+` and `=` characters (#8257, Albert Krewinkel). E.g.: ``` +------+-------+ | Item | Price | +======+=======+ | Eggs | 5£ | +------+-------+ | Spam | 3£ | +======+=======+ | Sum | 8£ | +======+=======+ ``` + Fix `implicit_header_references` with duplicate headings (#8300). Documentation says that when more than one heading has the same text, an implicit reference `[Heading text][]` refers to the first one. Previously pandoc linked to the last one instead. This patch makes pandoc conform to the documented behavior. + Parse highlighted text inside `==..==` if `mark` extension enabled. * Org reader: + Allow org-ref v2 citations with `&` prefix (#8302). + Make `#+pandoc-emphasis-pre` work as expected (#8360, Amir Dekel). * BibTeX reader: + Fix handling of `%` in `url` field (#7678). `%` does not function as a comment character inside `url` (where URL-encoding is common). + Allow `url` field in `bibtex` as well as `biblatex` (#8287). This field is not officially supported for BibTeX, but many styles can handle it (), and others will ignore it. + Support `software` type in biblatex <-> CSL conversions (#8504). + Make sure `version` field comes through in biblatex (#8504). * BibTeX writer: + Pass through `url` even for `bibtex` (#8287). * Org writer: + Pass through unknown languages in code blocks (#8278), instead of producing `begin_example`. + Use span attributes `tag-name` in headers as tags (#8513, Albert Krewinkel). This enables round-tripping of tags in Org headings. * EndNote reader: + Better error when parsing EndNote references fails. * DocBook writer: + Rename Text.Pandoc.Writers.Docbook -> Text.Pandoc.Writers.DocBook. Rename `writeDocbook` -> `writeDocBook`, for consistency with the DocBook reader's naming. [API change] + Fix position of textobject (#8437). It is a child of `inlinemediaobject`, not `imageobject`. + Add regression tests for #8437. + Render image alt text using textobject element (#8437). + Don't indent contents of title element. + Store "unnumbered" class in DocBook role attribute (#1402, lifeunleaded). * ConTeXt writer (Albert Krewinkel): + Support syntax highlighting for code. + Always use `\type` for inline code. Inline codes that contained curly braces where previously rendered with `\mono`; this led to unexpected results when the presentation of `\type` was customized, as those changes would not have been applied to code rendered with `\mono`. + Add support for unlisted, unnumbered headings (#8486). + Support `tagging` extension (Albert Krewinkel). Paragraphs are enclosed by `\bpar` and `\epar` commands, and `highlight` commands are used for emphasis. This results in much better tagging in PDF output. * LaTeX writer: + Do not repeat caption on headless tables (Albert Krewinkel). The caption of headless tables was repeated on each page that contained part of the table. It is now made part of the "first head", i.e. the table head that is printed only once. + Add separator line between table's body and its foot (Albert Krewinkel). + Ignore languages with no babel equivalent, instead of generating an invalid command in the preamble (#8325). + Use `\includesvg` for SVGs and include the `svg` package (#8334). + Use `soul` instead of `ulem` for strikeout, underline (#8411). This handles things like hyphenation, line breaks, and nonbreaking spaces better. + Use `\toprule\noalign{}` instead of `\toprule()` in tables, and similarly for `\midrule` and `\bottomrule` (#8223). This facilitates redefining `\toprule`, `\midrule`, and `\bottomrule` without needing to gobble the ()s. (Those who redefine these macros on the assumption that they will be followed by `()` may need to change their definitions.) + Support highlighted text for Span with class `mark`. * JATS writer: + Use `` for LineBreak in the limited contexts that accept it (#8344). + Officially deprecate `writeJATS` in favor of `writeJatsArchiving`. * RTF writer: + Add space after unicode escape commands (#8264). This fixes a bug that caused characters to disappear after unicode escapes. * RST writer: + Render tables as list tables when the `--list-tables` option is specified (`writerListTables`) (#4564, Francesco Occhipinti). + Improve inline escaping rules (#8380). + Use special `mark` role for Span with class `mark`. * Commonmark writer: + Ensure that we don't have blank lines in raw HTML (#8307). * HTML writer: + Only add role attribute in HTML5 (#8241). It is not valid in HTML4. + Avoid aria-hidden in code blocks for HTML4 (#8241). + Only treat `. . .` as a slide pause in slides, and not in regular HTML output (#8281). + Properly merge classes for headings of level > 6 (#8363). + Prevent `` inside `` (#7585). If a link text contains a link, we replace it with a span. + Replace deprecated aria roles for bibliography entries (#8354). `doc-biblioentry` -> `listitem`, `doc-bibliography` -> `list`. + Remove obsolete stuff about mathml-script. This was a shim we used to include for mathml support. We don't do anything with this any more, so this is dead code. + Include math links if there are raw commands or environments that can be interpreted as math e.g. by MathJax (#8469). + Add prooftree to list of math environments (#8462). This will cause raw LaTeX prooftree environments to be rendered appropriately when `--mathjax` is used. * HTML, Markdown writers: filter out empty class attributes (#8251). These should not be generated by any pandoc readers, but they might be produced programatically. * Markdown writer: + Avoid HTML fallbacks in the generated TOC (Albert Krewinkel, #8131). The generated table of contents usually has IDs for each TOC link, allowing to link back to specific parts of the TOC. However, this leads to unidiomatic markup in formats like gfm, which do not support attributes on links and hence fall back to HTML. The IDs on TOC items are now removed in that case, leading to more aesthetic TOCs. + Escape `!` before `[` (#8254). + Support `mark` extension. * AsciiDoc writer: + In link text, only replace commas with entities when they're in Str elements. If a link contains an image, it may have attributes, and the commas there should not be converted (see #8437, #8070). * ODT writer: + Fix relative links (#3524). * Docx writer: + Better handling of tables in lists (#5947). Previously the content of each list cell was indented when the table belonged to a list item. + Indent tables in list items (#5947). + Adjust correct attribute on `lang` element (#7022). For East Asian languages, we need to adjust `w:eastAsia` rather than `w:val`. This allows normal fonts to be used for any Latin-font text. Similarly, for bidi languages, we need to adjust `w:bidi` rather than `w:val`. We treat `he` and `ar` as bidi languages, `zh`, `ja`, `ko` as East Asian languages. + Support relative image widths (Albert Krewinkel). Image widths given in percent are interpreted to be relative to the text width. Previously, percent widths were taken relative to the image's native size, inconsistently with other writers. + Avoid using 'error' for unassigned table cells (#8468). Instead, throw a regular pandoc error. + Render a Span with class `mark` as highlighted. Currently yellow is hardcoded. * MediaWiki writer: + Use the 'new' table structure, so that colspan and rowspan are supported (Wout Gevaert). * Man writer: + Use UTF-8 by default for non-ascii characters (#8507). Only use groff escapes if `--ascii` has been specified on the command line (`writerPreferAscii`). * ICML writer: + Use Contents element for images with raw data instead of a link with a data: uri (#8398). * EPUB writer: + Refactor to use Text.Pandoc.Chunks. + Refactored and simplified code. + Make title page optional (#6097). * Ms writer: + Properly format display equations (#8308). + Remove -C option on PSPIC. Some old versions don't support this option, and since it's the default it shouldn't be necessary. * XWiki writer: + Use template if it is specified (#8296). Previously templates were ignored. * LaTeX template: + Set fonts after Beamer theme (Jeremie Knuesel). Beamer themes such as metropolis and saintpetersburg change the default fonts. This change gives precedence to the user font settings by moving them after the loading of the Beamer theme. + Set `\babelfont` when `mainlang` and `lang` are specified and `pdflatex` is not being used (#8538). This is needed for good results in Arabic. + Add variable `urlstyle` (#8429, Amar Al-Zubaidi). This is set to `same` by default, so users should not experience any change. * HTML template: + Remove default font size, line height and font family in default inline css (#8423). `mainfont`, `fontsize`, and `linestretch` can still be used as before; the only difference is that we no longer provide opinionated defaults. This commit also adds a `maxwidth` variable that sets `max-width`; if not set, 36em is used as a default. + Add `code { hyphens: manual; }`. + Use `styles.citations.html` partial in `styles.html`. + Fix class name `hanging` -> `hanging-indent` in `styles.citations.html`. + Put Consolas before Lucida Console for code font (#8543). This is to prevent Lucida Console from being used on Windows, where it causes spacing issues in some applications, with boldface glyphs wider than regular ones. * EPUB CSS changes: Reduce the amount of inline CSS used for EPUBs (#8379). Almost everything is now in the default EPUB CSS (`data/epub.css`), which can be overridden either by putting `epub.css` in the user data directory or by using `--css` on the command line. Inline styles are only used for syntax highlighting (which depends on the style specified, and is only included on pages with highlighted code) and for bibliography formatting (which can depend on the CSL style, and is only used in the page containing the bibliography). Note that, for compatibility with older readers, we don't use flexbox to style `column/columns` divs by default, as we do in HTML. Instead, we use an older method which only works when there are two `column` divs inside a `columns` div. If you need more than two columns and aren't worried about support for older EPUB readers, you can modify the default CSS (there is a comment in the CSS telling you what to do). * Reveal.js template: prevent line-wrapping of parallax options (#8503, Albert Krewinkel). * reference.pptx: Remove unsupported element (#8342, #6338, Link Swanson). The default template contained text above the header, which can mislead users into thinking there is a way to put text there using pandoc. * Text.Pandoc.Readers.Metadata: + Fix metadata parsing corner case (#8465). + Don't fail on inline metadata beginning with newline (#8358). * Text.Pandoc.App: + Move initial input-to-Pandoc code to internal submodule (Albert Krewinkel). + Change `parseOptionsFromArgs` and `parseOptions` (#8406) They now return `Either OptInfo Opt`. [API change] + Add `OptInfo` type [API change]. + Add `handleOptInfo` function. This performs the IO actions for things like `--version` that were previously done in `parseOptionsFromArgs` [API change]. + `convertWithOpts`: add argument for a `ScriptingEngine` [API change]. + Unify check for standalone output (Albert Krewinkel). + New `optEpubTitlePage` field on `Opt` [API change] (#6097). + Remove `optEpubChapterLevel`, add `optSplitLevel` [API change]. + Export `IpynbOutput(..)` [API change]. * Text.Pandoc.App.OutputSettings: + Remove unused field `outputWriterName` in `OutputSettings`. * Text.Pandoc.Citeproc: + Check both extension and mime type to determine bibliography type when the bibliography is fetched remotely (#7151). + CslJson: allow an object with `items` property in addition to an array of references. This is what is returned by e.g. `https://api.zotero.org/groups/904125/items?v=...&format=csljson` + Require a digit for an implicit "page" locator inside explicit locator syntax `{...}` (#8288). Previously a locator specified as `{}` would be rendered as `p.` with nothing after it. + Update `sub verbo` to `sub-verbo` (#8315). This is a change in the term's canonical name in citeproc. As a result of this change, `sub verbo` locators have not worked in pandoc since citeproc 0.7. + Text.Pandoc.Citeproc.MetaValue: remove unused function `metaValueToPath`. + Add internal module Text.Pandoc.Citeproc.Name (#8345). This exports `toName`, which previously had been part of T.P.Citeproc.BibTeX, and allows for cleaner module dependencies. * Export module `Text.Pandoc.Slides` [API Change] (Albert Krewinkel). * Add new module Text.Pandoc.Format [API change] (Albert Krewinkel). The module provides functions and types for format spec parsing and processing. The function `parseFormatSpec` was moved from Text.Pandoc.Extensions to the new module and renamed to `parseFlavoredFormat`. It now operates in a PandocMonad and is based on the updated types. * Text.Pandoc.Sources: + Add UpdateSourcePos instances for String and strict and lazy ByteString [API change]. * Text.Pandoc.Extensions: + Fix JSON decoding of Extensions (#8352, Albert Krewinkel). + Add new exported function `readExtension` [API change]. + Remove `parseFormatSpec` [API change]. This has been moved to Text.Pandoc.Format and renamed as `parseFlavoredFormat` (Albert Krewinkel). + Simpler implementation of Extensions based on Set (benchmarks show no performance penalty). + Add `CustomExtension` constructor to `Extension` [API change]. + Remove `Bounded`, `Enum` instances for `Extension`. + Add `extensionsToList` function. + Revise `readExtension` so it can handle `CustomExtension`, and so that it returns a Text rather than `Maybe Text`. + Add `showExtension` [API change]. + Add `Ext_mark` extension [API change]. + Add `Ext_tagging` constructor [API change] (Albert Krewinkel). + Add `Ext_wikilinks_title_after_pipe`, `Ext_wikilinks_title_before_pipe` [API change] (Albert Krewinkel). * Text.Pandoc.PDF: + Fix `papersize` on PDF generation via ms (#8403). We need to set an option in pdfroff in addition to including a macro in the ms file. With this fix, `-Vpapersize=a4` should be sufficient to produce A4 PDF via ms. + Change default background color of PDFs generated via HTML (#8422, Marcin Serwin). * Text.Pandoc.MIME: + Base module on package `mime-types`, which is already a transitive dependency (#8277, Albert Krewinkel). + Remove deprecated overrides (#8292). * Text.Pandoc.XML: + Re-export `lookupEntity` from commonmark-hs [API change]. * Text.Pandoc.Parsing: + Remove gratuitious renaming of Parsec types. We were exporting Parser, ParserT as synonyms of Parsec, ParsecT. There is no good reason for this and it can cause confusion. Also, when possible, we replace imports of Text.Parsec with Text.Pandoc.Parsing. The idea is to make it easier, at some point, to switch to megaparsec or another parsing engine if we want to. New (re-)exports: `Stream(..)`, `updatePosString`, `SourceName`, `Parsec`, `ParsecT`. Removed exports: `Parser`, `ParserT` [API change]. + Export `errorMessages`, `messageString` [API change]. + Export `fromParsecError`, which can be used to turn a parsec ParseError into a regular PandocParseError (#8382) [API change]. + Remove `nested` [API change]. It was not being used, and in fact it was a bad idea from the beginning, as it had no hope of solving the problem it was introduced to solve. + Change `characterReference`, `charsInBalanced`. `characterReference` so they now return a Text (some named references don't correspond to a single Char). Use the the `lookupEntity` function from commonmark-hs instead of the slow one from tagsoup [API change]. + `charsInBalanced` now takes a Text parser rather than a Char parser as argument [API change]. * Text.Pandoc.Shared: + Export `textToIdentifier` [API change]. + Remove deprecated `crFilter`. [API change] + Remove deprecated `deLink`. [API change] + Deprecate `notElemText`. + Deprecate `makeMeta`. + Remove `pandocVersion` (now available in Text.Pandoc.Version as `pandocVersionText`). + Remove `findM` [API change]. This was only used in one place, and can be replaced with simpler code. + Remove deprecated `makeMeta` [API change]. + Remove `ordNub` [API change]. This is just `nubOrd` from Data.Containers.ListUtils. + Remove `mapLeft` [API change]. This is just a synonym for Bifunctor.first. + Remove `elemText`, `notElemText` [API change]. + Drop export of `pandocVersion` and `pandocVersionText`, which are now exported by Text.Pandoc.Version. + Remove `escapeURI`, `isURI`. These are now exported by Text.Pandoc.URI, and removing them from Shared helps make the module structure more straightforward. + Use LineBreak as default block sep in `blocksToInlines`. (#8499, Albert Krewinkel). This change also affects the `pandoc.utils.blocks_to_inlines` Lua function. + `defaultUserDataDir` is no longer exported (it has been moved to T.P.Data) [API change]. + New function `figureDiv`, offering offers a standardized way to convert a figure into a Div element (Albert Krewinkel) [API change]. * Text.Pandoc.Writers.Shared: + Export `htmlAddStyle`, `htmlAlignmentToString` and `htmlAttrs` [API change] (Wout Gevaert). + Use 'literal tag' instead of 'text (T.unpack tag)' in `tagWithAttrs` (Wout Gevaert). + `toTableOfContents`: handle nested Divs better (#8402). * Rename Text.Pandoc.Network.HTTP -> Text.Pandoc.URI. This is still an unexported internal module. Export `urlEncode`, `escapeURI`, `isURI`, `schemes`, `uriPathToPath`. Drop exports of `schemes` and `uriPathToPath`. * Text.Pandoc.URI `isURI`: don't require non-ASCII characters to be escaped (#8508). * Rename Text.Pandoc.Readers.LaTeX.Types -> Text.Pandoc.TeX (internal module). * Text.Pandoc.Options: + WriterOptions now has a field `writerListTables`, specifying that list tables be used in RST output [API change]. + New `writerEpubTitlePage` field on `WriterOptions` (#6097) [API change]. + Remove `writerEpubChapterLevel`, add `writerSplitLevel` [API change]. * Text.Pandoc.Filter: + Export `applyFilters` [API change]. + Export `applyJSONFilter` [API Change] (Albert Krewinkel). + Parameterize `applyFilters` over scripting engine [API change] (Albert Krewinkel). * New exported module Text.Pandoc.Chunks [API change]. This module provides functions to split Pandoc documents into chunks to be rendered in separate files, e.g. one per section. Internal identifiers are rewritten appropriately to point to the new locations (#6122). * Text.Pandoc.Readers: + Change argument type of `getReader`, so it takes a `FlavoredFormat` instead of a `Text` [API change] (Albert Krewinkel). * Text.Pandoc.Writers: + Change argument type of `getWriter`, so it takes a `FlavoredFormat` instead of a `Text` [API change] (Albert Krewinkel). * Text.Pandoc.Templates: + Do not try to normalize input to `getDefaultTemplate` (Albert Krewinkel). The function `getDefaultTemplate` no longer splits off extension modifers from the given format, as that conflicts with using custom writers as formats. Haskell library users should use `getDefaultTemplate <=< (fmap formatName . parseFlavoredFormat)` if the input format can still contain extensions. The same is true for `compileDefaultTemplate`, which calls `getDefaultTemplate` internally + Add Wrapper type documentation (#8490, William Rusnack). * New exported module Text.Pandoc.Scripting (Albert Krewinkel). The module contains the central data structure for scripting engines (e.g., Lua) [API change]. * Text.Pandoc.Error: + Add new PandocError constructor `PandocNoScriptingEngine` [API change] (Albert Krewinkel). + Add new PandocError constructor `PandocFormatError` [API change] (Albert Krewinkel). The new error is used to report problems with input or output format specifications. + Add new PandocError constructor `PandocNoTemplateError` (Albert Krewinkel). + Remove `PandocParsecError` constructor from `PandocError` (#8385). Henceforth we just use `PandocParseError`. * New module Text.Pandoc.Version, exporting `pandocVersionText` and `pandocVersion` [API change]. `pandocVersion` returns a `Version` instead of a `Text`, which is consistent with `pandocTypesVersion`. * Text.Pandoc.Class: + Make `getPOSIXTime`, `getZonedTime` sensitive to `SOURCE_DATE_EPOCH` environment variable if set (#7093). (`getTimestamp` was already sensitive.) This ensures that EPUB builds are reproducible. + Text.Pandoc.Class no longer exports `readDataFile`, `readDefaultDataFile`, `setTranslations`, and `translateTerm` [API change]. + Text.Pandoc.Class now exports `checkUserDataDir` [API change]. * T.P.Class.IO: export function `writeMedia` [API change] (Albert Krewinkel). This is useful for the `pandoc.mediabag` module. * Separate out Text.Pandoc.Data and Text.Pandoc.Translations from Text.Pandoc.Class (#8348). This makes Text.Pandoc.Class more self-contained. + Text.Pandoc.Data is now an exported module, providing `readDataFile` and `readDefaultDataFile` (both formerly provided by Text.Pandoc.Class), and also `getDataFileNames` (formerly unexported in Text.Pandoc.App.CommandLineOptions) and `defaultUSerDataDir` (formerly provided by Text.Pandoc.Shared). [API change] + Text.Pandoc.Translations is now an exported module (along with Text.Pandoc.Translations.Types), providing `readTranslations`, `getTranslations`, `setTranslations`, `translateTerm`, `lookupTerm`, `readTranslations`, `Term(..)`, and `Translations` [API change]. * Text.Pandoc now exports Text.Pandoc.Data and `setTranslations` and `translateTerm` {API change]. * Export module Text.Pandoc.Class.IO [API change]. The module is useful when defining instances of class PandocMonad for types that are also instances of MonadIO. * Remove modules Text.Pandoc.Writers.Custom and Text.Pandoc.Readers.Custom [API Change] (Albert Krewinkel). The functions `writeCustom` and `readCustom` are available from module Text.Pandoc.Lua. * Text.Pandoc.Server: + Split this module into a separate package, `pandoc-server`, allowing the `pandoc` library to be compiled without server support. + Return object if JSON is accepted. Previously we just returned a JSON-encoded string. Now we return something like: ``` { "output": "

hello

" "base64": false, "messages": [ { "message": "Not rendering RawInline (Format \"tex\") \"\\\\noe\"", "verbosity": "INFO" } ], } ``` This is a change in the pandoc-server JSON API. + Set translations in the writer based on `lang` metadata. + Return error in JSON object if response is JSON. + Remove `parseServerOpts`. [API change] * Text.Pandoc.Lua: + This module has been moved to a separate package, `pandoc-lua-engine`. + Export `applyFilter`, `readCustom`, and `writeCustom`. No longer export the lower-level function `runFilterFile` [API change]. + Change type of `applyFilter` [API Change] (Albert Krewinkel). The module Text.Pandoc.Filter.Lua has been merged into Text.Pandoc.Lua. The function `applyFilter` now has type ``` haskell applyFilter :: (PandocMonad m, MonadIO m) => Environment-> [String]-> FilePath-> Pandoc-> m Pandoc ``` where `Environment` is defined in Text.Pandoc.Filter.Environment. + Export new function `getEngine` [API Change]. The function returns the Lua scripting engine. + Add unexported modules T.P.Lua.Reader, T.P.Lua.Writer. These contain the definitions of `readCustom` and `writeCustom` that were previously in T.P.Readers.Custom and T.P.Writers.Custom. + Cleanup module dependencies, for a cleaner module dependency graph. + The `writeCustom` function has changed to return a Writer and an ExtensionsConfig [API change]. This allows ByteString writers to be defined. + The `readCustom` function has changed to return a Reader and an ExtensionsConfig [API change]. * Lua subsystem (Albert Krewinkel): + The whole Lua subsystem has been moved to a separate package, `pandoc-lua-engine`. `pandoc` does not depend on it. `convertWithOpts` has a new parameter that can be used to pass in the scripting engine defined in `pandoc-lua-engine` (or a different one, in theory). + Fix the behavior of Lua "Version" objects under equality comparisons (#8267). + Support running Lua with a GC-collected Lua state. + Ensure that extensions marshaling is consistent. + Produce more informative error messages for pandoc errors. Errors are reported in Lua in the same words in which they would be reported in the terminal. + Add new module `pandoc.format`. The module provides functions to query the set of extensions supported by formats and the set of extension enabled per default. + Add function `pandoc.template.apply`. + Add function `pandoc.template.meta_to_context`. The functions converts Meta values to template contexts; the intended use is in combination with `pandoc.template.apply`. + Allow Doc values in `WriterOptions.variables`. The specialized peeker and pusher function for `Context Text` values does not go via JSON, and thus keeps Doc values unchanged during round-tripping. + Fix rendering of Lua errors in Lua, so that the `Error running Lua` message is not prepended multiple times. + Add new module `pandoc.zip`. + Allow strings in place of compiled templates (#8321). This allows to use a string as parameter to `pandoc.template.apply` and in the WriterOptions `template` field. + Rename `reader_extensions`/`writer_extensions` globals as `Extensions` (#8390). + Add `pandoc.scaffolding.Writer` (#8377). This can be used to reduce boilerplate in custom writers. + Fix peeker for PandocError (Albert Krewinkel). String error messages were incorrectly popped of the stack when retrieving a PandocError. + Add functions `pandoc.text.toencoding`, `pandoc.text.fromencoding` (#8512, Albert Krewinkel). + Add `pandoc.cli` module. Allow processing of CLI options in Lua. + Support `-D` CLI option for custom writers. A new error `PandocNoTemplateError` (code 87) is thrown if a template is required but cannot be found. + Allow table structure as format spec. This allows to pass structured values as format specifiers to `pandoc.write` and `pandoc.read`. + Add function `pandoc.mediabag.write` (Albert Krewinkel). + Add module `pandoc.structure` (Albert Krewinkel). The function `make_sections` has been given a friendlier interface and moved to the new module; the old `pandoc.utils.make_sections` has been deprecated. * Custom writers: + The global variables `PANDOC_DOCUMENT` and `PANDOC_WRITER_OPTIONS` are no longer set when the writer script is loaded. Both variables are still set in classic writers before the conversion is started, so they can be used when they are wrapped in functions. + Deprecate classic custom writers. + Add function `pandoc.write_classic`. The function can be used to convert a classic writer into a new-style writer by setting it as the value of `Writer`: ``` lua Writer = pandoc.write_classic ``` or to fully restore the old behavior: ``` lua function Writer (doc, opts) PANDOC_DOCUMENT = doc PANDOC_WRITER_OPTIONS = opts load(PANDOC_SCRIPT_FILE)() return pandoc.write_classic(doc, opts) end ``` + Support extensions in custom writers. Custom writers can define the extensions that they support via the global `writer_extensions`. The variable's value must be a table with all supported extensions as keys, and their default status as values. For example, the below specifies that the writer supports the extensions `smart` and `sourcepos`, but only the `smart` extension is enabled by default: ``` lua writer_extensions = { smart = true, sourcepos = false, } ``` + Custom writers can define a default template via a global `Template` function; the data directory is no longer searched for a default template. Writer authors can restore the old lookup behavior with ``` lua Template = function () local template return template.compile(template.default(PANDOC_SCRIPT_FILE)) end ``` * Custom readers: + Support extensions in custom readers. Custom readers, like writers, can define the set of supported extensions by setting a global. E.g.: ``` lua reader_extensions = { smart = true, citations = false, } ``` * Use latest versions of `commonmark-extensions`, `texmath`, `citeproc`, `gridtables`, and `skylighting`. * Use pandoc-types 1.23. This adds the `Figure` Block constructor and removes the `Null` Block constructor. * Require aeson >= 2.0. * Use jira-wiki-markup 1.5.0 (#8511, Albert Krewinkel). Fixes issues with icon-like sequences at the beginning of words. * Use doctemplates 0.11, avoiding a transitive dependency on HsYAML. * Use skylighting 0.13.1.2. * Allow mtl 2.3.1 (Alexander Batischev). * Use latest skylighting-format-context. * Allow building with mtl 2.3. * Remove `lua53` flag. We now only support Lua 5.4. * Add hie.yaml for haskell language server. * Add tools/latex-package-dependencies.lua. * Update default CSL with latest `chicago-author-date.csl`. * make_artifacts.sh: various small improvements. * Remove sample.lua from data files (#8356). * Documentation: + Deprecate `PANDOC_WRITER_OPTIONS` in custom writers (Albert Krewinkel). + Document `pandoc.write_classic` (Albert Krewinkel). + Document new table features (Albert Krewinkel). + Clarify what background-image does in reveal.js (#6450). + Documentation improvements for `blank_before_blockquote` (#8324, Pranesh Prakash). + Update grid table documentation (#8346). + Add note about MathJax fonts to `--embed-resources`. + Use cabal's --package-env more (#8317, Artem Pelenitsyn). + Modify Zerobrane instructions to use Lua 5.4 (#8353, Ian Max Andolina). + Fix documentation for highlight-style in `pandoc-server.md`. + Fix link to fedora package site (#8246, Akos Marton). + Rephrase paragraph on format extensions (#8375, Ilona Silverwood). + Update README.template (#8496, Sven Wick). + Fix a tiny typo in lua-filters.md (TomBen). + Clarify that `--css` should be used with `-s`. + Clarify font selection for pdf -t ms (#8421, nbehrnd). + Clarify docs for `--metadata-file` (#8459). + Fix typo in epub.md (Vladimir Alexiev). + Add missing backtick in filters.md (R. N. West). + `doc/lua-filters.md`: add documentation for `pandoc.format` (Albert Krewinkel). + Fix epub-embed-font documentation (#8455, Terence Eden). + Removed obsolete Templates section in CONTRIBUTING.md. + Add manual section on accessible PDFs, archiving standards (#8312, Albert Krewinkel). * Tests.Command: remove unused `runTest`. * Add pandoc-lua.1 man page. * Improve `shell.nix`. * Add `tools/moduledeps.lua` for inspecting the internal module dependency tree. * Fix macOS zip so pandoc-server is a symlink. This cuts its size by 2x. * CI: Improve CI speed by caching more, eliminating macos builds, and splitting benchmarks into a separate action, run by manual dispatch. (We still test that benchmarks build in the regular CI.) The cache can be expired manually by modifying the secret `CACHE_VERSION`. * Remove the unnecessary Setup.hs from pandoc. Cabal does not need this with build-type 'simple'. * Add pandoc-lua and pandoc-server (symlinks) and their man pages to releases. * Use hslua-cli package for pandoc-lua interface (Albert Krewinkel). * Add `server` flag to pandoc-cli, allowing it to be compiled without server support. * pandoc-cli: Allow building a binary without Lua support (Albert Krewinkel). Disabling the `lua` cabal flag will result in a binary without Lua. * Move `--version` handling to pandoc-cli. We need it here in order to print information about whether server and Lua support have been compiled in. * Move `nightly` flag from pandoc to pandoc-cli (#8339). * Makefile changes: - `make help` will now print all the targets and what they do. - Add targets: `coverage`, `weeder`, `moduledeps`, `prerelease`, `ghcid`, `repl`, `linecounts`, `hie.yaml`, `binpath`. - Note that you can `` alias pandoc=`make binpath` `` for convenient local testing of a build. - Rename `quick-cabal` -> `build`, `quick-test` -> `test`. - Exclude tests from `SOURCEFILES`. * Factor out xml-light into an internal library. * Add CITATION.cff (#8434). * Move trypandoc to a separate repository, jgm/trypandoc. ## pandoc 2.19.2 (2022-08-22) * Fix regression with data uris in 2.19.1 (#8239). In 2.19.1 we used the base64URL encoding rather than base64. * pandoc-server: handle `citeproc` parameter as documented (#8235). * Org reader: treat *emacs-jupyter* src blocks as code cells (#8236, Albert Krewinkel). This improves support for notebook-like org files that are intended to be used with emacs-jupyter package. * HTML writer and templates: revert to using `width` property for column widths (Albert Krewinkel). The default `flex` and `overflow-x` properties of a column are set to `auto`. In combination, these changes allow to get good results when using columns with or without explicit widths. * Org writer (Albert Krewinkel): + Add support for jupyter nodebook cells (#6367). + Prefix code language of ipynb code blocks with `jupyter-`. This is the convention used by the *emacs-jupyter* package. + Keep code block attributes as header args. This allows to keep more information in the resulting `src` blocks, making it easier to roundtrip from or through Org. Org babel ignores unknown header arguments. + Add code block identifier as `#+name` to src blocks. * Fix some typos in the codebase (luz paz). * Require hslua-module-path 1.0.3 (#8228, Albert Krewinkel). ## pandoc 2.19.1 (2022-08-18) * Add server capabilities. + New exported module Text.Pandoc.Server [API change]. + The pandoc executable now starts up a web server when renamed or symlinked as `pandoc-server`, and functions as a CGI program when renamed or symlinked as `pandoc-server.cgi`. See the man page for `pandoc-server` for full documentation. * Text.Pandoc.App.Opts: Redo `FromJSON` for `Opt` so that optional values can be omitted (in which case the values from `defaultOptions` are used). * Org reader: treat "abstract" block as metadata (Albert Krewinkel, #8204). A block of type "abstract" is assumed to define the document's abstract. It is transferred from the main text to the metadata. * Org template: add abstract from metadata as block of type "abstract" (#8204). * HTML writer: use `flex` property for column widths (Albert Krewinkel, #8232). * LaTeX writer: + Add label to tables that have an identifier (Albert Krewinkel, #8219). Tables with an identifier are marked with a `\label`. A caption is always included in this case, even if the caption is empty. + Use `\textquotesingle` for straight quotes in text. + Fix widths of multicolumn cells (#8218). * LaTeX template: fix behavior of `colorlinks` variable (Albert Krewinkel, #8226). Fixes a regression in 2.19 that required the `boxlinks` variable to be set in addition to the usual link coloring variables. Otherwise links were never colored in LaTeX PDF output. * Text.Pandoc.Highlighting: Export `lookupHighlightingStyle` [API change]. Previously this lived in an unexported module Text.Pandoc.App.CommandLineOptions, under the name `lookupHighlightStyle`. * Text.Pandoc.App: + Remove unneeded MonadIO constraints in readSources. + Factor out `convertWithOpts'` from `convertWithOpts`. This runs in any PandocMonad, MonadIO, MonadMask instance. So far it is not exported, but it might find a use later. * Support `--strip-comments` in commonmark/gfm (#8222). This change makes the commonmark reader sensitive to `readerStripComments`. * Lua: add function `pandoc.utils.citeproc` (Albert Krewinkel). The function runs the *citeproc* processor on a Pandoc document. Exposing this functionality to Lua allows to make citation processing part of a filter or writer, simplifies the creation of multiple bibliographies, and enables the use of varying citation styles in different parts of a document. * Refactor `linux/make_artifacts.sh`. * Update INSTALL.md installation from source instructions. * Use base64 package instead of base64-bytestring. It is supposed to be faster and more standards-compliant. * trypandoc improvements: + Add dropdown with canned examples. + Add citeproc support. + Support csv, bibliographic and binary formats. + Add load from file. + Add permalink. Don't always reload page. + Use vanilla JS and CSS + the new `pandoc-server.cgi`. * Allow haddock-library-1.11.0. * Convert `tool/extract-changes.hs` to a Lua filter. ## pandoc 2.19 (2022-08-03) * Add `--embed-resources` flag (Elliot Bobrow, #7331). This can be used to embed resources without implying `--standalone`. Deprecate `--self-contained` in favor of `--embed-resources --standalone`. * Allow environment variable interpolation in `highlight-style` and `pdf-engine` fields in defaults files (#8061; Jaehwang Jung, #8073). * Allow placing custom readers and writers in user data directory (Albert Krewinkel, #8112) (`readers` and `writers` subdirectories). * Add `tsv` (tab separated values) as an input format (#7974). [API change]: Text.Pandoc.Readers.CSV now exports `readTSV`. Internal change: In Text.Pandoc.CSV, `CSVOptions` has changed so that `csvQuote` takes a Maybe value. * Add `tex_math_dollars` to `gfm` default extensions (reflecting gfm's new support for math). * RST, Org, Markdown readers: support rowspans and colspans in grid tables (#8202, Albert Krewinkel). Note: the writers does not yet support these more complex grid table features, so these complex grid tables will not round-trip. * HTML, LaTeX, and MediaWiki readers: use `formatCode` (#8162, #8129, Elliot Bobrow). This moves formatting from inside inline code elements to the outside, since pandoc's Code element only takes string content. * Markdown reader: + Don't parse inline notes with blank lines inside (#8028). + Allow attributes in special spans (e.g. `smallcaps`, `underline`) (Albert krewinkel, #4102). These spans are parsed as SmallCaps or Underline elements, but any attributes are included in a wrapping Span. * HTML reader: + Allow sublists that are not marked as items (Albert Krewinkel, #8150). This is technically invalid HTML, but it can be found in the wild and browsers handle it. * Org reader (Albert Krewinkel): + Recognize absolute paths on Windows (Albert Krewinkel, #8201). + Recognize {webp,jxl} files as images (YI). + Allow attrs for Org tables (Albert Krewinkel, #8049). Tables with attributes are no longer wrapped in Div elements; attributes are added directly to the table element. + Support line selection in INCLUDE directives (Brian Leung, #8060). + Fix Post / Pre mixup when setting emphasis chars (Amir Dekel, #8134). * LaTeX reader: + Support `\includesvg` (#8027). + Unescape characters in `\lstinline` inside `\passthrough` (#8179). + Improve `mathEnvWith` (#8122). When converting e.g. an align environment to an aligned environment inside a Math element, we need to include a newline before the `\end{aligned}`, since the previous line might end in a comment. + Fix treatment of extensions for `\input` in LaTeX reader (#8092). Previously we required a `.tex` extension, but TeX allows any extension for `\input` (as opposed to `\include`). * RTF reader: + support `\nosupersub` (#8170). * TikiWiki reader: + Support underlined text * DocBook reader: + Improved reading `` elements (Frerich Raabe, #8065). * JATS reader: + Strip `ref-` prefix from ref id in xref (#8007). + Support edition in references (#8087). * RIS reader: + Make parser more forgiving (#8034). Allow blank lines after entries. Allow entries with no space after the `-`, provided they just have a newline, e.g. `DB -\n`. + Get right order of names (#8055). * MediaWiki reader: + Allow HTML comment after row start (#8110). * DokuWiki reader: + The `tex_math_dollars` extension is now supported for `dokuwiki` (but off by default) (#8178). + Content inside `...` is parsed as raw LaTeX inline, and inside `..` as raw LaTeX block (#8178). + The behavior of `...` is changed, so that instead of producing a code block, it produces raw HTML with ``. * LaTeX writer: + Improve grouping with autocites (#8088). + Extend list of book documentclasses (Wentau Han, #8053). + Fix width of multicolumn cells (Albert Krewinkel, #8090). Cells spanning multiple columns must be given an explicit width, calculated from the table properties. + Beamer: allow containsverbatim as alternative to fragile (#8080). * HTML writer: + Add 'footnotes' identifier to footnotes section (#8043). + Fix bug with `--number-offset`. This formerly caused section divs to be produced, even when `--section-divs` was not specified (#8097). + Use CSS flexboxes for columns (Albert Krewinkel). This allows an arbitrary number of columns, while the previous approach assumed exactly two columns. + Allow "spanlike" classes to be combined (see #8194). Previously classes like "underline" and "marked" had to be the first class in a span in order for the span to be interpreted as a "ul" or "mark" element. This commit allows these special classes to be "stacked," e.g. `[test]{.mark .underline}`; in addition, the special classes are no longer required to come first in the list of classes. + Avoid doubled style attribute when height and width are added to style because of an image, but the image already has a style attribute (#8047). + Do not include the deprecated doc-endnote role (#8030). doc-endnote was deprecated in DPUB-ARIA 1.1. + Remove extra soft break for tasklist (black-desk, #8142). Browser will display the extra newline character between checkbox and text as a space, which make tasklist items cannot be aligned. * EPUB writer: + Allow choice of math method for v3 (#8164). Previously we always used MathML for math in EPUB3, because the spec includes MathML. But this is not widely supported by readers, so it seems better to allow users to choose their math method as they can with EPUB2 or HTML. **NOTE:** Existing workflows that produce EPUBv3 documents including math will be affected by this change. You must add `--mathml` to your command line if you want to continue producing MathML. * RST writer: + Fix missing spaces with nested inlines (#8182). + Always escape literal backslash (#8178). * Ms writer: + Add comment in preamble stating generator. + Fix roff ms syntax highlighting definitions (#8175, thanks to Branden Robinson). * ConTeXt writer: + Support complex table structures (Albert Krewinkel, #8116). The following table feature are now supported in ConTeXt: - colspans, - rowspans, - multiple bodies, - row headers, and - multi-row table head and foot. The wrapping `placetable` environment is also given a `reference` option with the table identifier, enabling referencing of the table from within the document. + Unify link handling (Albert Krewinkel, #8096). Autolinks, i.e. links with content that's the same as the linked URL, are now marked with the `\url` command. All other links, both internal and external, are created with the `\goto` command, leading to shorter, slightly more idiomatic code. As before, autolinks can still be styled via `\setupurl`, other links via `\setupinteraction`. + Use "sectionlevel" environment for headings (Albert Krewinkel, #5539). The document hierarchy is now conveyed using the `\startsectionlevel`/`\stopsectionlevel` by default. This makes it easy to include pandoc-generated snippets in documents at arbitrary levels. The more semantic environments "chapter", "section", "subsection", etc. are used if the `--top-level-division` command line parameter is set to a non-default value. * Docx writer: + Add `w:lang` to `rPr` for Span and Div with lang attribute, so that Word can know that "Apfel" is not a spelling error (#8026). + Prevent crashing when handling invalid tables (Albert Krewinkel, #8102). Tables with different numbers of cells per row would sometimes crash pandoc. This fix prevents this by cutting off overlong rows. * ICML writer: + Support custom-style attribute on Table (#8079). * AsciiDoc writer: + Fix commas in link text (#8070). Commas in link text trigger interpretation of attributes. To block this, we replace them with numeric entities. + Fix underline. We were rendering it as `+++text+++`; this is now changed to `[.underline]#text#`. See comment at . * FB2 writer: + Fix handling of non-section Divs (#8123). * Markdown writer: + Disable soft wrapping when `hard_line_breaks` enabled (#8035). We were already doing this for `markdown`; this commit does the same thing for `markua` and `commonmark` and `gfm`. + Avoid excessive indentation on bullet lists for `commonmark`, `markua`, `gfm`. They are now nested by 2 spaces instead of 4 (#8011). * Text.Pandoc.Class: + Add new function `findFileWithDataFallback` [API Change] (Albert Krewinkel). + `fillMediaBag`: Keep attributes of original image on Span (Albert Krewinkel, #8099). Images that cannot be fetched are replaced with a Span that contains the image's description. The span now also retains all original image attributes and inherits all attributes of the image. Furthermore, the classes `image` and `placeholder` are added, and path and title are store in attributes `original-image-src` and `original-image-title`, respectively. * Text.Pandoc.Shared: + `makeSections`: don't make a section for a div with class "fragments" (#8098). + Ensure that Nulls are ignored by `makeSection` and in segmenting slides (#8155). + Add `formatCode` function to Text.Pandoc.Shared [API change] (Elliot Bobrow, #8129). + `taskListItemToAscii`: handle asciidoctor's characters (#8011). Asciidoctor uses different unicode characters for task lists; we should recognize them too and be able to convert them to ascii task lists in formats like gfm. + Deprecate `deLink` and mark for later removal. * Text.Pandoc.Writers.Shared: + `toTableOfContents`: Don't replace links with empty spans in TOC (#8020). * Text.Pandoc.Readers.Metadata: + Ensure that metadata values w/o trailing newlines are parsed as inlines, as the manual states. Previously, they were parsed as inlines if they would otherwise have been a single Plain or Para, but otherwise left unchanged. This led to some quirky results (e.g. #8143). We now use the general function `blocksToInlines` from T.P.Shared. * Text.Pandoc.Parsing: + Simplify `gridTableWith'`, `gridTableWith` [API Change] (Albert Krewinkel). The functions `gridTableWith` and `gridTableWith'` no longer takes a boolean argument that toggles whether a table head should be parsed: both, tables with heads and without heads, are always accepted now. * Lua subsystem (Albert Krewinkel): + Extend `pandoc.system` module (Albert Krewinkel, #8184). The module now has the additional functions `list_directory`, `make_directory`, and `remove_directory`. This makes it easier to write cross-platform scripts that need to inspect or modify the file system. + Require pandoc-lua-marshal 0.1.7. Adds a `clone` methods to Pandoc objects and allows to pass Blocks in instead of full Caption elements. + Add fields `pandoc.readers` and `pandoc.writers` (#8177). The set of supported input and output formats is made available to Lua users. + Ensure that tables marshaled via JSON arrays behave like Lists. This allows to invoke methods like `map` and `includes` on lists like `PANDOC_WRITER_OPTIONS.extensions`. + Require hslua-2.2.1, unless lua53 flag is set, and do not reset foreign encoding before running Lua. This fixes a problem where the encoding used for Lua filenames would sometimes mismatch the encoding used by the OS. + Simplify module loading code. Modules are now loaded directly; the special pandoc Lua package searcher is no longer necessary and has been removed. + Add function pandoc.mediabag.fill (#8104). The function allows to fill the mediabag with all images in a given document. Images that cannot be fetched are replaced with a Span containing the image description. * Populate mediabag after filters have run (Albert Krewinkel, #8099). The mediabag is filled with document resources after the filters have run. This allows, for example, filter authors to modify image paths before pandoc tries to fetch the images. Lua filters that rely on a filled mediabag can use the new `pandoc.mediabag.fill` function to perform that action in the filter. * Ms template: redefine rather than removing .CH macro (#8175). * JATS template (Albert Krewinkel, except as noted): + Include particles, prefix, suffix in names. + Mark authors with cor-id as corresponding authors. Corresponding authors are marked by setting the attribute `corresp="yes"` in their respective `` element. + Unconditionally include permissions element (#8040). Fixes a bug that caused license information to be omitted when no copyright information was provided. + Follow JATS4R recommendation and PudMed Central for license URI (Castedo Ellerman, #8041). * LaTeX template: + Rename `\textormath` to `\TextOrMath` (Hos Es, #8036). + Fix links-as-notes (Albert Krewinkel, #8077). * HTML template styles: + Remove `span.underline` rule. This is superfluous now that we render Underline as ``. + Improve CSS for task lists (#8151). * LaTeX template: Add `boxlinks` variable for LaTeX/PDF output (#8198). If `boxlinks` is set but `colorlinks` is not, then boxes will be printed around links (`hidelinks` will not be set in `hypersetup`). * `--self-contained`: Handle `url()` in ` pandoc-3.1.3/data/docbook-entities.txt0000644000000000000000000007031407346545000016074 0ustar0000000000000000aacgr 03AC Aacgr 0386 aacute 00E1 Aacute 00C1 abreve 0103 Abreve 0102 ac 223E acd 223F acE 223E 0333 acirc 00E2 Acirc 00C2 acute 00B4 acy 0430 Acy 0410 aelig 00E6 AElig 00C6 af 2061 afr 1D51E Afr 1D504 agr 03B1 Agr 0391 agrave 00E0 Agrave 00C0 alefsym 2135 aleph 2135 alpha 03B1 Alpha 0391 amacr 0101 Amacr 0100 amalg 2A3F amp 0026 AMP 0026 and 2227 And 2A53 andand 2A55 andd 2A5C andslope 2A58 andv 2A5A ang 2220 ange 29A4 angle 2220 angmsd 2221 angmsdaa 29A8 angmsdab 29A9 angmsdac 29AA angmsdad 29AB angmsdae 29AC angmsdaf 29AD angmsdag 29AE angmsdah 29AF angrt 221F angrtvb 22BE angrtvbd 299D angsph 2222 angst 00C5 angzarr 237C aogon 0105 Aogon 0104 aopf 1D552 Aopf 1D538 ap 2248 apacir 2A6F ape 224A apE 2A70 apid 224B apos 0027 ApplyFunction 2061 approx 2248 approxeq 224A aring 00E5 Aring 00C5 ascr 1D4B6 Ascr 1D49C Assign 2254 ast 002A asymp 2248 asympeq 224D atilde 00E3 Atilde 00C3 auml 00E4 Auml 00C4 awconint 2233 awint 2A11 b.alpha 1D6C2 b.beta 1D6C3 b.chi 1D6D8 b.delta 1D6C5 b.Delta 1D6AB b.epsi 1D6C6 b.epsiv 1D6DC b.eta 1D6C8 b.gamma 1D6C4 b.Gamma 1D6AA b.gammad 1D7CB b.Gammad 1D7CA b.iota 1D6CA b.kappa 1D6CB b.kappav 1D6DE b.lambda 1D6CC b.Lambda 1D6B2 b.mu 1D6CD b.nu 1D6CE b.omega 1D6DA b.Omega 1D6C0 b.phi 1D6D7 b.Phi 1D6BD b.phiv 1D6DF b.pi 1D6D1 b.Pi 1D6B7 b.piv 1D6E1 b.psi 1D6D9 b.Psi 1D6BF b.rho 1D6D2 b.rhov 1D6E0 b.sigma 1D6D4 b.Sigma 1D6BA b.sigmav 1D6D3 b.tau 1D6D5 b.Theta 1D6AF b.thetas 1D6C9 b.thetav 1D6DD b.upsi 1D6D6 b.UpsiUpsilon b.xi 1D6CF b.Xi 1D6B5 b.zeta 1D6C7 backcong 224C backepsilon 03F6 backprime 2035 backsim 223D backsimeq 22CD Backslash 2216 Barv 2AE7 barvee 22BD barwed 2305 Barwed 2306 barwedge 2305 bbrk 23B5 bbrktbrk 23B6 bcong 224C bcy 0431 Bcy 0411 bdquo 201E becaus 2235 because 2235 Because 2235 bemptyv 29B0 bepsi 03F6 bernou 212C Bernoullis 212C beta 03B2 Beta 0392 beth 2136 between 226C bfr 1D51F Bfr 1D505 bgr 03B2 Bgr 0392 bigcap 22C2 bigcirc 25EF bigcup 22C3 bigodot 2A00 bigoplus 2A01 bigotimes 2A02 bigsqcup 2A06 bigstarUB starf bigtriangledown 25BD bigtriangleup 25B3 biguplus 2A04 bigvee 22C1 bigwedge 22C0 bkarow 290D blacklozengeUB lozf blacksquare 25AA blacktriangleUB utrif blacktriangledownUB dtrif blacktriangleleftUB ltrif blacktrianglerightUB rtrif blank 2423 blk12 2592 blk14 2591 blk34 2593 block 2588 bne 003D 20E5 bnequiv 2261 20E5 bnot 2310 bNot 2AED bopf 1D553 Bopf 1D539 bot 22A5 bottom 22A5 bowtie 22C8 boxbox 29C9 boxdl 2510 boxdL 2555 boxDl 2556 boxDL 2557 boxdr 250C boxdR 2552 boxDr 2553 boxDR 2554 boxh 2500 boxH 2550 boxhd 252C boxhD 2565 boxHd 2564 boxHD 2566 boxhu 2534 boxhU 2568 boxHu 2567 boxHU 2569 boxminus 229F boxplus 229E boxtimes 22A0 boxul 2518 boxuL 255B boxUl 255C boxUL 255D boxur 2514 boxuR 2558 boxUr 2559 boxUR 255A boxv 2502 boxV 2551 boxvh 253C boxvH 256A boxVh 256B boxVH 256C boxvl 2524 boxvL 2561 boxVl 2562 boxVL 2563 boxvr 251C boxvR 255E boxVr 255F boxVR 2560 bprime 2035 breve 02D8 Breve 02D8 brvbar 00A6 bscr 1D4B7 Bscr 212C bsemi 204F bsim 223D bsime 22CD bsol 005C bsolb 29C5 bsolhsub 27C8 bull 2022 bulletUB bull bump 224E bumpe 224F bumpE 2AAE bumpeq 224F Bumpeq 224E cacute 0107 Cacute 0106 cap 2229 Cap 22D2 capand 2A44 capbrcup 2A49 capcap 2A4B capcup 2A47 capdot 2A40 CapitalDifferentialD 2145 caps 2229 FE00 caret 2041 caron 02C7 Cayleys 212D ccaps 2A4D ccaron 010D Ccaron 010C ccedil 00E7 Ccedil 00C7 ccirc 0109 Ccirc 0108 Cconint 2230 ccups 2A4C ccupssm 2A50 cdot 010B Cdot 010A cedil 00B8 Cedilla 00B8 cemptyv 29B2 cent 00A2 centerdotUM middot CenterDotUM middot cfr 1D520 Cfr 212D chcy 0447 CHcy 0427 check 2713 checkmarkUB check chi 03C7 Chi 03A7 cir 25CB circ 02C6 circeq 2257 circlearrowleft 21BA circlearrowright 21BB circledast 229B circledcirc 229A circleddash 229D CircleDot 2299 circledRUM reg circledS 24C8 CircleMinus 2296 CirclePlus 2295 CircleTimes 2297 cire 2257 cirE 29C3 cirfnint 2A10 cirmid 2AEF cirscir 29C2 ClockwiseContourIntegral 2232 CloseCurlyDoubleQuoteUM rdquo CloseCurlyQuoteUM rsquo clubs 2663 clubsuitUB clubs colon 003A Colon 2237 colone 2254 Colone 2A74 coloneq 2254 comma 002C commat 0040 comp 2201 compfn 2218 complement 2201 complexes 2102 cong 2245 congdot 2A6D Congruent 2261 conint 222E Conint 222F ContourIntegral 222E copf 1D554 Copf 2102 coprod 2210 Coproduct 2210 copy 00A9 COPY 00A9 copysr 2117 CounterClockwiseContourIntegral 2233 crarr 21B5 cross 2717 Cross 2A2F cscr 1D4B8 Cscr 1D49E csub 2ACF csube 2AD1 csup 2AD0 csupe 2AD2 ctdot 22EF cudarrl 2938 cudarrr 2935 cuepr 22DE cuesc 22DF cularr 21B6 cularrp 293D cup 222A Cup 22D3 cupbrcap 2A48 cupcap 2A46 CupCap 224D cupcup 2A4A cupdot 228D cupor 2A45 cups 222A FE00 curarr 21B7 curarrm 293C curlyeqprec 22DE curlyeqsucc 22DF curlyvee 22CE curlywedge 22CF curren 00A4 curvearrowleft 21B6 curvearrowright 21B7 cuvee 22CE cuwed 22CF cwconint 2232 cwint 2231 cylcty 232D dagger 2020 Dagger 2021 daleth 2138 darr 2193 dArr 21D3 Darr 21A1 dash 2010 dashv 22A3 Dashv 2AE4 dbkarow 290F dblac 02DD dcaron 010F Dcaron 010E dcy 0434 Dcy 0414 dd 2146 DD 2145 ddaggerUB Dagger ddarr 21CA DDotrahd 2911 ddotseq 2A77 deg 00B0 Del 2207 delta 03B4 Delta 0394 demptyv 29B1 dfisht 297F dfr 1D521 Dfr 1D507 dgr 03B4 Dgr 0394 dHar 2965 dharl 21C3 dharr 21C2 DiacriticalAcute 00B4 DiacriticalDot 02D9 DiacriticalDoubleAcute 02DD DiacriticalGrave 0060 DiacriticalTilde 02DC diam 22C4 diamond 22C4 Diamond 22C4 diamondsuitUB diams diams 2666 die 00A8 DifferentialD 2146 digamma 03DD disin 22F2 divUM divide divide 00F7 divideontimes 22C7 divonx 22C7 djcy 0452 DJcy 0402 dlcorn 231E dlcrop 230D dollar 0024 dopf 1D555 Dopf 1D53B dot 02D9 Dot 00A8 DotDot 20DC doteq 2250 doteqdot 2251 DotEqual 2250 dotminus 2238 dotplus 2214 dotsquare 22A1 doublebarwedge 2306 DoubleContourIntegral 222F DoubleDot 00A8 DoubleDownArrow 21D3 DoubleLeftArrow 21D0 DoubleLeftRightArrow 21D4 DoubleLeftTee 2AE4 DoubleLongLeftArrow 27F8 DoubleLongLeftRightArrow 27FA DoubleLongRightArrow 27F9 DoubleRightArrow 21D2 DoubleRightTee 22A8 DoubleUpArrow 21D1 DoubleUpDownArrow 21D5 DoubleVerticalBar 2225 downarrowUM darr Downarrow 21D3 DownArrowUM darr DownArrowBar 2913 DownArrowUpArrow 21F5 DownBreve 0311 downdownarrows 21CA downharpoonleft 21C3 downharpoonright 21C2 DownLeftRightVector 2950 DownLeftTeeVector 295E DownLeftVector 21BD DownLeftVectorBar 2956 DownRightTeeVector 295F DownRightVector 21C1 DownRightVectorBar 2957 DownTee 22A4 DownTeeArrow 21A7 drbkarow 2910 drcorn 231F drcrop 230C dscr 1D4B9 Dscr 1D49F dscy 0455 DScy 0405 dsol 29F6 dstrok 0111 Dstrok 0110 dtdot 22F1 dtri 25BF dtrif 25BE duarr 21F5 duhar 296F dwangle 29A6 dzcy 045F DZcy 040F dzigrarr 27FF eacgr 03AD Eacgr 0388 eacute 00E9 Eacute 00C9 easter 2A6E ecaron 011B Ecaron 011A ecir 2256 ecirc 00EA Ecirc 00CA ecolon 2255 ecy 044D Ecy 042D eDDot 2A77 edot 0117 eDot 2251 Edot 0116 ee 2147 eeacgr 03AE EEacgr 0389 eegr 03B7 EEgr 0397 efDot 2252 efr 1D522 Efr 1D508 eg 2A9A egr 03B5 Egr 0395 egrave 00E8 Egrave 00C8 egs 2A96 egsdot 2A98 el 2A99 Element 2208 elinters 23E7 ell 2113 els 2A95 elsdot 2A97 emacr 0113 Emacr 0112 empty 2205 emptyset 2205 EmptySmallSquare 25FB emptyv 2205 EmptyVerySmallSquare 25AB emsp 2003 emsp13 2004 emsp14 2005 eng 014B ENG 014A ensp 2002 eogon 0119 Eogon 0118 eopf 1D556 Eopf 1D53C epar 22D5 eparsl 29E3 eplus 2A71 epsi 03B5 epsilon 03B5 Epsilon 0395 epsiv 03F5 eqcirc 2256 eqcolon 2255 eqsim 2242 eqslantgtr 2A96 eqslantless 2A95 Equal 2A75 equals 003D EqualTilde 2242 equest 225F Equilibrium 21CC equiv 2261 equivDD 2A78 eqvparsl 29E5 erarr 2971 erDot 2253 escr 212F Escr 2130 esdot 2250 esim 2242 Esim 2A73 eta 03B7 Eta 0397 eth 00F0 ETH 00D0 euml 00EB Euml 00CB euro 20AC excl 0021 exist 2203 Exists 2203 expectation 2130 exponentiale 2147 ExponentialE 2147 fallingdotseq 2252 fcy 0444 Fcy 0424 female 2640 ffilig FB03 fflig FB00 ffllig FB04 ffr 1D523 Ffr 1D509 filig FB01 FilledSmallSquare 25FC FilledVerySmallSquare 25AA fjlig 0066 006A flat 266D fllig FB02 fltns 25B1 fnof 0192 fopf 1D557 Fopf 1D53D forall 2200 ForAll 2200 fork 22D4 forkv 2AD9 Fouriertrf 2131 fpartint 2A0D frac12 00BD frac13 2153 frac14 00BC frac15 2155 frac16 2159 frac18 215B frac23 2154 frac25 2156 frac34 00BE frac35 2157 frac38 215C frac45 2158 frac56 215A frac58 215D frac78 215E frasl 2044 frown 2322 fscr 1D4BB Fscr 2131 gacute 01F5 gamma 03B3 Gamma 0393 gammad 03DD Gammad 03DC gap 2A86 gbreve 011F Gbreve 011E Gcedil 0122 gcirc 011D Gcirc 011C gcy 0433 Gcy 0413 gdot 0121 Gdot 0120 ge 2265 gE 2267 gel 22DB gEl 2A8C geq 2265 geqq 2267 geqslant 2A7E ges 2A7E gescc 2AA9 gesdot 2A80 gesdoto 2A82 gesdotol 2A84 gesl 22DB FE00 gesles 2A94 gfr 1D524 Gfr 1D50A gg 226B Gg 22D9 ggg 22D9 ggr 03B3 Ggr 0393 gimel 2137 gjcy 0453 GJcy 0403 gl 2277 gla 2AA5 glE 2A92 glj 2AA4 gnap 2A8A gnapprox 2A8A gne 2A88 gnE 2269 gneq 2A88 gneqq 2269 gnsim 22E7 gopf 1D558 Gopf 1D53E grave 0060 GreaterEqual 2265 GreaterEqualLess 22DB GreaterFullEqual 2267 GreaterGreater 2AA2 GreaterLess 2277 GreaterSlantEqual 2A7E GreaterTilde 2273 gscr 210A Gscr 1D4A2 gsim 2273 gsime 2A8E gsiml 2A90 gt 003E Gt 226B GT 003E gtcc 2AA7 gtcir 2A7A gtdot 22D7 gtlPar 2995 gtquest 2A7C gtrapprox 2A86 gtrarr 2978 gtrdot 22D7 gtreqless 22DB gtreqqless 2A8C gtrless 2277 gtrsim 2273 gvertneqq 2269 FE00 gvnE 2269 FE00 Hacek 02C7 hairsp 200A half 00BD hamilt 210B hardcy 044A HARDcy 042A harr 2194 hArr 21D4 harrcir 2948 harrw 21AD Hat 005E hbar 210F hcirc 0125 Hcirc 0124 hearts 2665 heartsuitUB hearts hellip 2026 hercon 22B9 hfr 1D525 Hfr 210C HilbertSpace 210B hksearow 2925 hkswarow 2926 hoarr 21FF homtht 223B hookleftarrow 21A9 hookrightarrow 21AA hopf 1D559 Hopf 210D horbar 2015 HorizontalLine 2500 hscr 1D4BD Hscr 210B hslash 210F hstrok 0127 Hstrok 0126 HumpDownHump 224E HumpEqual 224F hybull 2043 hyphen 2010 iacgr 03AF Iacgr 038A iacute 00ED Iacute 00CD ic 2063 icirc 00EE Icirc 00CE icy 0438 Icy 0418 idiagr 0390 idigr 03CA Idigr 03AA Idot 0130 iecy 0435 IEcy 0415 iexcl 00A1 iff 21D4 ifr 1D526 Ifr 2111 igr 03B9 Igr 0399 igrave 00EC Igrave 00CC ii 2148 iiiint 2A0C iiint 222D iinfin 29DC iiota 2129 ijlig 0133 IJlig 0132 Im 2111 imacr 012B Imacr 012A image 2111 ImaginaryI 2148 imagline 2110 imagpart 2111 imath 0131 imof 22B7 imped 01B5 Implies 21D2 in 2208 incare 2105 infin 221E infintie 29DD inodot 0131 int 222B Int 222C intcal 22BA integers 2124 Integral 222B intercal 22BA Intersection 22C2 intlarhk 2A17 intprod 2A3C InvisibleComma 2063 InvisibleTimes 2062 iocy 0451 IOcy 0401 iogon 012F Iogon 012E iopf 1D55A Iopf 1D540 iota 03B9 Iota 0399 iprod 2A3C iquest 00BF iscr 1D4BE Iscr 2110 isin 2208 isindot 22F5 isinE 22F9 isins 22F4 isinsv 22F3 isinv 2208 it 2062 itilde 0129 Itilde 0128 iukcyUkrainian IukcyUkrainian iuml 00EF Iuml 00CF jcirc 0135 Jcirc 0134 jcy 0439 Jcy 0419 jfr 1D527 Jfr 1D50D jmath 0237 jopf 1D55B Jopf 1D541 jscr 1D4BF Jscr 1D4A5 jsercy 0458 Jsercy 0408 jukcyUkrainian JukcyUkrainian kappa 03BA Kappa 039A kappav 03F0 kcedil 0137 Kcedil 0136 kcy 043A Kcy 041A kfr 1D528 Kfr 1D50E kgr 03BA Kgr 039A kgreen 0138 khcy 0445 KHcy 0425 khgr 03C7 KHgr 03A7 kjcy 045C KJcy 040C kopf 1D55C Kopf 1D542 kscr 1D4C0 Kscr 1D4A6 lAarr 21DA lacute 013A Lacute 0139 laemptyv 29B4 lagran 2112 lambda 03BB Lambda 039B lang 27E8 Lang 27EA langd 2991 langle 27E8 lap 2A85 Laplacetrf 2112 laquo 00AB larr 2190 lArr 21D0 Larr 219E larrb 21E4 larrbfs 291F larrfs 291D larrhk 21A9 larrlp 21AB larrpl 2939 larrsim 2973 larrtl 21A2 lat 2AAB latail 2919 lAtail 291B late 2AAD lates 2AAD FE00 lbarr 290C lBarr 290E lbbrk 2772 lbraceUM lcub lbrackUM lsqb lbrke 298B lbrksld 298F lbrkslu 298D lcaron 013E Lcaron 013D lcedil 013C Lcedil 013B lceil 2308 lcub 007B lcy 043B Lcy 041B ldca 2936 ldquo 201C ldquor 201E ldrdhar 2967 ldrushar 294B ldsh 21B2 le 2264 lE 2266 LeftAngleBracket 27E8 leftarrowUM larr Leftarrow 21D0 LeftArrowUM larr LeftArrowBar 21E4 LeftArrowRightArrow 21C6 leftarrowtail 21A2 LeftCeiling 2308 LeftDoubleBracket 27E6 LeftDownTeeVector 2961 LeftDownVector 21C3 LeftDownVectorBar 2959 LeftFloor 230A leftharpoondown 21BD leftharpoonup 21BC leftleftarrows 21C7 leftrightarrow 2194 Leftrightarrow 21D4 LeftRightArrow 2194 leftrightarrows 21C6 leftrightharpoons 21CB leftrightsquigarrow 21AD LeftRightVector 294E LeftTee 22A3 LeftTeeArrow 21A4 LeftTeeVector 295A leftthreetimes 22CB LeftTriangle 22B2 LeftTriangleBar 29CF LeftTriangleEqual 22B4 LeftUpDownVector 2951 LeftUpTeeVector 2960 LeftUpVector 21BF LeftUpVectorBar 2958 LeftVector 21BC LeftVectorBar 2952 leg 22DA lEg 2A8B leq 2264 leqq 2266 leqslant 2A7D les 2A7D lescc 2AA8 lesdot 2A7F lesdoto 2A81 lesdotor 2A83 lesg 22DA FE00 lesges 2A93 lessapprox 2A85 lessdot 22D6 lesseqgtr 22DA lesseqqgtr 2A8B LessEqualGreater 22DA LessFullEqual 2266 LessGreater 2276 lessgtr 2276 LessLess 2AA1 lesssim 2272 LessSlantEqual 2A7D LessTilde 2272 lfisht 297C lfloor 230A lfr 1D529 Lfr 1D50F lg 2276 lgE 2A91 lgr 03BB Lgr 039B lHar 2962 lhard 21BD lharu 21BC lharul 296A lhblk 2584 ljcy 0459 LJcy 0409 ll 226A Ll 22D8 llarr 21C7 llcorner 231E Lleftarrow 21DA llhard 296B lltri 25FA lmidot 0140 Lmidot 013F lmoust 23B0 lmoustache 23B0 lnap 2A89 lnapprox 2A89 lne 2A87 lnE 2268 lneq 2A87 lneqq 2268 lnsim 22E6 loang 27EC loarr 21FD lobrk 27E6 longleftarrow 27F5 Longleftarrow 27F8 LongLeftArrow 27F5 longleftrightarrow 27F7 Longleftrightarrow 27FA LongLeftRightArrow 27F7 longmapsto 27FC longrightarrow 27F6 Longrightarrow 27F9 LongRightArrow 27F6 looparrowleft 21AB looparrowright 21AC lopar 2985 lopf 1D55D Lopf 1D543 loplus 2A2D lotimes 2A34 lowast 2217 lowbar 005F LowerLeftArrow 2199 LowerRightArrow 2198 loz 25CA lozengeUB loz lozf 29EB lpar 0028 lparlt 2993 lrarr 21C6 lrcorner 231F lrhar 21CB lrhard 296D lrm 200E lrtri 22BF lsaquo 2039 lscr 1D4C1 Lscr 2112 lsh 21B0 Lsh 21B0 lsim 2272 lsime 2A8D lsimg 2A8F lsqb 005B lsquo 2018 lsquor 201A lstrok 0142 Lstrok 0141 lt 003C Lt 226A LT 003C ltcc 2AA6 ltcir 2A79 ltdot 22D6 lthree 22CB ltimes 22C9 ltlarr 2976 ltquest 2A7B ltri 25C3 ltrie 22B4 ltrif 25C2 ltrPar 2996 lurdshar 294A luruhar 2966 lvertneqq 2268 FE00 lvnE 2268 FE00 macr 00AF male 2642 malt 2720 malteseUB malt map 21A6 Map 2905 mapsto 21A6 mapstodown 21A7 mapstoleft 21A4 mapstoup 21A5 marker 25AE mcomma 2A29 mcy 043C Mcy 041C mdash 2014 mDDot 223A measuredangle 2221 MediumSpace 205F Mellintrf 2133 mfr 1D52A Mfr 1D510 mgr 03BC Mgr 039C mho 2127 micro 00B5 mid 2223 midast 002A midcir 2AF0 middot 00B7 minus 2212 minusb 229F minusd 2238 minusdu 2A2A MinusPlus 2213 mlcp 2ADB mldr 2026 mnplus 2213 models 22A7 mopf 1D55E Mopf 1D544 mp 2213 mscr 1D4C2 Mscr 2133 mstpos 223E mu 03BC Mu 039C multimap 22B8 mumap 22B8 nabla 2207 nacute 0144 Nacute 0143 nang 2220 20D2 nap 2249 napE 2A70 0338 napid 224B 0338 napos 0149 napprox 2249 natur 266E naturalUB natur naturals 2115 nbsp 00A0 nbump 224E 0338 nbumpe 224F 0338 ncap 2A43 ncaron 0148 Ncaron 0147 ncedil 0146 Ncedil 0145 ncong 2247 ncongdot 2A6D 0338 ncup 2A42 ncy 043D Ncy 041D ndash 2013 ne 2260 nearhk 2924 nearr 2197 neArr 21D7 nearrow 2197 nedot 2250 0338 NegativeMediumSpace 200B NegativeThickSpace 200B NegativeThinSpace 200B NegativeVeryThinSpace 200B nequiv 2262 nesear 2928 nesim 2242 0338 NestedGreaterGreater 226B NestedLessLess 226A NewLine 000A nexist 2204 nexists 2204 nfr 1D52B Nfr 1D511 nge 2271 ngE 2267 0338 ngeq 2271 ngeqq 2267 0338 ngeqslant 2A7E 0338 nges 2A7E 0338 nGg 22D9 0338 ngr 03BD Ngr 039D ngsim 2275 ngt 226F nGt 226B 20D2 ngtr 226F nGtv 226B 0338 nharr 21AE nhArr 21CE nhpar 2AF2 ni 220B nis 22FC nisd 22FA niv 220B njcy 045A NJcy 040A nlarr 219A nlArr 21CD nldr 2025 nle 2270 nlE 2266 0338 nleftarrow 219A nLeftarrow 21CD nleftrightarrow 21AE nLeftrightarrow 21CE nleq 2270 nleqq 2266 0338 nleqslant 2A7D 0338 nles 2A7D 0338 nless 226E nLl 22D8 0338 nlsim 2274 nlt 226E nLt 226A 20D2 nltri 22EA nltrie 22EC nLtv 226A 0338 nmid 2224 NoBreak 2060 NonBreakingSpaceUM nbsp nopf 1D55F Nopf 2115 not 00AC Not 2AEC NotCongruent 2262 NotCupCap 226D NotDoubleVerticalBar 2226 NotElement 2209 NotEqual 2260 NotEqualTilde 2242 0338 NotExists 2204 NotGreater 226F NotGreaterEqual 2271 NotGreaterFullEqual 2267 0338 NotGreaterGreater 226B 0338 NotGreaterLess 2279 NotGreaterSlantEqual 2A7E 0338 NotGreaterTilde 2275 NotHumpDownHump 224E 0338 NotHumpEqual 224F 0338 notin 2209 notindot 22F5 0338 notinE 22F9 0338 notinva 2209 notinvb 22F7 notinvc 22F6 NotLeftTriangle 22EA NotLeftTriangleBar 29CF 0338 NotLeftTriangleEqual 22EC NotLess 226E NotLessEqual 2270 NotLessGreater 2278 NotLessLess 226A 0338 NotLessSlantEqual 2A7D 0338 NotLessTilde 2274 NotNestedGreaterGreater 2AA2 0338 NotNestedLessLess 2AA1 0338 notni 220C notniva 220C notnivb 22FE notnivc 22FD NotPrecedes 2280 NotPrecedesEqual 2AAF 0338 NotPrecedesSlantEqual 22E0 NotReverseElement 220C NotRightTriangle 22EB NotRightTriangleBar 29D0 0338 NotRightTriangleEqual 22ED NotSquareSubset 228F 0338 NotSquareSubsetEqual 22E2 NotSquareSuperset 2290 0338 NotSquareSupersetEqual 22E3 NotSubset 2282 20D2 NotSubsetEqual 2288 NotSucceeds 2281 NotSucceedsEqual 2AB0 0338 NotSucceedsSlantEqual 22E1 NotSucceedsTilde 227F 0338 NotSuperset 2283 20D2 NotSupersetEqual 2289 NotTilde 2241 NotTildeEqual 2244 NotTildeFullEqual 2247 NotTildeTilde 2249 NotVerticalBar 2224 npar 2226 nparallel 2226 nparsl 2AFD 20E5 npart 2202 0338 npolint 2A14 npr 2280 nprcue 22E0 npre 2AAF 0338 nprec 2280 npreceq 2AAF 0338 nrarr 219B nrArr 21CF nrarrc 2933 0338 nrarrw 219D 0338 nrightarrow 219B nRightarrow 21CF nrtri 22EB nrtrie 22ED nsc 2281 nsccue 22E1 nsce 2AB0 0338 nscr 1D4C3 Nscr 1D4A9 nshortmid 2224 nshortparallel 2226 nsim 2241 nsime 2244 nsimeq 2244 nsmid 2224 nspar 2226 nsqsube 22E2 nsqsupe 22E3 nsub 2284 nsube 2288 nsubE 2AC5 0338 nsubset 2282 20D2 nsubseteq 2288 nsubseteqq 2AC5 0338 nsucc 2281 nsucceq 2AB0 0338 nsup 2285 nsupe 2289 nsupE 2AC6 0338 nsupset 2283 20D2 nsupseteq 2289 nsupseteqq 2AC6 0338 ntgl 2279 ntilde 00F1 Ntilde 00D1 ntlg 2278 ntriangleleft 22EA ntrianglelefteq 22EC ntriangleright 22EB ntrianglerighteq 22ED nu 03BD Nu 039D num 0023 numero 2116 numsp 2007 nvap 224D 20D2 nvdash 22AC nvDash 22AD nVdash 22AE nVDash 22AF nvge 2265 20D2 nvgt 003E 20D2 nvHarr 2904 nvinfin 29DE nvlArr 2902 nvle 2264 20D2 nvlt 003C 20D2 nvltrie 22B4 20D2 nvrArr 2903 nvrtrie 22B5 20D2 nvsim 223C 20D2 nwarhk 2923 nwarr 2196 nwArr 21D6 nwarrow 2196 nwnear 2927 oacgr 03CC Oacgr 038C oacute 00F3 Oacute 00D3 oast 229B ocir 229A ocirc 00F4 Ocirc 00D4 ocy 043E Ocy 041E odash 229D odblac 0151 Odblac 0150 odiv 2A38 odot 2299 odsold 29BC oelig 0153 OElig 0152 ofcir 29BF ofr 1D52C Ofr 1D512 ogon 02DB ogr 03BF Ogr 039F ograve 00F2 Ograve 00D2 ogt 29C1 ohacgr 03CE OHacgr 038F ohbar 29B5 ohgr 03C9 OHgr 03A9 ohm 03A9 oint 222E olarr 21BA olcir 29BE olcross 29BB oline 203E olt 29C0 omacr 014D Omacr 014C omega 03C9 Omega 03A9 omicron 03BF Omicron 039F omid 29B6 ominus 2296 oopf 1D560 Oopf 1D546 opar 29B7 OpenCurlyDoubleQuoteUM ldquo OpenCurlyQuoteUM lsquo operp 29B9 oplus 2295 or 2228 Or 2A54 orarr 21BB ord 2A5D order 2134 orderof 2134 ordf 00AA ordm 00BA origof 22B6 oror 2A56 orslope 2A57 orv 2A5B oS 24C8 oscr 2134 Oscr 1D4AA oslash 00F8 Oslash 00D8 osol 2298 otilde 00F5 Otilde 00D5 otimes 2297 Otimes 2A37 otimesas 2A36 ouml 00F6 Ouml 00D6 ovbar 233D OverBar 203E OverBrace 23DE OverBracket 23B4 OverParenthesis 23DC par 2225 para 00B6 parallel 2225 parsim 2AF3 parsl 2AFD part 2202 PartialD 2202 pcy 043F Pcy 041F percnt 0025 period 002E permil 2030 perp 22A5 pertenk 2031 pfr 1D52D Pfr 1D513 pgr 03C0 Pgr 03A0 phgr 03C6 PHgr 03A6 phi 03C6 Phi 03A6 phiv 03D5 phmmat 2133 phone 260E pi 03C0 Pi 03A0 pitchfork 22D4 piv 03D6 planck 210F planckh 210E plankv 210F plus 002B plusacir 2A23 plusb 229E pluscir 2A22 plusdo 2214 plusdu 2A25 pluse 2A72 PlusMinusUM plusmn plusmn 00B1 plussim 2A26 plustwo 2A27 pmUM plusmn Poincareplane 210C pointint 2A15 popf 1D561 Popf 2119 pound 00A3 pr 227A Pr 2ABB prap 2AB7 prcue 227C pre 2AAF prE 2AB3 prec 227A precapprox 2AB7 preccurlyeq 227C Precedes 227A PrecedesEqual 2AAF PrecedesSlantEqual 227C PrecedesTilde 227E preceq 2AAF precnapprox 2AB9 precneqq 2AB5 precnsim 22E8 precsim 227E prime 2032 Prime 2033 primes 2119 prnap 2AB9 prnE 2AB5 prnsim 22E8 prod 220F Product 220F profalar 232E profline 2312 profsurf 2313 prop 221D Proportion 2237 Proportional 221D propto 221D prsim 227E prurel 22B0 pscr 1D4C5 Pscr 1D4AB psgr 03C8 PSgr 03A8 psi 03C8 Psi 03A8 puncsp 2008 qfr 1D52E Qfr 1D514 qint 2A0C qopf 1D562 Qopf 211A qprime 2057 qscr 1D4C6 Qscr 1D4AC quaternions 210D quatint 2A16 quest 003F questeq 225F quot 0022 QUOT 0022 rAarr 21DB race 223D 0331 racute 0155 Racute 0154 radic 221A raemptyv 29B3 rang 27E9 Rang 27EB rangd 2992 range 29A5 rangle 27E9 raquo 00BB rarr 2192 rArr 21D2 Rarr 21A0 rarrap 2975 rarrb 21E5 rarrbfs 2920 rarrc 2933 rarrfs 291E rarrhk 21AA rarrlp 21AC rarrpl 2945 rarrsim 2974 rarrtl 21A3 Rarrtl 2916 rarrw 219D ratail 291A rAtail 291C ratio 2236 rationals 211A rbarr 290D rBarr 290F RBarr 2910 rbbrk 2773 rbraceUM rcub rbrackUM rsqb rbrke 298C rbrksld 298E rbrkslu 2990 rcaron 0159 Rcaron 0158 rcedil 0157 Rcedil 0156 rceil 2309 rcub 007D rcy 0440 Rcy 0420 rdca 2937 rdldhar 2969 rdquo 201D rdquor 201D rdsh 21B3 Re 211C real 211C realine 211B realpart 211C reals 211D rect 25AD reg 00AE REG 00AE ReverseElement 220B ReverseEquilibrium 21CB ReverseUpEquilibrium 296F rfisht 297D rfloor 230B rfr 1D52F Rfr 211C rgr 03C1 Rgr 03A1 rHar 2964 rhard 21C1 rharu 21C0 rharul 296C rho 03C1 Rho 03A1 rhov 03F1 RightAngleBracket 27E9 rightarrowUM rarr Rightarrow 21D2 RightArrowUM rarr RightArrowBar 21E5 RightArrowLeftArrow 21C4 rightarrowtail 21A3 RightCeiling 2309 RightDoubleBracket 27E7 RightDownTeeVector 295D RightDownVector 21C2 RightDownVectorBar 2955 RightFloor 230B rightharpoondown 21C1 rightharpoonup 21C0 rightleftarrows 21C4 rightleftharpoons 21CC rightrightarrows 21C9 rightsquigarrow 219D RightTee 22A2 RightTeeArrow 21A6 RightTeeVector 295B rightthreetimes 22CC RightTriangle 22B3 RightTriangleBar 29D0 RightTriangleEqual 22B5 RightUpDownVector 294F RightUpTeeVector 295C RightUpVector 21BE RightUpVectorBar 2954 RightVector 21C0 RightVectorBar 2953 ring 02DA risingdotseq 2253 rlarr 21C4 rlhar 21CC rlm 200F rmoust 23B1 rmoustache 23B1 rnmid 2AEE roang 27ED roarr 21FE robrk 27E7 ropar 2986 ropf 1D563 Ropf 211D roplus 2A2E rotimes 2A35 RoundImplies 2970 rpar 0029 rpargt 2994 rppolint 2A12 rrarr 21C9 Rrightarrow 21DB rsaquo 203A rscr 1D4C7 Rscr 211B rsh 21B1 Rsh 21B1 rsqb 005D rsquo 2019 rsquor 2019 rthree 22CC rtimes 22CA rtri 25B9 rtrie 22B5 rtrif 25B8 rtriltri 29CE RuleDelayed 29F4 ruluhar 2968 rx 211E sacute 015B Sacute 015A sbquo 201A sc 227B Sc 2ABC scap 2AB8 scaron 0161 Scaron 0160 sccue 227D sce 2AB0 scE 2AB4 scedil 015F Scedil 015E scirc 015D Scirc 015C scnap 2ABA scnE 2AB6 scnsim 22E9 scpolint 2A13 scsim 227F scy 0441 Scy 0421 sdot 22C5 sdotb 22A1 sdote 2A66 searhk 2925 searr 2198 seArr 21D8 searrow 2198 sect 00A7 semi 003B seswar 2929 setminus 2216 setmn 2216 sext 2736 sfgr 03C2 sfr 1D530 Sfr 1D516 sfrown 2322 sgr 03C3 Sgr 03A3 sharp 266F shchcy 0449 SHCHcy 0429 shcy 0448 SHcy 0428 ShortDownArrow 2193 ShortLeftArrow 2190 shortmid 2223 shortparallel 2225 ShortRightArrow 2192 ShortUpArrow 2191 shy 00AD sigma 03C3 Sigma 03A3 sigmaf 03C2 sigmav 03C2 sim 223C simdot 2A6A sime 2243 simeq 2243 simg 2A9E simgE 2AA0 siml 2A9D simlE 2A9F simne 2246 simplus 2A24 simrarr 2972 slarr 2190 SmallCircle 2218 smallsetminus 2216 smashp 2A33 smeparsl 29E4 smid 2223 smile 2323 smt 2AAA smte 2AAC smtes 2AAC FE00 softcy 044C SOFTcy 042C sol 002F solb 29C4 solbar 233F sopf 1D564 Sopf 1D54A spades 2660 spadesuitUB spades spar 2225 sqcap 2293 sqcaps 2293 FE00 sqcup 2294 sqcups 2294 FE00 Sqrt 221A sqsub 228F sqsube 2291 sqsubset 228F sqsubseteq 2291 sqsup 2290 sqsupe 2292 sqsupset 2290 sqsupseteq 2292 squ 25A1 square 25A1 Square 25A1 SquareIntersection 2293 SquareSubset 228F SquareSubsetEqual 2291 SquareSuperset 2290 SquareSupersetEqual 2292 SquareUnion 2294 squarf 25AA squf 25AA srarr 2192 sscr 1D4C8 Sscr 1D4AE ssetmn 2216 ssmile 2323 sstarf 22C6 star 2606 Star 22C6 starf 2605 straightepsilon 03F5 straightphi 03D5 strns 00AF sub 2282 Sub 22D0 subdot 2ABD sube 2286 subE 2AC5 subedot 2AC3 submult 2AC1 subne 228A subnE 2ACB subplus 2ABF subrarr 2979 subset 2282 Subset 22D0 subseteq 2286 subseteqq 2AC5 SubsetEqual 2286 subsetneq 228A subsetneqq 2ACB subsim 2AC7 subsub 2AD5 subsup 2AD3 succ 227B succapprox 2AB8 succcurlyeq 227D Succeeds 227B SucceedsEqual 2AB0 SucceedsSlantEqual 227D SucceedsTilde 227F succeq 2AB0 succnapprox 2ABA succneqq 2AB6 succnsim 22E9 succsim 227F SuchThat 220B sum 2211 Sum 2211 sung 266A sup 2283 Sup 22D1 sup1 00B9 sup2 00B2 sup3 00B3 supdot 2ABE supdsub 2AD8 supe 2287 supE 2AC6 supedot 2AC4 Superset 2283 SupersetEqual 2287 suphsol 27C9 suphsub 2AD7 suplarr 297B supmult 2AC2 supne 228B supnE 2ACC supplus 2AC0 supset 2283 Supset 22D1 supseteq 2287 supseteqq 2AC6 supsetneq 228B supsetneqq 2ACC supsim 2AC8 supsub 2AD4 supsup 2AD6 swarhk 2926 swarr 2199 swArr 21D9 swarrow 2199 swnwar 292A szlig 00DF Tab 0009 target 2316 tau 03C4 Tau 03A4 tbrk 23B4 tcaron 0165 Tcaron 0164 tcedil 0163 Tcedil 0162 tcy 0442 Tcy 0422 tdot 20DB telrec 2315 tfr 1D531 Tfr 1D517 tgr 03C4 Tgr 03A4 there4 2234 therefore 2234 Therefore 2234 theta 03B8 Theta 0398 thetasym 03D1 thetav 03D1 thgr 03B8 THgr 0398 thickapprox 2248 thicksim 223C ThickSpace 205F 200A thinsp 2009 ThinSpaceUB thinsp thkap 2248 thksim 223C thorn 00FE THORN 00DE tilde 02DC Tilde 223C TildeEqual 2243 TildeFullEqual 2245 TildeTilde 2248 times 00D7 timesb 22A0 timesbar 2A31 timesd 2A30 tint 222D toea 2928 top 22A4 topbot 2336 topcir 2AF1 topf 1D565 Topf 1D54B topfork 2ADA tosa 2929 tprime 2034 trade 2122 TRADE 2122 triangleUB utri triangledownUB dtri triangleleftUB ltri trianglelefteq 22B4 triangleq 225C trianglerightUB rtri trianglerighteq 22B5 tridot 25EC trie 225C triminus 2A3A TripleDot 20DB triplus 2A39 trisb 29CD tritime 2A3B trpezium 23E2 tscr 1D4C9 Tscr 1D4AF tscy 0446 TScy 0426 tshcy 045B TSHcy 040B tstrok 0167 Tstrok 0166 twixt 226C twoheadleftarrow 219E twoheadrightarrow 21A0 uacgr 03CD UacgrUpsilon uacute 00FA UacuteU with acute uarr 2191 uArr 21D1 Uarr 219F Uarrocir 2949 ubrcy 045E UbrcyU ubreve 016D UbreveU ucirc 00FB UcircU with circumflex ucy 0443 UcyU udarr 21C5 udblac 0171 UdblacU udhar 296E udiagr 03B0 udigr 03CB UdigrUpsilon ufisht 297E ufr 1D532 UfrU ugr 03C5 UgrUpsilon ugrave 00F9 UgraveU with grave uHar 2963 uharl 21BF uharr 21BE uhblk 2580 ulcorn 231C ulcorner 231C ulcrop 230F ultri 25F8 umacr 016B UmacrU uml 00A8 UnderBar 005F UnderBrace 23DF UnderBracket 23B5 UnderParenthesis 23DD Union 22C3 UnionPlus 228E uogon 0173 UogonU uopf 1D566 UopfU uparrowUM uarr Uparrow 21D1 UpArrowUM uarr UpArrowBar 2912 UpArrowDownArrow 21C5 updownarrow 2195 Updownarrow 21D5 UpDownArrow 2195 UpEquilibrium 296E upharpoonleft 21BF upharpoonright 21BE uplus 228E UpperLeftArrow 2196 UpperRightArrow 2197 upsi 03C5 UpsiUpsilon capital Upsilon upsih 03D2 upsilon 03C5 UpsilonUgr UpTee 22A5 UpTeeArrow 21A5 upuparrows 21C8 urcorn 231D urcorner 231D urcrop 230E uring 016F UringU urtri 25F9 uscr 1D4CA UscrU utdot 22F0 utilde 0169 UtildeU utri 25B5 utrif 25B4 uuarr 21C8 uuml 00FC UumlU with diaeresis uwangle 29A7 vangrt 299C varepsilon 03F5 varkappa 03F0 varnothing 2205 varphi 03D5 varpi 03D6 varpropto 221D varr 2195 vArrUpdownarrow A: up&down dbl arrow varrho 03F1 varsigma 03C2 varsubsetneq 228A FE00 varsubsetneqq 2ACB FE00 varsupsetneq 228B FE00 varsupsetneqq 2ACC FE00 vartheta 03D1 vartriangleleft 22B2 vartriangleright 22B3 vBar 2AE8 Vbar 2AEB vBarv 2AE9 vcy 0432 Vcy 0412 vdash 22A2 vDash 22A8 Vdash 22A9 VDash 22AB Vdashl 2AE6 vee 2228 Vee 22C1 veebar 22BB veeeq 225A vellip 22EE verbar 007C Verbar 2016 vertUM verbar Vert 2016 VerticalBar 2223 VerticalLineUM verbar VerticalSeparator 2758 VerticalTilde 2240 VeryThinSpaceUB hairsp vfr 1D533 Vfr 1D519 vltri 22B2 vnsub 2282 20D2 vnsup 2283 20D2 vopf 1D567 Vopf 1D54D vprop 221D vrtri 22B3 vscr 1D4CB Vscr 1D4B1 vsubne 228A FE00 vsubnE 2ACB FE00 vsupne 228B FE00 vsupnE 2ACC FE00 Vvdash 22AA vzigzag 299A wcirc 0175 Wcirc 0174 wedbar 2A5F wedge 2227 Wedge 22C0 wedgeq 2259 weierp 2118 wfr 1D534 Wfr 1D51A wopf 1D568 Wopf 1D54E wp 2118 wr 2240 wreath 2240 wscr 1D4CC Wscr 1D4B2 xcap 22C2 xcirc 25EF xcup 22C3 xdtri 25BD xfr 1D535 Xfr 1D51B xgr 03BE Xgr 039E xharr 27F7 xhArr 27FA xi 03BE Xi 039E xlarr 27F5 xlArr 27F8 xmap 27FC xnis 22FB xodot 2A00 xopf 1D569 Xopf 1D54F xoplus 2A01 xotime 2A02 xrarr 27F6 xrArr 27F9 xscr 1D4CD Xscr 1D4B3 xsqcup 2A06 xuplus 2A04 xutri 25B3 xvee 22C1 xwedge 22C0 yacute 00FD Yacute 00DD yacy 044F YAcy 042F ycirc 0177 Ycirc 0176 ycy 044B YcyU yen 00A5 yfr 1D536 Yfr 1D51C yicyUkrainian YIcyUkrainian yopf 1D56A Yopf 1D550 yscr 1D4CE Yscr 1D4B4 yucy 044E YUcyU yuml 00FF Yuml 0178 zacute 017A Zacute 0179 zcaron 017E Zcaron 017D zcy 0437 Zcy 0417 zdot 017C Zdot 017B zeetrf 2128 ZeroWidthSpace 200B zeta 03B6 Zeta 0396 zfr 1D537 Zfr 2128 zgr 03B6 Zgr 0396 zhcy 0436 ZHcy 0416 zigrarr 21DD zopf 1D56B Zopf 2124 zscr 1D4CF Zscr 1D4B5 zwj 200D zwnj 200C pandoc-3.1.3/data/docx/0000755000000000000000000000000007346545000013021 5ustar0000000000000000pandoc-3.1.3/data/docx/[Content_Types].xml0000644000000000000000000000344607346545000016640 0ustar0000000000000000 pandoc-3.1.3/data/docx/_rels/0000755000000000000000000000000007346545000014125 5ustar0000000000000000pandoc-3.1.3/data/docx/_rels/.rels0000644000000000000000000000132407346545000015073 0ustar0000000000000000 pandoc-3.1.3/data/docx/docProps/0000755000000000000000000000000007346545000014612 5ustar0000000000000000pandoc-3.1.3/data/docx/docProps/app.xml0000644000000000000000000000132407346545000016114 0ustar0000000000000000 83 false false 12 12.0000 false Microsoft Word 12.0.0 583 0 6 false 475 8 1 pandoc-3.1.3/data/docx/docProps/core.xml0000644000000000000000000000112307346545000016261 0ustar0000000000000000 TitleAuthor2017-12-27T05:22:50Z2017-12-27T05:22:50Zpandoc-3.1.3/data/docx/docProps/custom.xml0000644000000000000000000000036207346545000016647 0ustar0000000000000000 pandoc-3.1.3/data/docx/word/_rels/0000755000000000000000000000000007346545000015100 5ustar0000000000000000pandoc-3.1.3/data/docx/word/_rels/document.xml.rels0000644000000000000000000000252707346545000020412 0ustar0000000000000000 pandoc-3.1.3/data/docx/word/_rels/footnotes.xml.rels0000644000000000000000000000045507346545000020612 0ustar0000000000000000 pandoc-3.1.3/data/docx/word/0000755000000000000000000000000007346545000013774 5ustar0000000000000000pandoc-3.1.3/data/docx/word/comments.xml0000644000000000000000000000116207346545000016343 0ustar0000000000000000 pandoc-3.1.3/data/docx/word/document.xml0000644000000000000000000001767507346545000016354 0ustar0000000000000000 Title Subtitle Author Date Abstract Heading 1 Heading 2 Heading 3 Heading 4 Heading 5 Heading 6 Heading 7 Heading 8 Heading 9 First Paragraph. Body Text. Body Text Char. Verbatim Char . Hyperlink . Footnote. Block Text. Table caption. Table Table 1 2 Image Caption DefinitionTerm Definition DefinitionTerm Definition pandoc-3.1.3/data/docx/word/fontTable.xml0000644000000000000000000000467607346545000016451 0ustar0000000000000000 pandoc-3.1.3/data/docx/word/footnotes.xml0000644000000000000000000000215707346545000016543 0ustar0000000000000000 Footnote Text.pandoc-3.1.3/data/docx/word/numbering.xml0000644000000000000000000000415507346545000016511 0ustar0000000000000000 pandoc-3.1.3/data/docx/word/settings.xml0000644000000000000000000000337107346545000016362 0ustar0000000000000000 pandoc-3.1.3/data/docx/word/styles.xml0000644000000000000000000003527407346545000016054 0ustar0000000000000000 > pandoc-3.1.3/data/docx/word/theme/0000755000000000000000000000000007346545000015076 5ustar0000000000000000pandoc-3.1.3/data/docx/word/theme/theme1.xml0000644000000000000000000001677207346545000017020 0ustar0000000000000000 pandoc-3.1.3/data/docx/word/webSettings.xml0000644000000000000000000000030707346545000017014 0ustar0000000000000000 pandoc-3.1.3/data/dzslides/0000755000000000000000000000000007346545000013705 5ustar0000000000000000pandoc-3.1.3/data/dzslides/template.html0000644000000000000000000004456007346545000016417 0ustar0000000000000000 The Title Of Your Presentation

My Presentation

by John Doe

Some random text: But I've never been to the moon! You can see how I lived before I met you. Also Zoidberg. I could if you hadn't turned on the light and shut off my stereo.

An incremental list

  • Item 1
  • Item 2
  • Item 3
    • Item 3.1
    • Item 3.2
Some notes. They are only visible using onstage shell.
Who's brave enough to fly into something we all keep calling a death sphere?

In the onstage shell, notes scroll rather than overflow:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla ac dui eu est feugiat lacinia sit amet nec leo. Mauris eu ipsum leo. Nulla mi odio, cursus sed sollicitudin non, fringilla id magna. Suspendisse sit amet posuere elit. Maecenas iaculis, turpis a placerat imperdiet, libero lorem feugiat nisi, nec tincidunt diam nibh sit amet massa. Vestibulum quis adipiscing tellus. Maecenas sollicitudin sodales pulvinar. Donec dui ipsum, bibendum facilisis consequat interdum, tempus ut mauris. Aliquam ut dolor nec odio scelerisque bibendum quis in neque. Aliquam dui dui, pulvinar quis fermentum quis, gravida eu augue. Nunc tristique dolor a urna pulvinar bibendum. Curabitur mollis cursus neque, in scelerisque metus porta non. Donec tempor enim in nibh vestibulum et convallis nisi malesuada. Duis ut lectus sed metus venenatis porttitor id pharetra quam. Suspendisse sapien turpis, ornare in molestie et, gravida eget turpis.

Part two

An image
Kittens are so cute!
A video

End!

pandoc-3.1.3/data/epub.css0000644000000000000000000001000607346545000013526 0ustar0000000000000000/* This defines styles and classes used in the book */ @page { margin: 10px; } html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0; font-size: 100%; vertical-align: baseline; } ol, ul, li, dl, dt, dd { margin: 0; padding: 0; border: 0; font-size: 100%; vertical-align: baseline; } html { line-height: 1.2; font-family: Georgia, serif; color: #1a1a1a; background-color: #fdfdfd; } p { text-indent: 0; margin: 1em 0; widows: 2; orphans: 2; } a { color: #1a1a1a; } a:visited { color: #1a1a1a; } img { max-width: 100%; } h1 { text-indent: 0; text-align: left; margin: 3em 0 0 0; font-size: 2em; font-weight: bold; page-break-before: always; line-height: 150%; } h2 { text-indent: 0; text-align: left; margin: 1.5em 0 0 0; font-size: 1.5em; font-weight: bold; line-height: 135%; } h3 { text-indent: 0; text-align: left; margin: 1.3em 0 0 0; font-size: 1.3em; font-weight: bold; } h4 { text-indent: 0; text-align: left; margin: 1.2em 0 0 0; font-size: 1.2em; font-weight: bold; } h5 { text-indent: 0; text-align: left; margin: 1.1em 0 0 0; font-size: 1.1em; font-weight: bold; } h5 { text-indent: 0; text-align: left; font-size: 1em; font-weight: bold; } h1, h2, h3, h4, h5, h6 { page-break-after: avoid; page-break-inside: avoid; } ol, ul { margin: 1em 0 0 1.7em; } li > ol, li > ul { margin-top: 0; } blockquote { margin: 1em 0 1em 1.7em; } code { font-family: Menlo, Monaco, 'Lucida Console', Consolas, monospace; font-size: 85%; margin: 0; hyphens: manual; } pre { margin: 1em 0; overflow: auto; } pre code { padding: 0; overflow: visible; overflow-wrap: normal; } .sourceCode { background-color: transparent; overflow: visible; } hr { background-color: #1a1a1a; border: none; height: 1px; margin: 1em 0; } table { margin: 1em 0; border-collapse: collapse; width: 100%; overflow-x: auto; display: block; } table caption { margin-bottom: 0.75em; } tbody { margin-top: 0.5em; border-top: 1px solid #1a1a1a; border-bottom: 1px solid #1a1a1a; } th { border-top: 1px solid #1a1a1a; padding: 0.25em 0.5em 0.25em 0.5em; } td { padding: 0.125em 0.5em 0.25em 0.5em; } header { margin-bottom: 4em; text-align: center; } #TOC li { list-style: none; } #TOC ul { padding-left: 1.3em; } #TOC > ul { padding-left: 0; } #TOC a:not(:hover) { text-decoration: none; } code{white-space: pre-wrap;} span.smallcaps{font-variant: small-caps;} /* This is the most compatible CSS, but it only allows two columns: */ div.column{ display: inline-block; vertical-align: top; width: 50%; } /* If you can rely on CSS3 support, use this instead: div.columns{display: flex; gap: min(4vw, 1.5em);} div.column{flex: auto; overflow-x: auto;} */ div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} ul.task-list{list-style: none;} ul.task-list li input[type="checkbox"] { width: 0.8em; margin: 0 0.8em 0.2em -1.6em; vertical-align: middle; } .display.math{ display: block; text-align: center; margin: 0.5rem auto; } /* For title, author, and date on the cover page */ h1.title { } p.author { } p.date { } nav#toc ol, nav#landmarks ol { padding: 0; margin-left: 1em; } nav#toc ol li, nav#landmarks ol li { list-style-type: none; margin: 0; padding: 0; } a.footnote-ref { vertical-align: super; } em, em em em, em em em em em { font-style: italic;} em em, em em em em { font-style: normal; } q { quotes: "“" "”" "‘" "’"; } @media screen { /* Workaround for iBooks issue; see #6242 */ .sourceCode { overflow: visible !important; white-space: pre-wrap !important; } } pandoc-3.1.3/data/init.lua0000644000000000000000000000026607346545000013536 0ustar0000000000000000-- This Lua script is run every time the Lua interpreter is started when running -- a Lua filter. It can be customized to load additional modules or to alter the -- default modules. pandoc-3.1.3/data/odt/META-INF/0000755000000000000000000000000007346545000014012 5ustar0000000000000000pandoc-3.1.3/data/odt/META-INF/manifest.xml0000644000000000000000000000122707346545000016344 0ustar0000000000000000 pandoc-3.1.3/data/odt/0000755000000000000000000000000007346545000012652 5ustar0000000000000000pandoc-3.1.3/data/odt/content.xml0000644000000000000000000000705407346545000015054 0ustar0000000000000000 Hello World! pandoc-3.1.3/data/odt/manifest.rdf0000644000000000000000000000160307346545000015155 0ustar0000000000000000 pandoc-3.1.3/data/odt/meta.xml0000644000000000000000000000140207346545000014317 0ustar0000000000000000 Pandoc pandoc-3.1.3/data/odt/mimetype0000644000000000000000000000004707346545000014427 0ustar0000000000000000application/vnd.oasis.opendocument.textpandoc-3.1.3/data/odt/styles.xml0000644000000000000000000015525007346545000014727 0ustar0000000000000000 1 pandoc-3.1.3/data/pptx/0000755000000000000000000000000007346545000013057 5ustar0000000000000000pandoc-3.1.3/data/pptx/[Content_Types].xml0000644000000000000000000000770007346545000016673 0ustar0000000000000000 pandoc-3.1.3/data/pptx/_rels/0000755000000000000000000000000007346545000014163 5ustar0000000000000000pandoc-3.1.3/data/pptx/_rels/.rels0000644000000000000000000000112107346545000015124 0ustar0000000000000000 pandoc-3.1.3/data/pptx/docProps/0000755000000000000000000000000007346545000014650 5ustar0000000000000000pandoc-3.1.3/data/pptx/docProps/app.xml0000644000000000000000000000255707346545000016163 0ustar0000000000000000 249Microsoft Macintosh PowerPointOn-screen Show (16:9)154200falseFonts Used2Theme1Slide Titles4ArialCalibriOffice ThemePresentation TitleSlide TitleSection headerSlide Title for Two-Contentfalsefalsefalse16.0000pandoc-3.1.3/data/pptx/docProps/core.xml0000644000000000000000000000124707346545000016326 0ustar0000000000000000 TitleJesse RosenthalJesse Rosenthal52017-06-05T14:10:58Z2022-01-02T22:49:03Z pandoc-3.1.3/data/pptx/ppt/_rels/0000755000000000000000000000000007346545000014766 5ustar0000000000000000pandoc-3.1.3/data/pptx/ppt/_rels/presentation.xml.rels0000644000000000000000000000276707346545000021203 0ustar0000000000000000 pandoc-3.1.3/data/pptx/ppt/notesMasters/_rels/0000755000000000000000000000000007346545000017455 5ustar0000000000000000pandoc-3.1.3/data/pptx/ppt/notesMasters/_rels/notesMaster1.xml.rels0000644000000000000000000000044407346545000023532 0ustar0000000000000000 pandoc-3.1.3/data/pptx/ppt/notesMasters/0000755000000000000000000000000007346545000016351 5ustar0000000000000000pandoc-3.1.3/data/pptx/ppt/notesMasters/notesMaster1.xml0000644000000000000000000001655507346545000021474 0ustar0000000000000000 1/2/22Click to edit Master text stylesSecond levelThird levelFourth levelFifth level‹#›pandoc-3.1.3/data/pptx/ppt/notesSlides/_rels/0000755000000000000000000000000007346545000017262 5ustar0000000000000000pandoc-3.1.3/data/pptx/ppt/notesSlides/_rels/notesSlide1.xml.rels0000644000000000000000000000067707346545000023154 0ustar0000000000000000 pandoc-3.1.3/data/pptx/ppt/notesSlides/_rels/notesSlide2.xml.rels0000644000000000000000000000067707346545000023155 0ustar0000000000000000 pandoc-3.1.3/data/pptx/ppt/notesSlides/0000755000000000000000000000000007346545000016156 5ustar0000000000000000pandoc-3.1.3/data/pptx/ppt/notesSlides/notesSlide1.xml0000644000000000000000000000375107346545000021100 0ustar0000000000000000 Here is a noteWith another paragraph.1pandoc-3.1.3/data/pptx/ppt/notesSlides/notesSlide2.xml0000644000000000000000000000361007346545000021073 0ustar0000000000000000 A speaker note on this slide too.2pandoc-3.1.3/data/pptx/ppt/0000755000000000000000000000000007346545000013662 5ustar0000000000000000pandoc-3.1.3/data/pptx/ppt/presProps.xml0000644000000000000000000000145607346545000016407 0ustar0000000000000000 pandoc-3.1.3/data/pptx/ppt/presentation.xml0000644000000000000000000000734707346545000017132 0ustar0000000000000000 pandoc-3.1.3/data/pptx/ppt/slideLayouts/_rels/0000755000000000000000000000000007346545000017447 5ustar0000000000000000pandoc-3.1.3/data/pptx/ppt/slideLayouts/_rels/slideLayout1.xml.rels0000644000000000000000000000046707346545000023523 0ustar0000000000000000 pandoc-3.1.3/data/pptx/ppt/slideLayouts/_rels/slideLayout10.xml.rels0000644000000000000000000000046707346545000023603 0ustar0000000000000000 pandoc-3.1.3/data/pptx/ppt/slideLayouts/_rels/slideLayout11.xml.rels0000644000000000000000000000046707346545000023604 0ustar0000000000000000 pandoc-3.1.3/data/pptx/ppt/slideLayouts/_rels/slideLayout2.xml.rels0000644000000000000000000000046707346545000023524 0ustar0000000000000000 pandoc-3.1.3/data/pptx/ppt/slideLayouts/_rels/slideLayout3.xml.rels0000644000000000000000000000046707346545000023525 0ustar0000000000000000 pandoc-3.1.3/data/pptx/ppt/slideLayouts/_rels/slideLayout4.xml.rels0000644000000000000000000000046707346545000023526 0ustar0000000000000000 pandoc-3.1.3/data/pptx/ppt/slideLayouts/_rels/slideLayout5.xml.rels0000644000000000000000000000046707346545000023527 0ustar0000000000000000 pandoc-3.1.3/data/pptx/ppt/slideLayouts/_rels/slideLayout6.xml.rels0000644000000000000000000000046707346545000023530 0ustar0000000000000000 pandoc-3.1.3/data/pptx/ppt/slideLayouts/_rels/slideLayout7.xml.rels0000644000000000000000000000046707346545000023531 0ustar0000000000000000 pandoc-3.1.3/data/pptx/ppt/slideLayouts/_rels/slideLayout8.xml.rels0000644000000000000000000000046707346545000023532 0ustar0000000000000000 pandoc-3.1.3/data/pptx/ppt/slideLayouts/_rels/slideLayout9.xml.rels0000644000000000000000000000046707346545000023533 0ustar0000000000000000 pandoc-3.1.3/data/pptx/ppt/slideLayouts/0000755000000000000000000000000007346545000016343 5ustar0000000000000000pandoc-3.1.3/data/pptx/ppt/slideLayouts/slideLayout1.xml0000644000000000000000000001026307346545000021446 0ustar0000000000000000 Click to edit Master title styleClick to edit Master subtitle style1/2/22‹#›pandoc-3.1.3/data/pptx/ppt/slideLayouts/slideLayout10.xml0000644000000000000000000000550607346545000021532 0ustar0000000000000000 Click to edit Master title styleClick to edit Master text stylesSecond levelThird levelFourth levelFifth level1/2/22‹#›pandoc-3.1.3/data/pptx/ppt/slideLayouts/slideLayout11.xml0000644000000000000000000000604707346545000021534 0ustar0000000000000000 Click to edit Master title styleClick to edit Master text stylesSecond levelThird levelFourth levelFifth level1/2/22‹#›pandoc-3.1.3/data/pptx/ppt/slideLayouts/slideLayout2.xml0000644000000000000000000000541707346545000021454 0ustar0000000000000000 Click to edit Master title styleClick to edit Master text stylesSecond levelThird levelFourth levelFifth level1/2/22‹#›pandoc-3.1.3/data/pptx/ppt/slideLayouts/slideLayout3.xml0000644000000000000000000001044307346545000021450 0ustar0000000000000000 Click to edit Master title styleClick to edit Master text styles1/2/22‹#›pandoc-3.1.3/data/pptx/ppt/slideLayouts/slideLayout4.xml0000644000000000000000000001060507346545000021451 0ustar0000000000000000 Click to edit Master title styleClick to edit Master text stylesSecond levelThird levelFourth levelFifth levelClick to edit Master text stylesSecond levelThird levelFourth levelFifth level1/2/22‹#›pandoc-3.1.3/data/pptx/ppt/slideLayouts/slideLayout5.xml0000644000000000000000000001547207346545000021461 0ustar0000000000000000 Click to edit Master title styleClick to edit Master text stylesClick to edit Master text stylesSecond levelThird levelFourth levelFifth levelClick to edit Master text stylesClick to edit Master text stylesSecond levelThird levelFourth levelFifth level1/2/22‹#›pandoc-3.1.3/data/pptx/ppt/slideLayouts/slideLayout6.xml0000644000000000000000000000422007346545000021447 0ustar0000000000000000 Click to edit Master title style1/2/22‹#›pandoc-3.1.3/data/pptx/ppt/slideLayouts/slideLayout7.xml0000644000000000000000000000354707346545000021463 0ustar0000000000000000 1/2/22‹#›pandoc-3.1.3/data/pptx/ppt/slideLayouts/slideLayout8.xml0000644000000000000000000001105407346545000021454 0ustar0000000000000000 Click to edit Master title styleClick to edit Master text stylesSecond levelThird levelFourth levelFifth levelClick to edit Master text styles1/2/22‹#›pandoc-3.1.3/data/pptx/ppt/slideLayouts/slideLayout9.xml0000644000000000000000000001077107346545000021462 0ustar0000000000000000 Click to edit Master title styleClick to edit Master text styles1/2/22‹#›pandoc-3.1.3/data/pptx/ppt/slideMasters/_rels/0000755000000000000000000000000007346545000017425 5ustar0000000000000000pandoc-3.1.3/data/pptx/ppt/slideMasters/_rels/slideMaster1.xml.rels0000644000000000000000000000370707346545000023457 0ustar0000000000000000 pandoc-3.1.3/data/pptx/ppt/slideMasters/0000755000000000000000000000000007346545000016321 5ustar0000000000000000pandoc-3.1.3/data/pptx/ppt/slideMasters/slideMaster1.xml0000644000000000000000000002711007346545000021401 0ustar0000000000000000 Click to edit Master title styleClick to edit Master text stylesSecond levelThird levelFourth levelFifth level1/2/22‹#›pandoc-3.1.3/data/pptx/ppt/slides/_rels/0000755000000000000000000000000007346545000016251 5ustar0000000000000000pandoc-3.1.3/data/pptx/ppt/slides/_rels/slide1.xml.rels0000644000000000000000000000071607346545000021124 0ustar0000000000000000 pandoc-3.1.3/data/pptx/ppt/slides/_rels/slide2.xml.rels0000644000000000000000000000071607346545000021125 0ustar0000000000000000 pandoc-3.1.3/data/pptx/ppt/slides/_rels/slide3.xml.rels0000644000000000000000000000046707346545000021131 0ustar0000000000000000 pandoc-3.1.3/data/pptx/ppt/slides/_rels/slide4.xml.rels0000644000000000000000000000046707346545000021132 0ustar0000000000000000 pandoc-3.1.3/data/pptx/ppt/slides/0000755000000000000000000000000007346545000015145 5ustar0000000000000000pandoc-3.1.3/data/pptx/ppt/slides/slide1.xml0000644000000000000000000000250007346545000017045 0ustar0000000000000000 Presentation TitlePresentation Subtitlepandoc-3.1.3/data/pptx/ppt/slides/slide2.xml0000644000000000000000000000260207346545000017051 0ustar0000000000000000 Slide TitleHello, world.pandoc-3.1.3/data/pptx/ppt/slides/slide3.xml0000644000000000000000000000227407346545000017057 0ustar0000000000000000 Section headerpandoc-3.1.3/data/pptx/ppt/slides/slide4.xml0000644000000000000000000000346707346545000017065 0ustar0000000000000000 Slide Title for Two-ContentSome content on the left.Some content on the right.pandoc-3.1.3/data/pptx/ppt/tableStyles.xml0000644000000000000000000000026607346545000016703 0ustar0000000000000000 pandoc-3.1.3/data/pptx/ppt/theme/0000755000000000000000000000000007346545000014764 5ustar0000000000000000pandoc-3.1.3/data/pptx/ppt/theme/theme1.xml0000644000000000000000000001674707346545000016710 0ustar0000000000000000 pandoc-3.1.3/data/pptx/ppt/theme/theme2.xml0000644000000000000000000001522707346545000016701 0ustar0000000000000000 pandoc-3.1.3/data/pptx/ppt/viewProps.xml0000644000000000000000000000205507346545000016404 0ustar0000000000000000 pandoc-3.1.3/data/templates/0000755000000000000000000000000007346545000014062 5ustar0000000000000000pandoc-3.1.3/data/templates/affiliations.jats0000644000000000000000000000211507346545000017414 0ustar0000000000000000$-- $-- Affiliations $-- $-- wrap affiliation if it has a known institution identifier $if(it.group)$ ${it.group} $endif$ $if(it.department)$ ${it.department} $endif$ $if(it.organization)$ ${it.organization} $else$ ${it.name} $endif$ $if(it.isni)$ ${it.isni} $endif$ $if(it.ringgold)$ ${it.ringgold} $endif$ $if(it.ror)$ ${it.ror} $endif$ $for(it.pid)$ ${it.id} $endfor$ $if(it.street-address)$, $for(it.street-address)$ ${it}$sep$, $endfor$ $else$$if(it.city)$, $it.city$$endif$$endif$$if(it.country)$, $it.country$$endif$ pandoc-3.1.3/data/templates/article.jats_publishing0000644000000000000000000001377607346545000020632 0ustar0000000000000000$if(article.type)$
$else$
$endif$ $if(journal.publisher-id)$ $journal.publisher-id$ $endif$ $if(journal.nlm-ta)$ $journal.nlm-ta$ $endif$ $if(journal.pmc)$ $journal.pmc$ $endif$ $-- Fallback: an empty journal-id in case none is available. $if(journal.publisher-id)$ $elseif(journal.nlm-ta)$ $elseif(journal.pmc)$ $else$ $endif$ $if(journal.title)$ $journal.title$ $endif$ $if(journal.abbrev-title)$ $journal.abbrev-title$ $endif$ $if(journal.pissn)$ $journal.pissn$ $endif$ $if(journal.eissn)$ $journal.eissn$ $endif$ $-- At least one issn element is required; use empty issn as fallback $if(journal.pissn)$ $elseif(journal.eissn)$ $else$ $endif$ $journal.publisher-name$ $if(journal.publisher-loc)$ $journal.publisher-loc$ $endif$ $if(article.publisher-id)$ $article.publisher-id$ $endif$ $if(article.doi)$ $article.doi$ $endif$ $if(article.pmid)$ $article.pmid$ $endif$ $if(article.pmcid)$ $article.pmcid$ $endif$ $if(article.art-access-id)$ $article.art-access-id$ $endif$ $if(article.heading)$ $article.heading$ $if(article.categories)$ $for(article.categories)$ $article.categories$ $endfor$ $endif$ $endif$ $if(title)$ $title$ $if(subtitle)$ ${subtitle} $endif$ $endif$ $if(author)$ $for(author)$ $if(author.orcid)$ $author.orcid$ $endif$ $if(author.surname)$ $if(author.non-dropping-particle)$${author.non-dropping-particle} $endif$$author.surname$ $author.given-names$$if(author.dropping-particle)$ ${author.dropping-particle}$endif$ $if(author.prefix)$ ${author.suffix} $endif$ $if(author.suffix)$ ${author.suffix} $endif$ $elseif(author.name)$ $author.name$ $else$ $author$ $endif$ $if(author.email)$ $author.email$ $endif$ $-- if affiliations are listed separately, then create links. Otherwise $-- include them here. $if(affiliation)$ $for(author.affiliation)$ $endfor$ $else$ $for(author.affiliation)$ ${ it:affiliations.jats() } $endfor$ $endif$ $if(author.cor-id)$ * $endif$ $endfor$ $for(affiliation)$ ${ it:affiliations.jats() } $endfor$ $endif$ $if(article.author-notes)$ $if(article.author-notes.corresp)$ $for(article.author-notes.corresp)$ * E-mail: $article.author-notes.corresp.email$ $endfor$ $endif$ $if(article.author-notes.conflict)$

$article.author-notes.conflict$

$endif$ $if(article.author-notes.con)$

$article.author-notes.con$

$endif$
$endif$ $if(date)$ $if(date.day)$ $date.day$ $endif$ $if(date.month)$ $date.month$ $endif$ $date.year$ $endif$ $if(article.volume)$ $article.volume$ $endif$ $if(article.issue)$ $article.issue$ $endif$ $if(article.fpage)$ $article.fpage$ $endif$ $if(article.lpage)$ $article.lpage$ $endif$ $if(article.elocation-id)$ $article.elocation-id$ $endif$ $if(history)$ $endif$ $for(copyright.statement)$ $copyright.statement$ $endfor$ $for(copyright.year)$ $copyright.year$ $endfor$ $for(copyright.holder)$ $copyright.holder$ $endfor$ $if(copyright.text)$ $copyright.text$ $endif$ $for(license)$ $if(it.link)$ ${it.link} $endif$ $if(it.text)$${it.text}$else$${it}$endif$ $endfor$ $if(abstract)$ $abstract$ $endif$ $if(tags)$ $for(tags)$ $tags$ $endfor$ $endif$ $if(article.funding-statement)$ $article.funding-statement$ $endif$
$if(notes)$ $notes$ $endif$
$body$ $if(back)$ $back$ $endif$
pandoc-3.1.3/data/templates/default.asciidoc0000644000000000000000000000076007346545000017211 0ustar0000000000000000$if(titleblock)$ = $title$ $if(author)$ $for(author)$$author$$sep$; $endfor$ $if(date)$ $date$ $endif$ $elseif(date)$ :revdate: $date$ $endif$ $if(keywords)$ :keywords: $for(keywords)$$keywords$$sep$, $endfor$ $endif$ $if(lang)$ :lang: $lang$ $endif$ $if(toc)$ :toc: $endif$ $endif$ $if(abstract)$ [abstract] == Abstract $abstract$ $endif$ $for(header-includes)$ $header-includes$ $endfor$ $for(include-before)$ $include-before$ $endfor$ $body$ $for(include-after)$ $include-after$ $endfor$ pandoc-3.1.3/data/templates/default.asciidoctor0000644000000000000000000000102407346545000017730 0ustar0000000000000000$if(titleblock)$ = $title$ $if(author)$ $for(author)$$author$$sep$; $endfor$ $if(date)$ $date$ $endif$ $elseif(date)$ :revdate: $date$ $endif$ $if(keywords)$ :keywords: $for(keywords)$$keywords$$sep$, $endfor$ $endif$ $if(lang)$ :lang: $lang$ $endif$ $if(toc)$ :toc: $endif$ $if(math)$ :stem: latexmath $endif$ $endif$ $if(abstract)$ [abstract] == Abstract $abstract$ $endif$ $for(header-includes)$ $header-includes$ $endfor$ $for(include-before)$ $include-before$ $endfor$ $body$ $for(include-after)$ $include-after$ $endfor$ pandoc-3.1.3/data/templates/default.biblatex0000644000000000000000000000022707346545000017223 0ustar0000000000000000$for(header-includes)$ $header-includes$ $endfor$ $for(include-before)$ $include-before$ $endfor$ $body$ $for(include-after)$ $include-after$ $endfor$ pandoc-3.1.3/data/templates/default.bibtex0000644000000000000000000000022707346545000016706 0ustar0000000000000000$for(header-includes)$ $header-includes$ $endfor$ $for(include-before)$ $include-before$ $endfor$ $body$ $for(include-after)$ $include-after$ $endfor$ pandoc-3.1.3/data/templates/default.chunkedhtml0000644000000000000000000000472107346545000017742 0ustar0000000000000000 $for(author-meta)$ $endfor$ $if(date-meta)$ $endif$ $if(keywords)$ $endif$ $if(description-meta)$ $endif$ $if(title-prefix)$$title-prefix$ – $endif$$pagetitle$ $for(css)$ $endfor$ $for(header-includes)$ $header-includes$ $endfor$ $if(math)$ $math$ $endif$ $for(include-before)$ $include-before$ $endfor$
$if(top)$ $-- only print title block if this is NOT the top page $else$ $if(title)$

$title$

$if(subtitle)$

$subtitle$

$endif$ $for(author)$

$author$

$endfor$ $if(date)$

$date$

$endif$ $if(abstract)$
$abstract-title$
$abstract$
$endif$ $endif$
$endif$ $if(toc)$ $endif$ $body$ $for(include-after)$ $include-after$ $endfor$ pandoc-3.1.3/data/templates/default.commonmark0000644000000000000000000000035007346545000017571 0ustar0000000000000000$if(titleblock)$ $titleblock$ $endif$ $for(header-includes)$ $header-includes$ $endfor$ $for(include-before)$ $include-before$ $endfor$ $if(toc)$ $table-of-contents$ $endif$ $body$ $for(include-after)$ $include-after$ $endfor$ pandoc-3.1.3/data/templates/default.context0000644000000000000000000001225607346545000017122 0ustar0000000000000000$if(context-lang)$ \mainlanguage[$context-lang$] $endif$ $if(context-dir)$ \setupalign[$context-dir$] \setupdirections[bidi=on,method=two] $endif$ % Enable hyperlinks \setupinteraction [state=start, $if(title)$ title={$title$}, $endif$ $if(subtitle)$ subtitle={$subtitle$}, $endif$ $if(author)$ author={$for(author)$$author$$sep$; $endfor$}, $endif$ $if(keywords)$ keyword={$for(keywords)$$keywords$$sep$; $endfor$}, $endif$ style=$linkstyle$, color=$linkcolor$, contrastcolor=$linkcontrastcolor$] \setupurl[style=$urlstyle$] % make chapter, section bookmarks visible when opening document \placebookmarks[chapter, section, subsection, subsubsection, subsubsubsection, subsubsubsubsection][chapter, section] \setupinteractionscreen[option={bookmark,title}] $if(papersize)$ \setuppapersize[$for(papersize)$$papersize$$sep$,$endfor$] $endif$ $if(layout)$ \setuplayout[$for(layout)$$layout$$sep$,$endfor$] $endif$ $if(pagenumbering)$ \setuppagenumbering[$for(pagenumbering)$$pagenumbering$$sep$,$endfor$] $else$ \setuppagenumbering[location={footer,middle}] $endif$ $if(pdfa)$ % attempt to generate PDF/A \setupbackend [format=PDF/A-$pdfa$, profile={$if(pdfaiccprofile)$$for(pdfaiccprofile)$$pdfaiccprofile$$sep$,$endfor$$else$sRGB.icc$endif$}, intent=$if(pdfaintent)$$pdfaintent$$else$sRGB IEC61966-2.1$endif$] $endif$ \setupbackend[export=yes] \setupstructure[state=start,method=auto] % use microtypography \definefontfeature[default][default][script=latn, protrusion=quality, expansion=quality, itlc=yes, textitalics=yes, onum=yes, pnum=yes] \definefontfeature[default:tnum][default][tnum=yes, pnum=no] \definefontfeature[smallcaps][script=latn, protrusion=quality, expansion=quality, smcp=yes, onum=yes, pnum=yes] \setupalign[hz,hanging] \setupitaliccorrection[global, always] \setupbodyfontenvironment[default][em=italic] % use italic as em, not slanted \definefallbackfamily[mainface][rm][CMU Serif][preset=range:greek, force=yes] \definefontfamily[mainface][rm][$if(mainfont)$$mainfont$$else$Latin Modern Roman$endif$] \definefontfamily[mainface][mm][$if(mathfont)$$mathfont$$else$Latin Modern Math$endif$] \definefontfamily[mainface][ss][$if(sansfont)$$sansfont$$else$Latin Modern Sans$endif$] \definefontfamily[mainface][tt][$if(monofont)$$monofont$$else$Latin Modern Typewriter$endif$][features=none] \setupbodyfont[mainface$if(fontsize)$,$fontsize$$endif$] \setupwhitespace[$if(whitespace)$$whitespace$$else$medium$endif$] $if(indenting)$ \setupindenting[$for(indenting)$$indenting$$sep$,$endfor$] $endif$ $if(interlinespace)$ \setupinterlinespace[$for(interlinespace)$$interlinespace$$sep$,$endfor$] $endif$ \setuphead[chapter] [style=\tfd\setupinterlinespace,header=empty] \setuphead[section] [style=\tfc\setupinterlinespace] \setuphead[subsection] [style=\tfb\setupinterlinespace] \setuphead[subsubsection] [style=\bf] \setuphead[subsubsubsection] [style=\sc] \setuphead[subsubsubsubsection][style=\it] \definesectionlevels [default] [section, subsection, subsubsection, subsubsubsection, subsubsubsubsection] $if(headertext)$ \setupheadertexts$for(headertext)$[$headertext$]$endfor$ $endif$ $if(footertext)$ \setupfootertexts$for(footertext)$[$footertext$]$endfor$ $endif$ $if(number-sections)$ $else$ \setuphead[chapter, section, subsection, subsubsection, subsubsubsection, subsubsubsubsection][number=no] $endif$ \definedescription [description] [headstyle=bold, style=normal, location=hanging, width=broad, margin=1cm, alternative=hanging] \setupitemize[autointro] % prevent orphan list intro \setupitemize[indentnext=no] \defineitemgroup[enumerate] \setupenumerate[each][fit][itemalign=left,distance=.5em,style={\feature[+][default:tnum]}] \setupfloat[figure][default={here,nonumber}] \setupfloat[table][default={here,nonumber}] \setupxtable[frame=off] \setupxtable[head][topframe=on] \setupxtable[body][] \setupxtable[foot][] \setupxtable[lastrow][bottomframe=on] $if(emphasis-commands)$ $emphasis-commands$ $endif$ $if(highlighting-commands)$ $highlighting-commands$ $endif$ $if(csl-refs)$ \definemeasure[cslhangindent][1.5em] \definenarrower[hangingreferences][left=\measure{cslhangindent}] \definestartstop [cslreferences] [ $if(csl-hanging-indent)$ before={% \starthangingreferences[left] \setupindenting[-\leftskip,yes,first] \doindentation }, after=\stophangingreferences, $endif$ ] $endif$ $if(includesource)$ $for(sourcefile)$ \attachment[file=$curdir$/$sourcefile$,method=hidden] $endfor$ $endif$ $for(header-includes)$ $header-includes$ $endfor$ \starttext $if(title)$ \startalignment[middle] {\tfd\setupinterlinespace $title$} $if(subtitle)$ \smallskip {\tfa\setupinterlinespace $subtitle$} $endif$ $if(author)$ \smallskip {\tfa\setupinterlinespace $for(author)$$author$$sep$\crlf $endfor$} $endif$ $if(date)$ \smallskip {\tfa\setupinterlinespace $date$} $endif$ \bigskip \stopalignment $endif$ $if(abstract)$ \midaligned{\it Abstract} \startnarrower[2*middle] $abstract$ \stopnarrower \blank[big] $endif$ $for(include-before)$ $include-before$ $endfor$ $if(toc)$ \completecontent $endif$ $if(lof)$ \completelistoffigures $endif$ $if(lot)$ \completelistoftables $endif$ $body$ $for(include-after)$ $include-after$ $endfor$ \stoptext pandoc-3.1.3/data/templates/default.docbook40000644000000000000000000000132507346545000017135 0ustar0000000000000000 $if(mathml)$ $else$ $endif$
$title$ $if(author)$ $for(author)$ $author$ $endfor$ $endif$ $if(date)$ $date$ $endif$ $for(include-before)$ $include-before$ $endfor$ $body$ $for(include-after)$ $include-after$ $endfor$
pandoc-3.1.3/data/templates/default.docbook50000644000000000000000000000124107346545000017133 0ustar0000000000000000
$title$ $if(subtitle)$ $subtitle$ $endif$ $if(author)$ $for(author)$ $author$ $endfor$ $endif$ $if(date)$ $date$ $endif$ $for(include-before)$ $include-before$ $endfor$ $body$ $for(include-after)$ $include-after$ $endfor$
pandoc-3.1.3/data/templates/default.dokuwiki0000644000000000000000000000020207346545000017250 0ustar0000000000000000$for(include-before)$ $include-before$ $endfor$ $if(toc)$ __TOC__ $endif$ $body$ $for(include-after)$ $include-after$ $endfor$ pandoc-3.1.3/data/templates/default.dzslides0000644000000000000000000001017407346545000017254 0ustar0000000000000000 $for(author-meta)$ $endfor$ $if(date-meta)$ $endif$ $if(keywords)$ $endif$ $if(title-prefix)$$title-prefix$ – $endif$$pagetitle$ $if(css)$ $for(css)$ $endfor$ $else$ $endif$ $if(math)$ $math$ $endif$ $for(header-includes)$ $header-includes$ $endfor$ $if(title)$

$title$

$if(subtitle)$

$subtitle$

$endif$
$if(author)$$for(author)$$author$$sep$, $endfor$ · $endif$$if(institute)$$for(institute)$$institute$$sep$, $endfor$ · $endif$$if(date)$$date$$endif$
$endif$ $if(toc)$
$table-of-contents$
$endif$ $for(include-before)$ $include-before$ $endfor$ $body$ $for(include-after)$ $include-after$ $endfor$ $dzslides-core$ pandoc-3.1.3/data/templates/default.epub20000644000000000000000000000362207346545000016450 0ustar0000000000000000 $pagetitle$ $for(css)$ $endfor$ $for(header-includes)$ $header-includes$ $endfor$ $if(titlepage)$ $for(title)$ $if(title.text)$

$title.text$

$else$

$title$

$endif$ $endfor$ $if(subtitle)$

$subtitle$

$endif$ $for(author)$

$author$

$endfor$ $for(creator)$

$creator.text$

$endfor$ $if(publisher)$

$publisher$

$endif$ $if(date)$

$date$

$endif$ $if(rights)$
$rights$
$endif$ $if(abstract)$
$abstract-title$
$abstract$
$endif$ $else$ $if(coverpage)$
$else$ $for(include-before)$ $include-before$ $endfor$ $body$ $for(include-after)$ $include-after$ $endfor$ $endif$ $endif$ pandoc-3.1.3/data/templates/default.epub30000644000000000000000000000353207346545000016451 0ustar0000000000000000 $pagetitle$ $for(css)$ $endfor$ $for(header-includes)$ $header-includes$ $endfor$ $if(titlepage)$
$for(title)$ $if(title.type)$

$title.text$

$else$

$title$

$endif$ $endfor$ $if(subtitle)$

$subtitle$

$endif$ $for(author)$

$author$

$endfor$ $for(creator)$

$creator.text$

$endfor$ $if(publisher)$

$publisher$

$endif$ $if(date)$

$date$

$endif$ $if(rights)$
$rights$
$endif$ $if(abstract)$
$abstract-title$
$abstract$
$endif$
$else$ $if(coverpage)$
$else$ $for(include-before)$ $include-before$ $endfor$ $body$ $for(include-after)$ $include-after$ $endfor$ $endif$ $endif$ pandoc-3.1.3/data/templates/default.haddock0000644000000000000000000000000707346545000017022 0ustar0000000000000000$body$ pandoc-3.1.3/data/templates/default.html40000644000000000000000000000337607346545000016471 0ustar0000000000000000 $for(author-meta)$ $endfor$ $if(date-meta)$ $endif$ $if(keywords)$ $endif$ $if(description-meta)$ $endif$ $if(title-prefix)$$title-prefix$ – $endif$$pagetitle$ $for(css)$ $endfor$ $for(header-includes)$ $header-includes$ $endfor$ $if(math)$ $if(mathjax)$ $endif$ $math$ $endif$ $for(include-before)$ $include-before$ $endfor$ $if(title)$

$title$

$if(subtitle)$

$subtitle$

$endif$ $for(author)$

$author$

$endfor$ $if(date)$

$date$

$endif$ $if(abstract)$
$abstract-title$
$abstract$
$endif$
$endif$ $if(toc)$
$if(toc-title)$

$toc-title$

$endif$ $table-of-contents$
$endif$ $body$ $for(include-after)$ $include-after$ $endfor$ pandoc-3.1.3/data/templates/default.html50000644000000000000000000000337207346545000016466 0ustar0000000000000000 $for(author-meta)$ $endfor$ $if(date-meta)$ $endif$ $if(keywords)$ $endif$ $if(description-meta)$ $endif$ $if(title-prefix)$$title-prefix$ – $endif$$pagetitle$ $for(css)$ $endfor$ $for(header-includes)$ $header-includes$ $endfor$ $if(math)$ $if(mathjax)$ $endif$ $math$ $endif$ $for(include-before)$ $include-before$ $endfor$ $if(title)$

$title$

$if(subtitle)$

$subtitle$

$endif$ $for(author)$

$author$

$endfor$ $if(date)$

$date$

$endif$ $if(abstract)$
$abstract-title$
$abstract$
$endif$
$endif$ $if(toc)$ $endif$ $body$ $for(include-after)$ $include-after$ $endfor$ pandoc-3.1.3/data/templates/default.icml0000644000000000000000000000347107346545000016361 0ustar0000000000000000 $charStyles$ LeftAlign . 10 $parStyles$ $body$ $hyperlinks$ pandoc-3.1.3/data/templates/default.jats_archiving0000644000000000000000000000047207346545000020426 0ustar0000000000000000 $if(xml-stylesheet)$ $endif$ ${ article.jats_publishing() } pandoc-3.1.3/data/templates/default.jats_articleauthoring0000644000000000000000000000537207346545000022024 0ustar0000000000000000 $if(xml-stylesheet)$ $endif$ $if(article.type)$
$else$
$endif$ $if(title)$ $title$ $if(subtitle)$ ${subtitle} $endif$ $endif$ $if(author)$ $for(author)$ $if(author.orcid)$ $author.orcid$ $endif$ $if(author.surname)$ $if(author.non-dropping-particle)$${author.non-dropping-particle} $endif$${author.surname} ${author.given-names}$if(author.dropping-particle)$ ${author.dropping-particle}$endif$ $if(author.prefix)$ ${author.suffix} $endif$ $if(author.suffix)$ ${author.suffix} $endif$ $elseif(author.name)$ $author.name$ $else$ $author$ $endif$ $for(author.affiliation)$ ${ it:affiliations.jats() } $endfor$ $if(author.email)$ $author.email$ $endif$ $if(author.cor-id)$ * $endif$ $endfor$ $endif$ $for(copyright.statement)$ $copyright.statement$ $endfor$ $for(copyright.year)$ $copyright.year$ $endfor$ $for(copyright.holder)$ $copyright.holder$ $endfor$ $if(copyright.text)$ $copyright.text$ $endif$ $for(license)$ $if(it.text)$${it.text}$else$${it}$endif$ $endfor$ $abstract$ $if(tags)$ $for(tags)$ $tags$ $endfor$ $endif$ $if(article.funding-statement)$ $article.funding-statement$ $endif$ $body$ $if(back)$ $back$ $endif$
pandoc-3.1.3/data/templates/default.jats_publishing0000644000000000000000000000044707346545000020622 0ustar0000000000000000 $if(xml-stylesheet)$ $endif$ ${ article.jats_publishing() } pandoc-3.1.3/data/templates/default.jira0000644000000000000000000000014707346545000016357 0ustar0000000000000000$for(include-before)$ $include-before$ $endfor$ $body$ $for(include-after)$ $include-after$ $endfor$ pandoc-3.1.3/data/templates/default.latex0000644000000000000000000003434007346545000016551 0ustar0000000000000000% Options for packages loaded elsewhere \PassOptionsToPackage{unicode$for(hyperrefoptions)$,$hyperrefoptions$$endfor$}{hyperref} \PassOptionsToPackage{hyphens}{url} $if(colorlinks)$ \PassOptionsToPackage{dvipsnames,svgnames,x11names}{xcolor} $endif$ $if(CJKmainfont)$ \PassOptionsToPackage{space}{xeCJK} $endif$ % \documentclass[ $if(fontsize)$ $fontsize$, $endif$ $if(papersize)$ $papersize$paper, $endif$ $if(beamer)$ ignorenonframetext, $if(handout)$ handout, $endif$ $if(aspectratio)$ aspectratio=$aspectratio$, $endif$ $endif$ $for(classoption)$ $classoption$$sep$, $endfor$ ]{$documentclass$} $if(beamer)$ $if(background-image)$ \usebackgroundtemplate{% \includegraphics[width=\paperwidth]{$background-image$}% } % In beamer background-image does not work well when other images are used, so this is the workaround \pgfdeclareimage[width=\paperwidth,height=\paperheight]{background}{$background-image$} \usebackgroundtemplate{\pgfuseimage{background}} $endif$ \usepackage{pgfpages} \setbeamertemplate{caption}[numbered] \setbeamertemplate{caption label separator}{: } \setbeamercolor{caption name}{fg=normal text.fg} \beamertemplatenavigationsymbols$if(navigation)$$navigation$$else$empty$endif$ $for(beameroption)$ \setbeameroption{$beameroption$} $endfor$ % Prevent slide breaks in the middle of a paragraph \widowpenalties 1 10000 \raggedbottom $if(section-titles)$ \setbeamertemplate{part page}{ \centering \begin{beamercolorbox}[sep=16pt,center]{part title} \usebeamerfont{part title}\insertpart\par \end{beamercolorbox} } \setbeamertemplate{section page}{ \centering \begin{beamercolorbox}[sep=12pt,center]{part title} \usebeamerfont{section title}\insertsection\par \end{beamercolorbox} } \setbeamertemplate{subsection page}{ \centering \begin{beamercolorbox}[sep=8pt,center]{part title} \usebeamerfont{subsection title}\insertsubsection\par \end{beamercolorbox} } \AtBeginPart{ \frame{\partpage} } \AtBeginSection{ \ifbibliography \else \frame{\sectionpage} \fi } \AtBeginSubsection{ \frame{\subsectionpage} } $endif$ $endif$ $if(beamerarticle)$ \usepackage{beamerarticle} % needs to be loaded first $endif$ \usepackage{amsmath,amssymb} $if(linestretch)$ \usepackage{setspace} $endif$ \usepackage{iftex} \ifPDFTeX \usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc} \usepackage[utf8]{inputenc} \usepackage{textcomp} % provide euro and other symbols \else % if luatex or xetex $if(mathspec)$ \ifXeTeX \usepackage{mathspec} % this also loads fontspec \else \usepackage{unicode-math} % this also loads fontspec \fi $else$ \usepackage{unicode-math} % this also loads fontspec $endif$ \defaultfontfeatures{Scale=MatchLowercase}$-- must come before Beamer theme \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1} \fi $if(fontfamily)$ $else$ $-- Set default font before Beamer theme so the theme can override it \usepackage{lmodern} $endif$ $-- Set Beamer theme before user font settings so they can override theme $if(beamer)$ $if(theme)$ \usetheme[$for(themeoptions)$$themeoptions$$sep$,$endfor$]{$theme$} $endif$ $if(colortheme)$ \usecolortheme{$colortheme$} $endif$ $if(fonttheme)$ \usefonttheme{$fonttheme$} $endif$ $if(mainfont)$ \usefonttheme{serif} % use mainfont rather than sansfont for slide text $endif$ $if(innertheme)$ \useinnertheme{$innertheme$} $endif$ $if(outertheme)$ \useoutertheme{$outertheme$} $endif$ $endif$ $-- User font settings (must come after default font and Beamer theme) $if(fontfamily)$ \usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$} $endif$ \ifPDFTeX\else % xetex/luatex font selection $if(mainfont)$ \setmainfont[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$]{$mainfont$} $endif$ $if(sansfont)$ \setsansfont[$for(sansfontoptions)$$sansfontoptions$$sep$,$endfor$]{$sansfont$} $endif$ $if(monofont)$ \setmonofont[$for(monofontoptions)$$monofontoptions$$sep$,$endfor$]{$monofont$} $endif$ $for(fontfamilies)$ \newfontfamily{$fontfamilies.name$}[$for(fontfamilies.options)$$fontfamilies.options$$sep$,$endfor$]{$fontfamilies.font$} $endfor$ $if(mathfont)$ $if(mathspec)$ \ifXeTeX \setmathfont(Digits,Latin,Greek)[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$} \else \setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$} \fi $else$ \setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$} $endif$ $endif$ $if(CJKmainfont)$ \ifXeTeX \usepackage{xeCJK} \setCJKmainfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$} $if(CJKsansfont)$ \setCJKsansfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKsansfont$} $endif$ $if(CJKmonofont)$ \setCJKmonofont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmonofont$} $endif$ \fi $endif$ $if(luatexjapresetoptions)$ \ifLuaTeX \usepackage[$for(luatexjapresetoptions)$$luatexjapresetoptions$$sep$,$endfor$]{luatexja-preset} \fi $endif$ $if(CJKmainfont)$ \ifLuaTeX \usepackage[$for(luatexjafontspecoptions)$$luatexjafontspecoptions$$sep$,$endfor$]{luatexja-fontspec} \setmainjfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$} \fi $endif$ \fi $if(zero-width-non-joiner)$ %% Support for zero-width non-joiner characters. \makeatletter \def\zerowidthnonjoiner{% % Prevent ligatures and adjust kerning, but still support hyphenating. \texorpdfstring{% \TextOrMath{\nobreak\discretionary{-}{}{\kern.03em}% \ifvmode\else\nobreak\hskip\z@skip\fi}{}% }{}% } \makeatother \ifPDFTeX \DeclareUnicodeCharacter{200C}{\zerowidthnonjoiner} \else \catcode`^^^^200c=\active \protected\def ^^^^200c{\zerowidthnonjoiner} \fi %% End of ZWNJ support $endif$ % Use upquote if available, for straight quotes in verbatim environments \IfFileExists{upquote.sty}{\usepackage{upquote}}{} \IfFileExists{microtype.sty}{% use microtype if available \usepackage[$for(microtypeoptions)$$microtypeoptions$$sep$,$endfor$]{microtype} \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts }{} $if(indent)$ $else$ \makeatletter \@ifundefined{KOMAClassName}{% if non-KOMA class \IfFileExists{parskip.sty}{% \usepackage{parskip} }{% else \setlength{\parindent}{0pt} \setlength{\parskip}{6pt plus 2pt minus 1pt}} }{% if KOMA class \KOMAoptions{parskip=half}} \makeatother $endif$ $if(verbatim-in-note)$ \usepackage{fancyvrb} $endif$ \usepackage{xcolor} $if(geometry)$ $if(beamer)$ \geometry{$for(geometry)$$geometry$$sep$,$endfor$} $else$ \usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry} $endif$ $endif$ $if(beamer)$ \newif\ifbibliography $endif$ $if(listings)$ \usepackage{listings} \newcommand{\passthrough}[1]{#1} \lstset{defaultdialect=[5.3]Lua} \lstset{defaultdialect=[x86masm]Assembler} $endif$ $if(lhs)$ \lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{} $endif$ $if(highlighting-macros)$ $highlighting-macros$ $endif$ $if(tables)$ \usepackage{longtable,booktabs,array} $if(multirow)$ \usepackage{multirow} $endif$ \usepackage{calc} % for calculating minipage widths $if(beamer)$ \usepackage{caption} % Make caption package work with longtable \makeatletter \def\fnum@table{\tablename~\thetable} \makeatother $else$ % Correct order of tables after \paragraph or \subparagraph \usepackage{etoolbox} \makeatletter \patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{} \makeatother % Allow footnotes in longtable head/foot \IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}} \makesavenoteenv{longtable} $endif$ $endif$ $if(graphics)$ \usepackage{graphicx} \makeatletter \def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi} \def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi} \makeatother % Scale images if necessary, so that they will not overflow the page % margins by default, and it is still possible to overwrite the defaults % using explicit options in \includegraphics[width, height, ...]{} \setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio} % Set default figure placement to htbp \makeatletter \def\fps@figure{htbp} \makeatother $endif$ $if(svg)$ \usepackage{svg} $endif$ $if(strikeout)$ $-- also used for underline \ifLuaTeX \usepackage{luacolor} \usepackage[soul]{lua-ul} \else \usepackage{soul} \fi $endif$ \setlength{\emergencystretch}{3em} % prevent overfull lines \providecommand{\tightlist}{% \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} $if(numbersections)$ \setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$5$endif$} $else$ \setcounter{secnumdepth}{-\maxdimen} % remove section numbering $endif$ $if(subfigure)$ \usepackage{subcaption} $endif$ $if(beamer)$ $else$ $if(block-headings)$ % Make \paragraph and \subparagraph free-standing \ifx\paragraph\undefined\else \let\oldparagraph\paragraph \renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}} \fi \ifx\subparagraph\undefined\else \let\oldsubparagraph\subparagraph \renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}} \fi $endif$ $endif$ $if(pagestyle)$ \pagestyle{$pagestyle$} $endif$ $if(csl-refs)$ \newlength{\cslhangindent} \setlength{\cslhangindent}{1.5em} \newlength{\csllabelwidth} \setlength{\csllabelwidth}{3em} \newlength{\cslentryspacingunit} % times entry-spacing \setlength{\cslentryspacingunit}{\parskip} \newenvironment{CSLReferences}[2] % #1 hanging-ident, #2 entry spacing {% don't indent paragraphs \setlength{\parindent}{0pt} % turn on hanging indent if param 1 is 1 \ifodd #1 \let\oldpar\par \def\par{\hangindent=\cslhangindent\oldpar} \fi % set entry spacing \setlength{\parskip}{#2\cslentryspacingunit} }% {} \usepackage{calc} \newcommand{\CSLBlock}[1]{#1\hfill\break} \newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{#1}} \newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{#1}\break} \newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1} $endif$ $if(lang)$ \ifLuaTeX \usepackage[bidi=basic]{babel} \else \usepackage[bidi=default]{babel} \fi $if(babel-lang)$ \babelprovide[main,import]{$babel-lang$} $if(mainfont)$ \ifPDFTeX \else \babelfont{rm}[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$]{$mainfont$} \fi $endif$ $endif$ $for(babel-otherlangs)$ \babelprovide[import]{$babel-otherlangs$} $endfor$ $for(babelfonts/pairs)$ \babelfont[$babelfonts.key$]{rm}{$babelfonts.value$} $endfor$ % get rid of language-specific shorthands (see #6817): \let\LanguageShortHands\languageshorthands \def\languageshorthands#1{} $endif$ $for(header-includes)$ $header-includes$ $endfor$ \ifLuaTeX \usepackage{selnolig} % disable illegal ligatures \fi $if(dir)$ \ifPDFTeX \TeXXeTstate=1 \newcommand{\RL}[1]{\beginR #1\endR} \newcommand{\LR}[1]{\beginL #1\endL} \newenvironment{RTL}{\beginR}{\endR} \newenvironment{LTR}{\beginL}{\endL} \fi $endif$ $if(natbib)$ \usepackage[$natbiboptions$]{natbib} \bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$} $endif$ $if(biblatex)$ \usepackage[$if(biblio-style)$style=$biblio-style$,$endif$$for(biblatexoptions)$$biblatexoptions$$sep$,$endfor$]{biblatex} $for(bibliography)$ \addbibresource{$bibliography$} $endfor$ $endif$ $if(nocite-ids)$ \nocite{$for(nocite-ids)$$it$$sep$, $endfor$} $endif$ $if(csquotes)$ \usepackage{csquotes} $endif$ \IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}} \IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available \urlstyle{$if(urlstyle)$$urlstyle$$else$same$endif$} $if(links-as-notes)$ % Make links footnotes instead of hotlinks: \DeclareRobustCommand{\href}[2]{#2\footnote{\url{#1}}} $endif$ $if(verbatim-in-note)$ \VerbatimFootnotes % allow verbatim text in footnotes $endif$ \hypersetup{ $if(title-meta)$ pdftitle={$title-meta$}, $endif$ $if(author-meta)$ pdfauthor={$author-meta$}, $endif$ $if(lang)$ pdflang={$lang$}, $endif$ $if(subject)$ pdfsubject={$subject$}, $endif$ $if(keywords)$ pdfkeywords={$for(keywords)$$keywords$$sep$, $endfor$}, $endif$ $if(colorlinks)$ colorlinks=true, linkcolor={$if(linkcolor)$$linkcolor$$else$Maroon$endif$}, filecolor={$if(filecolor)$$filecolor$$else$Maroon$endif$}, citecolor={$if(citecolor)$$citecolor$$else$Blue$endif$}, urlcolor={$if(urlcolor)$$urlcolor$$else$Blue$endif$}, $else$ $if(boxlinks)$ $else$ hidelinks, $endif$ $endif$ pdfcreator={LaTeX via pandoc}} $if(title)$ \title{$title$$if(thanks)$\thanks{$thanks$}$endif$} $endif$ $if(subtitle)$ $if(beamer)$ $else$ \usepackage{etoolbox} \makeatletter \providecommand{\subtitle}[1]{% add subtitle to \maketitle \apptocmd{\@title}{\par {\large #1 \par}}{}{} } \makeatother $endif$ \subtitle{$subtitle$} $endif$ \author{$for(author)$$author$$sep$ \and $endfor$} \date{$date$} $if(beamer)$ $if(institute)$ \institute{$for(institute)$$institute$$sep$ \and $endfor$} $endif$ $if(titlegraphic)$ \titlegraphic{\includegraphics{$titlegraphic$}} $endif$ $if(logo)$ \logo{\includegraphics{$logo$}} $endif$ $endif$ \begin{document} $if(has-frontmatter)$ \frontmatter $endif$ $if(title)$ $if(beamer)$ \frame{\titlepage} $else$ \maketitle $endif$ $if(abstract)$ \begin{abstract} $abstract$ \end{abstract} $endif$ $endif$ $for(include-before)$ $include-before$ $endfor$ $if(toc)$ $if(toc-title)$ \renewcommand*\contentsname{$toc-title$} $endif$ $if(beamer)$ \begin{frame}[allowframebreaks] $if(toc-title)$ \frametitle{$toc-title$} $endif$ \tableofcontents[hideallsubsections] \end{frame} $else$ { $if(colorlinks)$ \hypersetup{linkcolor=$if(toccolor)$$toccolor$$else$$endif$} $endif$ \setcounter{tocdepth}{$toc-depth$} \tableofcontents } $endif$ $endif$ $if(lof)$ \listoffigures $endif$ $if(lot)$ \listoftables $endif$ $if(linestretch)$ \setstretch{$linestretch$} $endif$ $if(has-frontmatter)$ \mainmatter $endif$ $body$ $if(has-frontmatter)$ \backmatter $endif$ $if(natbib)$ $if(bibliography)$ $if(biblio-title)$ $if(has-chapters)$ \renewcommand\bibname{$biblio-title$} $else$ \renewcommand\refname{$biblio-title$} $endif$ $endif$ $if(beamer)$ \begin{frame}[allowframebreaks]{$biblio-title$} \bibliographytrue $endif$ \bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$} $if(beamer)$ \end{frame} $endif$ $endif$ $endif$ $if(biblatex)$ $if(beamer)$ \begin{frame}[allowframebreaks]{$biblio-title$} \bibliographytrue \printbibliography[heading=none] \end{frame} $else$ \printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$ $endif$ $endif$ $for(include-after)$ $include-after$ $endfor$ \end{document} pandoc-3.1.3/data/templates/default.man0000644000000000000000000000136207346545000016205 0ustar0000000000000000$if(has-tables)$ '\" t $endif$ $if(pandoc-version)$ .\" Automatically generated by Pandoc $pandoc-version$ .\" $endif$ .\" Define V font for inline verbatim, using C font in formats .\" that render this, and otherwise B font. .ie "\f[CB]x\f[]"x" \{\ . ftr V B . ftr VI BI . ftr VB B . ftr VBI BI .\} .el \{\ . ftr V CR . ftr VI CI . ftr VB CB . ftr VBI CBI .\} $if(adjusting)$ .ad $adjusting$ $endif$ .TH "$title/nowrap$" "$section/nowrap$" "$date/nowrap$" "$footer/nowrap$" "$header/nowrap$" $if(hyphenate)$ .hy $else$ .nh $endif$ $for(header-includes)$ $header-includes$ $endfor$ $for(include-before)$ $include-before$ $endfor$ $body$ $for(include-after)$ $include-after$ $endfor$ $if(author)$ .SH AUTHORS $for(author)$$author$$sep$; $endfor$. $endif$ pandoc-3.1.3/data/templates/default.markdown0000644000000000000000000000035007346545000017250 0ustar0000000000000000$if(titleblock)$ $titleblock$ $endif$ $for(header-includes)$ $header-includes$ $endfor$ $for(include-before)$ $include-before$ $endfor$ $if(toc)$ $table-of-contents$ $endif$ $body$ $for(include-after)$ $include-after$ $endfor$ pandoc-3.1.3/data/templates/default.markua0000644000000000000000000000035007346545000016706 0ustar0000000000000000$if(titleblock)$ $titleblock$ $endif$ $for(header-includes)$ $header-includes$ $endfor$ $for(include-before)$ $include-before$ $endfor$ $if(toc)$ $table-of-contents$ $endif$ $body$ $for(include-after)$ $include-after$ $endfor$ pandoc-3.1.3/data/templates/default.mediawiki0000644000000000000000000000020207346545000017365 0ustar0000000000000000$for(include-before)$ $include-before$ $endfor$ $if(toc)$ __TOC__ $endif$ $body$ $for(include-after)$ $include-after$ $endfor$ pandoc-3.1.3/data/templates/default.ms0000644000000000000000000000460207346545000016051 0ustar0000000000000000$if(pandoc-version)$ .\" Automatically generated by Pandoc $pandoc-version$ .\" $endif$ .\" **** Custom macro definitions ********************************* .\" * Super/subscript .\" (https://lists.gnu.org/archive/html/groff/2012-07/msg00046.html) .ds { \v'-0.3m'\\s[\\n[.s]*9u/12u] .ds } \s0\v'0.3m' .ds < \v'0.3m'\s[\\n[.s]*9u/12u] .ds > \s0\v'-0.3m' .\" * Horizontal line .de HLINE .LP .ce \l'20' .. $if(highlighting-macros)$ .\" * Syntax highlighting macros $highlighting-macros$ $endif$ .\" **** Settings ************************************************* .\" text width .nr LL 5.5i .\" left margin .nr PO 1.25i .\" top margin .nr HM 1.25i .\" bottom margin .nr FM 1.25i .\" header/footer width .nr LT \n[LL] .\" point size .nr PS $if(pointsize)$$pointsize$$else$10p$endif$ .\" line height .nr VS $if(lineheight)$$lineheight$$else$12p$endif$ .\" font family: A, BM, H, HN, N, P, T, ZCM .fam $if(fontfamily)$$fontfamily$$else$P$endif$ .\" paragraph indent .nr PI $if(indent)$$indent$$else$0m$endif$ .\" interparagraph space .nr PD 0.4v .\" footnote width .nr FL \n[LL] .\" footnote point size .nr FPS (\n[PS] - 2000) $if(papersize)$ .\" paper size .ds paper $papersize$ $endif$ .\" color used for strikeout .defcolor strikecolor rgb 0.7 0.7 0.7 .\" color for links (rgb) .ds PDFHREF.COLOUR 0.35 0.00 0.60 .\" border for links (default none) .ds PDFHREF.BORDER 0 0 0 .\" point size difference between heading levels .nr PSINCR 1p .\" heading level above which point size no longer changes .nr GROWPS 2 .\" comment these out if you want a dot after section numbers: .als SN SN-NO-DOT .als SN-STYLE SN-NO-DOT .\" page numbers in footer, centered .ds CH .ds CF % .\" pdf outline fold level .nr PDFOUTLINE.FOLDLEVEL 3 .\" start out in outline view .pdfview /PageMode /UseOutlines .\" *************************************************************** .\" PDF metadata .pdfinfo /Title "$title-meta$" .pdfinfo /Author "$author-meta$" $if(adjusting)$ .ad $adjusting$ $endif$ $if(hyphenate)$ .hy $else$ .nh $endif$ $if(has-inline-math)$ .EQ delim @@ .EN $endif$ $for(header-includes)$ $header-includes$ $endfor$ $if(title)$ .TL $title$ $endif$ $for(author)$ .AU $author$ $endfor$ $if(date)$ .AU .sp 0.5 .ft R $date$ $endif$ $if(abstract)$ .AB $abstract$ .AE $endif$ .\" 1 column (use .2C for two column) .1C $for(include-before)$ $include-before$ $endfor$ $body$ $if(toc)$ .TC $endif$ $for(include-after)$ $include-after$ $endfor$ .pdfsync pandoc-3.1.3/data/templates/default.muse0000644000000000000000000000111307346545000016375 0ustar0000000000000000$if(author)$ #author $for(author)$$author$$sep$; $endfor$ $endif$ $if(title)$ #title $title$ $endif$ $if(lang)$ #lang $lang$ $endif$ $if(LISTtitle)$ #LISTtitle $LISTtitle$ $endif$ $if(subtitle)$ #subtitle $subtitle$ $endif$ $if(SORTauthors)$ #SORTauthors $SORTauthors$ $endif$ $if(SORTtopics)$ #SORTtopics $SORTtopics$ $endif$ $if(date)$ #date $date$ $endif$ $if(notes)$ #notes $notes$ $endif$ $if(source)$ #source $source$ $endif$ $for(header-includes)$ $header-includes$ $endfor$ $for(include-before)$ $include-before$ $endfor$ $body$ $for(include-after)$ $include-after$ $endfor$ pandoc-3.1.3/data/templates/default.opendocument0000644000000000000000000001752107346545000020136 0ustar0000000000000000 $automatic-styles$ $for(header-includes)$ $header-includes$ $endfor$ $if(title)$ $title$ $endif$ $if(subtitle)$ $subtitle$ $endif$ $for(author)$ $author$ $endfor$ $if(date)$ $date$ $endif$ $if(abstract)$ $abstract$ $endif$ $for(include-before)$ $include-before$ $endfor$ $if(toc)$ $toc-title$ $endif$ $body$ $for(include-after)$ $include-after$ $endfor$ pandoc-3.1.3/data/templates/default.opml0000644000000000000000000000036407346545000016402 0ustar0000000000000000 $title$ $date$ $for(author)$$author$$sep$; $endfor$ $body$ pandoc-3.1.3/data/templates/default.org0000644000000000000000000000055107346545000016220 0ustar0000000000000000$if(title)$ #+title: $title$ $endif$ $if(author)$ #+author: $for(author)$$author$$sep$; $endfor$ $endif$ $if(date)$ #+date: $date$ $endif$ $for(header-includes)$ $header-includes$ $endfor$ $if(abstract)$ #+begin_abstract $abstract$ #+end_abstract $endif$ $for(include-before)$ $include-before$ $endfor$ $body$ $for(include-after)$ $include-after$ $endfor$ pandoc-3.1.3/data/templates/default.plain0000644000000000000000000000035007346545000016531 0ustar0000000000000000$if(titleblock)$ $titleblock$ $endif$ $for(header-includes)$ $header-includes$ $endfor$ $for(include-before)$ $include-before$ $endfor$ $if(toc)$ $table-of-contents$ $endif$ $body$ $for(include-after)$ $include-after$ $endfor$ pandoc-3.1.3/data/templates/default.revealjs0000644000000000000000000002325507346545000017252 0ustar0000000000000000 $for(author-meta)$ $endfor$ $if(date-meta)$ $endif$ $if(keywords)$ $endif$ $if(title-prefix)$$title-prefix$ – $endif$$pagetitle$ $if(theme)$ $else$ $endif$ $for(css)$ $endfor$ $if(math)$ $math$ $endif$ $for(header-includes)$ $header-includes$ $endfor$ $for(include-before)$ $include-before$ $endfor$
$if(title)$

$title$

$if(subtitle)$

$subtitle$

$endif$ $for(author)$

$author$

$endfor$ $for(institute)$

$institute$

$endfor$ $if(date)$

$date$

$endif$
$endif$ $if(toc)$
$endif$ $body$
$if(mathjax)$ $endif$ $for(include-after)$ $include-after$ $endfor$ pandoc-3.1.3/data/templates/default.rst0000644000000000000000000000165107346545000016243 0ustar0000000000000000$if(titleblock)$ $titleblock$ $for(author)$ :Author: $^$$author$ $endfor$ $if(authors)$ :Authors: $author$ $endif$ $if(date)$ :Date: $^$$date$ $endif$ $if(address)$ :Address: $^$$address$ $endif$ $if(contact)$ :Contact: $^$$contact$ $endif$ $if(copyright)$ :Copyright: $^$$copyright$ $endif$ $if(dedication)$ :Dedication: $^$$dedication$ $endif$ $if(organization)$ :Organization: $^$$organization$ $endif$ $if(revision)$ :Revision: $^$$revision$ $endif$ $if(status)$ :Status: $^$$status$ $endif$ $if(version)$ :Version: $^$$version$ $endif$ $if(abstract)$ :Abstract: $abstract$ $endif$ $endif$ $if(rawtex)$ .. role:: raw-latex(raw) :format: latex .. $endif$ $for(include-before)$ $include-before$ $endfor$ $if(toc)$ .. contents:: :depth: $toc-depth$ .. $endif$ $if(number-sections)$ .. section-numbering:: $endif$ $for(header-includes)$ $header-includes$ $endfor$ $body$ $for(include-after)$ $include-after$ $endfor$ pandoc-3.1.3/data/templates/default.rtf0000644000000000000000000000114107346545000016220 0ustar0000000000000000{\rtf1\ansi\deff0{\fonttbl{\f0 \fswiss Helvetica;}{\f1 \fmodern Courier;}} {\colortbl;\red255\green0\blue0;\red0\green0\blue255;} \widowctrl\hyphauto $for(header-includes)$ $header-includes$ $endfor$ $if(title)$ {\pard \qc \f0 \sa180 \li0 \fi0 \b \fs36 $title$\par} $endif$ $for(author)$ {\pard \qc \f0 \sa180 \li0 \fi0 $author$\par} $endfor$ $if(date)$ {\pard \qc \f0 \sa180 \li0 \fi0 $date$\par} $endif$ $if(spacer)$ {\pard \ql \f0 \sa180 \li0 \fi0 \par} $endif$ $if(toc)$ $table-of-contents$ $endif$ $for(include-before)$ $include-before$ $endfor$ $body$ $for(include-after)$ $include-after$ $endfor$ } pandoc-3.1.3/data/templates/default.s50000644000000000000000000000465307346545000015767 0ustar0000000000000000 $for(author-meta)$ $endfor$ $if(date-meta)$ $endif$ $if(keywords)$ $endif$ $if(title-prefix)$$title-prefix$ – $endif$$pagetitle$ $for(css)$ $endfor$ $if(math)$ $math$ $endif$ $for(header-includes)$ $header-includes$ $endfor$ $for(include-before)$ $include-before$ $endfor$
$if(title)$

$title$

$if(subtitle)$

$subtitle$

$endif$ $if(author)$

$for(author)$$author$$sep$
$endfor$

$endif$ $if(institute)$

$for(institute)$$institute$$sep$
$endfor$

$endif$ $if(date)$

$date$

$endif$
$endif$ $if(toc)$
$table-of-contents$
$endif$ $body$ $for(include-after)$ $include-after$ $endfor$
pandoc-3.1.3/data/templates/default.slideous0000644000000000000000000000526207346545000017264 0ustar0000000000000000 $for(author-meta)$ $endfor$ $if(date-meta)$ $endif$ $if(keywords)$ $endif$ $if(title-prefix)$$title-prefix$ – $endif$$pagetitle$ $for(css)$ $endfor$ $if(math)$ $math$ $endif$ $for(header-includes)$ $header-includes$ $endfor$ $if(duration)$ $endif$ $for(include-before)$ $include-before$ $endfor$
of {$$slidecount} ½ {$$title}, {$$author}
$if(title)$

$title$

$if(subtitle)$

$subtitle$

$endif$ $if(author)$

$for(author)$$author$$sep$
$endfor$

$endif$ $if(institute)$

$for(institute)$$institute$$sep$
$endfor$

$endif$ $if(date)$

$date$

$endif$
$endif$ $if(toc)$
$table-of-contents$
$endif$ $body$ $for(include-after)$ $include-after$ $endfor$ pandoc-3.1.3/data/templates/default.slidy0000644000000000000000000000357707346545000016570 0ustar0000000000000000 $for(author-meta)$ $endfor$ $if(date-meta)$ $endif$ $if(keywords)$ $endif$ $if(title-prefix)$$title-prefix$ – $endif$$pagetitle$ $for(css)$ $endfor$ $if(math)$ $math$ $endif$ $for(header-includes)$ $header-includes$ $endfor$ $if(duration)$ $endif$ $for(include-before)$ $include-before$ $endfor$ $if(title)$

$title$

$if(subtitle)$

$subtitle$

$endif$ $if(author)$

$for(author)$$author$$sep$
$endfor$

$endif$ $if(institute)$

$for(institute)$$institute$$sep$
$endfor$

$endif$ $if(date)$

$date$

$endif$
$endif$ $if(toc)$
$table-of-contents$
$endif$ $body$ $for(include-after)$ $include-after$ $endfor$ pandoc-3.1.3/data/templates/default.tei0000644000000000000000000000173607346545000016220 0ustar0000000000000000 $title$ $for(author)$ $author$ $endfor$ $if(publicationStmt)$

$if(publicationStmt)$$publicationStmt$$endif$

$endif$ $if(license)$ $license$ $endif$ $if(publisher)$ $publisher$ $endif$ $if(pubPlace)$ $pubPlace$ $endif$ $if(address)$
$address$
$endif$ $if(date)$ $date$ $endif$
$if(sourceDesc)$ $sourceDesc$ $else$

Produced by pandoc.

$endif$
$for(include-before)$ $include-before$ $endfor$ $body$ $for(include-after)$ $include-after$ $endfor$
pandoc-3.1.3/data/templates/default.texinfo0000644000000000000000000000073507346545000017111 0ustar0000000000000000\input texinfo @documentencoding UTF-8 $for(header-includes)$ $header-includes$ $endfor$ $if(strikeout)$ @macro textstrikeout{text} ~~\text\~~ @end macro $endif$ @ifnottex @paragraphindent 0 @end ifnottex $if(titlepage)$ @titlepage @title $title$ $for(author)$ @author $author$ $endfor$ $if(date)$ $date$ $endif$ @end titlepage $endif$ $for(include-before)$ $include-before$ $endfor$ $if(toc)$ @contents $endif$ $body$ $for(include-after)$ $include-after$ $endfor$ @bye pandoc-3.1.3/data/templates/default.textile0000644000000000000000000000014707346545000017110 0ustar0000000000000000$for(include-before)$ $include-before$ $endfor$ $body$ $for(include-after)$ $include-after$ $endfor$ pandoc-3.1.3/data/templates/default.typst0000644000000000000000000000275407346545000016623 0ustar0000000000000000$definitions.typst()$ #show terms: it => { it.children .map(child => [ #strong[#child.term] #block(inset: (left: 1.5em, top: -0.4em))[#child.description] ]) .join() } $if(template)$ #import "$template$": conf $else$ $template.typst()$ $endif$ #show: doc => conf( $if(title)$ title: [$title$], $endif$ $if(author)$ authors: ( $for(author)$ $if(author.name)$ ( name: [$author.name$], affiliation: [$author.affiliation$], email: [$author.email$] ), $else$ ( name: [$author$], affiliation: [], email: [] ), $endif$ $endfor$ ), $endif$ $if(date)$ date: [$date$], $endif$ $if(lang)$ lang: "$lang$", $endif$ $if(region)$ region: "$region$", $endif$ $if(abstract)$ abstract: [$abstract$], $endif$ $if(margin)$ margin: ($for(margin/pairs)$$margin.key$: $margin.value$,$endfor$), $endif$ $if(papersize)$ paper: "$papersize$", $endif$ $if(mainfont)$ font: ("$mainfont$",), $endif$ $if(fontsize)$ fontsize: $fontsize$, $endif$ $if(section-numbering)$ sectionnumbering: "$section-numbering$", $endif$ cols: $if(columns)$$columns$$else$1$endif$, doc, ) $for(header-includes)$ $header-includes$ $endfor$ $for(include-before)$ $include-before$ $endfor$ $if(toc)$ #outline( title: auto, depth: none ); $endif$ $body$ $if(citations)$ $if(bibliographystyle)$ #set bibliography(style: "$bibliographystyle$") $endif$ $for(bibliography)$ #bibliography("$bibliography$") $endfor$ $endif$ $for(include-after)$ $include-after$ $endfor$ pandoc-3.1.3/data/templates/default.xwiki0000644000000000000000000000020407346545000016557 0ustar0000000000000000$for(include-before)$ $include-before$ $endfor$ $if(toc)$ {{toc /}} $endif$ $body$ $for(include-after)$ $include-after$ $endfor$ pandoc-3.1.3/data/templates/default.zimwiki0000644000000000000000000000026607346545000017117 0ustar0000000000000000Content-Type: text/x-zim-wiki Wiki-Format: zim 0.4 $for(include-before)$ $include-before$ $endfor$ $if(toc)$ __TOC__ $endif$ $body$ $for(include-after)$ $include-after$ $endfor$ pandoc-3.1.3/data/templates/definitions.typst0000644000000000000000000000052107346545000017500 0ustar0000000000000000// Some definitions presupposed by pandoc's typst output. #let blockquote(body) = [ #set text( size: 0.92em ) #block(inset: (left: 1.5em, top: 0.2em, bottom: 0.2em))[#body] ] #let horizontalrule = [ #line(start: (25%,0%), end: (75%,0%)) ] #let endnote(num, contents) = [ #stack(dir: ltr, spacing: 3pt, super[#num], contents) ] pandoc-3.1.3/data/templates/styles.citations.html0000644000000000000000000000057307346545000020274 0ustar0000000000000000/* CSS for citations */ div.csl-bib-body { } div.csl-entry { clear: both; $if(csl-entry-spacing)$ margin-bottom: $csl-entry-spacing$; $endif$ } .hanging-indent div.csl-entry { margin-left:2em; text-indent:-2em; } div.csl-left-margin { min-width:2em; float:left; } div.csl-right-inline { margin-left:2em; padding-left:1em; } div.csl-indent { margin-left: 2em; } pandoc-3.1.3/data/templates/styles.html0000644000000000000000000001000507346545000016267 0ustar0000000000000000$if(document-css)$ html { $if(mainfont)$ font-family: $mainfont$; $endif$ $if(fontsize)$ font-size: $fontsize$; $endif$ $if(linestretch)$ line-height: $linestretch$; $endif$ color: $if(fontcolor)$$fontcolor$$else$#1a1a1a$endif$; background-color: $if(backgroundcolor)$$backgroundcolor$$else$#fdfdfd$endif$; } body { margin: 0 auto; max-width: $if(maxwidth)$$maxwidth$$else$36em$endif$; padding-left: $if(margin-left)$$margin-left$$else$50px$endif$; padding-right: $if(margin-right)$$margin-right$$else$50px$endif$; padding-top: $if(margin-top)$$margin-top$$else$50px$endif$; padding-bottom: $if(margin-bottom)$$margin-bottom$$else$50px$endif$; hyphens: auto; overflow-wrap: break-word; text-rendering: optimizeLegibility; font-kerning: normal; } @media (max-width: 600px) { body { font-size: 0.9em; padding: 12px; } h1 { font-size: 1.8em; } } @media print { html { background-color: $if(backgroundcolor)$$backgroundcolor$$else$white$endif$; } body { background-color: transparent; color: black; font-size: 12pt; } p, h2, h3 { orphans: 3; widows: 3; } h2, h3, h4 { page-break-after: avoid; } } p { margin: 1em 0; } a { color: $if(linkcolor)$$linkcolor$$else$#1a1a1a$endif$; } a:visited { color: $if(linkcolor)$$linkcolor$$else$#1a1a1a$endif$; } img { max-width: 100%; } h1, h2, h3, h4, h5, h6 { margin-top: 1.4em; } h5, h6 { font-size: 1em; font-style: italic; } h6 { font-weight: normal; } ol, ul { padding-left: 1.7em; margin-top: 1em; } li > ol, li > ul { margin-top: 0; } blockquote { margin: 1em 0 1em 1.7em; padding-left: 1em; border-left: 2px solid #e6e6e6; color: #606060; } $if(abstract)$ div.abstract { margin: 2em 2em 2em 2em; text-align: left; font-size: 85%; } div.abstract-title { font-weight: bold; text-align: center; padding: 0; margin-bottom: 0.5em; } $endif$ code { font-family: $if(monofont)$$monofont$$else$Menlo, Monaco, Consolas, 'Lucida Console', monospace$endif$; $if(monobackgroundcolor)$ background-color: $monobackgroundcolor$; padding: .2em .4em; $endif$ font-size: 85%; margin: 0; hyphens: manual; } pre { margin: 1em 0; $if(monobackgroundcolor)$ background-color: $monobackgroundcolor$; padding: 1em; $endif$ overflow: auto; } pre code { padding: 0; overflow: visible; overflow-wrap: normal; } .sourceCode { background-color: transparent; overflow: visible; } hr { background-color: #1a1a1a; border: none; height: 1px; margin: 1em 0; } table { margin: 1em 0; border-collapse: collapse; width: 100%; overflow-x: auto; display: block; font-variant-numeric: lining-nums tabular-nums; } table caption { margin-bottom: 0.75em; } tbody { margin-top: 0.5em; border-top: 1px solid $if(fontcolor)$$fontcolor$$else$#1a1a1a$endif$; border-bottom: 1px solid $if(fontcolor)$$fontcolor$$else$#1a1a1a$endif$; } th { border-top: 1px solid $if(fontcolor)$$fontcolor$$else$#1a1a1a$endif$; padding: 0.25em 0.5em 0.25em 0.5em; } td { padding: 0.125em 0.5em 0.25em 0.5em; } header { margin-bottom: 4em; text-align: center; } #TOC li { list-style: none; } #TOC ul { padding-left: 1.3em; } #TOC > ul { padding-left: 0; } #TOC a:not(:hover) { text-decoration: none; } $endif$ code{white-space: pre-wrap;} span.smallcaps{font-variant: small-caps;} div.columns{display: flex; gap: min(4vw, 1.5em);} div.column{flex: auto; overflow-x: auto;} div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} /* The extra [class] is a hack that increases specificity enough to override a similar rule in reveal.js */ ul.task-list[class]{list-style: none;} ul.task-list li input[type="checkbox"] { font-size: inherit; width: 0.8em; margin: 0 0.8em 0.2em -1.6em; vertical-align: middle; } $if(quotes)$ q { quotes: "“" "”" "‘" "’"; } $endif$ $if(displaymath-css)$ .display.math{display: block; text-align: center; margin: 0.5rem auto;} $endif$ $if(highlighting-css)$ /* CSS for syntax highlighting */ $highlighting-css$ $endif$ $if(csl-css)$ $styles.citations.html()$ $endif$ pandoc-3.1.3/data/templates/template.typst0000644000000000000000000000225207346545000017003 0ustar0000000000000000#let conf( title: none, authors: none, date: none, abstract: none, cols: 1, margin: (x: 1.25in, y: 1.25in), paper: "us-letter", lang: "en", region: "US", font: (), fontsize: 11pt, sectionnumbering: none, doc, ) = { set page( paper: paper, margin: margin, numbering: "1", ) set par(justify: true) set text(lang: lang, region: region, font: font, size: fontsize) set heading(numbering: sectionnumbering) if title != none { align(center)[#block(inset: 2em)[ #text(weight: "bold", size: 1.5em)[#title] ]] } if authors != none { let count = authors.len() let ncols = calc.min(count, 3) grid( columns: (1fr,) * ncols, row-gutter: 1.5em, ..authors.map(author => align(center)[ #author.name \ #author.affiliation \ #author.email ] ) ) } if date != none { align(center)[#block(inset: 1em)[ #date ]] } if abstract != none { block(inset: 2em)[ #text(weight: "semibold")[Abstract] #h(1em) #abstract ] } if cols == 1 { doc } else { columns(cols, doc) } } pandoc-3.1.3/data/translations/0000755000000000000000000000000007346545000014605 5ustar0000000000000000pandoc-3.1.3/data/translations/am.yaml0000644000000000000000000000100707346545000016064 0ustar0000000000000000Abstract: አኅጽተሮ ጽሁፍ Appendix: መድበል Bibliography: ቢዋ መጽሃፍት Cc: ግልባጭ Chapter: ክፍል Contents: ይዘት Encl: አባሪዎች Figure: ሥዕል Index: ምህጻር ቃል ListOfFigures: የሥዕችሎ ማውጫ ListOfTables: የሰንጠዥረ ማውጫ Page: ገጽ Part: ንዑስ ክፍል Preface: መቅድም Proof: ማረጋገጫ References: የነሥ ጹሁፍ ምንጭ See: ይመልከቱ SeeAlso: ይህምን ይመልከቱ Table: ሰንጠረዥ To: ለ pandoc-3.1.3/data/translations/ar.yaml0000644000000000000000000000105507346545000016074 0ustar0000000000000000Preface: ﻡﺪﺨﻟ References: ﺎﻠﻣﺭﺎﺠﻋ Abstract: ﻢﻠﺨﺻ Bibliography: ﺎﻠﻤﺻﺍﺩﺭ Chapter: ﺏﺎﺑ Appendix: ﺎﻠﻣﻼﺤﻗ Contents: ﺎﻠﻤﺤﺗﻮﻳﺎﺗ ListOfFigures: ﻕﺎﺌﻣﺓ ﺍﻸﺸﻛﺎﻟ ListOfTables: ﻕﺎﺌﻣﺓ ﺎﻠﺟﺩﺍﻮﻟ Index: ﺎﻠﻔﻫﺮﺳ Figure: ﺶﻜﻟ Table: ﺝﺩﻮﻟ Part: ﺎﻠﻘﺴﻣ Encl: ﺎﻠﻣﺮﻔﻗﺎﺗ To: ﺈﻟﻯ Page: ﺺﻔﺣﺓ See: ﺭﺎﺠﻋ SeeAlso: ﺭﺎﺠﻋ ﺄﻴﺿًﺍ Proof: ﺏﺮﻫﺎﻧ Glossary: ﻕﺎﻣﻮﺳ pandoc-3.1.3/data/translations/bg.yaml0000644000000000000000000000100707346545000016057 0ustar0000000000000000Abstract: Абстракт Appendix: Приложение Bibliography: Библиография Cc: копия Chapter: Глава Contents: Съдържание Encl: Приложения Figure: Фигура Glossary: Glossary Index: Азбучен указател ListOfFigures: Списък на фигурите ListOfTables: Списък на таблиците Page: Стр. Preface: Предговор Proof: Proof References: Литература See: вж. SeeAlso: вж. също и Table: Таблица pandoc-3.1.3/data/translations/bn.yaml0000644000000000000000000000136707346545000016077 0ustar0000000000000000Abstract: সারসংক্ষেপ Appendix: পরিশিষ্ট Bibliography: তথ্যবিবরণ Cc: অনুলিপি Chapter: অধ্যায় Contents: সূচীপত্র Encl: সংযুক্তি Figure: ছবি/নকশা Glossary: পরিভাষার শব্দসম্ভার Index: সূচক/নির্দেশক ListOfFigures: ছবি/নকশা সমূহের তালিকা ListOfTables: তালিকাসারণী Page: পৃষ্ঠা Part: খন্ড Preface: পূর্বকথা Proof: প্রমাণ References: তথ্যসুত্রসমূহ See: দেখুন SeeAlso: আরও দেখুন Table: সারনী To: প্রতি pandoc-3.1.3/data/translations/ca.yaml0000644000000000000000000000060207346545000016052 0ustar0000000000000000Abstract: Resum Appendix: Apèndix Bibliography: Bibliografia Cc: Còpies a Chapter: Capítol Contents: Índex Encl: Adjunt Figure: Figura Glossary: Glossari Index: Índex alfabètic ListOfFigures: Índex de figures ListOfTables: Índex de taules Page: Pàgina Part: Part Preface: Pròleg Proof: Demostració References: Referències See: Vegeu SeeAlso: Vegeu també Table: Taula To: A pandoc-3.1.3/data/translations/cs.yaml0000644000000000000000000000056107346545000016100 0ustar0000000000000000Abstract: Abstrakt Appendix: Dodatek Bibliography: Literatura Cc: 'Na vědomí:' Chapter: Kapitola Contents: Obsah Encl: Příloha Figure: Obrázek Glossary: Slovník Index: Index ListOfFigures: Seznam obrázků ListOfTables: Seznam tabulek Page: Strana Part: Část Preface: Předmluva Proof: Důkaz References: Reference See: viz SeeAlso: viz Table: Tabulka To: Komu pandoc-3.1.3/data/translations/da.yaml0000644000000000000000000000052207346545000016054 0ustar0000000000000000Abstract: Resumé Appendix: Bilag Bibliography: Litteratur Cc: Kopi til} Chapter: Kapitel Contents: Indhold Encl: Vedlagt Figure: Figur Glossary: Gloseliste Index: Indeks ListOfFigures: Figurer ListOfTables: Tabeller Page: Side Part: Del Preface: Forord Proof: Bevis References: Litteratur See: Se SeeAlso: Se også Table: Tabel To: Til} pandoc-3.1.3/data/translations/de.yaml0000644000000000000000000000064707346545000016070 0ustar0000000000000000Abstract: Zusammenfassung Appendix: Anhang Bibliography: Literaturverzeichnis Cc: Verteiler Chapter: Kapitel Contents: Inhaltsverzeichnis Encl: Anlage(n) Figure: Abbildung Glossary: Glossar Index: Index Listing: Auflistung ListOfFigures: Abbildungsverzeichnis ListOfTables: Tabellenverzeichnis Page: Seite Part: Teil Preface: Vorwort Proof: Beweis References: Literatur See: siehe SeeAlso: siehe auch Table: Tabelle To: An pandoc-3.1.3/data/translations/el.yaml0000644000000000000000000000110007346545000016061 0ustar0000000000000000Abstract: Περίληψη Appendix: Παράρτημα Bibliography: Βιβλιογραφία Cc: Κοινοποίηση Chapter: Κεφάλαιο Contents: Περιεχόμενα Encl: Συνημμένα Figure: Σχήμα Glossary: Γλωσσάρι Index: Ευρετήριο ListOfFigures: Κατάλογος σχημάτων ListOfTables: Κατάλογος πινάκων Page: Σελίδα Part: Μέρος Preface: Πρόλογος Proof: Απόδειξη References: Αναφορές See: βλέπε SeeAlso: βλέπε επίσης Table: Πίνακας To: Προς pandoc-3.1.3/data/translations/en.yaml0000644000000000000000000000055107346545000016074 0ustar0000000000000000Abstract: Abstract Appendix: Appendix Bibliography: Bibliography Cc: cc Chapter: Chapter Contents: Contents Encl: encl Figure: Figure Glossary: Glossary Index: Index Listing: Listing ListOfFigures: ListOfFigures ListOfTables: ListOfTables Page: page Part: Part Preface: Preface Proof: Proof References: References See: see SeeAlso: see also Table: Table To: To pandoc-3.1.3/data/translations/eo.yaml0000644000000000000000000000054007346545000016073 0ustar0000000000000000Abstract: Resumo Appendix: Apendico Bibliography: Bibliografio Cc: Kopie al Chapter: Ĉapitro Contents: Enhavo Encl: Aldono(j) Figure: Figuro Glossary: Glosaro Index: Indekso ListOfFigures: Listo de figuroj ListOfTables: Listo de tabeloj Page: Paĝo Preface: Antaŭparolo Proof: Pruvo References: Citaĵoj See: vidu SeeAlso: Parto Table: Tabelo To: Al pandoc-3.1.3/data/translations/es.yaml0000644000000000000000000000062707346545000016105 0ustar0000000000000000Abstract: Resumen Appendix: Apéndice Bibliography: Bibliografía Cc: Copia a Chapter: Capítulo Contents: Índice general Encl: Adjunto(s) Figure: Figura Glossary: Glosario Index: Índice alfabético ListOfFigures: Índice de figuras ListOfTables: Índice de cuadros Page: Página Part: Parte Preface: Prefacio Proof: Prueba References: Referencias See: véase SeeAlso: véase también Table: Cuadro To: A pandoc-3.1.3/data/translations/et.yaml0000644000000000000000000000052007346545000016076 0ustar0000000000000000Abstract: Kokkuvõte Appendix: Lisa Bibliography: Kirjandus Cc: Koopia(d) Chapter: Peatükk Contents: Sisukord Encl: Lisa(d) Figure: Joonis Glossary: Glossary Index: Indeks ListOfFigures: Joonised ListOfTables: Tabelid Page: Lk. Part: Osa Preface: Sissejuhatus Proof: Korrektuur References: Viited See: vt. SeeAlso: vt. ka Table: Tabel pandoc-3.1.3/data/translations/eu.yaml0000644000000000000000000000063207346545000016103 0ustar0000000000000000Abstract: Laburpena Appendix: Eranskina Bibliography: Bibliografia Cc: Kopia Chapter: Kapitulua Contents: Gaien Aurkibidea Encl: Erantsia Figure: Irudia Glossary: Glosarioa Index: Kontzeptuen Aurkibidea ListOfFigures: Irudien Zerrenda ListOfTables: Taulen Zerrenda Page: Orria Part: Atala Preface: Hitzaurrea Proof: Frogapena References: Erreferentziak See: Ikusi SeeAlso: Ikusi, halaber Table: Taula To: Nori pandoc-3.1.3/data/translations/fa.yaml0000644000000000000000000000106007346545000016054 0ustar0000000000000000Abstract: چکیﺪﻫ Appendix: پیﻮﺴﺗ Bibliography: کﺕﺎﺑc>ﻧﺎﻤﻫ Cc: ﺭﻮﻧﻮﺸﺗ Chapter: ﻒﺼﻟ Contents: ﻒﻫﺮﺴﺗ ﻢﻃﺎﻠﺑ Encl: پیﻮﺴﺗ Figure: ﺶﻜﻟ Glossary: ﺩﺎﻨﺷc>ﻧﺎﻤﻫ Index: ﻦﻣﺍیﻩ ListOfFigures: ﻝیﺲﺗ ﺖﺻﺍﻭیﺭ ListOfTables: ﻝیﺲﺗ ﺝﺩﺍﻮﻟ Page: ﺺﻔﺣﺓ Part: ﺐﺨﺷ Preface: پیﺵگﻒﺗﺍﺭ Proof: ﺏﺮﻫﺎﻧ References: ﻡﺭﺎﺠﻋ See: ﺐﺑیﻥیﺩ SeeAlso: ﻥیﺯ ﺐﺑیﻥیﺩ Table: ﺝﺩﻮﻟ To: ﺐﻫ pandoc-3.1.3/data/translations/fi.yaml0000644000000000000000000000055107346545000016070 0ustar0000000000000000Abstract: Tiivistelmä Appendix: Liite Bibliography: Kirjallisuutta Cc: Jakelu Chapter: Luku Contents: Sisältö Encl: Liitteet Figure: Kuva Glossary: Sanasto Index: Hakemisto ListOfFigures: Kuvat ListOfTables: Taulukot Page: Sivu Part: Osa Preface: Esipuhe Proof: Todistus References: Viitteet See: katso SeeAlso: katso myös Table: Taulukko To: Vastaanottaja pandoc-3.1.3/data/translations/fr.yaml0000644000000000000000000000056607346545000016107 0ustar0000000000000000Abstract: Résumé Appendix: Annexe Bibliography: Bibliographie Cc: Cc Chapter: Chapitre Contents: Table des matières Figure: Figure Glossary: Glossaire Index: Index ListOfFigures: Table des figures ListOfTables: Liste des tableaux Page: Page Part: Partie Preface: Préface Proof: Démonstration References: Références See: Voir SeeAlso: Voir aussi Table: Tableau To: À pandoc-3.1.3/data/translations/he.yaml0000644000000000000000000000072507346545000016071 0ustar0000000000000000Abstract: תקציר Appendix: נספח Bibliography: ביבליוגרפיה Cc: העתקים Chapter: פרק Contents: תוכן העניינים Encl: רצ"ב Figure: איור Glossary: מילון מונחים} Index: מפתח ListOfFigures: רשימת האיורים ListOfTables: רשימת הטבלאות Page: עמוד Part: חלק Preface: מבוא Proof: הוכחה} Ps: נ.ב. References: מקורות See: ראה SeeAlso: ראה גם} Table: טבלה To: אל pandoc-3.1.3/data/translations/hi.yaml0000644000000000000000000000105707346545000016074 0ustar0000000000000000Abstract: सारांश Appendix: परिशिष्ट Bibliography: संदर ग्रन्थ} Cc: Chapter: अध्याय Contents: विषय सूची Encl: Figure: चित्र} Headpage: पृषठ Index: सूची ListOfFigures: चित्रों की सूची ListOfTables: तालिकाओं की सूची Page: पृषठ Part: खणड Preface: प्रस्तावना} References: हवाले See: देखिए SeeAlso: और देखिए Table: तालिका To: pandoc-3.1.3/data/translations/hr.yaml0000644000000000000000000000056707346545000016112 0ustar0000000000000000Abstract: Sažetak Appendix: Dodatak Bibliography: Bibliografija Cc: Kopija Chapter: Poglavlje Contents: Sadržaj Encl: Prilozi Figure: Slika Glossary: Pojmovnik Index: Kazalo ListOfFigures: Popis slika ListOfTables: Popis tablica Page: Stranica Part: Dio Preface: Predgovor Proof: Dokaz References: Literatura See: Vidjeti SeeAlso: Također vidjeti Table: Tablica To: Prima pandoc-3.1.3/data/translations/hu.yaml0000644000000000000000000000066507346545000016114 0ustar0000000000000000Abstract: Kivonat Appendix: Függelék Bibliography: Irodalomjegyzék Cc: Körlevél–címzettek Chapter: fejezet Contents: Tartalomjegyzék Encl: Melléklet Figure: ábra Glossary: Szójegyzék Index: Tárgymutató ListOfFigures: Ábrák jegyzéke ListOfTables: Táblázatok jegyzéke Page: oldal Part: rész Preface: Előszó Proof: Bizonyítás References: Hivatkozások See: lásd SeeAlso: lásd még Table: táblázat To: Címzett pandoc-3.1.3/data/translations/is.yaml0000644000000000000000000000057307346545000016111 0ustar0000000000000000Abstract: Útdráttur Appendix: Viðauki Bibliography: Heimildir Cc: Samrit Chapter: Kafli Contents: Efnisyfirlit Encl: Hjálagt Figure: Mynd Glossary: Orðalisti Index: Atriðisorðaskrá ListOfFigures: Myndaskrá ListOfTables: Töfluskrá Page: Blaðsíða Part: Hluti Preface: Formáli Proof: Sönnun References: Heimildir See: Sjá SeeAlso: Sjá einnig Table: Tafla To: Til: pandoc-3.1.3/data/translations/it.yaml0000644000000000000000000000063607346545000016112 0ustar0000000000000000Abstract: Sommario Appendix: Appendice Bibliography: Bibliografia Cc: e p. c. Chapter: Capitolo Contents: Indice Encl: Allegati Figure: Figura Glossary: Glossario Index: Indice analitico ListOfFigures: Elenco delle figure ListOfTables: Elenco delle tabelle Page: Pag. Part: Parte Preface: Prefazione Proof: Dimostrazione References: Riferimenti bibliografici See: vedi SeeAlso: vedi anche Table: Tabella To: Per pandoc-3.1.3/data/translations/km.yaml0000644000000000000000000000125307346545000016101 0ustar0000000000000000Abstract: សង្ខេប Appendix: សេចក្ដីបន្ថែម Bibliography: គន្ថនិទ្ទេស Cc: ចម្លងជួន Chapter: ជំពូក Contents: មាតិការ Encl: ឯកសារភ្ជាប់ Figure: រូប Glossary: សទានុក្រម Index: សន្ទស្សន៍ ListOfFigures: បញ្ជីរូបភាព ListOfTables: បញ្ជីតារាង Page: ទំព័រ Part: ផ្នែក Preface: អារម្ភកថា Proof: សម្រាយ References: ឯកសារយោង See: មើល SeeAlso: មើលបន្ថែម Table: តារាង To: ផ្ញើរទៅ pandoc-3.1.3/data/translations/ko.yaml0000644000000000000000000000045207346545000016103 0ustar0000000000000000Abstract: 요약 Appendix: 부록 Bibliography: 참고문헌 Cc: 사본 Chapter: 장 Contents: 차례 Encl: 동봉 Figure: 그림 Index: 찾아보기 ListOfFigures: 그림 차례 ListOfTables: 표 차례 Page: 페이지 Preface: 서문 Proof: 증명 References: 참고문헌 Table: 표 To: 수신: pandoc-3.1.3/data/translations/lo.yaml0000644000000000000000000000131107346545000016077 0ustar0000000000000000Abstract: ບົດຫຍໍ້ຄວາມ Appendix: ພາກຄັດຕິດ Bibliography: ເອກະສານອ້າງອີງ Cc: ສໍາເນົາເຖິງ Chapter: ບົດທີ Contents: ສາລະບານ Encl: ເອກະສານປະກອບ Figure: ຮູບທີ Glossary: ປະມວນສັບ Index: ດັດຊະນີ ListOfFigures: ສາລະບານຮູບ ListOfTables: ສາລະບານຕາຕະລາງ Page: ໜ້າ Part: ພາກ Preface: ຄໍານໍາ Proof: ຂໍ້ພິສູດ References: ໜັງສືອ້າງອີງ See: ອ່ານ SeeAlso: ອ່ານເພີ່ມ Table: ຕາຕະລາງທີ To: ຮຽນ pandoc-3.1.3/data/translations/lt.yaml0000644000000000000000000000061707346545000016114 0ustar0000000000000000Abstract: Santrauka Appendix: Priedas Bibliography: Literatūra Cc: Kopijos Chapter: Skyrius Contents: Turinys Encl: Įdėta Figure: pav. Glossary: Terminų žodynas Index: Rodyklė ListOfFigures: Iliustracijų sąrašas ListOfTables: Lentelių sąrašas Page: puslapis Part: Dalis Preface: Pratarmė Proof: Įrodymas References: Literatūra See: žiūrėk SeeAlso: taip pat Table: lentelė To: Kam pandoc-3.1.3/data/translations/lv.yaml0000644000000000000000000000054407346545000016115 0ustar0000000000000000Abstract: Anotācija Appendix: Pielikums Bibliography: Literatūra Cc: cc Chapter: Nodaļa Contents: Saturs Encl: encl Figure: Att. Index: Index ListOfFigures: Attēlu saraksts ListOfTables: Tabulu saraksts Page: lpp. Part: Daļa Preface: Priekšvārds Proof: Pierādījums References: Literatūras saraksts See: sk. SeeAlso: sk. arī Table: Tabula To: To pandoc-3.1.3/data/translations/nl.yaml0000644000000000000000000000061007346545000016077 0ustar0000000000000000Abstract: Samenvatting Appendix: Bijlage Bibliography: Bibliografie Cc: cc Chapter: Hoofdstuk Contents: Inhoudsopgave Encl: Bijlage(n) Figure: Figuur Glossary: Verklarende woordenlijst Index: Index ListOfFigures: Lijst van figuren ListOfTables: Lijst van tabellen Page: Pagina Part: Deel Preface: Voorwoord Proof: Bewijs References: Referenties See: zie SeeAlso: zie ook Table: Tabel To: Aan pandoc-3.1.3/data/translations/no.yaml0000644000000000000000000000053207346545000016105 0ustar0000000000000000Abstract: Sammendrag Appendix: Tillegg Bibliography: Bibliografi Cc: Kopi sendt Chapter: Kapittel Contents: Innhold Encl: Vedlegg Figure: Figur Glossary: Ordliste Index: Register ListOfFigures: Figurer ListOfTables: Tabeller Page: Side Part: Del Preface: Forord Proof: Bevis References: Referanser See: Se SeeAlso: Se også Table: Tabell To: Til pandoc-3.1.3/data/translations/pl.yaml0000644000000000000000000000057707346545000016115 0ustar0000000000000000Abstract: Streszczenie Appendix: Dodatek Bibliography: Bibliografia Cc: 'Kopie:' Chapter: Rozdział Contents: Spis treści Encl: Załącznik Figure: Rysunek Glossary: Glossary Index: Indeks ListOfFigures: Spis rysunków ListOfTables: Spis tabel Page: Strona Part: Część Preface: Przedmowa Proof: Dowód References: Literatura See: Zobacz SeeAlso: Zobacz też Table: Tabela To: Do pandoc-3.1.3/data/translations/pt.yaml0000644000000000000000000000060707346545000016117 0ustar0000000000000000Abstract: Resumo Appendix: Apêndice Bibliography: Bibliografia Cc: Com cópia a Chapter: Capítulo Contents: Conteúdo Encl: Anexo Figure: Figura Glossary: Glossário Index: Índice ListOfFigures: Lista de Figuras ListOfTables: Lista de Tabelas Page: Página Part: Parte Preface: Prefácio Proof: Demonstração References: Referências See: ver SeeAlso: ver também Table: Tabela To: Para pandoc-3.1.3/data/translations/rm.yaml0000644000000000000000000000065407346545000016114 0ustar0000000000000000Abstract: Recapitulaziun Appendix: Appendix Bibliography: Index bibliografic Cc: Copia a Chapter: Chapitel Contents: Tavla dal cuntegn Encl: Agiunta(s) Figure: Figura Glossary: Glossari Index: Register da materias ListOfFigures: Tavla da las figuras ListOfTables: Tavla da las tabellas Page: pagina Part: Part Preface: Prefaziun Proof: Demonstraziun References: Bibliografia See: vesair SeeAlso: vesair era Table: Tabella To: A pandoc-3.1.3/data/translations/ro.yaml0000644000000000000000000000057607346545000016121 0ustar0000000000000000Abstract: Rezumat Appendix: Anexa Bibliography: Bibliografie Cc: Copie Chapter: Capitolul Contents: Cuprins Encl: Anexă Figure: Figura Glossary: Glosar Index: Glosar ListOfFigures: Listă de figuri ListOfTables: Listă de tabele Page: Pagina Part: Partea Preface: Prefață Proof: Demonstrație References: Bibliografie See: Vezi SeeAlso: Vezi de asemenea Table: Tabela To: Pentru pandoc-3.1.3/data/translations/ru.yaml0000644000000000000000000000103107346545000016112 0ustar0000000000000000Abstract: Аннотация Appendix: Приложение Bibliography: Литература Cc: исх. Chapter: Глава Contents: Оглавление Encl: вкл. Figure: Рис. Index: Предметный указатель ListOfFigures: Список иллюстраций ListOfTables: Список таблиц Page: с. Part: Часть Preface: Предисловие Proof: Доказательство References: Список литературы See: см. SeeAlso: см. также Table: Таблица To: вх. pandoc-3.1.3/data/translations/sk.yaml0000644000000000000000000000055307346545000016111 0ustar0000000000000000Abstract: Abstrakt Appendix: Dodatok Bibliography: Literatúra Cc: cc. Chapter: Kapitola Contents: Obsah Encl: Prílohy Figure: Obrázok Glossary: Slovník Index: Index ListOfFigures: Zoznam obrázkov ListOfTables: Zoznam tabuliek Page: Strana Part: Časť Preface: Úvod Proof: Dôkaz References: Referencie See: viď SeeAlso: viď tiež Table: Tabuľka To: Pre pandoc-3.1.3/data/translations/sl.yaml0000644000000000000000000000053407346545000016111 0ustar0000000000000000Abstract: Povzetek Appendix: Dodatek Bibliography: Literatura Cc: Kopije Chapter: Poglavje Contents: Kazalo Encl: Priloge Figure: Slika Glossary: Slovar Index: Stvarno kazalo ListOfFigures: Slike ListOfTables: Tabele Page: Stran Part: Del Preface: Predgovor Proof: Dokaz References: Literatura See: glej SeeAlso: glej tudi Table: Tabela To: Prejme pandoc-3.1.3/data/translations/sq.yaml0000644000000000000000000000052407346545000016115 0ustar0000000000000000Abstract: Përmbledhja Appendix: Shtesa Bibliography: Bibliografia Chapter: Kapitulli Contents: Përmbajta Figure: Figura Glossary: Përhasja e Fjalëve Index: Indeksi ListOfFigures: Figurat ListOfTables: Tabelat Page: Faqe Part: Pjesa Preface: Parathenia Proof: Vërtetim References: Referencat See: shiko SeeAlso: shiko dhe Table: Tabela pandoc-3.1.3/data/translations/sr-cyrl.yaml0000644000000000000000000000103407346545000017062 0ustar0000000000000000Abstract: Сажетак Appendix: Додатак Bibliography: Литература Cc: Копије Chapter: Глава Contents: Садржај Encl: Прилози Figure: Слика Glossary: Речник непознатих речи Index: Регистар ListOfFigures: Списак слика ListOfTables: Списак табела Page: Страна Part: Део Preface: Предговор Proof: Доказ References: Библиографија See: Види SeeAlso: Види такође Table: Табела To: Прима pandoc-3.1.3/data/translations/sr.yaml0000644000000000000000000000057307346545000016122 0ustar0000000000000000Abstract: Sažetak Appendix: Dodatak Bibliography: Literatura Cc: Kopije Chapter: Glava Contents: Sadržaj Encl: Prilozi Figure: Slika Glossary: Rečnik nepoznatih reči Index: Registar ListOfFigures: Spisak slika ListOfTables: Spisak tabela Page: Strana Part: Deo Preface: Predgovor Proof: Dokaz References: Bibliografija See: Vidi SeeAlso: Vidi takođe Table: Tabela To: Prima pandoc-3.1.3/data/translations/sv.yaml0000644000000000000000000000056507346545000016127 0ustar0000000000000000Abstract: Sammanfattning Appendix: Bilaga Bibliography: Litteraturförteckning Cc: Kopia för kännedom Chapter: Kapitel Contents: Innehåll Encl: Bil. Figure: Figur Glossary: Ordlista Index: Sakregister ListOfFigures: Figurer ListOfTables: Tabeller Page: Sida Part: Del Preface: Förord Proof: Bevis References: Referenser See: se SeeAlso: se även Table: Tabell To: Till pandoc-3.1.3/data/translations/th.yaml0000644000000000000000000000120207346545000016077 0ustar0000000000000000Abstract: บทคัดย่อ Appendix: ภาคผนวก Bibliography: บรรณานุกรม Cc: สำเนาถึง Chapter: บทที่ Contents: สารบัญ Encl: สิ่งที่แนบมาด้วย Figure: รูปที่ Index: ดรรชนี ListOfFigures: สารบัญรูป ListOfTables: สารบัญตาราง Page: หน้า Part: ภาค Preface: คำนำ Proof: พิสูจน์ References: หนังสืออ้างอิง See: ดู SeeAlso: ดูเพิ่มเติม Table: ตารางที่ To: เรียน pandoc-3.1.3/data/translations/tr.yaml0000644000000000000000000000060607346545000016120 0ustar0000000000000000Abstract: Özet Appendix: Ek Bibliography: Kaynakça Cc: Diğer Alıcılar Chapter: Bölüm Contents: İçindekiler Encl: İlişik Figure: Şekil Glossary: Lügatçe Index: Dizin ListOfFigures: Şekil Listesi ListOfTables: Tablo Listesi Page: Sayfa Part: Kısım Preface: Önsöz Proof: Kanıt References: Kaynaklar See: bkz. SeeAlso: ayrıca bkz. Subject: İlgili Table: Tablo To: Alıcı pandoc-3.1.3/data/translations/uk.yaml0000644000000000000000000000101507346545000016105 0ustar0000000000000000Abstract: Анотація Appendix: Додаток Bibliography: Бібліоґрафія Cc: копія Chapter: Розділ Contents: Зміст Encl: вкладка Figure: Рис. Glossary: Словник термінів Index: Покажчик ListOfFigures: Перелік ілюстрацій ListOfTables: Перелік таблиць Page: с. Part: Частина Preface: Вступ Proof: Доведення References: Література See: див. SeeAlso: див. також Table: Табл. To: До pandoc-3.1.3/data/translations/ur.yaml0000644000000000000000000000106307346545000016117 0ustar0000000000000000Abstract: ﻢﻠﺨّﺻ Appendix: ﺾﻣیﻡہ Bibliography: کﺕﺎﺑیﺎﺗ Cc: ﻦﻘﻟ Chapter: ﺏﺎﺑ Contents: ﻑہﺮﺴﺗ ﻊﻧﻭﺎﻧﺎﺗ Encl: ﻢﻨﺴﻟک Figure: ﺶﻜﻟ Glossary: ﻞﻐﺗ Index: ﺎﺷﺍﺭیہ ListOfFigures: ﻑہﺮﺴﺗ ﺎﺷکﺎﻟ ListOfTables: ﻑہﺮﺴﺗ ﺝﺩﺍﻮﻟ Page: ﺺﻔﺣہ Part: ﺢﺻّہ Preface: ﺩیﺏﺍچہ Proof: ﺚﺑﻮﺗ References: ﺡﻭﺎﻟہ ﺝﺎﺗ Section: ﻒﺼﻟ See: ﻡﻼﺤﻇہ ہﻭ SeeAlso: ﺍیﺽﺍً Table: ﺝﺩﻮﻟ To: ﺐﻣﻼﺤﻇہ pandoc-3.1.3/data/translations/vi.yaml0000644000000000000000000000066307346545000016114 0ustar0000000000000000Abstract: Tóm tắt nội dung Also: Xem thêm Appendix: Phụ lục Bib: Tài liệu tham khảo Cc: Cùng gửi Chapter: Chương Contents: Mục lục Encl: Kèm theo Figure: Hình Glossary: Từ điển chú giải Headto: Gửi Index: Chỉ mục Listfigure: Danh sách hình vẽ Listtable: Danh sách bẳng Page: Trang Part: Phần Preface: Lời nói đầu Proof: Chứng minh References: Tài liệu See: Xem Table: Bẳng pandoc-3.1.3/data/translations/zh-Hans.yaml0000644000000000000000000000053107346545000017000 0ustar0000000000000000Abstract: 摘要 Appendix: 附录 Bibliography: 文献目录 Cc: 副本 Chapter: 章 Contents: 目录 Encl: 附件 Figure: 图 Glossary: 术语 Index: 索引 Listing: 列表 ListOfFigures: 附图目录 ListOfTables: 表格索引 Page: 页 Part: 段 Preface: 序 Proof: 校对 References: 参考文献 See: 见 SeeAlso: 参见 Table: 表 To: 到 pandoc-3.1.3/data/translations/zh-Hant.yaml0000644000000000000000000000053107346545000017001 0ustar0000000000000000Abstract: 摘要 Appendix: 附錄 Bibliography: 文獻目錄 Cc: 副本 Chapter: 章 Contents: 目錄 Encl: 附件 Figure: 圖 Glossary: 術語 Index: 索引 Listing: 列表 ListOfFigures: 附圖目錄 ListOfTables: 表格索引 Page: 頁 Part: 段 Preface: 序 Proof: 校對 References: 參考文獻 See: 見 SeeAlso: 參見 Table: 表 To: 到 pandoc-3.1.3/man/0000755000000000000000000000000007346545000011726 5ustar0000000000000000pandoc-3.1.3/man/manfilter.lua0000644000000000000000000000236407346545000014417 0ustar0000000000000000-- we use preloaded text to get a UTF-8 aware 'upper' function local text = require('text') -- capitalize level 1 headers function Header(el) if el.level == 1 then return pandoc.walk_block(el, { Str = function(el) return pandoc.Str(text.upper(el.text)) end }) end end -- For portability with mandoc, which doesn't allow man commands -- inside table cells, we convert all tables to code blocks. function Table(el) local rendered = pandoc.write(pandoc.Pandoc({el}), "plain") local adjusted = rendered -- tame grid table lines :gsub("%+([=:][=:]+)", function(s) return " " .. string.rep("-", #s - 1) end) :gsub("(%+[-:][-:]+)", function(s) return "" end) :gsub("%+\n","\n") :gsub("\n| ","\n|") :gsub("|","") return { pandoc.RawBlock("man", ".RS -14n"), pandoc.CodeBlock(adjusted), pandoc.RawBlock("man", ".RE") } end -- replace links with link text function Link(el) return el.content end -- remove notes function Note(el) return {} end pandoc-3.1.3/man/pandoc.10000644000000000000000000100432107346545000013255 0ustar0000000000000000.\" Automatically generated by Pandoc 3.1.2 .\" .\" Define V font for inline verbatim, using C font in formats .\" that render this, and otherwise B font. .ie "\f[CB]x\f[]"x" \{\ . ftr V B . ftr VI BI . ftr VB B . ftr VBI BI .\} .el \{\ . ftr V CR . ftr VI CI . ftr VB CB . ftr VBI CBI .\} .TH "Pandoc User\[cq]s Guide" "" "June 6, 2023" "pandoc 3.1.3" "" .hy .SH NAME pandoc - general markup converter .SH SYNOPSIS .PP \f[V]pandoc\f[R] [\f[I]options\f[R]] [\f[I]input-file\f[R]]\&... .SH DESCRIPTION .PP Pandoc is a Haskell library for converting from one markup format to another, and a command-line tool that uses this library. .PP Pandoc can convert between numerous markup and word processing formats, including, but not limited to, various flavors of Markdown, HTML, LaTeX and Word docx. For the full lists of input and output formats, see the \f[V]--from\f[R] and \f[V]--to\f[R] options below. Pandoc can also produce PDF output: see creating a PDF, below. .PP Pandoc\[cq]s enhanced version of Markdown includes syntax for tables, definition lists, metadata blocks, footnotes, citations, math, and much more. See below under Pandoc\[cq]s Markdown. .PP Pandoc has a modular design: it consists of a set of readers, which parse text in a given format and produce a native representation of the document (an \f[I]abstract syntax tree\f[R] or AST), and a set of writers, which convert this native representation into a target format. Thus, adding an input or output format requires only adding a reader or writer. Users can also run custom pandoc filters to modify the intermediate AST. .PP Because pandoc\[cq]s intermediate representation of a document is less expressive than many of the formats it converts between, one should not expect perfect conversions between every format and every other. Pandoc attempts to preserve the structural elements of a document, but not formatting details such as margin size. And some document elements, such as complex tables, may not fit into pandoc\[cq]s simple document model. While conversions from pandoc\[cq]s Markdown to all formats aspire to be perfect, conversions from formats more expressive than pandoc\[cq]s Markdown can be expected to be lossy. .SS Using pandoc .PP If no \f[I]input-files\f[R] are specified, input is read from \f[I]stdin\f[R]. Output goes to \f[I]stdout\f[R] by default. For output to a file, use the \f[V]-o\f[R] option: .IP .nf \f[C] pandoc -o output.html input.txt \f[R] .fi .PP By default, pandoc produces a document fragment. To produce a standalone document (e.g.\ a valid HTML file including \f[V]\f[R] and \f[V]\f[R]), use the \f[V]-s\f[R] or \f[V]--standalone\f[R] flag: .IP .nf \f[C] pandoc -s -o output.html input.txt \f[R] .fi .PP For more information on how standalone documents are produced, see Templates below. .PP If multiple input files are given, pandoc will concatenate them all (with blank lines between them) before parsing. (Use \f[V]--file-scope\f[R] to parse files individually.) .SS Specifying formats .PP The format of the input and output can be specified explicitly using command-line options. The input format can be specified using the \f[V]-f/--from\f[R] option, the output format using the \f[V]-t/--to\f[R] option. Thus, to convert \f[V]hello.txt\f[R] from Markdown to LaTeX, you could type: .IP .nf \f[C] pandoc -f markdown -t latex hello.txt \f[R] .fi .PP To convert \f[V]hello.html\f[R] from HTML to Markdown: .IP .nf \f[C] pandoc -f html -t markdown hello.html \f[R] .fi .PP Supported input and output formats are listed below under Options (see \f[V]-f\f[R] for input formats and \f[V]-t\f[R] for output formats). You can also use \f[V]pandoc --list-input-formats\f[R] and \f[V]pandoc --list-output-formats\f[R] to print lists of supported formats. .PP If the input or output format is not specified explicitly, pandoc will attempt to guess it from the extensions of the filenames. Thus, for example, .IP .nf \f[C] pandoc -o hello.tex hello.txt \f[R] .fi .PP will convert \f[V]hello.txt\f[R] from Markdown to LaTeX. If no output file is specified (so that output goes to \f[I]stdout\f[R]), or if the output file\[cq]s extension is unknown, the output format will default to HTML. If no input file is specified (so that input comes from \f[I]stdin\f[R]), or if the input files\[cq] extensions are unknown, the input format will be assumed to be Markdown. .SS Character encoding .PP Pandoc uses the UTF-8 character encoding for both input and output. If your local character encoding is not UTF-8, you should pipe input and output through \f[V]iconv\f[R]: .IP .nf \f[C] iconv -t utf-8 input.txt | pandoc | iconv -f utf-8 \f[R] .fi .PP Note that in some output formats (such as HTML, LaTeX, ConTeXt, RTF, OPML, DocBook, and Texinfo), information about the character encoding is included in the document header, which will only be included if you use the \f[V]-s/--standalone\f[R] option. .SS Creating a PDF .PP To produce a PDF, specify an output file with a \f[V].pdf\f[R] extension: .IP .nf \f[C] pandoc test.txt -o test.pdf \f[R] .fi .PP By default, pandoc will use LaTeX to create the PDF, which requires that a LaTeX engine be installed (see \f[V]--pdf-engine\f[R] below). Alternatively, pandoc can use ConTeXt, roff ms, or HTML as an intermediate format. To do this, specify an output file with a \f[V].pdf\f[R] extension, as before, but add the \f[V]--pdf-engine\f[R] option or \f[V]-t context\f[R], \f[V]-t html\f[R], or \f[V]-t ms\f[R] to the command line. The tool used to generate the PDF from the intermediate format may be specified using \f[V]--pdf-engine\f[R]. .PP You can control the PDF style using variables, depending on the intermediate format used: see variables for LaTeX, variables for ConTeXt, variables for \f[V]wkhtmltopdf\f[R], variables for ms. When HTML is used as an intermediate format, the output can be styled using \f[V]--css\f[R]. .PP To debug the PDF creation, it can be useful to look at the intermediate representation: instead of \f[V]-o test.pdf\f[R], use for example \f[V]-s -o test.tex\f[R] to output the generated LaTeX. You can then test it with \f[V]pdflatex test.tex\f[R]. .PP When using LaTeX, the following packages need to be available (they are included with all recent versions of TeX Live): \f[V]amsfonts\f[R], \f[V]amsmath\f[R], \f[V]lm\f[R], \f[V]unicode-math\f[R], \f[V]iftex\f[R], \f[V]listings\f[R] (if the \f[V]--listings\f[R] option is used), \f[V]fancyvrb\f[R], \f[V]longtable\f[R], \f[V]booktabs\f[R], \f[V]graphicx\f[R] (if the document contains images), \f[V]hyperref\f[R], \f[V]xcolor\f[R], \f[V]soul\f[R], \f[V]geometry\f[R] (with the \f[V]geometry\f[R] variable set), \f[V]setspace\f[R] (with \f[V]linestretch\f[R]), and \f[V]babel\f[R] (with \f[V]lang\f[R]). If \f[V]CJKmainfont\f[R] is set, \f[V]xeCJK\f[R] is needed. The use of \f[V]xelatex\f[R] or \f[V]lualatex\f[R] as the PDF engine requires \f[V]fontspec\f[R]. \f[V]lualatex\f[R] uses \f[V]selnolig\f[R]. \f[V]xelatex\f[R] uses \f[V]bidi\f[R] (with the \f[V]dir\f[R] variable set). If the \f[V]mathspec\f[R] variable is set, \f[V]xelatex\f[R] will use \f[V]mathspec\f[R] instead of \f[V]unicode-math\f[R]. The \f[V]upquote\f[R] and \f[V]microtype\f[R] packages are used if available, and \f[V]csquotes\f[R] will be used for typography if the \f[V]csquotes\f[R] variable or metadata field is set to a true value. The \f[V]natbib\f[R], \f[V]biblatex\f[R], \f[V]bibtex\f[R], and \f[V]biber\f[R] packages can optionally be used for citation rendering. The following packages will be used to improve output quality if present, but pandoc does not require them to be present: \f[V]upquote\f[R] (for straight quotes in verbatim environments), \f[V]microtype\f[R] (for better spacing adjustments), \f[V]parskip\f[R] (for better inter-paragraph spaces), \f[V]xurl\f[R] (for better line breaks in URLs), \f[V]bookmark\f[R] (for better PDF bookmarks), and \f[V]footnotehyper\f[R] or \f[V]footnote\f[R] (to allow footnotes in tables). .SS Reading from the Web .PP Instead of an input file, an absolute URI may be given. In this case pandoc will fetch the content using HTTP: .IP .nf \f[C] pandoc -f html -t markdown https://www.fsf.org \f[R] .fi .PP It is possible to supply a custom User-Agent string or other header when requesting a document from a URL: .IP .nf \f[C] pandoc -f html -t markdown --request-header User-Agent:\[dq]Mozilla/5.0\[dq] \[rs] https://www.fsf.org \f[R] .fi .SH OPTIONS .SS General options .TP \f[V]-f\f[R] \f[I]FORMAT\f[R], \f[V]-r\f[R] \f[I]FORMAT\f[R], \f[V]--from=\f[R]\f[I]FORMAT\f[R], \f[V]--read=\f[R]\f[I]FORMAT\f[R] Specify input format. \f[I]FORMAT\f[R] can be: .RS .IP \[bu] 2 \f[V]bibtex\f[R] (BibTeX bibliography) .IP \[bu] 2 \f[V]biblatex\f[R] (BibLaTeX bibliography) .IP \[bu] 2 \f[V]commonmark\f[R] (CommonMark Markdown) .IP \[bu] 2 \f[V]commonmark_x\f[R] (CommonMark Markdown with extensions) .IP \[bu] 2 \f[V]creole\f[R] (Creole 1.0) .IP \[bu] 2 \f[V]csljson\f[R] (CSL JSON bibliography) .IP \[bu] 2 \f[V]csv\f[R] (CSV table) .IP \[bu] 2 \f[V]tsv\f[R] (TSV table) .IP \[bu] 2 \f[V]docbook\f[R] (DocBook) .IP \[bu] 2 \f[V]docx\f[R] (Word docx) .IP \[bu] 2 \f[V]dokuwiki\f[R] (DokuWiki markup) .IP \[bu] 2 \f[V]endnotexml\f[R] (EndNote XML bibliography) .IP \[bu] 2 \f[V]epub\f[R] (EPUB) .IP \[bu] 2 \f[V]fb2\f[R] (FictionBook2 e-book) .IP \[bu] 2 \f[V]gfm\f[R] (GitHub-Flavored Markdown), or the deprecated and less accurate \f[V]markdown_github\f[R]; use \f[V]markdown_github\f[R] only if you need extensions not supported in \f[V]gfm\f[R]. .IP \[bu] 2 \f[V]haddock\f[R] (Haddock markup) .IP \[bu] 2 \f[V]html\f[R] (HTML) .IP \[bu] 2 \f[V]ipynb\f[R] (Jupyter notebook) .IP \[bu] 2 \f[V]jats\f[R] (JATS XML) .IP \[bu] 2 \f[V]jira\f[R] (Jira/Confluence wiki markup) .IP \[bu] 2 \f[V]json\f[R] (JSON version of native AST) .IP \[bu] 2 \f[V]latex\f[R] (LaTeX) .IP \[bu] 2 \f[V]markdown\f[R] (Pandoc\[cq]s Markdown) .IP \[bu] 2 \f[V]markdown_mmd\f[R] (MultiMarkdown) .IP \[bu] 2 \f[V]markdown_phpextra\f[R] (PHP Markdown Extra) .IP \[bu] 2 \f[V]markdown_strict\f[R] (original unextended Markdown) .IP \[bu] 2 \f[V]mediawiki\f[R] (MediaWiki markup) .IP \[bu] 2 \f[V]man\f[R] (roff man) .IP \[bu] 2 \f[V]muse\f[R] (Muse) .IP \[bu] 2 \f[V]native\f[R] (native Haskell) .IP \[bu] 2 \f[V]odt\f[R] (ODT) .IP \[bu] 2 \f[V]opml\f[R] (OPML) .IP \[bu] 2 \f[V]org\f[R] (Emacs Org mode) .IP \[bu] 2 \f[V]ris\f[R] (RIS bibliography) .IP \[bu] 2 \f[V]rtf\f[R] (Rich Text Format) .IP \[bu] 2 \f[V]rst\f[R] (reStructuredText) .IP \[bu] 2 \f[V]t2t\f[R] (txt2tags) .IP \[bu] 2 \f[V]textile\f[R] (Textile) .IP \[bu] 2 \f[V]tikiwiki\f[R] (TikiWiki markup) .IP \[bu] 2 \f[V]twiki\f[R] (TWiki markup) .IP \[bu] 2 \f[V]typst\f[R] (typst) .IP \[bu] 2 \f[V]vimwiki\f[R] (Vimwiki) .IP \[bu] 2 the path of a custom Lua reader, see Custom readers and writers below .PP Extensions can be individually enabled or disabled by appending \f[V]+EXTENSION\f[R] or \f[V]-EXTENSION\f[R] to the format name. See Extensions below, for a list of extensions and their names. See \f[V]--list-input-formats\f[R] and \f[V]--list-extensions\f[R], below. .RE .TP \f[V]-t\f[R] \f[I]FORMAT\f[R], \f[V]-w\f[R] \f[I]FORMAT\f[R], \f[V]--to=\f[R]\f[I]FORMAT\f[R], \f[V]--write=\f[R]\f[I]FORMAT\f[R] Specify output format. \f[I]FORMAT\f[R] can be: .RS .IP \[bu] 2 \f[V]asciidoc\f[R] (AsciiDoc) or \f[V]asciidoctor\f[R] (AsciiDoctor) .IP \[bu] 2 \f[V]beamer\f[R] (LaTeX beamer slide show) .IP \[bu] 2 \f[V]bibtex\f[R] (BibTeX bibliography) .IP \[bu] 2 \f[V]biblatex\f[R] (BibLaTeX bibliography) .IP \[bu] 2 \f[V]chunkedhtml\f[R] (zip archive of multiple linked HTML files) .IP \[bu] 2 \f[V]commonmark\f[R] (CommonMark Markdown) .IP \[bu] 2 \f[V]commonmark_x\f[R] (CommonMark Markdown with extensions) .IP \[bu] 2 \f[V]context\f[R] (ConTeXt) .IP \[bu] 2 \f[V]csljson\f[R] (CSL JSON bibliography) .IP \[bu] 2 \f[V]docbook\f[R] or \f[V]docbook4\f[R] (DocBook 4) .IP \[bu] 2 \f[V]docbook5\f[R] (DocBook 5) .IP \[bu] 2 \f[V]docx\f[R] (Word docx) .IP \[bu] 2 \f[V]dokuwiki\f[R] (DokuWiki markup) .IP \[bu] 2 \f[V]epub\f[R] or \f[V]epub3\f[R] (EPUB v3 book) .IP \[bu] 2 \f[V]epub2\f[R] (EPUB v2) .IP \[bu] 2 \f[V]fb2\f[R] (FictionBook2 e-book) .IP \[bu] 2 \f[V]gfm\f[R] (GitHub-Flavored Markdown), or the deprecated and less accurate \f[V]markdown_github\f[R]; use \f[V]markdown_github\f[R] only if you need extensions not supported in \f[V]gfm\f[R]. .IP \[bu] 2 \f[V]haddock\f[R] (Haddock markup) .IP \[bu] 2 \f[V]html\f[R] or \f[V]html5\f[R] (HTML, i.e.\ HTML5/XHTML polyglot markup) .IP \[bu] 2 \f[V]html4\f[R] (XHTML 1.0 Transitional) .IP \[bu] 2 \f[V]icml\f[R] (InDesign ICML) .IP \[bu] 2 \f[V]ipynb\f[R] (Jupyter notebook) .IP \[bu] 2 \f[V]jats_archiving\f[R] (JATS XML, Archiving and Interchange Tag Set) .IP \[bu] 2 \f[V]jats_articleauthoring\f[R] (JATS XML, Article Authoring Tag Set) .IP \[bu] 2 \f[V]jats_publishing\f[R] (JATS XML, Journal Publishing Tag Set) .IP \[bu] 2 \f[V]jats\f[R] (alias for \f[V]jats_archiving\f[R]) .IP \[bu] 2 \f[V]jira\f[R] (Jira/Confluence wiki markup) .IP \[bu] 2 \f[V]json\f[R] (JSON version of native AST) .IP \[bu] 2 \f[V]latex\f[R] (LaTeX) .IP \[bu] 2 \f[V]man\f[R] (roff man) .IP \[bu] 2 \f[V]markdown\f[R] (Pandoc\[cq]s Markdown) .IP \[bu] 2 \f[V]markdown_mmd\f[R] (MultiMarkdown) .IP \[bu] 2 \f[V]markdown_phpextra\f[R] (PHP Markdown Extra) .IP \[bu] 2 \f[V]markdown_strict\f[R] (original unextended Markdown) .IP \[bu] 2 \f[V]markua\f[R] (Markua) .IP \[bu] 2 \f[V]mediawiki\f[R] (MediaWiki markup) .IP \[bu] 2 \f[V]ms\f[R] (roff ms) .IP \[bu] 2 \f[V]muse\f[R] (Muse) .IP \[bu] 2 \f[V]native\f[R] (native Haskell) .IP \[bu] 2 \f[V]odt\f[R] (OpenOffice text document) .IP \[bu] 2 \f[V]opml\f[R] (OPML) .IP \[bu] 2 \f[V]opendocument\f[R] (OpenDocument) .IP \[bu] 2 \f[V]org\f[R] (Emacs Org mode) .IP \[bu] 2 \f[V]pdf\f[R] (PDF) .IP \[bu] 2 \f[V]plain\f[R] (plain text) .IP \[bu] 2 \f[V]pptx\f[R] (PowerPoint slide show) .IP \[bu] 2 \f[V]rst\f[R] (reStructuredText) .IP \[bu] 2 \f[V]rtf\f[R] (Rich Text Format) .IP \[bu] 2 \f[V]texinfo\f[R] (GNU Texinfo) .IP \[bu] 2 \f[V]textile\f[R] (Textile) .IP \[bu] 2 \f[V]slideous\f[R] (Slideous HTML and JavaScript slide show) .IP \[bu] 2 \f[V]slidy\f[R] (Slidy HTML and JavaScript slide show) .IP \[bu] 2 \f[V]dzslides\f[R] (DZSlides HTML5 + JavaScript slide show) .IP \[bu] 2 \f[V]revealjs\f[R] (reveal.js HTML5 + JavaScript slide show) .IP \[bu] 2 \f[V]s5\f[R] (S5 HTML and JavaScript slide show) .IP \[bu] 2 \f[V]tei\f[R] (TEI Simple) .IP \[bu] 2 \f[V]typst\f[R] (typst) .IP \[bu] 2 \f[V]xwiki\f[R] (XWiki markup) .IP \[bu] 2 \f[V]zimwiki\f[R] (ZimWiki markup) .IP \[bu] 2 the path of a custom Lua writer, see Custom readers and writers below .PP Note that \f[V]odt\f[R], \f[V]docx\f[R], \f[V]epub\f[R], and \f[V]pdf\f[R] output will not be directed to \f[I]stdout\f[R] unless forced with \f[V]-o -\f[R]. .PP Extensions can be individually enabled or disabled by appending \f[V]+EXTENSION\f[R] or \f[V]-EXTENSION\f[R] to the format name. See Extensions below, for a list of extensions and their names. See \f[V]--list-output-formats\f[R] and \f[V]--list-extensions\f[R], below. .RE .TP \f[V]-o\f[R] \f[I]FILE\f[R], \f[V]--output=\f[R]\f[I]FILE\f[R] Write output to \f[I]FILE\f[R] instead of \f[I]stdout\f[R]. If \f[I]FILE\f[R] is \f[V]-\f[R], output will go to \f[I]stdout\f[R], even if a non-textual format (\f[V]docx\f[R], \f[V]odt\f[R], \f[V]epub2\f[R], \f[V]epub3\f[R]) is specified. If the output format is \f[V]chunkedhtml\f[R] and \f[I]FILE\f[R] has no extension, then instead of producing a \f[V].zip\f[R] file pandoc will create a directory \f[I]FILE\f[R] and unpack the zip archive there (unless \f[I]FILE\f[R] already exists, in which case an error will be raised). .TP \f[V]--data-dir=\f[R]\f[I]DIRECTORY\f[R] Specify the user data directory to search for pandoc data files. If this option is not specified, the default user data directory will be used. On *nix and macOS systems this will be the \f[V]pandoc\f[R] subdirectory of the XDG data directory (by default, \f[V]$HOME/.local/share\f[R], overridable by setting the \f[V]XDG_DATA_HOME\f[R] environment variable). If that directory does not exist and \f[V]$HOME/.pandoc\f[R] exists, it will be used (for backwards compatibility). On Windows the default user data directory is \f[V]%APPDATA%\[rs]pandoc\f[R]. You can find the default user data directory on your system by looking at the output of \f[V]pandoc --version\f[R]. Data files placed in this directory (for example, \f[V]reference.odt\f[R], \f[V]reference.docx\f[R], \f[V]epub.css\f[R], \f[V]templates\f[R]) will override pandoc\[cq]s normal defaults. (Note that the user data directory is not created by pandoc, so you will need to create it yourself if you want to make use of it.) .TP \f[V]-d\f[R] \f[I]FILE\f[R], \f[V]--defaults=\f[R]\f[I]FILE\f[R] Specify a set of default option settings. \f[I]FILE\f[R] is a YAML file whose fields correspond to command-line option settings. All options for document conversion, including input and output files, can be set using a defaults file. The file will be searched for first in the working directory, and then in the \f[V]defaults\f[R] subdirectory of the user data directory (see \f[V]--data-dir\f[R]). The \f[V].yaml\f[R] extension may be omitted. See the section Defaults files for more information on the file format. Settings from the defaults file may be overridden or extended by subsequent options on the command line. .TP \f[V]--bash-completion\f[R] Generate a bash completion script. To enable bash completion with pandoc, add this to your \f[V].bashrc\f[R]: .RS .IP .nf \f[C] eval \[dq]$(pandoc --bash-completion)\[dq] \f[R] .fi .RE .TP \f[V]--verbose\f[R] Give verbose debugging output. .TP \f[V]--quiet\f[R] Suppress warning messages. .TP \f[V]--fail-if-warnings\f[R] Exit with error status if there are any warnings. .TP \f[V]--log=\f[R]\f[I]FILE\f[R] Write log messages in machine-readable JSON format to \f[I]FILE\f[R]. All messages above DEBUG level will be written, regardless of verbosity settings (\f[V]--verbose\f[R], \f[V]--quiet\f[R]). .TP \f[V]--list-input-formats\f[R] List supported input formats, one per line. .TP \f[V]--list-output-formats\f[R] List supported output formats, one per line. .TP \f[V]--list-extensions\f[R][\f[V]=\f[R]\f[I]FORMAT\f[R]] List supported extensions for \f[I]FORMAT\f[R], one per line, preceded by a \f[V]+\f[R] or \f[V]-\f[R] indicating whether it is enabled by default in \f[I]FORMAT\f[R]. If \f[I]FORMAT\f[R] is not specified, defaults for pandoc\[cq]s Markdown are given. .TP \f[V]--list-highlight-languages\f[R] List supported languages for syntax highlighting, one per line. .TP \f[V]--list-highlight-styles\f[R] List supported styles for syntax highlighting, one per line. See \f[V]--highlight-style\f[R]. .TP \f[V]-v\f[R], \f[V]--version\f[R] Print version. .TP \f[V]-h\f[R], \f[V]--help\f[R] Show usage message. .SS Reader options .TP \f[V]--shift-heading-level-by=\f[R]\f[I]NUMBER\f[R] Shift heading levels by a positive or negative integer. For example, with \f[V]--shift-heading-level-by=-1\f[R], level 2 headings become level 1 headings, and level 3 headings become level 2 headings. Headings cannot have a level less than 1, so a heading that would be shifted below level 1 becomes a regular paragraph. Exception: with a shift of -N, a level-N heading at the beginning of the document replaces the metadata title. \f[V]--shift-heading-level-by=-1\f[R] is a good choice when converting HTML or Markdown documents that use an initial level-1 heading for the document title and level-2+ headings for sections. \f[V]--shift-heading-level-by=1\f[R] may be a good choice for converting Markdown documents that use level-1 headings for sections to HTML, since pandoc uses a level-1 heading to render the document title. .TP \f[V]--base-header-level=\f[R]\f[I]NUMBER\f[R] \f[I]Deprecated. Use \f[VI]--shift-heading-level-by\f[I]=X instead, where X = NUMBER - 1.\f[R] Specify the base level for headings (defaults to 1). .TP \f[V]--indented-code-classes=\f[R]\f[I]CLASSES\f[R] Specify classes to use for indented code blocks\[en]for example, \f[V]perl,numberLines\f[R] or \f[V]haskell\f[R]. Multiple classes may be separated by spaces or commas. .TP \f[V]--default-image-extension=\f[R]\f[I]EXTENSION\f[R] Specify a default extension to use when image paths/URLs have no extension. This allows you to use the same source for formats that require different kinds of images. Currently this option only affects the Markdown and LaTeX readers. .TP \f[V]--file-scope\f[R] Parse each file individually before combining for multifile documents. This will allow footnotes in different files with the same identifiers to work as expected. If this option is set, footnotes and links will not work across files. Reading binary files (docx, odt, epub) implies \f[V]--file-scope\f[R]. .RS .PP If two or more files are processed using \f[V]--file-scope\f[R], prefixes based on the filenames will be added to identifiers in order to disambiguate them, and internal links will be adjusted accordingly. For example, a header with identifier \f[V]foo\f[R] in \f[V]subdir/file1.txt\f[R] will have its identifier changed to \f[V]subdir__file1.txt__foo\f[R]. .PP In addition, a Div with an identifier based on the filename will be added around the file\[cq]s content, so that internal links to the filename will point to this Div\[cq]s identifier. .RE .TP \f[V]-F\f[R] \f[I]PROGRAM\f[R], \f[V]--filter=\f[R]\f[I]PROGRAM\f[R] Specify an executable to be used as a filter transforming the pandoc AST after the input is parsed and before the output is written. The executable should read JSON from stdin and write JSON to stdout. The JSON must be formatted like pandoc\[cq]s own JSON input and output. The name of the output format will be passed to the filter as the first argument. Hence, .RS .IP .nf \f[C] pandoc --filter ./caps.py -t latex \f[R] .fi .PP is equivalent to .IP .nf \f[C] pandoc -t json | ./caps.py latex | pandoc -f json -t latex \f[R] .fi .PP The latter form may be useful for debugging filters. .PP Filters may be written in any language. \f[V]Text.Pandoc.JSON\f[R] exports \f[V]toJSONFilter\f[R] to facilitate writing filters in Haskell. Those who would prefer to write filters in python can use the module \f[V]pandocfilters\f[R], installable from PyPI. There are also pandoc filter libraries in PHP, perl, and JavaScript/node.js. .PP In order of preference, pandoc will look for filters in .IP "1." 3 a specified full or relative path (executable or non-executable), .IP "2." 3 \f[V]$DATADIR/filters\f[R] (executable or non-executable) where \f[V]$DATADIR\f[R] is the user data directory (see \f[V]--data-dir\f[R], above), .IP "3." 3 \f[V]$PATH\f[R] (executable only). .PP Filters, Lua-filters, and citeproc processing are applied in the order specified on the command line. .RE .TP \f[V]-L\f[R] \f[I]SCRIPT\f[R], \f[V]--lua-filter=\f[R]\f[I]SCRIPT\f[R] Transform the document in a similar fashion as JSON filters (see \f[V]--filter\f[R]), but use pandoc\[cq]s built-in Lua filtering system. The given Lua script is expected to return a list of Lua filters which will be applied in order. Each Lua filter must contain element-transforming functions indexed by the name of the AST element on which the filter function should be applied. .RS .PP The \f[V]pandoc\f[R] Lua module provides helper functions for element creation. It is always loaded into the script\[cq]s Lua environment. .PP See the Lua filters documentation for further details. .PP In order of preference, pandoc will look for Lua filters in .IP "1." 3 a specified full or relative path, .IP "2." 3 \f[V]$DATADIR/filters\f[R] where \f[V]$DATADIR\f[R] is the user data directory (see \f[V]--data-dir\f[R], above). .PP Filters, Lua filters, and citeproc processing are applied in the order specified on the command line. .RE .TP \f[V]-M\f[R] \f[I]KEY\f[R][\f[V]=\f[R]\f[I]VAL\f[R]], \f[V]--metadata=\f[R]\f[I]KEY\f[R][\f[V]:\f[R]\f[I]VAL\f[R]] Set the metadata field \f[I]KEY\f[R] to the value \f[I]VAL\f[R]. A value specified on the command line overrides a value specified in the document using YAML metadata blocks. Values will be parsed as YAML boolean or string values. If no value is specified, the value will be treated as Boolean true. Like \f[V]--variable\f[R], \f[V]--metadata\f[R] causes template variables to be set. But unlike \f[V]--variable\f[R], \f[V]--metadata\f[R] affects the metadata of the underlying document (which is accessible from filters and may be printed in some output formats) and metadata values will be escaped when inserted into the template. .TP \f[V]--metadata-file=\f[R]\f[I]FILE\f[R] Read metadata from the supplied YAML (or JSON) file. This option can be used with every input format, but string scalars in the metadata file will always be parsed as Markdown. (If the input format is Markdown or a Markdown variant, then the same variant will be used to parse the metadata file; if it is a non-Markdown format, pandoc\[cq]s default Markdown extensions will be used.) This option can be used repeatedly to include multiple metadata files; values in files specified later on the command line will be preferred over those specified in earlier files. Metadata values specified inside the document, or by using \f[V]-M\f[R], overwrite values specified with this option. The file will be searched for first in the working directory, and then in the \f[V]metadata\f[R] subdirectory of the user data directory (see \f[V]--data-dir\f[R]). .TP \f[V]-p\f[R], \f[V]--preserve-tabs\f[R] Preserve tabs instead of converting them to spaces. (By default, pandoc converts tabs to spaces before parsing its input.) Note that this will only affect tabs in literal code spans and code blocks. Tabs in regular text are always treated as spaces. .TP \f[V]--tab-stop=\f[R]\f[I]NUMBER\f[R] Specify the number of spaces per tab (default is 4). .TP \f[V]--track-changes=accept\f[R]|\f[V]reject\f[R]|\f[V]all\f[R] Specifies what to do with insertions, deletions, and comments produced by the MS Word \[lq]Track Changes\[rq] feature. \f[V]accept\f[R] (the default) processes all the insertions and deletions. \f[V]reject\f[R] ignores them. Both \f[V]accept\f[R] and \f[V]reject\f[R] ignore comments. \f[V]all\f[R] includes all insertions, deletions, and comments, wrapped in spans with \f[V]insertion\f[R], \f[V]deletion\f[R], \f[V]comment-start\f[R], and \f[V]comment-end\f[R] classes, respectively. The author and time of change is included. \f[V]all\f[R] is useful for scripting: only accepting changes from a certain reviewer, say, or before a certain date. If a paragraph is inserted or deleted, \f[V]track-changes=all\f[R] produces a span with the class \f[V]paragraph-insertion\f[R]/\f[V]paragraph-deletion\f[R] before the affected paragraph break. This option only affects the docx reader. .TP \f[V]--extract-media=\f[R]\f[I]DIR\f[R] Extract images and other media contained in or linked from the source document to the path \f[I]DIR\f[R], creating it if necessary, and adjust the images references in the document so they point to the extracted files. Media are downloaded, read from the file system, or extracted from a binary container (e.g.\ docx), as needed. The original file paths are used if they are relative paths not containing \f[V]..\f[R]. Otherwise filenames are constructed from the SHA1 hash of the contents. .TP \f[V]--abbreviations=\f[R]\f[I]FILE\f[R] Specifies a custom abbreviations file, with abbreviations one to a line. If this option is not specified, pandoc will read the data file \f[V]abbreviations\f[R] from the user data directory or fall back on a system default. To see the system default, use \f[V]pandoc --print-default-data-file=abbreviations\f[R]. The only use pandoc makes of this list is in the Markdown reader. Strings found in this list will be followed by a nonbreaking space, and the period will not produce sentence-ending space in formats like LaTeX. The strings may not contain spaces. .TP \f[V]--trace\f[R] Print diagnostic output tracing parser progress to stderr. This option is intended for use by developers in diagnosing performance issues. .SS General writer options .TP \f[V]-s\f[R], \f[V]--standalone\f[R] Produce output with an appropriate header and footer (e.g.\ a standalone HTML, LaTeX, TEI, or RTF file, not a fragment). This option is set automatically for \f[V]pdf\f[R], \f[V]epub\f[R], \f[V]epub3\f[R], \f[V]fb2\f[R], \f[V]docx\f[R], and \f[V]odt\f[R] output. For \f[V]native\f[R] output, this option causes metadata to be included; otherwise, metadata is suppressed. .TP \f[V]--template=\f[R]\f[I]FILE\f[R]|\f[I]URL\f[R] Use the specified file as a custom template for the generated document. Implies \f[V]--standalone\f[R]. See Templates, below, for a description of template syntax. If no extension is specified, an extension corresponding to the writer will be added, so that \f[V]--template=special\f[R] looks for \f[V]special.html\f[R] for HTML output. If the template is not found, pandoc will search for it in the \f[V]templates\f[R] subdirectory of the user data directory (see \f[V]--data-dir\f[R]). If this option is not used, a default template appropriate for the output format will be used (see \f[V]-D/--print-default-template\f[R]). .TP \f[V]-V\f[R] \f[I]KEY\f[R][\f[V]=\f[R]\f[I]VAL\f[R]], \f[V]--variable=\f[R]\f[I]KEY\f[R][\f[V]:\f[R]\f[I]VAL\f[R]] Set the template variable \f[I]KEY\f[R] to the value \f[I]VAL\f[R] when rendering the document in standalone mode. If no \f[I]VAL\f[R] is specified, the key will be given the value \f[V]true\f[R]. .TP \f[V]--sandbox\f[R] Run pandoc in a sandbox, limiting IO operations in readers and writers to reading the files specified on the command line. Note that this option does not limit IO operations by filters or in the production of PDF documents. But it does offer security against, for example, disclosure of files through the use of \f[V]include\f[R] directives. Anyone using pandoc on untrusted user input should use this option. .RS .PP Note: some readers and writers (e.g., \f[V]docx\f[R]) need access to data files. If these are stored on the file system, then pandoc will not be able to find them when run in \f[V]--sandbox\f[R] mode and will raise an error. For these applications, we recommend using a pandoc binary compiled with the \f[V]embed_data_files\f[R] option, which causes the data files to be baked into the binary instead of being stored on the file system. .RE .TP \f[V]-D\f[R] \f[I]FORMAT\f[R], \f[V]--print-default-template=\f[R]\f[I]FORMAT\f[R] Print the system default template for an output \f[I]FORMAT\f[R]. (See \f[V]-t\f[R] for a list of possible \f[I]FORMAT\f[R]s.) Templates in the user data directory are ignored. This option may be used with \f[V]-o\f[R]/\f[V]--output\f[R] to redirect output to a file, but \f[V]-o\f[R]/\f[V]--output\f[R] must come before \f[V]--print-default-template\f[R] on the command line. .RS .PP Note that some of the default templates use partials, for example \f[V]styles.html\f[R]. To print the partials, use \f[V]--print-default-data-file\f[R]: for example, \f[V]--print-default-data-file=templates/styles.html\f[R]. .RE .TP \f[V]--print-default-data-file=\f[R]\f[I]FILE\f[R] Print a system default data file. Files in the user data directory are ignored. This option may be used with \f[V]-o\f[R]/\f[V]--output\f[R] to redirect output to a file, but \f[V]-o\f[R]/\f[V]--output\f[R] must come before \f[V]--print-default-data-file\f[R] on the command line. .TP \f[V]--eol=crlf\f[R]|\f[V]lf\f[R]|\f[V]native\f[R] Manually specify line endings: \f[V]crlf\f[R] (Windows), \f[V]lf\f[R] (macOS/Linux/UNIX), or \f[V]native\f[R] (line endings appropriate to the OS on which pandoc is being run). The default is \f[V]native\f[R]. .TP \f[V]--dpi\f[R]=\f[I]NUMBER\f[R] Specify the default dpi (dots per inch) value for conversion from pixels to inch/centimeters and vice versa. (Technically, the correct term would be ppi: pixels per inch.) The default is 96dpi. When images contain information about dpi internally, the encoded value is used instead of the default specified by this option. .TP \f[V]--wrap=auto\f[R]|\f[V]none\f[R]|\f[V]preserve\f[R] Determine how text is wrapped in the output (the source code, not the rendered version). With \f[V]auto\f[R] (the default), pandoc will attempt to wrap lines to the column width specified by \f[V]--columns\f[R] (default 72). With \f[V]none\f[R], pandoc will not wrap lines at all. With \f[V]preserve\f[R], pandoc will attempt to preserve the wrapping from the source document (that is, where there are nonsemantic newlines in the source, there will be nonsemantic newlines in the output as well). In \f[V]ipynb\f[R] output, this option affects wrapping of the contents of markdown cells. .TP \f[V]--columns=\f[R]\f[I]NUMBER\f[R] Specify length of lines in characters. This affects text wrapping in the generated source code (see \f[V]--wrap\f[R]). It also affects calculation of column widths for plain text tables (see Tables below). .TP \f[V]--toc\f[R], \f[V]--table-of-contents\f[R] Include an automatically generated table of contents (or, in the case of \f[V]latex\f[R], \f[V]context\f[R], \f[V]docx\f[R], \f[V]odt\f[R], \f[V]opendocument\f[R], \f[V]rst\f[R], or \f[V]ms\f[R], an instruction to create one) in the output document. This option has no effect unless \f[V]-s/--standalone\f[R] is used, and it has no effect on \f[V]man\f[R], \f[V]docbook4\f[R], \f[V]docbook5\f[R], or \f[V]jats\f[R] output. .RS .PP Note that if you are producing a PDF via \f[V]ms\f[R], the table of contents will appear at the beginning of the document, before the title. If you would prefer it to be at the end of the document, use the option \f[V]--pdf-engine-opt=--no-toc-relocation\f[R]. .RE .TP \f[V]--toc-depth=\f[R]\f[I]NUMBER\f[R] Specify the number of section levels to include in the table of contents. The default is 3 (which means that level-1, 2, and 3 headings will be listed in the contents). .TP \f[V]--strip-comments\f[R] Strip out HTML comments in the Markdown or Textile source, rather than passing them on to Markdown, Textile or HTML output as raw HTML. This does not apply to HTML comments inside raw HTML blocks when the \f[V]markdown_in_html_blocks\f[R] extension is not set. .TP \f[V]--no-highlight\f[R] Disables syntax highlighting for code blocks and inlines, even when a language attribute is given. .TP \f[V]--highlight-style=\f[R]\f[I]STYLE\f[R]|\f[I]FILE\f[R] Specifies the coloring style to be used in highlighted source code. Options are \f[V]pygments\f[R] (the default), \f[V]kate\f[R], \f[V]monochrome\f[R], \f[V]breezeDark\f[R], \f[V]espresso\f[R], \f[V]zenburn\f[R], \f[V]haddock\f[R], and \f[V]tango\f[R]. For more information on syntax highlighting in pandoc, see Syntax highlighting, below. See also \f[V]--list-highlight-styles\f[R]. .RS .PP Instead of a \f[I]STYLE\f[R] name, a JSON file with extension \f[V].theme\f[R] may be supplied. This will be parsed as a KDE syntax highlighting theme and (if valid) used as the highlighting style. .PP To generate the JSON version of an existing style, use \f[V]--print-highlight-style\f[R]. .RE .TP \f[V]--print-highlight-style=\f[R]\f[I]STYLE\f[R]|\f[I]FILE\f[R] Prints a JSON version of a highlighting style, which can be modified, saved with a \f[V].theme\f[R] extension, and used with \f[V]--highlight-style\f[R]. This option may be used with \f[V]-o\f[R]/\f[V]--output\f[R] to redirect output to a file, but \f[V]-o\f[R]/\f[V]--output\f[R] must come before \f[V]--print-highlight-style\f[R] on the command line. .TP \f[V]--syntax-definition=\f[R]\f[I]FILE\f[R] Instructs pandoc to load a KDE XML syntax definition file, which will be used for syntax highlighting of appropriately marked code blocks. This can be used to add support for new languages or to use altered syntax definitions for existing languages. This option may be repeated to add multiple syntax definitions. .TP \f[V]-H\f[R] \f[I]FILE\f[R], \f[V]--include-in-header=\f[R]\f[I]FILE\f[R]|\f[I]URL\f[R] Include contents of \f[I]FILE\f[R], verbatim, at the end of the header. This can be used, for example, to include special CSS or JavaScript in HTML documents. This option can be used repeatedly to include multiple files in the header. They will be included in the order specified. Implies \f[V]--standalone\f[R]. .TP \f[V]-B\f[R] \f[I]FILE\f[R], \f[V]--include-before-body=\f[R]\f[I]FILE\f[R]|\f[I]URL\f[R] Include contents of \f[I]FILE\f[R], verbatim, at the beginning of the document body (e.g.\ after the \f[V]\f[R] tag in HTML, or the \f[V]\[rs]begin{document}\f[R] command in LaTeX). This can be used to include navigation bars or banners in HTML documents. This option can be used repeatedly to include multiple files. They will be included in the order specified. Implies \f[V]--standalone\f[R]. .TP \f[V]-A\f[R] \f[I]FILE\f[R], \f[V]--include-after-body=\f[R]\f[I]FILE\f[R]|\f[I]URL\f[R] Include contents of \f[I]FILE\f[R], verbatim, at the end of the document body (before the \f[V]\f[R] tag in HTML, or the \f[V]\[rs]end{document}\f[R] command in LaTeX). This option can be used repeatedly to include multiple files. They will be included in the order specified. Implies \f[V]--standalone\f[R]. .TP \f[V]--resource-path=\f[R]\f[I]SEARCHPATH\f[R] List of paths to search for images and other resources. The paths should be separated by \f[V]:\f[R] on Linux, UNIX, and macOS systems, and by \f[V];\f[R] on Windows. If \f[V]--resource-path\f[R] is not specified, the default resource path is the working directory. Note that, if \f[V]--resource-path\f[R] is specified, the working directory must be explicitly listed or it will not be searched. For example: \f[V]--resource-path=.:test\f[R] will search the working directory and the \f[V]test\f[R] subdirectory, in that order. This option can be used repeatedly. Search path components that come later on the command line will be searched before those that come earlier, so \f[V]--resource-path foo:bar --resource-path baz:bim\f[R] is equivalent to \f[V]--resource-path baz:bim:foo:bar\f[R]. .TP \f[V]--request-header=\f[R]\f[I]NAME\f[R]\f[V]:\f[R]\f[I]VAL\f[R] Set the request header \f[I]NAME\f[R] to the value \f[I]VAL\f[R] when making HTTP requests (for example, when a URL is given on the command line, or when resources used in a document must be downloaded). If you\[cq]re behind a proxy, you also need to set the environment variable \f[V]http_proxy\f[R] to \f[V]http://...\f[R]. .TP \f[V]--no-check-certificate\f[R] Disable the certificate verification to allow access to unsecure HTTP resources (for example when the certificate is no longer valid or self signed). .SS Options affecting specific writers .TP \f[V]--self-contained\f[R] \f[I]Deprecated synonym for \f[VI]--embed-resources --standalone\f[I].\f[R] .TP \f[V]--embed-resources\f[R] Produce a standalone HTML file with no external dependencies, using \f[V]data:\f[R] URIs to incorporate the contents of linked scripts, stylesheets, images, and videos. The resulting file should be \[lq]self-contained,\[rq] in the sense that it needs no external files and no net access to be displayed properly by a browser. This option works only with HTML output formats, including \f[V]html4\f[R], \f[V]html5\f[R], \f[V]html+lhs\f[R], \f[V]html5+lhs\f[R], \f[V]s5\f[R], \f[V]slidy\f[R], \f[V]slideous\f[R], \f[V]dzslides\f[R], and \f[V]revealjs\f[R]. Scripts, images, and stylesheets at absolute URLs will be downloaded; those at relative URLs will be sought relative to the working directory (if the first source file is local) or relative to the base URL (if the first source file is remote). Elements with the attribute \f[V]data-external=\[dq]1\[dq]\f[R] will be left alone; the documents they link to will not be incorporated in the document. Limitation: resources that are loaded dynamically through JavaScript cannot be incorporated; as a result, fonts may be missing when \f[V]--mathjax\f[R] is used, and some advanced features (e.g.\ zoom or speaker notes) may not work in an offline \[lq]self-contained\[rq] \f[V]reveal.js\f[R] slide show. .TP \f[V]--html-q-tags\f[R] Use \f[V]\f[R] tags for quotes in HTML. (This option only has an effect if the \f[V]smart\f[R] extension is enabled for the input format used.) .TP \f[V]--ascii\f[R] Use only ASCII characters in output. Currently supported for XML and HTML formats (which use entities instead of UTF-8 when this option is selected), CommonMark, gfm, and Markdown (which use entities), roff man and ms (which use hexadecimal escapes), and to a limited degree LaTeX (which uses standard commands for accented characters when possible). .TP \f[V]--reference-links\f[R] Use reference-style links, rather than inline links, in writing Markdown or reStructuredText. By default inline links are used. The placement of link references is affected by the \f[V]--reference-location\f[R] option. .TP \f[V]--reference-location=block\f[R]|\f[V]section\f[R]|\f[V]document\f[R] Specify whether footnotes (and references, if \f[V]reference-links\f[R] is set) are placed at the end of the current (top-level) block, the current section, or the document. The default is \f[V]document\f[R]. Currently this option only affects the \f[V]markdown\f[R], \f[V]muse\f[R], \f[V]html\f[R], \f[V]epub\f[R], \f[V]slidy\f[R], \f[V]s5\f[R], \f[V]slideous\f[R], \f[V]dzslides\f[R], and \f[V]revealjs\f[R] writers. In slide formats, specifying \f[V]--reference-location=section\f[R] will cause notes to be rendered at the bottom of a slide. .TP \f[V]--markdown-headings=setext\f[R]|\f[V]atx\f[R] Specify whether to use ATX-style (\f[V]#\f[R]-prefixed) or Setext-style (underlined) headings for level 1 and 2 headings in Markdown output. (The default is \f[V]atx\f[R].) ATX-style headings are always used for levels 3+. This option also affects Markdown cells in \f[V]ipynb\f[R] output. .TP \f[V]--list-tables\f[R] Render tables as list tables in RST output. .TP \f[V]--top-level-division=default\f[R]|\f[V]section\f[R]|\f[V]chapter\f[R]|\f[V]part\f[R] Treat top-level headings as the given division type in LaTeX, ConTeXt, DocBook, and TEI output. The hierarchy order is part, chapter, then section; all headings are shifted such that the top-level heading becomes the specified type. The default behavior is to determine the best division type via heuristics: unless other conditions apply, \f[V]section\f[R] is chosen. When the \f[V]documentclass\f[R] variable is set to \f[V]report\f[R], \f[V]book\f[R], or \f[V]memoir\f[R] (unless the \f[V]article\f[R] option is specified), \f[V]chapter\f[R] is implied as the setting for this option. If \f[V]beamer\f[R] is the output format, specifying either \f[V]chapter\f[R] or \f[V]part\f[R] will cause top-level headings to become \f[V]\[rs]part{..}\f[R], while second-level headings remain as their default type. .TP \f[V]-N\f[R], \f[V]--number-sections\f[R] Number section headings in LaTeX, ConTeXt, HTML, Docx, ms, or EPUB output. By default, sections are not numbered. Sections with class \f[V]unnumbered\f[R] will never be numbered, even if \f[V]--number-sections\f[R] is specified. .TP \f[V]--number-offset=\f[R]\f[I]NUMBER\f[R][\f[V],\f[R]\f[I]NUMBER\f[R]\f[V],\f[R]\f[I]\&...\f[R]] Offset for section headings in HTML output (ignored in other output formats). The first number is added to the section number for top-level headings, the second for second-level headings, and so on. So, for example, if you want the first top-level heading in your document to be numbered \[lq]6\[rq], specify \f[V]--number-offset=5\f[R]. If your document starts with a level-2 heading which you want to be numbered \[lq]1.5\[rq], specify \f[V]--number-offset=1,4\f[R]. Offsets are 0 by default. Implies \f[V]--number-sections\f[R]. .TP \f[V]--listings\f[R] Use the \f[V]listings\f[R] package for LaTeX code blocks. The package does not support multi-byte encoding for source code. To handle UTF-8 you would need to use a custom template. This issue is fully documented here: Encoding issue with the listings package. .TP \f[V]-i\f[R], \f[V]--incremental\f[R] Make list items in slide shows display incrementally (one by one). The default is for lists to be displayed all at once. .TP \f[V]--slide-level=\f[R]\f[I]NUMBER\f[R] Specifies that headings with the specified level create slides (for \f[V]beamer\f[R], \f[V]s5\f[R], \f[V]slidy\f[R], \f[V]slideous\f[R], \f[V]dzslides\f[R]). Headings above this level in the hierarchy are used to divide the slide show into sections; headings below this level create subheads within a slide. Valid values are 0-6. If a slide level of 0 is specified, slides will not be split automatically on headings, and horizontal rules must be used to indicate slide boundaries. If a slide level is not specified explicitly, the slide level will be set automatically based on the contents of the document; see Structuring the slide show. .TP \f[V]--section-divs\f[R] Wrap sections in \f[V]
\f[R] tags (or \f[V]
\f[R] tags for \f[V]html4\f[R]), and attach identifiers to the enclosing \f[V]
\f[R] (or \f[V]
\f[R]) rather than the heading itself. See Heading identifiers, below. .TP \f[V]--email-obfuscation=none\f[R]|\f[V]javascript\f[R]|\f[V]references\f[R] Specify a method for obfuscating \f[V]mailto:\f[R] links in HTML documents. \f[V]none\f[R] leaves \f[V]mailto:\f[R] links as they are. \f[V]javascript\f[R] obfuscates them using JavaScript. \f[V]references\f[R] obfuscates them by printing their letters as decimal or hexadecimal character references. The default is \f[V]none\f[R]. .TP \f[V]--id-prefix=\f[R]\f[I]STRING\f[R] Specify a prefix to be added to all identifiers and internal links in HTML and DocBook output, and to footnote numbers in Markdown and Haddock output. This is useful for preventing duplicate identifiers when generating fragments to be included in other pages. .TP \f[V]-T\f[R] \f[I]STRING\f[R], \f[V]--title-prefix=\f[R]\f[I]STRING\f[R] Specify \f[I]STRING\f[R] as a prefix at the beginning of the title that appears in the HTML header (but not in the title as it appears at the beginning of the HTML body). Implies \f[V]--standalone\f[R]. .TP \f[V]-c\f[R] \f[I]URL\f[R], \f[V]--css=\f[R]\f[I]URL\f[R] Link to a CSS style sheet. This option can be used repeatedly to include multiple files. They will be included in the order specified. This option only affects HTML (including HTML slide shows) and EPUB output. It should be used together with \f[V]-s/--standalone\f[R], because the link to the stylesheet goes in the document header. .RS .PP A stylesheet is required for generating EPUB. If none is provided using this option (or the \f[V]css\f[R] or \f[V]stylesheet\f[R] metadata fields), pandoc will look for a file \f[V]epub.css\f[R] in the user data directory (see \f[V]--data-dir\f[R]). If it is not found there, sensible defaults will be used. .RE .TP \f[V]--reference-doc=\f[R]\f[I]FILE\f[R]|\f[I]URL\f[R] Use the specified file as a style reference in producing a docx or ODT file. .RS .TP Docx For best results, the reference docx should be a modified version of a docx file produced using pandoc. The contents of the reference docx are ignored, but its stylesheets and document properties (including margins, page size, header, and footer) are used in the new docx. If no reference docx is specified on the command line, pandoc will look for a file \f[V]reference.docx\f[R] in the user data directory (see \f[V]--data-dir\f[R]). If this is not found either, sensible defaults will be used. .RS .PP To produce a custom \f[V]reference.docx\f[R], first get a copy of the default \f[V]reference.docx\f[R]: \f[V]pandoc -o custom-reference.docx --print-default-data-file reference.docx\f[R]. Then open \f[V]custom-reference.docx\f[R] in Word, modify the styles as you wish, and save the file. For best results, do not make changes to this file other than modifying the styles used by pandoc: .PP Paragraph styles: .IP \[bu] 2 Normal .IP \[bu] 2 Body Text .IP \[bu] 2 First Paragraph .IP \[bu] 2 Compact .IP \[bu] 2 Title .IP \[bu] 2 Subtitle .IP \[bu] 2 Author .IP \[bu] 2 Date .IP \[bu] 2 Abstract .IP \[bu] 2 AbstractTitle .IP \[bu] 2 Bibliography .IP \[bu] 2 Heading 1 .IP \[bu] 2 Heading 2 .IP \[bu] 2 Heading 3 .IP \[bu] 2 Heading 4 .IP \[bu] 2 Heading 5 .IP \[bu] 2 Heading 6 .IP \[bu] 2 Heading 7 .IP \[bu] 2 Heading 8 .IP \[bu] 2 Heading 9 .IP \[bu] 2 Block Text .IP \[bu] 2 Source Code .IP \[bu] 2 Footnote Text .IP \[bu] 2 Definition Term .IP \[bu] 2 Definition .IP \[bu] 2 Caption .IP \[bu] 2 Table Caption .IP \[bu] 2 Image Caption .IP \[bu] 2 Figure .IP \[bu] 2 Captioned Figure .IP \[bu] 2 TOC Heading .PP Character styles: .IP \[bu] 2 Default Paragraph Font .IP \[bu] 2 Body Text Char .IP \[bu] 2 Verbatim Char .IP \[bu] 2 Footnote Reference .IP \[bu] 2 Hyperlink .IP \[bu] 2 Section Number .PP Table style: .IP \[bu] 2 Table .RE .TP ODT For best results, the reference ODT should be a modified version of an ODT produced using pandoc. The contents of the reference ODT are ignored, but its stylesheets are used in the new ODT. If no reference ODT is specified on the command line, pandoc will look for a file \f[V]reference.odt\f[R] in the user data directory (see \f[V]--data-dir\f[R]). If this is not found either, sensible defaults will be used. .RS .PP To produce a custom \f[V]reference.odt\f[R], first get a copy of the default \f[V]reference.odt\f[R]: \f[V]pandoc -o custom-reference.odt --print-default-data-file reference.odt\f[R]. Then open \f[V]custom-reference.odt\f[R] in LibreOffice, modify the styles as you wish, and save the file. .RE .TP PowerPoint Templates included with Microsoft PowerPoint 2013 (either with \f[V].pptx\f[R] or \f[V].potx\f[R] extension) are known to work, as are most templates derived from these. .RS .PP The specific requirement is that the template should contain layouts with the following names (as seen within PowerPoint): .IP \[bu] 2 Title Slide .IP \[bu] 2 Title and Content .IP \[bu] 2 Section Header .IP \[bu] 2 Two Content .IP \[bu] 2 Comparison .IP \[bu] 2 Content with Caption .IP \[bu] 2 Blank .PP For each name, the first layout found with that name will be used. If no layout is found with one of the names, pandoc will output a warning and use the layout with that name from the default reference doc instead. (How these layouts are used is described in PowerPoint layout choice.) .PP All templates included with a recent version of MS PowerPoint will fit these criteria. (You can click on \f[V]Layout\f[R] under the \f[V]Home\f[R] menu to check.) .PP You can also modify the default \f[V]reference.pptx\f[R]: first run \f[V]pandoc -o custom-reference.pptx --print-default-data-file reference.pptx\f[R], and then modify \f[V]custom-reference.pptx\f[R] in MS PowerPoint (pandoc will use the layouts with the names listed above). .RE .RE .TP \f[V]--split-level=\f[R]\f[I]NUMBER\f[R] Specify the heading level at which to split an EPUB or chunked HTML document into separate files. The default is to split into chapters at level-1 headings. In the case of EPUB, this option only affects the internal composition of the EPUB, not the way chapters and sections are displayed to users. Some readers may be slow if the chapter files are too large, so for large documents with few level-1 headings, one might want to use a chapter level of 2 or 3. For chunked HTML, this option determines how much content goes in each \[lq]chunk.\[rq] .TP \f[V]--chunk-template=\f[R]\f[I]PATHTEMPLATE\f[R] Specify a template for the filenames in a \f[V]chunkedhtml\f[R] document. In the template, \f[V]%n\f[R] will be replaced by the chunk number (padded with leading 0s to 3 digits), \f[V]%s\f[R] with the section number of the chunk, \f[V]%h\f[R] with the heading text (with formatting removed), \f[V]%i\f[R] with the section identifier. For example, \f[V]%section-%s-%i.html\f[R] might be resolved to \f[V]section-1.1-introduction.html\f[R]. The characters \f[V]/\f[R] and \f[V]\[rs]\f[R] are not allowed in chunk templates and will be ignored. The default is \f[V]%s-%i.html\f[R]. .TP \f[V]--epub-chapter-level=\f[R]\f[I]NUMBER\f[R] \f[I]Deprecated synonym for \f[VI]--split-level\f[I].\f[R] .TP \f[V]--epub-cover-image=\f[R]\f[I]FILE\f[R] Use the specified image as the EPUB cover. It is recommended that the image be less than 1000px in width and height. Note that in a Markdown source document you can also specify \f[V]cover-image\f[R] in a YAML metadata block (see EPUB Metadata, below). .TP \f[V]--epub-title-page=true\f[R]|\f[V]false\f[R] Determines whether a the title page is included in the EPUB (default is \f[V]true\f[R]). .TP \f[V]--epub-metadata=\f[R]\f[I]FILE\f[R] Look in the specified XML file for metadata for the EPUB. The file should contain a series of Dublin Core elements. For example: .RS .IP .nf \f[C] Creative Commons es-AR \f[R] .fi .PP By default, pandoc will include the following metadata elements: \f[V]\f[R] (from the document title), \f[V]\f[R] (from the document authors), \f[V]\f[R] (from the document date, which should be in ISO 8601 format), \f[V]\f[R] (from the \f[V]lang\f[R] variable, or, if is not set, the locale), and \f[V]\f[R] (a randomly generated UUID). Any of these may be overridden by elements in the metadata file. .PP Note: if the source document is Markdown, a YAML metadata block in the document can be used instead. See below under EPUB Metadata. .RE .TP \f[V]--epub-embed-font=\f[R]\f[I]FILE\f[R] Embed the specified font in the EPUB. This option can be repeated to embed multiple fonts. Wildcards can also be used: for example, \f[V]DejaVuSans-*.ttf\f[R]. However, if you use wildcards on the command line, be sure to escape them or put the whole filename in single quotes, to prevent them from being interpreted by the shell. To use the embedded fonts, you will need to add declarations like the following to your CSS (see \f[V]--css\f[R]): .RS .IP .nf \f[C] \[at]font-face { font-family: DejaVuSans; font-style: normal; font-weight: normal; src:url(\[dq]../fonts/DejaVuSans-Regular.ttf\[dq]); } \[at]font-face { font-family: DejaVuSans; font-style: normal; font-weight: bold; src:url(\[dq]../fonts/DejaVuSans-Bold.ttf\[dq]); } \[at]font-face { font-family: DejaVuSans; font-style: italic; font-weight: normal; src:url(\[dq]../fonts/DejaVuSans-Oblique.ttf\[dq]); } \[at]font-face { font-family: DejaVuSans; font-style: italic; font-weight: bold; src:url(\[dq]../fonts/DejaVuSans-BoldOblique.ttf\[dq]); } body { font-family: \[dq]DejaVuSans\[dq]; } \f[R] .fi .RE .TP \f[V]--epub-subdirectory=\f[R]\f[I]DIRNAME\f[R] Specify the subdirectory in the OCF container that is to hold the EPUB-specific contents. The default is \f[V]EPUB\f[R]. To put the EPUB contents in the top level, use an empty string. .TP \f[V]--ipynb-output=all|none|best\f[R] Determines how ipynb output cells are treated. \f[V]all\f[R] means that all of the data formats included in the original are preserved. \f[V]none\f[R] means that the contents of data cells are omitted. \f[V]best\f[R] causes pandoc to try to pick the richest data block in each output cell that is compatible with the output format. The default is \f[V]best\f[R]. .TP \f[V]--pdf-engine=\f[R]\f[I]PROGRAM\f[R] Use the specified engine when producing PDF output. Valid values are \f[V]pdflatex\f[R], \f[V]lualatex\f[R], \f[V]xelatex\f[R], \f[V]latexmk\f[R], \f[V]tectonic\f[R], \f[V]wkhtmltopdf\f[R], \f[V]weasyprint\f[R], \f[V]pagedjs-cli\f[R], \f[V]prince\f[R], \f[V]context\f[R], \f[V]pdfroff\f[R], and \f[V]typst\f[R]. If the engine is not in your PATH, the full path of the engine may be specified here. If this option is not specified, pandoc uses the following defaults depending on the output format specified using \f[V]-t/--to\f[R]: .RS .IP \[bu] 2 \f[V]-t latex\f[R] or none: \f[V]pdflatex\f[R] (other options: \f[V]xelatex\f[R], \f[V]lualatex\f[R], \f[V]tectonic\f[R], \f[V]latexmk\f[R]) .IP \[bu] 2 \f[V]-t context\f[R]: \f[V]context\f[R] .IP \[bu] 2 \f[V]-t html\f[R]: \f[V]wkhtmltopdf\f[R] (other options: \f[V]prince\f[R], \f[V]weasyprint\f[R], \f[V]pagedjs-cli\f[R]; see print-css.rocks for a good introduction to PDF generation from HTML/CSS) .IP \[bu] 2 \f[V]-t ms\f[R]: \f[V]pdfroff\f[R] .IP \[bu] 2 \f[V]-t typst\f[R]: \f[V]typst\f[R] .RE .TP \f[V]--pdf-engine-opt=\f[R]\f[I]STRING\f[R] Use the given string as a command-line argument to the \f[V]pdf-engine\f[R]. For example, to use a persistent directory \f[V]foo\f[R] for \f[V]latexmk\f[R]\[cq]s auxiliary files, use \f[V]--pdf-engine-opt=-outdir=foo\f[R]. Note that no check for duplicate options is done. .SS Citation rendering .TP \f[V]-C\f[R], \f[V]--citeproc\f[R] Process the citations in the file, replacing them with rendered citations and adding a bibliography. Citation processing will not take place unless bibliographic data is supplied, either through an external file specified using the \f[V]--bibliography\f[R] option or the \f[V]bibliography\f[R] field in metadata, or via a \f[V]references\f[R] section in metadata containing a list of citations in CSL YAML format with Markdown formatting. The style is controlled by a CSL stylesheet specified using the \f[V]--csl\f[R] option or the \f[V]csl\f[R] field in metadata. (If no stylesheet is specified, the \f[V]chicago-author-date\f[R] style will be used by default.) The citation processing transformation may be applied before or after filters or Lua filters (see \f[V]--filter\f[R], \f[V]--lua-filter\f[R]): these transformations are applied in the order they appear on the command line. For more information, see the section on Citations. .TP \f[V]--bibliography=\f[R]\f[I]FILE\f[R] Set the \f[V]bibliography\f[R] field in the document\[cq]s metadata to \f[I]FILE\f[R], overriding any value set in the metadata. If you supply this argument multiple times, each \f[I]FILE\f[R] will be added to bibliography. If \f[I]FILE\f[R] is a URL, it will be fetched via HTTP. If \f[I]FILE\f[R] is not found relative to the working directory, it will be sought in the resource path (see \f[V]--resource-path\f[R]). .TP \f[V]--csl=\f[R]\f[I]FILE\f[R] Set the \f[V]csl\f[R] field in the document\[cq]s metadata to \f[I]FILE\f[R], overriding any value set in the metadata. (This is equivalent to \f[V]--metadata csl=FILE\f[R].) If \f[I]FILE\f[R] is a URL, it will be fetched via HTTP. If \f[I]FILE\f[R] is not found relative to the working directory, it will be sought in the resource path (see \f[V]--resource-path\f[R]) and finally in the \f[V]csl\f[R] subdirectory of the pandoc user data directory. .TP \f[V]--citation-abbreviations=\f[R]\f[I]FILE\f[R] Set the \f[V]citation-abbreviations\f[R] field in the document\[cq]s metadata to \f[I]FILE\f[R], overriding any value set in the metadata. (This is equivalent to \f[V]--metadata citation-abbreviations=FILE\f[R].) If \f[I]FILE\f[R] is a URL, it will be fetched via HTTP. If \f[I]FILE\f[R] is not found relative to the working directory, it will be sought in the resource path (see \f[V]--resource-path\f[R]) and finally in the \f[V]csl\f[R] subdirectory of the pandoc user data directory. .TP \f[V]--natbib\f[R] Use \f[V]natbib\f[R] for citations in LaTeX output. This option is not for use with the \f[V]--citeproc\f[R] option or with PDF output. It is intended for use in producing a LaTeX file that can be processed with \f[V]bibtex\f[R]. .TP \f[V]--biblatex\f[R] Use \f[V]biblatex\f[R] for citations in LaTeX output. This option is not for use with the \f[V]--citeproc\f[R] option or with PDF output. It is intended for use in producing a LaTeX file that can be processed with \f[V]bibtex\f[R] or \f[V]biber\f[R]. .SS Math rendering in HTML .PP The default is to render TeX math as far as possible using Unicode characters. Formulas are put inside a \f[V]span\f[R] with \f[V]class=\[dq]math\[dq]\f[R], so that they may be styled differently from the surrounding text if needed. However, this gives acceptable results only for basic math, usually you will want to use \f[V]--mathjax\f[R] or another of the following options. .TP \f[V]--mathjax\f[R][\f[V]=\f[R]\f[I]URL\f[R]] Use MathJax to display embedded TeX math in HTML output. TeX math will be put between \f[V]\[rs](...\[rs])\f[R] (for inline math) or \f[V]\[rs][...\[rs]]\f[R] (for display math) and wrapped in \f[V]\f[R] tags with class \f[V]math\f[R]. Then the MathJax JavaScript will render it. The \f[I]URL\f[R] should point to the \f[V]MathJax.js\f[R] load script. If a \f[I]URL\f[R] is not provided, a link to the Cloudflare CDN will be inserted. .TP \f[V]--mathml\f[R] Convert TeX math to MathML (in \f[V]epub3\f[R], \f[V]docbook4\f[R], \f[V]docbook5\f[R], \f[V]jats\f[R], \f[V]html4\f[R] and \f[V]html5\f[R]). This is the default in \f[V]odt\f[R] output. MathML is supported natively by the main web browsers and select e-book readers. .TP \f[V]--webtex\f[R][\f[V]=\f[R]\f[I]URL\f[R]] Convert TeX formulas to \f[V]\f[R] tags that link to an external script that converts formulas to images. The formula will be URL-encoded and concatenated with the URL provided. For SVG images you can for example use \f[V]--webtex https://latex.codecogs.com/svg.latex?\f[R]. If no URL is specified, the CodeCogs URL generating PNGs will be used (\f[V]https://latex.codecogs.com/png.latex?\f[R]). Note: the \f[V]--webtex\f[R] option will affect Markdown output as well as HTML, which is useful if you\[cq]re targeting a version of Markdown without native math support. .TP \f[V]--katex\f[R][\f[V]=\f[R]\f[I]URL\f[R]] Use KaTeX to display embedded TeX math in HTML output. The \f[I]URL\f[R] is the base URL for the KaTeX library. That directory should contain a \f[V]katex.min.js\f[R] and a \f[V]katex.min.css\f[R] file. If a \f[I]URL\f[R] is not provided, a link to the KaTeX CDN will be inserted. .TP \f[V]--gladtex\f[R] Enclose TeX math in \f[V]\f[R] tags in HTML output. The resulting HTML can then be processed by GladTeX to produce SVG images of the typeset formulas and an HTML file with these images embedded. .RS .IP .nf \f[C] pandoc -s --gladtex input.md -o myfile.htex gladtex -d image_dir myfile.htex # produces myfile.html and images in image_dir \f[R] .fi .RE .SS Options for wrapper scripts .TP \f[V]--dump-args\f[R] Print information about command-line arguments to \f[I]stdout\f[R], then exit. This option is intended primarily for use in wrapper scripts. The first line of output contains the name of the output file specified with the \f[V]-o\f[R] option, or \f[V]-\f[R] (for \f[I]stdout\f[R]) if no output file was specified. The remaining lines contain the command-line arguments, one per line, in the order they appear. These do not include regular pandoc options and their arguments, but do include any options appearing after a \f[V]--\f[R] separator at the end of the line. .TP \f[V]--ignore-args\f[R] Ignore command-line arguments (for use in wrapper scripts). Regular pandoc options are not ignored. Thus, for example, .RS .IP .nf \f[C] pandoc --ignore-args -o foo.html -s foo.txt -- -e latin1 \f[R] .fi .PP is equivalent to .IP .nf \f[C] pandoc -o foo.html -s \f[R] .fi .RE .SH EXIT CODES .PP If pandoc completes successfully, it will return exit code 0. Nonzero exit codes have the following meanings: .RS -14n .IP .nf \f[C] Code Error ------ ------------------------------------- 1 PandocIOError 3 PandocFailOnWarningError 4 PandocAppError 5 PandocTemplateError 6 PandocOptionError 21 PandocUnknownReaderError 22 PandocUnknownWriterError 23 PandocUnsupportedExtensionError 24 PandocCiteprocError 25 PandocBibliographyError 31 PandocEpubSubdirectoryError 43 PandocPDFError 44 PandocXMLError 47 PandocPDFProgramNotFoundError 61 PandocHttpError 62 PandocShouldNeverHappenError 63 PandocSomeError 64 PandocParseError 66 PandocMakePDFError 67 PandocSyntaxMapError 83 PandocFilterError 84 PandocLuaError 89 PandocNoScriptingEngine 91 PandocMacroLoop 92 PandocUTF8DecodingError 93 PandocIpynbDecodingError 94 PandocUnsupportedCharsetError 97 PandocCouldNotFindDataFileError 98 PandocCouldNotFindMetadataFileError 99 PandocResourceNotFound \f[R] .fi .RE .SH DEFAULTS FILES .PP The \f[V]--defaults\f[R] option may be used to specify a package of options, in the form of a YAML file. .PP Fields that are omitted will just have their regular default values. So a defaults file can be as simple as one line: .IP .nf \f[C] verbosity: INFO \f[R] .fi .PP In fields that expect a file path (or list of file paths), the following syntax may be used to interpolate environment variables: .IP .nf \f[C] csl: ${HOME}/mycsldir/special.csl \f[R] .fi .PP \f[V]${USERDATA}\f[R] may also be used; this will always resolve to the user data directory that is current when the defaults file is parsed, regardless of the setting of the environment variable \f[V]USERDATA\f[R]. .PP \f[V]${.}\f[R] will resolve to the directory containing the defaults file itself. This allows you to refer to resources contained in that directory: .IP .nf \f[C] epub-cover-image: ${.}/cover.jpg epub-metadata: ${.}/meta.xml resource-path: - . # the working directory from which pandoc is run - ${.}/images # the images subdirectory of the directory # containing this defaults file \f[R] .fi .PP This environment variable interpolation syntax \f[I]only\f[R] works in fields that expect file paths. .PP Defaults files can be placed in the \f[V]defaults\f[R] subdirectory of the user data directory and used from any directory. For example, one could create a file specifying defaults for writing letters, save it as \f[V]letter.yaml\f[R] in the \f[V]defaults\f[R] subdirectory of the user data directory, and then invoke these defaults from any directory using \f[V]pandoc --defaults letter\f[R] or \f[V]pandoc -dletter\f[R]. .PP When multiple defaults are used, their contents will be combined. .PP Note that, where command-line arguments may be repeated (\f[V]--metadata-file\f[R], \f[V]--css\f[R], \f[V]--include-in-header\f[R], \f[V]--include-before-body\f[R], \f[V]--include-after-body\f[R], \f[V]--variable\f[R], \f[V]--metadata\f[R], \f[V]--syntax-definition\f[R]), the values specified on the command line will combine with values specified in the defaults file, rather than replacing them. .PP The following tables show the mapping between the command line and defaults file entries. .RS -14n .IP .nf \f[C] command line defaults file --------------------------------- ---------------------------------- foo.md input-file: foo.md foo.md bar.md input-files: - foo.md - bar.md \f[R] .fi .RE .PP The value of \f[V]input-files\f[R] may be left empty to indicate input from stdin, and it can be an empty sequence \f[V][]\f[R] for no input. .SS General options .RS -14n .IP .nf \f[C] command line defaults file --------------------------------- ---------------------------------- --from markdown+emoji from: markdown+emoji reader: markdown+emoji to: markdown+hard_line_breaks --to markdown+hard_line_breaks writer: markdown+hard_line_breaks --output foo.pdf output-file: foo.pdf --output - output-file: --data-dir dir data-dir: dir --defaults file defaults: - file --verbose verbosity: INFO --quiet verbosity: ERROR --fail-if-warnings fail-if-warnings: true --sandbox sandbox: true --log=FILE log-file: FILE \f[R] .fi .RE .PP Options specified in a defaults file itself always have priority over those in another file included with a \f[V]defaults:\f[R] entry. .PP \f[V]verbosity\f[R] can have the values \f[V]ERROR\f[R], \f[V]WARNING\f[R], or \f[V]INFO\f[R]. .SS Reader options .RS -14n .IP .nf \f[C] command line defaults file --------------------------------- ---------------------------------- --shift-heading-level-by -1 shift-heading-level-by: -1 indented-code-classes: --indented-code-classes python - python --default-image-extension \[dq].jpg\[dq] default-image-extension: \[aq].jpg\[aq] --file-scope file-scope: true --filter pandoc-citeproc \[rs] filters: - pandoc-citeproc --lua-filter count-words.lua \[rs] - count-words.lua --filter special.lua - type: json path: special.lua --metadata key=value \[rs] metadata: --metadata key2 key: value key2: true --metadata-file meta.yaml metadata-files: - meta.yaml metadata-file: meta.yaml --preserve-tabs preserve-tabs: true --tab-stop 8 tab-stop: 8 --track-changes accept track-changes: accept --extract-media dir extract-media: dir --abbreviations abbrevs.txt abbreviations: abbrevs.txt --trace trace: true \f[R] .fi .RE .PP Metadata values specified in a defaults file are parsed as literal string text, not Markdown. .PP Filters will be assumed to be Lua filters if they have the \f[V].lua\f[R] extension, and JSON filters otherwise. But the filter type can also be specified explicitly, as shown. Filters are run in the order specified. To include the built-in citeproc filter, use either \f[V]citeproc\f[R] or \f[V]{type: citeproc}\f[R]. .SS General writer options .RS -14n .IP .nf \f[C] command line defaults file --------------------------------- ---------------------------------- --standalone standalone: true --template letter template: letter --variable key=val \[rs] variables: --variable key2 key: val key2: true --eol nl eol: nl --dpi 300 dpi: 300 --wrap 60 wrap: 60 --columns 72 columns: 72 --table-of-contents table-of-contents: true --toc toc: true --toc-depth 3 toc-depth: 3 --strip-comments strip-comments: true --no-highlight highlight-style: null --highlight-style kate highlight-style: kate syntax-definitions: --syntax-definition mylang.xml - mylang.xml syntax-definition: mylang.xml --include-in-header inc.tex include-in-header: - inc.tex include-before-body: --include-before-body inc.tex - inc.tex --include-after-body inc.tex include-after-body: - inc.tex --resource-path .:foo resource-path: [\[aq].\[aq],\[aq]foo\[aq]] --request-header foo:bar request-headers: - [\[dq]User-Agent\[dq], \[dq]Mozilla/5.0\[dq]] --no-check-certificate no-check-certificate: true \f[R] .fi .RE .SS Options affecting specific writers .RS -14n .IP .nf \f[C] command line defaults file --------------------------------- ---------------------------------- --self-contained self-contained: true --html-q-tags html-q-tags: true --ascii ascii: true --reference-links reference-links: true --reference-location block reference-location: block --markdown-headings atx markdown-headings: atx --list-tables list-tables: true --top-level-division chapter top-level-division: chapter --number-sections number-sections: true --number-offset=1,4 number-offset: \[rs][1,4\[rs]] --listings listings: true --incremental incremental: true --slide-level 2 slide-level: 2 --section-divs section-divs: true email-obfuscation: references --email-obfuscation references --id-prefix ch1 identifier-prefix: ch1 --title-prefix MySite title-prefix: MySite --css styles/screen.css \[rs] css: --css styles/special.css - styles/screen.css - styles/special.css --reference-doc my.docx reference-doc: my.docx --epub-cover-image cover.jpg epub-cover-image: cover.jpg --epub-title-page=false epub-title-page: false --epub-metadata meta.xml epub-metadata: meta.xml epub-fonts: --epub-embed-font special.otf \[rs] - special.otf - headline.otf --epub-embed-font headline.otf --split-level 2 split-level: 2 --chunk-template=\[dq]%i.html\[dq] chunk-template: \[dq]%i.html\[dq] --epub-subdirectory=\[dq]\[dq] epub-subdirectory: \[aq]\[aq] --ipynb-output best ipynb-output: best --pdf-engine xelatex pdf-engine: xelatex pdf-engine-opts: --pdf-engine-opt=--shell-escape - \[aq]-shell-escape\[aq] pdf-engine-opt: \[aq]-shell-escape\[aq] \f[R] .fi .RE .SS Citation rendering .RS -14n .IP .nf \f[C] command line defaults file --------------------------------- ---------------------------------- --citeproc citeproc: true --bibliography logic.bib metadata: bibliography: logic.bib --csl ieee.csl metadata: csl: ieee.csl metadata: --citation-abbreviations ab.json citation-abbreviations: ab.json --natbib cite-method: natbib --biblatex cite-method: biblatex \f[R] .fi .RE .PP \f[V]cite-method\f[R] can be \f[V]citeproc\f[R], \f[V]natbib\f[R], or \f[V]biblatex\f[R]. This only affects LaTeX output. If you want to use citeproc to format citations, you should also set `citeproc: true'. .PP If you need control over when the citeproc processing is done relative to other filters, you should instead use \f[V]citeproc\f[R] in the list of \f[V]filters\f[R] (see above). .SS Math rendering in HTML .RS -14n .IP .nf \f[C] command line defaults file --------------------------------- ---------------------------------- --mathjax html-math-method: method: mathjax --mathml html-math-method: method: mathml --webtex html-math-method: method: webtex --katex html-math-method: method: katex --gladtex html-math-method: method: gladtex \f[R] .fi .RE .PP In addition to the values listed above, \f[V]method\f[R] can have the value \f[V]plain\f[R]. .PP If the command line option accepts a URL argument, an \f[V]url:\f[R] field can be added to \f[V]html-math-method:\f[R]. .SS Options for wrapper scripts .RS -14n .IP .nf \f[C] command line defaults file --------------------------------- ---------------------------------- --dump-args dump-args: true --ignore-args ignore-args: true \f[R] .fi .RE .SH TEMPLATES .PP When the \f[V]-s/--standalone\f[R] option is used, pandoc uses a template to add header and footer material that is needed for a self-standing document. To see the default template that is used, just type .IP .nf \f[C] pandoc -D *FORMAT* \f[R] .fi .PP where \f[I]FORMAT\f[R] is the name of the output format. A custom template can be specified using the \f[V]--template\f[R] option. You can also override the system default templates for a given output format \f[I]FORMAT\f[R] by putting a file \f[V]templates/default.*FORMAT*\f[R] in the user data directory (see \f[V]--data-dir\f[R], above). \f[I]Exceptions:\f[R] .IP \[bu] 2 For \f[V]odt\f[R] output, customize the \f[V]default.opendocument\f[R] template. .IP \[bu] 2 For \f[V]pdf\f[R] output, customize the \f[V]default.latex\f[R] template (or the \f[V]default.context\f[R] template, if you use \f[V]-t context\f[R], or the \f[V]default.ms\f[R] template, if you use \f[V]-t ms\f[R], or the \f[V]default.html\f[R] template, if you use \f[V]-t html\f[R]). .IP \[bu] 2 \f[V]docx\f[R] and \f[V]pptx\f[R] have no template (however, you can use \f[V]--reference-doc\f[R] to customize the output). .PP Templates contain \f[I]variables\f[R], which allow for the inclusion of arbitrary information at any point in the file. They may be set at the command line using the \f[V]-V/--variable\f[R] option. If a variable is not set, pandoc will look for the key in the document\[cq]s metadata, which can be set using either YAML metadata blocks or with the \f[V]-M/--metadata\f[R] option. In addition, some variables are given default values by pandoc. See Variables below for a list of variables used in pandoc\[cq]s default templates. .PP If you use custom templates, you may need to revise them as pandoc changes. We recommend tracking the changes in the default templates, and modifying your custom templates accordingly. An easy way to do this is to fork the pandoc-templates repository and merge in changes after each pandoc release. .SS Template syntax .SS Comments .PP Anything between the sequence \f[V]$--\f[R] and the end of the line will be treated as a comment and omitted from the output. .SS Delimiters .PP To mark variables and control structures in the template, either \f[V]$\f[R]\&...\f[V]$\f[R] or \f[V]${\f[R]\&...\f[V]}\f[R] may be used as delimiters. The styles may also be mixed in the same template, but the opening and closing delimiter must match in each case. The opening delimiter may be followed by one or more spaces or tabs, which will be ignored. The closing delimiter may be preceded by one or more spaces or tabs, which will be ignored. .PP To include a literal \f[V]$\f[R] in the document, use \f[V]$$\f[R]. .SS Interpolated variables .PP A slot for an interpolated variable is a variable name surrounded by matched delimiters. Variable names must begin with a letter and can contain letters, numbers, \f[V]_\f[R], \f[V]-\f[R], and \f[V].\f[R]. The keywords \f[V]it\f[R], \f[V]if\f[R], \f[V]else\f[R], \f[V]endif\f[R], \f[V]for\f[R], \f[V]sep\f[R], and \f[V]endfor\f[R] may not be used as variable names. Examples: .IP .nf \f[C] $foo$ $foo.bar.baz$ $foo_bar.baz-bim$ $ foo $ ${foo} ${foo.bar.baz} ${foo_bar.baz-bim} ${ foo } \f[R] .fi .PP Variable names with periods are used to get at structured variable values. So, for example, \f[V]employee.salary\f[R] will return the value of the \f[V]salary\f[R] field of the object that is the value of the \f[V]employee\f[R] field. .IP \[bu] 2 If the value of the variable is a simple value, it will be rendered verbatim. (Note that no escaping is done; the assumption is that the calling program will escape the strings appropriately for the output format.) .IP \[bu] 2 If the value is a list, the values will be concatenated. .IP \[bu] 2 If the value is a map, the string \f[V]true\f[R] will be rendered. .IP \[bu] 2 Every other value will be rendered as the empty string. .SS Conditionals .PP A conditional begins with \f[V]if(variable)\f[R] (enclosed in matched delimiters) and ends with \f[V]endif\f[R] (enclosed in matched delimiters). It may optionally contain an \f[V]else\f[R] (enclosed in matched delimiters). The \f[V]if\f[R] section is used if \f[V]variable\f[R] has a non-empty value, otherwise the \f[V]else\f[R] section is used (if present). Examples: .IP .nf \f[C] $if(foo)$bar$endif$ $if(foo)$ $foo$ $endif$ $if(foo)$ part one $else$ part two $endif$ ${if(foo)}bar${endif} ${if(foo)} ${foo} ${endif} ${if(foo)} ${ foo.bar } ${else} no foo! ${endif} \f[R] .fi .PP The keyword \f[V]elseif\f[R] may be used to simplify complex nested conditionals: .IP .nf \f[C] $if(foo)$ XXX $elseif(bar)$ YYY $else$ ZZZ $endif$ \f[R] .fi .SS For loops .PP A for loop begins with \f[V]for(variable)\f[R] (enclosed in matched delimiters) and ends with \f[V]endfor\f[R] (enclosed in matched delimiters). .IP \[bu] 2 If \f[V]variable\f[R] is an array, the material inside the loop will be evaluated repeatedly, with \f[V]variable\f[R] being set to each value of the array in turn, and concatenated. .IP \[bu] 2 If \f[V]variable\f[R] is a map, the material inside will be set to the map. .IP \[bu] 2 If the value of the associated variable is not an array or a map, a single iteration will be performed on its value. .PP Examples: .IP .nf \f[C] $for(foo)$$foo$$sep$, $endfor$ $for(foo)$ - $foo.last$, $foo.first$ $endfor$ ${ for(foo.bar) } - ${ foo.bar.last }, ${ foo.bar.first } ${ endfor } $for(mymap)$ $it.name$: $it.office$ $endfor$ \f[R] .fi .PP You may optionally specify a separator between consecutive values using \f[V]sep\f[R] (enclosed in matched delimiters). The material between \f[V]sep\f[R] and the \f[V]endfor\f[R] is the separator. .IP .nf \f[C] ${ for(foo) }${ foo }${ sep }, ${ endfor } \f[R] .fi .PP Instead of using \f[V]variable\f[R] inside the loop, the special anaphoric keyword \f[V]it\f[R] may be used. .IP .nf \f[C] ${ for(foo.bar) } - ${ it.last }, ${ it.first } ${ endfor } \f[R] .fi .SS Partials .PP Partials (subtemplates stored in different files) may be included by using the name of the partial, followed by \f[V]()\f[R], for example: .IP .nf \f[C] ${ styles() } \f[R] .fi .PP Partials will be sought in the directory containing the main template. The file name will be assumed to have the same extension as the main template if it lacks an extension. When calling the partial, the full name including file extension can also be used: .IP .nf \f[C] ${ styles.html() } \f[R] .fi .PP (If a partial is not found in the directory of the template and the template path is given as a relative path, it will also be sought in the \f[V]templates\f[R] subdirectory of the user data directory.) .PP Partials may optionally be applied to variables using a colon: .IP .nf \f[C] ${ date:fancy() } ${ articles:bibentry() } \f[R] .fi .PP If \f[V]articles\f[R] is an array, this will iterate over its values, applying the partial \f[V]bibentry()\f[R] to each one. So the second example above is equivalent to .IP .nf \f[C] ${ for(articles) } ${ it:bibentry() } ${ endfor } \f[R] .fi .PP Note that the anaphoric keyword \f[V]it\f[R] must be used when iterating over partials. In the above examples, the \f[V]bibentry\f[R] partial should contain \f[V]it.title\f[R] (and so on) instead of \f[V]articles.title\f[R]. .PP Final newlines are omitted from included partials. .PP Partials may include other partials. .PP A separator between values of an array may be specified in square brackets, immediately after the variable name or partial: .IP .nf \f[C] ${months[, ]}$ ${articles:bibentry()[; ]$ \f[R] .fi .PP The separator in this case is literal and (unlike with \f[V]sep\f[R] in an explicit \f[V]for\f[R] loop) cannot contain interpolated variables or other template directives. .SS Nesting .PP To ensure that content is \[lq]nested,\[rq] that is, subsequent lines indented, use the \f[V]\[ha]\f[R] directive: .IP .nf \f[C] $item.number$ $\[ha]$$item.description$ ($item.price$) \f[R] .fi .PP In this example, if \f[V]item.description\f[R] has multiple lines, they will all be indented to line up with the first line: .IP .nf \f[C] 00123 A fine bottle of 18-year old Oban whiskey. ($148) \f[R] .fi .PP To nest multiple lines to the same level, align them with the \f[V]\[ha]\f[R] directive in the template. For example: .IP .nf \f[C] $item.number$ $\[ha]$$item.description$ ($item.price$) (Available til $item.sellby$.) \f[R] .fi .PP will produce .IP .nf \f[C] 00123 A fine bottle of 18-year old Oban whiskey. ($148) (Available til March 30, 2020.) \f[R] .fi .PP If a variable occurs by itself on a line, preceded by whitespace and not followed by further text or directives on the same line, and the variable\[cq]s value contains multiple lines, it will be nested automatically. .SS Breakable spaces .PP Normally, spaces in the template itself (as opposed to values of the interpolated variables) are not breakable, but they can be made breakable in part of the template by using the \f[V]\[ti]\f[R] keyword (ended with another \f[V]\[ti]\f[R]). .IP .nf \f[C] $\[ti]$This long line may break if the document is rendered with a short line length.$\[ti]$ \f[R] .fi .SS Pipes .PP A pipe transforms the value of a variable or partial. Pipes are specified using a slash (\f[V]/\f[R]) between the variable name (or partial) and the pipe name. Example: .IP .nf \f[C] $for(name)$ $name/uppercase$ $endfor$ $for(metadata/pairs)$ - $it.key$: $it.value$ $endfor$ $employee:name()/uppercase$ \f[R] .fi .PP Pipes may be chained: .IP .nf \f[C] $for(employees/pairs)$ $it.key/alpha/uppercase$. $it.name$ $endfor$ \f[R] .fi .PP Some pipes take parameters: .IP .nf \f[C] |----------------------|------------| $for(employee)$ $it.name.first/uppercase/left 20 \[dq]| \[dq]$$it.name.salary/right 10 \[dq] | \[dq] \[dq] |\[dq]$ $endfor$ |----------------------|------------| \f[R] .fi .PP Currently the following pipes are predefined: .IP \[bu] 2 \f[V]pairs\f[R]: Converts a map or array to an array of maps, each with \f[V]key\f[R] and \f[V]value\f[R] fields. If the original value was an array, the \f[V]key\f[R] will be the array index, starting with 1. .IP \[bu] 2 \f[V]uppercase\f[R]: Converts text to uppercase. .IP \[bu] 2 \f[V]lowercase\f[R]: Converts text to lowercase. .IP \[bu] 2 \f[V]length\f[R]: Returns the length of the value: number of characters for a textual value, number of elements for a map or array. .IP \[bu] 2 \f[V]reverse\f[R]: Reverses a textual value or array, and has no effect on other values. .IP \[bu] 2 \f[V]first\f[R]: Returns the first value of an array, if applied to a non-empty array; otherwise returns the original value. .IP \[bu] 2 \f[V]last\f[R]: Returns the last value of an array, if applied to a non-empty array; otherwise returns the original value. .IP \[bu] 2 \f[V]rest\f[R]: Returns all but the first value of an array, if applied to a non-empty array; otherwise returns the original value. .IP \[bu] 2 \f[V]allbutlast\f[R]: Returns all but the last value of an array, if applied to a non-empty array; otherwise returns the original value. .IP \[bu] 2 \f[V]chomp\f[R]: Removes trailing newlines (and breakable space). .IP \[bu] 2 \f[V]nowrap\f[R]: Disables line wrapping on breakable spaces. .IP \[bu] 2 \f[V]alpha\f[R]: Converts textual values that can be read as an integer into lowercase alphabetic characters \f[V]a..z\f[R] (mod 26). This can be used to get lettered enumeration from array indices. To get uppercase letters, chain with \f[V]uppercase\f[R]. .IP \[bu] 2 \f[V]roman\f[R]: Converts textual values that can be read as an integer into lowercase roman numerals. This can be used to get lettered enumeration from array indices. To get uppercase roman, chain with \f[V]uppercase\f[R]. .IP \[bu] 2 \f[V]left n \[dq]leftborder\[dq] \[dq]rightborder\[dq]\f[R]: Renders a textual value in a block of width \f[V]n\f[R], aligned to the left, with an optional left and right border. Has no effect on other values. This can be used to align material in tables. Widths are positive integers indicating the number of characters. Borders are strings inside double quotes; literal \f[V]\[dq]\f[R] and \f[V]\[rs]\f[R] characters must be backslash-escaped. .IP \[bu] 2 \f[V]right n \[dq]leftborder\[dq] \[dq]rightborder\[dq]\f[R]: Renders a textual value in a block of width \f[V]n\f[R], aligned to the right, and has no effect on other values. .IP \[bu] 2 \f[V]center n \[dq]leftborder\[dq] \[dq]rightborder\[dq]\f[R]: Renders a textual value in a block of width \f[V]n\f[R], aligned to the center, and has no effect on other values. .SS Variables .SS Metadata variables .TP \f[V]title\f[R], \f[V]author\f[R], \f[V]date\f[R] allow identification of basic aspects of the document. Included in PDF metadata through LaTeX and ConTeXt. These can be set through a pandoc title block, which allows for multiple authors, or through a YAML metadata block: .RS .IP .nf \f[C] --- author: - Aristotle - Peter Abelard \&... \f[R] .fi .PP Note that if you just want to set PDF or HTML metadata, without including a title block in the document itself, you can set the \f[V]title-meta\f[R], \f[V]author-meta\f[R], and \f[V]date-meta\f[R] variables. (By default these are set automatically, based on \f[V]title\f[R], \f[V]author\f[R], and \f[V]date\f[R].) The page title in HTML is set by \f[V]pagetitle\f[R], which is equal to \f[V]title\f[R] by default. .RE .TP \f[V]subtitle\f[R] document subtitle, included in HTML, EPUB, LaTeX, ConTeXt, and docx documents .TP \f[V]abstract\f[R] document summary, included in HTML, LaTeX, ConTeXt, AsciiDoc, and docx documents .TP \f[V]abstract-title\f[R] title of abstract, currently used only in HTML and EPUB. This will be set automatically to a localized value, depending on \f[V]lang\f[R], but can be manually overridden. .TP \f[V]keywords\f[R] list of keywords to be included in HTML, PDF, ODT, pptx, docx and AsciiDoc metadata; repeat as for \f[V]author\f[R], above .TP \f[V]subject\f[R] document subject, included in ODT, PDF, docx, EPUB, and pptx metadata .TP \f[V]description\f[R] document description, included in ODT, docx and pptx metadata. Some applications show this as \f[V]Comments\f[R] metadata. .TP \f[V]category\f[R] document category, included in docx and pptx metadata .PP Additionally, any root-level string metadata, not included in ODT, docx or pptx metadata is added as a \f[I]custom property\f[R]. The following YAML metadata block for instance: .IP .nf \f[C] --- title: \[aq]This is the title\[aq] subtitle: \[dq]This is the subtitle\[dq] author: - Author One - Author Two description: | This is a long description. It consists of two paragraphs \&... \f[R] .fi .PP will include \f[V]title\f[R], \f[V]author\f[R] and \f[V]description\f[R] as standard document properties and \f[V]subtitle\f[R] as a custom property when converting to docx, ODT or pptx. .SS Language variables .TP \f[V]lang\f[R] identifies the main language of the document using IETF language tags (following the BCP 47 standard), such as \f[V]en\f[R] or \f[V]en-GB\f[R]. The Language subtag lookup tool can look up or verify these tags. This affects most formats, and controls hyphenation in PDF output when using LaTeX (through \f[V]babel\f[R] and \f[V]polyglossia\f[R]) or ConTeXt. .RS .PP Use native pandoc Divs and Spans with the \f[V]lang\f[R] attribute to switch the language: .IP .nf \f[C] --- lang: en-GB \&... Text in the main document language (British English). ::: {lang=fr-CA} > Cette citation est écrite en français canadien. ::: More text in English. [\[aq]Zitat auf Deutsch.\[aq]]{lang=de} \f[R] .fi .RE .TP \f[V]dir\f[R] the base script direction, either \f[V]rtl\f[R] (right-to-left) or \f[V]ltr\f[R] (left-to-right). .RS .PP For bidirectional documents, native pandoc \f[V]span\f[R]s and \f[V]div\f[R]s with the \f[V]dir\f[R] attribute (value \f[V]rtl\f[R] or \f[V]ltr\f[R]) can be used to override the base direction in some output formats. This may not always be necessary if the final renderer (e.g.\ the browser, when generating HTML) supports the Unicode Bidirectional Algorithm. .PP When using LaTeX for bidirectional documents, only the \f[V]xelatex\f[R] engine is fully supported (use \f[V]--pdf-engine=xelatex\f[R]). .RE .SS Variables for HTML .TP \f[V]document-css\f[R] Enables inclusion of most of the CSS in the \f[V]styles.html\f[R] partial (have a look with \f[V]pandoc --print-default-data-file=templates/styles.html\f[R]). Unless you use \f[V]--css\f[R], this variable is set to \f[V]true\f[R] by default. You can disable it with e.g.\ \f[V]pandoc -M document-css=false\f[R]. .TP \f[V]mainfont\f[R] sets the CSS \f[V]font-family\f[R] property on the \f[V]html\f[R] element. .TP \f[V]fontsize\f[R] sets the base CSS \f[V]font-size\f[R], which you\[cq]d usually set to e.g.\ \f[V]20px\f[R], but it also accepts \f[V]pt\f[R] (12pt = 16px in most browsers). .TP \f[V]fontcolor\f[R] sets the CSS \f[V]color\f[R] property on the \f[V]html\f[R] element. .TP \f[V]linkcolor\f[R] sets the CSS \f[V]color\f[R] property on all links. .TP \f[V]monofont\f[R] sets the CSS \f[V]font-family\f[R] property on \f[V]code\f[R] elements. .TP \f[V]monobackgroundcolor\f[R] sets the CSS \f[V]background-color\f[R] property on \f[V]code\f[R] elements and adds extra padding. .TP \f[V]linestretch\f[R] sets the CSS \f[V]line-height\f[R] property on the \f[V]html\f[R] element, which is preferred to be unitless. .TP \f[V]maxwidth\f[R] sets the CSS \f[V]max-width\f[R] property (default is 32em). .TP \f[V]backgroundcolor\f[R] sets the CSS \f[V]background-color\f[R] property on the \f[V]html\f[R] element. .TP \f[V]margin-left\f[R], \f[V]margin-right\f[R], \f[V]margin-top\f[R], \f[V]margin-bottom\f[R] sets the corresponding CSS \f[V]padding\f[R] properties on the \f[V]body\f[R] element. .PP To override or extend some CSS for just one document, include for example: .IP .nf \f[C] --- header-includes: | --- \f[R] .fi .SS Variables for HTML math .TP \f[V]classoption\f[R] when using KaTeX, you can render display math equations flush left using YAML metadata or with \f[V]-M classoption=fleqn\f[R]. .SS Variables for HTML slides .PP These affect HTML output when producing slide shows with pandoc. .TP \f[V]institute\f[R] author affiliations: can be a list when there are multiple authors .TP \f[V]revealjs-url\f[R] base URL for reveal.js documents (defaults to \f[V]https://unpkg.com/reveal.js\[at]\[ha]4/\f[R]) .TP \f[V]s5-url\f[R] base URL for S5 documents (defaults to \f[V]s5/default\f[R]) .TP \f[V]slidy-url\f[R] base URL for Slidy documents (defaults to \f[V]https://www.w3.org/Talks/Tools/Slidy2\f[R]) .TP \f[V]slideous-url\f[R] base URL for Slideous documents (defaults to \f[V]slideous\f[R]) .TP \f[V]title-slide-attributes\f[R] additional attributes for the title slide of reveal.js slide shows. See background in reveal.js, beamer, and pptx for an example. .PP All reveal.js configuration options are available as variables. To turn off boolean flags that default to true in reveal.js, use \f[V]0\f[R]. .SS Variables for Beamer slides .PP These variables change the appearance of PDF slides using \f[V]beamer\f[R]. .TP \f[V]aspectratio\f[R] slide aspect ratio (\f[V]43\f[R] for 4:3 [default], \f[V]169\f[R] for 16:9, \f[V]1610\f[R] for 16:10, \f[V]149\f[R] for 14:9, \f[V]141\f[R] for 1.41:1, \f[V]54\f[R] for 5:4, \f[V]32\f[R] for 3:2) .TP \f[V]beameroption\f[R] add extra beamer option with \f[V]\[rs]setbeameroption{}\f[R] .TP \f[V]institute\f[R] author affiliations: can be a list when there are multiple authors .TP \f[V]logo\f[R] logo image for slides .TP \f[V]navigation\f[R] controls navigation symbols (default is \f[V]empty\f[R] for no navigation symbols; other valid values are \f[V]frame\f[R], \f[V]vertical\f[R], and \f[V]horizontal\f[R]) .TP \f[V]section-titles\f[R] enables \[lq]title pages\[rq] for new sections (default is true) .TP \f[V]theme\f[R], \f[V]colortheme\f[R], \f[V]fonttheme\f[R], \f[V]innertheme\f[R], \f[V]outertheme\f[R] beamer themes .TP \f[V]themeoptions\f[R] options for LaTeX beamer themes (a list). .TP \f[V]titlegraphic\f[R] image for title slide .SS Variables for PowerPoint .PP These variables control the visual aspects of a slide show that are not easily controlled via templates. .TP \f[V]monofont\f[R] font to use for code. .SS Variables for LaTeX .PP Pandoc uses these variables when creating a PDF with a LaTeX engine. .SS Layout .TP \f[V]block-headings\f[R] make \f[V]\[rs]paragraph\f[R] and \f[V]\[rs]subparagraph\f[R] (fourth- and fifth-level headings, or fifth- and sixth-level with book classes) free-standing rather than run-in; requires further formatting to distinguish from \f[V]\[rs]subsubsection\f[R] (third- or fourth-level headings). Instead of using this option, KOMA-Script can adjust headings more extensively: .RS .IP .nf \f[C] --- documentclass: scrartcl header-includes: | \[rs]RedeclareSectionCommand[ beforeskip=-10pt plus -2pt minus -1pt, afterskip=1sp plus -1sp minus 1sp, font=\[rs]normalfont\[rs]itshape]{paragraph} \[rs]RedeclareSectionCommand[ beforeskip=-10pt plus -2pt minus -1pt, afterskip=1sp plus -1sp minus 1sp, font=\[rs]normalfont\[rs]scshape, indent=0pt]{subparagraph} \&... \f[R] .fi .RE .TP \f[V]classoption\f[R] option for document class, e.g.\ \f[V]oneside\f[R]; repeat for multiple options: .RS .IP .nf \f[C] --- classoption: - twocolumn - landscape \&... \f[R] .fi .RE .TP \f[V]documentclass\f[R] document class: usually one of the standard classes, \f[V]article\f[R], \f[V]book\f[R], and \f[V]report\f[R]; the KOMA-Script equivalents, \f[V]scrartcl\f[R], \f[V]scrbook\f[R], and \f[V]scrreprt\f[R], which default to smaller margins; or \f[V]memoir\f[R] .TP \f[V]geometry\f[R] option for \f[V]geometry\f[R] package, e.g.\ \f[V]margin=1in\f[R]; repeat for multiple options: .RS .IP .nf \f[C] --- geometry: - top=30mm - left=20mm - heightrounded \&... \f[R] .fi .RE .TP \f[V]hyperrefoptions\f[R] option for \f[V]hyperref\f[R] package, e.g.\ \f[V]linktoc=all\f[R]; repeat for multiple options: .RS .IP .nf \f[C] --- hyperrefoptions: - linktoc=all - pdfwindowui - pdfpagemode=FullScreen \&... \f[R] .fi .RE .TP \f[V]indent\f[R] if true, pandoc will use document class settings for indentation (the default LaTeX template otherwise removes indentation and adds space between paragraphs) .TP \f[V]linestretch\f[R] adjusts line spacing using the \f[V]setspace\f[R] package, e.g.\ \f[V]1.25\f[R], \f[V]1.5\f[R] .TP \f[V]margin-left\f[R], \f[V]margin-right\f[R], \f[V]margin-top\f[R], \f[V]margin-bottom\f[R] sets margins if \f[V]geometry\f[R] is not used (otherwise \f[V]geometry\f[R] overrides these) .TP \f[V]pagestyle\f[R] control \f[V]\[rs]pagestyle{}\f[R]: the default article class supports \f[V]plain\f[R] (default), \f[V]empty\f[R] (no running heads or page numbers), and \f[V]headings\f[R] (section titles in running heads) .TP \f[V]papersize\f[R] paper size, e.g.\ \f[V]letter\f[R], \f[V]a4\f[R] .TP \f[V]secnumdepth\f[R] numbering depth for sections (with \f[V]--number-sections\f[R] option or \f[V]numbersections\f[R] variable) .TP \f[V]beamerarticle\f[R] produce an article from Beamer slides .SS Fonts .TP \f[V]fontenc\f[R] allows font encoding to be specified through \f[V]fontenc\f[R] package (with \f[V]pdflatex\f[R]); default is \f[V]T1\f[R] (see LaTeX font encodings guide) .TP \f[V]fontfamily\f[R] font package for use with \f[V]pdflatex\f[R]: TeX Live includes many options, documented in the LaTeX Font Catalogue. The default is Latin Modern. .TP \f[V]fontfamilyoptions\f[R] options for package used as \f[V]fontfamily\f[R]; repeat for multiple options. For example, to use the Libertine font with proportional lowercase (old-style) figures through the \f[V]libertinus\f[R] package: .RS .IP .nf \f[C] --- fontfamily: libertinus fontfamilyoptions: - osf - p \&... \f[R] .fi .RE .TP \f[V]fontsize\f[R] font size for body text. The standard classes allow 10pt, 11pt, and 12pt. To use another size, set \f[V]documentclass\f[R] to one of the KOMA-Script classes, such as \f[V]scrartcl\f[R] or \f[V]scrbook\f[R]. .TP \f[V]mainfont\f[R], \f[V]sansfont\f[R], \f[V]monofont\f[R], \f[V]mathfont\f[R], \f[V]CJKmainfont\f[R], \f[V]CJKsansfont\f[R], \f[V]CJKmonofont\f[R] font families for use with \f[V]xelatex\f[R] or \f[V]lualatex\f[R]: take the name of any system font, using the \f[V]fontspec\f[R] package. \f[V]CJKmainfont\f[R] uses the \f[V]xecjk\f[R] package. .TP \f[V]mainfontoptions\f[R], \f[V]sansfontoptions\f[R], \f[V]monofontoptions\f[R], \f[V]mathfontoptions\f[R], \f[V]CJKoptions\f[R] options to use with \f[V]mainfont\f[R], \f[V]sansfont\f[R], \f[V]monofont\f[R], \f[V]mathfont\f[R], \f[V]CJKmainfont\f[R] in \f[V]xelatex\f[R] and \f[V]lualatex\f[R]. Allow for any choices available through \f[V]fontspec\f[R]; repeat for multiple options. For example, to use the TeX Gyre version of Palatino with lowercase figures: .RS .IP .nf \f[C] --- mainfont: TeX Gyre Pagella mainfontoptions: - Numbers=Lowercase - Numbers=Proportional \&... \f[R] .fi .RE .TP \f[V]babelfonts\f[R] a map of Babel language names (e.g.\ \f[V]chinese\f[R]) to the font to be used with the language: .RS .PP * * * * * .PP babelfonts: chinese-hant: \[lq]Noto Serif CJK TC\[rq] russian: \[lq]Noto Serif\[rq] \&... .RE .TP \f[V]microtypeoptions\f[R] options to pass to the microtype package .SS Links .TP \f[V]colorlinks\f[R] add color to link text; automatically enabled if any of \f[V]linkcolor\f[R], \f[V]filecolor\f[R], \f[V]citecolor\f[R], \f[V]urlcolor\f[R], or \f[V]toccolor\f[R] are set .TP \f[V]boxlinks\f[R] add visible box around links (has no effect if \f[V]colorlinks\f[R] is set) .TP \f[V]linkcolor\f[R], \f[V]filecolor\f[R], \f[V]citecolor\f[R], \f[V]urlcolor\f[R], \f[V]toccolor\f[R] color for internal links, external links, citation links, linked URLs, and links in table of contents, respectively: uses options allowed by \f[V]xcolor\f[R], including the \f[V]dvipsnames\f[R], \f[V]svgnames\f[R], and \f[V]x11names\f[R] lists .TP \f[V]links-as-notes\f[R] causes links to be printed as footnotes .TP \f[V]urlstyle\f[R] style for URLs (e.g., \f[V]tt\f[R], \f[V]rm\f[R], \f[V]sf\f[R], and, the default, \f[V]same\f[R]) .SS Front matter .TP \f[V]lof\f[R], \f[V]lot\f[R] include list of figures, list of tables .TP \f[V]thanks\f[R] contents of acknowledgments footnote after document title .TP \f[V]toc\f[R] include table of contents (can also be set using \f[V]--toc/--table-of-contents\f[R]) .TP \f[V]toc-depth\f[R] level of section to include in table of contents .SS BibLaTeX Bibliographies .PP These variables function when using BibLaTeX for citation rendering. .TP \f[V]biblatexoptions\f[R] list of options for biblatex .TP \f[V]biblio-style\f[R] bibliography style, when used with \f[V]--natbib\f[R] and \f[V]--biblatex\f[R] .TP \f[V]biblio-title\f[R] bibliography title, when used with \f[V]--natbib\f[R] and \f[V]--biblatex\f[R] .TP \f[V]bibliography\f[R] bibliography to use for resolving references .TP \f[V]natbiboptions\f[R] list of options for natbib .SS Variables for ConTeXt .PP Pandoc uses these variables when creating a PDF with ConTeXt. .TP \f[V]fontsize\f[R] font size for body text (e.g.\ \f[V]10pt\f[R], \f[V]12pt\f[R]) .TP \f[V]headertext\f[R], \f[V]footertext\f[R] text to be placed in running header or footer (see ConTeXt Headers and Footers); repeat up to four times for different placement .TP \f[V]indenting\f[R] controls indentation of paragraphs, e.g.\ \f[V]yes,small,next\f[R] (see ConTeXt Indentation); repeat for multiple options .TP \f[V]interlinespace\f[R] adjusts line spacing, e.g.\ \f[V]4ex\f[R] (using \f[V]setupinterlinespace\f[R]); repeat for multiple options .TP \f[V]layout\f[R] options for page margins and text arrangement (see ConTeXt Layout); repeat for multiple options .TP \f[V]linkcolor\f[R], \f[V]contrastcolor\f[R] color for links outside and inside a page, e.g.\ \f[V]red\f[R], \f[V]blue\f[R] (see ConTeXt Color) .TP \f[V]linkstyle\f[R] typeface style for links, e.g.\ \f[V]normal\f[R], \f[V]bold\f[R], \f[V]slanted\f[R], \f[V]boldslanted\f[R], \f[V]type\f[R], \f[V]cap\f[R], \f[V]small\f[R] .TP \f[V]lof\f[R], \f[V]lot\f[R] include list of figures, list of tables .TP \f[V]mainfont\f[R], \f[V]sansfont\f[R], \f[V]monofont\f[R], \f[V]mathfont\f[R] font families: take the name of any system font (see ConTeXt Font Switching) .TP \f[V]margin-left\f[R], \f[V]margin-right\f[R], \f[V]margin-top\f[R], \f[V]margin-bottom\f[R] sets margins, if \f[V]layout\f[R] is not used (otherwise \f[V]layout\f[R] overrides these) .TP \f[V]pagenumbering\f[R] page number style and location (using \f[V]setuppagenumbering\f[R]); repeat for multiple options .TP \f[V]papersize\f[R] paper size, e.g.\ \f[V]letter\f[R], \f[V]A4\f[R], \f[V]landscape\f[R] (see ConTeXt Paper Setup); repeat for multiple options .TP \f[V]pdfa\f[R] adds to the preamble the setup necessary to generate PDF/A of the type specified, e.g.\ \f[V]1a:2005\f[R], \f[V]2a\f[R]. If no type is specified (i.e.\ the value is set to True, by e.g. \f[V]--metadata=pdfa\f[R] or \f[V]pdfa: true\f[R] in a YAML metadata block), \f[V]1b:2005\f[R] will be used as default, for reasons of backwards compatibility. Using \f[V]--variable=pdfa\f[R] without specified value is not supported. To successfully generate PDF/A the required ICC color profiles have to be available and the content and all included files (such as images) have to be standard-conforming. The ICC profiles and output intent may be specified using the variables \f[V]pdfaiccprofile\f[R] and \f[V]pdfaintent\f[R]. See also ConTeXt PDFA for more details. .TP \f[V]pdfaiccprofile\f[R] when used in conjunction with \f[V]pdfa\f[R], specifies the ICC profile to use in the PDF, e.g.\ \f[V]default.cmyk\f[R]. If left unspecified, \f[V]sRGB.icc\f[R] is used as default. May be repeated to include multiple profiles. Note that the profiles have to be available on the system. They can be obtained from ConTeXt ICC Profiles. .TP \f[V]pdfaintent\f[R] when used in conjunction with \f[V]pdfa\f[R], specifies the output intent for the colors, e.g.\ \f[V]ISO coated v2 300\[rs]letterpercent\[rs]space (ECI)\f[R] If left unspecified, \f[V]sRGB IEC61966-2.1\f[R] is used as default. .TP \f[V]toc\f[R] include table of contents (can also be set using \f[V]--toc/--table-of-contents\f[R]) .TP \f[V]urlstyle\f[R] typeface style for links without link text, e.g.\ \f[V]normal\f[R], \f[V]bold\f[R], \f[V]slanted\f[R], \f[V]boldslanted\f[R], \f[V]type\f[R], \f[V]cap\f[R], \f[V]small\f[R] .TP \f[V]whitespace\f[R] spacing between paragraphs, e.g.\ \f[V]none\f[R], \f[V]small\f[R] (using \f[V]setupwhitespace\f[R]) .TP \f[V]includesource\f[R] include all source documents as file attachments in the PDF file .SS Variables for \f[V]wkhtmltopdf\f[R] .PP Pandoc uses these variables when creating a PDF with \f[V]wkhtmltopdf\f[R]. The \f[V]--css\f[R] option also affects the output. .TP \f[V]footer-html\f[R], \f[V]header-html\f[R] add information to the header and footer .TP \f[V]margin-left\f[R], \f[V]margin-right\f[R], \f[V]margin-top\f[R], \f[V]margin-bottom\f[R] set the page margins .TP \f[V]papersize\f[R] sets the PDF paper size .SS Variables for man pages .TP \f[V]adjusting\f[R] adjusts text to left (\f[V]l\f[R]), right (\f[V]r\f[R]), center (\f[V]c\f[R]), or both (\f[V]b\f[R]) margins .TP \f[V]footer\f[R] footer in man pages .TP \f[V]header\f[R] header in man pages .TP \f[V]hyphenate\f[R] if \f[V]true\f[R] (the default), hyphenation will be used .TP \f[V]section\f[R] section number in man pages .SS Variables for Typst .TP \f[V]margin\f[R] A dictionary with the fields defined in the Typst documentation: \f[V]x\f[R], \f[V]y\f[R], \f[V]top\f[R], \f[V]bottom\f[R], \f[V]left\f[R], \f[V]right\f[R]. .TP \f[V]papersize\f[R] Paper size: \f[V]a4\f[R], \f[V]us-letter\f[R], etc. .TP \f[V]mainfont\f[R] Name of system font to use for the main font. .TP \f[V]fontsize\f[R] Font size (e.g., \f[V]12pt\f[R]). .TP \f[V]section-numbering\f[R] Schema to use for numbering sections, e.g.\ \f[V]1.A.1\f[R]. .TP \f[V]columns\f[R] Number of columns for body text. .SS Variables for ms .TP \f[V]fontfamily\f[R] \f[V]A\f[R] (Avant Garde), \f[V]B\f[R] (Bookman), \f[V]C\f[R] (Helvetica), \f[V]HN\f[R] (Helvetica Narrow), \f[V]P\f[R] (Palatino), or \f[V]T\f[R] (Times New Roman). This setting does not affect source code, which is always displayed using monospace Courier. These built-in fonts are limited in their coverage of characters. Additional fonts may be installed using the script \f[V]install-font.sh\f[R] provided by Peter Schaffter and documented in detail on his web site. .TP \f[V]indent\f[R] paragraph indent (e.g.\ \f[V]2m\f[R]) .TP \f[V]lineheight\f[R] line height (e.g.\ \f[V]12p\f[R]) .TP \f[V]pointsize\f[R] point size (e.g.\ \f[V]10p\f[R]) .SS Variables set automatically .PP Pandoc sets these variables automatically in response to options or document contents; users can also modify them. These vary depending on the output format, and include the following: .TP \f[V]body\f[R] body of document .TP \f[V]date-meta\f[R] the \f[V]date\f[R] variable converted to ISO 8601 YYYY-MM-DD, included in all HTML based formats (dzslides, epub, html, html4, html5, revealjs, s5, slideous, slidy). The recognized formats for \f[V]date\f[R] are: \f[V]mm/dd/yyyy\f[R], \f[V]mm/dd/yy\f[R], \f[V]yyyy-mm-dd\f[R] (ISO 8601), \f[V]dd MM yyyy\f[R] (e.g.\ either \f[V]02 Apr 2018\f[R] or \f[V]02 April 2018\f[R]), \f[V]MM dd, yyyy\f[R] (e.g.\ \f[V]Apr. 02, 2018\f[R] or \f[V]April 02, 2018),\f[R]yyyy[mm[dd]]\f[V](e.g.\f[R]20180402, \f[V]201804\f[R] or \f[V]2018\f[R]). .TP \f[V]header-includes\f[R] contents specified by \f[V]-H/--include-in-header\f[R] (may have multiple values) .TP \f[V]include-before\f[R] contents specified by \f[V]-B/--include-before-body\f[R] (may have multiple values) .TP \f[V]include-after\f[R] contents specified by \f[V]-A/--include-after-body\f[R] (may have multiple values) .TP \f[V]meta-json\f[R] JSON representation of all of the document\[cq]s metadata. Field values are transformed to the selected output format. .TP \f[V]numbersections\f[R] non-null value if \f[V]-N/--number-sections\f[R] was specified .TP \f[V]sourcefile\f[R], \f[V]outputfile\f[R] source and destination filenames, as given on the command line. \f[V]sourcefile\f[R] can also be a list if input comes from multiple files, or empty if input is from stdin. You can use the following snippet in your template to distinguish them: .RS .IP .nf \f[C] $if(sourcefile)$ $for(sourcefile)$ $sourcefile$ $endfor$ $else$ (stdin) $endif$ \f[R] .fi .PP Similarly, \f[V]outputfile\f[R] can be \f[V]-\f[R] if output goes to the terminal. .PP If you need absolute paths, use e.g.\ \f[V]$curdir$/$sourcefile$\f[R]. .RE .TP \f[V]curdir\f[R] working directory from which pandoc is run. .TP \f[V]pandoc-version\f[R] pandoc version. .TP \f[V]toc\f[R] non-null value if \f[V]--toc/--table-of-contents\f[R] was specified .TP \f[V]toc-title\f[R] title of table of contents (works only with EPUB, HTML, revealjs, opendocument, odt, docx, pptx, beamer, LaTeX) .SH EXTENSIONS .PP The behavior of some of the readers and writers can be adjusted by enabling or disabling various extensions. .PP An extension can be enabled by adding \f[V]+EXTENSION\f[R] to the format name and disabled by adding \f[V]-EXTENSION\f[R]. For example, \f[V]--from markdown_strict+footnotes\f[R] is strict Markdown with footnotes enabled, while \f[V]--from markdown-footnotes-pipe_tables\f[R] is pandoc\[cq]s Markdown without footnotes or pipe tables. .PP The markdown reader and writer make by far the most use of extensions. Extensions only used by them are therefore covered in the section Pandoc\[cq]s Markdown below (see Markdown variants for \f[V]commonmark\f[R] and \f[V]gfm\f[R]). In the following, extensions that also work for other formats are covered. .PP Note that markdown extensions added to the \f[V]ipynb\f[R] format affect Markdown cells in Jupyter notebooks (as do command-line options like \f[V]--markdown-headings\f[R]). .SS Typography .SS Extension: \f[V]smart\f[R] .PP Interpret straight quotes as curly quotes, \f[V]---\f[R] as em-dashes, \f[V]--\f[R] as en-dashes, and \f[V]...\f[R] as ellipses. Nonbreaking spaces are inserted after certain abbreviations, such as \[lq]Mr.\[rq] .PP This extension can be enabled/disabled for the following formats: .TP input formats \f[V]markdown\f[R], \f[V]commonmark\f[R], \f[V]latex\f[R], \f[V]mediawiki\f[R], \f[V]org\f[R], \f[V]rst\f[R], \f[V]twiki\f[R], \f[V]html\f[R] .TP output formats \f[V]markdown\f[R], \f[V]latex\f[R], \f[V]context\f[R], \f[V]rst\f[R] .TP enabled by default in \f[V]markdown\f[R], \f[V]latex\f[R], \f[V]context\f[R] (both input and output) .PP Note: If you are \f[I]writing\f[R] Markdown, then the \f[V]smart\f[R] extension has the reverse effect: what would have been curly quotes comes out straight. .PP In LaTeX, \f[V]smart\f[R] means to use the standard TeX ligatures for quotation marks (\f[V]\[ga]\[ga]\f[R] and \f[V]\[aq]\[aq]\f[R] for double quotes, \f[V]\[ga]\f[R] and \f[V]\[aq]\f[R] for single quotes) and dashes (\f[V]--\f[R] for en-dash and \f[V]---\f[R] for em-dash). If \f[V]smart\f[R] is disabled, then in reading LaTeX pandoc will parse these characters literally. In writing LaTeX, enabling \f[V]smart\f[R] tells pandoc to use the ligatures when possible; if \f[V]smart\f[R] is disabled pandoc will use unicode quotation mark and dash characters. .SS Headings and sections .SS Extension: \f[V]auto_identifiers\f[R] .PP A heading without an explicitly specified identifier will be automatically assigned a unique identifier based on the heading text. .PP This extension can be enabled/disabled for the following formats: .TP input formats \f[V]markdown\f[R], \f[V]latex\f[R], \f[V]rst\f[R], \f[V]mediawiki\f[R], \f[V]textile\f[R] .TP output formats \f[V]markdown\f[R], \f[V]muse\f[R] .TP enabled by default in \f[V]markdown\f[R], \f[V]muse\f[R] .PP The default algorithm used to derive the identifier from the heading text is: .IP \[bu] 2 Remove all formatting, links, etc. .IP \[bu] 2 Remove all footnotes. .IP \[bu] 2 Remove all non-alphanumeric characters, except underscores, hyphens, and periods. .IP \[bu] 2 Replace all spaces and newlines with hyphens. .IP \[bu] 2 Convert all alphabetic characters to lowercase. .IP \[bu] 2 Remove everything up to the first letter (identifiers may not begin with a number or punctuation mark). .IP \[bu] 2 If nothing is left after this, use the identifier \f[V]section\f[R]. .PP Thus, for example, .RS -14n .IP .nf \f[C] Heading Identifier ----------------------------- ----------------------------- Heading identifiers in HTML heading-identifiers-in-html Maître d\[aq]hôtel maître-dhôtel *Dogs*?--in *my* house? dogs--in-my-house [HTML], [S5], or [RTF]? html-s5-or-rtf 3. Applications applications 33 section \f[R] .fi .RE .PP These rules should, in most cases, allow one to determine the identifier from the heading text. The exception is when several headings have the same text; in this case, the first will get an identifier as described above; the second will get the same identifier with \f[V]-1\f[R] appended; the third with \f[V]-2\f[R]; and so on. .PP (However, a different algorithm is used if \f[V]gfm_auto_identifiers\f[R] is enabled; see below.) .PP These identifiers are used to provide link targets in the table of contents generated by the \f[V]--toc|--table-of-contents\f[R] option. They also make it easy to provide links from one section of a document to another. A link to this section, for example, might look like this: .IP .nf \f[C] See the section on [heading identifiers](#heading-identifiers-in-html-latex-and-context). \f[R] .fi .PP Note, however, that this method of providing links to sections works only in HTML, LaTeX, and ConTeXt formats. .PP If the \f[V]--section-divs\f[R] option is specified, then each section will be wrapped in a \f[V]section\f[R] (or a \f[V]div\f[R], if \f[V]html4\f[R] was specified), and the identifier will be attached to the enclosing \f[V]
\f[R] (or \f[V]
\f[R]) tag rather than the heading itself. This allows entire sections to be manipulated using JavaScript or treated differently in CSS. .SS Extension: \f[V]ascii_identifiers\f[R] .PP Causes the identifiers produced by \f[V]auto_identifiers\f[R] to be pure ASCII. Accents are stripped off of accented Latin letters, and non-Latin letters are omitted. .SS Extension: \f[V]gfm_auto_identifiers\f[R] .PP Changes the algorithm used by \f[V]auto_identifiers\f[R] to conform to GitHub\[cq]s method. Spaces are converted to dashes (\f[V]-\f[R]), uppercase characters to lowercase characters, and punctuation characters other than \f[V]-\f[R] and \f[V]_\f[R] are removed. Emojis are replaced by their names. .SS Math Input .PP The extensions \f[V]tex_math_dollars\f[R], \f[V]tex_math_single_backslash\f[R], and \f[V]tex_math_double_backslash\f[R] are described in the section about Pandoc\[cq]s Markdown. .PP However, they can also be used with HTML input. This is handy for reading web pages formatted using MathJax, for example. .SS Raw HTML/TeX .PP The following extensions are described in more detail in their respective sections of Pandoc\[cq]s Markdown: .IP \[bu] 2 \f[V]raw_html\f[R] allows HTML elements which are not representable in pandoc\[cq]s AST to be parsed as raw HTML. By default, this is disabled for HTML input. .IP \[bu] 2 \f[V]raw_tex\f[R] allows raw LaTeX, TeX, and ConTeXt to be included in a document. This extension can be enabled/disabled for the following formats (in addition to \f[V]markdown\f[R]): .RS 2 .TP input formats \f[V]latex\f[R], \f[V]textile\f[R], \f[V]html\f[R] (environments, \f[V]\[rs]ref\f[R], and \f[V]\[rs]eqref\f[R] only), \f[V]ipynb\f[R] .TP output formats \f[V]textile\f[R], \f[V]commonmark\f[R] .PP Note: as applied to \f[V]ipynb\f[R], \f[V]raw_html\f[R] and \f[V]raw_tex\f[R] affect not only raw TeX in markdown cells, but data with mime type \f[V]text/html\f[R] in output cells. Since the \f[V]ipynb\f[R] reader attempts to preserve the richest possible outputs when several options are given, you will get best results if you disable \f[V]raw_html\f[R] and \f[V]raw_tex\f[R] when converting to formats like \f[V]docx\f[R] which don\[cq]t allow raw \f[V]html\f[R] or \f[V]tex\f[R]. .RE .IP \[bu] 2 \f[V]native_divs\f[R] causes HTML \f[V]div\f[R] elements to be parsed as native pandoc Div blocks. If you want them to be parsed as raw HTML, use \f[V]-f html-native_divs+raw_html\f[R]. .IP \[bu] 2 \f[V]native_spans\f[R] causes HTML \f[V]span\f[R] elements to be parsed as native pandoc Span inlines. If you want them to be parsed as raw HTML, use \f[V]-f html-native_spans+raw_html\f[R]. If you want to drop all \f[V]div\f[R]s and \f[V]span\f[R]s when converting HTML to Markdown, you can use \f[V]pandoc -f html-native_divs-native_spans -t markdown\f[R]. .SS Literate Haskell support .SS Extension: \f[V]literate_haskell\f[R] .PP Treat the document as literate Haskell source. .PP This extension can be enabled/disabled for the following formats: .TP input formats \f[V]markdown\f[R], \f[V]rst\f[R], \f[V]latex\f[R] .TP output formats \f[V]markdown\f[R], \f[V]rst\f[R], \f[V]latex\f[R], \f[V]html\f[R] .PP If you append \f[V]+lhs\f[R] (or \f[V]+literate_haskell\f[R]) to one of the formats above, pandoc will treat the document as literate Haskell source. This means that .IP \[bu] 2 In Markdown input, \[lq]bird track\[rq] sections will be parsed as Haskell code rather than block quotations. Text between \f[V]\[rs]begin{code}\f[R] and \f[V]\[rs]end{code}\f[R] will also be treated as Haskell code. For ATX-style headings the character `=' will be used instead of `#'. .IP \[bu] 2 In Markdown output, code blocks with classes \f[V]haskell\f[R] and \f[V]literate\f[R] will be rendered using bird tracks, and block quotations will be indented one space, so they will not be treated as Haskell code. In addition, headings will be rendered setext-style (with underlines) rather than ATX-style (with `#' characters). (This is because ghc treats `#' characters in column 1 as introducing line numbers.) .IP \[bu] 2 In restructured text input, \[lq]bird track\[rq] sections will be parsed as Haskell code. .IP \[bu] 2 In restructured text output, code blocks with class \f[V]haskell\f[R] will be rendered using bird tracks. .IP \[bu] 2 In LaTeX input, text in \f[V]code\f[R] environments will be parsed as Haskell code. .IP \[bu] 2 In LaTeX output, code blocks with class \f[V]haskell\f[R] will be rendered inside \f[V]code\f[R] environments. .IP \[bu] 2 In HTML output, code blocks with class \f[V]haskell\f[R] will be rendered with class \f[V]literatehaskell\f[R] and bird tracks. .PP Examples: .IP .nf \f[C] pandoc -f markdown+lhs -t html \f[R] .fi .PP reads literate Haskell source formatted with Markdown conventions and writes ordinary HTML (without bird tracks). .IP .nf \f[C] pandoc -f markdown+lhs -t html+lhs \f[R] .fi .PP writes HTML with the Haskell code in bird tracks, so it can be copied and pasted as literate Haskell source. .PP Note that GHC expects the bird tracks in the first column, so indented literate code blocks (e.g.\ inside an itemized environment) will not be picked up by the Haskell compiler. .SS Other extensions .SS Extension: \f[V]empty_paragraphs\f[R] .PP Allows empty paragraphs. By default empty paragraphs are omitted. .PP This extension can be enabled/disabled for the following formats: .TP input formats \f[V]docx\f[R], \f[V]html\f[R] .TP output formats \f[V]docx\f[R], \f[V]odt\f[R], \f[V]opendocument\f[R], \f[V]html\f[R] .SS Extension: \f[V]native_numbering\f[R] .PP Enables native numbering of figures and tables. Enumeration starts at 1. .PP This extension can be enabled/disabled for the following formats: .TP output formats \f[V]odt\f[R], \f[V]opendocument\f[R], \f[V]docx\f[R] .SS Extension: \f[V]xrefs_name\f[R] .PP Links to headings, figures and tables inside the document are substituted with cross-references that will use the name or caption of the referenced item. The original link text is replaced once the generated document is refreshed. This extension can be combined with \f[V]xrefs_number\f[R] in which case numbers will appear before the name. .PP Text in cross-references is only made consistent with the referenced item once the document has been refreshed. .PP This extension can be enabled/disabled for the following formats: .TP output formats \f[V]odt\f[R], \f[V]opendocument\f[R] .SS Extension: \f[V]xrefs_number\f[R] .PP Links to headings, figures and tables inside the document are substituted with cross-references that will use the number of the referenced item. The original link text is discarded. This extension can be combined with \f[V]xrefs_name\f[R] in which case the name or caption numbers will appear after the number. .PP For the \f[V]xrefs_number\f[R] to be useful heading numbers must be enabled in the generated document, also table and figure captions must be enabled using for example the \f[V]native_numbering\f[R] extension. .PP Numbers in cross-references are only visible in the final document once it has been refreshed. .PP This extension can be enabled/disabled for the following formats: .TP output formats \f[V]odt\f[R], \f[V]opendocument\f[R] .SS Extension: \f[V]styles\f[R] .PP When converting from docx, read all docx styles as divs (for paragraph styles) and spans (for character styles) regardless of whether pandoc understands the meaning of these styles. This can be used with docx custom styles. Disabled by default. .TP input formats \f[V]docx\f[R] .SS Extension: \f[V]amuse\f[R] .PP In the \f[V]muse\f[R] input format, this enables Text::Amuse extensions to Emacs Muse markup. .SS Extension: \f[V]raw_markdown\f[R] .PP In the \f[V]ipynb\f[R] input format, this causes Markdown cells to be included as raw Markdown blocks (allowing lossless round-tripping) rather than being parsed. Use this only when you are targeting \f[V]ipynb\f[R] or a markdown-based output format. .SS Extension: \f[V]citations\f[R] .PP When the \f[V]citations\f[R] extension is enabled in \f[V]org\f[R], org-cite and org-ref style citations will be parsed as native pandoc citations. .PP When \f[V]citations\f[R] is enabled in \f[V]docx\f[R], citations inserted by Zotero or Mendeley or EndNote plugins will be parsed as native pandoc citations. (Otherwise, the formatted citations generated by the bibliographic software will be parsed as regular text.) .SS Extension: \f[V]fancy_lists\f[R] .PP Some aspects of Pandoc\[cq]s Markdown fancy lists are also accepted in \f[V]org\f[R] input, mimicking the option \f[V]org-list-allow-alphabetical\f[R] in Emacs. As in Org Mode, enabling this extension allows lowercase and uppercase alphabetical markers for ordered lists to be parsed in addition to arabic ones. Note that for Org, this does not include roman numerals or the \f[V]#\f[R] placeholder that are enabled by the extension in Pandoc\[cq]s Markdown. .SS Extension: \f[V]element_citations\f[R] .PP In the \f[V]jats\f[R] output formats, this causes reference items to be replaced with \f[V]\f[R] elements. These elements are not influenced by CSL styles, but all information on the item is included in tags. .SS Extension: \f[V]ntb\f[R] .PP In the \f[V]context\f[R] output format this enables the use of Natural Tables (TABLE) instead of the default Extreme Tables (xtables). Natural tables allow more fine-grained global customization but come at a performance penalty compared to extreme tables. .SS Extension: \f[V]tagging\f[R] .PP Enabling this extension with \f[V]context\f[R] output will produce markup suitable for the production of tagged PDFs. This includes additional markers for paragraphs and alternative markup for emphasized text. The \f[V]emphasis-command\f[R] template variable is set if the extension is enabled. .SH PANDOC\[cq]S MARKDOWN .PP Pandoc understands an extended and slightly revised version of John Gruber\[cq]s Markdown syntax. This document explains the syntax, noting differences from original Markdown. Except where noted, these differences can be suppressed by using the \f[V]markdown_strict\f[R] format instead of \f[V]markdown\f[R]. Extensions can be enabled or disabled to specify the behavior more granularly. They are described in the following. See also Extensions above, for extensions that work also on other formats. .SS Philosophy .PP Markdown is designed to be easy to write, and, even more importantly, easy to read: .RS .PP A Markdown-formatted document should be publishable as-is, as plain text, without looking like it\[cq]s been marked up with tags or formatting instructions. \[en] John Gruber .RE .PP This principle has guided pandoc\[cq]s decisions in finding syntax for tables, footnotes, and other extensions. .PP There is, however, one respect in which pandoc\[cq]s aims are different from the original aims of Markdown. Whereas Markdown was originally designed with HTML generation in mind, pandoc is designed for multiple output formats. Thus, while pandoc allows the embedding of raw HTML, it discourages it, and provides other, non-HTMLish ways of representing important document elements like definition lists, tables, mathematics, and footnotes. .SS Paragraphs .PP A paragraph is one or more lines of text followed by one or more blank lines. Newlines are treated as spaces, so you can reflow your paragraphs as you like. If you need a hard line break, put two or more spaces at the end of a line. .SS Extension: \f[V]escaped_line_breaks\f[R] .PP A backslash followed by a newline is also a hard line break. Note: in multiline and grid table cells, this is the only way to create a hard line break, since trailing spaces in the cells are ignored. .SS Headings .PP There are two kinds of headings: Setext and ATX. .SS Setext-style headings .PP A setext-style heading is a line of text \[lq]underlined\[rq] with a row of \f[V]=\f[R] signs (for a level-one heading) or \f[V]-\f[R] signs (for a level-two heading): .IP .nf \f[C] A level-one heading =================== A level-two heading ------------------- \f[R] .fi .PP The heading text can contain inline formatting, such as emphasis (see Inline formatting, below). .SS ATX-style headings .PP An ATX-style heading consists of one to six \f[V]#\f[R] signs and a line of text, optionally followed by any number of \f[V]#\f[R] signs. The number of \f[V]#\f[R] signs at the beginning of the line is the heading level: .IP .nf \f[C] ## A level-two heading ### A level-three heading ### \f[R] .fi .PP As with setext-style headings, the heading text can contain formatting: .IP .nf \f[C] # A level-one heading with a [link](/url) and *emphasis* \f[R] .fi .SS Extension: \f[V]blank_before_header\f[R] .PP Original Markdown syntax does not require a blank line before a heading. Pandoc does require this (except, of course, at the beginning of the document). The reason for the requirement is that it is all too easy for a \f[V]#\f[R] to end up at the beginning of a line by accident (perhaps through line wrapping). Consider, for example: .IP .nf \f[C] I like several of their flavors of ice cream: #22, for example, and #5. \f[R] .fi .SS Extension: \f[V]space_in_atx_header\f[R] .PP Many Markdown implementations do not require a space between the opening \f[V]#\f[R]s of an ATX heading and the heading text, so that \f[V]#5 bolt\f[R] and \f[V]#hashtag\f[R] count as headings. With this extension, pandoc does require the space. .SS Heading identifiers .PP See also the \f[V]auto_identifiers\f[R] extension above. .SS Extension: \f[V]header_attributes\f[R] .PP Headings can be assigned attributes using this syntax at the end of the line containing the heading text: .IP .nf \f[C] {#identifier .class .class key=value key=value} \f[R] .fi .PP Thus, for example, the following headings will all be assigned the identifier \f[V]foo\f[R]: .IP .nf \f[C] # My heading {#foo} ## My heading ## {#foo} My other heading {#foo} --------------- \f[R] .fi .PP (This syntax is compatible with PHP Markdown Extra.) .PP Note that although this syntax allows assignment of classes and key/value attributes, writers generally don\[cq]t use all of this information. Identifiers, classes, and key/value attributes are used in HTML and HTML-based formats such as EPUB and slidy. Identifiers are used for labels and link anchors in the LaTeX, ConTeXt, Textile, Jira markup, and AsciiDoc writers. .PP Headings with the class \f[V]unnumbered\f[R] will not be numbered, even if \f[V]--number-sections\f[R] is specified. A single hyphen (\f[V]-\f[R]) in an attribute context is equivalent to \f[V].unnumbered\f[R], and preferable in non-English documents. So, .IP .nf \f[C] # My heading {-} \f[R] .fi .PP is just the same as .IP .nf \f[C] # My heading {.unnumbered} \f[R] .fi .PP If the \f[V]unlisted\f[R] class is present in addition to \f[V]unnumbered\f[R], the heading will not be included in a table of contents. (Currently this feature is only implemented for certain formats: those based on LaTeX and HTML, PowerPoint, and RTF.) .SS Extension: \f[V]implicit_header_references\f[R] .PP Pandoc behaves as if reference links have been defined for each heading. So, to link to a heading .IP .nf \f[C] # Heading identifiers in HTML \f[R] .fi .PP you can simply write .IP .nf \f[C] [Heading identifiers in HTML] \f[R] .fi .PP or .IP .nf \f[C] [Heading identifiers in HTML][] \f[R] .fi .PP or .IP .nf \f[C] [the section on heading identifiers][heading identifiers in HTML] \f[R] .fi .PP instead of giving the identifier explicitly: .IP .nf \f[C] [Heading identifiers in HTML](#heading-identifiers-in-html) \f[R] .fi .PP If there are multiple headings with identical text, the corresponding reference will link to the first one only, and you will need to use explicit links to link to the others, as described above. .PP Like regular reference links, these references are case-insensitive. .PP Explicit link reference definitions always take priority over implicit heading references. So, in the following example, the link will point to \f[V]bar\f[R], not to \f[V]#foo\f[R]: .IP .nf \f[C] # Foo [foo]: bar See [foo] \f[R] .fi .SS Block quotations .PP Markdown uses email conventions for quoting blocks of text. A block quotation is one or more paragraphs or other block elements (such as lists or headings), with each line preceded by a \f[V]>\f[R] character and an optional space. (The \f[V]>\f[R] need not start at the left margin, but it should not be indented more than three spaces.) .IP .nf \f[C] > This is a block quote. This > paragraph has two lines. > > 1. This is a list inside a block quote. > 2. Second item. \f[R] .fi .PP A \[lq]lazy\[rq] form, which requires the \f[V]>\f[R] character only on the first line of each block, is also allowed: .IP .nf \f[C] > This is a block quote. This paragraph has two lines. > 1. This is a list inside a block quote. 2. Second item. \f[R] .fi .PP Among the block elements that can be contained in a block quote are other block quotes. That is, block quotes can be nested: .IP .nf \f[C] > This is a block quote. > > > A block quote within a block quote. \f[R] .fi .PP If the \f[V]>\f[R] character is followed by an optional space, that space will be considered part of the block quote marker and not part of the indentation of the contents. Thus, to put an indented code block in a block quote, you need five spaces after the \f[V]>\f[R]: .IP .nf \f[C] > code \f[R] .fi .SS Extension: \f[V]blank_before_blockquote\f[R] .PP Original Markdown syntax does not require a blank line before a block quote. Pandoc does require this (except, of course, at the beginning of the document). The reason for the requirement is that it is all too easy for a \f[V]>\f[R] to end up at the beginning of a line by accident (perhaps through line wrapping). So, unless the \f[V]markdown_strict\f[R] format is used, the following does not produce a nested block quote in pandoc: .IP .nf \f[C] > This is a block quote. >> Not nested, since \[ga]blank_before_blockquote\[ga] is enabled by default \f[R] .fi .SS Verbatim (code) blocks .SS Indented code blocks .PP A block of text indented four spaces (or one tab) is treated as verbatim text: that is, special characters do not trigger special formatting, and all spaces and line breaks are preserved. For example, .IP .nf \f[C] if (a > 3) { moveShip(5 * gravity, DOWN); } \f[R] .fi .PP The initial (four space or one tab) indentation is not considered part of the verbatim text, and is removed in the output. .PP Note: blank lines in the verbatim text need not begin with four spaces. .SS Fenced code blocks .SS Extension: \f[V]fenced_code_blocks\f[R] .PP In addition to standard indented code blocks, pandoc supports \f[I]fenced\f[R] code blocks. These begin with a row of three or more tildes (\f[V]\[ti]\f[R]) and end with a row of tildes that must be at least as long as the starting row. Everything between these lines is treated as code. No indentation is necessary: .IP .nf \f[C] \[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti] if (a > 3) { moveShip(5 * gravity, DOWN); } \[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti] \f[R] .fi .PP Like regular code blocks, fenced code blocks must be separated from surrounding text by blank lines. .PP If the code itself contains a row of tildes or backticks, just use a longer row of tildes or backticks at the start and end: .IP .nf \f[C] \[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti] \[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti] code including tildes \[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti] \[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti] \f[R] .fi .SS Extension: \f[V]backtick_code_blocks\f[R] .PP Same as \f[V]fenced_code_blocks\f[R], but uses backticks (\f[V]\[ga]\f[R]) instead of tildes (\f[V]\[ti]\f[R]). .SS Extension: \f[V]fenced_code_attributes\f[R] .PP Optionally, you may attach attributes to fenced or backtick code block using this syntax: .IP .nf \f[C] \[ti]\[ti]\[ti]\[ti] {#mycode .haskell .numberLines startFrom=\[dq]100\[dq]} qsort [] = [] qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs) \[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti] \f[R] .fi .PP Here \f[V]mycode\f[R] is an identifier, \f[V]haskell\f[R] and \f[V]numberLines\f[R] are classes, and \f[V]startFrom\f[R] is an attribute with value \f[V]100\f[R]. Some output formats can use this information to do syntax highlighting. Currently, the only output formats that use this information are HTML, LaTeX, Docx, Ms, and PowerPoint. If highlighting is supported for your output format and language, then the code block above will appear highlighted, with numbered lines. (To see which languages are supported, type \f[V]pandoc --list-highlight-languages\f[R].) Otherwise, the code block above will appear as follows: .IP .nf \f[C]
  
  ...
  
\f[R] .fi .PP The \f[V]numberLines\f[R] (or \f[V]number-lines\f[R]) class will cause the lines of the code block to be numbered, starting with \f[V]1\f[R] or the value of the \f[V]startFrom\f[R] attribute. The \f[V]lineAnchors\f[R] (or \f[V]line-anchors\f[R]) class will cause the lines to be clickable anchors in HTML output. .PP A shortcut form can also be used for specifying the language of the code block: .IP .nf \f[C] \[ga]\[ga]\[ga]haskell qsort [] = [] \[ga]\[ga]\[ga] \f[R] .fi .PP This is equivalent to: .IP .nf \f[C] \[ga]\[ga]\[ga] {.haskell} qsort [] = [] \[ga]\[ga]\[ga] \f[R] .fi .PP This shortcut form may be combined with attributes: .IP .nf \f[C] \[ga]\[ga]\[ga]haskell {.numberLines} qsort [] = [] \[ga]\[ga]\[ga] \f[R] .fi .PP Which is equivalent to: .IP .nf \f[C] \[ga]\[ga]\[ga] {.haskell .numberLines} qsort [] = [] \[ga]\[ga]\[ga] \f[R] .fi .PP If the \f[V]fenced_code_attributes\f[R] extension is disabled, but input contains class attribute(s) for the code block, the first class attribute will be printed after the opening fence as a bare word. .PP To prevent all highlighting, use the \f[V]--no-highlight\f[R] flag. To set the highlighting style, use \f[V]--highlight-style\f[R]. For more information on highlighting, see Syntax highlighting, below. .SS Line blocks .SS Extension: \f[V]line_blocks\f[R] .PP A line block is a sequence of lines beginning with a vertical bar (\f[V]|\f[R]) followed by a space. The division into lines will be preserved in the output, as will any leading spaces; otherwise, the lines will be formatted as Markdown. This is useful for verse and addresses: .IP .nf \f[C] | The limerick packs laughs anatomical | In space that is quite economical. | But the good ones I\[aq]ve seen | So seldom are clean | And the clean ones so seldom are comical | 200 Main St. | Berkeley, CA 94718 \f[R] .fi .PP The lines can be hard-wrapped if needed, but the continuation line must begin with a space. .IP .nf \f[C] | The Right Honorable Most Venerable and Righteous Samuel L. Constable, Jr. | 200 Main St. | Berkeley, CA 94718 \f[R] .fi .PP Inline formatting (such as emphasis) is allowed in the content, but not block-level formatting (such as block quotes or lists). .PP This syntax is borrowed from reStructuredText. .SS Lists .SS Bullet lists .PP A bullet list is a list of bulleted list items. A bulleted list item begins with a bullet (\f[V]*\f[R], \f[V]+\f[R], or \f[V]-\f[R]). Here is a simple example: .IP .nf \f[C] * one * two * three \f[R] .fi .PP This will produce a \[lq]compact\[rq] list. If you want a \[lq]loose\[rq] list, in which each item is formatted as a paragraph, put spaces between the items: .IP .nf \f[C] * one * two * three \f[R] .fi .PP The bullets need not be flush with the left margin; they may be indented one, two, or three spaces. The bullet must be followed by whitespace. .PP List items look best if subsequent lines are flush with the first line (after the bullet): .IP .nf \f[C] * here is my first list item. * and my second. \f[R] .fi .PP But Markdown also allows a \[lq]lazy\[rq] format: .IP .nf \f[C] * here is my first list item. * and my second. \f[R] .fi .SS Block content in list items .PP A list item may contain multiple paragraphs and other block-level content. However, subsequent paragraphs must be preceded by a blank line and indented to line up with the first non-space content after the list marker. .IP .nf \f[C] * First paragraph. Continued. * Second paragraph. With a code block, which must be indented eight spaces: { code } \f[R] .fi .PP Exception: if the list marker is followed by an indented code block, which must begin 5 spaces after the list marker, then subsequent paragraphs must begin two columns after the last character of the list marker: .IP .nf \f[C] * code continuation paragraph \f[R] .fi .PP List items may include other lists. In this case the preceding blank line is optional. The nested list must be indented to line up with the first non-space character after the list marker of the containing list item. .IP .nf \f[C] * fruits + apples - macintosh - red delicious + pears + peaches * vegetables + broccoli + chard \f[R] .fi .PP As noted above, Markdown allows you to write list items \[lq]lazily,\[rq] instead of indenting continuation lines. However, if there are multiple paragraphs or other blocks in a list item, the first line of each must be indented. .IP .nf \f[C] + A lazy, lazy, list item. + Another one; this looks bad but is legal. Second paragraph of second list item. \f[R] .fi .SS Ordered lists .PP Ordered lists work just like bulleted lists, except that the items begin with enumerators rather than bullets. .PP In original Markdown, enumerators are decimal numbers followed by a period and a space. The numbers themselves are ignored, so there is no difference between this list: .IP .nf \f[C] 1. one 2. two 3. three \f[R] .fi .PP and this one: .IP .nf \f[C] 5. one 7. two 1. three \f[R] .fi .SS Extension: \f[V]fancy_lists\f[R] .PP Unlike original Markdown, pandoc allows ordered list items to be marked with uppercase and lowercase letters and roman numerals, in addition to Arabic numerals. List markers may be enclosed in parentheses or followed by a single right-parenthesis or period. They must be separated from the text that follows by at least one space, and, if the list marker is a capital letter with a period, by at least two spaces. .PP The \f[V]fancy_lists\f[R] extension also allows `\f[V]#\f[R]' to be used as an ordered list marker in place of a numeral: .IP .nf \f[C] #. one #. two \f[R] .fi .PP Note: the `\f[V]#\f[R]' ordered list marker doesn\[cq]t work with \f[V]commonmark\f[R]. .SS Extension: \f[V]startnum\f[R] .PP Pandoc also pays attention to the type of list marker used, and to the starting number, and both of these are preserved where possible in the output format. Thus, the following yields a list with numbers followed by a single parenthesis, starting with 9, and a sublist with lowercase roman numerals: .IP .nf \f[C] 9) Ninth 10) Tenth 11) Eleventh i. subone ii. subtwo iii. subthree \f[R] .fi .PP Pandoc will start a new list each time a different type of list marker is used. So, the following will create three lists: .IP .nf \f[C] (2) Two (5) Three 1. Four * Five \f[R] .fi .PP If default list markers are desired, use \f[V]#.\f[R]: .IP .nf \f[C] #. one #. two #. three \f[R] .fi .SS Extension: \f[V]task_lists\f[R] .PP Pandoc supports task lists, using the syntax of GitHub-Flavored Markdown. .IP .nf \f[C] - [ ] an unchecked task list item - [x] checked item \f[R] .fi .SS Definition lists .SS Extension: \f[V]definition_lists\f[R] .PP Pandoc supports definition lists, using the syntax of PHP Markdown Extra with some extensions. .IP .nf \f[C] Term 1 : Definition 1 Term 2 with *inline markup* : Definition 2 { some code, part of Definition 2 } Third paragraph of definition 2. \f[R] .fi .PP Each term must fit on one line, which may optionally be followed by a blank line, and must be followed by one or more definitions. A definition begins with a colon or tilde, which may be indented one or two spaces. .PP A term may have multiple definitions, and each definition may consist of one or more block elements (paragraph, code block, list, etc.), each indented four spaces or one tab stop. The body of the definition (not including the first line) should be indented four spaces. However, as with other Markdown lists, you can \[lq]lazily\[rq] omit indentation except at the beginning of a paragraph or other block element: .IP .nf \f[C] Term 1 : Definition with lazy continuation. Second paragraph of the definition. \f[R] .fi .PP If you leave space before the definition (as in the example above), the text of the definition will be treated as a paragraph. In some output formats, this will mean greater spacing between term/definition pairs. For a more compact definition list, omit the space before the definition: .IP .nf \f[C] Term 1 \[ti] Definition 1 Term 2 \[ti] Definition 2a \[ti] Definition 2b \f[R] .fi .PP Note that space between items in a definition list is required. (A variant that loosens this requirement, but disallows \[lq]lazy\[rq] hard wrapping, can be activated with the \f[V]compact_definition_lists\f[R] extension.) .SS Numbered example lists .SS Extension: \f[V]example_lists\f[R] .PP The special list marker \f[V]\[at]\f[R] can be used for sequentially numbered examples. The first list item with a \f[V]\[at]\f[R] marker will be numbered `1', the next `2', and so on, throughout the document. The numbered examples need not occur in a single list; each new list using \f[V]\[at]\f[R] will take up where the last stopped. So, for example: .IP .nf \f[C] (\[at]) My first example will be numbered (1). (\[at]) My second example will be numbered (2). Explanation of examples. (\[at]) My third example will be numbered (3). \f[R] .fi .PP Numbered examples can be labeled and referred to elsewhere in the document: .IP .nf \f[C] (\[at]good) This is a good example. As (\[at]good) illustrates, ... \f[R] .fi .PP The label can be any string of alphanumeric characters, underscores, or hyphens. .PP Note: continuation paragraphs in example lists must always be indented four spaces, regardless of the length of the list marker. That is, example lists always behave as if the \f[V]four_space_rule\f[R] extension is set. This is because example labels tend to be long, and indenting content to the first non-space character after the label would be awkward. .SS Ending a list .PP What if you want to put an indented code block after a list? .IP .nf \f[C] - item one - item two { my code block } \f[R] .fi .PP Trouble! Here pandoc (like other Markdown implementations) will treat \f[V]{ my code block }\f[R] as the second paragraph of item two, and not as a code block. .PP To \[lq]cut off\[rq] the list after item two, you can insert some non-indented content, like an HTML comment, which won\[cq]t produce visible output in any format: .IP .nf \f[C] - item one - item two { my code block } \f[R] .fi .PP You can use the same trick if you want two consecutive lists instead of one big list: .IP .nf \f[C] 1. one 2. two 3. three 1. uno 2. dos 3. tres \f[R] .fi .SS Horizontal rules .PP A line containing a row of three or more \f[V]*\f[R], \f[V]-\f[R], or \f[V]_\f[R] characters (optionally separated by spaces) produces a horizontal rule: .IP .nf \f[C] * * * * --------------- \f[R] .fi .PP We strongly recommend that horizontal rules be separated from surrounding text by blank lines. If a horizontal rule is not followed by a blank line, pandoc may try to interpret the lines that follow as a YAML metadata block or a table. .SS Tables .PP Four kinds of tables may be used. The first three kinds presuppose the use of a fixed-width font, such as Courier. The fourth kind can be used with proportionally spaced fonts, as it does not require lining up columns. .SS Extension: \f[V]table_captions\f[R] .PP A caption may optionally be provided with all 4 kinds of tables (as illustrated in the examples below). A caption is a paragraph beginning with the string \f[V]Table:\f[R] (or \f[V]table:\f[R] or just \f[V]:\f[R]), which will be stripped off. It may appear either before or after the table. .SS Extension: \f[V]simple_tables\f[R] .PP Simple tables look like this: .IP .nf \f[C] Right Left Center Default ------- ------ ---------- ------- 12 12 12 12 123 123 123 123 1 1 1 1 Table: Demonstration of simple table syntax. \f[R] .fi .PP The header and table rows must each fit on one line. Column alignments are determined by the position of the header text relative to the dashed line below it: .IP \[bu] 2 If the dashed line is flush with the header text on the right side but extends beyond it on the left, the column is right-aligned. .IP \[bu] 2 If the dashed line is flush with the header text on the left side but extends beyond it on the right, the column is left-aligned. .IP \[bu] 2 If the dashed line extends beyond the header text on both sides, the column is centered. .IP \[bu] 2 If the dashed line is flush with the header text on both sides, the default alignment is used (in most cases, this will be left). .PP The table must end with a blank line, or a line of dashes followed by a blank line. .PP The column header row may be omitted, provided a dashed line is used to end the table. For example: .IP .nf \f[C] ------- ------ ---------- ------- 12 12 12 12 123 123 123 123 1 1 1 1 ------- ------ ---------- ------- \f[R] .fi .PP When the header row is omitted, column alignments are determined on the basis of the first line of the table body. So, in the tables above, the columns would be right, left, center, and right aligned, respectively. .SS Extension: \f[V]multiline_tables\f[R] .PP Multiline tables allow header and table rows to span multiple lines of text (but cells that span multiple columns or rows of the table are not supported). Here is an example: .IP .nf \f[C] ------------------------------------------------------------- Centered Default Right Left Header Aligned Aligned Aligned ----------- ------- --------------- ------------------------- First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here\[aq]s another one. Note the blank line between rows. ------------------------------------------------------------- Table: Here\[aq]s the caption. It, too, may span multiple lines. \f[R] .fi .PP These work like simple tables, but with the following differences: .IP \[bu] 2 They must begin with a row of dashes, before the header text (unless the header row is omitted). .IP \[bu] 2 They must end with a row of dashes, then a blank line. .IP \[bu] 2 The rows must be separated by blank lines. .PP In multiline tables, the table parser pays attention to the widths of the columns, and the writers try to reproduce these relative widths in the output. So, if you find that one of the columns is too narrow in the output, try widening it in the Markdown source. .PP The header may be omitted in multiline tables as well as simple tables: .IP .nf \f[C] ----------- ------- --------------- ------------------------- First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here\[aq]s another one. Note the blank line between rows. ----------- ------- --------------- ------------------------- : Here\[aq]s a multiline table without a header. \f[R] .fi .PP It is possible for a multiline table to have just one row, but the row should be followed by a blank line (and then the row of dashes that ends the table), or the table may be interpreted as a simple table. .SS Extension: \f[V]grid_tables\f[R] .PP Grid tables look like this: .IP .nf \f[C] : Sample grid table. +---------------+---------------+--------------------+ | Fruit | Price | Advantages | +===============+===============+====================+ | Bananas | $1.34 | - built-in wrapper | | | | - bright color | +---------------+---------------+--------------------+ | Oranges | $2.10 | - cures scurvy | | | | - tasty | +---------------+---------------+--------------------+ \f[R] .fi .PP The row of \f[V]=\f[R]s separates the header from the table body, and can be omitted for a headerless table. The cells of grid tables may contain arbitrary block elements (multiple paragraphs, code blocks, lists, etc.). .PP Cells can span multiple columns or rows: .IP .nf \f[C] +---------------------+----------+ | Property | Earth | +=============+=======+==========+ | | min | -89.2 °C | | Temperature +-------+----------+ | 1961-1990 | mean | 14 °C | | +-------+----------+ | | max | 56.7 °C | +-------------+-------+----------+ \f[R] .fi .PP A table header may contain more than one row: .IP .nf \f[C] +---------------------+-----------------------+ | Location | Temperature 1961-1990 | | | in degree Celsius | | +-------+-------+-------+ | | min | mean | max | +=====================+=======+=======+=======+ | Antarctica | -89.2 | N/A | 19.8 | +---------------------+-------+-------+-------+ | Earth | -89.2 | 14 | 56.7 | +---------------------+-------+-------+-------+ \f[R] .fi .PP Alignments can be specified as with pipe tables, by putting colons at the boundaries of the separator line after the header: .IP .nf \f[C] +---------------+---------------+--------------------+ | Right | Left | Centered | +==============:+:==============+:==================:+ | Bananas | $1.34 | built-in wrapper | +---------------+---------------+--------------------+ \f[R] .fi .PP For headerless tables, the colons go on the top line instead: .IP .nf \f[C] +--------------:+:--------------+:------------------:+ | Right | Left | Centered | +---------------+---------------+--------------------+ \f[R] .fi .PP A table foot can be defined by enclosing it with separator lines that use \f[V]=\f[R] instead of \f[V]-\f[R]: .IP .nf \f[C] +---------------+---------------+ | Fruit | Price | +===============+===============+ | Bananas | $1.34 | +---------------+---------------+ | Oranges | $2.10 | +===============+===============+ | Sum | $3.44 | +===============+===============+ \f[R] .fi .PP The foot must always be placed at the very bottom of the table. .PP Grid tables can be created easily using Emacs\[cq] table-mode (\f[V]M-x table-insert\f[R]). .SS Extension: \f[V]pipe_tables\f[R] .PP Pipe tables look like this: .IP .nf \f[C] | Right | Left | Default | Center | |------:|:-----|---------|:------:| | 12 | 12 | 12 | 12 | | 123 | 123 | 123 | 123 | | 1 | 1 | 1 | 1 | : Demonstration of pipe table syntax. \f[R] .fi .PP The syntax is identical to PHP Markdown Extra tables. The beginning and ending pipe characters are optional, but pipes are required between all columns. The colons indicate column alignment as shown. The header cannot be omitted. To simulate a headerless table, include a header with blank cells. .PP Since the pipes indicate column boundaries, columns need not be vertically aligned, as they are in the above example. So, this is a perfectly legal (though ugly) pipe table: .IP .nf \f[C] fruit| price -----|-----: apple|2.05 pear|1.37 orange|3.09 \f[R] .fi .PP The cells of pipe tables cannot contain block elements like paragraphs and lists, and cannot span multiple lines. If any line of the markdown source is longer than the column width (see \f[V]--columns\f[R]), then the table will take up the full text width and the cell contents will wrap, with the relative cell widths determined by the number of dashes in the line separating the table header from the table body. (For example \f[V]---|-\f[R] would make the first column 3/4 and the second column 1/4 of the full text width.) On the other hand, if no lines are wider than column width, then cell contents will not be wrapped, and the cells will be sized to their contents. .PP Note: pandoc also recognizes pipe tables of the following form, as can be produced by Emacs\[cq] orgtbl-mode: .IP .nf \f[C] | One | Two | |-----+-------| | my | table | | is | nice | \f[R] .fi .PP The difference is that \f[V]+\f[R] is used instead of \f[V]|\f[R]. Other orgtbl features are not supported. In particular, to get non-default column alignment, you\[cq]ll need to add colons as above. .SS Metadata blocks .SS Extension: \f[V]pandoc_title_block\f[R] .PP If the file begins with a title block .IP .nf \f[C] % title % author(s) (separated by semicolons) % date \f[R] .fi .PP it will be parsed as bibliographic information, not regular text. (It will be used, for example, in the title of standalone LaTeX or HTML output.) The block may contain just a title, a title and an author, or all three elements. If you want to include an author but no title, or a title and a date but no author, you need a blank line: .IP .nf \f[C] % % Author \f[R] .fi .IP .nf \f[C] % My title % % June 15, 2006 \f[R] .fi .PP The title may occupy multiple lines, but continuation lines must begin with leading space, thus: .IP .nf \f[C] % My title on multiple lines \f[R] .fi .PP If a document has multiple authors, the authors may be put on separate lines with leading space, or separated by semicolons, or both. So, all of the following are equivalent: .IP .nf \f[C] % Author One Author Two \f[R] .fi .IP .nf \f[C] % Author One; Author Two \f[R] .fi .IP .nf \f[C] % Author One; Author Two \f[R] .fi .PP The date must fit on one line. .PP All three metadata fields may contain standard inline formatting (italics, links, footnotes, etc.). .PP Title blocks will always be parsed, but they will affect the output only when the \f[V]--standalone\f[R] (\f[V]-s\f[R]) option is chosen. In HTML output, titles will appear twice: once in the document head \[en] this is the title that will appear at the top of the window in a browser \[en] and once at the beginning of the document body. The title in the document head can have an optional prefix attached (\f[V]--title-prefix\f[R] or \f[V]-T\f[R] option). The title in the body appears as an H1 element with class \[lq]title\[rq], so it can be suppressed or reformatted with CSS. If a title prefix is specified with \f[V]-T\f[R] and no title block appears in the document, the title prefix will be used by itself as the HTML title. .PP The man page writer extracts a title, man page section number, and other header and footer information from the title line. The title is assumed to be the first word on the title line, which may optionally end with a (single-digit) section number in parentheses. (There should be no space between the title and the parentheses.) Anything after this is assumed to be additional footer and header text. A single pipe character (\f[V]|\f[R]) should be used to separate the footer text from the header text. Thus, .IP .nf \f[C] % PANDOC(1) \f[R] .fi .PP will yield a man page with the title \f[V]PANDOC\f[R] and section 1. .IP .nf \f[C] % PANDOC(1) Pandoc User Manuals \f[R] .fi .PP will also have \[lq]Pandoc User Manuals\[rq] in the footer. .IP .nf \f[C] % PANDOC(1) Pandoc User Manuals | Version 4.0 \f[R] .fi .PP will also have \[lq]Version 4.0\[rq] in the header. .SS Extension: \f[V]yaml_metadata_block\f[R] .PP A YAML metadata block is a valid YAML object, delimited by a line of three hyphens (\f[V]---\f[R]) at the top and a line of three hyphens (\f[V]---\f[R]) or three dots (\f[V]...\f[R]) at the bottom. The initial line \f[V]---\f[R] must not be followed by a blank line. A YAML metadata block may occur anywhere in the document, but if it is not at the beginning, it must be preceded by a blank line. .PP Note that, because of the way pandoc concatenates input files when several are provided, you may also keep the metadata in a separate YAML file and pass it to pandoc as an argument, along with your Markdown files: .IP .nf \f[C] pandoc chap1.md chap2.md chap3.md metadata.yaml -s -o book.html \f[R] .fi .PP Just be sure that the YAML file begins with \f[V]---\f[R] and ends with \f[V]---\f[R] or \f[V]...\f[R]. Alternatively, you can use the \f[V]--metadata-file\f[R] option. Using that approach however, you cannot reference content (like footnotes) from the main markdown input document. .PP Metadata will be taken from the fields of the YAML object and added to any existing document metadata. Metadata can contain lists and objects (nested arbitrarily), but all string scalars will be interpreted as Markdown. Fields with names ending in an underscore will be ignored by pandoc. (They may be given a role by external processors.) Field names must not be interpretable as YAML numbers or boolean values (so, for example, \f[V]yes\f[R], \f[V]True\f[R], and \f[V]15\f[R] cannot be used as field names). .PP A document may contain multiple metadata blocks. If two metadata blocks attempt to set the same field, the value from the second block will be taken. .PP Each metadata block is handled internally as an independent YAML document. This means, for example, that any YAML anchors defined in a block cannot be referenced in another block. .PP When pandoc is used with \f[V]-t markdown\f[R] to create a Markdown document, a YAML metadata block will be produced only if the \f[V]-s/--standalone\f[R] option is used. All of the metadata will appear in a single block at the beginning of the document. .PP Note that YAML escaping rules must be followed. Thus, for example, if a title contains a colon, it must be quoted, and if it contains a backslash escape, then it must be ensured that it is not treated as a YAML escape sequence. The pipe character (\f[V]|\f[R]) can be used to begin an indented block that will be interpreted literally, without need for escaping. This form is necessary when the field contains blank lines or block-level formatting: .IP .nf \f[C] --- title: \[aq]This is the title: it contains a colon\[aq] author: - Author One - Author Two keywords: [nothing, nothingness] abstract: | This is the abstract. It consists of two paragraphs. \&... \f[R] .fi .PP The literal block after the \f[V]|\f[R] must be indented relative to the line containing the \f[V]|\f[R]. If it is not, the YAML will be invalid and pandoc will not interpret it as metadata. For an overview of the complex rules governing YAML, see the Wikipedia entry on YAML syntax. .PP Template variables will be set automatically from the metadata. Thus, for example, in writing HTML, the variable \f[V]abstract\f[R] will be set to the HTML equivalent of the Markdown in the \f[V]abstract\f[R] field: .IP .nf \f[C]

This is the abstract.

It consists of two paragraphs.

\f[R] .fi .PP Variables can contain arbitrary YAML structures, but the template must match this structure. The \f[V]author\f[R] variable in the default templates expects a simple list or string, but can be changed to support more complicated structures. The following combination, for example, would add an affiliation to the author if one is given: .IP .nf \f[C] --- title: The document title author: - name: Author One affiliation: University of Somewhere - name: Author Two affiliation: University of Nowhere \&... \f[R] .fi .PP To use the structured authors in the example above, you would need a custom template: .IP .nf \f[C] $for(author)$ $if(author.name)$ $author.name$$if(author.affiliation)$ ($author.affiliation$)$endif$ $else$ $author$ $endif$ $endfor$ \f[R] .fi .PP Raw content to include in the document\[cq]s header may be specified using \f[V]header-includes\f[R]; however, it is important to mark up this content as raw code for a particular output format, using the \f[V]raw_attribute\f[R] extension, or it will be interpreted as markdown. For example: .IP .nf \f[C] header-includes: - | \[ga]\[ga]\[ga]{=latex} \[rs]let\[rs]oldsection\[rs]section \[rs]renewcommand{\[rs]section}[1]{\[rs]clearpage\[rs]oldsection{#1}} \[ga]\[ga]\[ga] \f[R] .fi .PP Note: the \f[V]yaml_metadata_block\f[R] extension works with \f[V]commonmark\f[R] as well as \f[V]markdown\f[R] (and it is enabled by default in \f[V]gfm\f[R] and \f[V]commonmark_x\f[R]). However, in these formats the following restrictions apply: .IP \[bu] 2 The YAML metadata block must occur at the beginning of the document (and there can be only one). If multiple files are given as arguments to pandoc, only the first can be a YAML metadata block. .IP \[bu] 2 The leaf nodes of the YAML structure are parsed in isolation from each other and from the rest of the document. So, for example, you can\[cq]t use a reference link in these contexts if the link definition is somewhere else in the document. .SS Backslash escapes .SS Extension: \f[V]all_symbols_escapable\f[R] .PP Except inside a code block or inline code, any punctuation or space character preceded by a backslash will be treated literally, even if it would normally indicate formatting. Thus, for example, if one writes .IP .nf \f[C] *\[rs]*hello\[rs]** \f[R] .fi .PP one will get .IP .nf \f[C] *hello* \f[R] .fi .PP instead of .IP .nf \f[C] hello \f[R] .fi .PP This rule is easier to remember than original Markdown\[cq]s rule, which allows only the following characters to be backslash-escaped: .IP .nf \f[C] \[rs]\[ga]*_{}[]()>#+-.! \f[R] .fi .PP (However, if the \f[V]markdown_strict\f[R] format is used, the original Markdown rule will be used.) .PP A backslash-escaped space is parsed as a nonbreaking space. In TeX output, it will appear as \f[V]\[ti]\f[R]. In HTML and XML output, it will appear as a literal unicode nonbreaking space character (note that it will thus actually look \[lq]invisible\[rq] in the generated HTML source; you can still use the \f[V]--ascii\f[R] command-line option to make it appear as an explicit entity). .PP A backslash-escaped newline (i.e.\ a backslash occurring at the end of a line) is parsed as a hard line break. It will appear in TeX output as \f[V]\[rs]\[rs]\f[R] and in HTML as \f[V]
\f[R]. This is a nice alternative to Markdown\[cq]s \[lq]invisible\[rq] way of indicating hard line breaks using two trailing spaces on a line. .PP Backslash escapes do not work in verbatim contexts. .SS Inline formatting .SS Emphasis .PP To \f[I]emphasize\f[R] some text, surround it with \f[V]*\f[R]s or \f[V]_\f[R], like this: .IP .nf \f[C] This text is _emphasized with underscores_, and this is *emphasized with asterisks*. \f[R] .fi .PP Double \f[V]*\f[R] or \f[V]_\f[R] produces \f[B]strong emphasis\f[R]: .IP .nf \f[C] This is **strong emphasis** and __with underscores__. \f[R] .fi .PP A \f[V]*\f[R] or \f[V]_\f[R] character surrounded by spaces, or backslash-escaped, will not trigger emphasis: .IP .nf \f[C] This is * not emphasized *, and \[rs]*neither is this\[rs]*. \f[R] .fi .SS Extension: \f[V]intraword_underscores\f[R] .PP Because \f[V]_\f[R] is sometimes used inside words and identifiers, pandoc does not interpret a \f[V]_\f[R] surrounded by alphanumeric characters as an emphasis marker. If you want to emphasize just part of a word, use \f[V]*\f[R]: .IP .nf \f[C] feas*ible*, not feas*able*. \f[R] .fi .SS Strikeout .SS Extension: \f[V]strikeout\f[R] .PP To strike out a section of text with a horizontal line, begin and end it with \f[V]\[ti]\[ti]\f[R]. Thus, for example, .IP .nf \f[C] This \[ti]\[ti]is deleted text.\[ti]\[ti] \f[R] .fi .SS Superscripts and subscripts .SS Extension: \f[V]superscript\f[R], \f[V]subscript\f[R] .PP Superscripts may be written by surrounding the superscripted text by \f[V]\[ha]\f[R] characters; subscripts may be written by surrounding the subscripted text by \f[V]\[ti]\f[R] characters. Thus, for example, .IP .nf \f[C] H\[ti]2\[ti]O is a liquid. 2\[ha]10\[ha] is 1024. \f[R] .fi .PP The text between \f[V]\[ha]...\[ha]\f[R] or \f[V]\[ti]...\[ti]\f[R] may not contain spaces or newlines. If the superscripted or subscripted text contains spaces, these spaces must be escaped with backslashes. (This is to prevent accidental superscripting and subscripting through the ordinary use of \f[V]\[ti]\f[R] and \f[V]\[ha]\f[R], and also bad interactions with footnotes.) Thus, if you want the letter P with `a cat' in subscripts, use \f[V]P\[ti]a\[rs] cat\[ti]\f[R], not \f[V]P\[ti]a cat\[ti]\f[R]. .SS Verbatim .PP To make a short span of text verbatim, put it inside backticks: .IP .nf \f[C] What is the difference between \[ga]>>=\[ga] and \[ga]>>\[ga]? \f[R] .fi .PP If the verbatim text includes a backtick, use double backticks: .IP .nf \f[C] Here is a literal backtick \[ga]\[ga] \[ga] \[ga]\[ga]. \f[R] .fi .PP (The spaces after the opening backticks and before the closing backticks will be ignored.) .PP The general rule is that a verbatim span starts with a string of consecutive backticks (optionally followed by a space) and ends with a string of the same number of backticks (optionally preceded by a space). .PP Note that backslash-escapes (and other Markdown constructs) do not work in verbatim contexts: .IP .nf \f[C] This is a backslash followed by an asterisk: \[ga]\[rs]*\[ga]. \f[R] .fi .SS Extension: \f[V]inline_code_attributes\f[R] .PP Attributes can be attached to verbatim text, just as with fenced code blocks: .IP .nf \f[C] \[ga]<$>\[ga]{.haskell} \f[R] .fi .SS Underline .PP To underline text, use the \f[V]underline\f[R] class: .IP .nf \f[C] [Underline]{.underline} \f[R] .fi .PP Or, without the \f[V]bracketed_spans\f[R] extension (but with \f[V]native_spans\f[R]): .IP .nf \f[C] Underline \f[R] .fi .PP This will work in all output formats that support underline. .SS Small caps .PP To write small caps, use the \f[V]smallcaps\f[R] class: .IP .nf \f[C] [Small caps]{.smallcaps} \f[R] .fi .PP Or, without the \f[V]bracketed_spans\f[R] extension: .IP .nf \f[C] Small caps \f[R] .fi .PP For compatibility with other Markdown flavors, CSS is also supported: .IP .nf \f[C] Small caps \f[R] .fi .PP This will work in all output formats that support small caps. .SS Highlighting .PP To highlight text, use the \f[V]mark\f[R] class: .IP .nf \f[C] [Mark]{.mark} \f[R] .fi .PP Or, without the \f[V]bracketed_spans\f[R] extension (but with \f[V]native_spans\f[R]): .IP .nf \f[C] Mark \f[R] .fi .PP This will work in all output formats that support highlighting. .SS Math .SS Extension: \f[V]tex_math_dollars\f[R] .PP Anything between two \f[V]$\f[R] characters will be treated as TeX math. The opening \f[V]$\f[R] must have a non-space character immediately to its right, while the closing \f[V]$\f[R] must have a non-space character immediately to its left, and must not be followed immediately by a digit. Thus, \f[V]$20,000 and $30,000\f[R] won\[cq]t parse as math. If for some reason you need to enclose text in literal \f[V]$\f[R] characters, backslash-escape them and they won\[cq]t be treated as math delimiters. .PP For display math, use \f[V]$$\f[R] delimiters. (In this case, the delimiters may be separated from the formula by whitespace. However, there can be no blank lines between the opening and closing \f[V]$$\f[R] delimiters.) .PP TeX math will be printed in all output formats. How it is rendered depends on the output format: .TP LaTeX It will appear verbatim surrounded by \f[V]\[rs](...\[rs])\f[R] (for inline math) or \f[V]\[rs][...\[rs]]\f[R] (for display math). .TP Markdown, Emacs Org mode, ConTeXt, ZimWiki It will appear verbatim surrounded by \f[V]$...$\f[R] (for inline math) or \f[V]$$...$$\f[R] (for display math). .TP XWiki It will appear verbatim surrounded by \f[V]{{formula}}..{{/formula}}\f[R]. .TP reStructuredText It will be rendered using an interpreted text role \f[V]:math:\f[R]. .TP AsciiDoc For AsciiDoc output format (\f[V]-t asciidoc\f[R]) it will appear verbatim surrounded by \f[V]latexmath:[$...$]\f[R] (for inline math) or \f[V][latexmath]++++\[rs][...\[rs]]+++\f[R] (for display math). For AsciiDoctor output format (\f[V]-t asciidoctor\f[R]) the LaTeX delimiters (\f[V]$..$\f[R] and \f[V]\[rs][..\[rs]]\f[R]) are omitted. .TP Texinfo It will be rendered inside a \f[V]\[at]math\f[R] command. .TP roff man, Jira markup It will be rendered verbatim without \f[V]$\f[R]\[cq]s. .TP MediaWiki, DokuWiki It will be rendered inside \f[V]\f[R] tags. .TP Textile It will be rendered inside \f[V]\f[R] tags. .TP RTF, OpenDocument It will be rendered, if possible, using Unicode characters, and will otherwise appear verbatim. .TP ODT It will be rendered, if possible, using MathML. .TP DocBook If the \f[V]--mathml\f[R] flag is used, it will be rendered using MathML in an \f[V]inlineequation\f[R] or \f[V]informalequation\f[R] tag. Otherwise it will be rendered, if possible, using Unicode characters. .TP Docx and PowerPoint It will be rendered using OMML math markup. .TP FictionBook2 If the \f[V]--webtex\f[R] option is used, formulas are rendered as images using CodeCogs or other compatible web service, downloaded and embedded in the e-book. Otherwise, they will appear verbatim. .TP HTML, Slidy, DZSlides, S5, EPUB The way math is rendered in HTML will depend on the command-line options selected. Therefore see Math rendering in HTML above. .SS Raw HTML .SS Extension: \f[V]raw_html\f[R] .PP Markdown allows you to insert raw HTML (or DocBook) anywhere in a document (except verbatim contexts, where \f[V]<\f[R], \f[V]>\f[R], and \f[V]&\f[R] are interpreted literally). (Technically this is not an extension, since standard Markdown allows it, but it has been made an extension so that it can be disabled if desired.) .PP The raw HTML is passed through unchanged in HTML, S5, Slidy, Slideous, DZSlides, EPUB, Markdown, CommonMark, Emacs Org mode, and Textile output, and suppressed in other formats. .PP For a more explicit way of including raw HTML in a Markdown document, see the \f[V]raw_attribute\f[R] extension. .PP In the CommonMark format, if \f[V]raw_html\f[R] is enabled, superscripts, subscripts, strikeouts and small capitals will be represented as HTML. Otherwise, plain-text fallbacks will be used. Note that even if \f[V]raw_html\f[R] is disabled, tables will be rendered with HTML syntax if they cannot use pipe syntax. .SS Extension: \f[V]markdown_in_html_blocks\f[R] .PP Original Markdown allows you to include HTML \[lq]blocks\[rq]: blocks of HTML between balanced tags that are separated from the surrounding text with blank lines, and start and end at the left margin. Within these blocks, everything is interpreted as HTML, not Markdown; so (for example), \f[V]*\f[R] does not signify emphasis. .PP Pandoc behaves this way when the \f[V]markdown_strict\f[R] format is used; but by default, pandoc interprets material between HTML block tags as Markdown. Thus, for example, pandoc will turn .IP .nf \f[C]
*one* [a link](https://google.com)
\f[R] .fi .PP into .IP .nf \f[C]
one a link
\f[R] .fi .PP whereas \f[V]Markdown.pl\f[R] will preserve it as is. .PP There is one exception to this rule: text between \f[V] HTML \[dq]\[dq]\[dq]) \[ga]\[ga]\[ga] ## Image This image ![image](myimage.png) will be included as a cell attachment. \f[R] .fi .PP If you want to add cell attributes, group cells differently, or add output to code cells, then you need to include divs to indicate the structure. You can use either fenced divs or native divs for this. Here is an example: .IP .nf \f[C] :::::: {.cell .markdown} # Lorem **Lorem ipsum** dolor sit amet, consectetur adipiscing elit. Nunc luctus bibendum felis dictum sodales. :::::: :::::: {.cell .code execution_count=1} \[ga]\[ga]\[ga] {.python} print(\[dq]hello\[dq]) \[ga]\[ga]\[ga] ::: {.output .stream .stdout} \[ga]\[ga]\[ga] hello \[ga]\[ga]\[ga] ::: :::::: :::::: {.cell .code execution_count=2} \[ga]\[ga]\[ga] {.python} from IPython.display import HTML HTML(\[dq]\[dq]\[dq] HTML \[dq]\[dq]\[dq]) \[ga]\[ga]\[ga] ::: {.output .execute_result execution_count=2} \[ga]\[ga]\[ga]{=html} HTML hello \[ga]\[ga]\[ga] ::: :::::: \f[R] .fi .PP If you include raw HTML or TeX in an output cell, use the raw attribute, as shown in the last cell of the example above. Although pandoc can process \[lq]bare\[rq] raw HTML and TeX, the result is often interspersed raw elements and normal textual elements, and in an output cell pandoc expects a single, connected raw block. To avoid using raw HTML or TeX except when marked explicitly using raw attributes, we recommend specifying the extensions \f[V]-raw_html-raw_tex+raw_attribute\f[R] when translating between Markdown and ipynb notebooks. .PP Note that options and extensions that affect reading and writing of Markdown will also affect Markdown cells in ipynb notebooks. For example, \f[V]--wrap=preserve\f[R] will preserve soft line breaks in Markdown cells; \f[V]--markdown-headings=setext\f[R] will cause Setext-style headings to be used; and \f[V]--preserve-tabs\f[R] will prevent tabs from being turned to spaces. .SH SYNTAX HIGHLIGHTING .PP Pandoc will automatically highlight syntax in fenced code blocks that are marked with a language name. The Haskell library skylighting is used for highlighting. Currently highlighting is supported only for HTML, EPUB, Docx, Ms, and LaTeX/PDF output. To see a list of language names that pandoc will recognize, type \f[V]pandoc --list-highlight-languages\f[R]. .PP The color scheme can be selected using the \f[V]--highlight-style\f[R] option. The default color scheme is \f[V]pygments\f[R], which imitates the default color scheme used by the Python library pygments (though pygments is not actually used to do the highlighting). To see a list of highlight styles, type \f[V]pandoc --list-highlight-styles\f[R]. .PP If you are not satisfied with the predefined styles, you can use \f[V]--print-highlight-style\f[R] to generate a JSON \f[V].theme\f[R] file which can be modified and used as the argument to \f[V]--highlight-style\f[R]. To get a JSON version of the \f[V]pygments\f[R] style, for example: .IP .nf \f[C] pandoc --print-highlight-style pygments > my.theme \f[R] .fi .PP Then edit \f[V]my.theme\f[R] and use it like this: .IP .nf \f[C] pandoc --highlight-style my.theme \f[R] .fi .PP If you are not satisfied with the built-in highlighting, or you want to highlight a language that isn\[cq]t supported, you can use the \f[V]--syntax-definition\f[R] option to load a KDE-style XML syntax definition file. Before writing your own, have a look at KDE\[cq]s repository of syntax definitions. .PP To disable highlighting, use the \f[V]--no-highlight\f[R] option. .SH CUSTOM STYLES .PP Custom styles can be used in the docx and ICML formats. .SS Output .PP By default, pandoc\[cq]s docx and ICML output applies a predefined set of styles for blocks such as paragraphs and block quotes, and uses largely default formatting (italics, bold) for inlines. This will work for most purposes, especially alongside a \f[V]reference.docx\f[R] file. However, if you need to apply your own styles to blocks, or match a preexisting set of styles, pandoc allows you to define custom styles for blocks and text using \f[V]div\f[R]s and \f[V]span\f[R]s, respectively. .PP If you define a \f[V]div\f[R] or \f[V]span\f[R] with the attribute \f[V]custom-style\f[R], pandoc will apply your specified style to the contained elements (with the exception of elements whose function depends on a style, like headings, code blocks, block quotes, or links). So, for example, using the \f[V]bracketed_spans\f[R] syntax, .IP .nf \f[C] [Get out]{custom-style=\[dq]Emphatically\[dq]}, he said. \f[R] .fi .PP would produce a docx file with \[lq]Get out\[rq] styled with character style \f[V]Emphatically\f[R]. Similarly, using the \f[V]fenced_divs\f[R] syntax, .IP .nf \f[C] Dickinson starts the poem simply: ::: {custom-style=\[dq]Poetry\[dq]} | A Bird came down the Walk--- | He did not know I saw--- ::: \f[R] .fi .PP would style the two contained lines with the \f[V]Poetry\f[R] paragraph style. .PP For docx output, styles will be defined in the output file as inheriting from normal text, if the styles are not yet in your reference.docx. If they are already defined, pandoc will not alter the definition. .PP This feature allows for greatest customization in conjunction with pandoc filters. If you want all paragraphs after block quotes to be indented, you can write a filter to apply the styles necessary. If you want all italics to be transformed to the \f[V]Emphasis\f[R] character style (perhaps to change their color), you can write a filter which will transform all italicized inlines to inlines within an \f[V]Emphasis\f[R] custom-style \f[V]span\f[R]. .PP For docx output, you don\[cq]t need to enable any extensions for custom styles to work. .SS Input .PP The docx reader, by default, only reads those styles that it can convert into pandoc elements, either by direct conversion or interpreting the derivation of the input document\[cq]s styles. .PP By enabling the \f[V]styles\f[R] extension in the docx reader (\f[V]-f docx+styles\f[R]), you can produce output that maintains the styles of the input document, using the \f[V]custom-style\f[R] class. Paragraph styles are interpreted as divs, while character styles are interpreted as spans. .PP For example, using the \f[V]custom-style-reference.docx\f[R] file in the test directory, we have the following different outputs: .PP Without the \f[V]+styles\f[R] extension: .IP .nf \f[C] $ pandoc test/docx/custom-style-reference.docx -f docx -t markdown This is some text. This is text with an *emphasized* text style. And this is text with a **strengthened** text style. > Here is a styled paragraph that inherits from Block Text. \f[R] .fi .PP And with the extension: .IP .nf \f[C] $ pandoc test/docx/custom-style-reference.docx -f docx+styles -t markdown ::: {custom-style=\[dq]First Paragraph\[dq]} This is some text. ::: ::: {custom-style=\[dq]Body Text\[dq]} This is text with an [emphasized]{custom-style=\[dq]Emphatic\[dq]} text style. And this is text with a [strengthened]{custom-style=\[dq]Strengthened\[dq]} text style. ::: ::: {custom-style=\[dq]My Block Style\[dq]} > Here is a styled paragraph that inherits from Block Text. ::: \f[R] .fi .PP With these custom styles, you can use your input document as a reference-doc while creating docx output (see below), and maintain the same styles in your input and output files. .SH CUSTOM READERS AND WRITERS .PP Pandoc can be extended with custom readers and writers written in Lua. (Pandoc includes a Lua interpreter, so Lua need not be installed separately.) .PP To use a custom reader or writer, simply specify the path to the Lua script in place of the input or output format. For example: .IP .nf \f[C] pandoc -t data/sample.lua pandoc -f my_custom_markup_language.lua -t latex -s \f[R] .fi .PP If the script is not found relative to the working directory, it will be sought in the \f[V]custom\f[R] subdirectory of the user data directory (see \f[V]--data-dir\f[R]). .PP A custom reader is a Lua script that defines one function, Reader, which takes a string as input and returns a Pandoc AST. See the Lua filters documentation for documentation of the functions that are available for creating pandoc AST elements. For parsing, the lpeg parsing library is available by default. To see a sample custom reader: .IP .nf \f[C] pandoc --print-default-data-file creole.lua \f[R] .fi .PP If you want your custom reader to have access to reader options (e.g.\ the tab stop setting), you give your Reader function a second \f[V]options\f[R] parameter. .PP A custom writer is a Lua script that defines a function that specifies how to render each element in a Pandoc AST. See the djot-writer.lua for a full-featured example. .PP Note that custom writers have no default template. If you want to use \f[V]--standalone\f[R] with a custom writer, you will need to specify a template manually using \f[V]--template\f[R] or add a new default template with the name \f[V]default.NAME_OF_CUSTOM_WRITER.lua\f[R] to the \f[V]templates\f[R] subdirectory of your user data directory (see Templates). .SH REPRODUCIBLE BUILDS .PP Some of the document formats pandoc targets (such as EPUB, docx, and ODT) include build timestamps in the generated document. That means that the files generated on successive builds will differ, even if the source does not. To avoid this, set the \f[V]SOURCE_DATE_EPOCH\f[R] environment variable, and the timestamp will be taken from it instead of the current time. \f[V]SOURCE_DATE_EPOCH\f[R] should contain an integer unix timestamp (specifying the number of seconds since midnight UTC January 1, 1970). .PP Some document formats also include a unique identifier. For EPUB, this can be set explicitly by setting the \f[V]identifier\f[R] metadata field (see EPUB Metadata, above). .SH ACCESSIBLE PDFS AND PDF ARCHIVING STANDARDS .PP PDF is a flexible format, and using PDF in certain contexts requires additional conventions. For example, PDFs are not accessible by default; they define how characters are placed on a page but do not contain semantic information on the content. However, it is possible to generate accessible PDFs, which use tagging to add semantic information to the document. .PP Pandoc defaults to LaTeX to generate PDF. Tagging support in LaTeX is in development and not readily available, so PDFs generated in this way will always be untagged and not accessible. This means that alternative engines must be used to generate accessible PDFs. .PP The PDF standards PDF/A and PDF/UA define further restrictions intended to optimize PDFs for archiving and accessibility. Tagging is commonly used in combination with these standards to ensure best results. .PP Note, however, that standard compliance depends on many things, including the colorspace of embedded images. Pandoc cannot check this, and external programs must be used to ensure that generated PDFs are in compliance. .SS ConTeXt .PP ConTeXt always produces tagged PDFs, but the quality depends on the input. The default ConTeXt markup generated by pandoc is optimized for readability and reuse, not tagging. Enable the \f[V]tagging\f[R] format extension to force markup that is optimized for tagging. This can be combined with the \f[V]pdfa\f[R] variable to generate standard-compliant PDFs. E.g.: .IP .nf \f[C] pandoc --to=context+tagging -V pdfa=3a \f[R] .fi .PP A recent \f[V]context\f[R] version should be used, as older versions contained a bug that lead to invalid PDF metadata. .SS WeasyPrint .PP The HTML-based engine WeasyPrint includes experimental support for PDF/A and PDF/UA since version 57. Tagged PDFs can created with .IP .nf \f[C] pandoc --pdf-engine=weasyprint \[rs] --pdf-engine-opt=--pdf-variant=pdf/ua-1 ... \f[R] .fi .PP The feature is experimental and standard compliance should not be assumed. .SS Prince XML .PP The non-free HTML-to-PDf converter \f[V]prince\f[R] has extensive support for various PDF standards as well as tagging. E.g.: .IP .nf \f[C] pandoc --pdf-engine=prince \[rs] --pdf-engine-opt=--tagged-pdf ... \f[R] .fi .PP See the prince documentation for more info. .SS Word Processors .PP Word processors like LibreOffice and MS Word can also be used to generate standardized and tagged PDF output. Pandoc does not support direct conversions via these tools. However, pandoc can convert a document to a \f[V]docx\f[R] or \f[V]odt\f[R] file, which can then be opened and converted to PDF with the respective word processor. See the documentation for Word and LibreOffice. .SH RUNNING PANDOC AS A WEB SERVER .PP If you rename (or symlink) the pandoc executable to \f[V]pandoc-server\f[R], or if you call pandoc with \f[V]server\f[R] as the first argument, it will start up a web server with a JSON API. This server exposes most of the conversion functionality of pandoc. For full documentation, see the pandoc-server man page. .PP If you rename (or symlink) the pandoc executable to \f[V]pandoc-server.cgi\f[R], it will function as a CGI program exposing the same API as \f[V]pandoc-server\f[R]. .PP \f[V]pandoc-server\f[R] is designed to be maximally secure; it uses Haskell\[cq]s type system to provide strong guarantees that no I/O will be performed on the server during pandoc conversions. .SH RUNNING PANDOC AS A LUA INTERPRETER .PP Calling the pandoc executable under the name \f[V]pandoc-lua\f[R] or with \f[V]lua\f[R] as the first argument will make it function as a standalone Lua interpreter. The behavior is mostly identical to that of the standalone \f[V]lua\f[R] executable, version 5.4. However, there is no REPL yet, and the \f[V]-i\f[R] option has no effect. For full documentation, see the pandoc-lua man page. .SH A NOTE ON SECURITY .IP "1." 3 Although pandoc itself will not create or modify any files other than those you explicitly ask it create (with the exception of temporary files used in producing PDFs), a filter or custom writer could in principle do anything on your file system. Please audit filters and custom writers very carefully before using them. .IP "2." 3 Several input formats (including HTML, Org, and RST) support \f[V]include\f[R] directives that allow the contents of a file to be included in the output. An untrusted attacker could use these to view the contents of files on the file system. (Using the \f[V]--sandbox\f[R] option can protect against this threat.) .IP "3." 3 Several output formats (including RTF, FB2, HTML with \f[V]--self-contained\f[R], EPUB, Docx, and ODT) will embed encoded or raw images into the output file. An untrusted attacker could exploit this to view the contents of non-image files on the file system. (Using the \f[V]--sandbox\f[R] option can protect against this threat, but will also prevent including images in these formats.) .IP "4." 3 If your application uses pandoc as a Haskell library (rather than shelling out to the executable), it is possible to use it in a mode that fully isolates pandoc from your file system, by running the pandoc operations in the \f[V]PandocPure\f[R] monad. See the document Using the pandoc API for more details. (This corresponds to the use of the \f[V]--sandbox\f[R] option on the command line.) .IP "5." 3 Pandoc\[cq]s parsers can exhibit pathological performance on some corner cases. It is wise to put any pandoc operations under a timeout, to avoid DOS attacks that exploit these issues. If you are using the pandoc executable, you can add the command line options \f[V]+RTS -M512M -RTS\f[R] (for example) to limit the heap size to 512MB. Note that the \f[V]commonmark\f[R] parser (including \f[V]commonmark_x\f[R] and \f[V]gfm\f[R]) is much less vulnerable to pathological performance than the \f[V]markdown\f[R] parser, so it is a better choice when processing untrusted input. .IP "6." 3 The HTML generated by pandoc is not guaranteed to be safe. If \f[V]raw_html\f[R] is enabled for the Markdown input, users can inject arbitrary HTML. Even if \f[V]raw_html\f[R] is disabled, users can include dangerous content in URLs and attributes. To be safe, you should run all HTML generated from untrusted user input through an HTML sanitizer. .SH AUTHORS .PP Copyright 2006\[en]2022 John MacFarlane (jgm\[at]berkeley.edu). Released under the GPL, version 2 or greater. This software carries no warranty of any kind. (See COPYRIGHT for full copyright and warranty notices.) For a full list of contributors, see the file AUTHORS.md in the pandoc source code. .PP The Pandoc source code may be downloaded from or . Further documentation is available at . pandoc-3.1.3/man/pandoc.1.after0000644000000000000000000000031107346545000014347 0ustar0000000000000000.PP The Pandoc source code may be downloaded from or . Further documentation is available at . pandoc-3.1.3/man/pandoc.1.before0000644000000000000000000000005307346545000014513 0ustar0000000000000000.SH NAME pandoc - general markup converter pandoc-3.1.3/pandoc.cabal0000644000000000000000000011235307346545000013410 0ustar0000000000000000cabal-version: 2.4 name: pandoc version: 3.1.3 build-type: Simple license: GPL-2.0-or-later license-file: COPYING.md copyright: (c) 2006-2022 John MacFarlane author: John MacFarlane maintainer: John MacFarlane bug-reports: https://github.com/jgm/pandoc/issues stability: alpha homepage: https://pandoc.org category: Text tested-with: GHC == 8.6.5, GHC == 8.8.4, GHC == 8.10.7, GHC == 9.0.2, GHC == 9.2.5, GHC == 9.4.4 synopsis: Conversion between markup formats description: Pandoc is a Haskell library for converting from one markup format to another. The formats it can handle include . - light markup formats (many variants of Markdown, reStructuredText, AsciiDoc, Org-mode, Muse, Textile, txt2tags) - HTML formats (HTML 4 and 5) - Ebook formats (EPUB v2 and v3, FB2) - Documentation formats (GNU TexInfo, Haddock) - Roff formats (man, ms) - TeX formats (LaTeX, ConTeXt) - Typst - XML formats (DocBook 4 and 5, JATS, TEI Simple, OpenDocument) - Outline formats (OPML) - Bibliography formats (BibTeX, BibLaTeX, CSL JSON, CSL YAML, RIS) - Word processor formats (Docx, RTF, ODT) - Interactive notebook formats (Jupyter notebook ipynb) - Page layout formats (InDesign ICML) - Wiki markup formats (MediaWiki, DokuWiki, TikiWiki, TWiki, Vimwiki, XWiki, ZimWiki, Jira wiki, Creole) - Slide show formats (LaTeX Beamer, PowerPoint, Slidy, reveal.js, Slideous, S5, DZSlides) - Data formats (CSV and TSV tables) - PDF (via external programs such as pdflatex or wkhtmltopdf) . Pandoc can convert mathematical content in documents between TeX, MathML, Word equations, roff eqn, typst, and plain text. It includes a powerful system for automatic citations and bibliographies, and it can be customized extensively using templates, filters, and custom readers and writers written in Lua. data-files: -- templates data/templates/styles.html data/templates/styles.citations.html data/templates/default.html4 data/templates/default.html5 data/templates/default.chunkedhtml data/templates/default.docbook4 data/templates/default.docbook5 data/templates/default.jats_archiving data/templates/default.jats_articleauthoring data/templates/default.jats_publishing data/templates/default.tei data/templates/default.opendocument data/templates/default.icml data/templates/default.opml data/templates/default.latex data/templates/default.bibtex data/templates/default.biblatex data/templates/default.context data/templates/default.texinfo data/templates/default.jira data/templates/default.man data/templates/default.ms data/templates/default.markdown data/templates/default.muse data/templates/default.commonmark data/templates/default.rst data/templates/default.plain data/templates/default.mediawiki data/templates/default.dokuwiki data/templates/default.xwiki data/templates/default.zimwiki data/templates/default.rtf data/templates/default.s5 data/templates/default.slidy data/templates/default.slideous data/templates/default.revealjs data/templates/default.dzslides data/templates/default.asciidoc data/templates/default.asciidoctor data/templates/default.haddock data/templates/default.textile data/templates/default.org data/templates/default.epub2 data/templates/default.epub3 data/templates/article.jats_publishing data/templates/affiliations.jats data/templates/default.markua data/templates/default.typst data/templates/definitions.typst data/templates/template.typst -- translations data/translations/*.yaml -- entities data/docbook-entities.txt -- source files for reference.docx data/docx/[Content_Types].xml data/docx/_rels/.rels data/docx/docProps/app.xml data/docx/docProps/core.xml data/docx/docProps/custom.xml data/docx/word/document.xml data/docx/word/fontTable.xml data/docx/word/comments.xml data/docx/word/footnotes.xml data/docx/word/numbering.xml data/docx/word/settings.xml data/docx/word/webSettings.xml data/docx/word/styles.xml data/docx/word/_rels/document.xml.rels data/docx/word/_rels/footnotes.xml.rels data/docx/word/theme/theme1.xml -- source files for reference.odt data/odt/mimetype data/odt/manifest.rdf data/odt/styles.xml data/odt/content.xml data/odt/meta.xml data/odt/META-INF/manifest.xml -- source files for reference.pptx data/pptx/_rels/.rels data/pptx/docProps/app.xml data/pptx/docProps/core.xml data/pptx/ppt/slideLayouts/_rels/slideLayout1.xml.rels data/pptx/ppt/slideLayouts/_rels/slideLayout2.xml.rels data/pptx/ppt/slideLayouts/_rels/slideLayout3.xml.rels data/pptx/ppt/slideLayouts/_rels/slideLayout4.xml.rels data/pptx/ppt/slideLayouts/_rels/slideLayout5.xml.rels data/pptx/ppt/slideLayouts/_rels/slideLayout6.xml.rels data/pptx/ppt/slideLayouts/_rels/slideLayout7.xml.rels data/pptx/ppt/slideLayouts/_rels/slideLayout8.xml.rels data/pptx/ppt/slideLayouts/_rels/slideLayout9.xml.rels data/pptx/ppt/slideLayouts/_rels/slideLayout10.xml.rels data/pptx/ppt/slideLayouts/_rels/slideLayout11.xml.rels data/pptx/ppt/slideLayouts/slideLayout1.xml data/pptx/ppt/slideLayouts/slideLayout2.xml data/pptx/ppt/slideLayouts/slideLayout3.xml data/pptx/ppt/slideLayouts/slideLayout4.xml data/pptx/ppt/slideLayouts/slideLayout5.xml data/pptx/ppt/slideLayouts/slideLayout6.xml data/pptx/ppt/slideLayouts/slideLayout7.xml data/pptx/ppt/slideLayouts/slideLayout8.xml data/pptx/ppt/slideLayouts/slideLayout9.xml data/pptx/ppt/slideLayouts/slideLayout10.xml data/pptx/ppt/slideLayouts/slideLayout11.xml data/pptx/ppt/_rels/presentation.xml.rels data/pptx/ppt/theme/theme1.xml data/pptx/ppt/presProps.xml data/pptx/ppt/slides/_rels/slide1.xml.rels data/pptx/ppt/slides/_rels/slide2.xml.rels data/pptx/ppt/slides/slide2.xml data/pptx/ppt/slides/slide1.xml data/pptx/ppt/slides/_rels/slide3.xml.rels data/pptx/ppt/slides/_rels/slide4.xml.rels data/pptx/ppt/slides/slide3.xml data/pptx/ppt/slides/slide4.xml data/pptx/ppt/viewProps.xml data/pptx/ppt/tableStyles.xml data/pptx/ppt/slideMasters/_rels/slideMaster1.xml.rels data/pptx/ppt/slideMasters/slideMaster1.xml data/pptx/ppt/presentation.xml data/pptx/ppt/notesMasters/_rels/notesMaster1.xml.rels data/pptx/ppt/notesMasters/notesMaster1.xml data/pptx/ppt/notesSlides/_rels/notesSlide1.xml.rels data/pptx/ppt/notesSlides/notesSlide1.xml data/pptx/ppt/notesSlides/_rels/notesSlide2.xml.rels data/pptx/ppt/notesSlides/notesSlide2.xml data/pptx/ppt/theme/theme2.xml data/pptx/[Content_Types].xml -- stylesheet for EPUB writer data/epub.css -- data for dzslides writer data/dzslides/template.html -- default abbreviations file data/abbreviations -- sample lua custom reader data/creole.lua -- lua init script data/init.lua -- bash completion template data/bash_completion.tpl -- citeproc data/default.csl citeproc/biblatex-localization/*.lbx.strings -- documentation MANUAL.txt, COPYRIGHT extra-source-files: -- documentation INSTALL.md, AUTHORS.md, README.md, CONTRIBUTING.md, BUGS, changelog.md, man/pandoc.1 -- files needed to build man page man/manfilter.lua man/pandoc.1.before man/pandoc.1.after -- tests test/bodybg.gif test/*.native test/command/*.md test/command/*.csl test/command/biblio.bib test/command/averroes.bib test/command/A.txt test/command/B.txt test/command/C.txt test/command/D.txt test/command/file1.txt test/command/file2.txt test/command/three.txt test/command/01.csv test/command/chap1/spider.png test/command/chap2/spider.png test/command/chap1/text.md test/command/chap2/text.md test/command/defaults1.yaml test/command/defaults2.yaml test/command/defaults3.yaml test/command/defaults4.yaml test/command/defaults5.yaml test/command/defaults6.yaml test/command/defaults7.yaml test/command/defaults8.yaml test/command/defaults9.yaml test/command/3533-rst-csv-tables.csv test/command/3880.txt test/command/5182.txt test/command/5700-metadata-file-1.yml test/command/5700-metadata-file-2.yml test/command/abbrevs test/command/SVG_logo-without-xml-declaration.svg test/command/SVG_logo.svg test/command/corrupt.svg test/command/inkscape-cube.svg test/command/sub-file-chapter-1.tex test/command/sub-file-chapter-2.tex test/command/bar.tex test/command/bar-endinput.tex test/command/yaml-metadata.yaml test/command/7813-meta.yaml test/command/3510-subdoc.org test/command/3510-export.latex test/command/3510-src.hs test/command/3971b.tex test/command/5876.yaml test/command/5876/metadata/5876.yaml test/command/5876/metadata/command/5876.yaml test/command/6466-beg.hs test/command/6466-end.hs test/command/6466-mid.hs test/command/6466-whole.hs test/command/7861.yaml test/command/7861/metadata/placeholder test/docbook-chapter.docbook test/docbook-reader.docbook test/docbook-xref.docbook test/endnotexml-reader.xml test/html-reader.html test/opml-reader.opml test/org-select-tags.org test/haddock-reader.haddock test/insert test/lalune.jpg test/man-reader.man test/movie.jpg test/media/rId25.jpg test/media/rId26.jpg test/media/rId27.jpg test/latex-reader.latex test/textile-reader.textile test/markdown-reader-more.txt test/markdown-citations.txt test/textile-reader.textile test/mediawiki-reader.wiki test/vimwiki-reader.wiki test/creole-reader.txt test/rst-reader.rst test/jats-reader.xml test/jira-reader.jira test/s5-basic.html test/s5-fancy.html test/s5-fragment.html test/s5-inserts.html test/tables.context test/tables.docbook4 test/tables.docbook5 test/tables.jats_archiving test/tables.jats_articleauthoring test/tables.jats_publishing test/tables.jira test/tables.dokuwiki test/tables.zimwiki test/tables.icml test/tables.html4 test/tables.html5 test/tables.latex test/tables.man test/tables.ms test/tables.plain test/tables.markdown test/tables.markua test/tables.mediawiki test/tables.tei test/tables.textile test/tables.opendocument test/tables.org test/tables.asciidoc test/tables.asciidoctor test/tables.haddock test/tables.texinfo test/tables.typst test/tables.rst test/tables.rtf test/tables.txt test/tables.fb2 test/tables.muse test/tables.xwiki test/tables/*.html4 test/tables/*.html5 test/tables/*.latex test/tables/*.native test/tables/*.mediawiki test/tables/*.jats_archiving test/testsuite.txt test/writer.latex test/writer.context test/writer.docbook4 test/writer.docbook5 test/writer.jats_archiving test/writer.jats_articleauthoring test/writer.jats_publishing test/writer.jira test/writer.html4 test/writer.html5 test/writer.man test/writer.ms test/writer.markdown test/writer.markua test/writer.plain test/writer.mediawiki test/writer.textile test/writer.typst test/writer.opendocument test/writer.org test/writer.asciidoc test/writer.asciidoctor test/writer.haddock test/writer.rst test/writer.icml test/writer.rtf test/writer.tei test/writer.texinfo test/writer.fb2 test/writer.opml test/writer.dokuwiki test/writer.zimwiki test/writer.xwiki test/writer.muse test/writers-lang-and-dir.latex test/writers-lang-and-dir.context test/dokuwiki_inline_formatting.dokuwiki test/lhs-test.markdown test/lhs-test.markdown+lhs test/lhs-test.rst test/lhs-test.rst+lhs test/lhs-test.latex test/lhs-test.latex+lhs test/lhs-test.html test/lhs-test.html+lhs test/lhs-test.fragment.html+lhs test/pipe-tables.txt test/dokuwiki_external_images.dokuwiki test/dokuwiki_multiblock_table.dokuwiki test/fb2/*.markdown test/fb2/*.fb2 test/fb2/images-embedded.html test/fb2/images-embedded.fb2 test/fb2/test-small.png test/fb2/reader/*.fb2 test/fb2/reader/*.native test/fb2/test.jpg test/docx/*.docx test/docx/golden/*.docx test/docx/*.native test/epub/*.epub test/epub/*.native test/rtf/*.native test/rtf/*.rtf test/pptx/*.pptx test/pptx/**/*.pptx test/pptx/**/*.native test/ipynb/*.native test/ipynb/*.in.native test/ipynb/*.out.native test/ipynb/*.ipynb test/ipynb/*.out.ipynb test/ipynb/*.out.html test/txt2tags.t2t test/twiki-reader.twiki test/tikiwiki-reader.tikiwiki test/odt/odt/*.odt test/odt/markdown/*.md test/odt/native/*.native source-repository head type: git location: git://github.com/jgm/pandoc.git flag embed_data_files Description: Embed data files in binary for relocatable executable. Default: False common common-options default-language: Haskell2010 build-depends: base >= 4.12 && < 5 ghc-options: -Wall -fno-warn-unused-do-bind -Wincomplete-record-updates -Wnoncanonical-monad-instances -Wcpp-undef -Wincomplete-uni-patterns -Widentities -Wpartial-fields -Wmissing-signatures -fhide-source-paths -- -Wmissing-export-lists if impl(ghc >= 8.10) ghc-options: -Wunused-packages if impl(ghc >= 9.0) ghc-options: -Winvalid-haddock if os(windows) cpp-options: -D_WINDOWS common common-executable import: common-options build-depends: pandoc ghc-options: -rtsopts -with-rtsopts=-A8m -threaded library xml-light import: common-options build-depends: xml >= 1.3.12 && < 1.4, xml-conduit >= 1.9.1.1 && < 1.10, xml-types >= 0.3 && < 0.4, containers >= 0.6.0.1 && < 0.7, text >= 1.1.1.0 && < 2.1 hs-source-dirs: xml-light exposed-modules: Text.Pandoc.XML.Light, Text.Pandoc.XML.Light.Types, Text.Pandoc.XML.Light.Proc, Text.Pandoc.XML.Light.Output library import: common-options build-depends: xml-light, Glob >= 0.7 && < 0.11, JuicyPixels >= 3.1.6.1 && < 3.4, SHA >= 1.6 && < 1.7, aeson >= 2.0.1.0 && < 2.2, aeson-pretty >= 0.8.9 && < 0.9, array >= 0.5 && < 0.6, attoparsec >= 0.12 && < 0.15, binary >= 0.7 && < 0.11, blaze-html >= 0.9 && < 0.10, blaze-markup >= 0.8 && < 0.9, bytestring >= 0.9 && < 0.12, case-insensitive >= 1.2 && < 1.3, citeproc >= 0.8.1 && < 0.9, commonmark >= 0.2.2 && < 0.3, commonmark-extensions >= 0.2.3.4 && < 0.3, commonmark-pandoc >= 0.2.1.3 && < 0.3, connection >= 0.3.1, containers >= 0.6.0.1 && < 0.7, data-default >= 0.4 && < 0.8, deepseq >= 1.3 && < 1.5, directory >= 1.2.3 && < 1.4, doclayout >= 0.4.0.1 && < 0.5, doctemplates >= 0.11 && < 0.12, base64 >= 0.4 && < 0.5, emojis >= 0.1 && < 0.2, exceptions >= 0.8 && < 0.11, file-embed >= 0.0 && < 0.1, filepath >= 1.1 && < 1.5, gridtables >= 0.1 && < 0.2, haddock-library >= 1.10 && < 1.12, http-client >= 0.4.30 && < 0.8, http-client-tls >= 0.2.4 && < 0.4, http-types >= 0.8 && < 0.13, ipynb >= 0.2 && < 0.3, jira-wiki-markup >= 1.5.1 && < 1.6, mime-types >= 0.1.1 && < 0.2, mtl >= 2.2 && < 2.4, network >= 2.6, network-uri >= 2.6 && < 2.8, pandoc-types >= 1.23 && < 1.24, parsec >= 3.1 && < 3.2, pretty >= 1.1 && < 1.2, pretty-show >= 1.10 && < 1.11, process >= 1.2.3 && < 1.7, random >= 1 && < 1.3, safe >= 0.3.18 && < 0.4, scientific >= 0.3 && < 0.4, skylighting >= 0.13.2.1 && < 0.14, skylighting-core >= 0.13.2.1 && < 0.14, split >= 0.2 && < 0.3, syb >= 0.1 && < 0.8, tagsoup >= 0.14.6 && < 0.15, temporary >= 1.1 && < 1.4, texmath >= 0.12.8 && < 0.13, text >= 1.1.1.0 && < 2.1, text-conversions >= 0.3 && < 0.4, time >= 1.5 && < 1.14, unicode-collation >= 0.1.1 && < 0.2, unicode-transforms >= 0.3 && < 0.5, yaml >= 0.11 && < 0.12, zip-archive >= 0.4.3 && < 0.5, zlib >= 0.5 && < 0.7, xml >= 1.3.12 && < 1.4, typst >= 0.1 && < 0.2, vector >= 0.12 && < 0.14 if !os(windows) build-depends: unix >= 2.4 && < 2.9 if flag(embed_data_files) cpp-options: -DEMBED_DATA_FILES other-modules: Text.Pandoc.Data.BakedIn hs-source-dirs: src exposed-modules: Text.Pandoc, Text.Pandoc.App, Text.Pandoc.Data, Text.Pandoc.Options, Text.Pandoc.Extensions, Text.Pandoc.Format, Text.Pandoc.Shared, Text.Pandoc.Sources, Text.Pandoc.MediaBag, Text.Pandoc.Error, Text.Pandoc.Filter, Text.Pandoc.Translations, Text.Pandoc.Translations.Types, Text.Pandoc.Readers, Text.Pandoc.Readers.HTML, Text.Pandoc.Readers.LaTeX, Text.Pandoc.Readers.Markdown, Text.Pandoc.Readers.CommonMark, Text.Pandoc.Readers.Creole, Text.Pandoc.Readers.BibTeX, Text.Pandoc.Readers.EndNote, Text.Pandoc.Readers.RIS, Text.Pandoc.Readers.CslJson, Text.Pandoc.Readers.MediaWiki, Text.Pandoc.Readers.Vimwiki, Text.Pandoc.Readers.RST, Text.Pandoc.Readers.Org, Text.Pandoc.Readers.DocBook, Text.Pandoc.Readers.JATS, Text.Pandoc.Readers.Jira, Text.Pandoc.Readers.OPML, Text.Pandoc.Readers.Textile, Text.Pandoc.Readers.Native, Text.Pandoc.Readers.Haddock, Text.Pandoc.Readers.TWiki, Text.Pandoc.Readers.TikiWiki, Text.Pandoc.Readers.Txt2Tags, Text.Pandoc.Readers.Docx, Text.Pandoc.Readers.ODT, Text.Pandoc.Readers.EPUB, Text.Pandoc.Readers.Muse, Text.Pandoc.Readers.Man, Text.Pandoc.Readers.FB2, Text.Pandoc.Readers.DokuWiki, Text.Pandoc.Readers.Ipynb, Text.Pandoc.Readers.CSV, Text.Pandoc.Readers.RTF, Text.Pandoc.Readers.Typst, Text.Pandoc.Writers, Text.Pandoc.Writers.Native, Text.Pandoc.Writers.DocBook, Text.Pandoc.Writers.JATS, Text.Pandoc.Writers.OPML, Text.Pandoc.Writers.HTML, Text.Pandoc.Writers.ChunkedHTML, Text.Pandoc.Writers.Ipynb, Text.Pandoc.Writers.ICML, Text.Pandoc.Writers.Jira, Text.Pandoc.Writers.LaTeX, Text.Pandoc.Writers.ConTeXt, Text.Pandoc.Writers.Typst, Text.Pandoc.Writers.OpenDocument, Text.Pandoc.Writers.Texinfo, Text.Pandoc.Writers.Man, Text.Pandoc.Writers.Ms, Text.Pandoc.Writers.Markdown, Text.Pandoc.Writers.CommonMark, Text.Pandoc.Writers.Haddock, Text.Pandoc.Writers.RST, Text.Pandoc.Writers.Org, Text.Pandoc.Writers.AsciiDoc, Text.Pandoc.Writers.Textile, Text.Pandoc.Writers.MediaWiki, Text.Pandoc.Writers.DokuWiki, Text.Pandoc.Writers.XWiki, Text.Pandoc.Writers.ZimWiki, Text.Pandoc.Writers.RTF, Text.Pandoc.Writers.ODT, Text.Pandoc.Writers.Docx, Text.Pandoc.Writers.Powerpoint, Text.Pandoc.Writers.EPUB, Text.Pandoc.Writers.FB2, Text.Pandoc.Writers.TEI, Text.Pandoc.Writers.Muse, Text.Pandoc.Writers.CslJson, Text.Pandoc.Writers.Math, Text.Pandoc.Writers.Shared, Text.Pandoc.Writers.OOXML, Text.Pandoc.Writers.AnnotatedTable, Text.Pandoc.Writers.BibTeX, Text.Pandoc.PDF, Text.Pandoc.UTF8, Text.Pandoc.Scripting, Text.Pandoc.Slides, Text.Pandoc.Templates, Text.Pandoc.XML, Text.Pandoc.SelfContained, Text.Pandoc.Highlighting, Text.Pandoc.Logging, Text.Pandoc.Process, Text.Pandoc.MIME, Text.Pandoc.Parsing, Text.Pandoc.Asciify, Text.Pandoc.Emoji, Text.Pandoc.ImageSize, Text.Pandoc.Class, Text.Pandoc.Class.IO, Text.Pandoc.Citeproc, Text.Pandoc.Chunks, Text.Pandoc.Version other-modules: Text.Pandoc.App.CommandLineOptions, Text.Pandoc.App.Input, Text.Pandoc.App.Opt, Text.Pandoc.App.OutputSettings, Text.Pandoc.Class.CommonState, Text.Pandoc.Class.PandocMonad, Text.Pandoc.Class.PandocIO, Text.Pandoc.Class.PandocPure, Text.Pandoc.Class.Sandbox, Text.Pandoc.Filter.Environment, Text.Pandoc.Filter.JSON, Text.Pandoc.Parsing.Capabilities, Text.Pandoc.Parsing.Citations, Text.Pandoc.Parsing.General, Text.Pandoc.Parsing.GridTable, Text.Pandoc.Parsing.Lists, Text.Pandoc.Parsing.Math, Text.Pandoc.Parsing.Smart, Text.Pandoc.Parsing.State, Text.Pandoc.Parsing.Future, Text.Pandoc.Readers.Docx.Lists, Text.Pandoc.Readers.Docx.Combine, Text.Pandoc.Readers.Docx.Parse, Text.Pandoc.Readers.Docx.Parse.Styles, Text.Pandoc.Readers.Docx.Util, Text.Pandoc.Readers.Docx.Fields, Text.Pandoc.Readers.HTML.Parsing, Text.Pandoc.Readers.HTML.Table, Text.Pandoc.Readers.HTML.TagCategories, Text.Pandoc.Readers.HTML.Types, Text.Pandoc.Readers.LaTeX.Inline, Text.Pandoc.Readers.LaTeX.Citation, Text.Pandoc.Readers.LaTeX.Lang, Text.Pandoc.Readers.LaTeX.Macro, Text.Pandoc.Readers.LaTeX.Math, Text.Pandoc.Readers.LaTeX.Parsing, Text.Pandoc.Readers.LaTeX.SIunitx, Text.Pandoc.Readers.LaTeX.Table, Text.Pandoc.Readers.Typst.Parsing, Text.Pandoc.Readers.Typst.Math, Text.Pandoc.Readers.ODT.Base, Text.Pandoc.Readers.ODT.Namespaces, Text.Pandoc.Readers.ODT.StyleReader, Text.Pandoc.Readers.ODT.ContentReader, Text.Pandoc.Readers.ODT.Generic.Fallible, Text.Pandoc.Readers.ODT.Generic.SetMap, Text.Pandoc.Readers.ODT.Generic.Utils, Text.Pandoc.Readers.ODT.Generic.Namespaces, Text.Pandoc.Readers.ODT.Generic.XMLConverter, Text.Pandoc.Readers.ODT.Arrows.State, Text.Pandoc.Readers.ODT.Arrows.Utils, Text.Pandoc.Readers.Org.BlockStarts, Text.Pandoc.Readers.Org.Blocks, Text.Pandoc.Readers.Org.DocumentTree, Text.Pandoc.Readers.Org.ExportSettings, Text.Pandoc.Readers.Org.Inlines, Text.Pandoc.Readers.Org.Meta, Text.Pandoc.Readers.Org.ParserState, Text.Pandoc.Readers.Org.Parsing, Text.Pandoc.Readers.Org.Shared, Text.Pandoc.Readers.Metadata, Text.Pandoc.Readers.Roff, Text.Pandoc.Writers.Docx.StyleMap, Text.Pandoc.Writers.Docx.Table, Text.Pandoc.Writers.Docx.Types, Text.Pandoc.Writers.GridTable Text.Pandoc.Writers.JATS.References, Text.Pandoc.Writers.JATS.Table, Text.Pandoc.Writers.JATS.Types, Text.Pandoc.Writers.LaTeX.Caption, Text.Pandoc.Writers.LaTeX.Notes, Text.Pandoc.Writers.LaTeX.Table, Text.Pandoc.Writers.LaTeX.Lang, Text.Pandoc.Writers.LaTeX.Types, Text.Pandoc.Writers.LaTeX.Citation, Text.Pandoc.Writers.LaTeX.Util, Text.Pandoc.Writers.Markdown.Table, Text.Pandoc.Writers.Markdown.Types, Text.Pandoc.Writers.Markdown.Inline, Text.Pandoc.Writers.Roff, Text.Pandoc.Writers.Blaze, Text.Pandoc.Writers.Powerpoint.Presentation, Text.Pandoc.Writers.Powerpoint.Output, Text.Pandoc.TeX, Text.Pandoc.URI, Text.Pandoc.CSS, Text.Pandoc.CSV, Text.Pandoc.RoffChar, Text.Pandoc.UUID, Text.Pandoc.Image, Text.Pandoc.Citeproc.BibTeX, Text.Pandoc.Citeproc.Name, Text.Pandoc.Citeproc.CslJson, Text.Pandoc.Citeproc.Data, Text.Pandoc.Citeproc.Locator, Text.Pandoc.Citeproc.MetaValue, Text.Pandoc.Citeproc.Util, Paths_pandoc autogen-modules: Paths_pandoc buildable: True test-suite test-pandoc import: common-executable type: exitcode-stdio-1.0 main-is: test-pandoc.hs hs-source-dirs: test build-depends: pandoc, Diff >= 0.2 && < 0.5, Glob >= 0.7 && < 0.11, bytestring >= 0.9 && < 0.12, containers >= 0.4.2.1 && < 0.7, directory >= 1.2.3 && < 1.4, doctemplates >= 0.11 && < 0.12, filepath >= 1.1 && < 1.5, mtl >= 2.2 && < 2.4, pandoc-types >= 1.23 && < 1.24, process >= 1.2.3 && < 1.7, tasty >= 0.11 && < 1.5, tasty-golden >= 2.3 && < 2.4, tasty-hunit >= 0.9 && < 0.11, tasty-quickcheck >= 0.8 && < 0.11, text >= 1.1.1.0 && < 2.1, time >= 1.5 && < 1.14, xml >= 1.3.12 && < 1.4, zip-archive >= 0.4.3 && < 0.5 other-modules: Tests.Old Tests.Command Tests.Helpers Tests.Shared Tests.Readers.LaTeX Tests.Readers.HTML Tests.Readers.JATS Tests.Readers.Jira Tests.Readers.Markdown Tests.Readers.Org Tests.Readers.Org.Block Tests.Readers.Org.Block.CodeBlock Tests.Readers.Org.Block.Figure Tests.Readers.Org.Block.Header Tests.Readers.Org.Block.List Tests.Readers.Org.Block.Table Tests.Readers.Org.Directive Tests.Readers.Org.Inline Tests.Readers.Org.Inline.Citation Tests.Readers.Org.Inline.Note Tests.Readers.Org.Inline.Smart Tests.Readers.Org.Meta Tests.Readers.Org.Shared Tests.Readers.RST Tests.Readers.RTF Tests.Readers.Docx Tests.Readers.ODT Tests.Readers.Txt2Tags Tests.Readers.EPUB Tests.Readers.Muse Tests.Readers.Creole Tests.Readers.Man Tests.Readers.FB2 Tests.Readers.DokuWiki Tests.Writers.Native Tests.Writers.ConTeXt Tests.Writers.DocBook Tests.Writers.HTML Tests.Writers.JATS Tests.Writers.Jira Tests.Writers.Markdown Tests.Writers.Org Tests.Writers.Plain Tests.Writers.AsciiDoc Tests.Writers.LaTeX Tests.Writers.Docx Tests.Writers.RST Tests.Writers.TEI Tests.Writers.Markua Tests.Writers.Muse Tests.Writers.FB2 Tests.Writers.Powerpoint Tests.Writers.OOXML Tests.Writers.Ms Tests.Writers.AnnotatedTable benchmark benchmark-pandoc import: common-executable type: exitcode-stdio-1.0 main-is: benchmark-pandoc.hs hs-source-dirs: benchmark build-depends: bytestring, tasty-bench >= 0.2 && <= 0.4, mtl >= 2.2 && < 2.4, text >= 1.1.1.0 && < 2.1, deepseq -- we increase heap size to avoid benchmarking garbage collection: ghc-options: -rtsopts -with-rtsopts=-A8m -threaded pandoc-3.1.3/src/Text/0000755000000000000000000000000007346545000012666 5ustar0000000000000000pandoc-3.1.3/src/Text/Pandoc.hs0000644000000000000000000000500407346545000014425 0ustar0000000000000000{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE ScopedTypeVariables #-} {- | Module : Text.Pandoc Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable This helper module exports the main writers, readers, and data structure definitions from the Pandoc libraries. A typical application will chain together a reader and a writer to convert strings from one format to another. For example, the following simple program will act as a filter converting markdown fragments to reStructuredText, using reference-style links instead of inline links: > module Main where > import Text.Pandoc > import Data.Text (Text) > import qualified Data.Text.IO as T > > mdToRST :: Text -> IO Text > mdToRST txt = runIOorExplode $ > readMarkdown def txt > >>= writeRST def{ writerReferenceLinks = True } > > main :: IO () > main = do > T.getContents >>= mdToRST >>= T.putStrLn -} module Text.Pandoc ( -- * Definitions module Text.Pandoc.Definition -- * Generics , module Text.Pandoc.Generic -- * Options , module Text.Pandoc.Options -- * Logging , module Text.Pandoc.Logging -- * Typeclass , module Text.Pandoc.Class -- * Internal data files , module Text.Pandoc.Data -- * Error handling , module Text.Pandoc.Error -- * Readers: converting /to/ Pandoc format , module Text.Pandoc.Readers -- * Writers: converting /from/ Pandoc format , module Text.Pandoc.Writers -- * Rendering templates and default templates , module Text.Pandoc.Templates -- * Localization , setTranslations , translateTerm -- * Version information , pandocVersion , pandocVersionText ) where import Text.Pandoc.Class import Text.Pandoc.Definition import Text.Pandoc.Data import Text.Pandoc.Error import Text.Pandoc.Generic import Text.Pandoc.Logging import Text.Pandoc.Options import Text.Pandoc.Readers import Text.Pandoc.Version (pandocVersion, pandocVersionText) import Text.Pandoc.Templates import Text.Pandoc.Translations (setTranslations, translateTerm) import Text.Pandoc.Writers pandoc-3.1.3/src/Text/Pandoc/0000755000000000000000000000000007346545000014072 5ustar0000000000000000pandoc-3.1.3/src/Text/Pandoc/App.hs0000644000000000000000000004223607346545000015155 0ustar0000000000000000{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE CPP #-} {-# LANGUAGE ScopedTypeVariables #-} {- | Module : Text.Pandoc.App Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Does a pandoc conversion based on command-line options. -} module Text.Pandoc.App ( convertWithOpts , handleOptInfo , Opt(..) , OptInfo(..) , LineEnding(..) , IpynbOutput (..) , Filter(..) , defaultOpts , parseOptions , parseOptionsFromArgs , options , applyFilters ) where import qualified Control.Exception as E import Control.Monad ( (>=>), when, forM, forM_ ) import Control.Monad.Trans ( MonadIO(..) ) import Control.Monad.Catch ( MonadMask ) import Control.Monad.Except (throwError) import qualified Data.ByteString.Lazy as BL import Data.Maybe (fromMaybe, isJust, isNothing) import qualified Data.Set as Set import Data.Text (Text) import qualified Data.Text as T import qualified Data.Text.Lazy as TL import qualified Data.Text.Lazy.Encoding as TE import qualified Data.Text.Encoding.Error as TE import System.Directory (doesDirectoryExist, createDirectory) import Codec.Archive.Zip (toArchiveOrFail, extractFilesFromArchive, ZipOption(..)) import System.Exit (exitSuccess) import System.FilePath ( takeBaseName, takeExtension) import System.IO (nativeNewline, stdout) import qualified System.IO as IO (Newline (..)) import Text.Pandoc import Text.Pandoc.Builder (setMeta) import Text.Pandoc.MediaBag (mediaItems) import Text.Pandoc.Image (svgToPng) import Text.Pandoc.App.Opt (Opt (..), LineEnding (..), defaultOpts, IpynbOutput (..), OptInfo(..)) import Text.Pandoc.App.CommandLineOptions (parseOptions, parseOptionsFromArgs, options, handleOptInfo) import Text.Pandoc.App.Input (InputParameters (..), readInput) import Text.Pandoc.App.OutputSettings (OutputSettings (..), optToOutputSettings) import Text.Collate.Lang (Lang (..), parseLang) import Text.Pandoc.Filter (Filter (JSONFilter, LuaFilter), Environment (..), applyFilters) import qualified Text.Pandoc.Format as Format import Text.Pandoc.PDF (makePDF) import Text.Pandoc.Scripting (ScriptingEngine (..), CustomComponents(..)) import Text.Pandoc.SelfContained (makeSelfContained) import Text.Pandoc.Shared (eastAsianLineBreakFilter, headerShift, filterIpynbOutput, tshow) import Text.Pandoc.URI (isURI) import Text.Pandoc.Writers.Shared (lookupMetaString) import Text.Pandoc.Readers.Markdown (yamlToMeta) import qualified Text.Pandoc.UTF8 as UTF8 #ifndef _WINDOWS import System.Posix.IO (stdOutput) import System.Posix.Terminal (queryTerminal) #endif convertWithOpts :: ScriptingEngine -> Opt -> IO () convertWithOpts scriptingEngine opts = do let outputFile = fromMaybe "-" (optOutputFile opts) datadir <- case optDataDir opts of Nothing -> do d <- defaultUserDataDir exists <- doesDirectoryExist d return $ if exists then Just d else Nothing mdatadir -> return mdatadir when (optDumpArgs opts) $ do UTF8.hPutStrLn stdout (T.pack outputFile) mapM_ (UTF8.hPutStrLn stdout . T.pack) (fromMaybe ["-"] $ optInputFiles opts) exitSuccess #ifdef _WINDOWS let istty = True #else istty <- liftIO $ queryTerminal stdOutput #endif res <- runIO $ convertWithOpts' scriptingEngine istty datadir opts case res of Left e -> E.throwIO e Right (output, reports) -> do case optLogFile opts of Nothing -> return () Just logfile -> BL.writeFile logfile (encodeLogMessages reports) let isWarning msg = messageVerbosity msg == WARNING when (optFailIfWarnings opts && any isWarning reports) $ E.throwIO PandocFailOnWarningError let eol = case optEol opts of CRLF -> IO.CRLF LF -> IO.LF Native -> nativeNewline case output of TextOutput t -> writerFn eol outputFile t BinaryOutput bs -> writeFnBinary outputFile bs ZipOutput bs | null (takeExtension outputFile) -> do -- create directory and unzip createDirectory outputFile -- will fail if directory exists let zipopts = [OptRecursive, OptDestination outputFile] ++ [OptVerbose | optVerbosity opts == INFO] case toArchiveOrFail bs of Right archive -> extractFilesFromArchive zipopts archive Left e -> E.throwIO $ PandocShouldNeverHappenError $ T.pack e | otherwise -> writeFnBinary outputFile bs convertWithOpts' :: (PandocMonad m, MonadIO m, MonadMask m) => ScriptingEngine -> Bool -> Maybe FilePath -> Opt -> m (PandocOutput, [LogMessage]) convertWithOpts' scriptingEngine istty datadir opts = do configureCommonState datadir opts let outputFile = fromMaybe "-" (optOutputFile opts) let filters = optFilters opts let sources = case optInputFiles opts of Just xs | not (optIgnoreArgs opts) -> xs _ -> ["-"] let defFlavor fmt = Format.FlavoredFormat fmt mempty -- assign reader and writer based on options and filenames flvrd@(Format.FlavoredFormat readerNameBase _extsDiff) <- case optFrom opts of Just f -> Format.parseFlavoredFormat f Nothing -> case Format.formatFromFilePaths sources of Just f' -> return f' Nothing | sources == ["-"] -> return $ defFlavor "markdown" | any (isURI . T.pack) sources -> return $ defFlavor "html" | otherwise -> do report $ CouldNotDeduceFormat (map (T.pack . takeExtension) sources) "markdown" return $ defFlavor "markdown" let makeSandboxed pureReader = let files = maybe id (:) (optReferenceDoc opts) . maybe id (:) (optEpubMetadata opts) . maybe id (:) (optEpubCoverImage opts) . maybe id (:) (optCSL opts) . maybe id (:) (optCitationAbbreviations opts) $ optEpubFonts opts ++ optBibliography opts in case pureReader of TextReader r -> TextReader $ \o t -> sandbox files (r o t) ByteStringReader r -> ByteStringReader $ \o t -> sandbox files (r o t) (reader, readerExts) <- if ".lua" `T.isSuffixOf` readerNameBase then do let scriptPath = T.unpack readerNameBase components <- engineLoadCustom scriptingEngine scriptPath r <- case customReader components of Nothing -> throwError $ PandocAppError $ readerNameBase <> " does not contain a custom reader" Just r -> return r let extsConf = fromMaybe mempty (customExtensions components) rexts <- Format.applyExtensionsDiff extsConf flvrd return (r, rexts) else if optSandbox opts then case runPure (getReader flvrd) of Left e -> throwError e Right (r, rexts) -> return (makeSandboxed r, rexts) else getReader flvrd outputSettings <- optToOutputSettings scriptingEngine opts let format = outputFormat outputSettings let writer = outputWriter outputSettings let writerOptions = outputWriterOptions outputSettings -- whether we are targeting PDF. let pdfOutput = isJust $ outputPdfProgram outputSettings -- whether standalone output should be produced. let bibOutput = format `elem` ["bibtex", "biblatex", "csljson"] let standalone = isJust (writerTemplate writerOptions) || bibOutput -- -- Sanity checks -- when (pdfOutput && readerNameBase == "latex") $ case optInputFiles opts of Just (inputFile:_) -> report $ UnusualConversion $ T.pack $ "to convert a .tex file to PDF, you get better results by using pdflatex " <> "(or lualatex or xelatex) directly, try `pdflatex " <> inputFile <> "` instead of `pandoc " <> inputFile <> " -o " <> outputFile <> "`." _ -> return () -- We don't want to send output to the terminal if the user -- does 'pandoc -t docx input.txt'; though we allow them to -- force this with '-o -'. On posix systems, we detect -- when stdout is being piped and allow output to stdout -- in that case, but on Windows we can't. when ((pdfOutput || not (isTextFormat format)) && istty && isNothing ( optOutputFile opts)) $ throwError $ PandocAppError $ "Cannot write " <> (if pdfOutput then "pdf" else format) <> " output to terminal.\n" <> "Specify an output file using the -o option, or " <> "use '-o -' to force output to stdout." when (readerNameBase == "markdown_github" || format == "markdown_github") $ report $ Deprecated "markdown_github" "Use gfm instead." abbrevs <- readAbbreviations (optAbbreviations opts) let readerOpts = def{ readerStandalone = standalone , readerColumns = optColumns opts , readerTabStop = optTabStop opts , readerIndentedCodeClasses = optIndentedCodeClasses opts , readerDefaultImageExtension = optDefaultImageExtension opts , readerTrackChanges = optTrackChanges opts , readerAbbreviations = abbrevs , readerExtensions = readerExts , readerStripComments = optStripComments opts } metadataFromFile <- getMetadataFromFiles readerNameBase readerOpts (optMetadataFiles opts) let transforms = (case optShiftHeadingLevelBy opts of 0 -> id x -> (headerShift x :)) . (if extensionEnabled Ext_east_asian_line_breaks readerExts && not (extensionEnabled Ext_east_asian_line_breaks (writerExtensions writerOptions) && writerWrapText writerOptions == WrapPreserve) then (eastAsianLineBreakFilter :) else id) . (case optIpynbOutput opts of _ | readerNameBase /= "ipynb" -> id IpynbOutputAll -> id IpynbOutputNone -> (filterIpynbOutput Nothing :) IpynbOutputBest -> (filterIpynbOutput (Just $ if htmlFormat format then Format "html" else case format of "latex" -> Format "latex" "beamer" -> Format "latex" _ -> Format format) :)) $ [] let isPandocCiteproc (JSONFilter f) = takeBaseName f == "pandoc-citeproc" isPandocCiteproc _ = False when (any isPandocCiteproc filters) $ report $ Deprecated "pandoc-citeproc filter" "Use --citeproc instead." let cslMetadata = maybe id (setMeta "csl") (optCSL opts) . (case optBibliography opts of [] -> id xs -> setMeta "bibliography" xs) . maybe id (setMeta "citation-abbreviations") (optCitationAbbreviations opts) $ mempty let filterEnv = Environment readerOpts writerOptions let inputParams = InputParameters { inputReader = reader , inputReaderName = readerNameBase , inputReaderOptions = readerOpts , inputSources = sources , inputFileScope = optFileScope opts , inputSpacesPerTab = if optPreserveTabs opts then Nothing else Just (optTabStop opts) } doc <- readInput inputParams >>= ( return . adjustMetadata (metadataFromFile <>) >=> return . adjustMetadata (<> optMetadata opts) >=> return . adjustMetadata (<> cslMetadata) >=> applyTransforms transforms >=> applyFilters scriptingEngine filterEnv filters [T.unpack format] >=> (if not (optSandbox opts) && (isJust (optExtractMedia opts) || format == "docx") -- for fallback pngs then fillMediaBag else return) >=> maybe return extractMedia (optExtractMedia opts) ) when (format == "docx" && not (optSandbox opts)) $ do createPngFallbacks (writerDpi writerOptions) output <- case writer of ByteStringWriter f | format == "chunkedhtml" -> ZipOutput <$> f writerOptions doc | otherwise -> BinaryOutput <$> f writerOptions doc TextWriter f -> case outputPdfProgram outputSettings of Just pdfProg -> do res <- makePDF pdfProg (optPdfEngineOpts opts) f writerOptions doc case res of Right pdf -> return $ BinaryOutput pdf Left err' -> throwError $ PandocPDFError $ TL.toStrict (TE.decodeUtf8With TE.lenientDecode err') Nothing -> do let ensureNl t | standalone = t | T.null t || T.last t /= '\n' = t <> T.singleton '\n' | otherwise = t textOutput <- ensureNl <$> f writerOptions doc if (optSelfContained opts || optEmbedResources opts) && htmlFormat format then TextOutput <$> makeSelfContained textOutput else return $ TextOutput textOutput reports <- getLog return (output, reports) data PandocOutput = TextOutput Text | BinaryOutput BL.ByteString | ZipOutput BL.ByteString deriving (Show) type Transform = Pandoc -> Pandoc -- | Configure the common state configureCommonState :: PandocMonad m => Maybe FilePath -> Opt -> m () configureCommonState datadir opts = do setUserDataDir datadir setTrace (optTrace opts) setVerbosity (optVerbosity opts) setResourcePath (optResourcePath opts) setInputFiles (fromMaybe ["-"] (optInputFiles opts)) setOutputFile (optOutputFile opts) setNoCheckCertificate (optNoCheckCertificate opts) mapM_ (uncurry setRequestHeader) (optRequestHeaders opts) case lookupMetaString "lang" (optMetadata opts) of "" -> setTranslations $ Lang "en" Nothing (Just "US") [] [] [] l -> case parseLang l of Left _ -> report $ InvalidLang l Right l' -> setTranslations l' -- | Retrieves the set of abbreviations to be used by pandoc. These currently -- only affect the Markdown reader. readAbbreviations :: PandocMonad m => Maybe FilePath -> m (Set.Set Text) readAbbreviations mbfilepath = Set.fromList . filter (not . T.null) . T.lines . UTF8.toText <$> case mbfilepath of Nothing -> readDataFile "abbreviations" Just f -> readFileStrict f createPngFallbacks :: (PandocMonad m, MonadIO m) => Int -> m () createPngFallbacks dpi = do -- create fallback pngs for svgs items <- mediaItems <$> getMediaBag forM_ items $ \(fp, mt, bs) -> case T.takeWhile (/=';') mt of "image/svg+xml" -> do res <- svgToPng dpi bs case res of Right bs' -> do let fp' = fp <> ".png" insertMedia fp' (Just "image/png") bs' Left e -> report $ CouldNotConvertImage (T.pack fp) (tshow e) _ -> return () getMetadataFromFiles :: PandocMonad m => Text -> ReaderOptions -> [FilePath] -> m Meta getMetadataFromFiles readerFormat readerOpts = \case [] -> return mempty paths -> mconcat <$> do -- If format is markdown or commonmark, use the enabled extensions, -- otherwise treat metadata as pandoc markdown (see #7926, #6832) let readerOptsMeta = if readerFormat `elem` ["markdown", "commonmark"] then readerOpts else readerOpts{ readerExtensions = pandocExtensions } forM paths $ \path -> do raw <- readMetadataFile path yamlToMeta readerOptsMeta (Just path) raw htmlFormat :: Text -> Bool htmlFormat = (`elem` ["html","html4","html5","s5","slidy", "slideous","dzslides","revealjs"]) isTextFormat :: Text -> Bool isTextFormat s = s `notElem` ["odt","docx","epub2","epub3","epub","pptx"] adjustMetadata :: (Meta -> Meta) -> Pandoc -> Pandoc adjustMetadata f (Pandoc meta bs) = Pandoc (f meta) bs -- Transformations of a Pandoc document post-parsing: applyTransforms :: Monad m => [Transform] -> Pandoc -> m Pandoc applyTransforms transforms d = return $ foldr ($) d transforms writeFnBinary :: FilePath -> BL.ByteString -> IO () writeFnBinary "-" = BL.putStr writeFnBinary f = BL.writeFile (UTF8.encodePath f) writerFn :: IO.Newline -> FilePath -> Text -> IO () writerFn eol "-" = UTF8.putStrWith eol writerFn eol f = UTF8.writeFileWith eol f pandoc-3.1.3/src/Text/Pandoc/App/0000755000000000000000000000000007346545000014612 5ustar0000000000000000pandoc-3.1.3/src/Text/Pandoc/App/CommandLineOptions.hs0000644000000000000000000012763007346545000020721 0ustar0000000000000000{-# LANGUAGE CPP #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TupleSections #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE FlexibleContexts #-} {- | Module : Text.Pandoc.App.CommandLineOptions Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Does a pandoc conversion based on command-line options. -} module Text.Pandoc.App.CommandLineOptions ( parseOptions , parseOptionsFromArgs , handleOptInfo , options , engines , setVariable ) where import Control.Monad.Trans import Control.Monad.State.Strict import Data.Containers.ListUtils (nubOrd) import Data.Aeson.Encode.Pretty (encodePretty', Config(..), keyOrder, defConfig, Indent(..), NumberFormat(..)) import Data.Bifunctor (second) import Data.Char (toLower) import Data.List (intercalate, sort, foldl') #ifdef _WINDOWS import Data.List (isPrefixOf) #endif import Data.Maybe (fromMaybe, isJust) import Data.Text (Text) import Safe (tailDef) import Skylighting (Syntax (..), defaultSyntaxMap) import System.Console.GetOpt import System.Environment (getArgs, getProgName) import System.Exit (exitSuccess) import System.FilePath import System.IO (stdout) import Text.DocTemplates (Context (..), ToContext (toVal), Val (..)) import Text.Pandoc import Text.Pandoc.Builder (setMeta) import Text.Pandoc.App.Opt (Opt (..), LineEnding (..), IpynbOutput (..), DefaultsState (..), applyDefaults, fullDefaultsPath, OptInfo(..)) import Text.Pandoc.Filter (Filter (..)) import Text.Pandoc.Highlighting (highlightingStyles, lookupHighlightingStyle) import Text.Pandoc.Scripting (ScriptingEngine (..), customTemplate) import Text.Pandoc.Shared (safeStrRead) import Text.Printf import qualified Control.Exception as E import Control.Monad.Except (ExceptT(..), runExceptT, throwError) import qualified Data.ByteString as BS import qualified Data.ByteString.Lazy as B import qualified Data.Map as M import qualified Data.Text as T import qualified Text.Pandoc.UTF8 as UTF8 parseOptions :: [OptDescr (Opt -> ExceptT OptInfo IO Opt)] -> Opt -> IO (Either OptInfo Opt) parseOptions options' defaults = do rawArgs <- map UTF8.decodeArg <$> liftIO getArgs prg <- liftIO getProgName parseOptionsFromArgs options' defaults prg rawArgs parseOptionsFromArgs :: [OptDescr (Opt -> ExceptT OptInfo IO Opt)] -> Opt -> String -> [String] -> IO (Either OptInfo Opt) parseOptionsFromArgs options' defaults prg rawArgs = do let (actions, args, unrecognizedOpts, errors) = getOpt' Permute options' (map UTF8.decodeArg rawArgs) let unknownOptionErrors = foldr (handleUnrecognizedOption . takeWhile (/= '=')) [] unrecognizedOpts let mbArgs = case args of [] -> Nothing xs -> Just xs let adjustOpts opts = opts{ optInputFiles = map normalizePath <$> (optInputFiles opts <> mbArgs) , optStandalone = -- certain other options imply standalone optStandalone opts || isJust (optTemplate opts) || optSelfContained opts || not (null (optIncludeInHeader opts)) || not (null (optIncludeBeforeBody opts)) || not (null (optIncludeAfterBody opts)) } if (null errors && null unknownOptionErrors) then -- thread option data structure through all supplied option actions runExceptT $ adjustOpts <$> (foldl' (>>=) (return defaults) actions) else return $ Left $ OptError $ PandocOptionError $ T.pack $ concat errors ++ unlines unknownOptionErrors ++ ("Try " ++ prg ++ " --help for more information.") -- | React to an 'OptInfo' by printing the requested information -- and exiting or (if there was a parsing error) raising an error. handleOptInfo :: ScriptingEngine -> OptInfo -> IO () handleOptInfo engine info = E.handle (handleError . Left) $ do case info of BashCompletion -> do datafiles <- getDataFileNames tpl <- runIOorExplode $ UTF8.toString <$> readDefaultDataFile "bash_completion.tpl" let optnames (Option shorts longs _ _) = map (\c -> ['-',c]) shorts ++ map ("--" ++) longs let allopts = unwords (concatMap optnames options) UTF8.hPutStrLn stdout $ T.pack $ printf tpl allopts (T.unpack $ T.unwords readersNames) (T.unpack $ T.unwords writersNames) (T.unpack $ T.unwords $ map fst highlightingStyles) (unwords datafiles) ListInputFormats -> mapM_ (UTF8.hPutStrLn stdout) readersNames ListOutputFormats -> mapM_ (UTF8.hPutStrLn stdout) writersNames ListExtensions mbfmt -> do let formatName = fromMaybe "markdown" mbfmt let allExts = getAllExtensions formatName if formatName `notElem` (map fst (readers :: [(Text, Reader PandocPure)]) ++ map fst (writers :: [(Text, Writer PandocPure)])) then E.throwIO $ PandocOptionError $ formatName <> " is not a recognized reader or writer format" else do let defExts = getDefaultExtensions formatName let showExt x = (if extensionEnabled x defExts then '+' else if extensionEnabled x allExts then '-' else ' ') : drop 4 (show x) mapM_ (UTF8.hPutStrLn stdout . T.pack . showExt) (extensionsToList allExts) ListHighlightLanguages -> do let langs = [ T.unpack (T.toLower (sShortname s)) | s <- M.elems defaultSyntaxMap , sShortname s `notElem` [T.pack "Alert", T.pack "Alert_indent"] ] mapM_ (UTF8.hPutStrLn stdout . T.pack) (sort langs) ListHighlightStyles -> do mapM_ (UTF8.hPutStrLn stdout . fst) highlightingStyles PrintDefaultTemplate mbout fmt -> do let write = maybe (UTF8.hPutStr stdout) (UTF8.writeFile) mbout templ <- runIO $ case splitExtension (T.unpack fmt) of (_, "") -> do -- built-in format setUserDataDir Nothing getDefaultTemplate fmt _ -> do -- format looks like a filepath => custom writer components <- engineLoadCustom engine (T.unpack fmt) case customTemplate components of Just t -> pure t Nothing -> E.throw $ PandocNoTemplateError fmt case templ of Right t | T.null t -> -- e.g. for docx, odt, json: E.throwIO $ PandocCouldNotFindDataFileError $ T.pack ("templates/default." ++ T.unpack fmt) | otherwise -> write t Left e -> E.throwIO e PrintDefaultDataFile mbout f -> do let write = maybe BS.putStr BS.writeFile mbout runIOorExplode $ readDefaultDataFile (T.unpack f) >>= liftIO . write PrintHighlightStyle mbout styleName -> do let write = maybe B.putStr B.writeFile mbout sty <- runIOorExplode $ lookupHighlightingStyle (T.unpack styleName) write $ encodePretty' defConfig{confIndent = Spaces 4 ,confCompare = keyOrder (map T.pack ["text-color" ,"background-color" ,"line-number-color" ,"line-number-background-color" ,"bold" ,"italic" ,"underline" ,"text-styles"]) ,confNumFormat = Generic ,confTrailingNewline = True} sty VersionInfo -> do prg <- getProgName defaultDatadir <- defaultUserDataDir UTF8.hPutStrLn stdout $ T.pack $ prg ++ " " ++ T.unpack pandocVersionText ++ compileInfo ++ "\nUser data directory: " ++ defaultDatadir ++ ('\n':copyrightMessage) Help -> do prg <- getProgName UTF8.hPutStr stdout (T.pack $ usageMessage prg options) OptError e -> E.throwIO e exitSuccess -- | Supported LaTeX engines; the first item is used as default engine -- when going through LaTeX. latexEngines :: [String] latexEngines = ["pdflatex", "lualatex", "xelatex", "latexmk", "tectonic"] -- | Supported HTML PDF engines; the first item is used as default -- engine when going through HTML. htmlEngines :: [String] htmlEngines = ["wkhtmltopdf", "weasyprint", "pagedjs-cli", "prince"] engines :: [(Text, String)] engines = map ("html",) htmlEngines ++ map ("html5",) htmlEngines ++ map ("latex",) latexEngines ++ map ("beamer",) latexEngines ++ [ ("ms", "pdfroff") , ("typst", "typst") , ("context", "context") ] pdfEngines :: [String] pdfEngines = nubOrd $ map snd engines -- | A list of functions, each transforming the options data structure -- in response to a command-line option. options :: [OptDescr (Opt -> ExceptT OptInfo IO Opt)] options = [ Option "fr" ["from","read"] (ReqArg (\arg opt -> return opt { optFrom = Just $ T.pack arg }) "FORMAT") "" , Option "tw" ["to","write"] (ReqArg (\arg opt -> return opt { optTo = Just $ T.pack arg }) "FORMAT") "" , Option "o" ["output"] (ReqArg (\arg opt -> return opt { optOutputFile = Just (normalizePath arg) }) "FILE") "" -- "Name of output file" , Option "" ["data-dir"] (ReqArg (\arg opt -> return opt { optDataDir = Just (normalizePath arg) }) "DIRECTORY") -- "Directory containing pandoc data files." "" , Option "M" ["metadata"] (ReqArg (\arg opt -> do let (key, val) = splitField arg return opt{ optMetadata = addMeta key val $ optMetadata opt }) "KEY[:VALUE]") "" , Option "" ["metadata-file"] (ReqArg (\arg opt -> return opt{ optMetadataFiles = optMetadataFiles opt ++ [normalizePath arg] }) "FILE") "" , Option "d" ["defaults"] (ReqArg (\arg opt -> do res <- liftIO $ runIO $ do let defsState = DefaultsState { curDefaults = Nothing, inheritanceGraph = [] } fp <- fullDefaultsPath (optDataDir opt) arg evalStateT (applyDefaults opt fp) defsState case res of Left e -> optError e Right x -> return x ) "FILE") "" , Option "" ["file-scope"] (NoArg (\opt -> return opt { optFileScope = True })) "" -- "Parse input files before combining" , Option "" ["sandbox"] (NoArg (\opt -> return opt { optSandbox = True })) "" , Option "s" ["standalone"] (NoArg (\opt -> return opt { optStandalone = True })) "" -- "Include needed header and footer on output" , Option "" ["template"] (ReqArg (\arg opt -> return opt{ optTemplate = Just (normalizePath arg) }) "FILE") "" -- "Use custom template" , Option "V" ["variable"] (ReqArg (\arg opt -> do let (key, val) = splitField arg return opt{ optVariables = setVariable (T.pack key) (T.pack val) $ optVariables opt }) "KEY[:VALUE]") "" , Option "" ["wrap"] (ReqArg (\arg opt -> case arg of "auto" -> return opt{ optWrap = WrapAuto } "none" -> return opt{ optWrap = WrapNone } "preserve" -> return opt{ optWrap = WrapPreserve } _ -> optError $ PandocOptionError "--wrap must be auto, none, or preserve") "auto|none|preserve") "" -- "Option for wrapping text in output" , Option "" ["ascii"] (NoArg (\opt -> return opt { optAscii = True })) "" -- "Prefer ASCII output" , Option "" ["toc", "table-of-contents"] (NoArg (\opt -> return opt { optTableOfContents = True })) "" -- "Include table of contents" , Option "" ["toc-depth"] (ReqArg (\arg opt -> case safeStrRead arg of Just t | t >= 1 && t <= 6 -> return opt { optTOCDepth = t } _ -> optError $ PandocOptionError "TOC level must be a number 1-6") "NUMBER") "" -- "Number of levels to include in TOC" , Option "N" ["number-sections"] (NoArg (\opt -> return opt { optNumberSections = True })) "" -- "Number sections" , Option "" ["number-offset"] (ReqArg (\arg opt -> case safeStrRead ("[" <> arg <> "]") of Just ns -> return opt { optNumberOffset = ns, optNumberSections = True } _ -> optError $ PandocOptionError "could not parse number-offset") "NUMBERS") "" -- "Starting number for sections, subsections, etc." , Option "" ["top-level-division"] (ReqArg (\arg opt -> case arg of "section" -> return opt{ optTopLevelDivision = TopLevelSection } "chapter" -> return opt{ optTopLevelDivision = TopLevelChapter } "part" -> return opt{ optTopLevelDivision = TopLevelPart } "default" -> return opt{ optTopLevelDivision = TopLevelDefault } _ -> optError $ PandocOptionError $ "Top-level division must be " <> "section, chapter, part, or default" ) "section|chapter|part") "" -- "Use top-level division type in LaTeX, ConTeXt, DocBook" , Option "" ["extract-media"] (ReqArg (\arg opt -> return opt { optExtractMedia = Just (normalizePath arg) }) "PATH") "" -- "Directory to which to extract embedded media" , Option "" ["resource-path"] (ReqArg (\arg opt -> return opt { optResourcePath = splitSearchPath arg ++ optResourcePath opt }) "SEARCHPATH") "" -- "Paths to search for images and other resources" , Option "H" ["include-in-header"] (ReqArg (\arg opt -> return opt{ optIncludeInHeader = optIncludeInHeader opt ++ [normalizePath arg] }) "FILE") "" -- "File to include at end of header (implies -s)" , Option "B" ["include-before-body"] (ReqArg (\arg opt -> return opt{ optIncludeBeforeBody = optIncludeBeforeBody opt ++ [normalizePath arg] }) "FILE") "" -- "File to include before document body" , Option "A" ["include-after-body"] (ReqArg (\arg opt -> return opt{ optIncludeAfterBody = optIncludeAfterBody opt ++ [normalizePath arg] }) "FILE") "" -- "File to include after document body" , Option "" ["no-highlight"] (NoArg (\opt -> return opt { optHighlightStyle = Nothing })) "" -- "Don't highlight source code" , Option "" ["highlight-style"] (ReqArg (\arg opt -> return opt{ optHighlightStyle = Just $ T.pack $ normalizePath arg }) "STYLE|FILE") "" -- "Style for highlighted code" , Option "" ["syntax-definition"] (ReqArg (\arg opt -> return opt{ optSyntaxDefinitions = normalizePath arg : optSyntaxDefinitions opt }) "FILE") "" -- "Syntax definition (xml) file" , Option "" ["dpi"] (ReqArg (\arg opt -> case safeStrRead arg of Just t | t > 0 -> return opt { optDpi = t } _ -> optError $ PandocOptionError "dpi must be a number greater than 0") "NUMBER") "" -- "Dpi (default 96)" , Option "" ["eol"] (ReqArg (\arg opt -> case toLower <$> arg of "crlf" -> return opt { optEol = CRLF } "lf" -> return opt { optEol = LF } "native" -> return opt { optEol = Native } -- mac-syntax (cr) is not supported in ghc-base. _ -> optError $ PandocOptionError "--eol must be crlf, lf, or native") "crlf|lf|native") "" -- "EOL (default OS-dependent)" , Option "" ["columns"] (ReqArg (\arg opt -> case safeStrRead arg of Just t | t > 0 -> return opt { optColumns = t } _ -> optError $ PandocOptionError "columns must be a number greater than 0") "NUMBER") "" -- "Length of line in characters" , Option "p" ["preserve-tabs"] (NoArg (\opt -> return opt { optPreserveTabs = True })) "" -- "Preserve tabs instead of converting to spaces" , Option "" ["tab-stop"] (ReqArg (\arg opt -> case safeStrRead arg of Just t | t > 0 -> return opt { optTabStop = t } _ -> optError $ PandocOptionError "tab-stop must be a number greater than 0") "NUMBER") "" -- "Tab stop (default 4)" , Option "" ["pdf-engine"] (ReqArg (\arg opt -> do let b = takeBaseName arg if b `elem` pdfEngines then return opt { optPdfEngine = Just arg } else optError $ PandocOptionError $ T.pack $ "pdf-engine must be one of " ++ intercalate ", " pdfEngines) "PROGRAM") "" -- "Name of program to use in generating PDF" , Option "" ["pdf-engine-opt"] (ReqArg (\arg opt -> do let oldArgs = optPdfEngineOpts opt return opt { optPdfEngineOpts = oldArgs ++ [arg]}) "STRING") "" -- "Flags to pass to the PDF-engine, all instances of this option are accumulated and used" , Option "" ["reference-doc"] (ReqArg (\arg opt -> return opt { optReferenceDoc = Just $ normalizePath arg }) "FILE") "" -- "Path of custom reference doc" , Option "" ["self-contained"] (NoArg (\opt -> do deprecatedOption "--self-contained" "use --embed-resources --standalone" return opt { optSelfContained = True })) "" -- "Make slide shows include all the needed js and css (deprecated)" , Option "" ["embed-resources"] (NoArg (\opt -> return opt { optEmbedResources = True })) "" -- "Make slide shows include all the needed js and css" , Option "" ["request-header"] (ReqArg (\arg opt -> do let (key, val) = splitField arg return opt{ optRequestHeaders = (T.pack key, T.pack val) : optRequestHeaders opt }) "NAME:VALUE") "" , Option "" ["no-check-certificate"] (NoArg (\opt -> return opt { optNoCheckCertificate = True })) "" -- "Disable certificate validation" , Option "" ["abbreviations"] (ReqArg (\arg opt -> return opt { optAbbreviations = Just $ normalizePath arg }) "FILE") "" -- "Specify file for custom abbreviations" , Option "" ["indented-code-classes"] (ReqArg (\arg opt -> return opt { optIndentedCodeClasses = T.words $ T.map (\c -> if c == ',' then ' ' else c) $ T.pack arg }) "STRING") "" -- "Classes (whitespace- or comma-separated) to use for indented code-blocks" , Option "" ["default-image-extension"] (ReqArg (\arg opt -> return opt { optDefaultImageExtension = T.pack arg }) "extension") "" -- "Default extension for extensionless images" , Option "F" ["filter"] (ReqArg (\arg opt -> return opt { optFilters = optFilters opt ++ [JSONFilter (normalizePath arg)] }) "PROGRAM") "" -- "External JSON filter" , Option "L" ["lua-filter"] (ReqArg (\arg opt -> return opt { optFilters = optFilters opt ++ [LuaFilter (normalizePath arg)] }) "SCRIPTPATH") "" -- "Lua filter" , Option "" ["shift-heading-level-by"] (ReqArg (\arg opt -> case safeStrRead arg of Just t -> return opt{ optShiftHeadingLevelBy = t } _ -> optError $ PandocOptionError "shift-heading-level-by takes an integer argument") "NUMBER") "" -- "Shift heading level" , Option "" ["base-header-level"] (ReqArg (\arg opt -> do deprecatedOption "--base-header-level" "Use --shift-heading-level-by instead." case safeStrRead arg of Just t | t > 0 && t < 6 -> return opt{ optShiftHeadingLevelBy = t - 1 } _ -> optError $ PandocOptionError "base-header-level must be 1-5") "NUMBER") "" -- "Headers base level" , Option "" ["track-changes"] (ReqArg (\arg opt -> do action <- case arg of "accept" -> return AcceptChanges "reject" -> return RejectChanges "all" -> return AllChanges _ -> optError $ PandocOptionError $ T.pack ("Unknown option for track-changes: " ++ arg) return opt { optTrackChanges = action }) "accept|reject|all") "" -- "Accepting or reject MS Word track-changes."" , Option "" ["strip-comments"] (NoArg (\opt -> return opt { optStripComments = True })) "" -- "Strip HTML comments" , Option "" ["reference-links"] (NoArg (\opt -> return opt { optReferenceLinks = True } )) "" -- "Use reference links in parsing HTML" , Option "" ["reference-location"] (ReqArg (\arg opt -> do action <- case arg of "block" -> return EndOfBlock "section" -> return EndOfSection "document" -> return EndOfDocument _ -> optError $ PandocOptionError $ T.pack ("Unknown option for reference-location: " ++ arg) return opt { optReferenceLocation = action }) "block|section|document") "" -- "Accepting or reject MS Word track-changes."" , Option "" ["markdown-headings"] (ReqArg (\arg opt -> do headingFormat <- case arg of "setext" -> pure True "atx" -> pure False _ -> optError $ PandocOptionError $ T.pack ("Unknown markdown heading format: " ++ arg ++ ". Expecting atx or setext") pure opt { optSetextHeaders = headingFormat } ) "setext|atx") "" , Option "" ["list-tables"] (NoArg (\opt -> do return opt { optListTables = True } )) "" -- "Use list tables for RST" , Option "" ["listings"] (NoArg (\opt -> return opt { optListings = True })) "" -- "Use listings package for LaTeX code blocks" , Option "i" ["incremental"] (NoArg (\opt -> return opt { optIncremental = True })) "" -- "Make list items display incrementally in Slidy/Slideous/S5" , Option "" ["slide-level"] (ReqArg (\arg opt -> case safeStrRead arg of Just t | t >= 0 && t <= 6 -> return opt { optSlideLevel = Just t } _ -> optError $ PandocOptionError "slide level must be a number between 0 and 6") "NUMBER") "" -- "Force header level for slides" , Option "" ["section-divs"] (NoArg (\opt -> return opt { optSectionDivs = True })) "" -- "Put sections in div tags in HTML" , Option "" ["html-q-tags"] (NoArg (\opt -> return opt { optHtmlQTags = True })) "" -- "Use tags for quotes in HTML" , Option "" ["email-obfuscation"] (ReqArg (\arg opt -> do method <- case arg of "references" -> return ReferenceObfuscation "javascript" -> return JavascriptObfuscation "none" -> return NoObfuscation _ -> optError $ PandocOptionError $ T.pack ("Unknown obfuscation method: " ++ arg) return opt { optEmailObfuscation = method }) "none|javascript|references") "" -- "Method for obfuscating email in HTML" , Option "" ["id-prefix"] (ReqArg (\arg opt -> return opt { optIdentifierPrefix = T.pack arg }) "STRING") "" -- "Prefix to add to automatically generated HTML identifiers" , Option "T" ["title-prefix"] (ReqArg (\arg opt -> return opt { optVariables = setVariable "title-prefix" (T.pack arg) $ optVariables opt, optStandalone = True }) "STRING") "" -- "String to prefix to HTML window title" , Option "c" ["css"] (ReqArg (\arg opt -> return opt{ optCss = optCss opt ++ [arg] }) -- add new link to end, so it is included in proper order "URL") "" -- "Link to CSS style sheet" , Option "" ["epub-subdirectory"] (ReqArg (\arg opt -> return opt { optEpubSubdirectory = arg }) "DIRNAME") "" -- "Name of subdirectory for epub content in OCF container" , Option "" ["epub-cover-image"] (ReqArg (\arg opt -> return opt { optVariables = setVariable "epub-cover-image" (T.pack $ normalizePath arg) $ optVariables opt }) "FILE") "" -- "Path of epub cover image" , Option "" ["epub-title-page"] (ReqArg (\arg opt -> case arg of "true" -> return opt{ optEpubTitlePage = True } "false" -> return opt{ optEpubTitlePage = False } _ -> optError $ PandocOptionError $ "Argument to --epub-title-page must be " <> "true or false" ) "true|false") "" , Option "" ["epub-metadata"] (ReqArg (\arg opt -> return opt { optEpubMetadata = Just $ normalizePath arg }) "FILE") "" -- "Path of epub metadata file" , Option "" ["epub-embed-font"] (ReqArg (\arg opt -> return opt{ optEpubFonts = normalizePath arg : optEpubFonts opt }) "FILE") "" -- "Directory of fonts to embed" , Option "" ["split-level"] (ReqArg (\arg opt -> case safeStrRead arg of Just t | t >= 1 && t <= 6 -> return opt { optSplitLevel = t } _ -> optError $ PandocOptionError "split level must be a number between 1 and 6") "NUMBER") "" -- "Header level at which to split documents in chunked HTML or EPUB" , Option "" ["chunk-template"] (ReqArg (\arg opt -> return opt{ optChunkTemplate = Just (T.pack arg) }) "PATHTEMPLATE") "" -- "Template for file paths in chunkedhtml" , Option "" ["epub-chapter-level"] (ReqArg (\arg opt -> do deprecatedOption "--epub-chapter-level" "use --split-level" case safeStrRead arg of Just t | t >= 1 && t <= 6 -> return opt { optSplitLevel = t } _ -> optError $ PandocOptionError "split level must be a number between 1 and 6") "NUMBER") "" -- "Header level at which to split documents in chunked HTML or EPUB" , Option "" ["ipynb-output"] (ReqArg (\arg opt -> case arg of "all" -> return opt{ optIpynbOutput = IpynbOutputAll } "best" -> return opt{ optIpynbOutput = IpynbOutputBest } "none" -> return opt{ optIpynbOutput = IpynbOutputNone } _ -> optError $ PandocOptionError "ipynb-output must be all, none, or best") "all|none|best") "" -- "Starting number for sections, subsections, etc." , Option "C" ["citeproc"] (NoArg (\opt -> return opt { optFilters = optFilters opt ++ [CiteprocFilter] })) "" -- "Process citations" , Option "" ["bibliography"] (ReqArg (\arg opt -> return opt{ optMetadata = addMeta "bibliography" (normalizePath arg) $ optMetadata opt }) "FILE") "" , Option "" ["csl"] (ReqArg (\arg opt -> do case lookupMeta (T.pack "csl") $ optMetadata opt of Just _ -> optError $ PandocOptionError "Only one CSL file can be specified." Nothing -> return opt{ optMetadata = addMeta "csl" (normalizePath arg) $ optMetadata opt }) "FILE") "" , Option "" ["citation-abbreviations"] (ReqArg (\arg opt -> return opt{ optMetadata = addMeta "citation-abbreviations" (normalizePath arg) $ optMetadata opt }) "FILE") "" , Option "" ["natbib"] (NoArg (\opt -> return opt { optCiteMethod = Natbib })) "" -- "Use natbib cite commands in LaTeX output" , Option "" ["biblatex"] (NoArg (\opt -> return opt { optCiteMethod = Biblatex })) "" -- "Use biblatex cite commands in LaTeX output" , Option "" ["mathml"] (NoArg (\opt -> return opt { optHTMLMathMethod = MathML })) "" -- "Use mathml for HTML math" , Option "" ["webtex"] (OptArg (\arg opt -> do let url' = fromMaybe "https://latex.codecogs.com/png.latex?" arg return opt { optHTMLMathMethod = WebTeX $ T.pack url' }) "URL") "" -- "Use web service for HTML math" , Option "" ["mathjax"] (OptArg (\arg opt -> do let url' = maybe defaultMathJaxURL T.pack arg return opt { optHTMLMathMethod = MathJax url'}) "URL") "" -- "Use MathJax for HTML math" , Option "" ["katex"] (OptArg (\arg opt -> return opt { optHTMLMathMethod = KaTeX $ maybe defaultKaTeXURL T.pack arg }) "URL") "" -- Use KaTeX for HTML Math , Option "" ["gladtex"] (NoArg (\opt -> return opt { optHTMLMathMethod = GladTeX })) "" -- "Use gladtex for HTML math" , Option "" ["trace"] (NoArg (\opt -> return opt { optTrace = True })) "" -- "Turn on diagnostic tracing in readers." , Option "" ["dump-args"] (NoArg (\opt -> return opt { optDumpArgs = True })) "" -- "Print output filename and arguments to stdout." , Option "" ["ignore-args"] (NoArg (\opt -> return opt { optIgnoreArgs = True })) "" -- "Ignore command-line arguments." , Option "" ["verbose"] (NoArg (\opt -> return opt { optVerbosity = INFO })) "" -- "Verbose diagnostic output." , Option "" ["quiet"] (NoArg (\opt -> return opt { optVerbosity = ERROR })) "" -- "Suppress warnings." , Option "" ["fail-if-warnings"] (NoArg (\opt -> return opt { optFailIfWarnings = True })) "" -- "Exit with error status if there were warnings." , Option "" ["log"] (ReqArg (\arg opt -> return opt{ optLogFile = Just $ normalizePath arg }) "FILE") "" -- "Log messages in JSON format to this file." , Option "" ["bash-completion"] (NoArg (\_ -> optInfo BashCompletion)) "" -- "Print bash completion script" , Option "" ["list-input-formats"] (NoArg (\_ -> optInfo ListInputFormats)) "" , Option "" ["list-output-formats"] (NoArg (\_ -> optInfo ListOutputFormats)) "" , Option "" ["list-extensions"] (OptArg (\arg _ -> optInfo $ ListExtensions $ T.pack <$> arg) "FORMAT") "" , Option "" ["list-highlight-languages"] (NoArg (\_ -> optInfo ListHighlightLanguages)) "" , Option "" ["list-highlight-styles"] (NoArg (\_ -> optInfo ListHighlightStyles)) "" , Option "D" ["print-default-template"] (ReqArg (\arg opts -> optInfo $ PrintDefaultTemplate (optOutputFile opts) (T.pack arg)) "FORMAT") "" -- "Print default template for FORMAT" , Option "" ["print-default-data-file"] (ReqArg (\arg opts -> optInfo $ PrintDefaultDataFile (optOutputFile opts) (T.pack arg)) "FILE") "" -- "Print default data file" , Option "" ["print-highlight-style"] (ReqArg (\arg opts -> optInfo $ PrintHighlightStyle (optOutputFile opts) (T.pack arg)) "STYLE|FILE") "" -- "Print default template for FORMAT" , Option "v" ["version"] (NoArg (\_ -> optInfo VersionInfo)) "" -- "Print version" , Option "h" ["help"] (NoArg (\_ -> optInfo Help)) "" -- "Show help" ] optError :: PandocError -> ExceptT OptInfo IO a optError = throwError . OptError optInfo :: OptInfo -> ExceptT OptInfo IO a optInfo = throwError -- Returns usage message usageMessage :: String -> [OptDescr (Opt -> ExceptT OptInfo IO Opt)] -> String usageMessage programName = usageInfo (programName ++ " [OPTIONS] [FILES]") copyrightMessage :: String copyrightMessage = intercalate "\n" [ "Copyright (C) 2006-2023 John MacFarlane. Web: https://pandoc.org", "This is free software; see the source for copying conditions. There is no", "warranty, not even for merchantability or fitness for a particular purpose." ] compileInfo :: String compileInfo = "\nCompiled with pandoc-types " ++ VERSION_pandoc_types ++ ", texmath " ++ VERSION_texmath ++ ", skylighting " ++ VERSION_skylighting ++ ",\nciteproc " ++ VERSION_citeproc ++ ", ipynb " ++ VERSION_ipynb handleUnrecognizedOption :: String -> [String] -> [String] handleUnrecognizedOption "--smart" = (("--smart/-S has been removed. Use +smart or -smart extension instead.\n" ++ "For example: pandoc -f markdown+smart -t markdown-smart.") :) handleUnrecognizedOption "--normalize" = ("--normalize has been removed. Normalization is now automatic." :) handleUnrecognizedOption "-S" = handleUnrecognizedOption "--smart" handleUnrecognizedOption "--old-dashes" = ("--old-dashes has been removed. Use +old_dashes extension instead." :) handleUnrecognizedOption "--no-wrap" = ("--no-wrap has been removed. Use --wrap=none instead." :) handleUnrecognizedOption "--latex-engine" = ("--latex-engine has been removed. Use --pdf-engine instead." :) handleUnrecognizedOption "--latex-engine-opt" = ("--latex-engine-opt has been removed. Use --pdf-engine-opt instead." :) handleUnrecognizedOption "--chapters" = ("--chapters has been removed. Use --top-level-division=chapter instead." :) handleUnrecognizedOption "--reference-docx" = ("--reference-docx has been removed. Use --reference-doc instead." :) handleUnrecognizedOption "--reference-odt" = ("--reference-odt has been removed. Use --reference-doc instead." :) handleUnrecognizedOption "--parse-raw" = ("--parse-raw/-R has been removed. Use +raw_html or +raw_tex extension.\n" :) handleUnrecognizedOption "--epub-stylesheet" = ("--epub-stylesheet has been removed. Use --css instead.\n" :) handleUnrecognizedOption "-R" = handleUnrecognizedOption "--parse-raw" handleUnrecognizedOption x = (("Unknown option " ++ x ++ ".") :) readersNames :: [Text] readersNames = sort (map fst (readers :: [(Text, Reader PandocIO)])) writersNames :: [Text] writersNames = sort ("pdf" : map fst (writers :: [(Text, Writer PandocIO)])) splitField :: String -> (String, String) splitField = second (tailDef "true") . break (\c -> c == ':' || c == '=') deprecatedOption :: String -> String -> ExceptT OptInfo IO () deprecatedOption o msg = do res <- liftIO $ runIO (report $ Deprecated (T.pack o) (T.pack msg)) case res of Right () -> return () Left e -> optError e -- | Set text value in text context. Create list if it has a value already, -- or add to a list value. setVariable :: Text -> Text -> Context Text -> Context Text setVariable key val (Context ctx) = Context $ M.alter go key ctx where go Nothing = Just $ toVal val go (Just (ListVal xs)) = Just $ ListVal $ xs ++ [toVal val] go (Just x) = Just $ ListVal [x, toVal val] addMeta :: String -> String -> Meta -> Meta addMeta k v meta = case lookupMeta k' meta of Nothing -> setMeta k' v' meta Just (MetaList xs) -> setMeta k' (MetaList (xs ++ [v'])) meta Just x -> setMeta k' (MetaList [x, v']) meta where v' = readMetaValue v k' = T.pack k readMetaValue :: String -> MetaValue readMetaValue s | s == "true" = MetaBool True | s == "True" = MetaBool True | s == "TRUE" = MetaBool True | s == "false" = MetaBool False | s == "False" = MetaBool False | s == "FALSE" = MetaBool False | otherwise = MetaString $ T.pack s -- On Windows with ghc 8.6+, we need to rewrite paths -- beginning with \\ to \\?\UNC\. -- See #5127. normalizePath :: FilePath -> FilePath #ifdef _WINDOWS normalizePath fp = if "\\\\" `isPrefixOf` fp && not ("\\\\?\\" `isPrefixOf` fp) then "\\\\?\\UNC\\" ++ drop 2 fp else fp #else normalizePath = id #endif pandoc-3.1.3/src/Text/Pandoc/App/Input.hs0000644000000000000000000001612707346545000016254 0ustar0000000000000000{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TupleSections #-} {- | Module : Text.Pandoc.App.Input Copyright : © 2006-2023 John MacFarlane License : GPL-2.0-or-later Maintainer : John MacFarlane Read from the file system into a pandoc document. -} module Text.Pandoc.App.Input ( InputParameters (..) , readInput ) where import Control.Monad ((>=>)) import Control.Monad.Except (throwError, catchError) import Data.Text (Text) import Network.URI (URI (..), parseURI, unEscapeString) import Text.Pandoc.Class ( PandocMonad, openURL , readFileStrict, readStdinStrict, report) import Text.Pandoc.Definition (Pandoc (..), Attr, Block (..), Inline (..)) import Text.Pandoc.Error (PandocError (..)) import Text.Pandoc.Logging (LogMessage (..)) import Text.Pandoc.MIME (getCharset, MimeType) import Text.Pandoc.Options (Extensions, ReaderOptions (..)) import Text.Pandoc.Readers (Reader (..)) import Text.Pandoc.Shared (tabFilter, textToIdentifier, tshow) import Text.Pandoc.URI (uriPathToPath) import Text.Pandoc.Walk (walk) import qualified Data.ByteString as BS import qualified Data.ByteString.Char8 as B8 import qualified Data.ByteString.Lazy as BL import qualified Data.Text as T import qualified Data.Text.Encoding as TSE import qualified Data.Text.Encoding.Error as TSE -- | Settings specifying how and which input should be processed. data InputParameters m = InputParameters { inputReader :: Reader m , inputReaderName :: Text , inputReaderOptions :: ReaderOptions , inputSources :: [FilePath] , inputSpacesPerTab :: Maybe Int , inputFileScope :: Bool } -- | Read all input into a pandoc document. readInput :: PandocMonad m => InputParameters m -> m Pandoc readInput params = do let sources = inputSources params let readerName = inputReaderName params let readerOpts = inputReaderOptions params let convertTabs :: Text -> Text convertTabs = tabFilter $ case inputSpacesPerTab params of Nothing -> 0 Just ts -> if readerName `elem` ["t2t", "man", "tsv"] then 0 else ts inputs <- readSources sources case inputReader params of TextReader r | readerName == "json" -> mconcat <$> mapM (inputToText convertTabs >=> r readerOpts . (:[])) inputs | inputFileScope params -> mconcat <$> mapM (\source -> do (fp, txt) <- inputToText convertTabs source adjustLinksAndIds (readerExtensions readerOpts) (T.pack fp) (map (T.pack . fst) inputs) <$> r readerOpts [(fp, txt)]) inputs | otherwise -> mapM (inputToText convertTabs) inputs >>= r readerOpts ByteStringReader r -> mconcat <$> mapM (r readerOpts . inputToLazyByteString) inputs readSources :: PandocMonad m => [FilePath] -> m [(FilePath, (BS.ByteString, Maybe MimeType))] readSources srcs = mapM (\fp -> do t <- readSource fp return (if fp == "-" then "" else fp, t)) srcs -- | Read input from a resource, i.e., either a file, a URL, or stdin -- (@-@). readSource :: PandocMonad m => FilePath -> m (BS.ByteString, Maybe MimeType) readSource "-" = (,Nothing) <$> readStdinStrict readSource src = case parseURI src of Just u | uriScheme u `elem` ["http:","https:"] -> openURL (T.pack src) | uriScheme u == "file:" -> (,Nothing) <$> readFileStrict (uriPathToPath $ T.pack $ uriPath u) _ -> (,Nothing) <$> readFileStrict src utf8ToText :: PandocMonad m => FilePath -> BS.ByteString -> m Text utf8ToText fp bs = case TSE.decodeUtf8' . dropBOM $ bs of Left (TSE.DecodeError _ (Just w)) -> case BS.elemIndex w bs of Just offset -> throwError $ PandocUTF8DecodingError (T.pack fp) offset w Nothing -> throwError $ PandocUTF8DecodingError (T.pack fp) 0 w Left e -> throwError $ PandocAppError (tshow e) Right t -> return t where dropBOM bs' = if "\xEF\xBB\xBF" `BS.isPrefixOf` bs' then BS.drop 3 bs' else bs' inputToText :: PandocMonad m => (Text -> Text) -> (FilePath, (BS.ByteString, Maybe MimeType)) -> m (FilePath, Text) inputToText convTabs (fp, (bs,mt)) = (fp,) . convTabs . T.filter (/='\r') <$> case mt >>= getCharset of Just "UTF-8" -> utf8ToText fp bs Just "ISO-8859-1" -> return $ T.pack $ B8.unpack bs Just charset -> throwError $ PandocUnsupportedCharsetError charset Nothing -> catchError (utf8ToText fp bs) (\case PandocUTF8DecodingError{} -> do report $ NotUTF8Encoded (if null fp then "input" else fp) return $ T.pack $ B8.unpack bs e -> throwError e) inputToLazyByteString :: (FilePath, (BS.ByteString, Maybe MimeType)) -> BL.ByteString inputToLazyByteString (_, (bs,_)) = BL.fromStrict bs adjustLinksAndIds :: Extensions -> Text -> [Text] -> Pandoc -> Pandoc adjustLinksAndIds exts thisfile allfiles | length allfiles > 1 = addDiv . walk fixInline . walk fixBlock | otherwise = id where toIdent :: Text -> Text toIdent = textToIdentifier exts . T.intercalate "__" . T.split (\c -> c == '/' || c == '\\') addDiv :: Pandoc -> Pandoc addDiv (Pandoc m bs) | T.null thisfile = Pandoc m bs | otherwise = Pandoc m [Div (toIdent thisfile,[],[]) bs] fixBlock :: Block -> Block fixBlock (CodeBlock attr t) = CodeBlock (fixAttrs attr) t fixBlock (Header lev attr ils) = Header lev (fixAttrs attr) ils fixBlock (Table attr cap cols th tbs tf) = Table (fixAttrs attr) cap cols th tbs tf fixBlock (Div attr bs) = Div (fixAttrs attr) bs fixBlock x = x -- add thisfile as prefix of identifier fixAttrs :: Attr -> Attr fixAttrs (i,cs,kvs) | T.null i = (i,cs,kvs) | otherwise = (T.intercalate "__" (filter (not . T.null) [toIdent thisfile, i]), cs, kvs) -- if URL begins with file from allfiles, convert to -- an internal link with the appropriate identifier fixURL :: Text -> Text fixURL u = let (a,b) = T.break (== '#') $ T.pack . unEscapeString . T.unpack $ u filepart = if T.null a then toIdent thisfile else toIdent a fragpart = T.dropWhile (== '#') b in if T.null a || a `elem` allfiles then "#" <> T.intercalate "__" (filter (not . T.null) [filepart, fragpart]) else u fixInline :: Inline -> Inline fixInline (Code attr t) = Code (fixAttrs attr) t fixInline (Link attr ils (url,tit)) = Link (fixAttrs attr) ils (fixURL url,tit) fixInline (Image attr ils (url,tit)) = Image (fixAttrs attr) ils (fixURL url,tit) fixInline (Span attr ils) = Span (fixAttrs attr) ils fixInline x = x pandoc-3.1.3/src/Text/Pandoc/App/Opt.hs0000644000000000000000000011341007346545000015710 0ustar0000000000000000{-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE CPP #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE FlexibleContexts #-} {- | Module : Text.Pandoc.App.Opt Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Options for pandoc when used as an app. -} module Text.Pandoc.App.Opt ( Opt(..) , OptInfo(..) , LineEnding (..) , IpynbOutput (..) , DefaultsState (..) , defaultOpts , applyDefaults , fullDefaultsPath ) where import Control.Monad.Except (throwError) import Control.Monad.Trans (MonadIO, liftIO) import Control.Monad ((>=>), foldM) import Control.Monad.State.Strict (StateT, modify, gets) import System.FilePath ( addExtension, (), takeExtension, takeDirectory ) import System.Directory ( canonicalizePath ) import Data.Char (toLower) import Data.Maybe (fromMaybe) import GHC.Generics hiding (Meta) import Text.Pandoc.Filter (Filter (..)) import Text.Pandoc.Logging (Verbosity (WARNING), LogMessage(..)) import Text.Pandoc.Options (TopLevelDivision (TopLevelDefault), TrackChanges (AcceptChanges), WrapOption (WrapAuto), HTMLMathMethod (PlainMath), ReferenceLocation (EndOfDocument), ObfuscationMethod (NoObfuscation), CiteMethod (Citeproc)) import Text.Pandoc.Class (readFileStrict, fileExists, setVerbosity, report, PandocMonad(lookupEnv), getUserDataDir) import Text.Pandoc.Error (PandocError (PandocParseError, PandocSomeError)) import Data.Containers.ListUtils (nubOrd) import Text.Pandoc.Data (defaultUserDataDir) import qualified Text.Pandoc.Parsing as P import Text.Pandoc.Readers.Metadata (yamlMap) import Text.Pandoc.Class.PandocPure import Text.DocTemplates (Context(..)) import Data.Text (Text, unpack) import Data.Default (def) import qualified Data.Text as T import qualified Data.Map as M import qualified Data.ByteString.Char8 as B8 import Text.Pandoc.Definition (Meta(..), MetaValue(..)) import Data.Aeson (defaultOptions, Options(..), Result(..), genericToJSON, fromJSON, camelTo2) import Data.Aeson.TH (deriveJSON) import Control.Applicative ((<|>)) import Data.Yaml -- | The type of line-endings to be used when writing plain-text. data LineEnding = LF | CRLF | Native deriving (Show, Generic) -- see https://github.com/jgm/pandoc/pull/4083 -- using generic deriving caused long compilation times $(deriveJSON defaultOptions{ constructorTagModifier = map toLower } ''LineEnding) -- | How to handle output blocks in ipynb. data IpynbOutput = IpynbOutputAll | IpynbOutputNone | IpynbOutputBest deriving (Show, Generic) $(deriveJSON defaultOptions{ fieldLabelModifier = map toLower . drop 11 } ''IpynbOutput) -- | Option parser results requesting informational output. data OptInfo = BashCompletion | ListInputFormats | ListOutputFormats | ListExtensions (Maybe Text) | ListHighlightLanguages | ListHighlightStyles | PrintDefaultTemplate (Maybe FilePath) Text | PrintDefaultDataFile (Maybe FilePath) Text | PrintHighlightStyle (Maybe FilePath) Text | VersionInfo | Help | OptError PandocError deriving (Show, Generic) -- | Data structure for command line options. data Opt = Opt { optTabStop :: Int -- ^ Number of spaces per tab , optPreserveTabs :: Bool -- ^ Preserve tabs instead of converting to spaces , optStandalone :: Bool -- ^ Include header, footer , optFrom :: Maybe Text -- ^ Reader format , optTo :: Maybe Text -- ^ Writer format , optTableOfContents :: Bool -- ^ Include table of contents , optShiftHeadingLevelBy :: Int -- ^ Shift heading level by , optTemplate :: Maybe FilePath -- ^ Custom template , optVariables :: Context Text -- ^ Template variables to set , optMetadata :: Meta -- ^ Metadata fields to set , optMetadataFiles :: [FilePath] -- ^ Name of YAML metadata files , optOutputFile :: Maybe FilePath -- ^ Name of output file , optInputFiles :: Maybe [FilePath] -- ^ Names of input files , optNumberSections :: Bool -- ^ Number sections in LaTeX , optNumberOffset :: [Int] -- ^ Starting number for sections , optSectionDivs :: Bool -- ^ Put sections in div tags in HTML , optIncremental :: Bool -- ^ Use incremental lists in Slidy/Slideous/S5 , optSelfContained :: Bool -- ^ Make HTML accessible offline (deprecated) , optEmbedResources :: Bool -- ^ Make HTML accessible offline , optHtmlQTags :: Bool -- ^ Use tags in HTML , optHighlightStyle :: Maybe Text -- ^ Style to use for highlighted code , optSyntaxDefinitions :: [FilePath] -- ^ xml syntax defs to load , optTopLevelDivision :: TopLevelDivision -- ^ Type of the top-level divisions , optHTMLMathMethod :: HTMLMathMethod -- ^ Method to print HTML math , optAbbreviations :: Maybe FilePath -- ^ Path to abbrevs file , optReferenceDoc :: Maybe FilePath -- ^ Path of reference doc , optSplitLevel :: Int -- ^ Header level at which to split documents in epub and chunkedhtml , optChunkTemplate :: Maybe Text -- ^ Template to use for chunk filenames , optEpubSubdirectory :: String -- ^ EPUB subdir in OCF container , optEpubMetadata :: Maybe FilePath -- ^ EPUB metadata , optEpubFonts :: [FilePath] -- ^ EPUB fonts to embed , optEpubCoverImage :: Maybe FilePath -- ^ Cover image for epub , optEpubTitlePage :: Bool -- ^ INclude title page in EPUB , optTOCDepth :: Int -- ^ Number of levels to include in TOC , optDumpArgs :: Bool -- ^ Output command-line arguments , optIgnoreArgs :: Bool -- ^ Ignore command-line arguments , optVerbosity :: Verbosity -- ^ Verbosity of diagnostic output , optTrace :: Bool -- ^ Enable tracing , optLogFile :: Maybe FilePath -- ^ File to write JSON log output , optFailIfWarnings :: Bool -- ^ Fail on warnings , optReferenceLinks :: Bool -- ^ Use reference links in writing markdown, rst , optReferenceLocation :: ReferenceLocation -- ^ location for footnotes and link references in markdown output , optDpi :: Int -- ^ Dpi , optWrap :: WrapOption -- ^ Options for wrapping text , optColumns :: Int -- ^ Line length in characters , optFilters :: [Filter] -- ^ Filters to apply , optEmailObfuscation :: ObfuscationMethod , optIdentifierPrefix :: Text , optIndentedCodeClasses :: [Text] -- ^ Default classes for indented code blocks , optDataDir :: Maybe FilePath , optCiteMethod :: CiteMethod -- ^ Method to output cites , optListings :: Bool -- ^ Use listings package for code blocks , optPdfEngine :: Maybe String -- ^ Program to use for latex/html -> pdf , optPdfEngineOpts :: [String] -- ^ Flags to pass to the engine , optSlideLevel :: Maybe Int -- ^ Header level that creates slides , optSetextHeaders :: Bool -- ^ Use atx headers for markdown level 1-2 , optListTables :: Bool -- ^ Use list tables for RST , optAscii :: Bool -- ^ Prefer ascii output , optDefaultImageExtension :: Text -- ^ Default image extension , optExtractMedia :: Maybe FilePath -- ^ Path to extract embedded media , optTrackChanges :: TrackChanges -- ^ Accept or reject MS Word track-changes. , optFileScope :: Bool -- ^ Parse input files before combining , optTitlePrefix :: Maybe Text -- ^ Prefix for title , optCss :: [FilePath] -- ^ CSS files to link to , optIpynbOutput :: IpynbOutput -- ^ How to treat ipynb output blocks , optIncludeBeforeBody :: [FilePath] -- ^ Files to include before , optIncludeAfterBody :: [FilePath] -- ^ Files to include after body , optIncludeInHeader :: [FilePath] -- ^ Files to include in header , optResourcePath :: [FilePath] -- ^ Path to search for images etc , optRequestHeaders :: [(Text, Text)] -- ^ Headers for HTTP requests , optNoCheckCertificate :: Bool -- ^ Disable certificate validation , optEol :: LineEnding -- ^ Style of line-endings to use , optStripComments :: Bool -- ^ Skip HTML comments , optCSL :: Maybe FilePath -- ^ CSL stylesheet , optBibliography :: [FilePath] -- ^ Bibliography files , optCitationAbbreviations :: Maybe FilePath -- ^ Citation abbreviations , optSandbox :: Bool } deriving (Generic, Show) instance FromJSON Opt where parseJSON = withObject "Opt" $ \o -> Opt <$> o .:? "tab-stop" .!= optTabStop defaultOpts <*> o .:? "preserve-tabs" .!= optPreserveTabs defaultOpts <*> o .:? "standalone" .!= optStandalone defaultOpts <*> o .:? "from" <*> o .:? "to" <*> o .:? "table-of-contents" .!= optTableOfContents defaultOpts <*> o .:? "shift-heading-level-by" .!= optShiftHeadingLevelBy defaultOpts <*> o .:? "template" <*> o .:? "variables" .!= optVariables defaultOpts <*> o .:? "metadata" .!= optMetadata defaultOpts <*> o .:? "metadata-files" .!= optMetadataFiles defaultOpts <*> o .:? "output-file" <*> o .:? "input-files" <*> o .:? "number-sections" .!= optNumberSections defaultOpts <*> o .:? "number-offset" .!= optNumberOffset defaultOpts <*> o .:? "section-divs" .!= optSectionDivs defaultOpts <*> o .:? "incremental" .!= optIncremental defaultOpts <*> o .:? "self-contained" .!= optSelfContained defaultOpts <*> o .:? "embed-resources" .!= optEmbedResources defaultOpts <*> o .:? "html-q-tags" .!= optHtmlQTags defaultOpts <*> o .:? "highlight-style" <*> o .:? "syntax-definitions" .!= optSyntaxDefinitions defaultOpts <*> o .:? "top-level-division" .!= optTopLevelDivision defaultOpts <*> o .:? "html-math-method" .!= optHTMLMathMethod defaultOpts <*> o .:? "abbreviations" <*> o .:? "reference-doc" <*> ((o .:? "split-level") <|> (o .:? "epub-chapter-level")) .!= optSplitLevel defaultOpts <*> o .:? "chunk-template" <*> o .:? "epub-subdirectory" .!= optEpubSubdirectory defaultOpts <*> o .:? "epub-metadata" <*> o .:? "epub-fonts" .!= optEpubFonts defaultOpts <*> o .:? "epub-cover-image" <*> o .:? "epub-title-page" .!= optEpubTitlePage defaultOpts <*> o .:? "toc-depth" .!= optTOCDepth defaultOpts <*> o .:? "dump-args" .!= optDumpArgs defaultOpts <*> o .:? "ignore-args" .!= optIgnoreArgs defaultOpts <*> o .:? "verbosity" .!= optVerbosity defaultOpts <*> o .:? "trace" .!= optTrace defaultOpts <*> o .:? "log-file" <*> o .:? "fail-if-warnings" .!= optFailIfWarnings defaultOpts <*> o .:? "reference-links" .!= optReferenceLinks defaultOpts <*> o .:? "reference-location" .!= optReferenceLocation defaultOpts <*> o .:? "dpi" .!= optDpi defaultOpts <*> o .:? "wrap" .!= optWrap defaultOpts <*> o .:? "columns" .!= optColumns defaultOpts <*> o .:? "filters" .!= optFilters defaultOpts <*> o .:? "email-obfuscation" .!= optEmailObfuscation defaultOpts <*> o .:? "identifier-prefix" .!= optIdentifierPrefix defaultOpts <*> o .:? "indented-code-classes" .!= optIndentedCodeClasses defaultOpts <*> o .:? "data-dir" <*> o .:? "cite-method" .!= optCiteMethod defaultOpts <*> o .:? "listings" .!= optListings defaultOpts <*> o .:? "pdf-engine" <*> o .:? "pdf-engine-opts" .!= optPdfEngineOpts defaultOpts <*> o .:? "slide-level" <*> o .:? "setext-headers" .!= optSetextHeaders defaultOpts <*> o .:? "list-tables" .!= optListTables defaultOpts <*> o .:? "ascii" .!= optAscii defaultOpts <*> o .:? "default-image-extension" .!= optDefaultImageExtension defaultOpts <*> o .:? "extract-media" <*> o .:? "track-changes" .!= optTrackChanges defaultOpts <*> o .:? "file-scope" .!= optFileScope defaultOpts <*> o .:? "title-prefix" .!= optTitlePrefix defaultOpts <*> o .:? "css" .!= optCss defaultOpts <*> o .:? "ipynb-output" .!= optIpynbOutput defaultOpts <*> o .:? "include-before-body" .!= optIncludeBeforeBody defaultOpts <*> o .:? "include-after-body" .!= optIncludeAfterBody defaultOpts <*> o .:? "include-in-header" .!= optIncludeInHeader defaultOpts <*> o .:? "resource-path" .!= optResourcePath defaultOpts <*> o .:? "request-headers" .!= optRequestHeaders defaultOpts <*> o .:? "no-check-certificate" .!= optNoCheckCertificate defaultOpts <*> o .:? "eol" .!= optEol defaultOpts <*> o .:? "strip-comments" .!= optStripComments defaultOpts <*> o .:? "csl" <*> o .:? "bibliography" .!= optBibliography defaultOpts <*> o .:? "citation-abbreviations" <*> o .:? "sandbox" .!= optSandbox defaultOpts instance ToJSON Opt where toJSON = genericToJSON defaultOptions{ fieldLabelModifier = camelTo2 '-' . drop 3, omitNothingFields = True } instance FromJSON (Opt -> Opt) where parseJSON (Object m) = case fromJSON (Object m) of Error err' -> fail err' Success (m' :: M.Map Text Value) -> chain doOpt (M.toList m') parseJSON _ = fail "Expected a mapping" data DefaultsState = DefaultsState { curDefaults :: Maybe FilePath -- currently parsed file , inheritanceGraph :: [[FilePath]] -- defaults file inheritance graph } deriving (Show) instance (PandocMonad m, MonadIO m) => FromJSON (Opt -> StateT DefaultsState m Opt) where parseJSON (Object o) = case fromJSON (Object o) of Error err' -> fail err' Success (opts :: M.Map Text Value) -> do dataDir <- case M.lookup "data-dir" opts of Nothing -> return Nothing Just v -> Just . unpack <$> parseJSON v f <- parseOptions (M.toList opts) case M.lookup "defaults" opts of Just v -> do g <- parseDefaults v dataDir return $ g >=> f >=> resolveVarsInOpt Nothing -> return $ f >=> resolveVarsInOpt parseJSON _ = fail "Expected a mapping" resolveVarsInOpt :: forall m. (PandocMonad m, MonadIO m) => Opt -> StateT DefaultsState m Opt resolveVarsInOpt opt@Opt { optTemplate = oTemplate , optMetadataFiles = oMetadataFiles , optOutputFile = oOutputFile , optInputFiles = oInputFiles , optSyntaxDefinitions = oSyntaxDefinitions , optAbbreviations = oAbbreviations , optReferenceDoc = oReferenceDoc , optEpubMetadata = oEpubMetadata , optEpubFonts = oEpubFonts , optEpubCoverImage = oEpubCoverImage , optLogFile = oLogFile , optFilters = oFilters , optDataDir = oDataDir , optExtractMedia = oExtractMedia , optCss = oCss , optIncludeBeforeBody = oIncludeBeforeBody , optIncludeAfterBody = oIncludeAfterBody , optIncludeInHeader = oIncludeInHeader , optResourcePath = oResourcePath , optCSL = oCSL , optBibliography = oBibliography , optCitationAbbreviations = oCitationAbbreviations , optPdfEngine = oPdfEngine , optHighlightStyle = oHighlightStyle } = do oTemplate' <- mapM resolveVars oTemplate oMetadataFiles' <- mapM resolveVars oMetadataFiles oOutputFile' <- mapM resolveVars oOutputFile oInputFiles' <- mapM (mapM resolveVars) oInputFiles oSyntaxDefinitions' <- mapM resolveVars oSyntaxDefinitions oAbbreviations' <- mapM resolveVars oAbbreviations oReferenceDoc' <- mapM resolveVars oReferenceDoc oEpubMetadata' <- mapM resolveVars oEpubMetadata oEpubFonts' <- mapM resolveVars oEpubFonts oEpubCoverImage' <- mapM resolveVars oEpubCoverImage oLogFile' <- mapM resolveVars oLogFile oFilters' <- mapM resolveVarsInFilter oFilters oDataDir' <- mapM resolveVars oDataDir oExtractMedia' <- mapM resolveVars oExtractMedia oCss' <- mapM resolveVars oCss oIncludeBeforeBody' <- mapM resolveVars oIncludeBeforeBody oIncludeAfterBody' <- mapM resolveVars oIncludeAfterBody oIncludeInHeader' <- mapM resolveVars oIncludeInHeader oResourcePath' <- mapM resolveVars oResourcePath oCSL' <- mapM resolveVars oCSL oBibliography' <- mapM resolveVars oBibliography oCitationAbbreviations' <- mapM resolveVars oCitationAbbreviations oPdfEngine' <- mapM resolveVars oPdfEngine oHighlightStyle' <- mapM (fmap T.pack . resolveVars . T.unpack) oHighlightStyle return opt{ optTemplate = oTemplate' , optMetadataFiles = oMetadataFiles' , optOutputFile = oOutputFile' , optInputFiles = oInputFiles' , optSyntaxDefinitions = oSyntaxDefinitions' , optAbbreviations = oAbbreviations' , optReferenceDoc = oReferenceDoc' , optEpubMetadata = oEpubMetadata' , optEpubFonts = oEpubFonts' , optEpubCoverImage = oEpubCoverImage' , optLogFile = oLogFile' , optFilters = oFilters' , optDataDir = oDataDir' , optExtractMedia = oExtractMedia' , optCss = oCss' , optIncludeBeforeBody = oIncludeBeforeBody' , optIncludeAfterBody = oIncludeAfterBody' , optIncludeInHeader = oIncludeInHeader' , optResourcePath = oResourcePath' , optCSL = oCSL' , optBibliography = oBibliography' , optCitationAbbreviations = oCitationAbbreviations' , optPdfEngine = oPdfEngine' , optHighlightStyle = oHighlightStyle' } where resolveVars :: FilePath -> StateT DefaultsState m FilePath resolveVars [] = return [] resolveVars ('$':'{':xs) = let (ys, zs) = break (=='}') xs in if null zs then return $ '$':'{':xs else do val <- lookupEnv' ys (val ++) <$> resolveVars (drop 1 zs) resolveVars (c:cs) = (c:) <$> resolveVars cs lookupEnv' :: String -> StateT DefaultsState m String lookupEnv' "." = do mbCurDefaults <- gets curDefaults maybe (return "") (fmap takeDirectory . liftIO . canonicalizePath) mbCurDefaults lookupEnv' "USERDATA" = do mbodatadir <- mapM resolveVars oDataDir mbdatadir <- getUserDataDir defdatadir <- liftIO defaultUserDataDir return $ fromMaybe defdatadir (mbodatadir <|> mbdatadir) lookupEnv' v = do mbval <- fmap T.unpack <$> lookupEnv (T.pack v) case mbval of Nothing -> do report $ EnvironmentVariableUndefined (T.pack v) return mempty Just x -> return x resolveVarsInFilter (JSONFilter fp) = JSONFilter <$> resolveVars fp resolveVarsInFilter (LuaFilter fp) = LuaFilter <$> resolveVars fp resolveVarsInFilter CiteprocFilter = return CiteprocFilter parseDefaults :: (PandocMonad m, MonadIO m) => Value -> Maybe FilePath -> Parser (Opt -> StateT DefaultsState m Opt) parseDefaults n dataDir = parseDefsNames n >>= \ds -> return $ \o -> do -- get parent defaults: defsParent <- gets $ fromMaybe "" . curDefaults -- get child defaults: defsChildren <- mapM (fullDefaultsPath dataDir) ds -- expand parent in defaults inheritance graph by children: defsGraph <- gets inheritanceGraph let defsGraphExp = expand defsGraph defsChildren defsParent modify $ \defsState -> defsState{ inheritanceGraph = defsGraphExp } -- check for cyclic inheritance: if cyclic defsGraphExp then throwError $ PandocSomeError $ T.pack $ "Error: Circular defaults file reference in " ++ "'" ++ defsParent ++ "'" else foldM applyDefaults o defsChildren where parseDefsNames x = (parseJSON x >>= \xs -> return $ map unpack xs) <|> (parseJSON x >>= \x' -> return [unpack x']) parseOptions :: Monad m => [(Text, Value)] -> Parser (Opt -> StateT DefaultsState m Opt) parseOptions ns = do f <- chain doOpt' ns return $ return . f chain :: Monad m => (a -> m (b -> b)) -> [a] -> m (b -> b) chain f = foldM g id where g o n = f n >>= \o' -> return $ o' . o doOpt' :: (Text, Value) -> Parser (Opt -> Opt) doOpt' (k,v) = do case k of "defaults" -> return id _ -> doOpt (k,v) doOpt :: (Text, Value) -> Parser (Opt -> Opt) doOpt (k,v) = do case k of "tab-stop" -> parseJSON v >>= \x -> return (\o -> o{ optTabStop = x }) "preserve-tabs" -> parseJSON v >>= \x -> return (\o -> o{ optPreserveTabs = x }) "standalone" -> parseJSON v >>= \x -> return (\o -> o{ optStandalone = x }) "table-of-contents" -> parseJSON v >>= \x -> return (\o -> o{ optTableOfContents = x }) "toc" -> parseJSON v >>= \x -> return (\o -> o{ optTableOfContents = x }) "from" -> parseJSON v >>= \x -> return (\o -> o{ optFrom = x }) "reader" -> parseJSON v >>= \x -> return (\o -> o{ optFrom = x }) "to" -> parseJSON v >>= \x -> return (\o -> o{ optTo = x }) "writer" -> parseJSON v >>= \x -> return (\o -> o{ optTo = x }) "shift-heading-level-by" -> parseJSON v >>= \x -> return (\o -> o{ optShiftHeadingLevelBy = x }) "template" -> parseJSON v >>= \x -> return (\o -> o{ optTemplate = unpack <$> x }) "variables" -> parseJSON v >>= \x -> return (\o -> o{ optVariables = x <> optVariables o }) -- Note: x comes first because <> for Context is left-biased union -- and we want to favor later default files. See #5988. "metadata" -> yamlToMeta v >>= \x -> return (\o -> o{ optMetadata = optMetadata o <> x }) "metadata-files" -> parseJSON v >>= \x -> return (\o -> o{ optMetadataFiles = optMetadataFiles o <> map unpack x }) "metadata-file" -> -- allow either a list or a single value (parseJSON v >>= \x -> return (\o -> o{ optMetadataFiles = optMetadataFiles o <> map unpack x })) <|> (parseJSON v >>= \x -> return (\o -> o{ optMetadataFiles = optMetadataFiles o <>[unpack x] })) "output-file" -> parseJSON v >>= \x -> return (\o -> o{ optOutputFile = unpack <$> x }) "input-files" -> parseJSON v >>= \x -> return (\o -> o{ optInputFiles = optInputFiles o <> (map unpack <$> x) }) "input-file" -> -- allow either a list or a single value (parseJSON v >>= \x -> return (\o -> o{ optInputFiles = optInputFiles o <> (map unpack <$> x) })) <|> (parseJSON v >>= \x -> return (\o -> o{ optInputFiles = optInputFiles o <> ((\z -> [unpack z]) <$> x) })) "number-sections" -> parseJSON v >>= \x -> return (\o -> o{ optNumberSections = x }) "number-offset" -> parseJSON v >>= \x -> return (\o -> o{ optNumberOffset = x }) "section-divs" -> parseJSON v >>= \x -> return (\o -> o{ optSectionDivs = x }) "incremental" -> parseJSON v >>= \x -> return (\o -> o{ optIncremental = x }) "self-contained" -> parseJSON v >>= \x -> return (\o -> o{ optSelfContained = x }) "embed-resources" -> parseJSON v >>= \x -> return (\o -> o{ optEmbedResources = x }) "html-q-tags" -> parseJSON v >>= \x -> return (\o -> o{ optHtmlQTags = x }) "highlight-style" -> parseJSON v >>= \x -> return (\o -> o{ optHighlightStyle = x }) "syntax-definition" -> (parseJSON v >>= \x -> return (\o -> o{ optSyntaxDefinitions = optSyntaxDefinitions o <> map unpack x })) <|> (parseJSON v >>= \x -> return (\o -> o{ optSyntaxDefinitions = optSyntaxDefinitions o <> [unpack x] })) "syntax-definitions" -> parseJSON v >>= \x -> return (\o -> o{ optSyntaxDefinitions = optSyntaxDefinitions o <> map unpack x }) "top-level-division" -> parseJSON v >>= \x -> return (\o -> o{ optTopLevelDivision = x }) "html-math-method" -> parseJSON v >>= \x -> return (\o -> o{ optHTMLMathMethod = x }) "abbreviations" -> parseJSON v >>= \x -> return (\o -> o{ optAbbreviations = unpack <$> x }) "reference-doc" -> parseJSON v >>= \x -> return (\o -> o{ optReferenceDoc = unpack <$> x }) "epub-subdirectory" -> parseJSON v >>= \x -> return (\o -> o{ optEpubSubdirectory = unpack x }) "epub-metadata" -> parseJSON v >>= \x -> return (\o -> o{ optEpubMetadata = unpack <$> x }) "epub-fonts" -> parseJSON v >>= \x -> return (\o -> o{ optEpubFonts = optEpubFonts o <> map unpack x }) "epub-chapter-level" -> parseJSON v >>= \x -> return (\o -> o{ optSplitLevel = x }) "split-level" -> parseJSON v >>= \x -> return (\o -> o{ optSplitLevel = x }) "chunk-template" -> parseJSON v >>= \x -> return (\o -> o{ optChunkTemplate = Just x }) "epub-cover-image" -> parseJSON v >>= \x -> return (\o -> o{ optEpubCoverImage = unpack <$> x }) "toc-depth" -> parseJSON v >>= \x -> return (\o -> o{ optTOCDepth = x }) "dump-args" -> parseJSON v >>= \x -> return (\o -> o{ optDumpArgs = x }) "ignore-args" -> parseJSON v >>= \x -> return (\o -> o{ optIgnoreArgs = x }) "verbosity" -> parseJSON v >>= \x -> return (\o -> o{ optVerbosity = x }) "trace" -> parseJSON v >>= \x -> return (\o -> o{ optTrace = x }) "log-file" -> parseJSON v >>= \x -> return (\o -> o{ optLogFile = unpack <$> x }) "fail-if-warnings" -> parseJSON v >>= \x -> return (\o -> o{ optFailIfWarnings = x }) "reference-links" -> parseJSON v >>= \x -> return (\o -> o{ optReferenceLinks = x }) "reference-location" -> parseJSON v >>= \x -> return (\o -> o{ optReferenceLocation = x }) "dpi" -> parseJSON v >>= \x -> return (\o -> o{ optDpi = x }) "wrap" -> parseJSON v >>= \x -> return (\o -> o{ optWrap = x }) "columns" -> parseJSON v >>= \x -> return (\o -> o{ optColumns = x }) "filters" -> parseJSON v >>= \x -> return (\o -> o{ optFilters = optFilters o <> x }) "citeproc" -> parseJSON v >>= \x -> if x then return (\o -> o{ optFilters = CiteprocFilter : optFilters o }) else return id "email-obfuscation" -> parseJSON v >>= \x -> return (\o -> o{ optEmailObfuscation = x }) "identifier-prefix" -> parseJSON v >>= \x -> return (\o -> o{ optIdentifierPrefix = x }) "indented-code-classes" -> parseJSON v >>= \x -> return (\o -> o{ optIndentedCodeClasses = x }) "data-dir" -> parseJSON v >>= \x -> return (\o -> o{ optDataDir = unpack <$> x }) "cite-method" -> parseJSON v >>= \x -> return (\o -> o{ optCiteMethod = x }) "listings" -> parseJSON v >>= \x -> return (\o -> o{ optListings = x }) "pdf-engine" -> parseJSON v >>= \x -> return (\o -> o{ optPdfEngine = unpack <$> x }) "pdf-engine-opts" -> parseJSON v >>= \x -> return (\o -> o{ optPdfEngineOpts = map unpack x }) "pdf-engine-opt" -> (parseJSON v >>= \x -> return (\o -> o{ optPdfEngineOpts = map unpack x })) <|> (parseJSON v >>= \x -> return (\o -> o{ optPdfEngineOpts = [unpack x] })) "slide-level" -> parseJSON v >>= \x -> return (\o -> o{ optSlideLevel = x }) "markdown-headings" -> parseJSON v >>= \x -> return (\o -> case T.toLower x of "atx" -> o{ optSetextHeaders = False } "setext" -> o{ optSetextHeaders = True } _ -> o) "list-tables" -> parseJSON v >>= \x -> return (\o -> o{ optListTables = x }) "ascii" -> parseJSON v >>= \x -> return (\o -> o{ optAscii = x }) "default-image-extension" -> parseJSON v >>= \x -> return (\o -> o{ optDefaultImageExtension = x }) "extract-media" -> parseJSON v >>= \x -> return (\o -> o{ optExtractMedia = unpack <$> x }) "track-changes" -> parseJSON v >>= \x -> return (\o -> o{ optTrackChanges = x }) "file-scope" -> parseJSON v >>= \x -> return (\o -> o{ optFileScope = x }) "title-prefix" -> parseJSON v >>= \x -> return (\o -> o{ optTitlePrefix = x, optStandalone = True }) "css" -> (parseJSON v >>= \x -> return (\o -> o{ optCss = optCss o <> map unpack x })) <|> (parseJSON v >>= \x -> return (\o -> o{ optCss = optCss o <> [unpack x] })) "bibliography" -> (parseJSON v >>= \x -> return (\o -> o{ optBibliography = optBibliography o <> map unpack x })) <|> (parseJSON v >>= \x -> return (\o -> o{ optBibliography = optBibliography o <> [unpack x] })) "csl" -> parseJSON v >>= \x -> return (\o -> o{ optCSL = unpack <$> x }) "citation-abbreviations" -> parseJSON v >>= \x -> return (\o -> o{ optCitationAbbreviations = unpack <$> x }) "ipynb-output" -> parseJSON v >>= \x -> return (\o -> o{ optIpynbOutput = x }) "include-before-body" -> (parseJSON v >>= \x -> return (\o -> o{ optIncludeBeforeBody = optIncludeBeforeBody o <> map unpack x })) <|> (parseJSON v >>= \x -> return (\o -> o{ optIncludeBeforeBody = optIncludeBeforeBody o <> [unpack x] })) "include-after-body" -> (parseJSON v >>= \x -> return (\o -> o{ optIncludeAfterBody = optIncludeAfterBody o <> map unpack x })) <|> (parseJSON v >>= \x -> return (\o -> o{ optIncludeAfterBody = optIncludeAfterBody o <> [unpack x] })) "include-in-header" -> (parseJSON v >>= \x -> return (\o -> o{ optIncludeInHeader = optIncludeInHeader o <> map unpack x })) <|> (parseJSON v >>= \x -> return (\o -> o{ optIncludeInHeader = optIncludeInHeader o <> [unpack x] })) "resource-path" -> parseJSON v >>= \x -> return (\o -> o{ optResourcePath = map unpack x <> optResourcePath o }) "request-headers" -> parseJSON v >>= \x -> return (\o -> o{ optRequestHeaders = x }) "no-check-certificate" -> parseJSON v >>= \x -> return (\o -> o{ optNoCheckCertificate = x }) "eol" -> parseJSON v >>= \x -> return (\o -> o{ optEol = x }) "strip-comments" -> parseJSON v >>= \x -> return (\o -> o { optStripComments = x }) "sandbox" -> parseJSON v >>= \x -> return (\o -> o { optSandbox = x }) _ -> fail $ "Unknown option " ++ show k -- | Defaults for command-line options. defaultOpts :: Opt defaultOpts = Opt { optTabStop = 4 , optPreserveTabs = False , optStandalone = False , optFrom = Nothing , optTo = Nothing , optTableOfContents = False , optShiftHeadingLevelBy = 0 , optTemplate = Nothing , optVariables = mempty , optMetadata = mempty , optMetadataFiles = [] , optOutputFile = Nothing , optInputFiles = Nothing , optNumberSections = False , optNumberOffset = [0,0,0,0,0,0] , optSectionDivs = False , optIncremental = False , optSelfContained = False , optEmbedResources = False , optHtmlQTags = False , optHighlightStyle = Just "pygments" , optSyntaxDefinitions = [] , optTopLevelDivision = TopLevelDefault , optHTMLMathMethod = PlainMath , optAbbreviations = Nothing , optReferenceDoc = Nothing , optSplitLevel = 1 , optChunkTemplate = Nothing , optEpubSubdirectory = "EPUB" , optEpubMetadata = Nothing , optEpubFonts = [] , optEpubCoverImage = Nothing , optEpubTitlePage = True , optTOCDepth = 3 , optDumpArgs = False , optIgnoreArgs = False , optVerbosity = WARNING , optTrace = False , optLogFile = Nothing , optFailIfWarnings = False , optReferenceLinks = False , optReferenceLocation = EndOfDocument , optDpi = 96 , optWrap = WrapAuto , optColumns = 72 , optFilters = [] , optEmailObfuscation = NoObfuscation , optIdentifierPrefix = "" , optIndentedCodeClasses = [] , optDataDir = Nothing , optCiteMethod = Citeproc , optListings = False , optPdfEngine = Nothing , optPdfEngineOpts = [] , optSlideLevel = Nothing , optSetextHeaders = False , optListTables = False , optAscii = False , optDefaultImageExtension = "" , optExtractMedia = Nothing , optTrackChanges = AcceptChanges , optFileScope = False , optTitlePrefix = Nothing , optCss = [] , optIpynbOutput = IpynbOutputBest , optIncludeBeforeBody = [] , optIncludeAfterBody = [] , optIncludeInHeader = [] , optResourcePath = ["."] , optRequestHeaders = [] , optNoCheckCertificate = False , optEol = Native , optStripComments = False , optCSL = Nothing , optBibliography = [] , optCitationAbbreviations = Nothing , optSandbox = False } yamlToMeta :: Value -> Parser Meta yamlToMeta (Object o) = either (fail . show) return $ runEverything (yamlMap pMetaString o) where pMetaString = pure . MetaString <$> P.manyChar P.anyChar runEverything p = runPure (P.readWithM p (def :: P.ParserState) ("" :: Text)) >>= fmap (Meta . flip P.runF def) yamlToMeta _ = return mempty -- | Apply defaults from --defaults file. applyDefaults :: (PandocMonad m, MonadIO m) => Opt -> FilePath -> StateT DefaultsState m Opt applyDefaults opt file = do setVerbosity $ optVerbosity opt modify $ \defsState -> defsState{ curDefaults = Just file } inp <- readFileStrict file case decodeEither' (B8.unlines . takeWhile (/= "...") . B8.lines $ inp) of Right f -> f opt Left err' -> throwError $ PandocParseError $ T.pack $ Data.Yaml.prettyPrintParseException err' fullDefaultsPath :: (PandocMonad m, MonadIO m) => Maybe FilePath -> FilePath -> m FilePath fullDefaultsPath dataDir file = do let fp = if null (takeExtension file) then addExtension file "yaml" else file defaultDataDir <- liftIO defaultUserDataDir let defaultFp = fromMaybe defaultDataDir dataDir "defaults" fp fpExists <- fileExists fp if fpExists then return fp else do defaultFpExists <- fileExists defaultFp if defaultFpExists then return defaultFp else return fp -- | In a list of lists, append another list in front of every list which -- starts with specific element. expand :: Ord a => [[a]] -> [a] -> a -> [[a]] expand [] ns n = fmap (\x -> x : [n]) ns expand ps ns n = concatMap (ext n ns) ps where ext x xs p = case p of (l : _) | x == l -> fmap (: p) xs _ -> [p] cyclic :: Ord a => [[a]] -> Bool cyclic = any hasDuplicate where hasDuplicate xs = length (nubOrd xs) /= length xs pandoc-3.1.3/src/Text/Pandoc/App/OutputSettings.hs0000644000000000000000000003160407346545000020173 0ustar0000000000000000{-# LANGUAGE CPP #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TupleSections #-} {- | Module : Text.Pandoc.App Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Does a pandoc conversion based on command-line options. -} module Text.Pandoc.App.OutputSettings ( OutputSettings (..) , optToOutputSettings ) where import qualified Data.Map as M import qualified Data.Text as T import Text.DocTemplates (toVal, Context(..), Val(..)) import qualified Control.Exception as E import Control.Monad import Control.Monad.Except (throwError) import Control.Monad.Trans import Data.Char (toLower) import Data.List (find) import Data.Maybe (fromMaybe) import Skylighting (defaultSyntaxMap) import Skylighting.Parser (addSyntaxDefinition, parseSyntaxDefinition) import System.Directory (getCurrentDirectory) import System.Exit (exitSuccess) import System.FilePath import System.IO (stdout) import Text.Pandoc.Chunks (PathTemplate(..)) import Text.Pandoc import Text.Pandoc.App.Opt (Opt (..)) import Text.Pandoc.App.CommandLineOptions (engines) import Text.Pandoc.Format (FlavoredFormat (..), applyExtensionsDiff, parseFlavoredFormat, formatFromFilePaths) import Text.Pandoc.Highlighting (lookupHighlightingStyle) import Text.Pandoc.Scripting (ScriptingEngine (engineLoadCustom), CustomComponents(..)) import qualified Text.Pandoc.UTF8 as UTF8 readUtf8File :: PandocMonad m => FilePath -> m T.Text readUtf8File = fmap UTF8.toText . readFileStrict -- | Settings specifying how document output should be produced. data OutputSettings m = OutputSettings { outputFormat :: T.Text , outputWriter :: Writer m , outputWriterOptions :: WriterOptions , outputPdfProgram :: Maybe String } -- | Get output settings from command line options. optToOutputSettings :: (PandocMonad m, MonadIO m) => ScriptingEngine -> Opt -> m (OutputSettings m) optToOutputSettings scriptingEngine opts = do let outputFile = fromMaybe "-" (optOutputFile opts) when (optDumpArgs opts) . liftIO $ do UTF8.hPutStrLn stdout (T.pack outputFile) mapM_ (UTF8.hPutStrLn stdout . T.pack) (fromMaybe [] $ optInputFiles opts) exitSuccess epubMetadata <- traverse readUtf8File $ optEpubMetadata opts let pdfOutput = map toLower (takeExtension outputFile) == ".pdf" || optTo opts == Just "pdf" let defaultOutput = "html" defaultOutputFlavor <- parseFlavoredFormat defaultOutput (flvrd@(FlavoredFormat format _extsDiff), maybePdfProg) <- if pdfOutput then do outflavor <- case optTo opts of Just x | x /= "pdf" -> Just <$> parseFlavoredFormat x _ -> pure Nothing liftIO $ pdfWriterAndProg outflavor (optPdfEngine opts) else case optTo opts of Just f -> (, Nothing) <$> parseFlavoredFormat f Nothing | outputFile == "-" -> return (defaultOutputFlavor, Nothing) | otherwise -> case formatFromFilePaths [outputFile] of Nothing -> do report $ CouldNotDeduceFormat [T.pack $ takeExtension outputFile] defaultOutput return (defaultOutputFlavor,Nothing) Just f -> return (f, Nothing) let makeSandboxed pureWriter = let files = maybe id (:) (optReferenceDoc opts) . maybe id (:) (optEpubMetadata opts) . maybe id (:) (optEpubCoverImage opts) . maybe id (:) (optCSL opts) . maybe id (:) (optCitationAbbreviations opts) $ optEpubFonts opts ++ optBibliography opts in case pureWriter of TextWriter w -> TextWriter $ \o d -> sandbox files (w o d) ByteStringWriter w -> ByteStringWriter $ \o d -> sandbox files (w o d) let standalone = optStandalone opts || isBinaryFormat format || pdfOutput let templateOrThrow = \case Left e -> throwError $ PandocTemplateError (T.pack e) Right t -> pure t let processCustomTemplate getDefault = case optTemplate opts of _ | not standalone -> return Nothing Nothing -> Just <$> getDefault Just tp -> do -- strip off extensions let tp' = case takeExtension tp of "" -> tp <.> T.unpack format _ -> tp getTemplate tp' >>= runWithPartials . compileTemplate tp' >>= fmap Just . templateOrThrow (writer, writerExts, mtemplate) <- if "lua" `T.isSuffixOf` format then do let path = T.unpack format components <- engineLoadCustom scriptingEngine path w <- case customWriter components of Nothing -> throwError $ PandocAppError $ format <> " does not contain a custom writer" Just w -> return w let extsConf = fromMaybe mempty $ customExtensions components wexts <- applyExtensionsDiff extsConf flvrd templ <- processCustomTemplate $ case customTemplate components of Nothing -> throwError $ PandocNoTemplateError format Just t -> (runWithDefaultPartials $ compileTemplate path t) >>= templateOrThrow return (w, wexts, templ) else do tmpl <- processCustomTemplate (compileDefaultTemplate format) if optSandbox opts then case runPure (getWriter flvrd) of Right (w, wexts) -> return (makeSandboxed w, wexts, tmpl) Left e -> throwError e else do (w, wexts) <- getWriter flvrd return (w, wexts, tmpl) let addSyntaxMap existingmap f = do res <- liftIO (parseSyntaxDefinition f) case res of Left errstr -> throwError $ PandocSyntaxMapError $ T.pack errstr Right syn -> return $ addSyntaxDefinition syn existingmap syntaxMap <- foldM addSyntaxMap defaultSyntaxMap (optSyntaxDefinitions opts) hlStyle <- traverse (lookupHighlightingStyle . T.unpack) $ optHighlightStyle opts let setListVariableM _ [] ctx = return ctx setListVariableM k vs ctx = do let ctxMap = unContext ctx return $ Context $ case M.lookup k ctxMap of Just (ListVal xs) -> M.insert k (ListVal $ xs ++ map toVal vs) ctxMap Just v -> M.insert k (ListVal $ v : map toVal vs) ctxMap Nothing -> M.insert k (toVal vs) ctxMap let getTextContents fp = UTF8.toText . fst <$> fetchItem (T.pack fp) let setFilesVariableM k fps ctx = do xs <- mapM getTextContents fps setListVariableM k xs ctx curdir <- liftIO getCurrentDirectory variables <- return (optVariables opts) >>= setListVariableM "sourcefile" (maybe ["-"] (fmap T.pack) (optInputFiles opts)) >>= setVariableM "outputfile" (T.pack outputFile) >>= setVariableM "pandoc-version" pandocVersionText >>= setFilesVariableM "include-before" (optIncludeBeforeBody opts) >>= setFilesVariableM "include-after" (optIncludeAfterBody opts) >>= setFilesVariableM "header-includes" (optIncludeInHeader opts) >>= setListVariableM "css" (map T.pack $ optCss opts) >>= maybe return (setVariableM "title-prefix") (optTitlePrefix opts) >>= maybe return (setVariableM "epub-cover-image" . T.pack) (optEpubCoverImage opts) >>= setVariableM "curdir" (T.pack curdir) >>= (\vars -> if format == "dzslides" then do dztempl <- UTF8.toText <$> readDataFile ("dzslides" "template.html") let dzline = "" stripComments <- getOption readerStripComments if stripComments then return (next, "") else return (next, "") | otherwise -> Prelude.fail "bogus comment mode, HTML5 parse error" TagOpen tagname attr -> do guard $ isPI tagname || all (isName . fst) attr handleTag tagname TagClose tagname -> handleTag tagname _ -> mzero -- Utilities -- | Adjusts a url according to the document's base URL. canonicalizeUrl :: PandocMonad m => Text -> TagParser m Text canonicalizeUrl url = do mbBaseHref <- baseHref <$> getState return $ case (parseURIReference (T.unpack url), mbBaseHref) of (Just rel, Just bs) -> tshow (rel `nonStrictRelativeTo` bs) _ -> url pandoc-3.1.3/src/Text/Pandoc/Readers/HTML/0000755000000000000000000000000007346545000016223 5ustar0000000000000000pandoc-3.1.3/src/Text/Pandoc/Readers/HTML/Parsing.hs0000644000000000000000000002041407346545000020163 0ustar0000000000000000{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Readers.HTML.Parsing Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Parsing functions and utilities. -} module Text.Pandoc.Readers.HTML.Parsing ( TagOmission (..) , pInTags , pInTags' , pInTag , pInTagWithAttribs , pAny , pCloses , pSatisfy , pBlank , matchTagClose , matchTagOpen , isSpace , maybeFromAttrib , toAttr , toStringAttr ) where import Control.Monad (void, mzero, mplus) import Data.Maybe (fromMaybe) import Data.Text (Text) import Text.HTML.TagSoup ( Attribute, Tag (..), isTagPosition, isTagOpen, isTagClose, (~==) ) import Text.Pandoc.Class.PandocMonad (PandocMonad (..)) import Text.Pandoc.Definition (Attr) import Text.Pandoc.Parsing ( (<|>), eof, getPosition, lookAhead, manyTill, newPos, option, optional , skipMany, setPosition, token, try) import Text.Pandoc.Readers.HTML.TagCategories import Text.Pandoc.Readers.HTML.Types import Text.Pandoc.Shared (tshow) import Text.Pandoc.XML (html5Attributes, html4Attributes, rdfaAttributes) import qualified Data.Set as Set import qualified Data.Text as T -- | Whether no tag, the closing tag, or both tags can be omitted. data TagOmission = TagsRequired -- ^ Opening and closing tags are both required | ClosingTagOptional -- ^ The closing tag can be omitted | TagsOmittable -- ^ Both tags, opening and closing, can be omitted. deriving (Eq) pInTags :: (PandocMonad m, Monoid a) => Text -> TagParser m a -> TagParser m a pInTags tagtype parser = pInTags' tagtype (const True) parser pInTags' :: (PandocMonad m, Monoid a) => Text -> (Tag Text -> Bool) -> TagParser m a -> TagParser m a pInTags' tagtype tagtest parser = try $ do pSatisfy $ \t -> matchTagOpen tagtype [] t && tagtest t mconcat <$> manyTill parser (pCloses tagtype <|> eof) pInTag :: PandocMonad m => TagOmission -- ^ Whether some tags can be omitted -> Text -- ^ @tagtype@ Tag name -> TagParser m a -- ^ @p@ Content parser -> TagParser m a pInTag tagOmission tagtype = fmap snd . pInTagWithAttribs tagOmission tagtype -- | Returns the contents of a tag together with its attributes; parses -- @p@, preceded by an opening tag (optional if TagsOmittable) and -- followed by a closing tag (optional unless TagsRequired). pInTagWithAttribs :: PandocMonad m => TagOmission -- ^ Whether some tags can be omitted -> Text -- ^ @tagtype@ Tag name -> TagParser m a -- ^ @p@ Content parser -> TagParser m ([Attribute Text], a) pInTagWithAttribs tagOmission tagtype p = try $ do let openingOptional = tagOmission == TagsOmittable let closingOptional = tagOmission /= TagsRequired skipMany pBlank attribs <- (if openingOptional then option [] else id) (getAttribs <$> pSatisfy (matchTagOpen tagtype [])) skipMany pBlank x <- p skipMany pBlank (if closingOptional then optional else void) $ pSatisfy (matchTagClose tagtype) skipMany pBlank return (attribs, x) where getAttribs = \case TagOpen _ attribs -> attribs _ -> [] pCloses :: PandocMonad m => Text -> TagParser m () pCloses tagtype = try $ do t <- lookAhead $ pSatisfy $ \tag -> isTagClose tag || isTagOpen tag case t of (TagClose t') | t' == tagtype -> void pAny (TagOpen t' _) | t' `closes` tagtype -> return () (TagClose "ul") | tagtype == "li" -> return () (TagClose "ol") | tagtype == "li" -> return () (TagClose "dl") | tagtype == "dd" -> return () (TagClose "table") | tagtype == "td" -> return () (TagClose "table") | tagtype == "th" -> return () (TagClose "table") | tagtype == "tr" -> return () (TagClose "td") | tagtype `Set.member` blockHtmlTags -> return () (TagClose "th") | tagtype `Set.member` blockHtmlTags -> return () (TagClose t') | tagtype == "p" && t' `Set.member` blockHtmlTags -> return () -- see #3794 _ -> mzero pBlank :: PandocMonad m => TagParser m () pBlank = void $ pSatisfy isBlank where isBlank (TagText t) = T.all isSpace t isBlank (TagComment _) = True isBlank _ = False pLocation :: PandocMonad m => TagParser m () pLocation = do (TagPosition r c) <- pSat isTagPosition setPosition $ newPos "input" r c pSat :: PandocMonad m => (Tag Text -> Bool) -> TagParser m (Tag Text) pSat f = do pos <- getPosition token tshow (const pos) (\x -> if f x then Just x else Nothing) pSatisfy :: PandocMonad m => (Tag Text -> Bool) -> TagParser m (Tag Text) pSatisfy f = try $ optional pLocation >> pSat f matchTagClose :: Text -> (Tag Text -> Bool) matchTagClose t = (~== TagClose t) matchTagOpen :: Text -> [(Text, Text)] -> (Tag Text -> Bool) matchTagOpen t as = (~== TagOpen t as) pAny :: PandocMonad m => TagParser m (Tag Text) pAny = pSatisfy (const True) isSpace :: Char -> Bool isSpace ' ' = True isSpace '\t' = True isSpace '\n' = True isSpace '\r' = True isSpace _ = False -- taken from HXT and extended -- See http://www.w3.org/TR/html5/syntax.html sec 8.1.2.4 optional tags closes :: Text -> Text -> Bool _ `closes` "body" = False _ `closes` "html" = False "body" `closes` "head" = True "a" `closes` "a" = True "li" `closes` "li" = True "th" `closes` t | t `elem` ["th","td"] = True "td" `closes` t | t `elem` ["th","td"] = True "tr" `closes` t | t `elem` ["th","td","tr","colgroup"] = True "dd" `closes` t | t `elem` ["dt", "dd"] = True "dt" `closes` t | t `elem` ["dt","dd"] = True "rt" `closes` t | t `elem` ["rb", "rt", "rtc"] = True "col" `closes` "col" = True "colgroup" `closes` "col" = True "optgroup" `closes` "optgroup" = True "optgroup" `closes` "option" = True "option" `closes` "option" = True -- https://html.spec.whatwg.org/multipage/syntax.html#optional-tags x `closes` "p" | x `elem` ["address", "article", "aside", "blockquote", "dir", "div", "dl", "fieldset", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "header", "hr", "main", "menu", "nav", "ol", "p", "pre", "section", "table", "ul"] = True _ `closes` "meta" = True "form" `closes` "form" = True "label" `closes` "label" = True "map" `closes` "map" = True "object" `closes` "object" = True _ `closes` t | t `elem` ["option","style","script","textarea","title"] = True t `closes` "select" | t /= "option" = True "thead" `closes` "colgroup" = True "tfoot" `closes` t | t `elem` ["thead","colgroup"] = True "tbody" `closes` t | t `elem` ["tbody","tfoot","thead","colgroup"] = True t `closes` t2 | t `elem` ["h1","h2","h3","h4","h5","h6","dl","ol","ul","table","div","main","p"] && t2 `elem` ["h1","h2","h3","h4","h5","h6","p" ] = True -- not "div" or "main" t1 `closes` t2 | t1 `Set.member` blockTags && t2 `Set.notMember` blockTags && t2 `Set.notMember` eitherBlockOrInline = True _ `closes` _ = False toStringAttr :: [(Text, Text)] -> [(Text, Text)] toStringAttr = foldr go [] where go :: (Text, Text) -> [(Text, Text)] -> [(Text, Text)] -- treat xml:lang as lang go ("xml:lang",y) ats = go ("lang",y) ats -- prevent duplicate attributes go (x,y) ats | any (\(x',_) -> x == x') ats = ats | otherwise = case T.stripPrefix "data-" x of Just x' | x' `Set.notMember` (html5Attributes <> html4Attributes <> rdfaAttributes) -> go (x',y) ats _ -> (x,y):ats -- Unlike fromAttrib from tagsoup, this distinguishes -- between a missing attribute and an attribute with empty content. maybeFromAttrib :: Text -> Tag Text -> Maybe Text maybeFromAttrib name (TagOpen _ attrs) = lookup name attrs maybeFromAttrib _ _ = Nothing mkAttr :: [(Text, Text)] -> Attr mkAttr attr = (attribsId, attribsClasses, attribsKV) where attribsId = fromMaybe "" $ lookup "id" attr `mplus` lookup "name" attr attribsClasses = T.words (fromMaybe "" $ lookup "class" attr) <> epubTypes attribsKV = filter (\(k,_) -> k /= "class" && k /= "id" && k /= "name") attr epubTypes = T.words $ fromMaybe "" $ lookup "epub:type" attr toAttr :: [(Text, Text)] -> Attr toAttr = mkAttr . toStringAttr pandoc-3.1.3/src/Text/Pandoc/Readers/HTML/Table.hs0000644000000000000000000002521607346545000017614 0ustar0000000000000000{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ViewPatterns #-} {- | Module : Text.Pandoc.Readers.HTML.Table Copyright : © 2006-2023 John MacFarlane, 2020-2023 Albert Krewinkel License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel Stability : alpha Portability : portable HTML table parser. -} module Text.Pandoc.Readers.HTML.Table (pTable) where import Control.Applicative ((<|>)) import Data.Maybe (fromMaybe, isJust) import Data.Either (lefts, rights) import Data.List.NonEmpty (nonEmpty) import Data.Text (Text) import Text.HTML.TagSoup import Text.Pandoc.Builder (Blocks) import Text.Pandoc.CSS (cssAttributes) import Text.Pandoc.Definition import Text.Pandoc.Class.PandocMonad (PandocMonad (..)) import Text.Pandoc.Parsing ( eof, lookAhead, many, many1, manyTill, option, optional , optionMaybe, skipMany, try ) import Text.Pandoc.Readers.HTML.Parsing import Text.Pandoc.Readers.HTML.Types (TagParser) import Text.Pandoc.Shared (onlySimpleTableCells, safeRead) import qualified Data.Text as T import qualified Text.Pandoc.Builder as B import Control.Monad (guard) -- | Parses a @@ element, returning the column's width. -- An Either value is used: Left i means a "relative length" with -- integral value i (see https://www.w3.org/TR/html4/types.html#h-6.6); -- Right w means a regular width. Defaults to @'Right ColWidthDefault'@ -- if the width is not set or cannot be determined. pCol :: PandocMonad m => TagParser m (Either Int ColWidth) pCol = try $ do TagOpen _ attribs' <- pSatisfy (matchTagOpen "col" []) let attribs = toStringAttr attribs' skipMany pBlank optional $ pSatisfy (matchTagClose "col") skipMany pBlank return $ case lookup "width" attribs of Nothing -> case lookup "style" attribs of Just (T.stripPrefix "width:" -> Just xs) | T.any (== '%') xs -> maybe (Right ColWidthDefault) (Right . ColWidth . (/ 100.0)) $ safeRead (T.filter (`notElem` (" \t\r\n%'\";" :: [Char])) xs) _ -> Right ColWidthDefault Just (T.unsnoc -> Just (xs, '*')) -> maybe (Left 1) Left $ safeRead xs Just (T.unsnoc -> Just (xs, '%')) -> maybe (Right ColWidthDefault) (Right . ColWidth . (/ 100.0)) $ safeRead xs _ -> Right ColWidthDefault pColgroup :: PandocMonad m => TagParser m [Either Int ColWidth] pColgroup = try $ do pSatisfy (matchTagOpen "colgroup" []) skipMany pBlank manyTill pCol (pCloses "colgroup" <|> eof) <* skipMany pBlank resolveRelativeLengths :: [Either Int ColWidth] -> [ColWidth] resolveRelativeLengths ws = let remaining = 1 - sum (map getColWidth $ rights ws) relatives = sum $ lefts ws relUnit = remaining / fromIntegral relatives toColWidth (Right x) = x toColWidth (Left i) = ColWidth (fromIntegral i * relUnit) in map toColWidth ws getColWidth :: ColWidth -> Double getColWidth ColWidthDefault = 0 getColWidth (ColWidth w) = w data CellType = HeaderCell | BodyCell deriving Eq pCell :: PandocMonad m => TagParser m Blocks -> CellType -> TagParser m (CellType, Cell) pCell block celltype = try $ do let celltype' = case celltype of HeaderCell -> "th" BodyCell -> "td" skipMany pBlank TagOpen _ attribs <- lookAhead $ pSatisfy (matchTagOpen celltype' []) let cssAttribs = maybe [] cssAttributes $ lookup "style" attribs let align = case lookup "align" attribs <|> lookup "text-align" cssAttribs of Just "left" -> AlignLeft Just "right" -> AlignRight Just "center" -> AlignCenter _ -> AlignDefault let rowspan = RowSpan . fromMaybe 1 $ safeRead =<< lookup "rowspan" attribs let colspan = ColSpan . fromMaybe 1 $ safeRead =<< lookup "colspan" attribs res <- pInTags celltype' block skipMany pBlank let handledAttribs = ["align", "colspan", "rowspan", "text-align"] attribs' = foldr go [] attribs go kv@(k, _) acc = case k of "style" -> case filter ((/= "text-align") . fst) cssAttribs of [] -> acc cs -> ("style", toStyleString cs) : acc -- drop attrib if it's already handled _ | k `elem` handledAttribs -> acc _ -> kv : acc return (celltype, B.cellWith (toAttr attribs') align rowspan colspan res) -- | Create a style attribute string from a list of CSS attributes toStyleString :: [(Text, Text)] -> Text toStyleString = T.intercalate "; " . map (\(k, v) -> k <> ": " <> v) -- | Parses a normal table row; returns the row together with the number -- of header cells at the beginning of the row. pRow :: PandocMonad m => TagParser m Blocks -> TagParser m (RowHeadColumns, B.Row) pRow block = try $ do skipMany pBlank TagOpen _ attribs <- pSatisfy (matchTagOpen "tr" []) <* skipMany pBlank cells <- many (pCell block BodyCell <|> pCell block HeaderCell) TagClose _ <- pSatisfy (matchTagClose "tr") return ( RowHeadColumns $ length (takeWhile ((== HeaderCell) . fst) cells) , Row (toAttr attribs) $ map snd cells ) -- | Parses a header row, i.e., a row which containing nothing but -- @@ elements. pHeaderRow :: PandocMonad m => TagParser m Blocks -> TagParser m B.Row pHeaderRow block = try $ do skipMany pBlank let pThs = map snd <$> many (pCell block HeaderCell) let mkRow (attribs, cells) = Row (toAttr attribs) cells mkRow <$> pInTagWithAttribs TagsRequired "tr" pThs -- | Parses a table head. If there is no @thead@ element, this looks for -- a row of @@-only elements as the first line of the table. pTableHead :: PandocMonad m => TagParser m Blocks -> TagParser m TableHead pTableHead block = try $ do skipMany pBlank let pRows = many (pRow block) let pThead = pInTagWithAttribs ClosingTagOptional "thead" pRows optionMaybe pThead >>= \case Just (attribs, rows) -> return $ TableHead (toAttr attribs) $ map snd rows Nothing -> mkTableHead <$> optionMaybe (pHeaderRow block) where mkTableHead = TableHead nullAttr . \case -- Use row as header only if it's non-empty Just row@(Row _ (_:_)) -> [row] _ -> [] -- | Parses a table foot pTableFoot :: PandocMonad m => TagParser m Blocks -> TagParser m TableFoot pTableFoot block = try $ do skipMany pBlank TagOpen _ attribs <- pSatisfy (matchTagOpen "tfoot" []) <* skipMany pBlank rows <- many (fmap snd $ pRow block <* skipMany pBlank) optional $ pSatisfy (matchTagClose "tfoot") return $ TableFoot (toAttr attribs) rows -- | Parses a table body pTableBody :: PandocMonad m => TagParser m Blocks -> TagParser m TableBody pTableBody block = try $ do skipMany pBlank mbattribs <- option Nothing $ Just . getAttribs <$> pSatisfy (matchTagOpen "tbody" []) <* skipMany pBlank bodyheads <- many (pHeaderRow block) (rowheads, rows) <- unzip <$> many (pRow block <* skipMany pBlank) optional $ pSatisfy (matchTagClose "tbody") guard $ isJust mbattribs || not (null bodyheads && null rows) let attribs = fromMaybe [] mbattribs return $ TableBody (toAttr attribs) (foldr max 0 rowheads) bodyheads rows where getAttribs (TagOpen _ attribs) = attribs getAttribs _ = [] -- | Parses a simple HTML table pTable :: PandocMonad m => TagParser m Blocks -- ^ Caption and cell contents parser -> TagParser m Blocks pTable block = try $ do TagOpen _ attribs <- pSatisfy (matchTagOpen "table" []) <* skipMany pBlank caption <- option mempty $ pInTags "caption" block <* skipMany pBlank widths <- resolveRelativeLengths <$> ((mconcat <$> many1 pColgroup) <|> many pCol) <* skipMany pBlank thead <- pTableHead block <* skipMany pBlank topfoot <- optionMaybe (pTableFoot block) <* skipMany pBlank tbodies <- many (pTableBody block) <* skipMany pBlank botfoot <- optionMaybe (pTableFoot block) <* skipMany pBlank TagClose _ <- pSatisfy (matchTagClose "table") let tfoot = fromMaybe (TableFoot nullAttr []) $ topfoot <|> botfoot case normalize widths thead tbodies tfoot of Left err -> fail err Right (colspecs, thead', tbodies', tfoot') -> return $ B.tableWith (toAttr attribs) (B.simpleCaption caption) colspecs thead' tbodies' tfoot' data TableType = SimpleTable | NormalTable tableType :: [[Cell]] -> TableType tableType cells = if onlySimpleTableCells $ map (map cellContents) cells then SimpleTable else NormalTable where cellContents :: Cell -> [Block] cellContents (Cell _ _ _ _ bs) = bs normalize :: [ColWidth] -> TableHead -> [TableBody] -> TableFoot -> Either String ([ColSpec], TableHead, [TableBody], TableFoot) normalize widths head' bodies foot = do let rows = headRows head' <> concatMap bodyRows bodies <> footRows foot let cellWidth (Cell _ _ _ (ColSpan cs) _) = cs let rowLength = foldr (\cell acc -> cellWidth cell + acc) 0 . rowCells let ncols = maybe 0 maximum $ nonEmpty $ map rowLength rows let tblType = tableType (map rowCells rows) -- fail on empty table if null rows then Left "empty table" else Right ( zip (calculateAlignments ncols bodies) (normalizeColWidths ncols tblType widths) , head' , bodies , foot ) normalizeColWidths :: Int -> TableType -> [ColWidth] -> [ColWidth] normalizeColWidths ncols tblType = \case [] -> case tblType of SimpleTable -> replicate ncols ColWidthDefault NormalTable -> replicate ncols (ColWidth $ 1 / fromIntegral ncols) widths -> widths calculateAlignments :: Int -> [TableBody] -> [Alignment] calculateAlignments cols tbodies = case cells of cs:_ -> take cols $ concatMap cellAligns cs ++ repeat AlignDefault _ -> replicate cols AlignDefault where cells :: [[Cell]] cells = concatMap bodyRowCells tbodies cellAligns :: Cell -> [Alignment] cellAligns (Cell _ align _ (ColSpan cs) _) = replicate cs align bodyRowCells :: TableBody -> [[Cell]] bodyRowCells = map rowCells . bodyRows headRows :: TableHead -> [B.Row] headRows (TableHead _ rows) = rows bodyRows :: TableBody -> [B.Row] bodyRows (TableBody _ _ headerRows bodyRows') = headerRows <> bodyRows' footRows :: TableFoot -> [B.Row] footRows (TableFoot _ rows) = rows rowCells :: B.Row -> [Cell] rowCells (Row _ cells) = cells pandoc-3.1.3/src/Text/Pandoc/Readers/HTML/TagCategories.hs0000644000000000000000000000524007346545000021301 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Readers.HTML.TagCategories Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Categories of tags. -} module Text.Pandoc.Readers.HTML.TagCategories ( blockHtmlTags , blockDocBookTags , eitherBlockOrInline , epubTags , blockTags , sectioningContent , groupingContent ) where import Data.Set (Set, fromList, unions) import Data.Text (Text) eitherBlockOrInline :: Set Text eitherBlockOrInline = fromList ["audio", "applet", "button", "iframe", "embed", "del", "ins", "progress", "map", "area", "noscript", "script", "object", "svg", "video", "source", "track"] blockHtmlTags :: Set Text blockHtmlTags = fromList ["?xml", "!DOCTYPE", "address", "article", "aside", "blockquote", "body", "canvas", "caption", "center", "col", "colgroup", "dd", "details", "dir", "div", "dl", "dt", "fieldset", "figcaption", "figure", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr", "html", "isindex", "main", "menu", "meta", "noframes", "nav", "ol", "output", "p", "pre", "section", "summary", "table", "tbody", "textarea", "thead", "tfoot", "ul", "dd", "dt", "frameset", "li", "tbody", "td", "tfoot", "th", "thead", "tr", "script", "style"] -- We want to allow raw docbook in markdown documents, so we -- include docbook block tags here too. blockDocBookTags :: Set Text blockDocBookTags = fromList ["calloutlist", "bibliolist", "glosslist", "itemizedlist", "orderedlist", "segmentedlist", "simplelist", "variablelist", "caution", "important", "note", "tip", "warning", "address", "literallayout", "programlisting", "programlistingco", "screen", "screenco", "screenshot", "synopsis", "example", "informalexample", "figure", "informalfigure", "table", "informaltable", "para", "simpara", "formalpara", "equation", "informalequation", "figure", "screenshot", "mediaobject", "qandaset", "procedure", "task", "cmdsynopsis", "funcsynopsis", "classsynopsis", "blockquote", "epigraph", "msgset", "sidebar", "title"] epubTags :: Set Text epubTags = fromList ["case", "switch", "default"] blockTags :: Set Text blockTags = unions [blockHtmlTags, blockDocBookTags, epubTags] sectioningContent :: [Text] sectioningContent = ["article", "aside", "nav", "section"] groupingContent :: [Text] groupingContent = ["p", "hr", "pre", "blockquote", "ol" , "ul", "li", "dl", "dt", "dt", "dd" , "figure", "figcaption", "div", "main"] pandoc-3.1.3/src/Text/Pandoc/Readers/HTML/Types.hs0000644000000000000000000000571707346545000017675 0ustar0000000000000000{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {- | Module : Text.Pandoc.Readers.HTML.Types Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Types for pandoc's HTML reader. -} module Text.Pandoc.Readers.HTML.Types ( TagParser , HTMLParser , HTMLState (..) , HTMLLocal (..) ) where import Control.Monad.Reader (ReaderT, asks, local) import Data.Default (Default (def)) import Data.Map (Map) import Data.Set (Set) import Data.Text (Text) import Network.URI (URI) import Text.HTML.TagSoup import Text.Pandoc.Builder (Blocks, HasMeta (..)) import Text.Pandoc.Class.PandocMonad (PandocMonad (..)) import Text.Pandoc.Logging (LogMessage) import Text.Pandoc.Options (ReaderOptions) import Text.Pandoc.Parsing ( HasIdentifierList (..), HasLastStrPosition (..), HasLogMessages (..) , HasMacros (..), HasQuoteContext (..), HasReaderOptions (..) , ParsecT, ParserState, QuoteContext (NoQuote) ) import Text.Pandoc.TeX (Macro) -- | HTML parser type type HTMLParser m s = ParsecT s HTMLState (ReaderT HTMLLocal m) -- | HTML parser, expecting @Tag Text@ as tokens. type TagParser m = HTMLParser m [Tag Text] -- | Global HTML parser state data HTMLState = HTMLState { parserState :: ParserState , noteTable :: [(Text, Blocks)] , baseHref :: Maybe URI , identifiers :: Set Text , logMessages :: [LogMessage] , macros :: Map Text Macro , readerOpts :: ReaderOptions , inFootnotes :: Bool } -- | Local HTML parser state data HTMLLocal = HTMLLocal { quoteContext :: QuoteContext , inChapter :: Bool -- ^ Set if in chapter section , inPlain :: Bool -- ^ Set if in pPlain } -- Instances instance HasMacros HTMLState where extractMacros = macros updateMacros f st = st{ macros = f $ macros st } instance HasIdentifierList HTMLState where extractIdentifierList = identifiers updateIdentifierList f s = s{ identifiers = f (identifiers s) } instance HasLogMessages HTMLState where addLogMessage m s = s{ logMessages = m : logMessages s } getLogMessages = reverse . logMessages -- This signature should be more general -- MonadReader HTMLLocal m => HasQuoteContext st m instance PandocMonad m => HasQuoteContext HTMLState (ReaderT HTMLLocal m) where getQuoteContext = asks quoteContext withQuoteContext q = local (\s -> s{quoteContext = q}) instance HasReaderOptions HTMLState where extractReaderOptions = extractReaderOptions . parserState instance HasMeta HTMLState where setMeta s b st = st {parserState = setMeta s b $ parserState st} deleteMeta s st = st {parserState = deleteMeta s $ parserState st} instance Default HTMLLocal where def = HTMLLocal NoQuote False False instance HasLastStrPosition HTMLState where setLastStrPos s st = st {parserState = setLastStrPos s (parserState st)} getLastStrPos = getLastStrPos . parserState pandoc-3.1.3/src/Text/Pandoc/Readers/Haddock.hs0000644000000000000000000001751207346545000017356 0ustar0000000000000000{-# LANGUAGE CPP #-} {-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Readers.Haddock Copyright : Copyright (C) 2013 David Lazar License : GNU GPL, version 2 or above Maintainer : David Lazar , John MacFarlane Stability : alpha Conversion of Haddock markup to 'Pandoc' document. -} module Text.Pandoc.Readers.Haddock ( readHaddock ) where import Control.Monad.Except (throwError) import Data.List (intersperse) import Data.List.NonEmpty (nonEmpty) import Data.Maybe (fromMaybe) import Data.Text (unpack) import qualified Data.Text as T import Documentation.Haddock.Parser import Documentation.Haddock.Types as H import Text.Pandoc.Builder (Blocks, Inlines) import qualified Text.Pandoc.Builder as B import Text.Pandoc.Class.PandocMonad (PandocMonad) import Text.Pandoc.Definition import Text.Pandoc.Error import Text.Pandoc.Options import Text.Pandoc.Sources (ToSources(..), sourcesToText) import Text.Pandoc.Shared (splitTextBy, trim) -- | Parse Haddock markup and return a 'Pandoc' document. readHaddock :: (PandocMonad m, ToSources a) => ReaderOptions -> a -> m Pandoc readHaddock opts s = case readHaddockEither opts (unpack . sourcesToText . toSources $ s) of Right result -> return result Left e -> throwError e readHaddockEither :: ReaderOptions -- ^ Reader options -> String -- ^ String to parse -> Either PandocError Pandoc readHaddockEither _opts = Right . B.doc . docHToBlocks . _doc . parseParas Nothing docHToBlocks :: DocH String Identifier -> Blocks docHToBlocks d' = case d' of DocEmpty -> mempty DocAppend (DocParagraph (DocHeader h)) (DocParagraph (DocAName ident)) -> B.headerWith (T.pack ident,[],[]) (headerLevel h) (docHToInlines False $ headerTitle h) DocAppend d1 d2 -> mappend (docHToBlocks d1) (docHToBlocks d2) DocString _ -> inlineFallback DocParagraph (DocAName h) -> B.plain $ docHToInlines False $ DocAName h DocParagraph x -> B.para $ docHToInlines False x DocIdentifier _ -> inlineFallback DocIdentifierUnchecked _ -> inlineFallback DocModule s -> B.plain $ docHToInlines False $ DocModule s DocWarning _ -> mempty -- TODO DocEmphasis _ -> inlineFallback DocMonospaced _ -> inlineFallback DocBold _ -> inlineFallback DocMathInline _ -> inlineFallback DocMathDisplay _ -> inlineFallback DocHeader h -> B.header (headerLevel h) (docHToInlines False $ headerTitle h) DocUnorderedList items -> B.bulletList (map docHToBlocks items) #if MIN_VERSION_haddock_library(1,11,0) DocOrderedList items -> B.orderedListWith attr (map (docHToBlocks . snd) items) where attr = (start, DefaultStyle, DefaultDelim) start = case items of [] -> 1 ((n,_):_) -> n #else DocOrderedList items -> B.orderedList (map docHToBlocks items) #endif DocDefList items -> B.definitionList (map (\(d,t) -> (docHToInlines False d, [consolidatePlains $ docHToBlocks t])) items) DocCodeBlock (DocString s) -> B.codeBlockWith ("",[],[]) $ T.pack s DocCodeBlock d -> B.para $ docHToInlines True d DocHyperlink _ -> inlineFallback DocPic _ -> inlineFallback DocAName _ -> inlineFallback DocProperty s -> B.codeBlockWith ("",["property","haskell"],[]) (trim $ T.pack s) DocExamples es -> mconcat $ map (\e -> makeExample ">>>" (exampleExpression e) (exampleResult e)) es DocTable H.Table{ tableHeaderRows = headerRows , tableBodyRows = bodyRows } -> let toCells = map (docHToBlocks . tableCellContents) . tableRowCells toRow = Row nullAttr . map B.simpleCell toHeaderRow l = [toRow l | not (null l)] (header, body) = if null headerRows then ([], map toCells bodyRows) else (toCells (head headerRows), map toCells (tail headerRows ++ bodyRows)) colspecs = replicate (maybe 0 maximum (nonEmpty (map length body))) (AlignDefault, ColWidthDefault) in B.table B.emptyCaption colspecs (TableHead nullAttr $ toHeaderRow header) [TableBody nullAttr 0 [] $ map toRow body] (TableFoot nullAttr []) where inlineFallback = B.plain $ docHToInlines False d' consolidatePlains = B.fromList . consolidatePlains' . B.toList consolidatePlains' zs@(Plain _ : _) = let (xs, ys) = span isPlain zs in Para (concatMap extractContents xs) : consolidatePlains' ys consolidatePlains' (x : xs) = x : consolidatePlains' xs consolidatePlains' [] = [] isPlain (Plain _) = True isPlain _ = False extractContents (Plain xs) = xs extractContents _ = [] docHToInlines :: Bool -> DocH String Identifier -> Inlines docHToInlines isCode d' = case d' of DocEmpty -> mempty DocAppend d1 d2 -> mappend (docHToInlines isCode d1) (docHToInlines isCode d2) DocString s | isCode -> mconcat $ intersperse B.linebreak $ map B.code $ splitTextBy (=='\n') $ T.pack s | otherwise -> B.text $ T.pack s DocParagraph _ -> mempty DocIdentifier ident -> case toRegular (DocIdentifier ident) of DocIdentifier s -> B.codeWith ("",["haskell","identifier"],[]) $ T.pack s _ -> mempty DocIdentifierUnchecked s -> B.codeWith ("",["haskell","identifier"],[]) $ T.pack s DocModule s -> B.codeWith ("",["haskell","module"],[]) $ T.pack (modLinkName s) DocWarning _ -> mempty -- TODO DocEmphasis d -> B.emph (docHToInlines isCode d) DocMonospaced (DocString s) -> B.code $ T.pack s DocMonospaced d -> docHToInlines True d DocBold d -> B.strong (docHToInlines isCode d) DocMathInline s -> B.math $ T.pack s DocMathDisplay s -> B.displayMath $ T.pack s DocHeader _ -> mempty DocUnorderedList _ -> mempty DocOrderedList _ -> mempty DocDefList _ -> mempty DocCodeBlock _ -> mempty DocHyperlink h -> B.link (T.pack $ hyperlinkUrl h) (T.pack $ hyperlinkUrl h) (maybe (B.text $ T.pack $ hyperlinkUrl h) (docHToInlines isCode) (hyperlinkLabel h)) DocPic p -> B.image (T.pack $ pictureUri p) (T.pack $ fromMaybe (pictureUri p) $ pictureTitle p) (maybe mempty (B.text . T.pack) $ pictureTitle p) DocAName s -> B.spanWith (T.pack s,["anchor"],[]) mempty DocProperty _ -> mempty DocExamples _ -> mempty DocTable _ -> mempty -- | Create an 'Example', stripping superfluous characters as appropriate makeExample :: T.Text -> String -> [String] -> Blocks makeExample prompt expression result = B.para $ B.codeWith ("",["prompt"],[]) prompt <> B.space <> B.codeWith ("", ["haskell","expr"], []) (trim $ T.pack expression) <> B.linebreak <> mconcat (intersperse B.linebreak $ map coder result') where -- 1. drop trailing whitespace from the prompt, remember the prefix prefix = T.takeWhile (`elem` (" \t" :: String)) prompt -- 2. drop, if possible, the exact same sequence of whitespace -- characters from each result line -- -- 3. interpret lines that only contain the string "" as an -- empty line result' = map (substituteBlankLine . tryStripPrefix prefix . T.pack) result where tryStripPrefix xs ys = fromMaybe ys $ T.stripPrefix xs ys substituteBlankLine "" = "" substituteBlankLine line = line coder = B.codeWith ("", ["result"], []) pandoc-3.1.3/src/Text/Pandoc/Readers/Ipynb.hs0000644000000000000000000002266107346545000017103 0ustar0000000000000000{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE ScopedTypeVariables #-} {- | Module : Text.Pandoc.Readers.Ipynb Copyright : Copyright (C) 2019-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Ipynb (Jupyter notebook JSON format) reader for pandoc. -} module Text.Pandoc.Readers.Ipynb ( readIpynb ) where import Data.Char (isDigit) import Data.Maybe (fromMaybe) import Data.Digest.Pure.SHA (sha1, showDigest) import Text.Pandoc.Options import Control.Applicative ((<|>)) import qualified Data.Scientific as Scientific import qualified Text.Pandoc.Builder as B import Text.Pandoc.Logging import Text.Pandoc.Definition import Data.Ipynb as Ipynb import Text.Pandoc.Class.PandocMonad import Text.Pandoc.MIME (extensionFromMimeType) import Text.Pandoc.Shared (tshow) import Text.Pandoc.UTF8 import Text.Pandoc.Walk (walk) import Text.Pandoc.Error import Data.Text (Text) import qualified Data.Map as M import qualified Data.Text as T import qualified Data.Text.Encoding as TE import qualified Data.ByteString.Lazy as BL import Data.Aeson as Aeson import Control.Monad.Except (throwError) import Text.Pandoc.Readers.Markdown (readMarkdown) import qualified Text.Pandoc.UTF8 as UTF8 import Text.Pandoc.Sources (ToSources(..), sourcesToText) readIpynb :: (PandocMonad m, ToSources a) => ReaderOptions -> a -> m Pandoc readIpynb opts x = do let src = BL.fromStrict . TE.encodeUtf8 . sourcesToText $ toSources x case eitherDecode src of Right (notebook4 :: Notebook NbV4) -> notebookToPandoc opts notebook4 Left _ -> case eitherDecode src of Right (notebook3 :: Notebook NbV3) -> notebookToPandoc opts notebook3 Left err -> throwError $ PandocIpynbDecodingError $ T.pack err notebookToPandoc :: PandocMonad m => ReaderOptions -> Notebook a -> m Pandoc notebookToPandoc opts notebook = do let cells = notebookCells notebook let (fmt,fmtminor) = notebookFormat notebook let m = M.insert "nbformat" (MetaString $ tshow fmt) $ M.insert "nbformat_minor" (MetaString $ tshow fmtminor) $ jsonMetaToMeta (notebookMetadata notebook) let lang = case M.lookup "kernelspec" m of Just (MetaMap ks) -> case M.lookup "language" ks of Just (MetaString l) -> l _ -> "python" _ -> "python" bs <- mconcat <$> mapM (cellToBlocks opts lang) cells let Pandoc _ blocks = B.doc bs return $ Pandoc (Meta $ M.insert "jupyter" (MetaMap m) mempty) blocks cellToBlocks :: PandocMonad m => ReaderOptions -> Text -> Ipynb.Cell a -> m B.Blocks cellToBlocks opts lang c = do let Source ts = cellSource c let source = mconcat ts let kvs = jsonMetaToPairs (cellMetadata c) let attachments = case cellAttachments c of Nothing -> mempty Just (MimeAttachments m) -> M.toList m let ident = fromMaybe mempty $ cellId c mapM_ (addAttachment (cellId c)) attachments case cellType c of Ipynb.Markdown -> do bs <- if isEnabled Ext_raw_markdown opts then return [RawBlock (Format "markdown") source] else do Pandoc _ bs <- walk (fixImage (cellId c)) <$> readMarkdown opts source return bs return $ B.divWith (ident,["cell","markdown"],kvs) $ B.fromList bs Ipynb.Heading lev -> do Pandoc _ bs <- readMarkdown opts (T.replicate lev "#" <> " " <> source) return $ B.divWith (ident,["cell","markdown"],kvs) $ B.fromList bs Ipynb.Raw -> do -- we use ipynb to indicate no format given (a wildcard in nbformat) let format = fromMaybe "ipynb" $ lookup "raw_mimetype" kvs <|> lookup "format" kvs let format' = case format of "text/html" -> "html" "slides" -> "html" "text/latex" -> "latex" "application/pdf" -> "latex" "pdf" -> "latex" "text/markdown" -> "markdown" "text/x-rst" -> "rst" "text/restructuredtext" -> "rst" "text/asciidoc" -> "asciidoc" _ -> format return $ B.divWith (ident,["cell","raw"],kvs) $ B.rawBlock format' source Ipynb.Code{ codeOutputs = outputs, codeExecutionCount = ec } -> do outputBlocks <- mconcat <$> mapM outputToBlock outputs let kvs' = maybe kvs (\x -> ("execution_count", tshow x):kvs) ec return $ B.divWith (ident,["cell","code"],kvs') $ B.codeBlockWith ("",[lang],[]) source <> outputBlocks -- Remove attachment: prefix from images... fixImage :: Maybe Text -> Inline -> Inline fixImage mbident (Image attr lab (src,tit)) | "attachment:" `T.isPrefixOf` src = let src' = T.drop 11 src qualifiedSrc = maybe src' (<> ("-" <> src')) mbident in Image attr lab (qualifiedSrc, tit) fixImage _ x = x addAttachment :: PandocMonad m => Maybe Text -> (Text, MimeBundle) -> m () addAttachment mbident (fname, mimeBundle) = do let fp = T.unpack $ maybe fname (<> ("-" <> fname)) mbident case M.toList (unMimeBundle mimeBundle) of (mimeType, BinaryData bs):_ -> insertMedia fp (Just mimeType) (BL.fromStrict bs) (mimeType, TextualData t):_ -> insertMedia fp (Just mimeType) (BL.fromStrict $ TE.encodeUtf8 t) (mimeType, JsonData v):_ -> insertMedia fp (Just mimeType) (encode v) [] -> report $ CouldNotFetchResource fname "no attachment" outputToBlock :: PandocMonad m => Output a -> m B.Blocks outputToBlock Stream{ streamName = sName, streamText = Source text } = return $ B.divWith ("",["output","stream",sName],[]) $ B.codeBlock $ T.concat text outputToBlock DisplayData{ displayData = data', displayMetadata = metadata' } = B.divWith ("",["output", "display_data"],[]) <$> handleData metadata' data' outputToBlock ExecuteResult{ executeCount = ec, executeData = data', executeMetadata = metadata' } = B.divWith ("",["output", "execute_result"],[("execution_count",tshow ec)]) <$> handleData metadata' data' outputToBlock Err{ errName = ename, errValue = evalue, errTraceback = traceback } = return $ B.divWith ("",["output","error"], [("ename",ename), ("evalue",evalue)]) $ B.codeBlock $ T.unlines traceback -- We want to display the richest output possible given -- the output format. handleData :: PandocMonad m => JSONMeta -> MimeBundle -> m B.Blocks handleData (JSONMeta metadata) (MimeBundle mb) = mconcat <$> mapM dataBlock (M.toList mb) where dataBlock :: PandocMonad m => (MimeType, MimeData) -> m B.Blocks dataBlock (mt, d) | "image/" `T.isPrefixOf` mt || mt == "application/pdf" = do -- normally metadata maps from mime types to key-value map; -- but not always... let meta = case M.lookup mt metadata of Just v@Object{} -> case fromJSON v of Success m' -> m' Error _ -> mempty _ -> mempty let metaPairs = jsonMetaToPairs meta let bl = case d of BinaryData bs -> BL.fromStrict bs TextualData t -> BL.fromStrict $ UTF8.fromText t JsonData v -> encode v -- SHA1 hash for filename let fname = T.pack (showDigest (sha1 bl)) <> case extensionFromMimeType mt of Nothing -> "" Just ext -> "." <> ext insertMedia (T.unpack fname) (Just mt) bl return $ B.para $ B.imageWith ("",[],metaPairs) fname "" mempty dataBlock ("text/html", TextualData t) = return $ B.rawBlock "html" t dataBlock ("text/latex", TextualData t) = return $ B.rawBlock "latex" t dataBlock ("text/markdown", TextualData t) = return $ B.rawBlock "markdown" t dataBlock ("text/plain", TextualData t) = return $ B.codeBlock t dataBlock (_, JsonData v) = return $ B.codeBlockWith ("",["json"],[]) $ T.pack $ toStringLazy $ encode v dataBlock _ = return mempty jsonMetaToMeta :: JSONMeta -> M.Map Text MetaValue jsonMetaToMeta (JSONMeta m) = M.map valueToMetaValue m where valueToMetaValue :: Value -> MetaValue valueToMetaValue x@Object{} = case fromJSON x of Error s -> MetaString $ T.pack s Success jm' -> MetaMap $ jsonMetaToMeta jm' valueToMetaValue x@Array{} = case fromJSON x of Error s -> MetaString $ T.pack s Success xs -> MetaList $ map valueToMetaValue xs valueToMetaValue (Bool b) = MetaBool b valueToMetaValue (String t) = MetaString t valueToMetaValue (Number n) | Scientific.isInteger n = MetaString (tshow (floor n :: Integer)) | otherwise = MetaString (tshow n) valueToMetaValue Aeson.Null = MetaString "" jsonMetaToPairs :: JSONMeta -> [(Text, Text)] jsonMetaToPairs (JSONMeta m) = M.toList . M.map (\case String t | not (T.all isDigit t) , t /= "true" , t /= "false" -> t x -> T.pack $ UTF8.toStringLazy $ Aeson.encode x) $ m pandoc-3.1.3/src/Text/Pandoc/Readers/JATS.hs0000644000000000000000000007166407346545000016572 0ustar0000000000000000{-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TupleSections #-} {-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Readers.JATS Copyright : Copyright (C) 2017-2020 Hamish Mackenzie License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Conversion of JATS XML to 'Pandoc' document. -} module Text.Pandoc.Readers.JATS ( readJATS ) where import Control.Monad.State.Strict ( StateT(runStateT), gets, modify ) import Control.Monad (forM_, when, unless, MonadPlus(mplus)) import Control.Monad.Except (throwError) import Text.Pandoc.Error (PandocError(..)) import Data.Char (isDigit, isSpace) import Data.Default import Data.Generics import Data.List (foldl', intersperse) import qualified Data.Map as Map import Data.Maybe (maybeToList, fromMaybe, catMaybes) import Data.Text (Text) import qualified Data.Text as T import qualified Data.Text.Lazy as TL import Text.Pandoc.XML (lookupEntity) import Text.Pandoc.Builder import Text.Pandoc.Class.PandocMonad (PandocMonad) import Text.Pandoc.Options import Text.Pandoc.Shared (safeRead, extractSpaces) import Text.Pandoc.Walk (walk) import Text.Pandoc.XML.Light import Text.TeXMath (readMathML, writeTeX) import qualified Data.Set as S (fromList, member) import Data.Set ((\\)) import Text.Pandoc.Sources (ToSources(..), sourcesToText) type JATS m = StateT JATSState m data JATSState = JATSState{ jatsSectionLevel :: Int , jatsQuoteType :: QuoteType , jatsMeta :: Meta , jatsBook :: Bool , jatsFootnotes :: Map.Map Text Blocks , jatsContent :: [Content] , jatsInFigure :: Bool } deriving Show instance Default JATSState where def = JATSState{ jatsSectionLevel = 0 , jatsQuoteType = DoubleQuote , jatsMeta = mempty , jatsBook = False , jatsFootnotes = mempty , jatsContent = [] , jatsInFigure = False } readJATS :: (PandocMonad m, ToSources a) => ReaderOptions -> a -> m Pandoc readJATS _ inp = do let sources = toSources inp tree <- either (throwError . PandocXMLError "") return $ parseXMLContents (TL.fromStrict . sourcesToText $ sources) (bs, st') <- flip runStateT (def{ jatsContent = tree }) $ mapM parseBlock tree let footnotes = jatsFootnotes st' let blockList = toList $ mconcat bs let linkToFootnotes :: Inline -> Inline linkToFootnotes link'@(Link _attr _txt (href, _title)) = case T.uncons href of Just ('#', rid) -> case Map.lookup rid footnotes of Just footnote -> Note (toList footnote) Nothing -> link' _ -> link' linkToFootnotes inline = inline return $ Pandoc (jatsMeta st') (walk linkToFootnotes blockList) -- convenience function to get an attribute value, defaulting to "" attrValue :: Text -> Element -> Text attrValue attr = fromMaybe "" . maybeAttrValue attr maybeAttrValue :: Text -> Element -> Maybe Text maybeAttrValue attr elt = lookupAttrBy (\x -> qName x == attr) (elAttribs elt) -- convenience function named :: Text -> Element -> Bool named s e = qName (elName e) == s -- addMeta :: PandocMonad m => ToMetaValue a => Text -> a -> JATS m () addMeta field val = modify (setMeta field val) instance HasMeta JATSState where setMeta field v s = s {jatsMeta = setMeta field v (jatsMeta s)} deleteMeta field s = s {jatsMeta = deleteMeta field (jatsMeta s)} isBlockElement :: Content -> Bool isBlockElement (Elem e) = qName (elName e) `S.member` blocktags where blocktags = S.fromList (paragraphLevel ++ lists ++ mathML ++ other) \\ S.fromList inlinetags paragraphLevel = ["address", "array", "boxed-text", "chem-struct-wrap", "code", "fig", "fig-group", "graphic", "media", "preformat", "supplementary-material", "table-wrap", "table-wrap-group", "alternatives", "disp-formula", "disp-formula-group"] lists = ["def-list", "list"] mathML = ["tex-math", "mml:math"] other = ["p", "related-article", "related-object", "ack", "disp-quote", "speech", "statement", "verse-group", "x"] inlinetags = ["email", "ext-link", "uri", "inline-supplementary-material", "related-article", "related-object", "hr", "bold", "fixed-case", "italic", "monospace", "overline", "overline-start", "overline-end", "roman", "sans-serif", "sc", "strike", "underline", "underline-start", "underline-end", "ruby", "alternatives", "inline-graphic", "private-char", "chem-struct", "inline-formula", "tex-math", "mml:math", "abbrev", "milestone-end", "milestone-start", "named-content", "styled-content", "fn", "target", "xref", "sub", "sup", "x", "address", "array", "boxed-text", "chem-struct-wrap", "code", "fig", "fig-group", "graphic", "media", "preformat", "supplementary-material", "table-wrap", "table-wrap-group", "disp-formula", "disp-formula-group", "citation-alternatives", "element-citation", "mixed-citation", "nlm-citation", "award-id", "funding-source", "open-access", "def-list", "list", "ack", "disp-quote", "speech", "statement", "verse-group"] isBlockElement _ = False -- Trim leading and trailing newline characters trimNl :: Text -> Text trimNl = T.dropAround (== '\n') -- function that is used by both graphic (in parseBlock) -- and inline-graphic (in parseInline) getGraphic :: PandocMonad m => Maybe (Inlines, Text) -> Element -> JATS m Inlines getGraphic mbfigdata e = do let atVal a = attrValue a e (ident, title, capt) = case mbfigdata of Just (capt', i) -> (i, "fig:" <> atVal "title", capt') Nothing -> (atVal "id", atVal "title", text (atVal "alt-text")) attr = (ident, T.words $ atVal "role", []) imageUrl = atVal "href" return $ imageWith attr imageUrl title capt getBlocks :: PandocMonad m => Element -> JATS m Blocks getBlocks e = mconcat <$> mapM parseBlock (elContent e) parseBlock :: PandocMonad m => Content -> JATS m Blocks parseBlock (Text (CData CDataRaw _ _)) = return mempty -- DOCTYPE parseBlock (Text (CData _ s _)) = if T.all isSpace s then return mempty else return $ plain $ trimInlines $ text s parseBlock (CRef x) = return $ plain $ str $ T.toUpper x parseBlock (Elem e) = do sectionLevel <- gets jatsSectionLevel let parseBlockWithHeader = wrapWithHeader (sectionLevel+1) (getBlocks e) case qName (elName e) of "p" -> parseMixed para (elContent e) "code" -> codeBlockWithLang "preformat" -> codeBlockWithLang "disp-quote" -> wrapWithHeader (sectionLevel+1) parseBlockquote "list" -> wrapWithHeader (sectionLevel+1) parseList "def-list" -> wrapWithHeader (sectionLevel+1) (definitionList <$> deflistitems) "sec" -> parseBlockWithHeader "abstract" -> parseBlockWithHeader "ack" -> parseBlockWithHeader "answer" -> parseBlockWithHeader "answer-set" -> parseBlockWithHeader "app" -> parseBlockWithHeader "app-group" -> parseBlockWithHeader "author-comment" -> parseBlockWithHeader "author-notes" -> parseBlockWithHeader "back" -> parseBlockWithHeader "bio" -> parseBlockWithHeader "explanation" -> parseBlockWithHeader "glossary" -> parseBlockWithHeader "kwd-group" -> parseBlockWithHeader "list-item" -> parseBlockWithHeader "notes" -> parseBlockWithHeader "option" -> parseBlockWithHeader "question" -> parseBlockWithHeader "question-preamble" -> parseBlockWithHeader "question-wrap-group" -> parseBlockWithHeader "statement" -> parseBlockWithHeader "supplement" -> parseBlockWithHeader "table-wrap-foot" -> parseBlockWithHeader "trans-abstract" -> parseBlockWithHeader "verse-group" -> parseBlockWithHeader "graphic" -> para <$> getGraphic Nothing e "journal-meta" -> parseMetadata e "article-meta" -> parseMetadata e "custom-meta" -> parseMetadata e "title" -> return mempty -- processed by header "label" -> return mempty -- processed by header "table" -> parseTable "fig" -> parseFigure "fig-group" -> divWith (attrValue "id" e, ["fig-group"], []) <$> getBlocks e "table-wrap" -> divWith (attrValue "id" e, ["table-wrap"], []) <$> getBlocks e "caption" -> do inFigure <- gets jatsInFigure if inFigure -- handled by parseFigure then return mempty else divWith (attrValue "id" e, ["caption"], []) <$> wrapWithHeader 6 (getBlocks e) "fn-group" -> parseFootnoteGroup "ref-list" -> parseRefList e "?xml" -> return mempty _ -> getBlocks e where parseMixed container conts = do let (ils,rest) = break isBlockElement conts ils' <- trimInlines . mconcat <$> mapM parseInline ils let p = if ils' == mempty then mempty else container ils' case rest of [] -> return p (r:rs) -> do b <- parseBlock r x <- parseMixed container rs return $ p <> b <> x codeBlockWithLang = do let classes' = case attrValue "language" e of "" -> [] x -> [x] return $ codeBlockWith (attrValue "id" e, classes', []) $ trimNl $ strContentRecursive e parseBlockquote = do attrib <- case filterChild (named "attribution") e of Nothing -> return mempty Just z -> para . (str "— " <>) . mconcat <$> mapM parseInline (elContent z) contents <- getBlocks e return $ blockQuote (contents <> attrib) parseList = do case attrValue "list-type" e of "bullet" -> bulletList <$> listitems listType -> do let start = fromMaybe 1 $ ( filterElement (named "list-item") e >>= filterElement (named "label") ) >>= safeRead . textContent orderedListWith (start, parseListStyleType listType, DefaultDelim) <$> listitems parseListStyleType "roman-lower" = LowerRoman parseListStyleType "roman-upper" = UpperRoman parseListStyleType "alpha-lower" = LowerAlpha parseListStyleType "alpha-upper" = UpperAlpha parseListStyleType _ = DefaultStyle listitems = mapM getBlocks $ filterChildren (named "list-item") e deflistitems = mapM parseVarListEntry $ filterChildren (named "def-item") e parseVarListEntry e' = do let terms = filterChildren (named "term") e' let items = filterChildren (named "def") e' terms' <- mapM getInlines terms items' <- mapM getBlocks items return (mconcat $ intersperse (str "; ") terms', items') parseFigure = do modify $ \st -> st{ jatsInFigure = True } capt <- case filterChild (named "caption") e of Just t -> mconcat . intersperse linebreak <$> mapM getInlines (filterChildren (const True) t) Nothing -> return mempty contents <- getBlocks e modify $ \st -> st{ jatsInFigure = False } return $ figureWith (attrValue "id" e, [], []) (simpleCaption $ plain capt) contents parseFootnoteGroup = do forM_ (filterChildren (named "fn") e) $ \fn -> do let id' = attrValue "id" fn contents <- getBlocks fn modify $ \st -> st { jatsFootnotes = Map.insert id' contents (jatsFootnotes st) } return mempty parseTable = do let isCaption x = named "title" x || named "caption" x capt <- case filterChild isCaption e of Just t -> getInlines t Nothing -> return mempty let e' = fromMaybe e $ filterChild (named "tgroup") e let isColspec x = named "colspec" x || named "col" x let colspecs = case filterChild (named "colgroup") e' of Just c -> filterChildren isColspec c _ -> filterChildren isColspec e' let isRow x = named "row" x || named "tr" x -- list of header cell elements let headRowElements = case filterChild (named "thead") e' of Just h -> maybe [] parseElement (filterChild isRow h) Nothing -> [] -- list of list of body cell elements let bodyRowElements = case filterChild (named "tbody") e' of Just b -> map parseElement $ filterChildren isRow b Nothing -> map parseElement $ filterChildren isRow e' let toAlignment c = case findAttr (unqual "align") c of Just "left" -> AlignLeft Just "right" -> AlignRight Just "center" -> AlignCenter _ -> AlignDefault let toColSpan element = fromMaybe 1 $ findAttr (unqual "colspan") element >>= safeRead let toRowSpan element = fromMaybe 1 $ findAttr (unqual "rowspan") element >>= safeRead let toWidth c = do w <- findAttr (unqual "colwidth") c n <- safeRead $ "0" <> T.filter (\x -> isDigit x || x == '.') w if n > 0 then Just n else Nothing let numrows = foldl' max 0 $ map length bodyRowElements let aligns = case colspecs of [] -> replicate numrows AlignDefault cs -> map toAlignment cs let widths = case colspecs of [] -> replicate numrows ColWidthDefault cs -> let ws = map toWidth cs in case sequence ws of Just ws' -> let tot = sum ws' in ColWidth . (/ tot) <$> ws' Nothing -> replicate numrows ColWidthDefault let parseCell = parseMixed plain . elContent let elementToCell element = cell (toAlignment element) (RowSpan $ toRowSpan element) (ColSpan $ toColSpan element) <$> (parseCell element) let rowElementsToCells elements = mapM elementToCell elements let toRow = fmap (Row nullAttr) . rowElementsToCells toHeaderRow element = sequence $ [toRow element | not (null element)] headerRow <- toHeaderRow headRowElements bodyRows <- mapM toRow bodyRowElements return $ table (simpleCaption $ plain capt) (zip aligns widths) (TableHead nullAttr headerRow) [TableBody nullAttr 0 [] bodyRows] (TableFoot nullAttr []) isEntry x = named "entry" x || named "td" x || named "th" x parseElement = filterChildren isEntry wrapWithHeader n mBlocks = do isBook <- gets jatsBook let n' = if isBook || n == 0 then n + 1 else n headerText <- case filterChild (named "title") e `mplus` (filterChild (named "info") e >>= filterChild (named "title")) of Just t -> getInlines t Nothing -> return mempty oldN <- gets jatsSectionLevel modify $ \st -> st{ jatsSectionLevel = n } blocks <- mBlocks let ident = attrValue "id" e modify $ \st -> st{ jatsSectionLevel = oldN } return $ (if headerText == mempty then mempty else headerWith (ident,[],[]) n' headerText) <> blocks getInlines :: PandocMonad m => Element -> JATS m Inlines getInlines e' = trimInlines . mconcat <$> mapM parseInline (elContent e') parseMetadata :: PandocMonad m => Element -> JATS m Blocks parseMetadata e = do getTitle e getAuthors e getAffiliations e getAbstract e getPubDate e return mempty getTitle :: PandocMonad m => Element -> JATS m () getTitle e = do tit <- case filterElement (named "article-title") e of Just s -> getInlines s Nothing -> return mempty subtit <- case filterElement (named "subtitle") e of Just s -> (text ": " <>) <$> getInlines s Nothing -> return mempty when (tit /= mempty) $ addMeta "title" tit when (subtit /= mempty) $ addMeta "subtitle" subtit getAuthors :: PandocMonad m => Element -> JATS m () getAuthors e = do authors <- mapM getContrib $ filterElements (\x -> named "contrib" x && attrValue "contrib-type" x == "author") e authorNotes <- mapM getInlines $ filterElements (named "author-notes") e let authors' = case (reverse authors, authorNotes) of ([], _) -> [] (_, []) -> authors (a:as, ns) -> reverse as ++ [a <> mconcat ns] unless (null authors) $ addMeta "author" authors' getAffiliations :: PandocMonad m => Element -> JATS m () getAffiliations x = do affs <- mapM getInlines $ filterChildren (named "aff") x unless (null affs) $ addMeta "institute" affs getAbstract :: PandocMonad m => Element -> JATS m () getAbstract e = case filterElement (named "abstract") e of Just s -> do blks <- getBlocks s addMeta "abstract" blks Nothing -> pure () getPubDate :: PandocMonad m => Element -> JATS m () getPubDate e = case filterElement (named "pub-date") e of Just d -> do case maybeAttrValue "iso-8601-date" d of Just isod -> addMeta "date" (text isod) Nothing -> do let yr = strContent <$> filterElement (named "year") d let mon = strContent <$> filterElement (named "month") d let day = strContent <$> filterElement (named "day") d addMeta "date" $ text $ T.intercalate "-" $ catMaybes [yr, mon, day] Nothing -> pure () getContrib :: PandocMonad m => Element -> JATS m Inlines getContrib x = do given <- maybe (return mempty) getInlines $ filterElement (named "given-names") x family <- maybe (return mempty) getInlines $ filterElement (named "surname") x if given == mempty && family == mempty then return mempty else if given == mempty || family == mempty then return $ given <> family else return $ given <> space <> family parseRefList :: PandocMonad m => Element -> JATS m Blocks parseRefList e = do refs <- mapM parseRef $ filterChildren (named "ref") e addMeta "references" refs return mempty parseRef :: PandocMonad m => Element -> JATS m (Map.Map Text MetaValue) parseRef e = do let combineWithDash x y = x <> text "-" <> y let getName nm = do given <- maybe (return mempty) getInlines $ filterChild (named "given-names") nm family <- maybe (return mempty) getInlines $ filterChild (named "surname") nm return $ toMetaValue $ Map.fromList [ ("given" :: Text, given) , ("family", family) ] let refElement :: PandocMonad m => Element -> Element -> JATS m (Maybe (Text, MetaValue)) refElement c el = case qName (elName el) of "article-title" -> Just . ("title",) . toMetaValue <$> getInlines el "source" -> case filterChild (named "article-title") c of Just _ -> Just . ("container-title",) . toMetaValue <$> getInlines el Nothing -> Just . ("title",) . toMetaValue <$> getInlines el "label" -> Just . ("citation-label",) . toMetaValue <$> getInlines el "year" -> case filterChild (named "month") c of Just m -> Just . ("issued",) . toMetaValue <$> (combineWithDash <$> getInlines el <*> getInlines m) Nothing -> Just . ("issued",) . toMetaValue <$> getInlines el "volume" -> Just . ("volume",) . toMetaValue <$> getInlines el "issue" -> Just . ("issue",) . toMetaValue <$> getInlines el "isbn" -> Just . ("ISBN",) . toMetaValue <$> getInlines el "issn" -> Just . ("ISSN",) . toMetaValue <$> getInlines el "uri" -> Just . ("url",) . toMetaValue <$> getInlines el "fpage" -> case filterChild (named "lpage") c of Just lp -> Just . ("page",) . toMetaValue <$> (combineWithDash <$> getInlines el <*> getInlines lp) Nothing -> Just . ("page-first",) . toMetaValue <$> getInlines el "publisher-name" -> Just . ("publisher",) . toMetaValue <$> getInlines el "publisher-loc" -> Just . ("publisher-place",) . toMetaValue <$> getInlines el "edition" -> pure $ Just ("edition", toMetaValue . T.filter isDigit $ strContent el) "person-group" -> do names <- mapM getName (filterChildren (named "name") el) pure $ Just (attrValue "person-group-type" el, toMetaValue names) "pub-id" -> case attrValue "pub-id-type" el of "doi" -> pure $ Just ("DOI", toMetaValue $ strContent el) "pmid" -> pure $ Just ("PMID", toMetaValue $ strContent el) _ -> pure Nothing "object-id" -> case attrValue "pub-id-type" el of "doi" -> pure $ Just ("DOI", toMetaValue $ strContent el) "pmid" -> pure $ Just ("PMID", toMetaValue $ strContent el) _ -> pure Nothing _ -> pure Nothing refVariables <- case filterChild (named "element-citation") e of Just c -> (("type", toMetaValue $ case attrValue "publication-type" c of "journal" -> "article-journal" x -> x) :) . catMaybes <$> mapM (refElement c) (elChildren c) Nothing -> pure [] -- TODO handle mixed-citation -- allows round-tripping, since JATS writer puts ref- in front of citation ids: let stripPref t = fromMaybe t $ T.stripPrefix "ref-" t return $ Map.fromList (("id", toMetaValue $ stripPref $ attrValue "id" e) : refVariables) textContent :: Element -> Text textContent = strContent strContentRecursive :: Element -> Text strContentRecursive = strContent . (\e' -> e'{ elContent = map elementToStr $ elContent e' }) elementToStr :: Content -> Content elementToStr (Elem e') = Text $ CData CDataText (strContentRecursive e') Nothing elementToStr x = x parseInline :: PandocMonad m => Content -> JATS m Inlines parseInline (Text (CData _ s _)) = return $ text s parseInline (CRef ref) = return $ maybe (text $ T.toUpper ref) text $ lookupEntity ref parseInline (Elem e) = case qName (elName e) of "italic" -> innerInlines emph "bold" -> innerInlines strong "strike" -> innerInlines strikeout "sub" -> innerInlines subscript "sup" -> innerInlines superscript "underline" -> innerInlines underline "break" -> return linebreak "sc" -> innerInlines smallcaps "code" -> codeWithLang "monospace" -> codeWithLang "inline-graphic" -> getGraphic Nothing e "disp-quote" -> do qt <- gets jatsQuoteType let qt' = if qt == SingleQuote then DoubleQuote else SingleQuote modify $ \st -> st{ jatsQuoteType = qt' } contents <- innerInlines id modify $ \st -> st{ jatsQuoteType = qt } return $ if qt == SingleQuote then singleQuoted contents else doubleQuoted contents "xref" -> do ils <- innerInlines id let rid = attrValue "rid" e let rids = T.words rid let refType = ("ref-type",) <$> maybeAttrValue "ref-type" e let attr = (attrValue "id" e, [], maybeToList refType) return $ if refType == Just ("ref-type","bibr") then cite (map (\id' -> let id'' = fromMaybe id' $ T.stripPrefix "ref-" id' in Citation { citationId = id'' , citationPrefix = [] , citationSuffix = [] , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0}) rids) ils else linkWith attr ("#" <> rid) "" ils "ext-link" -> do ils <- innerInlines id let title = fromMaybe "" $ findAttr (QName "title" (Just "http://www.w3.org/1999/xlink") Nothing) e let href = case findAttr (QName "href" (Just "http://www.w3.org/1999/xlink") Nothing) e of Just h -> h _ -> "#" <> attrValue "rid" e let ils' = if ils == mempty then str href else ils let attr = (attrValue "id" e, [], []) return $ linkWith attr href title ils' "disp-formula" -> formula displayMath "inline-formula" -> formula math "math" | qURI (elName e) == Just "http://www.w3.org/1998/Math/MathML" -> return . math $ mathML e "tex-math" -> return . math $ textContent e "email" -> return $ link ("mailto:" <> textContent e) "" $ str $ textContent e "uri" -> return $ link (textContent e) "" $ str $ textContent e "fn" -> note . mconcat <$> mapM parseBlock (elContent e) _ -> innerInlines id where innerInlines f = extractSpaces f . mconcat <$> mapM parseInline (elContent e) mathML x = case readMathML . showElement $ everywhere (mkT removePrefix) x of Left _ -> mempty Right m -> writeTeX m formula constructor = do let whereToLook = fromMaybe e $ filterElement (named "alternatives") e texMaths = map textContent $ filterChildren (named "tex-math") whereToLook mathMLs = map mathML $ filterChildren isMathML whereToLook return . mconcat . take 1 . map constructor $ texMaths ++ mathMLs isMathML x = qName (elName x) == "math" && qURI (elName x) == Just "http://www.w3.org/1998/Math/MathML" removePrefix elname = elname { qPrefix = Nothing } codeWithLang = do let classes' = case attrValue "language" e of "" -> [] l -> [l] return $ codeWith (attrValue "id" e,classes',[]) $ strContentRecursive e pandoc-3.1.3/src/Text/Pandoc/Readers/Jira.hs0000644000000000000000000002013607346545000016702 0ustar0000000000000000{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Readers.Jira Copyright : © 2019-2023 Albert Krewinkel License : GPL-2.0-or-later Maintainer : Albert Krewinkel Conversion of jira wiki formatted plain text to 'Pandoc' document. -} module Text.Pandoc.Readers.Jira ( readJira ) where import Control.Monad.Except (throwError) import Data.List (partition) import Data.Text (Text, append, pack, singleton) import Text.Pandoc.XML (lookupEntity) import Text.Jira.Parser (parse) import Text.Pandoc.Class.PandocMonad (PandocMonad (..)) import Text.Pandoc.Builder hiding (cell) import Text.Pandoc.Error (PandocError (PandocParseError)) import Text.Pandoc.Options (ReaderOptions) import Text.Pandoc.Shared (stringify) import Text.Pandoc.Sources (ToSources(..), sourcesToText) import qualified Text.Jira.Markup as Jira -- | Read Jira wiki markup. readJira :: (PandocMonad m, ToSources a) => ReaderOptions -> a -> m Pandoc readJira _opts inp = do let sources = toSources inp case parse (sourcesToText sources) of Right d -> return $ jiraToPandoc d Left e -> throwError . PandocParseError $ "Jira parse error" `append` pack (show e) jiraToPandoc :: Jira.Doc -> Pandoc jiraToPandoc (Jira.Doc blks) = doc $ foldMap jiraToPandocBlocks blks -- -- Blocks -- -- | Converts a Jira block to a Pandoc block. jiraToPandocBlocks :: Jira.Block -> Blocks jiraToPandocBlocks = \case Jira.BlockQuote blcks -> blockQuote $ foldMap jiraToPandocBlocks blcks Jira.Code lang ps txt -> toPandocCodeBlocks (Just lang) ps txt Jira.Color c blcks -> divWith (mempty, mempty, [("color", colorName c)]) $ foldMap jiraToPandocBlocks blcks Jira.Header lvl inlns -> header lvl $ foldMap jiraToPandocInlines inlns Jira.HorizontalRule -> horizontalRule Jira.List style items -> toPandocList style items Jira.NoFormat ps txt -> toPandocCodeBlocks Nothing ps txt Jira.Panel ps blcks -> toPandocDiv ps blcks Jira.Para inlns -> para $ foldMap jiraToPandocInlines inlns Jira.Table rows -> toPandocTable rows -- | Create a pandoc list – either to a @'BulletList'@ or an @'OrderedList'@. toPandocList :: Jira.ListStyle -> [[Jira.Block]] -> Blocks toPandocList style items = let items' = map (foldMap jiraToPandocBlocks) items in if style == Jira.Enumeration then orderedList items' else bulletList items' -- | Create a pandoc @'CodeBlock'@ toPandocCodeBlocks :: Maybe Jira.Language -> [Jira.Parameter] -> Text -> Blocks toPandocCodeBlocks langMay params txt = let classes = case langMay of Just (Jira.Language lang) -> [lang] Nothing -> [] in codeBlockWith ("", classes, map paramToPair params) txt -- | Create a pandoc @'Div'@ from a panel. toPandocDiv :: [Jira.Parameter] -> [Jira.Block] -> Blocks toPandocDiv params = let (titles, params') = partition ((== "title") . Jira.parameterKey) params addTitle = case titles of [] -> id (title:_) -> \blks -> (divWith ("", ["panelheader"], []) . plain . strong $ text (Jira.parameterValue title)) <> blks in divWith ("", ["panel"], map paramToPair params') . addTitle . foldMap jiraToPandocBlocks paramToPair :: Jira.Parameter -> (Text, Text) paramToPair (Jira.Parameter key value) = (key, value) -- | Give textual representation of a color. colorName :: Jira.ColorName -> Text colorName (Jira.ColorName name) = name -- | Create a pandoc @'Table'@. -- This relies on 'simpleTable' to sanitize the table. toPandocTable :: [Jira.Row] -> Blocks toPandocTable rows = let (headerRow, bodyRows) = splitIntoHeaderAndBody rows in simpleTable (rowToBlocksList headerRow) (map rowToBlocksList bodyRows) rowToBlocksList :: Jira.Row -> [Blocks] rowToBlocksList (Jira.Row cells) = map cellContent cells where cellContent cell = let content = case cell of Jira.HeaderCell x -> x Jira.BodyCell x -> x in foldMap jiraToPandocBlocks content splitIntoHeaderAndBody :: [Jira.Row] -> (Jira.Row, [Jira.Row]) splitIntoHeaderAndBody [] = (Jira.Row [], []) splitIntoHeaderAndBody rows@(first@(Jira.Row cells) : rest) = let isHeaderCell Jira.HeaderCell{} = True isHeaderCell Jira.BodyCell{} = False in if all isHeaderCell cells then (first, rest) else (Jira.Row [], rows) -- -- Inlines -- -- | Converts a Jira inline to a Pandoc block. jiraToPandocInlines :: Jira.Inline -> Inlines jiraToPandocInlines = \case Jira.Anchor t -> spanWith (t, [], []) mempty Jira.AutoLink url -> link (Jira.fromURL url) "" (str (Jira.fromURL url)) Jira.Citation ils -> str "—" <> space <> emph (fromInlines ils) Jira.ColorInline c ils -> spanWith ("", [], [("color", colorName c)]) $ fromInlines ils Jira.Emoji icon -> str . iconUnicode $ icon Jira.Entity entity -> str . fromEntity $ entity Jira.Image params url -> let (title, attr) = imgParams params in imageWith attr (Jira.fromURL url) title mempty Jira.Link lt alias url -> jiraLinkToPandoc lt alias url Jira.Linebreak -> linebreak Jira.Monospaced inlns -> code . stringify . toList . fromInlines $ inlns Jira.Space -> space Jira.SpecialChar c -> str (Data.Text.singleton c) Jira.Str t -> str t Jira.Styled style inlns -> fromStyle style $ fromInlines inlns where fromInlines = foldMap jiraToPandocInlines fromEntity e = case lookupEntity (e <> ";") of Nothing -> "&" `append` e `append` ";" Just t ->t fromStyle = \case Jira.Emphasis -> emph Jira.Insert -> underline Jira.Strikeout -> strikeout Jira.Strong -> strong Jira.Subscript -> subscript Jira.Superscript -> superscript imgParams :: [Jira.Parameter] -> (Text, Attr) imgParams = foldr addImgParam ("", ("", [], [])) addImgParam :: Jira.Parameter -> (Text, Attr) -> (Text, Attr) addImgParam p (title, attr@(ident, classes, kvs)) = case Jira.parameterKey p of "title" -> (Jira.parameterValue p, attr) "thumbnail" -> (title, (ident, "thumbnail":classes, kvs)) _ -> let kv = (Jira.parameterKey p, Jira.parameterValue p) in (title, (ident, classes, kv:kvs)) -- | Convert a Jira link to pandoc inlines. jiraLinkToPandoc :: Jira.LinkType -> [Jira.Inline] -> Jira.URL -> Inlines jiraLinkToPandoc linkType alias url = let url' = (if linkType == Jira.User then ("~" <>) else id) $ Jira.fromURL url alias' = case alias of [] -> str url' _ -> foldMap jiraToPandocInlines alias in case linkType of Jira.External -> link url' "" alias' Jira.Email -> link ("mailto:" <> url') "" alias' Jira.Attachment -> linkWith ("", ["attachment"], []) url' "" alias' Jira.User -> linkWith ("", ["user-account"], []) url' "" alias' Jira.SmartCard -> linkWith ("", ["smart-card"], []) url' "" alias' Jira.SmartLink -> linkWith ("", ["smart-link"], []) url' "" alias' -- | Get unicode representation of a Jira icon. iconUnicode :: Jira.Icon -> Text iconUnicode = \case Jira.IconSlightlySmiling -> "🙂" Jira.IconFrowning -> "🙁" Jira.IconTongue -> "😛" Jira.IconSmiling -> "😃" Jira.IconWinking -> "😉" Jira.IconThumbsUp -> "👍" Jira.IconThumbsDown -> "👎" Jira.IconInfo -> "ℹ" Jira.IconCheckmark -> "✔" Jira.IconX -> "❌" Jira.IconAttention -> "❗" Jira.IconPlus -> "➕" Jira.IconMinus -> "➖" Jira.IconQuestionmark -> "❓" Jira.IconOn -> "💡" Jira.IconOff -> "🌙" Jira.IconStar -> "⭐" Jira.IconStarRed -> "⭐" Jira.IconStarGreen -> "⭐" Jira.IconStarBlue -> "⭐" Jira.IconStarYellow -> "⭐" Jira.IconFlag -> "⚑" Jira.IconFlagOff -> "⚐" pandoc-3.1.3/src/Text/Pandoc/Readers/LaTeX.hs0000644000000000000000000014052707346545000017001 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE PatternGuards #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE ViewPatterns #-} {- | Module : Text.Pandoc.Readers.LaTeX Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Conversion of LaTeX to 'Pandoc' document. -} module Text.Pandoc.Readers.LaTeX ( readLaTeX, applyMacros, rawLaTeXInline, rawLaTeXBlock, inlineCommand ) where import Control.Applicative (many, optional, (<|>)) import Control.Monad import Control.Monad.Except (throwError) import Data.Containers.ListUtils (nubOrd) import Data.Char (isDigit, isLetter, isAlphaNum, toUpper, chr) import Data.Default import Data.List (intercalate) import qualified Data.Map as M import Data.Maybe (fromMaybe, maybeToList) import qualified Data.Set as Set import Data.Text (Text) import qualified Data.Text as T import Data.Either (partitionEithers) import Skylighting (defaultSyntaxMap) import System.FilePath (addExtension, replaceExtension, takeExtension) import Text.Collate.Lang (renderLang) import Text.Pandoc.Builder as B import Text.Pandoc.Class (PandocPure, PandocMonad (..), getResourcePath, readFileFromDirs, report, setResourcePath, getZonedTime) import Data.Time (ZonedTime(..), LocalTime(..), showGregorian) import Text.Pandoc.Error (PandocError (PandocParseError)) import Text.Pandoc.Highlighting (languagesByExtension) import Text.Pandoc.ImageSize (numUnit, showFl) import Text.Pandoc.Logging import Text.Pandoc.Options import Text.Pandoc.Parsing hiding (blankline, many, mathDisplay, mathInline, optional, space, spaces, withRaw, (<|>)) import Text.Pandoc.TeX (Tok (..), TokType (..)) import Text.Pandoc.Readers.LaTeX.Parsing import Text.Pandoc.Readers.LaTeX.Citation (citationCommands, cites) import Text.Pandoc.Readers.LaTeX.Math (dollarsMath, inlineEnvironments, inlineEnvironment, mathDisplay, mathInline, newtheorem, theoremstyle, proof, theoremEnvironment) import Text.Pandoc.Readers.LaTeX.Table (tableEnvironments) import Text.Pandoc.Readers.LaTeX.Macro (macroDef) import Text.Pandoc.Readers.LaTeX.Lang (inlineLanguageCommands, enquoteCommands, babelLangToBCP47, setDefaultLanguage) import Text.Pandoc.Readers.LaTeX.SIunitx (siunitxCommands) import Text.Pandoc.Readers.LaTeX.Inline (acronymCommands, refCommands, nameCommands, charCommands, accentCommands, biblatexInlineCommands, verbCommands, rawInlineOr, listingsLanguage) import Text.Pandoc.Shared import Text.Pandoc.Walk import Data.List.NonEmpty (nonEmpty) -- for debugging: -- import Text.Pandoc.Extensions (getDefaultExtensions) -- import Text.Pandoc.Class.PandocIO (runIOorExplode, PandocIO) -- import Debug.Trace (traceShowId) -- | Parse LaTeX from string and return 'Pandoc' document. readLaTeX :: (PandocMonad m, ToSources a) => ReaderOptions -- ^ Reader options -> a -- ^ Input to parse -> m Pandoc readLaTeX opts ltx = do let sources = toSources ltx parsed <- runParserT parseLaTeX def{ sOptions = opts } "source" (TokStream False (tokenizeSources sources)) case parsed of Right result -> return result Left e -> throwError $ fromParsecError sources e parseLaTeX :: PandocMonad m => LP m Pandoc parseLaTeX = do bs <- blocks eof st <- getState let meta = sMeta st let doc' = doc bs let headerLevel (Header n _ _) = [n] headerLevel _ = [] let bottomLevel = maybe 1 minimum $ nonEmpty $ query headerLevel doc' let adjustHeaders m (Header n attr ils) = Header (n+m) attr ils adjustHeaders _ x = x let (Pandoc _ bs') = -- handle the case where you have \part or \chapter (if bottomLevel < 1 then walk (adjustHeaders (1 - bottomLevel)) else id) $ walk (resolveRefs (sLabels st)) doc' return $ Pandoc meta bs' resolveRefs :: M.Map Text [Inline] -> Inline -> Inline resolveRefs labels x@(Link (ident,classes,kvs) _ _) = case (lookup "reference-type" kvs, lookup "reference" kvs) of (Just "ref", Just lab) -> case M.lookup lab labels of Just txt -> Link (ident,classes,kvs) txt ("#" <> lab, "") Nothing -> x _ -> x resolveRefs _ x = x -- testParser :: LP PandocIO a -> Text -> IO a -- testParser p t = do -- res <- runIOorExplode (runParserT p defaultLaTeXState{ -- sOptions = def{ readerExtensions = -- enableExtension Ext_raw_tex $ -- getDefaultExtensions "latex" }} "source" -- (tokenize (initialPos "source") t)) -- case res of -- Left e -> error (show e) -- Right r -> return r rawLaTeXBlock :: (PandocMonad m, HasMacros s, HasReaderOptions s) => ParsecT Sources s m Text rawLaTeXBlock = do lookAhead (try (char '\\' >> letter)) toks <- getInputTokens snd <$> ( rawLaTeXParser toks (macroDef (const mempty) <|> do choice (map controlSeq ["include", "input", "subfile", "usepackage"]) skipMany opt braced return mempty) blocks <|> rawLaTeXParser toks (environment <|> blockCommand) (mconcat <$> many (block <|> beginOrEndCommand))) -- See #4667 for motivation; sometimes people write macros -- that just evaluate to a begin or end command, which blockCommand -- won't accept. beginOrEndCommand :: PandocMonad m => LP m Blocks beginOrEndCommand = try $ do Tok _ (CtrlSeq name) txt <- anyControlSeq guard $ name == "begin" || name == "end" (envname, rawargs) <- withRaw braced if M.member (untokenize envname) (inlineEnvironments :: M.Map Text (LP PandocPure Inlines)) then mzero else return $ rawBlock "latex" (txt <> untokenize rawargs) rawLaTeXInline :: (PandocMonad m, HasMacros s, HasReaderOptions s) => ParsecT Sources s m Text rawLaTeXInline = do lookAhead (try (char '\\' >> letter)) toks <- getInputTokens raw <- snd <$> ( rawLaTeXParser toks (mempty <$ (controlSeq "input" >> skipMany rawopt >> braced)) inlines <|> rawLaTeXParser toks (inlineEnvironment <|> inlineCommand') inlines ) finalbraces <- mconcat <$> many (try (string "{}")) -- see #5439 return $ raw <> T.pack finalbraces inlineCommand :: PandocMonad m => ParsecT Sources ParserState m Inlines inlineCommand = do lookAhead (try (char '\\' >> letter)) toks <- getInputTokens fst <$> rawLaTeXParser toks (inlineEnvironment <|> inlineCommand') inlines -- inline elements: inlineGroup :: PandocMonad m => LP m Inlines inlineGroup = do ils <- grouped inline if null ils then return mempty else return $ spanWith nullAttr ils -- we need the span so we can detitlecase bibtex entries; -- we need to know when something is {C}apitalized doLHSverb :: PandocMonad m => LP m Inlines doLHSverb = codeWith ("",["haskell"],[]) . untokenize <$> manyTill (satisfyTok (not . isNewlineTok)) (symbol '|') mkImage :: PandocMonad m => [(Text, Text)] -> Text -> LP m Inlines mkImage options (T.unpack -> src) = do let replaceTextwidth (k,v) = case numUnit v of Just (num, "\\textwidth") -> (k, showFl (num * 100) <> "%") _ -> (k, v) let kvs = map replaceTextwidth $ filter (\(k,_) -> k `elem` ["width", "height"]) options let attr = ("",[], kvs) let alt = str "image" defaultExt <- getOption readerDefaultImageExtension let exts' = [".pdf", ".png", ".jpg", ".mps", ".jpeg", ".jbig2", ".jb2"] let exts = exts' ++ map (map toUpper) exts' let findFile s [] = return s findFile s (e:es) = do let s' = addExtension s e exists <- fileExists s' if exists then return s' else findFile s es src' <- case takeExtension src of "" | not (T.null defaultExt) -> return $ addExtension src $ T.unpack defaultExt | otherwise -> findFile src exts _ -> return src return $ imageWith attr (T.pack src') "" alt removeDoubleQuotes :: Text -> Text removeDoubleQuotes t = Data.Maybe.fromMaybe t $ T.stripPrefix "\"" t >>= T.stripSuffix "\"" doubleQuote :: PandocMonad m => LP m Inlines doubleQuote = quoted' doubleQuoted (try $ count 2 $ symbol '`') (void $ try $ count 2 $ symbol '\'') <|> quoted' doubleQuoted ((:[]) <$> symbol '“') (void $ symbol '”') -- the following is used by babel for localized quotes: <|> quoted' doubleQuoted (try $ sequence [symbol '"', symbol '`']) (void $ try $ sequence [symbol '"', symbol '\'']) singleQuote :: PandocMonad m => LP m Inlines singleQuote = quoted' singleQuoted ((:[]) <$> symbol '`') (try $ symbol '\'' >> notFollowedBy (satisfyTok startsWithLetter)) <|> quoted' singleQuoted ((:[]) <$> symbol '‘') (try $ symbol '’' >> notFollowedBy (satisfyTok startsWithLetter)) where startsWithLetter (Tok _ Word t) = case T.uncons t of Just (c, _) | isLetter c -> True _ -> False startsWithLetter _ = False quoted' :: PandocMonad m => (Inlines -> Inlines) -> LP m [Tok] -> LP m () -> LP m Inlines quoted' f starter ender = do startchs <- untokenize <$> starter smart <- extensionEnabled Ext_smart <$> getOption readerExtensions if smart then do ils <- many (notFollowedBy ender >> inline) (ender >> return (f (mconcat ils))) <|> (<> mconcat ils) <$> lit (case startchs of "``" -> "“" "`" -> "‘" cs -> cs) else lit startchs lit :: Text -> LP m Inlines lit = pure . str blockquote :: PandocMonad m => Bool -> Maybe Text -> LP m Blocks blockquote cvariant mblang = do citepar <- if cvariant then (\xs -> para (cite xs mempty)) <$> cites inline NormalCitation False else option mempty $ para <$> bracketed inline let lang = mblang >>= babelLangToBCP47 let langdiv = case lang of Nothing -> id Just l -> divWith ("",[],[("lang", renderLang l)]) _closingPunct <- option mempty $ bracketed inline -- currently ignored bs <- grouped block optional $ symbolIn (".:;?!" :: [Char]) -- currently ignored return $ blockQuote . langdiv $ (bs <> citepar) inlineCommand' :: PandocMonad m => LP m Inlines inlineCommand' = try $ do Tok _ (CtrlSeq name) cmd <- anyControlSeq guard $ name /= "begin" && name /= "end" && name /= "and" star <- if T.all isAlphaNum name then option "" ("*" <$ symbol '*' <* sp) else pure "" overlay <- option "" overlaySpecification let name' = name <> star <> overlay let names = nubOrd [name', name] -- check non-starred as fallback let raw = do guard $ isInlineCommand name || not (isBlockCommand name) rawcommand <- getRawCommand name (cmd <> star) (guardEnabled Ext_raw_tex >> return (rawInline "latex" rawcommand)) <|> ignore rawcommand lookupListDefault raw names inlineCommands tok :: PandocMonad m => LP m Inlines tok = tokWith inline unescapeURL :: Text -> Text unescapeURL = T.concat . go . T.splitOn "\\" where isEscapable c = T.any (== c) "#$%&~_^\\{}" go (x:xs) = x : map unescapeInterior xs go [] = [] unescapeInterior t | Just (c, _) <- T.uncons t , isEscapable c = t | otherwise = "\\" <> t inlineCommands :: PandocMonad m => M.Map Text (LP m Inlines) inlineCommands = M.unions [ accentCommands tok , citationCommands inline , siunitxCommands tok , acronymCommands , refCommands , nameCommands , verbCommands , charCommands , enquoteCommands tok , inlineLanguageCommands tok , biblatexInlineCommands tok , rest ] where rest = M.fromList [ ("emph", extractSpaces emph <$> tok) , ("textit", extractSpaces emph <$> tok) , ("textsl", extractSpaces emph <$> tok) , ("textsc", extractSpaces smallcaps <$> tok) , ("textsf", extractSpaces (spanWith ("",["sans-serif"],[])) <$> tok) , ("textmd", extractSpaces (spanWith ("",["medium"],[])) <$> tok) , ("textrm", extractSpaces (spanWith ("",["roman"],[])) <$> tok) , ("textup", extractSpaces (spanWith ("",["upright"],[])) <$> tok) , ("texttt", formatCode nullAttr <$> tok) , ("alert", skipopts >> spanWith ("",["alert"],[]) <$> tok) -- beamer , ("textsuperscript", extractSpaces superscript <$> tok) , ("textsubscript", extractSpaces subscript <$> tok) , ("textbf", extractSpaces strong <$> tok) , ("textnormal", extractSpaces (spanWith ("",["nodecor"],[])) <$> tok) , ("underline", underline <$> tok) , ("mbox", rawInlineOr "mbox" $ processHBox <$> tok) , ("hbox", rawInlineOr "hbox" $ processHBox <$> tok) , ("vbox", rawInlineOr "vbox" tok) , ("lettrine", rawInlineOr "lettrine" lettrine) , ("(", mathInline . untokenize <$> manyTill anyTok (controlSeq ")")) , ("[", mathDisplay . untokenize <$> manyTill anyTok (controlSeq "]")) , ("ensuremath", mathInline . untokenize <$> braced) , ("texorpdfstring", const <$> tok <*> tok) -- old TeX commands , ("em", extractSpaces emph <$> inlines) , ("it", extractSpaces emph <$> inlines) , ("sl", extractSpaces emph <$> inlines) , ("bf", extractSpaces strong <$> inlines) , ("tt", formatCode nullAttr <$> inlines) , ("rm", inlines) , ("itshape", extractSpaces emph <$> inlines) , ("slshape", extractSpaces emph <$> inlines) , ("scshape", extractSpaces smallcaps <$> inlines) , ("bfseries", extractSpaces strong <$> inlines) , ("MakeUppercase", makeUppercase <$> tok) , ("MakeTextUppercase", makeUppercase <$> tok) -- textcase , ("uppercase", makeUppercase <$> tok) , ("MakeLowercase", makeLowercase <$> tok) , ("MakeTextLowercase", makeLowercase <$> tok) , ("lowercase", makeLowercase <$> tok) , ("thanks", skipopts >> note <$> grouped block) , ("footnote", skipopts >> footnote) , ("passthrough", fixPassthroughEscapes <$> tok) -- \passthrough macro used by latex writer -- for listings , ("includegraphics", do options <- option [] keyvals src <- braced mkImage options . unescapeURL . removeDoubleQuotes $ untokenize src) -- svg , ("includesvg", do options <- option [] keyvals src <- braced mkImage options . unescapeURL . removeDoubleQuotes $ untokenize src) -- hyperref , ("url", (\url -> linkWith ("",["uri"],[]) url "" (str url)) . unescapeURL . untokenize <$> bracedUrl) , ("nolinkurl", code . unescapeURL . untokenize <$> bracedUrl) , ("href", do url <- bracedUrl sp link (unescapeURL $ untokenize url) "" <$> tok) , ("hyperlink", hyperlink) , ("hyperref", hyperref) , ("hypertarget", hypertargetInline) -- hyphenat , ("nohyphens", tok) , ("textnhtt", formatCode nullAttr <$> tok) , ("nhttfamily", formatCode nullAttr <$> tok) -- LaTeX colors , ("textcolor", coloredInline "color") , ("colorbox", coloredInline "background-color") -- etoolbox , ("ifstrequal", ifstrequal) , ("newtoggle", braced >>= newToggle) , ("toggletrue", braced >>= setToggle True) , ("togglefalse", braced >>= setToggle False) , ("iftoggle", try $ ifToggle >> inline) -- include , ("input", rawInlineOr "input" $ include "input") -- soul package , ("st", extractSpaces strikeout <$> tok) , ("ul", underline <$> tok) , ("hl", extractSpaces (spanWith ("",["mark"],[])) <$> tok) -- ulem package , ("sout", extractSpaces strikeout <$> tok) , ("uline", underline <$> tok) -- plain tex stuff that should just be passed through as raw tex , ("ifdim", ifdim) -- generally only used in \date , ("today", today) ] today :: PandocMonad m => LP m Inlines today = text . T.pack . showGregorian . localDay . zonedTimeToLocalTime <$> getZonedTime footnote :: PandocMonad m => LP m Inlines footnote = do updateState $ \st -> st{ sLastNoteNum = sLastNoteNum st + 1 } contents <- grouped block >>= walkM resolveNoteLabel return $ note contents resolveNoteLabel :: PandocMonad m => Inline -> LP m Inline resolveNoteLabel (Span (_,cls,kvs) _) | Just lab <- lookup "label" kvs = do updateState $ \st -> st{ sLabels = M.insert lab (toList . text . tshow $ sLastNoteNum st) $ sLabels st } return $ Span (lab,cls,kvs) [] resolveNoteLabel il = return il lettrine :: PandocMonad m => LP m Inlines lettrine = do optional rawopt x <- tok y <- tok return $ extractSpaces (spanWith ("",["lettrine"],[])) x <> smallcaps y ifdim :: PandocMonad m => LP m Inlines ifdim = do contents <- manyTill anyTok (controlSeq "fi") return $ rawInline "latex" $ "\\ifdim" <> untokenize contents <> "\\fi" makeUppercase :: Inlines -> Inlines makeUppercase = fromList . walk (alterStr T.toUpper) . toList makeLowercase :: Inlines -> Inlines makeLowercase = fromList . walk (alterStr T.toLower) . toList alterStr :: (Text -> Text) -> Inline -> Inline alterStr f (Str xs) = Str (f xs) alterStr _ x = x fixPassthroughEscapes :: Inlines -> Inlines fixPassthroughEscapes = walk go where go (Code attr txt) = Code attr (T.pack $ unescapePassthrough $ T.unpack txt) go x = x unescapePassthrough [] = [] unescapePassthrough ('\\':c:cs) | c `elem` ['%','{','}','\\'] = c : unescapePassthrough cs unescapePassthrough (c:cs) = c : unescapePassthrough cs hyperlink :: PandocMonad m => LP m Inlines hyperlink = try $ do src <- untokenize <$> braced lab <- tok return $ link ("#" <> src) "" lab hyperref :: PandocMonad m => LP m Inlines hyperref = try $ do url <- (("#" <>) . untokenize <$> try (sp *> bracketedToks <* sp)) <|> untokenize <$> (bracedUrl <* bracedUrl <* bracedUrl) link url "" <$> tok hypertargetBlock :: PandocMonad m => LP m Blocks hypertargetBlock = try $ do ref <- untokenize <$> braced bs <- grouped block case toList bs of [Header 1 (ident,_,_) _] | ident == ref -> return bs _ -> return $ divWith (ref, [], []) bs hypertargetInline :: PandocMonad m => LP m Inlines hypertargetInline = try $ do ref <- untokenize <$> braced ils <- grouped inline return $ spanWith (ref, [], []) ils newToggle :: (Monoid a, PandocMonad m) => [Tok] -> LP m a newToggle name = do updateState $ \st -> st{ sToggles = M.insert (untokenize name) False (sToggles st) } return mempty setToggle :: (Monoid a, PandocMonad m) => Bool -> [Tok] -> LP m a setToggle on name = do updateState $ \st -> st{ sToggles = M.adjust (const on) (untokenize name) (sToggles st) } return mempty ifToggle :: PandocMonad m => LP m () ifToggle = do name <- braced spaces yes <- braced spaces no <- braced toggles <- sToggles <$> getState TokStream _ inp <- getInput let name' = untokenize name case M.lookup name' toggles of Just True -> setInput $ TokStream False (yes ++ inp) Just False -> setInput $ TokStream False (no ++ inp) Nothing -> do pos <- getPosition report $ UndefinedToggle name' pos return () ifstrequal :: (PandocMonad m, Monoid a) => LP m a ifstrequal = do str1 <- tok str2 <- tok ifequal <- braced ifnotequal <- braced TokStream _ ts <- getInput if str1 == str2 then setInput $ TokStream False (ifequal ++ ts) else setInput $ TokStream False (ifnotequal ++ ts) return mempty coloredInline :: PandocMonad m => Text -> LP m Inlines coloredInline stylename = do skipopts color <- braced spanWith ("",[],[("style",stylename <> ": " <> untokenize color)]) <$> tok processHBox :: Inlines -> Inlines processHBox = walk convert where convert Space = Str $ T.singleton $ chr 160 -- non-breakable space convert SoftBreak = Str $ T.singleton $ chr 160 -- non-breakable space convert LineBreak = Str "" convert x = x isBlockCommand :: Text -> Bool isBlockCommand s = s `M.member` (blockCommands :: M.Map Text (LP PandocPure Blocks)) || s `Set.member` treatAsBlock treatAsBlock :: Set.Set Text treatAsBlock = Set.fromList [ "special", "pdfannot", "pdfstringdef" , "bibliographystyle" , "maketitle", "makeindex", "makeglossary" , "addcontentsline", "addtocontents", "addtocounter" -- \ignore{} is used conventionally in literate haskell for definitions -- that are to be processed by the compiler but not printed. , "ignore" , "hyperdef" , "markboth", "markright", "markleft" , "hspace", "vspace" , "newpage" , "clearpage" , "pagebreak" , "titleformat" , "listoffigures" , "listoftables" , "write" ] isInlineCommand :: Text -> Bool isInlineCommand s = s `M.member` (inlineCommands :: M.Map Text (LP PandocPure Inlines)) || s `Set.member` treatAsInline treatAsInline :: Set.Set Text treatAsInline = Set.fromList [ "index" , "hspace" , "vspace" , "noindent" , "newpage" , "clearpage" , "pagebreak" ] lookupListDefault :: (Ord k) => v -> [k] -> M.Map k v -> v lookupListDefault d = (fromMaybe d .) . lookupList where lookupList l m = msum $ map (`M.lookup` m) l inline :: PandocMonad m => LP m Inlines inline = do Tok pos toktype t <- peekTok let eatOneToken = satisfyTok (const True) let symbolAsString = str t <$ eatOneToken let unescapedSymbolAsString = do eatOneToken report $ ParsingUnescaped t pos return $ str t case toktype of Comment -> mempty <$ eatOneToken Spaces -> space <$ eatOneToken Newline -> softbreak <$ endline Word -> str t <$ eatOneToken Symbol -> case t of "-" -> eatOneToken *> option (str "-") (symbol '-' *> option (str "–") (str "—" <$ symbol '-')) "'" -> eatOneToken *> option (str "’") (str "”" <$ symbol '\'') "~" -> str "\160" <$ eatOneToken "`" -> doubleQuote <|> singleQuote <|> symbolAsString "\"" -> doubleQuote <|> singleQuote <|> symbolAsString "“" -> doubleQuote <|> symbolAsString "‘" -> singleQuote <|> symbolAsString "$" -> dollarsMath <|> unescapedSymbolAsString "|" -> (guardEnabled Ext_literate_haskell *> eatOneToken *> doLHSverb) <|> symbolAsString "{" -> inlineGroup "#" -> unescapedSymbolAsString "&" -> unescapedSymbolAsString "_" -> unescapedSymbolAsString "^" -> unescapedSymbolAsString "\\" -> mzero "}" -> mzero _ -> symbolAsString CtrlSeq _ -> macroDef (rawInline "latex") <|> inlineGroup <|> inlineCommand' <|> inlineEnvironment Esc1 -> str . T.singleton <$> primEscape Esc2 -> str . T.singleton <$> primEscape _ -> mzero inlines :: PandocMonad m => LP m Inlines inlines = mconcat <$> many inline opt :: PandocMonad m => LP m Inlines opt = do toks <- try (sp *> bracketedToks <* sp) -- now parse the toks as inlines st <- getState parsed <- runParserT (mconcat <$> many inline) st "bracketed option" (TokStream False toks) case parsed of Right result -> return result Left e -> throwError $ fromParsecError (toSources toks) e -- block elements: preamble :: PandocMonad m => LP m Blocks preamble = mconcat <$> many preambleBlock where preambleBlock = (mempty <$ spaces1) <|> macroDef (rawBlock "latex") <|> filecontents <|> (mempty <$ blockCommand) <|> (mempty <$ braced) <|> (do notFollowedBy (begin_ "document") anyTok return mempty) rule :: PandocMonad m => LP m Blocks rule = do skipopts width <- T.takeWhile (\c -> isDigit c || c == '.') . stringify <$> tok _thickness <- tok -- 0-width rules are used to fix spacing issues: case safeRead width of Just (0 :: Double) -> return mempty _ -> return horizontalRule paragraph :: PandocMonad m => LP m Blocks paragraph = do x <- trimInlines . mconcat <$> many1 inline if x == mempty then return mempty else return $ para x rawBlockOr :: PandocMonad m => Text -> LP m Blocks -> LP m Blocks rawBlockOr name fallback = do -- if raw_tex allowed, don't process parseRaw <- extensionEnabled Ext_raw_tex <$> getOption readerExtensions if parseRaw then rawBlock "latex" <$> getRawCommand name ("\\" <> name) else fallback doSubfile :: PandocMonad m => LP m Blocks doSubfile = do skipMany opt f <- T.unpack . removeDoubleQuotes . T.strip . untokenize <$> braced oldToks <- getInput setInput $ TokStream False [] insertIncluded (ensureExtension (/= "") ".tex" f) bs <- blocks eof setInput oldToks return bs include :: (PandocMonad m, Monoid a) => Text -> LP m a include name = do let isAllowed = case name of "include" -> (== ".tex") "input" -> (/= "") _ -> const False skipMany opt fs <- map (T.unpack . removeDoubleQuotes . T.strip) . T.splitOn "," . untokenize <$> braced mapM_ (insertIncluded . ensureExtension isAllowed ".tex") fs return mempty usepackage :: (PandocMonad m, Monoid a) => LP m a usepackage = do skipMany opt fs <- map (T.unpack . removeDoubleQuotes . T.strip) . T.splitOn "," . untokenize <$> braced let parsePackage f = do TokStream _ ts <- getIncludedToks (ensureExtension (== ".sty") ".sty" f) parseFromToks (do _ <- blocks eof <|> do pos <- getPosition report $ CouldNotParseIncludeFile (T.pack f) pos) ts mapM_ parsePackage fs return mempty readFileFromTexinputs :: PandocMonad m => FilePath -> LP m (Maybe Text) readFileFromTexinputs fp = do fileContentsMap <- sFileContents <$> getState case M.lookup (T.pack fp) fileContentsMap of Just t -> return (Just t) Nothing -> do dirs <- map (\t -> if T.null t then "." else T.unpack t) . T.split (==':') . fromMaybe "" <$> lookupEnv "TEXINPUTS" readFileFromDirs dirs fp ensureExtension :: (FilePath -> Bool) -> FilePath -> FilePath -> FilePath ensureExtension isAllowed defaultExt fp = let ext = takeExtension fp in if isAllowed ext then fp else addExtension fp defaultExt getIncludedToks :: PandocMonad m => FilePath -> LP m TokStream getIncludedToks f = do pos <- getPosition containers <- getIncludeFiles <$> getState when (T.pack f `elem` containers) $ throwError $ PandocParseError $ T.pack $ "Include file loop at " ++ show pos updateState $ addIncludeFile $ T.pack f mbcontents <- readFileFromTexinputs f contents <- case mbcontents of Just s -> return s Nothing -> do report $ CouldNotLoadIncludeFile (T.pack f) pos return "" updateState dropLatestIncludeFile return $ TokStream False $ tokenize (initialPos f) contents insertIncluded :: PandocMonad m => FilePath -> LP m () insertIncluded f = do contents <- getIncludedToks f ts <- getInput setInput $ contents <> ts authors :: PandocMonad m => LP m () authors = try $ do bgroup let oneAuthor = blocksToInlines' . B.toList . mconcat <$> many1 block auths <- sepBy oneAuthor (controlSeq "and") egroup addMeta "author" (map trimInlines auths) looseItem :: PandocMonad m => LP m Blocks looseItem = do inListItem <- sInListItem <$> getState guard $ not inListItem skipopts return mempty epigraph :: PandocMonad m => LP m Blocks epigraph = do p1 <- grouped block p2 <- grouped block return $ divWith ("", ["epigraph"], []) (p1 <> p2) section :: PandocMonad m => Attr -> Int -> LP m Blocks section (ident, classes, kvs) lvl = do skipopts contents <- grouped inline lab <- option ident $ try (spaces >> controlSeq "label" >> spaces >> untokenize <$> braced) when (lvl == 0) $ updateState $ \st -> st{ sHasChapters = True } unless ("unnumbered" `elem` classes) $ do hn <- sLastHeaderNum <$> getState hasChapters <- sHasChapters <$> getState let lvl' = lvl + if hasChapters then 1 else 0 let num = incrementDottedNum lvl' hn updateState $ \st -> st{ sLastHeaderNum = num , sLabels = M.insert lab [Str (renderDottedNum num)] (sLabels st) } attr' <- registerHeader (lab, classes, kvs) contents return $ headerWith attr' lvl contents blockCommand :: PandocMonad m => LP m Blocks blockCommand = try $ do Tok _ (CtrlSeq name) txt <- anyControlSeq guard $ name /= "begin" && name /= "end" && name /= "and" star <- option "" ("*" <$ symbol '*' <* sp) let name' = name <> star let names = nubOrd [name', name] let rawDefiniteBlock = do guard $ isBlockCommand name rawcontents <- getRawCommand name (txt <> star) (guardEnabled Ext_raw_tex >> return (rawBlock "latex" rawcontents)) <|> ignore rawcontents -- heuristic: if it could be either block or inline, we -- treat it if block if we have a sequence of block -- commands followed by a newline. But we stop if we -- hit a \startXXX, since this might start a raw ConTeXt -- environment (this is important because this parser is -- used by the Markdown reader). let startCommand = try $ do Tok _ (CtrlSeq n) _ <- anyControlSeq guard $ "start" `T.isPrefixOf` n let rawMaybeBlock = try $ do guard $ not $ isInlineCommand name rawcontents <- getRawCommand name (txt <> star) curr <- (guardEnabled Ext_raw_tex >> return (rawBlock "latex" rawcontents)) <|> ignore rawcontents rest <- many $ notFollowedBy startCommand *> blockCommand lookAhead $ blankline <|> startCommand return $ curr <> mconcat rest let raw = rawDefiniteBlock <|> rawMaybeBlock lookupListDefault raw names blockCommands closing :: PandocMonad m => LP m Blocks closing = do contents <- tok st <- getState let extractInlines (MetaBlocks [Plain ys]) = ys extractInlines (MetaBlocks [Para ys ]) = ys extractInlines _ = [] let sigs = case lookupMeta "author" (sMeta st) of Just (MetaList xs) -> para $ trimInlines $ fromList $ intercalate [LineBreak] $ map extractInlines xs _ -> mempty return $ para (trimInlines contents) <> sigs parbox :: PandocMonad m => LP m Blocks parbox = try $ do skipopts braced -- size oldInTableCell <- sInTableCell <$> getState -- see #5711 updateState $ \st -> st{ sInTableCell = False } res <- grouped block updateState $ \st -> st{ sInTableCell = oldInTableCell } return res blockCommands :: PandocMonad m => M.Map Text (LP m Blocks) blockCommands = M.fromList [ ("par", mempty <$ skipopts) , ("parbox", parbox) , ("title", mempty <$ (skipopts *> (grouped inline >>= addMeta "title") <|> (grouped block >>= addMeta "title"))) , ("subtitle", mempty <$ (skipopts *> tok >>= addMeta "subtitle")) , ("author", mempty <$ (skipopts *> authors)) -- -- in letter class, temp. store address & sig as title, author , ("address", mempty <$ (skipopts *> tok >>= addMeta "address")) , ("signature", mempty <$ (skipopts *> authors)) , ("date", mempty <$ (skipopts *> tok >>= addMeta "date")) , ("newtheorem", newtheorem inline) , ("theoremstyle", theoremstyle) -- KOMA-Script metadata commands , ("extratitle", mempty <$ (skipopts *> tok >>= addMeta "extratitle")) , ("frontispiece", mempty <$ (skipopts *> tok >>= addMeta "frontispiece")) , ("titlehead", mempty <$ (skipopts *> tok >>= addMeta "titlehead")) , ("subject", mempty <$ (skipopts *> tok >>= addMeta "subject")) , ("publishers", mempty <$ (skipopts *> tok >>= addMeta "publishers")) , ("uppertitleback", mempty <$ (skipopts *> tok >>= addMeta "uppertitleback")) , ("lowertitleback", mempty <$ (skipopts *> tok >>= addMeta "lowertitleback")) , ("dedication", mempty <$ (skipopts *> tok >>= addMeta "dedication")) -- sectioning , ("part", section nullAttr (-1)) , ("part*", section ("",["unnumbered"],[]) (-1)) , ("chapter", section nullAttr 0) , ("chapter*", section ("",["unnumbered"],[]) 0) , ("section", section nullAttr 1) , ("section*", section ("",["unnumbered"],[]) 1) , ("subsection", section nullAttr 2) , ("subsection*", section ("",["unnumbered"],[]) 2) , ("subsubsection", section nullAttr 3) , ("subsubsection*", section ("",["unnumbered"],[]) 3) , ("paragraph", section nullAttr 4) , ("paragraph*", section ("",["unnumbered"],[]) 4) , ("subparagraph", section nullAttr 5) , ("subparagraph*", section ("",["unnumbered"],[]) 5) -- beamer slides , ("frametitle", section nullAttr 3) , ("framesubtitle", section nullAttr 4) -- letters , ("opening", para . trimInlines <$> (skipopts *> tok)) , ("closing", skipopts *> closing) -- memoir , ("plainbreak", braced >> pure horizontalRule) , ("plainbreak*", braced >> pure horizontalRule) , ("fancybreak", braced >> pure horizontalRule) , ("fancybreak*", braced >> pure horizontalRule) , ("plainfancybreak", braced >> braced >> braced >> pure horizontalRule) , ("plainfancybreak*", braced >> braced >> braced >> pure horizontalRule) , ("pfbreak", pure horizontalRule) , ("pfbreak*", pure horizontalRule) -- , ("hrule", pure horizontalRule) , ("strut", pure mempty) , ("rule", rule) , ("item", looseItem) , ("documentclass", skipopts *> braced *> preamble) , ("centerline", para . trimInlines <$> (skipopts *> tok)) , ("caption", mempty <$ setCaption inline) , ("bibliography", mempty <$ (skipopts *> braced >>= addMeta "bibliography" . splitBibs . untokenize)) , ("addbibresource", mempty <$ (skipopts *> braced >>= addMeta "bibliography" . splitBibs . untokenize)) , ("endinput", mempty <$ skipSameFileToks) -- includes , ("lstinputlisting", inputListing) , ("inputminted", inputMinted) , ("graphicspath", graphicsPath) -- polyglossia , ("setdefaultlanguage", setDefaultLanguage) , ("setmainlanguage", setDefaultLanguage) -- hyperlink , ("hypertarget", hypertargetBlock) -- LaTeX colors , ("textcolor", coloredBlock "color") , ("colorbox", coloredBlock "background-color") -- csquotes , ("blockquote", blockquote False Nothing) , ("blockcquote", blockquote True Nothing) , ("foreignblockquote", braced >>= blockquote False . Just . untokenize) , ("foreignblockcquote", braced >>= blockquote True . Just . untokenize) , ("hyphenblockquote", braced >>= blockquote False . Just . untokenize) , ("hyphenblockcquote", braced >>= blockquote True . Just . untokenize) -- include , ("include", rawBlockOr "include" $ include "include") , ("input", rawBlockOr "input" $ include "input") , ("subfile", rawBlockOr "subfile" doSubfile) , ("usepackage", rawBlockOr "usepackage" usepackage) -- preamble , ("PackageError", mempty <$ (braced >> braced >> braced)) -- epigraph package , ("epigraph", epigraph) -- alignment , ("raggedright", pure mempty) ] skipSameFileToks :: PandocMonad m => LP m () skipSameFileToks = do pos <- getPosition skipMany $ infile (sourceName pos) environments :: PandocMonad m => M.Map Text (LP m Blocks) environments = M.union (tableEnvironments blocks inline) $ M.fromList [ ("document", env "document" blocks <* skipMany anyTok) , ("abstract", mempty <$ (env "abstract" blocks >>= addMeta "abstract")) , ("sloppypar", env "sloppypar" blocks) , ("letter", env "letter" letterContents) , ("minipage", env "minipage" $ skipopts *> spaces *> optional braced *> spaces *> blocks) , ("figure", env "figure" $ skipopts *> figure') , ("subfigure", env "subfigure" $ skipopts *> tok *> figure') , ("center", divWith ("", ["center"], []) <$> env "center" blocks) , ("quote", blockQuote <$> env "quote" blocks) , ("quotation", blockQuote <$> env "quotation" blocks) , ("verse", blockQuote <$> env "verse" blocks) , ("itemize", bulletList <$> listenv "itemize" (many item)) , ("description", definitionList <$> listenv "description" (many descItem)) , ("enumerate", orderedList') , ("alltt", alltt <$> env "alltt" blocks) , ("code", guardEnabled Ext_literate_haskell *> (codeBlockWith ("",["haskell","literate"],[]) <$> verbEnv "code")) , ("comment", mempty <$ verbEnv "comment") , ("verbatim", codeBlock <$> verbEnv "verbatim") , ("Verbatim", fancyverbEnv "Verbatim") , ("BVerbatim", fancyverbEnv "BVerbatim") , ("lstlisting", do attr <- parseListingsOptions <$> option [] keyvals codeBlockWith attr <$> verbEnv "lstlisting") , ("minted", minted) , ("obeylines", obeylines) , ("tikzpicture", rawVerbEnv "tikzpicture") , ("tikzcd", rawVerbEnv "tikzcd") , ("lilypond", rawVerbEnv "lilypond") , ("ly", rawVerbEnv "ly") -- amsthm , ("proof", proof blocks opt) -- etoolbox , ("ifstrequal", ifstrequal) , ("newtoggle", braced >>= newToggle) , ("toggletrue", braced >>= setToggle True) , ("togglefalse", braced >>= setToggle False) , ("iftoggle", try $ ifToggle >> block) , ("CSLReferences", braced >> braced >> env "CSLReferences" blocks) ] filecontents :: PandocMonad m => LP m Blocks filecontents = try $ do controlSeq "begin" name <- untokenize <$> braced guard $ name == "filecontents" || name == "filecontents*" skipopts fp <- untokenize <$> braced txt <- verbEnv name updateState $ \st -> st{ sFileContents = M.insert fp txt (sFileContents st) } return mempty environment :: PandocMonad m => LP m Blocks environment = try $ do controlSeq "begin" name <- untokenize <$> braced M.findWithDefault mzero name environments <|> theoremEnvironment blocks opt name <|> if M.member name (inlineEnvironments :: M.Map Text (LP PandocPure Inlines)) then mzero else try (rawEnv name) <|> rawVerbEnv name rawEnv :: PandocMonad m => Text -> LP m Blocks rawEnv name = do exts <- getOption readerExtensions let parseRaw = extensionEnabled Ext_raw_tex exts rawOptions <- mconcat <$> many rawopt let beginCommand = "\\begin{" <> name <> "}" <> rawOptions pos1 <- getPosition if parseRaw then do (_, raw) <- withRaw $ env name blocks return $ rawBlock "latex" $ beginCommand <> untokenize raw else do bs <- env name blocks report $ SkippedContent beginCommand pos1 pos2 <- getPosition report $ SkippedContent ("\\end{" <> name <> "}") pos2 return $ divWith ("",[name],[]) bs rawVerbEnv :: PandocMonad m => Text -> LP m Blocks rawVerbEnv name = do pos <- getPosition (_, raw) <- withRaw $ verbEnv name let raw' = "\\begin{" <> name <> "}" <> untokenize raw exts <- getOption readerExtensions let parseRaw = extensionEnabled Ext_raw_tex exts if parseRaw then return $ rawBlock "latex" raw' else do report $ SkippedContent raw' pos return mempty fancyverbEnv :: PandocMonad m => Text -> LP m Blocks fancyverbEnv name = do options <- option [] keyvals let kvs = [ (if k == "firstnumber" then "startFrom" else k, v) | (k,v) <- options ] let classes = [ "numberLines" | lookup "numbers" options == Just "left" ] let attr = ("",classes,kvs) codeBlockWith attr <$> verbEnv name obeylines :: PandocMonad m => LP m Blocks obeylines = para . fromList . removeLeadingTrailingBreaks . walk softBreakToHard . toList <$> env "obeylines" inlines where softBreakToHard SoftBreak = LineBreak softBreakToHard x = x removeLeadingTrailingBreaks = reverse . dropWhile isLineBreak . reverse . dropWhile isLineBreak isLineBreak LineBreak = True isLineBreak _ = False minted :: PandocMonad m => LP m Blocks minted = do attr <- mintedAttr codeBlockWith attr <$> verbEnv "minted" mintedAttr :: PandocMonad m => LP m Attr mintedAttr = do options <- option [] keyvals lang <- untokenize <$> braced let kvs = [ (if k == "firstnumber" then "startFrom" else k, v) | (k,v) <- options ] let classes = [ lang | not (T.null lang) ] ++ [ "numberLines" | lookup "linenos" options == Just "true" ] return ("",classes,kvs) inputMinted :: PandocMonad m => LP m Blocks inputMinted = do pos <- getPosition attr <- mintedAttr f <- T.filter (/='"') . untokenize <$> braced mbCode <- readFileFromTexinputs (T.unpack f) rawcode <- case mbCode of Just s -> return s Nothing -> do report $ CouldNotLoadIncludeFile f pos return "" return $ B.codeBlockWith attr rawcode letterContents :: PandocMonad m => LP m Blocks letterContents = do bs <- blocks st <- getState -- add signature (author) and address (title) let addr = case lookupMeta "address" (sMeta st) of Just (MetaBlocks [Plain xs]) -> para $ trimInlines $ fromList xs _ -> mempty return $ addr <> bs -- sig added by \closing figure' :: PandocMonad m => LP m Blocks figure' = try $ do resetCaption innerContent <- many $ try (Left <$> label) <|> (Right <$> block) let content = walk go $ mconcat $ snd $ partitionEithers innerContent st <- getState let caption' = case sCaption st of Nothing -> B.emptyCaption Just capt -> capt let mblabel = sLastLabel st let attr = case mblabel of Just lab -> (lab, [], []) Nothing -> nullAttr case mblabel of Nothing -> pure () Just lab -> do num <- getNextNumber sLastFigureNum setState st { sLastFigureNum = num , sLabels = M.insert lab [Str (renderDottedNum num)] (sLabels st) } return $ B.figureWith attr caption' content where -- Remove the `Image` caption b.c. it's on the `Figure` go (Para [Image attr _ target]) = Plain [Image attr [] target] go x = x coloredBlock :: PandocMonad m => Text -> LP m Blocks coloredBlock stylename = try $ do skipopts color <- braced notFollowedBy (grouped inline) let constructor = divWith ("",[],[("style",stylename <> ": " <> untokenize color)]) constructor <$> grouped block graphicsPath :: PandocMonad m => LP m Blocks graphicsPath = do ps <- map (T.unpack . untokenize) <$> (bgroup *> spaces *> manyTill (braced <* spaces) egroup) getResourcePath >>= setResourcePath . (<> ps) return mempty splitBibs :: Text -> [Inlines] splitBibs = map (str . T.pack . flip replaceExtension "bib" . T.unpack . trim) . splitTextBy (==',') alltt :: Blocks -> Blocks alltt = walk strToCode where strToCode (Str s) = Code nullAttr s strToCode Space = RawInline (Format "latex") "\\ " strToCode SoftBreak = LineBreak strToCode x = x parseListingsOptions :: [(Text, Text)] -> Attr parseListingsOptions options = let kvs = [ (if k == "firstnumber" then "startFrom" else k, v) | (k,v) <- options ] classes = [ "numberLines" | lookup "numbers" options == Just "left" ] ++ maybeToList (listingsLanguage options) in (fromMaybe "" (lookup "label" options), classes, kvs) inputListing :: PandocMonad m => LP m Blocks inputListing = do pos <- getPosition options <- option [] keyvals f <- T.filter (/='"') . untokenize <$> braced mbCode <- readFileFromTexinputs (T.unpack f) codeLines <- case mbCode of Just s -> return $ T.lines s Nothing -> do report $ CouldNotLoadIncludeFile f pos return [] let (ident,classes,kvs) = parseListingsOptions options let classes' = (case listingsLanguage options of Nothing -> (take 1 (languagesByExtension defaultSyntaxMap (T.pack $ takeExtension $ T.unpack f)) <>) Just _ -> id) classes let firstline = fromMaybe 1 $ lookup "firstline" options >>= safeRead let lastline = fromMaybe (length codeLines) $ lookup "lastline" options >>= safeRead let codeContents = T.intercalate "\n" $ take (1 + lastline - firstline) $ drop (firstline - 1) codeLines return $ codeBlockWith (ident,classes',kvs) codeContents -- lists item :: PandocMonad m => LP m Blocks item = void blocks *> controlSeq "item" *> skipopts *> blocks descItem :: PandocMonad m => LP m (Inlines, [Blocks]) descItem = do optional spaces1 controlSeq "item" sp ils <- opt bs <- blocks return (ils, [bs]) listenv :: PandocMonad m => Text -> LP m a -> LP m a listenv name p = try $ do oldInListItem <- sInListItem `fmap` getState updateState $ \st -> st{ sInListItem = True } res <- env name p updateState $ \st -> st{ sInListItem = oldInListItem } return res orderedList' :: PandocMonad m => LP m Blocks orderedList' = try $ do spaces let markerSpec = do symbol '[' ts <- untokenize <$> manyTill anyTok (symbol ']') case runParser anyOrderedListMarker def "option" ts of Right r -> return r Left _ -> do pos <- getPosition report $ SkippedContent ("[" <> ts <> "]") pos return (1, DefaultStyle, DefaultDelim) (_, style, delim) <- option (1, DefaultStyle, DefaultDelim) markerSpec spaces optional $ try $ controlSeq "setlength" *> grouped (count 1 $ controlSeq "itemindent") *> braced spaces start <- option 1 $ try $ do pos <- getPosition controlSeq "setcounter" ctr <- untokenize <$> braced guard $ "enum" `T.isPrefixOf` ctr guard $ T.all (`elem` ['i','v']) (T.drop 4 ctr) sp num <- untokenize <$> braced case safeRead num of Just i -> return (i + 1 :: Int) Nothing -> do report $ SkippedContent ("\\setcounter{" <> ctr <> "}{" <> num <> "}") pos return 1 bs <- listenv "enumerate" (many item) return $ orderedListWith (start, style, delim) bs block :: PandocMonad m => LP m Blocks block = do Tok _ toktype _ <- peekTok res <- (case toktype of Newline -> mempty <$ spaces1 Spaces -> mempty <$ spaces1 Comment -> mempty <$ spaces1 Word -> paragraph CtrlSeq "begin" -> environment CtrlSeq _ -> macroDef (rawBlock "latex") <|> blockCommand _ -> mzero) <|> paragraph <|> grouped block trace (T.take 60 $ tshow $ B.toList res) return res blocks :: PandocMonad m => LP m Blocks blocks = mconcat <$> many block pandoc-3.1.3/src/Text/Pandoc/Readers/LaTeX/0000755000000000000000000000000007346545000016434 5ustar0000000000000000pandoc-3.1.3/src/Text/Pandoc/Readers/LaTeX/Citation.hs0000644000000000000000000002134107346545000020543 0ustar0000000000000000{-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE OverloadedStrings #-} module Text.Pandoc.Readers.LaTeX.Citation ( citationCommands , cites ) where import Text.Pandoc.Class import Text.Pandoc.Readers.LaTeX.Parsing import Text.Pandoc.Builder as B import qualified Data.Map as M import Data.Text (Text) import Control.Applicative ((<|>), optional, many) import Control.Monad (mzero) import Control.Monad.Trans (lift) import Control.Monad.Except (throwError) import Text.Pandoc.Parsing hiding (blankline, many, mathDisplay, mathInline, optional, space, spaces, withRaw, (<|>)) citationCommands :: PandocMonad m => LP m Inlines -> M.Map Text (LP m Inlines) citationCommands inline = let citation = citationWith inline tok = spaces *> grouped inline in M.fromList [ ("cite", citation "cite" NormalCitation False) , ("Cite", citation "Cite" NormalCitation False) , ("citep", citation "citep" NormalCitation False) , ("citep*", citation "citep*" NormalCitation False) , ("citeal", citation "citeal" NormalCitation False) , ("citealp", citation "citealp" NormalCitation False) , ("citealp*", citation "citealp*" NormalCitation False) , ("autocite", citation "autocite" NormalCitation False) , ("smartcite", citation "smartcite" NormalCitation False) , ("footcite", inNote <$> citation "footcite" NormalCitation False) , ("parencite", citation "parencite" NormalCitation False) , ("supercite", citation "supercite" NormalCitation False) , ("footcitetext", inNote <$> citation "footcitetext" NormalCitation False) , ("citeyearpar", citation "citeyearpar" SuppressAuthor False) , ("citeyear", citation "citeyear" SuppressAuthor False) , ("autocite*", citation "autocite*" SuppressAuthor False) , ("cite*", citation "cite*" SuppressAuthor False) , ("parencite*", citation "parencite*" SuppressAuthor False) , ("textcite", citation "textcite" AuthorInText False) , ("citet", citation "citet" AuthorInText False) , ("citet*", citation "citet*" AuthorInText False) , ("citealt", citation "citealt" AuthorInText False) , ("citealt*", citation "citealt*" AuthorInText False) , ("textcites", citation "textcites" AuthorInText True) , ("cites", citation "cites" NormalCitation True) , ("autocites", citation "autocites" NormalCitation True) , ("footcites", inNote <$> citation "footcites" NormalCitation True) , ("parencites", citation "parencites" NormalCitation True) , ("supercites", citation "supercites" NormalCitation True) , ("footcitetexts", inNote <$> citation "footcitetexts" NormalCitation True) , ("Autocite", citation "Autocite" NormalCitation False) , ("Smartcite", citation "Smartcite" NormalCitation False) , ("Footcite", inNote <$> citation "Footcite" NormalCitation False) , ("Parencite", citation "Parencite" NormalCitation False) , ("Supercite", citation "Supercite" NormalCitation False) , ("Footcitetext", inNote <$> citation "Footcitetext" NormalCitation False) , ("Citeyearpar", citation "Citeyearpar" SuppressAuthor False) , ("Citeyear", citation "Citeyear" SuppressAuthor False) , ("Autocite*", citation "Autocite*" SuppressAuthor False) , ("Cite*", citation "Cite*" SuppressAuthor False) , ("Parencite*", citation "Parencite*" SuppressAuthor False) , ("Textcite", citation "Textcite" AuthorInText False) , ("Textcites", citation "Textcites" AuthorInText True) , ("Cites", citation "Cites" NormalCitation True) , ("Autocites", citation "Autocites" NormalCitation True) , ("Footcites", inNote <$> citation "Footcites" NormalCitation True) , ("Parencites", citation "Parencites" NormalCitation True) , ("Supercites", citation "Supercites" NormalCitation True) , ("Footcitetexts", inNote <$> citation "Footcitetexts" NormalCitation True) , ("citetext", complexNatbibCitation inline NormalCitation) , ("citeauthor", (try (tok *> sp *> controlSeq "citetext") *> complexNatbibCitation inline AuthorInText) <|> citation "citeauthor" AuthorInText False) , ("nocite", mempty <$ (citation "nocite" NormalCitation False >>= addMeta "nocite")) ] -- citations addPrefix :: [Inline] -> [Citation] -> [Citation] addPrefix p (k:ks) = k {citationPrefix = p ++ citationPrefix k} : ks addPrefix _ _ = [] addSuffix :: [Inline] -> [Citation] -> [Citation] addSuffix s ks@(_:_) = let k = last ks in init ks ++ [k {citationSuffix = citationSuffix k ++ s}] addSuffix _ _ = [] simpleCiteArgs :: forall m . PandocMonad m => LP m Inlines -> LP m [Citation] simpleCiteArgs inline = try $ do first <- optionMaybe $ toList <$> opt second <- optionMaybe $ toList <$> opt keys <- try $ bgroup *> manyTill citationLabel egroup let (pre, suf) = case (first , second ) of (Just s , Nothing) -> (mempty, s ) (Just s , Just t ) -> (s , t ) _ -> (mempty, mempty) conv k = Citation { citationId = k , citationPrefix = [] , citationSuffix = [] , citationMode = NormalCitation , citationHash = 0 , citationNoteNum = 0 } return $ addPrefix pre $ addSuffix suf $ map conv keys where opt :: PandocMonad m => LP m Inlines opt = do toks <- try (sp *> bracketedToks <* sp) -- now parse the toks as inlines st <- getState parsed <- lift $ runParserT (mconcat <$> many inline) st "bracketed option" (TokStream False toks) case parsed of Right result -> return result Left e -> throwError $ fromParsecError (toSources toks) e citationLabel :: PandocMonad m => LP m Text citationLabel = do sp untokenize <$> (many1 (satisfyTok isWordTok <|> symbolIn bibtexKeyChar) <* sp <* optional (symbol ',') <* sp) where bibtexKeyChar = ".:;?!`'()/*@_+=-&[]" :: [Char] cites :: PandocMonad m => LP m Inlines -> CitationMode -> Bool -> LP m [Citation] cites inline mode multi = try $ do let paropt = parenWrapped inline cits <- if multi then do multiprenote <- optionMaybe $ toList <$> paropt multipostnote <- optionMaybe $ toList <$> paropt let (pre, suf) = case (multiprenote, multipostnote) of (Just s , Nothing) -> (mempty, s) (Nothing , Just t) -> (mempty, t) (Just s , Just t ) -> (s, t) _ -> (mempty, mempty) tempCits <- many1 $ simpleCiteArgs inline case tempCits of (k:ks) -> case ks of (_:_) -> return $ (addMprenote pre k : init ks) ++ [addMpostnote suf (last ks)] _ -> return [addMprenote pre (addMpostnote suf k)] _ -> return [[]] else count 1 $ simpleCiteArgs inline let cs = concat cits return $ case mode of AuthorInText -> case cs of (c:rest) -> c {citationMode = mode} : rest [] -> [] _ -> map (\a -> a {citationMode = mode}) cs where mprenote (k:ks) = (k:ks) ++ [Space] mprenote _ = mempty mpostnote (k:ks) = [Str ",", Space] ++ (k:ks) mpostnote _ = mempty addMprenote mpn (k:ks) = let mpnfinal = case citationPrefix k of (_:_) -> mprenote mpn _ -> mpn in addPrefix mpnfinal (k:ks) addMprenote _ _ = [] addMpostnote = addSuffix . mpostnote citationWith :: PandocMonad m => LP m Inlines -> Text -> CitationMode -> Bool -> LP m Inlines citationWith inline name mode multi = do (c,raw) <- withRaw $ cites inline mode multi return $ cite c (rawInline "latex" $ "\\" <> name <> untokenize raw) handleCitationPart :: Inlines -> [Citation] handleCitationPart ils = let isCite Cite{} = True isCite _ = False (pref, rest) = break isCite (toList ils) in case rest of (Cite cs _:suff) -> addPrefix pref $ addSuffix suff cs _ -> [] complexNatbibCitation :: PandocMonad m => LP m Inlines -> CitationMode -> LP m Inlines complexNatbibCitation inline mode = try $ do (cs, raw) <- withRaw $ concat <$> do bgroup items <- mconcat <$> many1 (notFollowedBy (symbol ';') >> inline) `sepBy1` symbol ';' egroup return $ map handleCitationPart items case cs of [] -> mzero (c:cits) -> return $ cite (c{ citationMode = mode }:cits) (rawInline "latex" $ "\\citetext" <> untokenize raw) inNote :: Inlines -> Inlines inNote ils = note $ para $ ils <> str "." pandoc-3.1.3/src/Text/Pandoc/Readers/LaTeX/Inline.hs0000644000000000000000000003234007346545000020210 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ViewPatterns #-} {- | Module : Text.Pandoc.Readers.LaTeX.Inline Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable -} module Text.Pandoc.Readers.LaTeX.Inline ( acronymCommands , verbCommands , charCommands , accentCommands , nameCommands , biblatexInlineCommands , refCommands , rawInlineOr , listingsLanguage ) where import qualified Data.Map as M import Data.Text (Text) import qualified Data.Text as T import Text.Pandoc.Builder import Text.Pandoc.Shared (toRomanNumeral, safeRead) import Text.Pandoc.TeX (Tok (..), TokType (..)) import Control.Applicative (optional, (<|>)) import Control.Monad (guard, mzero, mplus, unless) import Text.Pandoc.Class.PandocMonad (PandocMonad (..)) import Text.Pandoc.Translations (translateTerm) import Text.Pandoc.Readers.LaTeX.Parsing import Text.Pandoc.Extensions (extensionEnabled, Extension(..)) import Text.Pandoc.Parsing (getOption, updateState, getState, notFollowedBy, manyTill, getInput, setInput, incSourceColumn, option, many1) import Data.Char (isDigit) import Text.Pandoc.Highlighting (fromListingsLanguage,) import Data.Maybe (maybeToList, fromMaybe) import Text.Pandoc.Options (ReaderOptions(..)) import qualified Data.Text.Normalize as Normalize import qualified Text.Pandoc.Translations as Translations rawInlineOr :: PandocMonad m => Text -> LP m Inlines -> LP m Inlines rawInlineOr name' fallback = do parseRaw <- extensionEnabled Ext_raw_tex <$> getOption readerExtensions if parseRaw then rawInline "latex" <$> getRawCommand name' ("\\" <> name') else fallback dolabel :: PandocMonad m => LP m Inlines dolabel = do v <- braced let refstr = untokenize v updateState $ \st -> st{ sLastLabel = Just refstr } return $ spanWith (refstr,[],[("label", refstr)]) mempty doref :: PandocMonad m => Text -> LP m Inlines doref cls = do v <- braced let refstr = untokenize v return $ linkWith ("",[],[ ("reference-type", cls) , ("reference", refstr)]) ("#" <> refstr) "" (inBrackets $ str refstr) inBrackets :: Inlines -> Inlines inBrackets x = str "[" <> x <> str "]" doTerm :: PandocMonad m => Translations.Term -> LP m Inlines doTerm term = str <$> translateTerm term lit :: Text -> LP m Inlines lit = pure . str doverb :: PandocMonad m => LP m Inlines doverb = do Tok _ Symbol t <- anySymbol marker <- case T.uncons t of Just (c, ts) | T.null ts -> return c _ -> mzero withVerbatimMode $ code . untokenize <$> manyTill (notFollowedBy newlineTok >> verbTok marker) (symbol marker) verbTok :: PandocMonad m => Char -> LP m Tok verbTok stopchar = do t@(Tok pos toktype txt) <- anyTok case T.findIndex (== stopchar) txt of Nothing -> return t Just i -> do let (t1, t2) = T.splitAt i txt TokStream macrosExpanded inp <- getInput setInput $ TokStream macrosExpanded $ Tok (incSourceColumn pos i) Symbol (T.singleton stopchar) : tokenize (incSourceColumn pos (i + 1)) (T.drop 1 t2) ++ inp return $ Tok pos toktype t1 listingsLanguage :: [(Text, Text)] -> Maybe Text listingsLanguage opts = case lookup "language" opts of Nothing -> Nothing Just l -> fromListingsLanguage l `mplus` Just l dolstinline :: PandocMonad m => LP m Inlines dolstinline = do options <- option [] keyvals let classes = maybeToList $ listingsLanguage options doinlinecode classes domintinline :: PandocMonad m => LP m Inlines domintinline = do skipopts cls <- untokenize <$> braced doinlinecode [cls] doinlinecode :: PandocMonad m => [Text] -> LP m Inlines doinlinecode classes = do Tok _ Symbol t <- anySymbol marker <- case T.uncons t of Just (c, ts) | T.null ts -> return c _ -> mzero let stopchar = if marker == '{' then '}' else marker withVerbatimMode $ codeWith ("",classes,[]) . T.map nlToSpace . untokenize <$> manyTill (verbTok stopchar) (symbol stopchar) nlToSpace :: Char -> Char nlToSpace '\n' = ' ' nlToSpace x = x romanNumeralUpper :: (PandocMonad m) => LP m Inlines romanNumeralUpper = str . toRomanNumeral <$> romanNumeralArg romanNumeralLower :: (PandocMonad m) => LP m Inlines romanNumeralLower = str . T.toLower . toRomanNumeral <$> romanNumeralArg romanNumeralArg :: (PandocMonad m) => LP m Int romanNumeralArg = spaces *> (parser <|> inBraces) where inBraces = do symbol '{' spaces res <- parser spaces symbol '}' return res parser = do s <- untokenize <$> many1 (satisfyTok isWordTok) let (digits, rest) = T.span isDigit s unless (T.null rest) $ Prelude.fail "Non-digits in argument to \\Rn or \\RN" safeRead digits accentWith :: PandocMonad m => LP m Inlines -> Char -> Maybe Char -> LP m Inlines accentWith tok combiningAccent fallBack = do ils <- option mempty tok case toList ils of (Str (T.uncons -> Just (x, xs)) : ys) -> return $ fromList $ -- try to normalize to the combined character: Str (Normalize.normalize Normalize.NFC (T.pack [x, combiningAccent]) <> xs) : ys [Space] -> return $ str $ T.singleton $ fromMaybe combiningAccent fallBack [] -> return $ str $ T.singleton $ fromMaybe combiningAccent fallBack _ -> return ils verbCommands :: PandocMonad m => M.Map Text (LP m Inlines) verbCommands = M.fromList [ ("verb", doverb) , ("lstinline", dolstinline) , ("mintinline", domintinline) , ("Verb", doverb) ] accentCommands :: PandocMonad m => LP m Inlines -> M.Map Text (LP m Inlines) accentCommands tok = let accent = accentWith tok in M.fromList [ ("aa", lit "å") , ("AA", lit "Å") , ("ss", lit "ß") , ("o", lit "ø") , ("O", lit "Ø") , ("L", lit "Ł") , ("l", lit "ł") , ("ae", lit "æ") , ("AE", lit "Æ") , ("oe", lit "œ") , ("OE", lit "Œ") , ("pounds", lit "£") , ("euro", lit "€") , ("copyright", lit "©") , ("textasciicircum", lit "^") , ("textasciitilde", lit "~") , ("H", accent '\779' Nothing) -- hungarumlaut , ("`", accent '\768' (Just '`')) -- grave , ("'", accent '\769' (Just '\'')) -- acute , ("^", accent '\770' (Just '^')) -- circ , ("~", accent '\771' (Just '~')) -- tilde , ("\"", accent '\776' Nothing) -- umlaut , (".", accent '\775' Nothing) -- dot , ("=", accent '\772' Nothing) -- macron , ("|", accent '\781' Nothing) -- vertical line above , ("b", accent '\817' Nothing) -- macron below , ("c", accent '\807' Nothing) -- cedilla , ("G", accent '\783' Nothing) -- doublegrave , ("h", accent '\777' Nothing) -- hookabove , ("d", accent '\803' Nothing) -- dotbelow , ("f", accent '\785' Nothing) -- inverted breve , ("r", accent '\778' Nothing) -- ringabove , ("t", accent '\865' Nothing) -- double inverted breve , ("U", accent '\782' Nothing) -- double vertical line above , ("v", accent '\780' Nothing) -- hacek , ("u", accent '\774' Nothing) -- breve , ("k", accent '\808' Nothing) -- ogonek , ("textogonekcentered", accent '\808' Nothing) -- ogonek , ("i", lit "ı") -- dotless i , ("j", lit "ȷ") -- dotless j , ("newtie", accent '\785' Nothing) -- inverted breve , ("textcircled", accent '\8413' Nothing) -- combining circle ] charCommands :: PandocMonad m => M.Map Text (LP m Inlines) charCommands = M.fromList [ ("ldots", lit "…") , ("vdots", lit "\8942") , ("dots", lit "…") , ("mdots", lit "…") , ("sim", lit "~") , ("sep", lit ",") , ("P", lit "¶") , ("S", lit "§") , ("$", lit "$") , ("%", lit "%") , ("&", lit "&") , ("#", lit "#") , ("_", lit "_") , ("{", lit "{") , ("}", lit "}") , ("qed", lit "\a0\x25FB") , ("lq", return (str "‘")) , ("rq", return (str "’")) , ("textquoteleft", return (str "‘")) , ("textquoteright", return (str "’")) , ("textquotedblleft", return (str "“")) , ("textquotedblright", return (str "”")) , ("/", pure mempty) -- italic correction , ("\\", linebreak <$ (do inTableCell <- sInTableCell <$> getState guard $ not inTableCell optional rawopt spaces)) , (",", lit "\8198") , ("@", pure mempty) , (" ", lit "\160") , ("ps", pure $ str "PS." <> space) , ("TeX", lit "TeX") , ("LaTeX", lit "LaTeX") , ("bar", lit "|") , ("textless", lit "<") , ("textgreater", lit ">") , ("textbackslash", lit "\\") , ("backslash", lit "\\") , ("slash", lit "/") -- fontawesome , ("faCheck", lit "\10003") , ("faClose", lit "\10007") -- hyphenat , ("bshyp", lit "\\\173") , ("fshyp", lit "/\173") , ("dothyp", lit ".\173") , ("colonhyp", lit ":\173") , ("hyp", lit "-") ] biblatexInlineCommands :: PandocMonad m => LP m Inlines -> M.Map Text (LP m Inlines) biblatexInlineCommands tok = M.fromList -- biblatex misc [ ("RN", romanNumeralUpper) , ("Rn", romanNumeralLower) , ("mkbibquote", spanWith nullAttr . doubleQuoted <$> tok) , ("mkbibemph", spanWith nullAttr . emph <$> tok) , ("mkbibitalic", spanWith nullAttr . emph <$> tok) , ("mkbibbold", spanWith nullAttr . strong <$> tok) , ("mkbibparens", spanWith nullAttr . (\x -> str "(" <> x <> str ")") <$> tok) , ("mkbibbrackets", spanWith nullAttr . (\x -> str "[" <> x <> str "]") <$> tok) , ("autocap", spanWith nullAttr <$> tok) , ("textnormal", spanWith ("",["nodecor"],[]) <$> tok) , ("bibstring", (\x -> spanWith ("",[],[("bibstring",x)]) (str x)) . untokenize <$> braced) , ("adddot", pure (str ".")) , ("adddotspace", pure (spanWith nullAttr (str "." <> space))) , ("addabbrvspace", pure space) , ("hyphen", pure (str "-")) ] nameCommands :: PandocMonad m => M.Map Text (LP m Inlines) nameCommands = M.fromList [ ("figurename", doTerm Translations.Figure) , ("prefacename", doTerm Translations.Preface) , ("refname", doTerm Translations.References) , ("bibname", doTerm Translations.Bibliography) , ("chaptername", doTerm Translations.Chapter) , ("partname", doTerm Translations.Part) , ("contentsname", doTerm Translations.Contents) , ("listfigurename", doTerm Translations.ListOfFigures) , ("listtablename", doTerm Translations.ListOfTables) , ("indexname", doTerm Translations.Index) , ("abstractname", doTerm Translations.Abstract) , ("tablename", doTerm Translations.Table) , ("enclname", doTerm Translations.Encl) , ("ccname", doTerm Translations.Cc) , ("headtoname", doTerm Translations.To) , ("pagename", doTerm Translations.Page) , ("seename", doTerm Translations.See) , ("seealsoname", doTerm Translations.SeeAlso) , ("proofname", doTerm Translations.Proof) , ("glossaryname", doTerm Translations.Glossary) , ("lstlistingname", doTerm Translations.Listing) ] refCommands :: PandocMonad m => M.Map Text (LP m Inlines) refCommands = M.fromList [ ("label", rawInlineOr "label" dolabel) , ("ref", rawInlineOr "ref" $ doref "ref") , ("cref", rawInlineOr "cref" $ doref "ref") -- from cleveref.sty , ("vref", rawInlineOr "vref" $ doref "ref+page") -- from varioref.sty , ("eqref", rawInlineOr "eqref" $ doref "eqref") -- from amsmath.sty , ("autoref", rawInlineOr "autoref" $ doref "autoref") -- from hyperref.sty ] acronymCommands :: PandocMonad m => M.Map Text (LP m Inlines) acronymCommands = M.fromList -- glossaries package [ ("gls", doAcronym "short") , ("Gls", doAcronym "short") , ("glsdesc", doAcronym "long") , ("Glsdesc", doAcronym "long") , ("GLSdesc", doAcronym "long") , ("acrlong", doAcronym "long") , ("Acrlong", doAcronym "long") , ("acrfull", doAcronym "full") , ("Acrfull", doAcronym "full") , ("acrshort", doAcronym "abbrv") , ("Acrshort", doAcronym "abbrv") , ("glspl", doAcronymPlural "short") , ("Glspl", doAcronymPlural "short") , ("glsdescplural", doAcronymPlural "long") , ("Glsdescplural", doAcronymPlural "long") , ("GLSdescplural", doAcronymPlural "long") -- acronyms package , ("ac", doAcronym "short") , ("acf", doAcronym "full") , ("acs", doAcronym "abbrv") , ("acl", doAcronym "long") , ("acp", doAcronymPlural "short") , ("acfp", doAcronymPlural "full") , ("acsp", doAcronymPlural "abbrv") , ("aclp", doAcronymPlural "long") , ("Ac", doAcronym "short") , ("Acf", doAcronym "full") , ("Acs", doAcronym "abbrv") , ("Acl", doAcronym "long") , ("Acp", doAcronymPlural "short") , ("Acfp", doAcronymPlural "full") , ("Acsp", doAcronymPlural "abbrv") , ("Aclp", doAcronymPlural "long") ] doAcronym :: PandocMonad m => Text -> LP m Inlines doAcronym form = do acro <- braced return . mconcat $ [spanWith ("",[],[("acronym-label", untokenize acro), ("acronym-form", "singular+" <> form)]) $ str $ untokenize acro] doAcronymPlural :: PandocMonad m => Text -> LP m Inlines doAcronymPlural form = do acro <- braced let plural = str "s" return . mconcat $ [spanWith ("",[],[("acronym-label", untokenize acro), ("acronym-form", "plural+" <> form)]) $ mconcat [str $ untokenize acro, plural]] pandoc-3.1.3/src/Text/Pandoc/Readers/LaTeX/Lang.hs0000644000000000000000000002400107346545000017646 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Readers.LaTeX.Lang Copyright : Copyright (C) 2018-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Functions for parsing polyglossia and babel language specifiers to BCP47 'Lang'. -} module Text.Pandoc.Readers.LaTeX.Lang ( setDefaultLanguage , polyglossiaLangToBCP47 , babelLangToBCP47 , enquoteCommands , inlineLanguageCommands ) where import qualified Data.Map as M import Data.Text (Text) import qualified Data.Text as T import Text.Pandoc.Shared (extractSpaces) import Text.Collate.Lang (Lang(..), renderLang) import Text.Pandoc.Class (PandocMonad(..)) import Text.Pandoc.Translations (setTranslations) import Text.Pandoc.Readers.LaTeX.Parsing import Text.Pandoc.Parsing (updateState, option, getState, QuoteContext(..), withQuoteContext) import Text.Pandoc.Builder (Blocks, Inlines, setMeta, str, spanWith, singleQuoted, doubleQuoted) enquote :: PandocMonad m => LP m Inlines -> Bool -> Maybe Text -> LP m Inlines enquote tok starred mblang = do skipopts let lang = mblang >>= babelLangToBCP47 let langspan = case lang of Nothing -> id Just l -> spanWith ("",[],[("lang", renderLang l)]) quoteContext <- sQuoteContext <$> getState if starred || quoteContext == InDoubleQuote then singleQuoted . langspan <$> withQuoteContext InSingleQuote tok else doubleQuoted . langspan <$> withQuoteContext InDoubleQuote tok enquoteCommands :: PandocMonad m => LP m Inlines -> M.Map Text (LP m Inlines) enquoteCommands tok = M.fromList [ ("enquote*", enquote tok True Nothing) , ("enquote", enquote tok False Nothing) -- foreignquote is supposed to use native quote marks , ("foreignquote*", braced >>= enquote tok True . Just . untokenize) , ("foreignquote", braced >>= enquote tok False . Just . untokenize) -- hypehnquote uses regular quotes , ("hyphenquote*", braced >>= enquote tok True . Just . untokenize) , ("hyphenquote", braced >>= enquote tok False . Just . untokenize) ] foreignlanguage :: PandocMonad m => LP m Inlines -> LP m Inlines foreignlanguage tok = do babelLang <- untokenize <$> braced case babelLangToBCP47 babelLang of Just lang -> spanWith ("", [], [("lang", renderLang lang)]) <$> tok _ -> tok inlineLanguageCommands :: PandocMonad m => LP m Inlines -> M.Map Text (LP m Inlines) inlineLanguageCommands tok = M.fromList $ ("foreignlanguage", foreignlanguage tok) : (mk <$> M.toList polyglossiaLangToBCP47) where mk (polyglossia, bcp47Func) = ("text" <> polyglossia, inlineLanguage tok bcp47Func) inlineLanguage :: PandocMonad m => LP m Inlines -> (Text -> Lang) -> LP m Inlines inlineLanguage tok bcp47Func = do o <- option "" $ T.filter (\c -> c /= '[' && c /= ']') <$> rawopt let lang = renderLang $ bcp47Func o extractSpaces (spanWith ("", [], [("lang", lang)])) <$> tok setDefaultLanguage :: PandocMonad m => LP m Blocks setDefaultLanguage = do o <- option "" $ T.filter (\c -> c /= '[' && c /= ']') <$> rawopt polylang <- untokenize <$> braced case M.lookup polylang polyglossiaLangToBCP47 of Nothing -> return mempty -- TODO mzero? warning? Just langFunc -> do let l = langFunc o setTranslations l updateState $ setMeta "lang" $ str (renderLang l) return mempty polyglossiaLangToBCP47 :: M.Map T.Text (T.Text -> Lang) polyglossiaLangToBCP47 = M.fromList [ ("arabic", \o -> case T.filter (/=' ') o of "locale=algeria" -> Lang "ar" Nothing (Just "DZ") [] [] [] "locale=mashriq" -> Lang "ar" Nothing (Just "SY") [] [] [] "locale=libya" -> Lang "ar" Nothing (Just "LY") [] [] [] "locale=morocco" -> Lang "ar" Nothing (Just "MA") [] [] [] "locale=mauritania" -> Lang "ar" Nothing (Just "MR") [] [] [] "locale=tunisia" -> Lang "ar" Nothing (Just "TN") [] [] [] _ -> Lang "ar" Nothing Nothing [] [] []) , ("german", \o -> case T.filter (/=' ') o of "spelling=old" -> Lang "de" Nothing (Just "DE") ["1901"] [] [] "variant=austrian,spelling=old" -> Lang "de" Nothing (Just "AT") ["1901"] [] [] "variant=austrian" -> Lang "de" Nothing (Just "AT") [] [] [] "variant=swiss,spelling=old" -> Lang "de" Nothing (Just "CH") ["1901"] [] [] "variant=swiss" -> Lang "de" Nothing (Just "CH") [] [] [] _ -> Lang "de" Nothing Nothing [] [] []) , ("lsorbian", \_ -> Lang "dsb" Nothing Nothing [] [] []) , ("greek", \o -> case T.filter (/=' ') o of "variant=poly" -> Lang "el" Nothing (Just "polyton") [] [] [] "variant=ancient" -> Lang "grc" Nothing Nothing [] [] [] _ -> Lang "el" Nothing Nothing [] [] []) , ("english", \o -> case T.filter (/=' ') o of "variant=australian" -> Lang "en" Nothing (Just "AU") [] [] [] "variant=canadian" -> Lang "en" Nothing (Just "CA") [] [] [] "variant=british" -> Lang "en" Nothing (Just "GB") [] [] [] "variant=newzealand" -> Lang "en" Nothing (Just "NZ") [] [] [] "variant=american" -> Lang "en" Nothing (Just "US") [] [] [] _ -> Lang "en" Nothing Nothing [] [] []) , ("usorbian", \_ -> Lang "hsb" Nothing Nothing [] [] []) , ("latin", \o -> case T.filter (/=' ') o of "variant=classic" -> Lang "la" Nothing Nothing ["x-classic"] [] [] _ -> Lang "la" Nothing Nothing [] [] []) , ("slovenian", \_ -> Lang "sl" Nothing Nothing [] [] []) , ("serbianc", \_ -> Lang "sr" (Just "Cyrl") Nothing [] [] []) , ("pinyin", \_ -> Lang "zh" (Just "Latn") Nothing ["pinyin"] [] []) , ("afrikaans", \_ -> simpleLang "af") , ("amharic", \_ -> simpleLang "am") , ("assamese", \_ -> simpleLang "as") , ("asturian", \_ -> simpleLang "ast") , ("bulgarian", \_ -> simpleLang "bg") , ("bengali", \_ -> simpleLang "bn") , ("tibetan", \_ -> simpleLang "bo") , ("breton", \_ -> simpleLang "br") , ("catalan", \_ -> simpleLang "ca") , ("welsh", \_ -> simpleLang "cy") , ("czech", \_ -> simpleLang "cs") , ("coptic", \_ -> simpleLang "cop") , ("danish", \_ -> simpleLang "da") , ("divehi", \_ -> simpleLang "dv") , ("esperanto", \_ -> simpleLang "eo") , ("spanish", \_ -> simpleLang "es") , ("estonian", \_ -> simpleLang "et") , ("basque", \_ -> simpleLang "eu") , ("farsi", \_ -> simpleLang "fa") , ("finnish", \_ -> simpleLang "fi") , ("french", \_ -> simpleLang "fr") , ("friulan", \_ -> simpleLang "fur") , ("irish", \_ -> simpleLang "ga") , ("scottish", \_ -> simpleLang "gd") , ("ethiopic", \_ -> simpleLang "gez") , ("galician", \_ -> simpleLang "gl") , ("hebrew", \_ -> simpleLang "he") , ("hindi", \_ -> simpleLang "hi") , ("croatian", \_ -> simpleLang "hr") , ("magyar", \_ -> simpleLang "hu") , ("armenian", \_ -> simpleLang "hy") , ("gujarati", \_ -> simpleLang "gu") , ("interlingua", \_ -> simpleLang "ia") , ("indonesian", \_ -> simpleLang "id") , ("icelandic", \_ -> simpleLang "is") , ("italian", \_ -> simpleLang "it") , ("japanese", \_ -> simpleLang "jp") , ("khmer", \_ -> simpleLang "km") , ("kurmanji", \_ -> simpleLang "kmr") , ("kannada", \_ -> simpleLang "kn") , ("korean", \_ -> simpleLang "ko") , ("lao", \_ -> simpleLang "lo") , ("lithuanian", \_ -> simpleLang "lt") , ("latvian", \_ -> simpleLang "lv") , ("malayalam", \_ -> simpleLang "ml") , ("mongolian", \_ -> simpleLang "mn") , ("marathi", \_ -> simpleLang "mr") , ("dutch", \_ -> simpleLang "nl") , ("nynorsk", \_ -> simpleLang "nn") , ("norsk", \_ -> simpleLang "no") , ("nko", \_ -> simpleLang "nqo") , ("occitan", \_ -> simpleLang "oc") , ("oriya", \_ -> simpleLang "or") , ("punjabi", \_ -> simpleLang "pa") , ("polish", \_ -> simpleLang "pl") , ("piedmontese", \_ -> simpleLang "pms") , ("portuguese", \_ -> simpleLang "pt") , ("romansh", \_ -> simpleLang "rm") , ("romanian", \_ -> simpleLang "ro") , ("russian", \_ -> simpleLang "ru") , ("sanskrit", \_ -> simpleLang "sa") , ("samin", \_ -> simpleLang "se") , ("slovak", \_ -> simpleLang "sk") , ("albanian", \_ -> simpleLang "sq") , ("serbian", \_ -> simpleLang "sr") , ("swedish", \_ -> simpleLang "sv") , ("syriac", \_ -> simpleLang "syr") , ("tamil", \_ -> simpleLang "ta") , ("telugu", \_ -> simpleLang "te") , ("thai", \_ -> simpleLang "th") , ("turkmen", \_ -> simpleLang "tk") , ("turkish", \_ -> simpleLang "tr") , ("ukrainian", \_ -> simpleLang "uk") , ("urdu", \_ -> simpleLang "ur") , ("vietnamese", \_ -> simpleLang "vi") ] simpleLang :: Text -> Lang simpleLang l = Lang l Nothing Nothing [] [] [] babelLangToBCP47 :: T.Text -> Maybe Lang babelLangToBCP47 s = case s of "austrian" -> Just $ Lang "de" Nothing (Just "AT") ["1901"] [] [] "naustrian" -> Just $ Lang "de" Nothing (Just "AT") [] [] [] "swissgerman" -> Just $ Lang "de" Nothing (Just "CH") ["1901"] [] [] "nswissgerman" -> Just $ Lang "de" Nothing (Just "CH") [] [] [] "german" -> Just $ Lang "de" Nothing (Just "DE") ["1901"] [] [] "ngerman" -> Just $ Lang "de" Nothing (Just "DE") [] [] [] "lowersorbian" -> Just $ Lang "dsb" Nothing Nothing [] [] [] "uppersorbian" -> Just $ Lang "hsb" Nothing Nothing [] [] [] "polutonikogreek" -> Just $ Lang "el" Nothing Nothing ["polyton"] [] [] "slovene" -> Just $ simpleLang "sl" "australian" -> Just $ Lang "en" Nothing (Just "AU") [] [] [] "canadian" -> Just $ Lang "en" Nothing (Just "CA") [] [] [] "british" -> Just $ Lang "en" Nothing (Just "GB") [] [] [] "newzealand" -> Just $ Lang "en" Nothing (Just "NZ") [] [] [] "american" -> Just $ Lang "en" Nothing (Just "US") [] [] [] "classiclatin" -> Just $ Lang "la" Nothing Nothing ["x-classic"] [] [] _ -> ($ "") <$> M.lookup s polyglossiaLangToBCP47 pandoc-3.1.3/src/Text/Pandoc/Readers/LaTeX/Macro.hs0000644000000000000000000002164507346545000020041 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} module Text.Pandoc.Readers.LaTeX.Macro ( macroDef ) where import Text.Pandoc.Extensions (Extension(..)) import Text.Pandoc.Logging (LogMessage(MacroAlreadyDefined)) import Text.Pandoc.Readers.LaTeX.Parsing import Text.Pandoc.TeX import Text.Pandoc.Class import Text.Pandoc.Shared (safeRead) import Text.Pandoc.Parsing hiding (blankline, mathDisplay, mathInline, optional, space, spaces, withRaw, (<|>)) import Control.Applicative ((<|>), optional) import qualified Data.Map as M import Data.Text (Text) import qualified Data.Text as T import qualified Data.List.NonEmpty as NonEmpty import Data.List.NonEmpty (NonEmpty(..)) macroDef :: (PandocMonad m, Monoid a) => (Text -> a) -> LP m a macroDef constructor = do (_, s) <- withRaw (commandDef <|> environmentDef) (constructor (untokenize s) <$ guardDisabled Ext_latex_macros) <|> return mempty where commandDef = do nameMacroPairs <- newcommand <|> checkGlobal (letmacro <|> edefmacro <|> defmacro <|> newif) guardDisabled Ext_latex_macros <|> mapM_ insertMacro nameMacroPairs environmentDef = do mbenv <- newenvironment case mbenv of Nothing -> return () Just (name, macro1, macro2) -> guardDisabled Ext_latex_macros <|> do insertMacro (name, macro1) insertMacro ("end" <> name, macro2) -- @\newenvironment{envname}[n-args][default]{begin}{end}@ -- is equivalent to -- @\newcommand{\envname}[n-args][default]{begin}@ -- @\newcommand{\endenvname}@ insertMacro :: PandocMonad m => (Text, Macro) -> LP m () insertMacro (name, macro'@(Macro GlobalScope _ _ _ _)) = updateState $ \s -> s{ sMacros = NonEmpty.map (M.insert name macro') (sMacros s) } insertMacro (name, macro'@(Macro GroupScope _ _ _ _)) = updateState $ \s -> s{ sMacros = M.insert name macro' (NonEmpty.head (sMacros s)) :| NonEmpty.tail (sMacros s) } lookupMacro :: PandocMonad m => Text -> LP m Macro lookupMacro name = do macros :| _ <- sMacros <$> getState case M.lookup name macros of Just m -> return m Nothing -> fail "Macro not found" letmacro :: PandocMonad m => LP m [(Text, Macro)] letmacro = do controlSeq "let" withVerbatimMode $ do Tok _ (CtrlSeq name) _ <- anyControlSeq optional $ symbol '=' spaces -- we first parse in verbatim mode, and then expand macros, -- because we don't want \let\foo\bar to turn into -- \let\foo hello if we have previously \def\bar{hello} target <- anyControlSeq <|> singleChar case target of (Tok _ (CtrlSeq name') _) -> (do m <- lookupMacro name' pure [(name, m)]) <|> pure [(name, Macro GroupScope ExpandWhenDefined [] Nothing [target])] _ -> pure [(name, Macro GroupScope ExpandWhenDefined [] Nothing [target])] checkGlobal :: PandocMonad m => LP m [(Text, Macro)] -> LP m [(Text, Macro)] checkGlobal p = (controlSeq "global" *> (map (\(n, Macro _ expand arg optarg contents) -> (n, Macro GlobalScope expand arg optarg contents)) <$> p)) <|> p edefmacro :: PandocMonad m => LP m [(Text, Macro)] edefmacro = do scope <- (GroupScope <$ controlSeq "edef") <|> (GlobalScope <$ controlSeq "xdef") (name, contents) <- withVerbatimMode $ do Tok _ (CtrlSeq name) _ <- anyControlSeq -- we first parse in verbatim mode, and then expand macros, -- because we don't want \let\foo\bar to turn into -- \let\foo hello if we have previously \def\bar{hello} contents <- bracedOrToken return (name, contents) -- expand macros contents' <- parseFromToks (many anyTok) contents return [(name, Macro scope ExpandWhenDefined [] Nothing contents')] defmacro :: PandocMonad m => LP m [(Text, Macro)] defmacro = do -- we use withVerbatimMode, because macros are to be expanded -- at point of use, not point of definition scope <- (GroupScope <$ controlSeq "def") <|> (GlobalScope <$ controlSeq "gdef") withVerbatimMode $ do Tok _ (CtrlSeq name) _ <- anyControlSeq argspecs <- many (argspecArg <|> argspecPattern) contents <- bracedOrToken return [(name, Macro scope ExpandWhenUsed argspecs Nothing contents)] -- \newif\iffoo' defines: -- \iffoo to be \iffalse -- \footrue to be a command that defines \iffoo to be \iftrue -- \foofalse to be a command that defines \iffoo to be \iffalse newif :: PandocMonad m => LP m [(Text, Macro)] newif = do controlSeq "newif" withVerbatimMode $ do Tok pos (CtrlSeq name) _ <- anyControlSeq -- \def\iffoo\iffalse -- \def\footrue{\def\iffoo\iftrue} -- \def\foofalse{\def\iffoo\iffalse} let base = T.drop 2 name return [ (name, Macro GroupScope ExpandWhenUsed [] Nothing [Tok pos (CtrlSeq "iffalse") "\\iffalse"]) , (base <> "true", Macro GroupScope ExpandWhenUsed [] Nothing [ Tok pos (CtrlSeq "def") "\\def" , Tok pos (CtrlSeq name) ("\\" <> name) , Tok pos Symbol "{" , Tok pos (CtrlSeq "iftrue") "\\iftrue" , Tok pos Symbol "}" ]) , (base <> "false", Macro GroupScope ExpandWhenUsed [] Nothing [ Tok pos (CtrlSeq "def") "\\def" , Tok pos (CtrlSeq name) ("\\" <> name) , Tok pos Symbol "{" , Tok pos (CtrlSeq "iffalse") "\\iffalse" , Tok pos Symbol "}" ]) ] argspecArg :: PandocMonad m => LP m ArgSpec argspecArg = do Tok _ (Arg i) _ <- satisfyTok isArgTok return $ ArgNum i argspecPattern :: PandocMonad m => LP m ArgSpec argspecPattern = Pattern <$> many1 (satisfyTok (\(Tok _ toktype' txt) -> (toktype' == Symbol || toktype' == Word) && (txt /= "{" && txt /= "\\" && txt /= "}"))) newcommand :: PandocMonad m => LP m [(Text, Macro)] newcommand = do Tok pos (CtrlSeq mtype) _ <- controlSeq "newcommand" <|> controlSeq "renewcommand" <|> controlSeq "providecommand" <|> controlSeq "DeclareMathOperator" <|> controlSeq "DeclareRobustCommand" withVerbatimMode $ do Tok _ (CtrlSeq name) txt <- do optional (symbol '*') anyControlSeq <|> (symbol '{' *> spaces *> anyControlSeq <* spaces <* symbol '}') spaces numargs <- option 0 $ try bracketedNum let argspecs = map ArgNum [1..numargs] spaces optarg <- option Nothing $ Just <$> try bracketedToks spaces contents' <- bracedOrToken let contents = case mtype of "DeclareMathOperator" -> Tok pos (CtrlSeq "mathop") "\\mathop" : Tok pos Symbol "{" : Tok pos (CtrlSeq "mathrm") "\\mathrm" : Tok pos Symbol "{" : (contents' ++ [ Tok pos Symbol "}", Tok pos Symbol "}" ]) _ -> contents' let macro = Macro GroupScope ExpandWhenUsed argspecs optarg contents (do lookupMacro name case mtype of "providecommand" -> return [] "renewcommand" -> return [(name, macro)] _ -> [] <$ report (MacroAlreadyDefined txt pos)) <|> pure [(name, macro)] newenvironment :: PandocMonad m => LP m (Maybe (Text, Macro, Macro)) newenvironment = do pos <- getPosition Tok _ (CtrlSeq mtype) _ <- controlSeq "newenvironment" <|> controlSeq "renewenvironment" <|> controlSeq "provideenvironment" withVerbatimMode $ do optional $ symbol '*' spaces name <- untokenize <$> braced spaces numargs <- option 0 $ try bracketedNum spaces optarg <- option Nothing $ Just <$> try bracketedToks let argspecs = map (\i -> ArgNum i) [1..numargs] startcontents <- spaces >> bracedOrToken endcontents <- spaces >> bracedOrToken -- we need the environment to be in a group so macros defined -- inside behave correctly: let bg = Tok pos (CtrlSeq "bgroup") "\\bgroup " let eg = Tok pos (CtrlSeq "egroup") "\\egroup " let result = (name, Macro GroupScope ExpandWhenUsed argspecs optarg (bg:startcontents), Macro GroupScope ExpandWhenUsed [] Nothing (endcontents ++ [eg])) (do lookupMacro name case mtype of "provideenvironment" -> return Nothing "renewenvironment" -> return (Just result) _ -> do report $ MacroAlreadyDefined name pos return Nothing) <|> return (Just result) bracketedNum :: PandocMonad m => LP m Int bracketedNum = do ds <- untokenize <$> bracketedToks case safeRead ds of Just i -> return i _ -> return 0 pandoc-3.1.3/src/Text/Pandoc/Readers/LaTeX/Math.hs0000644000000000000000000001735307346545000017672 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} module Text.Pandoc.Readers.LaTeX.Math ( dollarsMath , inlineEnvironments , inlineEnvironment , mathInline , mathDisplay , theoremstyle , theoremEnvironment , newtheorem , proof ) where import Data.Maybe (fromMaybe) import Text.Pandoc.Walk (walk) import Text.Pandoc.Builder as B import qualified Data.Sequence as Seq import Text.Pandoc.Readers.LaTeX.Parsing import Text.Pandoc.TeX import Text.Pandoc.Class import Text.Pandoc.Shared (trimMath, stripTrailingNewlines) import Text.Pandoc.Parsing hiding (blankline, mathDisplay, mathInline, optional, space, spaces, withRaw, (<|>)) import Control.Applicative ((<|>), optional) import Control.Monad (guard, mzero) import qualified Data.Map as M import Data.Text (Text) dollarsMath :: PandocMonad m => LP m Inlines dollarsMath = do symbol '$' display <- option False (True <$ symbol '$') (do contents <- try $ untokenize <$> pDollarsMath 0 if display then mathDisplay contents <$ symbol '$' else return $ mathInline contents) <|> (guard display >> return (mathInline "")) -- Int is number of embedded groupings pDollarsMath :: PandocMonad m => Int -> LP m [Tok] pDollarsMath n = do tk@(Tok _ toktype t) <- anyTok case toktype of Symbol | t == "$" , n == 0 -> return [] | t == "\\" -> do tk' <- anyTok (tk :) . (tk' :) <$> pDollarsMath n | t == "{" -> (tk :) <$> pDollarsMath (n+1) | t == "}" -> if n > 0 then (tk :) <$> pDollarsMath (n-1) else mzero _ -> (tk :) <$> pDollarsMath n mathDisplay :: Text -> Inlines mathDisplay = displayMath . trimMath mathInline :: Text -> Inlines mathInline = math . trimMath mathEnvWith :: PandocMonad m => (Inlines -> a) -> Maybe Text -> Text -> LP m a mathEnvWith f innerEnv name = f . mathDisplay . inner <$> mathEnv name where inner x = case innerEnv of Nothing -> x Just y -> "\\begin{" <> y <> "}\n" <> x <> "\n\\end{" <> y <> "}" mathEnv :: PandocMonad m => Text -> LP m Text mathEnv name = do skipopts optional blankline res <- manyTill anyTok (end_ name) return $ stripTrailingNewlines $ untokenize res inlineEnvironment :: PandocMonad m => LP m Inlines inlineEnvironment = try $ do controlSeq "begin" name <- untokenize <$> braced M.findWithDefault mzero name inlineEnvironments inlineEnvironments :: PandocMonad m => M.Map Text (LP m Inlines) inlineEnvironments = M.fromList [ ("displaymath", mathEnvWith id Nothing "displaymath") , ("math", math <$> mathEnv "math") , ("equation", mathEnvWith id Nothing "equation") , ("equation*", mathEnvWith id Nothing "equation*") , ("gather", mathEnvWith id (Just "gathered") "gather") , ("gather*", mathEnvWith id (Just "gathered") "gather*") , ("multline", mathEnvWith id (Just "gathered") "multline") , ("multline*", mathEnvWith id (Just "gathered") "multline*") , ("eqnarray", mathEnvWith id (Just "aligned") "eqnarray") , ("eqnarray*", mathEnvWith id (Just "aligned") "eqnarray*") , ("align", mathEnvWith id (Just "aligned") "align") , ("align*", mathEnvWith id (Just "aligned") "align*") , ("alignat", mathEnvWith id (Just "aligned") "alignat") , ("alignat*", mathEnvWith id (Just "aligned") "alignat*") , ("dmath", mathEnvWith id Nothing "dmath") , ("dmath*", mathEnvWith id Nothing "dmath*") , ("dgroup", mathEnvWith id (Just "aligned") "dgroup") , ("dgroup*", mathEnvWith id (Just "aligned") "dgroup*") , ("darray", mathEnvWith id (Just "aligned") "darray") , ("darray*", mathEnvWith id (Just "aligned") "darray*") , ("subequations", mathEnvWith id Nothing "subequations") ] theoremstyle :: PandocMonad m => LP m Blocks theoremstyle = do stylename <- untokenize <$> braced let mbstyle = case stylename of "plain" -> Just PlainStyle "definition" -> Just DefinitionStyle "remark" -> Just RemarkStyle _ -> Nothing case mbstyle of Nothing -> return () Just sty -> updateState $ \s -> s{ sLastTheoremStyle = sty } return mempty newtheorem :: PandocMonad m => LP m Inlines -> LP m Blocks newtheorem inline = do number <- option True (False <$ symbol '*' <* sp) name <- untokenize <$> braced sp series <- option Nothing $ Just . untokenize <$> bracketedToks sp showName <- tokWith inline sp syncTo <- option Nothing $ Just . untokenize <$> bracketedToks sty <- sLastTheoremStyle <$> getState let spec = TheoremSpec { theoremName = showName , theoremStyle = sty , theoremSeries = series , theoremSyncTo = syncTo , theoremNumber = number , theoremLastNum = DottedNum [0] } tmap <- sTheoremMap <$> getState updateState $ \s -> s{ sTheoremMap = M.insert name spec tmap } return mempty theoremEnvironment :: PandocMonad m => LP m Blocks -> LP m Inlines -> Text -> LP m Blocks theoremEnvironment blocks opt name = do resetCaption tmap <- sTheoremMap <$> getState case M.lookup name tmap of Nothing -> mzero Just tspec -> do optTitle <- option mempty $ (\x -> space <> "(" <> x <> ")") <$> opt bs <- env name blocks mblabel <- sLastLabel <$> getState number <- if theoremNumber tspec then do let name' = fromMaybe name $ theoremSeries tspec num <- getNextNumber (maybe (DottedNum [0]) theoremLastNum . M.lookup name' . sTheoremMap) updateState $ \s -> s{ sTheoremMap = M.adjust (\spec -> spec{ theoremLastNum = num }) name' (sTheoremMap s) } case mblabel of Just ident -> updateState $ \s -> s{ sLabels = M.insert ident (B.toList $ str (renderDottedNum num)) (sLabels s) } Nothing -> return () return $ space <> B.text (renderDottedNum num) else return mempty let titleEmph = case theoremStyle tspec of PlainStyle -> B.strong DefinitionStyle -> B.strong RemarkStyle -> B.emph let title = titleEmph (theoremName tspec <> number) <> optTitle <> "." <> space return $ divWith (fromMaybe "" mblabel, [name], []) $ addTitle title $ maybe id removeLabel mblabel $ case theoremStyle tspec of PlainStyle -> walk italicize bs _ -> bs proof :: PandocMonad m => LP m Blocks -> LP m Inlines -> LP m Blocks proof blocks opt = do title <- option (B.text "Proof") opt bs <- env "proof" blocks return $ B.divWith ("", ["proof"], []) $ addQed $ addTitle (B.emph (title <> ".")) bs addTitle :: Inlines -> Blocks -> Blocks addTitle ils bs = case B.toList bs of (Para xs : rest) -> B.fromList (Para (B.toList ils ++ (Space : xs)) : rest) _ -> B.para ils <> bs addQed :: Blocks -> Blocks addQed bs = case Seq.viewr (B.unMany bs) of s Seq.:> Para ils -> B.Many (s Seq.|> Para (ils ++ B.toList qedSign)) _ -> bs <> B.para qedSign where qedSign = B.str "\xa0\x25FB" italicize :: Block -> Block italicize x@(Para [Image{}]) = x -- see #6925 italicize x@(Plain [Image{}]) = x -- ditto italicize (Para ils) = Para [Emph ils] italicize (Plain ils) = Plain [Emph ils] italicize x = x pandoc-3.1.3/src/Text/Pandoc/Readers/LaTeX/Parsing.hs0000644000000000000000000011543507346545000020404 0ustar0000000000000000{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE BangPatterns #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {- | Module : Text.Pandoc.Readers.LaTeX.Parsing Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable General parsing types and functions for LaTeX. -} module Text.Pandoc.Readers.LaTeX.Parsing ( DottedNum(..) , renderDottedNum , incrementDottedNum , TheoremSpec(..) , TheoremStyle(..) , LaTeXState(..) , defaultLaTeXState , LP , TokStream(..) , withVerbatimMode , rawLaTeXParser , applyMacros , tokenize , tokenizeSources , getInputTokens , untokenize , untoken , satisfyTok , peekTok , parseFromToks , disablingWithRaw , doMacros , doMacros' , setpos , anyControlSeq , anySymbol , isNewlineTok , isWordTok , isArgTok , infile , spaces , spaces1 , tokTypeIn , controlSeq , symbol , symbolIn , sp , whitespace , newlineTok , comment , anyTok , singleChar , tokWith , specialChars , endline , blankline , primEscape , bgroup , egroup , grouped , braced , braced' , bracedUrl , bracedOrToken , bracketed , bracketedToks , parenWrapped , dimenarg , ignore , withRaw , keyvals , verbEnv , begin_ , end_ , getRawCommand , skipopts , rawopt , overlaySpecification , getNextNumber , label , setCaption , resetCaption , env , addMeta , removeLabel ) where import Control.Applicative (many, (<|>)) import Control.Monad import Control.Monad.Except (throwError) import Control.Monad.Trans (lift) import Data.Char (chr, isAlphaNum, isDigit, isLetter, ord) import Data.Default import Data.List (intercalate) import qualified Data.IntMap as IntMap import qualified Data.Map as M import qualified Data.Set as Set import Data.Text (Text) import Data.Maybe (fromMaybe) import Data.List.NonEmpty (NonEmpty(..)) import qualified Data.List.NonEmpty as NonEmpty import qualified Data.Text as T import Text.Pandoc.Builder import Text.Pandoc.Class.PandocMonad (PandocMonad, report) import Text.Pandoc.Error (PandocError (PandocMacroLoop,PandocShouldNeverHappenError)) import Text.Pandoc.Logging import Text.Pandoc.Options import Text.Pandoc.Parsing hiding (blankline, many, mathDisplay, mathInline, space, spaces, withRaw, (<|>)) import Text.Pandoc.TeX (ExpansionPoint (..), Macro (..), ArgSpec (..), Tok (..), TokType (..)) import Text.Pandoc.Shared import Text.Pandoc.Walk newtype DottedNum = DottedNum [Int] deriving (Show, Eq) renderDottedNum :: DottedNum -> T.Text renderDottedNum (DottedNum xs) = T.pack $ intercalate "." (map show xs) incrementDottedNum :: Int -> DottedNum -> DottedNum incrementDottedNum level (DottedNum ns) = DottedNum $ case reverse (take level (ns ++ repeat 0)) of (x:xs) -> reverse (x+1 : xs) [] -> [] -- shouldn't happen data TheoremStyle = PlainStyle | DefinitionStyle | RemarkStyle deriving (Show, Eq) data TheoremSpec = TheoremSpec { theoremName :: Inlines , theoremStyle :: TheoremStyle , theoremSeries :: Maybe Text , theoremSyncTo :: Maybe Text , theoremNumber :: Bool , theoremLastNum :: DottedNum } deriving (Show, Eq) data LaTeXState = LaTeXState{ sOptions :: ReaderOptions , sMeta :: Meta , sQuoteContext :: QuoteContext , sMacros :: NonEmpty (M.Map Text Macro) , sContainers :: [Text] , sLogMessages :: [LogMessage] , sIdentifiers :: Set.Set Text , sVerbatimMode :: Bool , sCaption :: Maybe Caption , sInListItem :: Bool , sInTableCell :: Bool , sLastHeaderNum :: DottedNum , sLastFigureNum :: DottedNum , sLastTableNum :: DottedNum , sLastNoteNum :: Int , sTheoremMap :: M.Map Text TheoremSpec , sLastTheoremStyle :: TheoremStyle , sLastLabel :: Maybe Text , sLabels :: M.Map Text [Inline] , sHasChapters :: Bool , sToggles :: M.Map Text Bool , sFileContents :: M.Map Text Text , sEnableWithRaw :: Bool , sRawTokens :: IntMap.IntMap [Tok] } deriving Show defaultLaTeXState :: LaTeXState defaultLaTeXState = LaTeXState{ sOptions = def , sMeta = nullMeta , sQuoteContext = NoQuote , sMacros = M.empty :| [] , sContainers = [] , sLogMessages = [] , sIdentifiers = Set.empty , sVerbatimMode = False , sCaption = Nothing , sInListItem = False , sInTableCell = False , sLastHeaderNum = DottedNum [] , sLastFigureNum = DottedNum [] , sLastTableNum = DottedNum [] , sLastNoteNum = 0 , sTheoremMap = M.empty , sLastTheoremStyle = PlainStyle , sLastLabel = Nothing , sLabels = M.empty , sHasChapters = False , sToggles = M.empty , sFileContents = M.empty , sEnableWithRaw = True , sRawTokens = IntMap.empty } instance PandocMonad m => HasQuoteContext LaTeXState m where getQuoteContext = sQuoteContext <$> getState withQuoteContext context parser = do oldState <- getState let oldQuoteContext = sQuoteContext oldState setState oldState { sQuoteContext = context } result <- parser newState <- getState setState newState { sQuoteContext = oldQuoteContext } return result instance HasLogMessages LaTeXState where addLogMessage msg st = st{ sLogMessages = msg : sLogMessages st } getLogMessages st = reverse $ sLogMessages st instance HasIdentifierList LaTeXState where extractIdentifierList = sIdentifiers updateIdentifierList f st = st{ sIdentifiers = f $ sIdentifiers st } instance HasIncludeFiles LaTeXState where getIncludeFiles = sContainers addIncludeFile f s = s{ sContainers = f : sContainers s } dropLatestIncludeFile s = s { sContainers = drop 1 $ sContainers s } instance HasMacros LaTeXState where extractMacros st = NonEmpty.head $ sMacros st updateMacros f st = st{ sMacros = f (NonEmpty.head (sMacros st)) :| NonEmpty.tail (sMacros st) } instance HasReaderOptions LaTeXState where extractReaderOptions = sOptions instance HasMeta LaTeXState where setMeta field val st = st{ sMeta = setMeta field val $ sMeta st } deleteMeta field st = st{ sMeta = deleteMeta field $ sMeta st } instance Default LaTeXState where def = defaultLaTeXState -- The Boolean is True if macros have already been expanded, -- False if they need expanding. data TokStream = TokStream !Bool [Tok] deriving (Show) instance Semigroup TokStream where (TokStream exp1 ts1) <> (TokStream exp2 ts2) = TokStream (if null ts1 then exp2 else exp1) (ts1 <> ts2) instance Monoid TokStream where mempty = TokStream False mempty mappend = (<>) instance Monad m => Stream TokStream m Tok where uncons (TokStream _ []) = return Nothing uncons (TokStream _ (t:ts)) = return $ Just (t, TokStream False ts) type LP m = ParsecT TokStream LaTeXState m withVerbatimMode :: PandocMonad m => LP m a -> LP m a withVerbatimMode parser = do alreadyVerbatimMode <- sVerbatimMode <$> getState if alreadyVerbatimMode then parser else do updateState $ \st -> st{ sVerbatimMode = True } result <- parser updateState $ \st -> st{ sVerbatimMode = False } return result rawLaTeXParser :: (PandocMonad m, HasMacros s, HasReaderOptions s, Show a) => [Tok] -> LP m a -> LP m a -> ParsecT Sources s m (a, Text) rawLaTeXParser toks parser valParser = do pstate <- getState let lstate = def{ sOptions = extractReaderOptions pstate } let lstate' = lstate { sMacros = extractMacros pstate :| [] } let setStartPos = case toks of Tok pos _ _ : _ -> setPosition pos _ -> return () let preparser = setStartPos >> parser let rawparser = (,) <$> withRaw valParser <*> getState res' <- lift $ runParserT (withRaw (preparser >> getPosition)) lstate "chunk" $ TokStream False toks case res' of Left _ -> mzero Right (endpos, toks') -> do res <- lift $ runParserT rawparser lstate' "chunk" $ TokStream False toks' case res of Left _ -> mzero Right ((val, raw), st) -> do updateState (updateMacros ((NonEmpty.head (sMacros st)) <>)) let skipTilPos stopPos = do anyChar pos <- getPosition if pos >= stopPos then return () else skipTilPos stopPos skipTilPos endpos let result = untokenize raw -- ensure we end with space if input did, see #4442 let result' = case reverse toks' of (Tok _ (CtrlSeq _) t : _) | " " `T.isSuffixOf` t , not (" " `T.isSuffixOf` result) -> result <> " " _ -> result return (val, result') applyMacros :: (PandocMonad m, HasMacros s, HasReaderOptions s) => Text -> ParsecT Sources s m Text applyMacros s = (guardDisabled Ext_latex_macros >> return s) <|> do let retokenize = untokenize <$> many anyTok pstate <- getState let lstate = def{ sOptions = extractReaderOptions pstate , sMacros = extractMacros pstate :| [] } res <- runParserT retokenize lstate "math" $ TokStream False (tokenize (initialPos "math") s) case res of Left e -> Prelude.fail (show e) Right s' -> return s' {- When tokenize or untokenize change, test with this QuickCheck property: > tokUntokRoundtrip :: String -> Bool > tokUntokRoundtrip s = > let t = T.pack s in untokenize (tokenize "random" t) == t -} tokenizeSources :: Sources -> [Tok] tokenizeSources = concatMap tokenizeSource . unSources where tokenizeSource (pos, t) = tokenize pos t -- Return tokens from input sources. Ensure that starting position is -- correct. getInputTokens :: PandocMonad m => ParsecT Sources s m [Tok] getInputTokens = do pos <- getPosition ss <- getInput return $ case ss of Sources [] -> [] Sources ((_,t):rest) -> tokenizeSources $ Sources ((pos,t):rest) tokenize :: SourcePos -> Text -> [Tok] tokenize = totoks where totoks pos t = case T.uncons t of Nothing -> [] Just (c, rest) | c == '\n' -> Tok pos Newline "\n" : totoks (setSourceColumn (incSourceLine pos 1) 1) rest | isSpaceOrTab c -> let (sps, rest') = T.span isSpaceOrTab t in Tok pos Spaces sps : totoks (incSourceColumn pos (T.length sps)) rest' | isAlphaNum c -> let (ws, rest') = T.span isAlphaNum t in Tok pos Word ws : totoks (incSourceColumn pos (T.length ws)) rest' | c == '%' -> let (cs, rest') = T.break (== '\n') rest in Tok pos Comment ("%" <> cs) : totoks (incSourceColumn pos (1 + T.length cs)) rest' | c == '\\' -> case T.uncons rest of Nothing -> [Tok pos (CtrlSeq " ") "\\"] Just (d, rest') | isLetterOrAt d -> -- \makeatletter is common in macro defs; -- ideally we should make tokenization sensitive -- to \makeatletter and \makeatother, but this is -- probably best for now let (ws, rest'') = T.span isLetterOrAt rest (ss, rest''') = T.span isSpaceOrTab rest'' in Tok pos (CtrlSeq ws) ("\\" <> ws <> ss) : totoks (incSourceColumn pos (1 + T.length ws + T.length ss)) rest''' | isSpaceOrTab d || d == '\n' -> let (w1, r1) = T.span isSpaceOrTab rest (w2, (w3, r3)) = case T.uncons r1 of Just ('\n', r2) -> (T.pack "\n", T.span isSpaceOrTab r2) _ -> (mempty, (mempty, r1)) ws = "\\" <> w1 <> w2 <> w3 in case T.uncons r3 of Just ('\n', _) -> Tok pos (CtrlSeq " ") ("\\" <> w1) : totoks (incSourceColumn pos (T.length ws)) r1 _ -> Tok pos (CtrlSeq " ") ws : totoks (incSourceColumn pos (T.length ws)) r3 | otherwise -> Tok pos (CtrlSeq (T.singleton d)) (T.pack [c,d]) : totoks (incSourceColumn pos 2) rest' | c == '#' -> case T.uncons rest of Just ('#', t3) -> let (t1, t2) = T.span (\d -> d >= '0' && d <= '9') t3 in case safeRead t1 of Just i -> Tok pos (DeferredArg i) ("##" <> t1) : totoks (incSourceColumn pos (2 + T.length t1)) t2 Nothing -> Tok pos Symbol "#" : Tok (incSourceColumn pos 1) Symbol "#" : totoks (incSourceColumn pos 1) t3 _ -> let (t1, t2) = T.span (\d -> d >= '0' && d <= '9') rest in case safeRead t1 of Just i -> Tok pos (Arg i) ("#" <> t1) : totoks (incSourceColumn pos (1 + T.length t1)) t2 Nothing -> Tok pos Symbol "#" : totoks (incSourceColumn pos 1) rest | c == '^' -> case T.uncons rest of Just ('^', rest') -> case T.uncons rest' of Just (d, rest'') | isLowerHex d -> case T.uncons rest'' of Just (e, rest''') | isLowerHex e -> Tok pos Esc2 (T.pack ['^','^',d,e]) : totoks (incSourceColumn pos 4) rest''' _ -> Tok pos Esc1 (T.pack ['^','^',d]) : totoks (incSourceColumn pos 3) rest'' | d < '\128' -> Tok pos Esc1 (T.pack ['^','^',d]) : totoks (incSourceColumn pos 3) rest'' _ -> Tok pos Symbol "^" : Tok (incSourceColumn pos 1) Symbol "^" : totoks (incSourceColumn pos 2) rest' _ -> Tok pos Symbol "^" : totoks (incSourceColumn pos 1) rest | otherwise -> Tok pos Symbol (T.singleton c) : totoks (incSourceColumn pos 1) rest isSpaceOrTab :: Char -> Bool isSpaceOrTab ' ' = True isSpaceOrTab '\t' = True isSpaceOrTab _ = False isLetterOrAt :: Char -> Bool isLetterOrAt '@' = True isLetterOrAt c = isLetter c isLowerHex :: Char -> Bool isLowerHex x = x >= '0' && x <= '9' || x >= 'a' && x <= 'f' untokenize :: [Tok] -> Text untokenize = foldr untokenAccum mempty untokenAccum :: Tok -> Text -> Text untokenAccum (Tok _ (CtrlSeq _) t) accum = -- insert space to prevent breaking a control sequence; see #5836 case (T.unsnoc t, T.uncons accum) of (Just (_,c), Just (d,_)) | isLetter c , isLetter d -> t <> " " <> accum _ -> t <> accum untokenAccum (Tok _ _ t) accum = t <> accum untoken :: Tok -> Text untoken t = untokenAccum t mempty parseFromToks :: PandocMonad m => LP m a -> [Tok] -> LP m a parseFromToks parser toks = do oldInput <- getInput setInput $ TokStream False toks oldpos <- getPosition case toks of Tok pos _ _ : _ -> setPosition pos _ -> return () result <- disablingWithRaw parser setInput oldInput setPosition oldpos return result disablingWithRaw :: PandocMonad m => LP m a -> LP m a disablingWithRaw parser = do oldEnableWithRaw <- sEnableWithRaw <$> getState updateState $ \st -> st{ sEnableWithRaw = False } result <- parser updateState $ \st -> st{ sEnableWithRaw = oldEnableWithRaw } return result satisfyTok :: PandocMonad m => (Tok -> Bool) -> LP m Tok satisfyTok f = do doMacros -- apply macros on remaining input stream res <- tokenPrim (T.unpack . untoken) updatePos matcher updateState $ \st -> if sEnableWithRaw st then let !newraws = IntMap.map (res:) $! sRawTokens st in st{ sRawTokens = newraws } else st return $! res where matcher t | f t = Just t | otherwise = Nothing updatePos :: SourcePos -> Tok -> TokStream -> SourcePos updatePos _spos _ (TokStream _ (Tok pos _ _ : _)) = pos updatePos spos (Tok _ _ t) _ = incSourceColumn spos (T.length t) peekTok :: PandocMonad m => LP m Tok peekTok = do doMacros lookAhead (satisfyTok (const True)) doMacros :: PandocMonad m => LP m () doMacros = do TokStream macrosExpanded toks <- getInput unless macrosExpanded $ do st <- getState unless (sVerbatimMode st) $ doMacros' 1 toks >>= setInput . TokStream True doMacros' :: PandocMonad m => Int -> [Tok] -> LP m [Tok] doMacros' n inp = case inp of Tok spos (CtrlSeq "begin") _ : Tok _ Symbol "{" : Tok _ Word name : Tok _ Symbol "}" : ts -> handleMacros n spos name ts <|> return inp Tok spos (CtrlSeq "end") _ : Tok _ Symbol "{" : Tok _ Word name : Tok _ Symbol "}" : ts -> handleMacros n spos ("end" <> name) ts <|> return inp Tok _ (CtrlSeq "expandafter") _ : t : ts -> combineTok t <$> doMacros' n ts Tok spos (CtrlSeq name) _ : ts -> handleMacros n spos name ts <|> return inp _ -> return inp where combineTok (Tok spos (CtrlSeq name) x) (Tok _ Word w : ts) | T.all isLetterOrAt w = Tok spos (CtrlSeq (name <> w)) (x1 <> w <> x2) : ts where (x1, x2) = T.break isSpaceOrTab x combineTok t ts = t:ts matchTok (Tok _ toktype txt) = satisfyTok (\(Tok _ toktype' txt') -> toktype == toktype' && txt == txt') matchPattern toks = try $ mapM_ matchTok toks getargs argmap [] = return argmap getargs argmap (Pattern toks : rest) = try $ do matchPattern toks getargs argmap rest getargs argmap (ArgNum i : Pattern toks : rest) = try $ do x <- mconcat <$> manyTill (braced <|> ((:[]) <$> anyTok)) (matchPattern toks) getargs (M.insert i x argmap) rest getargs argmap (ArgNum i : rest) = do x <- try $ spaces >> bracedOrToken getargs (M.insert i x argmap) rest addTok False _args spos (Tok _ (DeferredArg i) txt) acc = Tok spos (Arg i) txt : acc addTok False args spos (Tok _ (Arg i) _) acc = case M.lookup i args of Nothing -> mzero Just xs -> foldr (addTok True args spos) acc xs -- see #4007 addTok _ _ spos (Tok _ (CtrlSeq x) txt) acc@(Tok _ Word _ : _) | not (T.null txt) , isLetter (T.last txt) = Tok spos (CtrlSeq x) (txt <> " ") : acc addTok _ _ spos t acc = setpos spos t : acc handleMacros n' spos name ts = do when (n' > 20) -- detect macro expansion loops $ throwError $ PandocMacroLoop name (macros :| _ ) <- sMacros <$> getState case M.lookup name macros of Nothing -> trySpecialMacro name ts Just (Macro _scope expansionPoint argspecs optarg newtoks) -> do let getargs' = do args <- (case expansionPoint of ExpandWhenUsed -> withVerbatimMode ExpandWhenDefined -> id) $ case optarg of Nothing -> getargs M.empty argspecs Just o -> do x <- option o bracketedToks getargs (M.singleton 1 x) $ drop 1 argspecs TokStream _ rest <- getInput return (args, rest) lstate <- getState res <- lift $ runParserT getargs' lstate "args" $ TokStream False ts case res of Left _ -> Prelude.fail $ "Could not parse arguments for " ++ T.unpack name Right (args, rest) -> do -- first boolean param is true if we're tokenizing -- an argument (in which case we don't want to -- expand #1 etc.) let result = foldr (addTok False args spos) rest newtoks case expansionPoint of ExpandWhenUsed -> doMacros' (n' + 1) result ExpandWhenDefined -> return result -- | Certain macros do low-level tex manipulations that can't -- be represented in our Macro type, so we handle them here. trySpecialMacro :: PandocMonad m => Text -> [Tok] -> LP m [Tok] trySpecialMacro "xspace" ts = do ts' <- doMacros' 1 ts case ts' of Tok pos Word t : _ | startsWithAlphaNum t -> return $ Tok pos Spaces " " : ts' _ -> return ts' trySpecialMacro "iftrue" ts = handleIf True ts trySpecialMacro "iffalse" ts = handleIf False ts trySpecialMacro _ _ = mzero handleIf :: PandocMonad m => Bool -> [Tok] -> LP m [Tok] handleIf b ts = do res' <- lift $ runParserT (ifParser b) defaultLaTeXState "tokens" $ TokStream False ts case res' of Left _ -> Prelude.fail "Could not parse conditional" Right ts' -> return ts' ifParser :: PandocMonad m => Bool -> LP m [Tok] ifParser b = do ifToks <- many (notFollowedBy (controlSeq "else" <|> controlSeq "fi") *> anyTok) elseToks <- (controlSeq "else" >> manyTill anyTok (controlSeq "fi")) <|> ([] <$ controlSeq "fi") TokStream _ rest <- getInput return $ (if b then ifToks else elseToks) ++ rest startsWithAlphaNum :: Text -> Bool startsWithAlphaNum t = case T.uncons t of Just (c, _) | isAlphaNum c -> True _ -> False setpos :: SourcePos -> Tok -> Tok setpos spos (Tok _ tt txt) = Tok spos tt txt anyControlSeq :: PandocMonad m => LP m Tok anyControlSeq = satisfyTok isCtrlSeq isCtrlSeq :: Tok -> Bool isCtrlSeq (Tok _ (CtrlSeq _) _) = True isCtrlSeq _ = False anySymbol :: PandocMonad m => LP m Tok anySymbol = satisfyTok isSymbolTok isSymbolTok :: Tok -> Bool isSymbolTok (Tok _ Symbol _) = True isSymbolTok _ = False isWordTok :: Tok -> Bool isWordTok (Tok _ Word _) = True isWordTok _ = False isArgTok :: Tok -> Bool isArgTok (Tok _ (Arg _) _) = True isArgTok _ = False infile :: PandocMonad m => SourceName -> LP m Tok infile reference = satisfyTok (\(Tok source _ _) -> (sourceName source) == reference) spaces :: PandocMonad m => LP m () spaces = skipMany (satisfyTok (tokTypeIn [Comment, Spaces, Newline])) spaces1 :: PandocMonad m => LP m () spaces1 = skipMany1 (satisfyTok (tokTypeIn [Comment, Spaces, Newline])) tokTypeIn :: [TokType] -> Tok -> Bool tokTypeIn toktypes (Tok _ tt _) = tt `elem` toktypes controlSeq :: PandocMonad m => Text -> LP m Tok controlSeq name = satisfyTok isNamed where isNamed (Tok _ (CtrlSeq n) _) = n == name isNamed _ = False symbol :: PandocMonad m => Char -> LP m Tok symbol c = satisfyTok isc where isc (Tok _ Symbol d) = case T.uncons d of Just (c',_) -> c == c' _ -> False isc _ = False symbolIn :: PandocMonad m => [Char] -> LP m Tok symbolIn cs = satisfyTok isInCs where isInCs (Tok _ Symbol d) = case T.uncons d of Just (c,_) -> c `elem` cs _ -> False isInCs _ = False sp :: PandocMonad m => LP m () sp = do optional $ skipMany (whitespace <|> comment) optional $ endline *> skipMany (whitespace <|> comment) whitespace :: PandocMonad m => LP m () whitespace = () <$ satisfyTok isSpaceTok isSpaceTok :: Tok -> Bool isSpaceTok (Tok _ Spaces _) = True isSpaceTok _ = False newlineTok :: PandocMonad m => LP m () newlineTok = () <$ satisfyTok isNewlineTok isNewlineTok :: Tok -> Bool isNewlineTok (Tok _ Newline _) = True isNewlineTok _ = False comment :: PandocMonad m => LP m () comment = () <$ satisfyTok isCommentTok isCommentTok :: Tok -> Bool isCommentTok (Tok _ Comment _) = True isCommentTok _ = False anyTok :: PandocMonad m => LP m Tok anyTok = satisfyTok (const True) singleCharTok :: PandocMonad m => LP m Tok singleCharTok = satisfyTok $ \case Tok _ Word t -> T.length t == 1 Tok _ Symbol t -> not (T.any (`Set.member` specialChars) t) _ -> False singleChar :: PandocMonad m => LP m Tok singleChar = singleCharTok <|> singleCharFromWord where singleCharFromWord = do Tok pos toktype t <- disablingWithRaw $ satisfyTok isWordTok let (t1, t2) = (T.take 1 t, T.drop 1 t) TokStream macrosExpanded inp <- getInput setInput $ TokStream macrosExpanded $ Tok pos toktype t1 : Tok (incSourceColumn pos 1) toktype t2 : inp anyTok specialChars :: Set.Set Char specialChars = Set.fromList "#$%&~_^\\{}" endline :: PandocMonad m => LP m () endline = try $ do newlineTok lookAhead anyTok notFollowedBy blankline blankline :: PandocMonad m => LP m () blankline = try $ skipMany whitespace *> newlineTok primEscape :: PandocMonad m => LP m Char primEscape = do Tok _ toktype t <- satisfyTok (tokTypeIn [Esc1, Esc2]) case toktype of Esc1 -> case T.uncons (T.drop 2 t) of Just (c, _) | c >= '\64' && c <= '\127' -> return (chr (ord c - 64)) | otherwise -> return (chr (ord c + 64)) Nothing -> Prelude.fail "Empty content of Esc1" Esc2 -> case safeRead ("0x" <> T.drop 2 t) of Just x -> return (chr x) Nothing -> Prelude.fail $ "Could not read: " ++ T.unpack t _ -> Prelude.fail "Expected an Esc1 or Esc2 token" -- should not happen bgroup :: PandocMonad m => LP m Tok bgroup = try $ do optional sp t <- symbol '{' <|> controlSeq "bgroup" <|> controlSeq "begingroup" -- Add a copy of the macro table to the top of the macro stack, -- private for this group. We inherit all the macros defined in -- the parent group. updateState $ \s -> s{ sMacros = NonEmpty.cons (NonEmpty.head (sMacros s)) (sMacros s) } return t egroup :: PandocMonad m => LP m Tok egroup = do t <- symbol '}' <|> controlSeq "egroup" <|> controlSeq "endgroup" -- remove the group's macro table from the stack updateState $ \s -> s{ sMacros = fromMaybe (sMacros s) $ NonEmpty.nonEmpty (NonEmpty.tail (sMacros s)) } return t grouped :: (PandocMonad m, Monoid a) => LP m a -> LP m a grouped parser = try $ do bgroup -- first we check for an inner 'grouped', because -- {{a,b}} should be parsed the same as {a,b} try (grouped parser <* egroup) <|> (mconcat <$> manyTill parser egroup) braced' :: PandocMonad m => LP m Tok -> LP m [Tok] braced' getTok = symbol '{' *> go (1 :: Int) where go n = do t <- getTok case t of Tok _ Symbol "}" | n > 1 -> (t:) <$> go (n - 1) | otherwise -> return [] Tok _ Symbol "{" -> (t:) <$> go (n + 1) _ -> (t:) <$> go n braced :: PandocMonad m => LP m [Tok] braced = braced' anyTok -- URLs require special handling, because they can contain % -- characters. So we retonenize comments as we go... bracedUrl :: PandocMonad m => LP m [Tok] bracedUrl = braced' (retokenizeComment >> anyTok) -- For handling URLs, which allow literal % characters... retokenizeComment :: PandocMonad m => LP m () retokenizeComment = (do Tok pos Comment txt <- satisfyTok isCommentTok let updPos (Tok pos' toktype' txt') = Tok (incSourceColumn (incSourceLine pos' (sourceLine pos - 1)) (sourceColumn pos)) toktype' txt' let newtoks = map updPos $ tokenize pos $ T.tail txt TokStream macrosExpanded ts <- getInput setInput $ TokStream macrosExpanded ((Tok pos Symbol "%" : newtoks) ++ ts)) <|> return () bracedOrToken :: PandocMonad m => LP m [Tok] bracedOrToken = braced <|> ((:[]) <$> (anyControlSeq <|> singleChar)) bracketed :: PandocMonad m => Monoid a => LP m a -> LP m a bracketed parser = try $ do symbol '[' mconcat <$> manyTill parser (symbol ']') bracketedToks :: PandocMonad m => LP m [Tok] bracketedToks = do symbol '[' concat <$> manyTill ((snd <$> withRaw (try braced)) <|> count 1 anyTok) (symbol ']') parenWrapped :: PandocMonad m => Monoid a => LP m a -> LP m a parenWrapped parser = try $ do symbol '(' mconcat <$> manyTill parser (symbol ')') dimenarg :: PandocMonad m => LP m Text dimenarg = try $ do optional sp ch <- option False $ True <$ symbol '=' minus <- option "" $ "-" <$ symbol '-' Tok _ _ s1 <- satisfyTok isWordTok s2 <- option "" $ try $ do symbol '.' Tok _ _ t <- satisfyTok isWordTok return ("." <> t) let s = s1 <> s2 let (num, rest) = T.span (\c -> isDigit c || c == '.') s guard $ T.length num > 0 guard $ rest `elem` ["", "pt","pc","in","bp","cm","mm","dd","cc","sp"] return $ T.pack ['=' | ch] <> minus <> s ignore :: (Monoid a, PandocMonad m) => Text -> ParsecT s u m a ignore raw = do pos <- getPosition report $ SkippedContent raw pos return mempty withRaw :: PandocMonad m => LP m a -> LP m (a, [Tok]) withRaw parser = do rawTokensMap <- sRawTokens <$> getState let key = case IntMap.lookupMax rawTokensMap of Nothing -> 0 Just (n,_) -> n + 1 -- insert empty list at key updateState $ \st -> st{ sRawTokens = IntMap.insert key [] $ sRawTokens st } result <- parser mbRevToks <- IntMap.lookup key . sRawTokens <$> getState raw <- case mbRevToks of Just revtoks -> do updateState $ \st -> st{ sRawTokens = IntMap.delete key $ sRawTokens st} return $ reverse revtoks Nothing -> throwError $ PandocShouldNeverHappenError $ "sRawTokens has nothing at key " <> T.pack (show key) return (result, raw) keyval :: PandocMonad m => LP m (Text, Text) keyval = try $ do key <- untokenize <$> many1 (notFollowedBy (symbol '=') >> (symbol '-' <|> symbol '_' <|> satisfyTok isWordTok)) sp val <- option mempty $ do symbol '=' sp (untokenize <$> braced) <|> (mconcat <$> many1 ( (untokenize . snd <$> withRaw braced) <|> (untokenize <$> many1 (satisfyTok (\case Tok _ Symbol "]" -> False Tok _ Symbol "," -> False Tok _ Symbol "{" -> False Tok _ Symbol "}" -> False _ -> True))))) optional (symbol ',') sp return (key, T.strip val) keyvals :: PandocMonad m => LP m [(Text, Text)] keyvals = try $ symbol '[' >> manyTill keyval (symbol ']') <* sp verbEnv :: PandocMonad m => Text -> LP m Text verbEnv name = withVerbatimMode $ do optional blankline res <- manyTill anyTok (end_ name) return $ stripTrailingNewline $ untokenize res -- Strip single final newline and any spaces following it. -- Input is unchanged if it doesn't end with newline + -- optional spaces. stripTrailingNewline :: Text -> Text stripTrailingNewline t = let (b, e) = T.breakOnEnd "\n" t in if T.all (== ' ') e then T.dropEnd 1 b else t begin_ :: PandocMonad m => Text -> LP m () begin_ t = try (do controlSeq "begin" spaces txt <- untokenize <$> braced guard (t == txt)) ("\\begin{" ++ T.unpack t ++ "}") end_ :: PandocMonad m => Text -> LP m () end_ t = try (do controlSeq "end" spaces txt <- untokenize <$> braced guard $ t == txt) ("\\end{" ++ T.unpack t ++ "}") getRawCommand :: PandocMonad m => Text -> Text -> LP m Text getRawCommand name txt = do (_, rawargs) <- withRaw $ case name of "write" -> do void $ many $ satisfyTok isDigitTok -- digits void braced "titleformat" -> do void braced skipopts void $ count 4 braced "def" -> void $ manyTill anyTok braced "vadjust" -> void (manyTill anyTok braced) <|> void (satisfyTok isPreTok) -- see #7531 _ | isFontSizeCommand name -> return () | otherwise -> do skipopts option "" (try dimenarg) void $ many braced return $ txt <> untokenize rawargs isPreTok :: Tok -> Bool isPreTok (Tok _ Word "pre") = True isPreTok _ = False isDigitTok :: Tok -> Bool isDigitTok (Tok _ Word t) = T.all isDigit t isDigitTok _ = False skipopts :: PandocMonad m => LP m () skipopts = skipMany (void overlaySpecification <|> void rawopt) -- opts in angle brackets are used in beamer overlaySpecification :: PandocMonad m => LP m Text overlaySpecification = try $ do symbol '<' t <- untokenize <$> manyTill overlayTok (symbol '>') -- see issue #3368 guard $ not (T.all isLetter t) || t `elem` ["beamer","presentation", "trans", "handout","article", "second"] return $ "<" <> t <> ">" overlayTok :: PandocMonad m => LP m Tok overlayTok = satisfyTok (\case Tok _ Word _ -> True Tok _ Spaces _ -> True Tok _ Symbol c -> c `elem` ["-","+","@","|",":",","] _ -> False) rawopt :: PandocMonad m => LP m Text rawopt = try $ do sp inner <- untokenize <$> bracketedToks sp return $ "[" <> inner <> "]" isFontSizeCommand :: Text -> Bool isFontSizeCommand "tiny" = True isFontSizeCommand "scriptsize" = True isFontSizeCommand "footnotesize" = True isFontSizeCommand "small" = True isFontSizeCommand "normalsize" = True isFontSizeCommand "large" = True isFontSizeCommand "Large" = True isFontSizeCommand "LARGE" = True isFontSizeCommand "huge" = True isFontSizeCommand "Huge" = True isFontSizeCommand _ = False getNextNumber :: Monad m => (LaTeXState -> DottedNum) -> LP m DottedNum getNextNumber getCurrentNum = do st <- getState let chapnum = case sLastHeaderNum st of DottedNum (n:_) | sHasChapters st -> Just n _ -> Nothing return . DottedNum $ case getCurrentNum st of DottedNum [m,n] -> case chapnum of Just m' | m' == m -> [m, n+1] | otherwise -> [m', 1] Nothing -> [1] -- shouldn't happen DottedNum [n] -> case chapnum of Just m -> [m, 1] Nothing -> [n + 1] _ -> case chapnum of Just n -> [n, 1] Nothing -> [1] label :: PandocMonad m => LP m () label = do controlSeq "label" t <- braced updateState $ \st -> st{ sLastLabel = Just $ untokenize t } setCaption :: PandocMonad m => LP m Inlines -> LP m () setCaption inline = try $ do mbshort <- Just . toList <$> bracketed inline <|> pure Nothing ils <- tokWith inline optional $ try $ spaces *> label updateState $ \st -> st{ sCaption = Just $ Caption mbshort [Plain $ toList ils] } resetCaption :: PandocMonad m => LP m () resetCaption = updateState $ \st -> st{ sCaption = Nothing , sLastLabel = Nothing } env :: PandocMonad m => Text -> LP m a -> LP m a env name p = do -- environments are groups as far as macros are concerned, -- so we need a local copy of the macro table (see above, bgroup, egroup): updateState $ \s -> s{ sMacros = NonEmpty.cons (NonEmpty.head (sMacros s)) (sMacros s) } result <- p updateState $ \s -> s{ sMacros = fromMaybe (sMacros s) $ NonEmpty.nonEmpty (NonEmpty.tail (sMacros s)) } end_ name return result tokWith :: PandocMonad m => LP m Inlines -> LP m Inlines tokWith inlineParser = try $ spaces >> grouped inlineParser <|> (lookAhead anyControlSeq >> inlineParser) <|> singleChar' where singleChar' = do Tok _ _ t <- singleChar return $ str t addMeta :: PandocMonad m => ToMetaValue a => Text -> a -> LP m () addMeta field val = updateState $ \st -> st{ sMeta = addMetaField field val $ sMeta st } -- remove label spans to avoid duplicated identifier removeLabel :: Walkable [Inline] a => Text -> a -> a removeLabel lbl = walk go where go (Span (_,_,kvs) _ : rest) | Just lbl' <- lookup "label" kvs , lbl' == lbl = go (dropWhile isSpaceOrSoftBreak rest) go (x:xs) = x : go xs go [] = [] isSpaceOrSoftBreak Space = True isSpaceOrSoftBreak SoftBreak = True isSpaceOrSoftBreak _ = False pandoc-3.1.3/src/Text/Pandoc/Readers/LaTeX/SIunitx.hs0000644000000000000000000003262207346545000020400 0ustar0000000000000000{-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE OverloadedStrings #-} module Text.Pandoc.Readers.LaTeX.SIunitx ( siunitxCommands ) where import Text.Pandoc.Builder ( space, subscript, superscript, emph, str, fromList, text, Many(Many, unMany), Inline(Superscript, Str), Inlines ) import Text.Pandoc.Readers.LaTeX.Parsing ( anyControlSeq, braced, bracketed, controlSeq, grouped, isWordTok, keyvals, satisfyTok, skipopts, spaces1, symbol, untokenize, LP ) import Text.Pandoc.TeX ( Tok(Tok), TokType(Word, CtrlSeq) ) import Text.Pandoc.Class.PandocMonad ( PandocMonad ) import Text.Pandoc.Parsing ( many1, eof, string, satisfy, skipMany, option, many, char, try, skipMany1, runParser, Parsec ) import Control.Applicative ((<|>)) import Control.Monad (void) import qualified Data.Map as M import Data.Char (isDigit) import Data.Text (Text) import qualified Data.Text as T import Data.List (intersperse) import qualified Data.Sequence as Seq import Text.Pandoc.Walk (walk) siunitxCommands :: PandocMonad m => LP m Inlines -> M.Map Text (LP m Inlines) siunitxCommands tok = M.fromList [ ("si", dosi tok) , ("unit", dosi tok) -- v3 version of si , ("SI", doSI tok) , ("qty", doSI tok) -- v3 version of SI , ("SIrange", doSIrange True tok) , ("qtyrange", doSIrange True tok) -- v3 version of SIrange , ("SIlist", doSIlist tok) , ("qtylist", doSIlist tok) -- v3 version of SIlist , ("numrange", doSIrange False tok) , ("numlist", doSInumlist) , ("num", doSInum) , ("ang", doSIang) ] dosi :: PandocMonad m => LP m Inlines -> LP m Inlines dosi tok = do options <- option [] keyvals grouped (siUnit options tok) <|> siUnit options tok -- converts e.g. \SI{1}[\$]{} to "$ 1" or \SI{1}{\euro} to "1 €" doSI :: PandocMonad m => LP m Inlines -> LP m Inlines doSI tok = do skipopts value <- doSInum valueprefix <- option "" $ bracketed tok unit <- dosi tok return . mconcat $ [valueprefix, emptyOr160 valueprefix, value, emptyOr160 unit, unit] doSInum :: PandocMonad m => LP m Inlines doSInum = skipopts *> (tonum . untokenize <$> braced) tonum :: Text -> Inlines tonum value = case runParser parseNum () "" value of Left _ -> text value Right num -> num doSInumlist :: PandocMonad m => LP m Inlines doSInumlist = do skipopts xs <- map tonum . T.splitOn ";" . untokenize <$> braced case xs of [] -> return mempty [x] -> return x _ -> return $ mconcat (intersperse (str "," <> space) (init xs)) <> text ", & " <> last xs doSIlist :: PandocMonad m => LP m Inlines -> LP m Inlines doSIlist tok = do options <- option [] keyvals nums <- map tonum . T.splitOn ";" . untokenize <$> braced unit <- grouped (siUnit options tok) <|> siUnit options tok let xs = map (<> (str "\xa0" <> unit)) nums case xs of [] -> return mempty [x] -> return x _ -> return $ mconcat (intersperse (str "," <> space) (init xs)) <> text ", & " <> last xs parseNum :: Parsec Text () Inlines parseNum = (mconcat <$> many parseNumPart) <* eof minus :: Text minus = "\x2212" hyphenToMinus :: Inline -> Inline hyphenToMinus (Str t) = Str (T.replace "-" minus t) hyphenToMinus x = x parseNumPart :: Parsec Text () Inlines parseNumPart = parseDecimalNum <|> parseComma <|> parsePlusMinus <|> parsePM <|> parseI <|> parseExp <|> parseX <|> parseSpace where parseDecimalNum, parsePlusMinus, parsePM, parseComma, parseI, parseX, parseExp, parseSpace :: Parsec Text () Inlines parseDecimalNum = try $ do pref <- option mempty $ (mempty <$ char '+') <|> (minus <$ char '-') basenum' <- many1 (satisfy (\c -> isDigit c || c == '.')) let basenum = pref <> T.pack (case basenum' of '.':_ -> '0':basenum' _ -> basenum') uncertainty <- option mempty $ T.pack <$> parseParens if T.null uncertainty then return $ str basenum else return $ str $ basenum <> "\xa0\xb1\xa0" <> let (_,ys) = T.break (=='.') basenum in case (T.length ys - 1, T.length uncertainty) of (0,_) -> uncertainty (x,y) | x > y -> "0." <> T.replicate (x - y) "0" <> T.dropWhileEnd (=='0') uncertainty | otherwise -> T.take (y - x) uncertainty <> case T.dropWhileEnd (=='0') (T.drop (y - x) uncertainty) of t | T.null t -> mempty | otherwise -> "." <> t parseComma = str "." <$ char ',' parsePlusMinus = str "\xa0\xb1\xa0" <$ try (string "+-") parsePM = str "\xa0\xb1\xa0" <$ try (string "\\pm") parseParens = char '(' *> many1 (satisfy (\c -> isDigit c || c == '.')) <* char ')' parseI = str "i" <$ char 'i' parseX = str "\xa0\xd7\xa0" <$ char 'x' parseExp = (\n -> str ("\xa0\xd7\xa0" <> "10") <> superscript n) <$> (char 'e' *> parseDecimalNum) parseSpace = mempty <$ skipMany1 (char ' ') doSIang :: PandocMonad m => LP m Inlines doSIang = do skipopts ps <- T.splitOn ";" . untokenize <$> braced let dropPlus t = case T.uncons t of Just ('+',t') -> t' _ -> t case ps ++ repeat "" of (d:m:s:_) -> return $ (if T.null d then mempty else str (dropPlus d) <> str "\xb0") <> (if T.null m then mempty else str (dropPlus m) <> str "\x2032") <> (if T.null s then mempty else str (dropPlus s) <> str "\x2033") _ -> return mempty -- converts e.g. \SIrange{100}{200}{\ms} to "100 ms--200 ms" doSIrange :: PandocMonad m => Bool -> LP m Inlines -> LP m Inlines doSIrange includeUnits tok = do skipopts startvalue <- doSInum startvalueprefix <- option "" $ bracketed tok stopvalue <- doSInum stopvalueprefix <- option "" $ bracketed tok unit <- if includeUnits then dosi tok else return mempty return . mconcat $ [startvalueprefix, emptyOr160 startvalueprefix, startvalue, emptyOr160 unit, unit, "\8211", -- An en-dash stopvalueprefix, emptyOr160 stopvalueprefix, stopvalue, emptyOr160 unit, unit] emptyOr160 :: Inlines -> Inlines emptyOr160 x = if x == mempty then x else str "\160" siUnit :: forall m. PandocMonad m => [(Text,Text)] -> LP m Inlines -> LP m Inlines siUnit options tok = mconcat . intersperse (str "\xa0") <$> many1 siUnitPart where siUnitPart :: LP m Inlines siUnitPart = try $ do skipMany (void (symbol '.') <|> void (symbol '~') <|> spaces1) x <- ((siPrefix <*> siBase) <|> (do u <- siBase <|> tok option u $ siSuffix <*> pure u)) option x (siInfix x) siInfix :: Inlines -> LP m Inlines siInfix u1 = try $ (do _ <- controlSeq "per" u2 <- siUnitPart let useSlash = lookup "per-mode" options == Just "symbol" if useSlash then return (u1 <> str "/" <> u2) else return (u1 <> str "\xa0" <> negateExponent u2)) <|> (do _ <- symbol '/' u2 <- siUnitPart return (u1 <> str "/" <> u2)) siPrefix :: LP m (Inlines -> Inlines) siPrefix = (do _ <- controlSeq "square" skipopts return (<> superscript "2")) <|> (do _ <- controlSeq "cubic" skipopts return (<> superscript "3")) <|> (do _ <- controlSeq "raisetothe" skipopts n <- walk hyphenToMinus <$> tok return (<> superscript n)) siSuffix :: LP m (Inlines -> Inlines) siSuffix = (do _ <- controlSeq "squared" skipopts return (<> superscript "2")) <|> (do _ <- controlSeq "cubed" skipopts return (<> superscript "3")) <|> (do _ <- controlSeq "tothe" skipopts n <- walk hyphenToMinus <$> tok return (<> superscript n)) <|> (symbol '^' *> (do n <- walk hyphenToMinus <$> tok return (<> superscript n))) <|> (symbol '_' *> (do n <- walk hyphenToMinus <$> tok return (<> subscript n))) negateExponent :: Inlines -> Inlines negateExponent ils = case Seq.viewr (unMany ils) of xs Seq.:> Superscript ss -> (Many xs) <> superscript (str minus <> fromList ss) _ -> ils <> superscript (str (minus <> "1")) siBase :: LP m Inlines siBase = ((try (do Tok _ (CtrlSeq name) _ <- anyControlSeq case M.lookup name siUnitModifierMap of Just il -> (il <>) <$> siBase Nothing -> case M.lookup name siUnitMap of Just il -> pure il Nothing -> fail "not a unit command")) <|> (do Tok _ Word t <- satisfyTok isWordTok return $ str t) ) siUnitModifierMap :: M.Map Text Inlines siUnitModifierMap = M.fromList [ ("atto", str "a") , ("centi", str "c") , ("deca", str "d") , ("deci", str "d") , ("deka", str "d") , ("exa", str "E") , ("femto", str "f") , ("giga", str "G") , ("hecto", str "h") , ("kilo", str "k") , ("mega", str "M") , ("micro", str "μ") , ("milli", str "m") , ("nano", str "n") , ("peta", str "P") , ("pico", str "p") , ("tera", str "T") , ("yocto", str "y") , ("yotta", str "Y") , ("zepto", str "z") , ("zetta", str "Z") ] siUnitMap :: M.Map Text Inlines siUnitMap = M.fromList [ ("fg", str "fg") , ("pg", str "pg") , ("ng", str "ng") , ("ug", str "μg") , ("mg", str "mg") , ("g", str "g") , ("kg", str "kg") , ("amu", str "u") , ("pm", str "pm") , ("nm", str "nm") , ("um", str "μm") , ("mm", str "mm") , ("cm", str "cm") , ("dm", str "dm") , ("m", str "m") , ("km", str "km") , ("as", str "as") , ("fs", str "fs") , ("ps", str "ps") , ("ns", str "ns") , ("us", str "μs") , ("ms", str "ms") , ("s", str "s") , ("fmol", str "fmol") , ("pmol", str "pmol") , ("nmol", str "nmol") , ("umol", str "μmol") , ("mmol", str "mmol") , ("mol", str "mol") , ("kmol", str "kmol") , ("pA", str "pA") , ("nA", str "nA") , ("uA", str "μA") , ("mA", str "mA") , ("A", str "A") , ("kA", str "kA") , ("ul", str "μl") , ("ml", str "ml") , ("l", str "l") , ("hl", str "hl") , ("uL", str "μL") , ("mL", str "mL") , ("L", str "L") , ("hL", str "hL") , ("mHz", str "mHz") , ("Hz", str "Hz") , ("kHz", str "kHz") , ("MHz", str "MHz") , ("GHz", str "GHz") , ("THz", str "THz") , ("mN", str "mN") , ("N", str "N") , ("kN", str "kN") , ("MN", str "MN") , ("Pa", str "Pa") , ("kPa", str "kPa") , ("MPa", str "MPa") , ("GPa", str "GPa") , ("mohm", str "mΩ") , ("kohm", str "kΩ") , ("Mohm", str "MΩ") , ("pV", str "pV") , ("nV", str "nV") , ("uV", str "μV") , ("mV", str "mV") , ("V", str "V") , ("kV", str "kV") , ("W", str "W") , ("uW", str "μW") , ("mW", str "mW") , ("kW", str "kW") , ("MW", str "MW") , ("GW", str "GW") , ("J", str "J") , ("uJ", str "μJ") , ("mJ", str "mJ") , ("kJ", str "kJ") , ("eV", str "eV") , ("meV", str "meV") , ("keV", str "keV") , ("MeV", str "MeV") , ("GeV", str "GeV") , ("TeV", str "TeV") , ("kWh", str "kWh") , ("F", str "F") , ("fF", str "fF") , ("pF", str "pF") , ("K", str "K") , ("dB", str "dB") , ("ampere", str "A") , ("angstrom", str "Å") , ("arcmin", str "′") , ("arcminute", str "′") , ("arcsecond", str "″") , ("astronomicalunit", str "ua") , ("atomicmassunit", str "u") , ("bar", str "bar") , ("barn", str "b") , ("becquerel", str "Bq") , ("bel", str "B") , ("bohr", emph (str "a") <> subscript (str "0")) , ("candela", str "cd") , ("celsius", str "°C") , ("clight", emph (str "c") <> subscript (str "0")) , ("coulomb", str "C") , ("dalton", str "Da") , ("day", str "d") , ("decibel", str "db") , ("degreeCelsius",str "°C") , ("degree", str "°") , ("electronmass", emph (str "m") <> subscript (str "e")) , ("electronvolt", str "eV") , ("elementarycharge", emph (str "e")) , ("farad", str "F") , ("gram", str "g") , ("gray", str "Gy") , ("hartree", emph (str "E") <> subscript (str "h")) , ("hectare", str "ha") , ("henry", str "H") , ("hertz", str "Hz") , ("hour", str "h") , ("joule", str "J") , ("katal", str "kat") , ("kelvin", str "K") , ("kilogram", str "kg") , ("knot", str "kn") , ("liter", str "L") , ("litre", str "l") , ("lumen", str "lm") , ("lux", str "lx") , ("meter", str "m") , ("metre", str "m") , ("minute", str "min") , ("mmHg", str "mmHg") , ("mole", str "mol") , ("nauticalmile", str "M") , ("neper", str "Np") , ("newton", str "N") , ("ohm", str "Ω") , ("Pa", str "Pa") , ("pascal", str "Pa") , ("percent", str "%") , ("planckbar", emph (str "\x210f")) , ("radian", str "rad") , ("second", str "s") , ("siemens", str "S") , ("sievert", str "Sv") , ("steradian", str "sr") , ("tesla", str "T") , ("tonne", str "t") , ("volt", str "V") , ("watt", str "W") , ("weber", str "Wb") ] pandoc-3.1.3/src/Text/Pandoc/Readers/LaTeX/Table.hs0000644000000000000000000003402307346545000020021 0ustar0000000000000000{-# LANGUAGE BangPatterns #-} {-# LANGUAGE OverloadedStrings #-} module Text.Pandoc.Readers.LaTeX.Table ( tableEnvironments ) where import Data.Functor (($>)) import Text.Pandoc.Class import Text.Pandoc.Readers.LaTeX.Parsing import Text.Pandoc.TeX import Text.Pandoc.Builder as B import qualified Data.Map as M import Data.Text (Text) import Data.Maybe (fromMaybe) import qualified Data.Text as T import Control.Applicative ((<|>), optional, many) import Control.Monad (when, void) import Text.Pandoc.Shared (safeRead, trim) import Text.Pandoc.Logging (LogMessage(SkippedContent)) import Text.Pandoc.Walk (walkM) import Text.Pandoc.Parsing hiding (blankline, many, mathDisplay, mathInline, optional, space, spaces, withRaw, (<|>)) tableEnvironments :: PandocMonad m => LP m Blocks -> LP m Inlines -> M.Map Text (LP m Blocks) tableEnvironments blocks inline = M.fromList [ ("longtable", env "longtable" $ resetCaption *> simpTable blocks inline "longtable" False >>= addTableCaption) , ("table", env "table" $ skipopts *> resetCaption *> blocks >>= addTableCaption) , ("tabular*", env "tabular*" $ simpTable blocks inline "tabular*" True) , ("tabularx", env "tabularx" $ simpTable blocks inline "tabularx" True) , ("tabular", env "tabular" $ simpTable blocks inline "tabular" False) ] hline :: PandocMonad m => LP m () hline = try $ do spaces hasParenArg <- (False <$ controlSeq "hline") <|> (False <$ controlSeq "cline") <|> (True <$ controlSeq "cmidrule") <|> -- booktabs rules: (True <$ controlSeq "toprule") <|> (True <$ controlSeq "bottomrule") <|> (True <$ controlSeq "midrule") <|> (True <$ controlSeq "endhead") <|> (True <$ controlSeq "endfirsthead") optional rawopt when hasParenArg $ void $ optional (parenWrapped (() <$ singleChar)) lbreak :: PandocMonad m => LP m Tok lbreak = (controlSeq "\\" <|> controlSeq "tabularnewline") <* skipopts <* spaces amp :: PandocMonad m => LP m Tok amp = symbol '&' -- Split a Word into individual Symbols (for parseAligns) splitWordTok :: PandocMonad m => LP m () splitWordTok = do TokStream macrosExpanded inp <- getInput case inp of (Tok spos Word t : rest) -> setInput $ TokStream macrosExpanded $ map (Tok spos Symbol . T.singleton) (T.unpack t) <> rest _ -> return () parseAligns :: PandocMonad m => LP m [(Alignment, ColWidth, ([Tok], [Tok]))] parseAligns = try $ do let maybeBar = skipMany (try $ sp *> (() <$ symbol '|' <|> () <$ (symbol '@' >> braced))) let cAlign = AlignCenter <$ symbol 'c' let lAlign = AlignLeft <$ symbol 'l' let rAlign = AlignRight <$ symbol 'r' let parAlign = AlignLeft <$ symbol 'p' -- aligns from tabularx let xAlign = AlignLeft <$ symbol 'X' let mAlign = AlignLeft <$ symbol 'm' let bAlign = AlignLeft <$ symbol 'b' let alignChar = splitWordTok *> ( cAlign <|> lAlign <|> rAlign <|> parAlign <|> xAlign <|> mAlign <|> bAlign ) let alignPrefix = symbol '>' >> braced let alignSuffix = symbol '<' >> braced let colWidth = try $ do symbol '{' ds <- trim . untokenize <$> manyTill anyTok (controlSeq "linewidth") spaces symbol '}' return $ safeRead ds let alignSpec = do pref <- option [] alignPrefix spaces al <- alignChar width <- colWidth <|> option Nothing (do s <- untokenize <$> braced pos <- getPosition report $ SkippedContent s pos return Nothing) spaces suff <- option [] alignSuffix return (al, width, (pref, suff)) let starAlign = do -- '*{2}{r}' == 'rr', we just expand like a macro symbol '*' spaces ds <- trim . untokenize <$> bracedOrToken spaces spec <- bracedOrToken case safeRead ds of Just n -> do TokStream _ ts <- getInput setInput $ TokStream False (mconcat (replicate n spec) ++ ts) Nothing -> Prelude.fail $ "Could not parse " <> T.unpack ds <> " as number" bgroup spaces maybeBar aligns' <- many $ try $ spaces >> optional starAlign >> (alignSpec <* maybeBar) spaces egroup spaces return $ map toSpec aligns' where toColWidth (Just w) | w > 0 = ColWidth w toColWidth _ = ColWidthDefault toSpec (x, y, z) = (x, toColWidth y, z) -- N.B. this parser returns a Row that may have erroneous empty cells -- in it. See the note above fixTableHead for details. parseTableRow :: PandocMonad m => LP m Blocks -- ^ block parser -> LP m Inlines -- ^ inline parser -> Text -- ^ table environment name -> [([Tok], [Tok])] -- ^ pref/suffixes -> LP m Row parseTableRow blocks inline envname prefsufs = do notFollowedBy (spaces *> end_ envname) -- contexts that can contain & that is not colsep: let canContainAmp (Tok _ (CtrlSeq "begin") _) = True canContainAmp (Tok _ (CtrlSeq "verb") _) = True canContainAmp (Tok _ (CtrlSeq "Verb") _) = True canContainAmp _ = False -- add prefixes and suffixes in token stream: let celltoks (pref, suff) = do prefpos <- getPosition contents <- mconcat <$> many ( snd <$> withRaw ((lookAhead (controlSeq "parbox") >> void blocks) -- #5711 <|> (lookAhead (satisfyTok canContainAmp) >> void inline) <|> (lookAhead (symbol '$') >> void inline)) <|> (do notFollowedBy (() <$ amp <|> () <$ lbreak <|> end_ envname) count 1 anyTok) ) suffpos <- getPosition option [] (count 1 amp) return $ map (setpos prefpos) pref ++ contents ++ map (setpos suffpos) suff rawcells <- mapM celltoks prefsufs cells <- mapM (parseFromToks (parseTableCell blocks)) rawcells spaces return $ Row nullAttr cells parseTableCell :: PandocMonad m => LP m Blocks -> LP m Cell parseTableCell blocks = do spaces updateState $ \st -> st{ sInTableCell = True } cell' <- multicolumnCell blocks <|> multirowCell blocks <|> parseSimpleCell <|> parseEmptyCell updateState $ \st -> st{ sInTableCell = False } spaces return cell' where -- The parsing of empty cells is important in LaTeX, especially when dealing -- with multirow/multicolumn. See #6603. parseEmptyCell = spaces $> emptyCell parseSimpleCell = simpleCell <$> (plainify <$> blocks) cellAlignment :: PandocMonad m => LP m Alignment cellAlignment = skipMany (symbol '|') *> alignment <* skipMany (symbol '|') where alignment = do c <- untoken <$> singleChar <* optional braced -- ignore args return $ case c of "l" -> AlignLeft "r" -> AlignRight "c" -> AlignCenter "*" -> AlignDefault _ -> AlignDefault plainify :: Blocks -> Blocks plainify bs = case toList bs of [Para ils] -> plain (fromList ils) _ -> bs multirowCell :: PandocMonad m => LP m Blocks -> LP m Cell multirowCell blocks = controlSeq "multirow" >> do -- Full prototype for \multirow macro is: -- \multirow[vpos]{nrows}[bigstruts]{width}[vmove]{text} -- However, everything except `nrows` and `text` make -- sense in the context of the Pandoc AST _ <- optional $ symbol '[' *> cellAlignment <* symbol ']' -- vertical position nrows <- fmap (fromMaybe 1 . safeRead . untokenize) braced _ <- optional $ symbol '[' *> manyTill anyTok (symbol ']') -- bigstrut-related _ <- symbol '{' *> manyTill anyTok (symbol '}') -- Cell width _ <- optional $ symbol '[' *> manyTill anyTok (symbol ']') -- Length used for fine-tuning content <- symbol '{' *> (plainify <$> blocks) <* symbol '}' return $ cell AlignDefault (RowSpan nrows) (ColSpan 1) content multicolumnCell :: PandocMonad m => LP m Blocks -> LP m Cell multicolumnCell blocks = controlSeq "multicolumn" >> do span' <- fmap (fromMaybe 1 . safeRead . untokenize) braced alignment <- symbol '{' *> cellAlignment <* symbol '}' let singleCell = do content <- plainify <$> blocks return $ cell alignment (RowSpan 1) (ColSpan span') content -- Two possible contents: either a \multirow cell, or content. -- E.g. \multicol{1}{c}{\multirow{2}{1em}{content}} -- Note that a \multirow cell can be nested in a \multicolumn, -- but not the other way around. See #6603 let nestedCell = do (Cell _ _ (RowSpan rs) _ bs) <- multirowCell blocks return $ cell alignment (RowSpan rs) (ColSpan span') (fromList bs) symbol '{' *> (nestedCell <|> singleCell) <* symbol '}' -- LaTeX tables are stored with empty cells underneath multirow cells -- denoting the grid spaces taken up by them. More specifically, if a -- cell spans m rows, then it will overwrite all the cells in the -- columns it spans for (m-1) rows underneath it, requiring padding -- cells in these places. These padding cells need to be removed for -- proper table reading. See #6603. -- -- These fixTable functions do not otherwise fix up malformed -- input tables: that is left to the table builder. fixTableHead :: TableHead -> TableHead fixTableHead (TableHead attr rows) = TableHead attr rows' where rows' = fixTableRows rows fixTableBody :: TableBody -> TableBody fixTableBody (TableBody attr rhc th tb) = TableBody attr rhc th' tb' where th' = fixTableRows th tb' = fixTableRows tb fixTableRows :: [Row] -> [Row] fixTableRows = fixTableRows' $ repeat Nothing where fixTableRows' oldHang (Row attr cells : rs) = let (newHang, cells') = fixTableRow oldHang cells rs' = fixTableRows' newHang rs in Row attr cells' : rs' fixTableRows' _ [] = [] -- The overhang is represented as Just (relative cell dimensions) or -- Nothing for an empty grid space. fixTableRow :: [Maybe (ColSpan, RowSpan)] -> [Cell] -> ([Maybe (ColSpan, RowSpan)], [Cell]) fixTableRow oldHang cells -- If there's overhang, drop cells until their total width meets the -- width of the occupied grid spaces (or we run out) | (n, prefHang, restHang) <- splitHang oldHang , n > 0 = let cells' = dropToWidth getCellW n cells (restHang', cells'') = fixTableRow restHang cells' in (prefHang restHang', cells'') -- Otherwise record the overhang of a pending cell and fix the rest -- of the row | c@(Cell _ _ h w _):cells' <- cells = let h' = max 1 h w' = max 1 w oldHang' = dropToWidth getHangW w' oldHang (newHang, cells'') = fixTableRow oldHang' cells' in (toHang w' h' <> newHang, c : cells'') | otherwise = (oldHang, []) where getCellW (Cell _ _ _ w _) = w getHangW = maybe 1 fst getCS (ColSpan n) = n toHang c r | r > 1 = [Just (c, r)] | otherwise = replicate (getCS c) Nothing -- Take the prefix of the overhang list representing filled grid -- spaces. Also return the remainder and the length of this prefix. splitHang = splitHang' 0 id splitHang' !n l (Just (c, r):xs) = splitHang' (n + c) (l . (toHang c (r-1) ++)) xs splitHang' n l xs = (n, l, xs) -- Drop list items until the total width of the dropped items -- exceeds the passed width. dropToWidth _ n l | n < 1 = l dropToWidth wproj n (c:cs) = dropToWidth wproj (n - wproj c) cs dropToWidth _ _ [] = [] simpTable :: PandocMonad m => LP m Blocks -> LP m Inlines -> Text -> Bool -> LP m Blocks simpTable blocks inline envname hasWidthParameter = try $ do when hasWidthParameter $ () <$ tokWith inline skipopts colspecs <- parseAligns let (aligns, widths, prefsufs) = unzip3 colspecs optional $ controlSeq "caption" *> setCaption inline spaces optional label spaces optional lbreak spaces skipMany hline spaces header' <- option [] . try . fmap (:[]) $ parseTableRow blocks inline envname prefsufs <* lbreak <* many1 hline spaces rows <- sepEndBy (parseTableRow blocks inline envname prefsufs) (lbreak <* optional (skipMany hline)) spaces optional $ controlSeq "caption" *> setCaption inline spaces optional label spaces optional lbreak spaces lookAhead $ controlSeq "end" -- make sure we're at end let th = fixTableHead $ TableHead nullAttr header' let tbs = [fixTableBody $ TableBody nullAttr 0 [] rows] let tf = TableFoot nullAttr [] return $ table emptyCaption (zip aligns widths) th tbs tf addTableCaption :: PandocMonad m => Blocks -> LP m Blocks addTableCaption = walkM go where go (Table attr c spec th tb tf) = do st <- getState let capt = fromMaybe c $ sCaption st let mblabel = sLastLabel st case mblabel of Nothing -> return () Just lab -> do num <- getNextNumber sLastTableNum setState st{ sLastTableNum = num , sLabels = M.insert lab [Str (renderDottedNum num)] (sLabels st) } -- add num to caption? let attr' = case (attr, mblabel) of ((_,classes,kvs), Just ident) -> (ident,classes,kvs) _ -> attr return $ addAttrDiv attr' $ maybe id removeLabel mblabel $ Table nullAttr capt spec th tb tf go x = return x -- TODO: For now we add a Div to contain table attributes, since -- most writers don't do anything yet with attributes on Table. -- This can be removed when that changes. addAttrDiv :: Attr -> Block -> Block addAttrDiv ("",[],[]) b = b addAttrDiv attr b = Div attr [b] pandoc-3.1.3/src/Text/Pandoc/Readers/Man.hs0000644000000000000000000004326107346545000016534 0ustar0000000000000000{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE ViewPatterns #-} {-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Readers.Man Copyright : Copyright (C) 2018-2020 Yan Pashkovsky and John MacFarlane License : GNU GPL, version 2 or above Maintainer : Yan Pashkovsky Stability : WIP Portability : portable Conversion of man to 'Pandoc' document. -} module Text.Pandoc.Readers.Man (readMan) where import Data.Char (toLower) import Data.Default (Default) import Control.Monad (mzero, guard, void) import Control.Monad.Trans (lift) import Control.Monad.Except (throwError) import Data.Maybe (catMaybes, isJust) import Data.List (intersperse) import qualified Data.Text as T import Text.Pandoc.Builder as B import Text.Pandoc.Class.PandocMonad (PandocMonad(..), report) import Text.Pandoc.Logging (LogMessage(..)) import Text.Pandoc.Options import Text.Pandoc.Parsing import Text.Pandoc.Walk (query) import Text.Pandoc.Readers.Roff -- TODO explicit imports import qualified Text.Pandoc.Parsing as P import qualified Data.Foldable as Foldable data ManState = ManState { readerOptions :: ReaderOptions , metadata :: Meta , tableCellsPlain :: Bool } deriving Show instance Default ManState where def = ManState { readerOptions = def , metadata = nullMeta , tableCellsPlain = True } type ManParser m = P.ParsecT [RoffToken] ManState m -- | Read man (troff) from an input string and return a Pandoc document. readMan :: (PandocMonad m, ToSources a) => ReaderOptions -> a -> m Pandoc readMan opts s = do let Sources inps = toSources s tokenz <- mconcat <$> mapM (uncurry lexRoff) inps let state = def {readerOptions = opts} :: ManState eitherdoc <- readWithMTokens parseMan state (Foldable.toList . unRoffTokens $ tokenz) either (throwError . fromParsecError (Sources inps)) return eitherdoc readWithMTokens :: PandocMonad m => ParsecT [RoffToken] ManState m a -- ^ parser -> ManState -- ^ initial state -> [RoffToken] -- ^ input -> m (Either ParseError a) readWithMTokens parser state input = runParserT parser state "source" input parseMan :: PandocMonad m => ManParser m Pandoc parseMan = do bs <- many parseBlock <* eof meta <- metadata <$> getState let (Pandoc _ blocks) = doc $ mconcat bs return $ Pandoc meta blocks parseBlock :: PandocMonad m => ManParser m Blocks parseBlock = choice [ parseList , parseDefinitionList , parseHeader , parseTable , parseTitle , parseCodeBlock , parseBlockQuote , parseNewParagraph , parsePara , skipUnknownMacro ] parseTable :: PandocMonad m => ManParser m Blocks parseTable = do updateState $ \st -> st { tableCellsPlain = True } let isTbl Tbl{} = True isTbl _ = False Tbl _opts rows pos <- msatisfy isTbl case rows of ((as,_):_) -> try (do let as' = map (columnTypeToAlignment . columnType) as guard $ all isJust as' let alignments = catMaybes as' let (headerRow', bodyRows') = case rows of (h:x:bs) | isHrule x -> (h, bs) _ -> (([],[]), rows) headerRow <- mapM parseTableCell $ snd headerRow' bodyRows <- mapM (mapM parseTableCell . snd) bodyRows' isPlainTable <- tableCellsPlain <$> getState let widths = if isPlainTable then repeat ColWidthDefault else repeat $ ColWidth (1.0 / fromIntegral (length alignments)) return $ B.table B.emptyCaption (zip alignments widths) (TableHead nullAttr $ toHeaderRow headerRow) [TableBody nullAttr 0 [] $ map toRow bodyRows] (TableFoot nullAttr [])) <|> fallback pos [] -> fallback pos where parseTableCell ts = do st <- getState let ts' = Foldable.toList $ unRoffTokens ts let plaintcell = try $ do skipMany memptyLine plain . trimInlines <$> (parseInlines <* eof) let blockstcell = try $ do skipMany memptyLine mconcat <$> many parseBlock <* eof res <- if null ts' then return $ Right mempty else lift $ readWithMTokens plaintcell st ts' case res of Left _ -> do res' <- lift $ readWithMTokens blockstcell st ts' case res' of Left _ -> Prelude.fail "Could not parse table cell" Right x -> do updateState $ \s -> s{ tableCellsPlain = False } return x Right x -> return x isHrule :: TableRow -> Bool isHrule ([cellfmt], _) = columnType cellfmt `elem` ['_','-','='] isHrule (_, [RoffTokens ss]) = case Foldable.toList ss of [TextLine [RoffStr (T.unpack -> [c])]] -> c `elem` ['_','-','='] _ -> False isHrule _ = False fallback pos = do report $ SkippedContent "TABLE" pos return $ B.para (B.text "TABLE") columnTypeToAlignment :: Char -> Maybe Alignment columnTypeToAlignment c = case toLower c of 'a' -> Just AlignLeft 'c' -> Just AlignCenter 'l' -> Just AlignLeft 'n' -> Just AlignRight 'r' -> Just AlignRight _ -> Nothing toRow = Row nullAttr . map simpleCell toHeaderRow l = [toRow l | not (null l)] parseNewParagraph :: PandocMonad m => ManParser m Blocks parseNewParagraph = do mmacro "P" <|> mmacro "PP" <|> mmacro "LP" <|> memptyLine return mempty -- -- Parser: [RoffToken] -> Pandoc -- msatisfy :: Monad m => (RoffToken -> Bool) -> P.ParsecT [RoffToken] st m RoffToken msatisfy predic = P.tokenPrim show nextPos testTok where testTok t = if predic t then Just t else Nothing nextPos _pos _x (ControlLine _ _ pos':_) = pos' nextPos pos _x _xs = P.updatePosString (P.setSourceColumn (P.setSourceLine pos $ P.sourceLine pos + 1) 1) "" mtoken :: PandocMonad m => ManParser m RoffToken mtoken = msatisfy (const True) mline :: PandocMonad m => ManParser m RoffToken mline = msatisfy isTextLine where isTextLine (TextLine _) = True isTextLine _ = False memptyLine :: PandocMonad m => ManParser m RoffToken memptyLine = msatisfy isEmptyLine where isEmptyLine EmptyLine = True isEmptyLine _ = False mmacro :: PandocMonad m => T.Text -> ManParser m RoffToken mmacro mk = msatisfy isControlLine where isControlLine (ControlLine mk' _ _) | mk == mk' = True | otherwise = False isControlLine _ = False mmacroAny :: PandocMonad m => ManParser m RoffToken mmacroAny = msatisfy isControlLine where isControlLine ControlLine{} = True isControlLine _ = False -- -- RoffToken -> Block functions -- parseTitle :: PandocMonad m => ManParser m Blocks parseTitle = do (ControlLine _ args _) <- mmacro "TH" let adjustMeta = case args of (x:y:z:_) -> setMeta "title" (linePartsToInlines x) . setMeta "section" (linePartsToInlines y) . setMeta "date" (linePartsToInlines z) [x,y] -> setMeta "title" (linePartsToInlines x) . setMeta "section" (linePartsToInlines y) [x] -> setMeta "title" (linePartsToInlines x) [] -> id updateState $ \st -> st{ metadata = adjustMeta $ metadata st } return mempty linePartsToInlines :: [LinePart] -> Inlines linePartsToInlines = go False where go :: Bool -> [LinePart] -> Inlines go _ [] = mempty go mono (MacroArg _:xs) = go mono xs -- shouldn't happen go mono (RoffStr s : RoffStr t : xs) = go mono (RoffStr (s <> t):xs) go mono (RoffStr s : xs) | mono = code s <> go mono xs | otherwise = text s <> go mono xs go mono (Font fs: xs) | litals > 0 && litals >= lbolds && litals >= lmonos = emph (go mono (Font fs{ fontItalic = False } : map (adjustFontSpec (\s -> s{ fontItalic = False })) itals)) <> go mono italsrest | lbolds > 0 && lbolds >= lmonos = strong (go mono (Font fs{ fontBold = False } : map (adjustFontSpec (\s -> s{ fontBold = False })) bolds)) <> go mono boldsrest | lmonos > 0 = go True (Font fs{ fontMonospace = False } : map (adjustFontSpec (\s -> s { fontMonospace = False })) monos) <> go mono monosrest | otherwise = go mono xs where adjustFontSpec f (Font fspec) = Font (f fspec) adjustFontSpec _ x = x withFont f (Font fspec) = f fspec withFont _ _ = False litals = length itals lbolds = length bolds lmonos = length monos (itals, italsrest) = if fontItalic fs then break (withFont (not . fontItalic)) xs else ([], xs) (bolds, boldsrest) = if fontBold fs then break (withFont (not . fontBold)) xs else ([], xs) (monos, monosrest) = if fontMonospace fs then break (withFont (not . fontMonospace)) xs else ([], xs) parsePara :: PandocMonad m => ManParser m Blocks parsePara = para . trimInlines <$> parseInlines parseInlines :: PandocMonad m => ManParser m Inlines parseInlines = mconcat . intersperse B.space <$> many1 parseInline parseInline :: PandocMonad m => ManParser m Inlines parseInline = try $ do tok <- mtoken case tok of TextLine lparts -> return $ linePartsToInlines lparts ControlLine mname args pos -> handleInlineMacro mname args pos _ -> mzero handleInlineMacro :: PandocMonad m => T.Text -> [Arg] -> SourcePos -> ManParser m Inlines handleInlineMacro mname args _pos = case mname of "UR" -> parseLink args "MT" -> parseEmailLink args "B" -> parseBold args "I" -> parseItalic args "br" -> return linebreak "BI" -> parseAlternatingFonts [strong, emph] args "IB" -> parseAlternatingFonts [emph, strong] args "IR" -> parseAlternatingFonts [emph, id] args "RI" -> parseAlternatingFonts [id, emph] args "BR" -> parseAlternatingFonts [strong, id] args "RB" -> parseAlternatingFonts [id, strong] args "SY" -> return $ strong $ mconcat $ intersperse B.space $ map linePartsToInlines args "YS" -> return mempty "OP" -> case args of (x:ys) -> return $ B.space <> str "[" <> B.space <> mconcat (strong (linePartsToInlines x) : map ((B.space <>) . linePartsToInlines) ys) <> B.space <> str "]" [] -> return mempty _ -> mzero parseBold :: PandocMonad m => [Arg] -> ManParser m Inlines parseBold [] = do TextLine lparts <- mline return $ strong $ linePartsToInlines lparts parseBold args = return $ strong $ mconcat $ intersperse B.space $ map linePartsToInlines args parseItalic :: PandocMonad m => [Arg] -> ManParser m Inlines parseItalic [] = do TextLine lparts <- mline return $ emph $ linePartsToInlines lparts parseItalic args = return $ emph $ mconcat $ intersperse B.space $ map linePartsToInlines args parseAlternatingFonts :: [Inlines -> Inlines] -> [Arg] -> ManParser m Inlines parseAlternatingFonts constructors args = return $ mconcat $ zipWith (\f arg -> f (linePartsToInlines arg)) (cycle constructors) args lineInl :: PandocMonad m => ManParser m Inlines lineInl = do (TextLine fragments) <- mline return $ linePartsToInlines fragments bareIP :: PandocMonad m => ManParser m RoffToken bareIP = msatisfy isBareIP where isBareIP (ControlLine "IP" [] _) = True isBareIP _ = False endmacro :: PandocMonad m => T.Text -> ManParser m () endmacro name = void (mmacro name) <|> lookAhead (void newBlockMacro) <|> lookAhead eof where newBlockMacro = msatisfy isNewBlockMacro isNewBlockMacro (ControlLine "SH" _ _) = True isNewBlockMacro (ControlLine "SS" _ _) = True isNewBlockMacro _ = False parseCodeBlock :: PandocMonad m => ManParser m Blocks parseCodeBlock = try $ do optional bareIP optional (mmacro "in") -- some people indent their code toks <- (mmacro "nf" *> manyTill codeline (endmacro "fi")) <|> (mmacro "EX" *> manyTill codeline (endmacro "EE")) optional (mmacro "in") return $ codeBlock (T.intercalate "\n" $ catMaybes toks) where codeline = do tok <- mtoken case tok of ControlLine "PP" _ _ -> return $ Just "" -- .PP sometimes used for blank line ControlLine mname args pos -> (Just . query getText <$> handleInlineMacro mname args pos) <|> do report $ SkippedContent ("." <> mname) pos return Nothing Tbl _ _ pos -> do report $ SkippedContent "TABLE" pos return $ Just "TABLE" EmptyLine -> return $ Just "" TextLine ss | not (null ss) , all isFontToken ss -> return Nothing | otherwise -> return $ Just $ linePartsToText ss isFontToken Font{} = True isFontToken _ = False getText :: Inline -> T.Text getText (Str s) = s getText Space = " " getText (Code _ s) = s getText SoftBreak = "\n" getText LineBreak = "\n" getText _ = "" parseHeader :: PandocMonad m => ManParser m Blocks parseHeader = do ControlLine name args _ <- mmacro "SH" <|> mmacro "SS" contents <- if null args then option mempty lineInl else return $ mconcat $ intersperse B.space $ map linePartsToInlines args let lvl = if name == "SH" then 1 else 2 return $ header lvl contents parseBlockQuote :: PandocMonad m => ManParser m Blocks parseBlockQuote = blockQuote <$> continuation data ListType = Ordered ListAttributes | Bullet | Definition T.Text listTypeMatches :: Maybe ListType -> ListType -> Bool listTypeMatches Nothing _ = True listTypeMatches (Just Bullet) Bullet = True listTypeMatches (Just (Ordered (_,x,y))) (Ordered (_,x',y')) = x == x' && y == y' listTypeMatches (Just (Definition _)) (Definition _) = True listTypeMatches (Just _) _ = False listItem :: PandocMonad m => Maybe ListType -> ManParser m (ListType, Blocks) listItem mbListType = try $ do (ControlLine _ args _) <- mmacro "IP" case args of (arg1 : _) -> do let cs = linePartsToText arg1 let cs' = if not (T.any (== '.') cs || T.any (== ')') cs) then cs <> "." else cs let lt = case P.runParser anyOrderedListMarker defaultParserState "list marker" cs' of Right (start, listtype, listdelim) | cs == cs' -> Ordered (start, listtype, listdelim) | otherwise -> Ordered (start, listtype, DefaultDelim) Left _ | cs == "\183" || cs == "-" || cs == "*" || cs == "+" -> Bullet | otherwise -> Definition cs guard $ listTypeMatches mbListType lt skipMany memptyLine inls <- option mempty parseInlines skipMany memptyLine continuations <- mconcat <$> many continuation return (lt, para inls <> continuations) [] -> mzero parseList :: PandocMonad m => ManParser m Blocks parseList = try $ do x@(lt, _) <- listItem Nothing xs <- many (listItem (Just lt)) let toDefItem (Definition t, bs) = (B.text t, [bs]) toDefItem _ = mempty return $ case lt of Bullet -> bulletList $ map snd (x:xs) Ordered lattr -> orderedListWith lattr $ map snd (x:xs) Definition _ -> definitionList $ map toDefItem (x:xs) continuation :: PandocMonad m => ManParser m Blocks continuation = mconcat <$> (mmacro "RS" *> manyTill parseBlock (endmacro "RE")) <|> mconcat <$> many1 ( try (bareIP *> parsePara) <|> try (bareIP *> parseCodeBlock) ) definitionListItem :: PandocMonad m => ManParser m (Inlines, [Blocks]) definitionListItem = try $ do mmacro "TP" -- args specify indent level, can ignore skipMany memptyLine term <- parseInline skipMany memptyLine moreterms <- many $ try $ do mmacro "TQ" parseInline skipMany memptyLine inls <- option mempty parseInlines skipMany memptyLine continuations <- mconcat <$> many continuation return ( mconcat (intersperse B.linebreak (term:moreterms)) , [para inls <> continuations]) parseDefinitionList :: PandocMonad m => ManParser m Blocks parseDefinitionList = definitionList <$> many1 definitionListItem parseLink :: PandocMonad m => [Arg] -> ManParser m Inlines parseLink args = do contents <- mconcat <$> many lineInl ControlLine _ endargs _ <- mmacro "UE" let url = case args of [] -> "" (x:_) -> linePartsToText x return $ link url "" contents <> case endargs of [] -> mempty (x:_) -> linePartsToInlines x parseEmailLink :: PandocMonad m => [Arg] -> ManParser m Inlines parseEmailLink args = do contents <- mconcat <$> many lineInl ControlLine _ endargs _ <- mmacro "ME" let url = case args of [] -> "" (x:_) -> "mailto:" <> linePartsToText x return $ link url "" contents <> case endargs of [] -> mempty (x:_) -> linePartsToInlines x skipUnknownMacro :: PandocMonad m => ManParser m Blocks skipUnknownMacro = do tok <- mmacroAny case tok of ControlLine mkind _ pos -> do report $ SkippedContent ("." <> mkind) pos return mempty _ -> Prelude.fail "the impossible happened" pandoc-3.1.3/src/Text/Pandoc/Readers/Markdown.hs0000644000000000000000000025156207346545000017610 0ustar0000000000000000{-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE BangPatterns #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE TupleSections #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ViewPatterns #-} {- | Module : Text.Pandoc.Readers.Markdown Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Conversion of markdown-formatted plain text to 'Pandoc' document. -} module Text.Pandoc.Readers.Markdown ( readMarkdown, yamlToMeta, yamlToRefs ) where import Control.Monad import Control.Monad.Except (throwError) import Data.Bifunctor (second) import Data.Char (isAlphaNum, isPunctuation, isSpace) import Data.List (transpose, elemIndex, sortOn, foldl') import qualified Data.Map as M import Data.Maybe import qualified Data.Set as Set import Data.Text (Text) import qualified Data.Text as T import qualified Data.ByteString as BS import System.FilePath (addExtension, takeExtension, takeDirectory) import qualified System.FilePath.Windows as Windows import qualified System.FilePath.Posix as Posix import Text.DocLayout (realLength) import Text.HTML.TagSoup hiding (Row) import Text.Pandoc.Builder (Blocks, Inlines) import qualified Text.Pandoc.Builder as B import Text.Pandoc.Class.PandocMonad (PandocMonad (..), report) import Text.Pandoc.Definition as Pandoc import Text.Pandoc.Emoji (emojiToInline) import Text.Pandoc.Error import Safe.Foldable (maximumBounded) import Text.Pandoc.Logging import Text.Pandoc.Options import Text.Pandoc.Walk (walk) import Text.Pandoc.Parsing hiding (tableCaption) import Text.Pandoc.Readers.HTML (htmlInBalanced, htmlTag, isBlockTag, isCommentTag, isInlineTag, isTextTag) import Text.Pandoc.Readers.LaTeX (applyMacros, rawLaTeXBlock, rawLaTeXInline) import Text.Pandoc.Shared import Text.Pandoc.URI (escapeURI, isURI) import Text.Pandoc.XML (fromEntities) import Text.Pandoc.Readers.Metadata (yamlBsToMeta, yamlBsToRefs, yamlMetaBlock) -- import Debug.Trace (traceShowId) type MarkdownParser m = ParsecT Sources ParserState m type F = Future ParserState -- | Read markdown from an input string and return a Pandoc document. readMarkdown :: (PandocMonad m, ToSources a) => ReaderOptions -- ^ Reader options -> a -- ^ Input -> m Pandoc readMarkdown opts s = do parsed <- readWithM parseMarkdown def{ stateOptions = opts } (ensureFinalNewlines 3 (toSources s)) case parsed of Right result -> return result Left e -> throwError e -- | Read a YAML string and convert it to pandoc metadata. -- String scalars in the YAML are parsed as Markdown. yamlToMeta :: PandocMonad m => ReaderOptions -> Maybe FilePath -> BS.ByteString -> m Meta yamlToMeta opts mbfp bstr = do let parser = do oldPos <- getPosition setPosition $ initialPos (fromMaybe "" mbfp) meta <- yamlBsToMeta (fmap B.toMetaValue <$> parseBlocks) bstr checkNotes setPosition oldPos st <- getState let result = runF meta st reportLogMessages return result parsed <- readWithM parser def{ stateOptions = opts } ("" :: Text) case parsed of Right result -> return result Left e -> throwError e -- | Read a YAML string and extract references from the -- 'references' field, filter using an id predicate and -- parsing fields as Markdown. yamlToRefs :: PandocMonad m => (Text -> Bool) -> ReaderOptions -> Maybe FilePath -> BS.ByteString -> m [MetaValue] yamlToRefs idpred opts mbfp bstr = do let parser = do case mbfp of Nothing -> return () Just fp -> setPosition $ initialPos fp refs <- yamlBsToRefs (fmap B.toMetaValue <$> parseBlocks) idpred bstr checkNotes st <- getState let result = runF refs st reportLogMessages return result parsed <- readWithM parser def{ stateOptions = opts } ("" :: Text) case parsed of Right result -> return result Left e -> throwError e -- -- Constants and data structure definitions -- isBulletListMarker :: Char -> Bool isBulletListMarker '*' = True isBulletListMarker '+' = True isBulletListMarker '-' = True isBulletListMarker _ = False isHruleChar :: Char -> Bool isHruleChar '*' = True isHruleChar '-' = True isHruleChar '_' = True isHruleChar _ = False setextHChars :: [Char] setextHChars = "=-" isBlank :: Char -> Bool isBlank ' ' = True isBlank '\t' = True isBlank '\n' = True isBlank _ = False -- -- auxiliary functions -- -- | Succeeds when we're in list context. inList :: PandocMonad m => MarkdownParser m () inList = do ctx <- stateParserContext <$> getState guard (ctx == ListItemState) spnl :: PandocMonad m => ParsecT Sources st m () spnl = try $ do skipSpaces optional newline skipSpaces notFollowedBy (char '\n') spnl' :: PandocMonad m => ParsecT Sources st m Text spnl' = try $ do xs <- many spaceChar ys <- option "" $ try $ (:) <$> newline <*> (many spaceChar <* notFollowedBy (char '\n')) return $ T.pack $ xs ++ ys indentSpaces :: PandocMonad m => MarkdownParser m Text indentSpaces = try $ do tabStop <- getOption readerTabStop countChar tabStop (char ' ') <|> textStr "\t" "indentation" nonindentSpaces :: PandocMonad m => MarkdownParser m Text nonindentSpaces = do n <- skipNonindentSpaces return $ T.replicate n " " -- returns number of spaces parsed skipNonindentSpaces :: PandocMonad m => MarkdownParser m Int skipNonindentSpaces = do tabStop <- getOption readerTabStop gobbleAtMostSpaces (tabStop - 1) <* notFollowedBy spaceChar litChar :: PandocMonad m => MarkdownParser m Text litChar = T.singleton <$> escapedChar' <|> characterReference <|> T.singleton <$> noneOf "\n" <|> try (newline >> notFollowedBy blankline >> return " ") -- | Parse a sequence of inline elements between square brackets, -- including inlines between balanced pairs of square brackets. inlinesInBalancedBrackets :: PandocMonad m => MarkdownParser m (F Inlines) inlinesInBalancedBrackets = try $ char '[' >> withRaw (go 1) >>= parseFromString inlines . stripBracket . snd where stripBracket t = case T.unsnoc t of Just (t', ']') -> t' _ -> t go :: PandocMonad m => Int -> MarkdownParser m () go 0 = return () go openBrackets = (() <$ (escapedChar <|> code <|> math <|> endline <|> rawHtmlInline <|> rawLaTeXInline') >> go openBrackets) <|> (do char ']' Control.Monad.when (openBrackets > 1) $ go (openBrackets - 1)) <|> (char '[' >> go (openBrackets + 1)) <|> (satisfy (/= '\n') >> go openBrackets) -- -- document structure -- rawTitleBlockLine :: PandocMonad m => MarkdownParser m Text rawTitleBlockLine = do char '%' skipSpaces first <- anyLine rest <- many $ try $ do spaceChar notFollowedBy blankline skipSpaces anyLine return $ trim $ T.unlines (first:rest) titleLine :: PandocMonad m => MarkdownParser m (F Inlines) titleLine = try $ do raw <- rawTitleBlockLine res <- parseFromString' inlines raw return $ trimInlinesF res authorsLine :: PandocMonad m => MarkdownParser m (F [Inlines]) authorsLine = try $ do raw <- rawTitleBlockLine let sep = (char ';' <* spaces) <|> newline let pAuthors = sepEndBy (trimInlinesF . mconcat <$> many (try $ notFollowedBy sep >> inline)) sep sequence <$> parseFromString' pAuthors raw dateLine :: PandocMonad m => MarkdownParser m (F Inlines) dateLine = try $ do raw <- rawTitleBlockLine res <- parseFromString' inlines raw return $ trimInlinesF res titleBlock :: PandocMonad m => MarkdownParser m () titleBlock = pandocTitleBlock <|> mmdTitleBlock pandocTitleBlock :: PandocMonad m => MarkdownParser m () pandocTitleBlock = do guardEnabled Ext_pandoc_title_block lookAhead (char '%') try $ do title <- option mempty titleLine author <- option (return []) authorsLine date <- option mempty dateLine optional blanklines let meta' = do title' <- title author' <- author date' <- date return $ (if null title' then id else B.setMeta "title" title') . (if null author' then id else B.setMeta "author" author') . (if null date' then id else B.setMeta "date" date') $ nullMeta updateState $ \st -> st{ stateMeta' = stateMeta' st <> meta' } yamlMetaBlock' :: PandocMonad m => MarkdownParser m (F Blocks) yamlMetaBlock' = do guardEnabled Ext_yaml_metadata_block newMetaF <- yamlMetaBlock (fmap B.toMetaValue <$> parseBlocks) -- Since `<>` is left-biased, existing values are not touched: updateState $ \st -> st{ stateMeta' = stateMeta' st <> newMetaF } return mempty mmdTitleBlock :: PandocMonad m => MarkdownParser m () mmdTitleBlock = do guardEnabled Ext_mmd_title_block try $ do firstPair <- kvPair False restPairs <- many (kvPair True) let kvPairs = firstPair : restPairs blanklines updateState $ \st -> st{ stateMeta' = stateMeta' st <> return (Meta $ M.fromList kvPairs) } kvPair :: PandocMonad m => Bool -> MarkdownParser m (Text, MetaValue) kvPair allowEmpty = try $ do key <- many1TillChar (alphaNum <|> oneOf "_- ") (char ':') val <- trim <$> manyTillChar anyChar (try $ newline >> lookAhead (blankline <|> nonspaceChar)) guard $ allowEmpty || not (T.null val) let key' = T.concat $ T.words $ T.toLower key let val' = MetaInlines $ B.toList $ B.text val return (key',val') parseMarkdown :: PandocMonad m => MarkdownParser m Pandoc parseMarkdown = do optional titleBlock blocks <- parseBlocks st <- getState checkNotes let doc = runF (do Pandoc _ bs <- B.doc <$> blocks meta <- stateMeta' st return $ Pandoc meta bs) st reportLogMessages return doc -- check for notes with no corresponding note references checkNotes :: PandocMonad m => MarkdownParser m () checkNotes = do st <- getState let notesUsed = stateNoteRefs st let notesDefined = M.keys (stateNotes' st) mapM_ (\n -> unless (n `Set.member` notesUsed) $ case M.lookup n (stateNotes' st) of Just (pos, _) -> report (NoteDefinedButNotUsed n pos) Nothing -> throwError $ PandocShouldNeverHappenError "note not found") notesDefined referenceKey :: PandocMonad m => MarkdownParser m (F Blocks) referenceKey = try $ do pos <- getPosition skipNonindentSpaces notFollowedBy (void cite) (_,raw) <- reference char ':' skipSpaces >> optional newline >> skipSpaces >> notFollowedBy (char '[') let sourceURL = fmap T.unwords $ many $ try $ do skipMany spaceChar notFollowedBy' referenceTitle notFollowedBy' $ guardEnabled Ext_link_attributes >> attributes notFollowedBy' $ guardEnabled Ext_mmd_link_attributes >> try (spnl <* keyValAttr) notFollowedBy' (() <$ reference) mconcat <$> many1 (notFollowedBy space *> litChar) let betweenAngles = try $ char '<' >> mconcat <$> (manyTill litChar (char '>')) rebase <- option False (True <$ guardEnabled Ext_rebase_relative_paths) src <- (if rebase then rebasePath pos else id) <$> (try betweenAngles <|> sourceURL) tit <- option "" referenceTitle attr <- option nullAttr $ try $ do guardEnabled Ext_link_attributes skipSpaces >> optional newline >> skipSpaces attributes addKvs <- option [] $ guardEnabled Ext_mmd_link_attributes >> many (try $ spnl >> keyValAttr) blanklines let attr' = extractIdClass $ foldl' (\x f -> f x) attr addKvs target = (escapeURI $ trimr src, tit) st <- getState let oldkeys = stateKeys st let key = toKey raw case M.lookup key oldkeys of Just (t,a) | not (t == target && a == attr') -> -- We don't warn on two duplicate keys if the targets are also -- the same. This can happen naturally with --reference-location=block -- or section. See #3701. logMessage $ DuplicateLinkReference raw pos _ -> return () updateState $ \s -> s { stateKeys = M.insert key (target, attr') oldkeys } return $ return mempty referenceTitle :: PandocMonad m => MarkdownParser m Text referenceTitle = try $ do skipSpaces >> optional newline >> skipSpaces quotedTitle '"' <|> quotedTitle '\'' <|> charsInBalanced '(' ')' litChar -- A link title in quotes quotedTitle :: PandocMonad m => Char -> MarkdownParser m Text quotedTitle c = try $ do char c notFollowedBy spaces let pEnder = try $ char c >> notFollowedBy (satisfy isAlphaNum) let regChunk = many1Char (noneOf ['\\','\n','&',c]) <|> litChar let nestedChunk = (\x -> (c `T.cons` x) `T.snoc` c) <$> quotedTitle c T.unwords . T.words . T.concat <$> manyTill (nestedChunk <|> regChunk) pEnder -- | PHP Markdown Extra style abbreviation key. Currently -- we just skip them, since Pandoc doesn't have an element for -- an abbreviation. abbrevKey :: PandocMonad m => MarkdownParser m (F Blocks) abbrevKey = do guardEnabled Ext_abbreviations try $ do char '*' reference char ':' skipMany (satisfy (/= '\n')) blanklines return $ return mempty noteMarker :: PandocMonad m => MarkdownParser m Text noteMarker = string "[^" >> many1TillChar (satisfy $ not . isBlank) (char ']') rawLine :: PandocMonad m => MarkdownParser m Text rawLine = try $ do notFollowedBy blankline notFollowedBy' $ try $ skipNonindentSpaces >> noteMarker optional indentSpaces anyLine rawLines :: PandocMonad m => MarkdownParser m Text rawLines = do first <- anyLine rest <- many rawLine return $ T.unlines (first:rest) noteBlock :: PandocMonad m => MarkdownParser m (F Blocks) noteBlock = do guardEnabled Ext_footnotes try $ do pos <- getPosition skipNonindentSpaces ref <- noteMarker char ':' optional blankline optional indentSpaces updateState $ \st -> st{ stateInNote = True } first <- rawLines rest <- many $ try $ blanklines >> indentSpaces >> rawLines let raw = T.unlines (first:rest) <> "\n" optional blanklines parsed <- parseFromString' parseBlocks raw oldnotes <- stateNotes' <$> getState case M.lookup ref oldnotes of Just _ -> logMessage $ DuplicateNoteReference ref pos Nothing -> return () updateState $ \s -> s { stateNotes' = M.insert ref (pos, parsed) oldnotes, stateInNote = False } return mempty -- -- parsing blocks -- parseBlocks :: PandocMonad m => MarkdownParser m (F Blocks) parseBlocks = mconcat <$> manyTill block eof block :: PandocMonad m => MarkdownParser m (F Blocks) block = do res <- choice [ mempty <$ blanklines , codeBlockFenced , yamlMetaBlock' -- note: bulletList needs to be before header because of -- the possibility of empty list items: - , bulletList , divHtml , divFenced , header , lhsCodeBlock , htmlBlock , table , codeBlockIndented , rawTeXBlock , lineBlock , blockQuote , hrule , orderedList , definitionList , noteBlock , referenceKey , abbrevKey , para , plain ] "block" trace (T.take 60 $ tshow $ B.toList $ runF res defaultParserState) return res -- -- header blocks -- header :: PandocMonad m => MarkdownParser m (F Blocks) header = setextHeader <|> atxHeader "header" atxChar :: PandocMonad m => MarkdownParser m Char atxChar = do exts <- getOption readerExtensions return $ if extensionEnabled Ext_literate_haskell exts then '=' else '#' atxHeader :: PandocMonad m => MarkdownParser m (F Blocks) atxHeader = try $ do level <- fmap length (atxChar >>= many1 . char) notFollowedBy $ guardEnabled Ext_fancy_lists >> (char '.' <|> char ')') -- this would be a list guardDisabled Ext_space_in_atx_header <|> notFollowedBy nonspaceChar skipSpaces (text, raw) <- withRaw $ do oldAllowLineBreaks <- stateAllowLineBreaks <$> getState updateState $ \st -> st{ stateAllowLineBreaks = False } res <- trimInlinesF . mconcat <$> many (notFollowedBy atxClosing >> inline) updateState $ \st -> st{ stateAllowLineBreaks = oldAllowLineBreaks } return res attr <- atxClosing attr' <- registerHeader attr (runF text defaultParserState) guardDisabled Ext_implicit_header_references <|> registerImplicitHeader raw attr' return $ B.headerWith attr' level <$> text atxClosing :: PandocMonad m => MarkdownParser m Attr atxClosing = try $ do attr' <- option nullAttr (guardEnabled Ext_mmd_header_identifiers >> mmdHeaderIdentifier) skipMany . char =<< atxChar skipSpaces attr <- option attr' (guardEnabled Ext_header_attributes >> attributes) blanklines return attr setextHeaderEnd :: PandocMonad m => MarkdownParser m Attr setextHeaderEnd = try $ do attr <- option nullAttr $ (guardEnabled Ext_mmd_header_identifiers >> mmdHeaderIdentifier) <|> (guardEnabled Ext_header_attributes >> attributes) blanklines return attr mmdHeaderIdentifier :: PandocMonad m => MarkdownParser m Attr mmdHeaderIdentifier = do (_, raw) <- reference let raw' = trim $ stripFirstAndLast raw let ident = T.concat $ T.words $ T.toLower raw' let attr = (ident, [], []) guardDisabled Ext_implicit_header_references <|> registerImplicitHeader raw' attr skipSpaces return attr setextHeader :: PandocMonad m => MarkdownParser m (F Blocks) setextHeader = try $ do -- This lookahead prevents us from wasting time parsing Inlines -- unless necessary -- it gives a significant performance boost. lookAhead $ anyLine >> many1 (oneOf setextHChars) >> blankline skipSpaces (text, raw) <- withRaw $ do oldAllowLineBreaks <- stateAllowLineBreaks <$> getState updateState $ \st -> st{ stateAllowLineBreaks = False } res <- trimInlinesF . mconcat <$> many (notFollowedBy setextHeaderEnd >> inline) updateState $ \st -> st{ stateAllowLineBreaks = oldAllowLineBreaks } return res attr <- setextHeaderEnd underlineChar <- oneOf setextHChars many (char underlineChar) blanklines let level = fromMaybe 0 (elemIndex underlineChar setextHChars) + 1 attr' <- registerHeader attr (runF text defaultParserState) guardDisabled Ext_implicit_header_references <|> registerImplicitHeader raw attr' return $ B.headerWith attr' level <$> text registerImplicitHeader :: PandocMonad m => Text -> Attr -> MarkdownParser m () registerImplicitHeader raw attr@(ident, _, _) | T.null raw = return () | otherwise = do let key = toKey $ "[" <> raw <> "]" updateState $ \s -> -- don't override existing headers s { stateHeaderKeys = M.insertWith (\_new old -> old) key (("#" <> ident,""), attr) (stateHeaderKeys s) } -- -- hrule block -- hrule :: PandocMonad m => ParsecT Sources st m (F Blocks) hrule = try $ do skipSpaces start <- satisfy isHruleChar count 2 (skipSpaces >> char start) skipMany (spaceChar <|> char start) newline optional blanklines return $ return B.horizontalRule -- -- code blocks -- indentedLine :: PandocMonad m => MarkdownParser m Text indentedLine = indentSpaces >> anyLineNewline blockDelimiter :: PandocMonad m => (Char -> Bool) -> Maybe Int -> ParsecT Sources ParserState m Int blockDelimiter f len = try $ do skipNonindentSpaces c <- lookAhead (satisfy f) case len of Just l -> count l (char c) >> many (char c) >> return l Nothing -> fmap ((+ 3) . length) (count 3 (char c) >> many (char c)) attributes :: PandocMonad m => MarkdownParser m Attr attributes = try $ do char '{' spnl attrs <- many (attribute <* spnl) char '}' return $ foldl' (\x f -> f x) nullAttr attrs attribute :: PandocMonad m => MarkdownParser m (Attr -> Attr) attribute = identifierAttr <|> classAttr <|> keyValAttr <|> specialAttr identifier :: PandocMonad m => MarkdownParser m Text identifier = do first <- letter rest <- many $ alphaNum <|> oneOf "-_:." return $ T.pack (first:rest) identifierAttr :: PandocMonad m => MarkdownParser m (Attr -> Attr) identifierAttr = try $ do char '#' result <- T.pack <$> many1 (alphaNum <|> oneOf "-_:.") -- see #7920 return $ \(_,cs,kvs) -> (result,cs,kvs) classAttr :: PandocMonad m => MarkdownParser m (Attr -> Attr) classAttr = try $ do char '.' result <- identifier return $ \(id',cs,kvs) -> (id',cs ++ [result],kvs) keyValAttr :: PandocMonad m => MarkdownParser m (Attr -> Attr) keyValAttr = try $ do key <- identifier char '=' val <- mconcat <$> enclosed (char '"') (char '"') litChar <|> mconcat <$> enclosed (char '\'') (char '\'') litChar <|> ("" <$ try (string "\"\"")) <|> ("" <$ try (string "''")) <|> manyChar (escapedChar' <|> noneOf " \t\n\r}") return $ \(id',cs,kvs) -> case key of "id" -> (val,cs,kvs) "class" -> (id',cs ++ T.words val,kvs) _ -> (id',cs,kvs ++ [(key,val)]) specialAttr :: PandocMonad m => MarkdownParser m (Attr -> Attr) specialAttr = do char '-' return $ \(id',cs,kvs) -> (id',cs ++ ["unnumbered"],kvs) rawAttribute :: PandocMonad m => MarkdownParser m Text rawAttribute = do char '{' skipMany spaceChar char '=' format <- many1Char $ satisfy (\c -> isAlphaNum c || c `elem` ['-', '_']) skipMany spaceChar char '}' return format codeBlockFenced :: PandocMonad m => MarkdownParser m (F Blocks) codeBlockFenced = try $ do indentchars <- nonindentSpaces let indentLevel = T.length indentchars c <- (guardEnabled Ext_fenced_code_blocks >> lookAhead (char '~')) <|> (guardEnabled Ext_backtick_code_blocks >> lookAhead (char '`')) size <- blockDelimiter (== c) Nothing skipMany spaceChar rawattr <- (Left <$> (guardEnabled Ext_raw_attribute >> try rawAttribute)) <|> (Right <$> do let pLangId = many1Char . satisfy $ \x -> x `notElem` ['`', '{', '}'] && not (isSpace x) mbLanguageId <- optionMaybe (toLanguageId <$> pLangId) skipMany spaceChar mbAttr <- optionMaybe (guardEnabled Ext_fenced_code_attributes *> try attributes) return $ case mbAttr of Nothing -> ("", maybeToList mbLanguageId, []) Just (elementId, classes, attrs) -> (elementId, (maybe id (:) mbLanguageId) classes, attrs)) blankline contents <- T.intercalate "\n" <$> manyTill (gobbleAtMostSpaces indentLevel >> anyLine) (try $ do blockDelimiter (== c) (Just size) blanklines) return $ return $ case rawattr of Left syn -> B.rawBlock syn contents Right attr -> B.codeBlockWith attr contents -- correctly handle github language identifiers toLanguageId :: Text -> Text toLanguageId = T.toLower . go where go "c++" = "cpp" go "objective-c" = "objectivec" go x = x codeBlockIndented :: PandocMonad m => MarkdownParser m (F Blocks) codeBlockIndented = do contents <- many1 (indentedLine <|> try (do b <- blanklines l <- indentedLine return $ b <> l)) optional blanklines classes <- getOption readerIndentedCodeClasses return $ return $ B.codeBlockWith ("", classes, []) $ stripTrailingNewlines $ T.concat contents lhsCodeBlock :: PandocMonad m => MarkdownParser m (F Blocks) lhsCodeBlock = do guardEnabled Ext_literate_haskell (return . B.codeBlockWith ("",["haskell","literate"],[]) <$> (lhsCodeBlockBird <|> lhsCodeBlockLaTeX)) <|> (return . B.codeBlockWith ("",["haskell"],[]) <$> lhsCodeBlockInverseBird) lhsCodeBlockLaTeX :: PandocMonad m => MarkdownParser m Text lhsCodeBlockLaTeX = try $ do string "\\begin{code}" manyTill spaceChar newline contents <- many1TillChar anyChar (try $ string "\\end{code}") blanklines return $ stripTrailingNewlines contents lhsCodeBlockBird :: PandocMonad m => MarkdownParser m Text lhsCodeBlockBird = lhsCodeBlockBirdWith '>' lhsCodeBlockInverseBird :: PandocMonad m => MarkdownParser m Text lhsCodeBlockInverseBird = lhsCodeBlockBirdWith '<' lhsCodeBlockBirdWith :: PandocMonad m => Char -> MarkdownParser m Text lhsCodeBlockBirdWith c = try $ do pos <- getPosition when (sourceColumn pos /= 1) $ Prelude.fail "Not in first column" lns <- many1 $ birdTrackLine c -- if (as is normal) there is always a space after >, drop it let lns' = if all (\ln -> T.null ln || T.take 1 ln == " ") lns then map (T.drop 1) lns else lns blanklines return $ T.intercalate "\n" lns' birdTrackLine :: PandocMonad m => Char -> ParsecT Sources st m Text birdTrackLine c = try $ do char c -- allow html tags on left margin: when (c == '<') $ notFollowedBy letter anyLine -- -- block quotes -- emailBlockQuoteStart :: PandocMonad m => MarkdownParser m Char emailBlockQuoteStart = try $ skipNonindentSpaces >> char '>' <* optional (char ' ') emailBlockQuote :: PandocMonad m => MarkdownParser m [Text] emailBlockQuote = try $ do emailBlockQuoteStart let emailLine = manyChar $ nonEndline <|> try (endline >> notFollowedBy emailBlockQuoteStart >> return '\n') let emailSep = try (newline >> emailBlockQuoteStart) first <- emailLine rest <- many $ try $ emailSep >> emailLine let raw = first:rest newline <|> (eof >> return '\n') optional blanklines return raw blockQuote :: PandocMonad m => MarkdownParser m (F Blocks) blockQuote = do raw <- emailBlockQuote -- parse the extracted block, which may contain various block elements: contents <- parseFromString' parseBlocks $ T.intercalate "\n" raw <> "\n\n" return $ B.blockQuote <$> contents -- -- list blocks -- bulletListStart :: PandocMonad m => MarkdownParser m () bulletListStart = try $ do optional newline -- if preceded by a Plain block in a list context skipNonindentSpaces notFollowedBy' (() <$ hrule) -- because hrules start out just like lists satisfy isBulletListMarker gobbleSpaces 1 <|> () <$ lookAhead newline try (gobbleAtMostSpaces 3 >> notFollowedBy spaceChar) <|> return () orderedListStart :: PandocMonad m => Maybe (ListNumberStyle, ListNumberDelim) -> MarkdownParser m (Int, ListNumberStyle, ListNumberDelim) orderedListStart mbstydelim = try $ do optional newline -- if preceded by a Plain block in a list context skipNonindentSpaces notFollowedBy $ string "p." >> spaceChar >> digit -- page number (do guardDisabled Ext_fancy_lists start <- many1Char digit >>= safeRead char '.' gobbleSpaces 1 <|> () <$ lookAhead newline optional $ try (gobbleAtMostSpaces 3 >> notFollowedBy spaceChar) return (start, DefaultStyle, DefaultDelim)) <|> (do (num, style, delim) <- maybe anyOrderedListMarker (\(sty,delim) -> (\start -> (start,sty,delim)) <$> orderedListMarker sty delim) mbstydelim gobbleSpaces 1 <|> () <$ lookAhead newline -- if it could be an abbreviated first name, -- insist on more than one space when (delim == Period && (style == UpperAlpha || (style == UpperRoman && num `elem` [1, 5, 10, 50, 100, 500, 1000]))) $ () <$ lookAhead (newline <|> spaceChar) optional $ try (gobbleAtMostSpaces 3 >> notFollowedBy spaceChar) return (num, style, delim)) listStart :: PandocMonad m => MarkdownParser m () listStart = bulletListStart <|> Control.Monad.void (orderedListStart Nothing) listLine :: PandocMonad m => Int -> MarkdownParser m Text listLine continuationIndent = try $ do notFollowedBy' (do gobbleSpaces continuationIndent skipMany spaceChar listStart) notFollowedByHtmlCloser notFollowedByDivCloser optional (() <$ gobbleSpaces continuationIndent) listLineCommon listLineCommon :: PandocMonad m => MarkdownParser m Text listLineCommon = T.concat <$> manyTill ( many1Char (satisfy $ \c -> c `notElem` ['\n', '<', '`']) <|> fmap snd (withRaw code) <|> fmap (renderTags . (:[]) . fst) (htmlTag isCommentTag) <|> countChar 1 anyChar ) newline -- parse raw text for one list item, excluding start marker and continuations rawListItem :: PandocMonad m => Bool -- four space rule -> MarkdownParser m a -> MarkdownParser m (Text, Int) rawListItem fourSpaceRule start = try $ do pos1 <- getPosition start pos2 <- getPosition let continuationIndent = if fourSpaceRule then 4 else sourceColumn pos2 - sourceColumn pos1 first <- listLineCommon rest <- many (do notFollowedBy listStart notFollowedBy (() <$ codeBlockFenced) notFollowedBy blankline listLine continuationIndent) blanks <- manyChar blankline let result = T.unlines (first:rest) <> blanks return (result, continuationIndent) -- continuation of a list item - indented and separated by blankline -- or (in compact lists) endline. -- note: nested lists are parsed as continuations listContinuation :: PandocMonad m => Int -> MarkdownParser m Text listContinuation continuationIndent = try $ do x <- try $ do notFollowedBy blankline notFollowedByHtmlCloser notFollowedByDivCloser gobbleSpaces continuationIndent anyLineNewline xs <- many $ try $ do notFollowedBy blankline notFollowedByHtmlCloser notFollowedByDivCloser gobbleSpaces continuationIndent <|> notFollowedBy' listStart anyLineNewline blanks <- manyChar blankline return $ T.concat (x:xs) <> blanks -- Variant of blanklines that doesn't require blank lines -- before a fence or eof. blanklines' :: PandocMonad m => MarkdownParser m Text blanklines' = blanklines <|> try checkDivCloser where checkDivCloser = do guardEnabled Ext_fenced_divs divLevel <- stateFencedDivLevel <$> getState guard (divLevel >= 1) lookAhead divFenceEnd return "" notFollowedByDivCloser :: PandocMonad m => MarkdownParser m () notFollowedByDivCloser = guardDisabled Ext_fenced_divs <|> do divLevel <- stateFencedDivLevel <$> getState guard (divLevel < 1) <|> notFollowedBy divFenceEnd notFollowedByHtmlCloser :: PandocMonad m => MarkdownParser m () notFollowedByHtmlCloser = do inHtmlBlock <- stateInHtmlBlock <$> getState case inHtmlBlock of Just t -> notFollowedBy' $ htmlTag (~== TagClose t) Nothing -> return () listItem :: PandocMonad m => Bool -- four-space rule -> MarkdownParser m a -> MarkdownParser m (F Blocks) listItem fourSpaceRule start = try $ do -- parsing with ListItemState forces markers at beginning of lines to -- count as list item markers, even if not separated by blank space. -- see definition of "endline" state <- getState let oldContext = stateParserContext state setState $ state {stateParserContext = ListItemState} (first, continuationIndent) <- rawListItem fourSpaceRule start continuations <- many (listContinuation continuationIndent) -- parse the extracted block, which may contain various block elements: let raw = T.concat (first:continuations) contents <- parseFromString' parseBlocks raw updateState (\st -> st {stateParserContext = oldContext}) exts <- getOption readerExtensions return $ B.fromList . taskListItemFromAscii exts . B.toList <$> contents orderedList :: PandocMonad m => MarkdownParser m (F Blocks) orderedList = try $ do (start, style, delim) <- lookAhead (orderedListStart Nothing) unless (style `elem` [DefaultStyle, Decimal, Example] && delim `elem` [DefaultDelim, Period]) $ guardEnabled Ext_fancy_lists when (style == Example) $ guardEnabled Ext_example_lists fourSpaceRule <- (True <$ guardEnabled Ext_four_space_rule) <|> return (style == Example) items <- fmap sequence $ many1 $ listItem fourSpaceRule (orderedListStart (Just (style, delim))) start' <- if style == Example then return start else (start <$ guardEnabled Ext_startnum) <|> return 1 return $ B.orderedListWith (start', style, delim) <$> fmap compactify items bulletList :: PandocMonad m => MarkdownParser m (F Blocks) bulletList = do fourSpaceRule <- (True <$ guardEnabled Ext_four_space_rule) <|> return False items <- fmap sequence $ many1 $ listItem fourSpaceRule bulletListStart return $ B.bulletList <$> fmap compactify items -- definition lists defListMarker :: PandocMonad m => MarkdownParser m () defListMarker = do sps <- nonindentSpaces char ':' <|> char '~' tabStop <- getOption readerTabStop let remaining = tabStop - (T.length sps + 1) if remaining > 0 then try (count remaining (char ' ')) <|> string "\t" <|> many1 spaceChar else mzero return () definitionListItem :: PandocMonad m => Bool -> MarkdownParser m (F (Inlines, [Blocks])) definitionListItem compact = try $ do rawLine' <- anyLine raw <- many1 $ defRawBlock compact term <- parseFromString' (trimInlinesF <$> inlines) rawLine' contents <- mapM (parseFromString' parseBlocks . (<> "\n")) raw optional blanklines return $ liftM2 (,) term (sequence contents) defRawBlock :: PandocMonad m => Bool -> MarkdownParser m Text defRawBlock compact = try $ do hasBlank <- option False $ blankline >> return True defListMarker firstline <- anyLineNewline let dline = try ( do notFollowedBy blankline notFollowedByHtmlCloser notFollowedByDivCloser if compact -- laziness not compatible with compact then () <$ indentSpaces else (() <$ indentSpaces) <|> notFollowedBy defListMarker anyLine ) rawlines <- many dline cont <- fmap T.concat $ many $ try $ do trailing <- option "" blanklines ln <- indentSpaces >> notFollowedBy blankline >> anyLine lns <- many dline return $ trailing <> T.unlines (ln:lns) return $ trimr (firstline <> T.unlines rawlines <> cont) <> if hasBlank || not (T.null cont) then "\n\n" else "" definitionList :: PandocMonad m => MarkdownParser m (F Blocks) definitionList = try $ do lookAhead (anyLine >> optional (blankline >> notFollowedBy (Control.Monad.void table)) >> -- don't capture table caption as def list! defListMarker) compactDefinitionList <|> normalDefinitionList compactDefinitionList :: PandocMonad m => MarkdownParser m (F Blocks) compactDefinitionList = do guardEnabled Ext_compact_definition_lists items <- fmap sequence $ many1 $ definitionListItem True return $ B.definitionList <$> fmap compactifyDL items normalDefinitionList :: PandocMonad m => MarkdownParser m (F Blocks) normalDefinitionList = do guardEnabled Ext_definition_lists items <- fmap sequence $ many1 $ definitionListItem False return $ B.definitionList <$> items -- -- paragraph block -- para :: PandocMonad m => MarkdownParser m (F Blocks) para = try $ do exts <- getOption readerExtensions result <- trimInlinesF <$> inlines1 let figureOr constr inlns = case B.toList inlns of [Image attr figCaption (src, tit)] | extensionEnabled Ext_implicit_figures exts , not (null figCaption) -> do implicitFigure attr (B.fromList figCaption) src tit _ -> constr inlns option (figureOr B.plain <$> result) $ try $ do newline (mempty <$ blanklines) <|> (guardDisabled Ext_blank_before_blockquote <* lookAhead blockQuote) <|> (guardEnabled Ext_backtick_code_blocks <* lookAhead codeBlockFenced) <|> (guardDisabled Ext_blank_before_header <* lookAhead header) <|> (guardEnabled Ext_lists_without_preceding_blankline -- Avoid creating a paragraph in a nested list. <* notFollowedBy' inList <* lookAhead listStart) <|> do guardEnabled Ext_native_divs inHtmlBlock <- stateInHtmlBlock <$> getState case inHtmlBlock of Just "div" -> () <$ lookAhead (htmlTag (~== TagClose ("div" :: Text))) _ -> mzero <|> do guardEnabled Ext_fenced_divs divLevel <- stateFencedDivLevel <$> getState if divLevel > 0 then lookAhead divFenceEnd else mzero return $ figureOr B.para <$> result plain :: PandocMonad m => MarkdownParser m (F Blocks) plain = fmap B.plain . trimInlinesF <$> inlines1 implicitFigure :: Attr -> Inlines -> Text -> Text -> Blocks implicitFigure (ident, classes, attribs) capt url title = let alt = case "alt" `lookup` attribs of Just alt' -> B.text alt' _ -> capt attribs' = filter ((/= "alt") . fst) attribs figattr = (ident, mempty, mempty) caption = B.simpleCaption $ B.plain capt figbody = B.plain $ B.imageWith ("", classes, attribs') url title alt in B.figureWith figattr caption figbody -- -- raw html -- htmlElement :: PandocMonad m => MarkdownParser m Text htmlElement = rawVerbatimBlock <|> strictHtmlBlock <|> fmap snd (htmlTag isBlockTag) htmlBlock :: PandocMonad m => MarkdownParser m (F Blocks) htmlBlock = do guardEnabled Ext_raw_html try (do (TagOpen _ attrs) <- lookAhead $ fst <$> htmlTag isBlockTag return . B.rawBlock "html" <$> rawVerbatimBlock <|> (do guardEnabled Ext_markdown_attribute oldMarkdownAttribute <- stateMarkdownAttribute <$> getState markdownAttribute <- case lookup "markdown" attrs of Just "0" -> False <$ updateState (\st -> st{ stateMarkdownAttribute = False }) Just _ -> True <$ updateState (\st -> st{ stateMarkdownAttribute = True }) Nothing -> return oldMarkdownAttribute res <- if markdownAttribute then rawHtmlBlocks else htmlBlock' updateState $ \st -> st{ stateMarkdownAttribute = oldMarkdownAttribute } return res) <|> (guardEnabled Ext_markdown_in_html_blocks >> rawHtmlBlocks)) <|> htmlBlock' htmlBlock' :: PandocMonad m => MarkdownParser m (F Blocks) htmlBlock' = try $ do first <- htmlElement skipMany spaceChar optional blanklines return $ if T.null first then mempty else return $ B.rawBlock "html" first strictHtmlBlock :: PandocMonad m => MarkdownParser m Text strictHtmlBlock = htmlInBalanced (not . isInlineTag) rawVerbatimBlock :: PandocMonad m => MarkdownParser m Text rawVerbatimBlock = htmlInBalanced isVerbTag where isVerbTag (TagOpen "pre" _) = True isVerbTag (TagOpen "style" _) = True isVerbTag (TagOpen "script" _) = True isVerbTag (TagOpen "textarea" _) = True isVerbTag _ = False rawTeXBlock :: PandocMonad m => MarkdownParser m (F Blocks) rawTeXBlock = do guardEnabled Ext_raw_tex result <- (B.rawBlock "tex" . trim . T.concat <$> many1 ((<>) <$> rawConTeXtEnvironment <*> spnl')) <|> (B.rawBlock "tex" . trim . T.concat <$> many1 ((<>) <$> rawLaTeXBlock <*> spnl')) return $ case B.toList result of [RawBlock _ cs] | T.all (`elem` [' ','\t','\n']) cs -> return mempty -- don't create a raw block for suppressed macro defs _ -> return result rawHtmlBlocks :: PandocMonad m => MarkdownParser m (F Blocks) rawHtmlBlocks = do (TagOpen tagtype _, raw) <- htmlTag isBlockTag let selfClosing = "/>" `T.isSuffixOf` raw -- we don't want ' text' to be a code block: skipMany spaceChar tabStop <- getOption readerTabStop indentlevel <- option 0 $ do blankline sum <$> many ( (1 <$ char ' ') <|> (tabStop <$ char '\t') ) -- try to find closing tag -- we set stateInHtmlBlock so that closing tags that can be either block or -- inline will not be parsed as inline tags oldInHtmlBlock <- stateInHtmlBlock <$> getState updateState $ \st -> st{ stateInHtmlBlock = Just tagtype } let closer = htmlTag (~== TagClose tagtype) let block' = try $ do gobbleAtMostSpaces indentlevel notFollowedBy' closer block contents <- if selfClosing then return mempty else mconcat <$> many block' result <- try (do gobbleAtMostSpaces indentlevel (_, rawcloser) <- closer return (return (B.rawBlock "html" $ stripMarkdownAttribute raw) <> contents <> return (B.rawBlock "html" rawcloser))) <|> return (return (B.rawBlock "html" raw) <> contents) updateState $ \st -> st{ stateInHtmlBlock = oldInHtmlBlock } return result -- remove markdown="1" attribute stripMarkdownAttribute :: Text -> Text stripMarkdownAttribute s = renderTags' $ map filterAttrib $ parseTags s where filterAttrib (TagOpen t as) = TagOpen t [(k,v) | (k,v) <- as, k /= "markdown"] filterAttrib x = x -- -- line block -- lineBlock :: PandocMonad m => MarkdownParser m (F Blocks) lineBlock = do guardEnabled Ext_line_blocks try $ do lines' <- lineBlockLines >>= mapM (parseFromString' (trimInlinesF <$> inlines)) return $ B.lineBlock <$> sequence lines' -- -- Tables -- -- Parse a dashed line with optional trailing spaces; return its length -- and the length including trailing space. dashedLine :: PandocMonad m => Char -> ParsecT Sources st m (Int, Int) dashedLine ch = do dashes <- many1 (char ch) sp <- many spaceChar let lengthDashes = length dashes lengthSp = length sp return (lengthDashes, lengthDashes + lengthSp) -- Parse a table header with dashed lines of '-' preceded by -- one (or zero) line of text. simpleTableHeader :: PandocMonad m => Bool -- ^ Headerless table -> MarkdownParser m (F [Blocks], [Alignment], [Int]) simpleTableHeader headless = try $ do rawContent <- if headless then return "" else anyLine initSp <- nonindentSpaces dashes <- many1 (dashedLine '-') newline let (lengths, lines') = unzip dashes let indices = scanl (+) (T.length initSp) lines' -- If no header, calculate alignment on basis of first row of text rawHeads <- fmap (tail . splitTextByIndices (init indices)) $ if headless then lookAhead anyLine else return rawContent let aligns = zipWith alignType (map (: []) rawHeads) lengths let rawHeads' = if headless then [] else rawHeads heads <- fmap sequence $ mapM (parseFromString' (mconcat <$> many plain).trim) rawHeads' return (heads, aligns, indices) -- Returns an alignment type for a table, based on a list of strings -- (the rows of the column header) and a number (the length of the -- dashed line under the rows. alignType :: [Text] -> Int -> Alignment alignType [] _ = AlignDefault alignType strLst len = let nonempties = filter (not . T.null) $ map trimr strLst (leftSpace, rightSpace) = case sortOn T.length nonempties of (x:_) -> (T.head x `elem` [' ', '\t'], T.length x < len) [] -> (False, False) in case (leftSpace, rightSpace) of (True, False) -> AlignRight (False, True) -> AlignLeft (True, True) -> AlignCenter (False, False) -> AlignDefault -- Parse a table footer - dashed lines followed by blank line. tableFooter :: PandocMonad m => MarkdownParser m Text tableFooter = try $ skipNonindentSpaces >> many1 (dashedLine '-') >> blanklines' -- Parse a table separator - dashed line. tableSep :: PandocMonad m => MarkdownParser m Char tableSep = try $ skipNonindentSpaces >> many1 (dashedLine '-') >> char '\n' -- Parse a raw line and split it into chunks by indices. rawTableLine :: PandocMonad m => [Int] -> MarkdownParser m [Text] rawTableLine indices = do notFollowedBy' (blanklines' <|> tableFooter) line <- anyLine return $ map trim $ tail $ splitTextByIndices (init indices) line -- Parse a table line and return a list of lists of blocks (columns). tableLine :: PandocMonad m => [Int] -> MarkdownParser m (F [Blocks]) tableLine indices = rawTableLine indices >>= fmap sequence . mapM (parseFromString' (mconcat <$> many plain)) -- Parse a multiline table row and return a list of blocks (columns). multilineRow :: PandocMonad m => [Int] -> MarkdownParser m (F [Blocks]) multilineRow indices = do colLines <- many1 (rawTableLine indices) let cols = map T.unlines $ transpose colLines fmap sequence $ mapM (parseFromString' (mconcat <$> many plain)) cols -- Parses a table caption: inlines beginning with 'Table:' -- and followed by blank lines. tableCaption :: PandocMonad m => MarkdownParser m (F Inlines) tableCaption = do guardEnabled Ext_table_captions try $ do skipNonindentSpaces (string ":" <* notFollowedBy (satisfy isPunctuation)) <|> (oneOf ['T','t'] >> string "able:") trimInlinesF <$> inlines1 <* blanklines -- Parse a simple table with '---' header and one line per row. simpleTable :: PandocMonad m => Bool -- ^ Headerless table -> MarkdownParser m (F TableComponents) simpleTable headless = do tableComponents <- tableWith' NormalizeHeader (simpleTableHeader headless) tableLine (return ()) (if headless then tableFooter else tableFooter <|> blanklines') -- All columns in simple tables have default widths. let useDefaultColumnWidths tc = let cs' = map (second (const ColWidthDefault)) $ tableColSpecs tc in tc {tableColSpecs = cs'} return $ useDefaultColumnWidths <$> tableComponents -- Parse a multiline table: starts with row of '-' on top, then header -- (which may be multiline), then the rows, -- which may be multiline, separated by blank lines, and -- ending with a footer (dashed line followed by blank line). multilineTable :: PandocMonad m => Bool -- ^ Headerless table -> MarkdownParser m (F TableComponents) multilineTable headless = tableWith' NormalizeHeader (multilineTableHeader headless) multilineRow blanklines tableFooter multilineTableHeader :: PandocMonad m => Bool -- ^ Headerless table -> MarkdownParser m (F [Blocks], [Alignment], [Int]) multilineTableHeader headless = try $ do unless headless $ tableSep >> notFollowedBy blankline rawContent <- if headless then return $ repeat "" else many1 $ notFollowedBy tableSep >> anyLine initSp <- nonindentSpaces dashes <- many1 (dashedLine '-') newline let (lengths, lines') = unzip dashes let indices = scanl (+) (T.length initSp) lines' -- compensate for the fact that intercolumn spaces are -- not included in the last index: let indices' = case reverse indices of [] -> [] (x:xs) -> reverse (x+1:xs) rawHeadsList <- if headless then map (:[]) . tail . splitTextByIndices (init indices') <$> lookAhead anyLine else return $ transpose $ map (tail . splitTextByIndices (init indices')) rawContent let aligns = zipWith alignType rawHeadsList lengths let rawHeads = if headless then [] else map (T.unlines . map trim) rawHeadsList heads <- fmap sequence $ mapM (parseFromString' (mconcat <$> many plain).trim) rawHeads return (heads, aligns, indices') -- Parse a grid table: starts with row of '-' on top, then header -- (which may be grid), then the rows, -- which may be grid, separated by blank lines, and -- ending with a footer (dashed line followed by blank line). gridTable :: PandocMonad m => MarkdownParser m (F TableComponents) gridTable = gridTableWith' NormalizeHeader parseBlocks pipeBreak :: PandocMonad m => MarkdownParser m ([Alignment], [Int]) pipeBreak = try $ do nonindentSpaces openPipe <- (True <$ char '|') <|> return False first <- pipeTableHeaderPart rest <- many $ sepPipe *> pipeTableHeaderPart closePipe <- (True <$ char '|') <|> return False -- at least one pipe needed for a one-column table: guard $ not (null rest && not (openPipe || closePipe)) blankline return $ unzip (first:rest) pipeTable :: PandocMonad m => MarkdownParser m (F TableComponents) pipeTable = try $ do nonindentSpaces lookAhead nonspaceChar (heads,(aligns, seplengths)) <- (,) <$> pipeTableRow <*> pipeBreak let cellContents = parseFromString' pipeTableCell . trim let numcols = length aligns let heads' = take numcols heads lines' <- many pipeTableRow let lines'' = map (take numcols) lines' let lineWidths = map (sum . map realLength) (heads' : lines'') columns <- getOption readerColumns -- add numcols + 1 for the pipes themselves let widths = if maximumBounded (sum seplengths : lineWidths) + (numcols + 1) > columns then map (\len -> fromIntegral len / fromIntegral (sum seplengths)) seplengths else replicate (length aligns) 0.0 (headCells :: F [Blocks]) <- sequence <$> mapM cellContents heads' (rows :: F [[Blocks]]) <- sequence <$> mapM (fmap sequence . mapM cellContents) lines'' return $ toTableComponents' NormalizeHeader aligns widths <$> headCells <*> rows sepPipe :: PandocMonad m => MarkdownParser m () sepPipe = try $ do char '|' <|> char '+' notFollowedBy blankline -- parse a row, returning raw cell contents pipeTableRow :: PandocMonad m => MarkdownParser m [Text] pipeTableRow = try $ do scanForPipe skipMany spaceChar openPipe <- (True <$ char '|') <|> return False -- split into cells let chunk = void (code <|> math <|> rawHtmlInline <|> escapedChar <|> rawLaTeXInline') <|> void (noneOf "|\n\r") cells <- (snd <$> withRaw (many chunk)) `sepBy1` char '|' closePipe <- (True <$ char '|') <|> return False -- at least one pipe needed for a one-column table: guard $ not (length cells == 1 && not (openPipe || closePipe)) blankline return cells pipeTableCell :: PandocMonad m => MarkdownParser m (F Blocks) pipeTableCell = (do result <- inlines1 return $ B.plain <$> result) <|> return mempty pipeTableHeaderPart :: PandocMonad m => ParsecT Sources st m (Alignment, Int) pipeTableHeaderPart = try $ do skipMany spaceChar left <- optionMaybe (char ':') pipe <- many1 (char '-') right <- optionMaybe (char ':') skipMany spaceChar let len = length pipe + maybe 0 (const 1) left + maybe 0 (const 1) right return (case (left,right) of (Nothing,Nothing) -> AlignDefault (Just _,Nothing) -> AlignLeft (Nothing,Just _) -> AlignRight (Just _,Just _) -> AlignCenter, len) -- Succeed only if current line contains a pipe. scanForPipe :: PandocMonad m => ParsecT Sources st m () scanForPipe = do Sources inps <- getInput let ln = case inps of [] -> "" ((_,t):(_,t'):_) | T.null t -> t' ((_,t):_) -> t case T.break (\c -> c == '\n' || c == '|') ln of (_, T.uncons -> Just ('|', _)) -> return () _ -> mzero table :: PandocMonad m => MarkdownParser m (F Blocks) table = try $ do frontCaption <- option Nothing (Just <$> tableCaption) tableComponents <- (guardEnabled Ext_pipe_tables >> try (scanForPipe >> pipeTable)) <|> (guardEnabled Ext_multiline_tables >> try (multilineTable False)) <|> (guardEnabled Ext_simple_tables >> try (simpleTable True <|> simpleTable False)) <|> (guardEnabled Ext_multiline_tables >> try (multilineTable True)) <|> (guardEnabled Ext_grid_tables >> try gridTable) "table" optional blanklines caption <- case frontCaption of Nothing -> option (return mempty) tableCaption Just c -> return c return $ do caption' <- caption (TableComponents _attr _capt colspecs th tb tf) <- tableComponents return $ B.table (B.simpleCaption $ B.plain caption') colspecs th tb tf -- -- inline -- inlines :: PandocMonad m => MarkdownParser m (F Inlines) inlines = mconcat <$> many inline inlines1 :: PandocMonad m => MarkdownParser m (F Inlines) inlines1 = mconcat <$> many1 inline inline :: PandocMonad m => MarkdownParser m (F Inlines) inline = do c <- lookAhead anyChar ((case c of ' ' -> whitespace '\t' -> whitespace '\n' -> endline '`' -> code '_' -> strongOrEmph '*' -> strongOrEmph '^' -> superscript <|> inlineNote -- in this order bc ^[link](/foo)^ '[' -> note <|> cite <|> bracketedSpan <|> wikilink <|> link '!' -> image '$' -> math '~' -> strikeout <|> subscript '=' -> mark '<' -> autoLink <|> spanHtml <|> rawHtmlInline <|> ltSign '\\' -> math <|> escapedNewline <|> escapedChar <|> rawLaTeXInline' '@' -> cite <|> exampleRef '"' -> smart '\'' -> smart '\8216' -> smart '\145' -> smart '\8220' -> smart '\147' -> smart '-' -> smart '.' -> smart '&' -> return . B.singleton <$> charRef ':' -> emoji _ -> mzero) <|> bareURL <|> str <|> symbol) "inline" escapedChar' :: PandocMonad m => MarkdownParser m Char escapedChar' = try $ do char '\\' (guardEnabled Ext_all_symbols_escapable >> satisfy (not . isAlphaNum)) <|> (guardEnabled Ext_angle_brackets_escapable >> oneOf "\\`*_{}[]()>#+-.!~\"<>") <|> oneOf "\\`*_{}[]()>#+-.!" escapedNewline :: PandocMonad m => MarkdownParser m (F Inlines) escapedNewline = do guardEnabled Ext_escaped_line_breaks try $ do char '\\' lookAhead (char '\n') -- don't consume the newline (see #3730) return $ return B.linebreak escapedChar :: PandocMonad m => MarkdownParser m (F Inlines) escapedChar = do result <- escapedChar' case result of ' ' -> return $ return $ B.str "\160" -- "\ " is a nonbreaking space _ -> return $ return $ B.str $ T.singleton result ltSign :: PandocMonad m => MarkdownParser m (F Inlines) ltSign = do guardDisabled Ext_raw_html <|> (notFollowedByHtmlCloser >> notFollowedBy' (htmlTag isBlockTag)) char '<' return $ return $ B.str "<" -- Note that if the citations extension is enabled, example refs will be -- parsed as citations, and handled by a clause in the parser for citations, -- since we won't know whether we have an example ref until the -- whole document has been parsed. But we need this parser -- here in case citations is disabled. exampleRef :: PandocMonad m => MarkdownParser m (F Inlines) exampleRef = do guardEnabled Ext_example_lists try $ do char '@' lab <- mconcat . map T.pack <$> many (many1 alphaNum <|> try (do c <- char '_' <|> char '-' cs <- many1 alphaNum return (c:cs))) return $ do st <- askF return $ case M.lookup lab (stateExamples st) of Just n -> B.str $ tshow n Nothing -> B.str $ "@" <> lab symbol :: PandocMonad m => MarkdownParser m (F Inlines) symbol = do result <- noneOf "<\\\n\t " <|> try (do lookAhead $ char '\\' notFollowedBy' (() <$ rawTeXBlock) char '\\') return $ return $ B.str $! T.singleton result -- parses inline code, between n `s and n `s code :: PandocMonad m => MarkdownParser m (F Inlines) code = try $ do starts <- many1 (char '`') skipSpaces result <- trim . T.concat <$> manyTill ( many1Char (noneOf "`\n") <|> many1Char (char '`') <|> (char '\n' >> notFollowedBy (inList >> listStart) >> notFollowedBy' blankline >> return " ")) (try $ skipSpaces >> count (length starts) (char '`') >> notFollowedBy (char '`')) rawattr <- (Left <$> (guardEnabled Ext_raw_attribute >> try rawAttribute)) <|> (Right <$> option ("",[],[]) (guardEnabled Ext_inline_code_attributes >> try attributes)) return $ return $ case rawattr of Left syn -> B.rawInline syn $! result Right attr -> B.codeWith attr $! result math :: PandocMonad m => MarkdownParser m (F Inlines) math = (return . B.displayMath <$> (mathDisplay >>= applyMacros)) <|> (return . B.math <$> (mathInline >>= applyMacros)) <+?> (guardEnabled Ext_smart *> (return <$> apostrophe) <* notFollowedBy (space <|> satisfy isPunctuation)) -- Parses material enclosed in *s, **s, _s, or __s. -- Designed to avoid backtracking. enclosure :: PandocMonad m => Char -> MarkdownParser m (F Inlines) enclosure c = do -- we can't start an enclosure with _ if after a string and -- the intraword_underscores extension is enabled: guardDisabled Ext_intraword_underscores <|> guard (c == '*') <|> (guard =<< notAfterString) cs <- many1Char (char c) (return (B.str cs) <>) <$> whitespace <|> case T.length cs of 3 -> three c 2 -> two c mempty 1 -> one c mempty _ -> return (return $ B.str cs) ender :: PandocMonad m => Char -> Int -> MarkdownParser m () ender c n = try $ do count n (char c) guard (c == '*') <|> guardDisabled Ext_intraword_underscores <|> notFollowedBy alphaNum -- Parse inlines til you hit one c or a sequence of two cs. -- If one c, emit emph and then parse two. -- If two cs, emit strong and then parse one. -- Otherwise, emit ccc then the results. three :: PandocMonad m => Char -> MarkdownParser m (F Inlines) three c = do contents <- mconcat <$> many (notFollowedBy (ender c 1) >> inline) (ender c 3 >> updateLastStrPos >> return (B.strong . B.emph <$> contents)) <|> (ender c 2 >> updateLastStrPos >> one c (B.strong <$> contents)) <|> (ender c 1 >> updateLastStrPos >> two c (B.emph <$> contents)) <|> return (return (B.str $ T.pack [c,c,c]) <> contents) -- Parse inlines til you hit two c's, and emit strong. -- If you never do hit two cs, emit ** plus inlines parsed. two :: PandocMonad m => Char -> F Inlines -> MarkdownParser m (F Inlines) two c prefix' = do contents <- mconcat <$> many (try $ notFollowedBy (ender c 2) >> inline) (ender c 2 >> updateLastStrPos >> return (B.strong <$> (prefix' <> contents))) <|> return (return (B.str $ T.pack [c,c]) <> (prefix' <> contents)) -- Parse inlines til you hit a c, and emit emph. -- If you never hit a c, emit * plus inlines parsed. one :: PandocMonad m => Char -> F Inlines -> MarkdownParser m (F Inlines) one c prefix' = do contents <- mconcat <$> many ( (notFollowedBy (ender c 1) >> inline) <|> try (string [c,c] >> notFollowedBy (ender c 1) >> two c mempty) ) (ender c 1 >> updateLastStrPos >> return (B.emph <$> (prefix' <> contents))) <|> return (return (B.str $ T.singleton c) <> (prefix' <> contents)) strongOrEmph :: PandocMonad m => MarkdownParser m (F Inlines) strongOrEmph = enclosure '*' <|> enclosure '_' -- | Parses a list of inlines between start and end delimiters. inlinesBetween :: PandocMonad m => (Show b) => MarkdownParser m a -> MarkdownParser m b -> MarkdownParser m (F Inlines) inlinesBetween start end = trimInlinesF . mconcat <$> try (start >> many1Till inner end) where inner = innerSpace <|> (notFollowedBy' (() <$ whitespace) >> inline) innerSpace = try $ whitespace <* notFollowedBy' end strikeout :: PandocMonad m => MarkdownParser m (F Inlines) strikeout = fmap B.strikeout <$> (guardEnabled Ext_strikeout >> inlinesBetween strikeStart strikeEnd) where strikeStart = string "~~" >> lookAhead nonspaceChar >> notFollowedBy (char '~') strikeEnd = try $ string "~~" mark :: PandocMonad m => MarkdownParser m (F Inlines) mark = fmap (B.spanWith ("",["mark"],[])) <$> (guardEnabled Ext_mark >> inlinesBetween markStart markEnd) where markStart = string "==" >> lookAhead nonspaceChar >> notFollowedBy (char '=') markEnd = try $ string "==" superscript :: PandocMonad m => MarkdownParser m (F Inlines) superscript = do fmap B.superscript <$> try (do char '^' mconcat <$> (try regularSuperscript <|> try mmdShortSuperscript)) where regularSuperscript = many1Till (do guardEnabled Ext_superscript notFollowedBy spaceChar notFollowedBy newline inline) (char '^') mmdShortSuperscript = do guardEnabled Ext_short_subsuperscripts result <- T.pack <$> many1 alphaNum return $ return $ return $ B.str result subscript :: PandocMonad m => MarkdownParser m (F Inlines) subscript = do fmap B.subscript <$> try (do char '~' mconcat <$> (try regularSubscript <|> mmdShortSubscript)) where regularSubscript = many1Till (do guardEnabled Ext_subscript notFollowedBy spaceChar notFollowedBy newline inline) (char '~') mmdShortSubscript = do guardEnabled Ext_short_subsuperscripts result <- T.pack <$> many1 alphaNum return $ return $ return $ B.str result whitespace :: PandocMonad m => MarkdownParser m (F Inlines) whitespace = spaceChar >> return <$> (lb <|> regsp) "whitespace" where lb = spaceChar >> skipMany spaceChar >> option B.space (endline >> return B.linebreak) regsp = skipMany spaceChar >> return B.space nonEndline :: PandocMonad m => ParsecT Sources st m Char nonEndline = satisfy (/='\n') str :: PandocMonad m => MarkdownParser m (F Inlines) str = do !result <- mconcat <$> many1 ( T.pack <$> (many1 alphaNum) <|> "." <$ try (char '.' <* notFollowedBy (char '.')) ) updateLastStrPos (do guardEnabled Ext_smart abbrevs <- getOption readerAbbreviations if result `Set.member` abbrevs then try (do ils <- whitespace notFollowedBy (() <$ cite <|> () <$ note) -- ?? lookAhead alphaNum -- replace space after with nonbreaking space -- if softbreak, move before abbrev if possible (#4635) return $ do ils' <- ils case B.toList ils' of [Space] -> return $! (B.str result <> B.str "\160") _ -> return $! (B.str result <> ils')) <|> return (return $! B.str result) else return (return $! B.str result)) <|> return (return $! B.str result) -- an endline character that can be treated as a space, not a structural break endline :: PandocMonad m => MarkdownParser m (F Inlines) endline = try $ do newline notFollowedBy blankline getState >>= guard . stateAllowLineBreaks -- parse potential list-starts differently if in a list: notFollowedBy (inList >> listStart) guardDisabled Ext_lists_without_preceding_blankline <|> notFollowedBy listStart guardEnabled Ext_blank_before_blockquote <|> notFollowedBy emailBlockQuoteStart guardEnabled Ext_blank_before_header <|> (notFollowedBy . char =<< atxChar) -- atx header guardDisabled Ext_backtick_code_blocks <|> notFollowedBy (() <$ (lookAhead (char '`') >> codeBlockFenced)) notFollowedByHtmlCloser notFollowedByDivCloser (eof >> return mempty) <|> (guardEnabled Ext_hard_line_breaks >> return (return B.linebreak)) <|> (guardEnabled Ext_ignore_line_breaks >> return mempty) <|> (skipMany spaceChar >> return (return B.softbreak)) -- -- links -- -- a reference label for a link reference :: PandocMonad m => MarkdownParser m (F Inlines, Text) reference = do guardDisabled Ext_footnotes <|> notFollowedBy' (string "[^") withRaw $ trimInlinesF <$> inlinesInBalancedBrackets parenthesizedChars :: PandocMonad m => MarkdownParser m Text parenthesizedChars = do result <- charsInBalanced '(' ')' litChar return $ "(" <> result <> ")" -- source for a link, with optional title source :: PandocMonad m => MarkdownParser m (Text, Text) source = do char '(' skipSpaces let urlChunk = try parenthesizedChars <|> (notFollowedBy (oneOf " )") >> litChar) <|> try (many1Char spaceChar <* notFollowedBy (oneOf "\"')")) let sourceURL = T.unwords . T.words . T.concat <$> many urlChunk let betweenAngles = try $ char '<' >> mconcat <$> (manyTill litChar (char '>')) src <- try betweenAngles <|> sourceURL tit <- option "" $ try $ spnl >> linkTitle skipSpaces char ')' return (escapeURI $ trimr src, tit) linkTitle :: PandocMonad m => MarkdownParser m Text linkTitle = quotedTitle '"' <|> quotedTitle '\'' wikilink :: PandocMonad m => MarkdownParser m (F Inlines) wikilink = (guardEnabled Ext_wikilinks_title_after_pipe *> wikilink' swap) <|> (guardEnabled Ext_wikilinks_title_before_pipe *> wikilink' id) where swap (a, b) = (b, a) wikilink' order = try $ do string "[[" notFollowedBy' (char '[') raw <- many1TillChar (noneOf "\n\r\f\t") (try $ string "]]") let (title, url) = case T.break (== '|') raw of (before, "") -> (before, before) (before, after) -> order (before, T.drop 1 after) return . pure . B.link url "wikilink" $ B.str title link :: PandocMonad m => MarkdownParser m (F Inlines) link = try $ do st <- getState guard $ stateAllowLinks st setState $ st{ stateAllowLinks = False } (lab,raw) <- reference setState $ st{ stateAllowLinks = True } regLink B.linkWith lab <|> referenceLink B.linkWith (lab,raw) bracketedSpan :: PandocMonad m => MarkdownParser m (F Inlines) bracketedSpan = do guardEnabled Ext_bracketed_spans try $ do (lab,_) <- reference attr <- attributes return $ wrapSpan attr <$> lab -- | Given an @Attr@ value, this returns a function to wrap the contents -- of a span. Handles special classes (@smallcaps@, @ul@, @underline@) -- and uses the respective constructors to handle them. wrapSpan :: Attr -> Inlines -> Inlines wrapSpan (ident, classes, kvs) = let (initConst, kvs') = case lookup "style" kvs of Just s | isSmallCapsFontVariant s -> let kvsNoStyle = [(k, v) | (k, v) <- kvs, k /= "style"] in (Just B.smallcaps, kvsNoStyle) _ -> (Nothing, kvs) (mConstr, remainingClasses) = foldr go (initConst, []) classes wrapInConstr c = maybe c (c .) go cls (accConstr, other) = case cls of "smallcaps" -> (Just $ wrapInConstr B.smallcaps accConstr, other) "ul" -> (Just $ wrapInConstr B.underline accConstr, other) "underline" -> (Just $ wrapInConstr B.underline accConstr, other) _ -> (accConstr, cls:other) in case (ident, remainingClasses, kvs') of ("", [], []) -> fromMaybe (B.spanWith nullAttr) mConstr attr -> wrapInConstr (B.spanWith attr) mConstr isSmallCapsFontVariant :: Text -> Bool isSmallCapsFontVariant s = T.toLower (T.filter (`notElem` [' ', '\t', ';']) s) == "font-variant:small-caps" regLink :: PandocMonad m => (Attr -> Text -> Text -> Inlines -> Inlines) -> F Inlines -> MarkdownParser m (F Inlines) regLink constructor lab = try $ do (src, tit) <- source rebase <- option False (True <$ guardEnabled Ext_rebase_relative_paths) pos <- getPosition let src' = if rebase then rebasePath pos src else src attr <- option nullAttr $ guardEnabled Ext_link_attributes >> attributes return $ constructor attr src' tit <$> lab -- a link like [this][ref] or [this][] or [this] referenceLink :: PandocMonad m => (Attr -> Text -> Text -> Inlines -> Inlines) -> (F Inlines, Text) -> MarkdownParser m (F Inlines) referenceLink constructor (lab, raw) = do sp <- (True <$ lookAhead (char ' ')) <|> return False (_,raw') <- option (mempty, "") $ lookAhead (try (do guardEnabled Ext_citations guardDisabled Ext_spaced_reference_links <|> spnl normalCite return (mempty, ""))) <|> try ((guardDisabled Ext_spaced_reference_links <|> spnl) >> reference) when (raw' == "") $ guardEnabled Ext_shortcut_reference_links let labIsRef = raw' == "" || raw' == "[]" let key = toKey $ if labIsRef then raw else raw' parsedRaw <- parseFromString' inlines raw' fallback <- parseFromString' inlines $ dropBrackets raw implicitHeaderRefs <- option False $ True <$ guardEnabled Ext_implicit_header_references let makeFallback = do parsedRaw' <- parsedRaw fallback' <- fallback return $ B.str "[" <> fallback' <> B.str "]" <> (if sp && not (T.null raw) then B.space else mempty) <> parsedRaw' return $ do keys <- asksF stateKeys case M.lookup key keys of Nothing -> if implicitHeaderRefs then do headerKeys <- asksF stateHeaderKeys case M.lookup key headerKeys of Just ((src, tit), _) -> constructor nullAttr src tit <$> lab Nothing -> makeFallback else makeFallback Just ((src,tit), attr) -> constructor attr src tit <$> lab dropBrackets :: Text -> Text dropBrackets = dropRB . dropLB where dropRB (T.unsnoc -> Just (xs,']')) = xs dropRB xs = xs dropLB (T.uncons -> Just ('[',xs)) = xs dropLB xs = xs bareURL :: PandocMonad m => MarkdownParser m (F Inlines) bareURL = do guardEnabled Ext_autolink_bare_uris getState >>= guard . stateAllowLinks try $ do (cls, (orig, src)) <- (("uri",) <$> uri) <|> (("email",) <$> emailAddress) notFollowedBy $ try $ spaces >> htmlTag (~== TagClose ("a" :: Text)) return $ return $ B.linkWith ("",[cls],[]) src "" (B.str orig) autoLink :: PandocMonad m => MarkdownParser m (F Inlines) autoLink = try $ do getState >>= guard . stateAllowLinks char '<' (cls, (orig, src)) <- (("uri",) <$> uri) <|> (("email",) <$> emailAddress) -- in rare cases, something may remain after the uri parser -- is finished, because the uri parser tries to avoid parsing -- final punctuation. for example: in ``, -- the URI parser will stop before the dashes. extra <- fromEntities <$> manyTillChar nonspaceChar (char '>') attr <- option ("", [cls], []) $ try $ guardEnabled Ext_link_attributes >> attributes return $ return $ B.linkWith attr (src <> escapeURI extra) "" (B.str $ orig <> extra) -- | Rebase a relative path, by adding the (relative) directory -- of the containing source position. Absolute links and URLs -- are untouched. rebasePath :: SourcePos -> Text -> Text rebasePath pos path = do let fp = sourceName pos isFragment = T.take 1 path == "#" path' = T.unpack path isAbsolutePath = Posix.isAbsolute path' || Windows.isAbsolute path' in if T.null path || isFragment || isAbsolutePath || isURI path then path else case takeDirectory fp of "" -> path "." -> path d -> T.pack d <> "/" <> path image :: PandocMonad m => MarkdownParser m (F Inlines) image = try $ do char '!' (lab,raw) <- reference defaultExt <- getOption readerDefaultImageExtension let constructor attr' src = case takeExtension (T.unpack src) of "" -> B.imageWith attr' (T.pack $ addExtension (T.unpack src) $ T.unpack defaultExt) _ -> B.imageWith attr' src regLink constructor lab <|> referenceLink constructor (lab,raw) note :: PandocMonad m => MarkdownParser m (F Inlines) note = try $ do guardEnabled Ext_footnotes ref <- noteMarker updateState $ \st -> st{ stateNoteRefs = Set.insert ref (stateNoteRefs st) , stateNoteNumber = stateNoteNumber st + 1 } noteNum <- stateNoteNumber <$> getState return $ do notes <- asksF stateNotes' case M.lookup ref notes of Nothing -> return $ B.str $ "[^" <> ref <> "]" Just (_pos, contents) -> do st <- askF -- process the note in a context that doesn't resolve -- notes, to avoid infinite looping with notes inside -- notes: let contents' = runF contents st{ stateNotes' = M.empty } let addCitationNoteNum c@Citation{} = c{ citationNoteNum = noteNum } let adjustCite (Cite cs ils) = Cite (map addCitationNoteNum cs) ils adjustCite x = x return $ B.note $ walk adjustCite contents' inlineNote :: PandocMonad m => MarkdownParser m (F Inlines) inlineNote = do guardEnabled Ext_inline_notes try $ do char '^' updateState $ \st -> st{ stateInNote = True , stateNoteNumber = stateNoteNumber st + 1 } contents <- inlinesInBalancedBrackets updateState $ \st -> st{ stateInNote = False } return $ B.note . B.para <$> contents rawLaTeXInline' :: PandocMonad m => MarkdownParser m (F Inlines) rawLaTeXInline' = do guardEnabled Ext_raw_tex notFollowedBy' rawConTeXtEnvironment try $ do s <- rawLaTeXInline return $ return $ B.rawInline "tex" s -- "tex" because it might be context rawConTeXtEnvironment :: PandocMonad m => ParsecT Sources st m Text rawConTeXtEnvironment = try $ do string "\\start" completion <- inBrackets (letter <|> digit <|> spaceChar) <|> many1Char letter contents <- manyTill (rawConTeXtEnvironment <|> countChar 1 anyChar) (try $ string "\\stop" >> textStr completion) return $ "\\start" <> completion <> T.concat contents <> "\\stop" <> completion inBrackets :: PandocMonad m => ParsecT Sources st m Char -> ParsecT Sources st m Text inBrackets parser = do char '[' contents <- manyChar parser char ']' return $ "[" <> contents <> "]" spanHtml :: PandocMonad m => MarkdownParser m (F Inlines) spanHtml = do guardEnabled Ext_native_spans try $ do (TagOpen _ attrs, _) <- htmlTag (~== TagOpen ("span" :: Text) []) contents <- mconcat <$> manyTill inline (htmlTag (~== TagClose ("span" :: Text))) let ident = fromMaybe "" $ lookup "id" attrs let classes = maybe [] T.words $ lookup "class" attrs let keyvals = [(k,v) | (k,v) <- attrs, k /= "id" && k /= "class"] return $ wrapSpan (ident, classes, keyvals) <$> contents divHtml :: PandocMonad m => MarkdownParser m (F Blocks) divHtml = do guardEnabled Ext_native_divs try $ do (TagOpen _ attrs, rawtag) <- htmlTag (~== TagOpen ("div" :: Text) []) -- we set stateInHtmlBlock so that closing tags that can be either block -- or inline will not be parsed as inline tags oldInHtmlBlock <- stateInHtmlBlock <$> getState updateState $ \st -> st{ stateInHtmlBlock = Just "div" } bls <- option "" (blankline >> option "" blanklines) contents <- mconcat <$> many (notFollowedBy' (htmlTag (~== TagClose ("div" :: Text))) >> block) closed <- option False (True <$ htmlTag (~== TagClose ("div" :: Text))) if closed then do updateState $ \st -> st{ stateInHtmlBlock = oldInHtmlBlock } let ident = fromMaybe "" $ lookup "id" attrs let classes = maybe [] T.words $ lookup "class" attrs let keyvals = [(k,v) | (k,v) <- attrs, k /= "id" && k /= "class"] return $ B.divWith (ident, classes, keyvals) <$> contents else -- avoid backtracing return $ return (B.rawBlock "html" (rawtag <> bls)) <> contents divFenced :: PandocMonad m => MarkdownParser m (F Blocks) divFenced = do guardEnabled Ext_fenced_divs try $ do string ":::" skipMany (char ':') skipMany spaceChar attribs <- attributes <|> ((\x -> ("",[x],[])) <$> many1Char nonspaceChar) skipMany spaceChar skipMany (char ':') blankline updateState $ \st -> st{ stateFencedDivLevel = stateFencedDivLevel st + 1 } bs <- mconcat <$> manyTill block divFenceEnd updateState $ \st -> st{ stateFencedDivLevel = stateFencedDivLevel st - 1 } return $ B.divWith attribs <$> bs divFenceEnd :: PandocMonad m => MarkdownParser m () divFenceEnd = try $ do string ":::" skipMany (char ':') blanklines return () rawHtmlInline :: PandocMonad m => MarkdownParser m (F Inlines) rawHtmlInline = do guardEnabled Ext_raw_html inHtmlBlock <- stateInHtmlBlock <$> getState let isCloseBlockTag t = case inHtmlBlock of Just t' -> t ~== TagClose t' Nothing -> False mdInHtml <- option False $ ( guardEnabled Ext_markdown_in_html_blocks <|> guardEnabled Ext_markdown_attribute ) >> return True (_,result) <- htmlTag $ if mdInHtml then (\x -> isInlineTag x && not (isCloseBlockTag x)) else not . isTextTag return $ return $ B.rawInline "html" result -- Emoji emojiChars :: [Char] emojiChars = ['a'..'z'] ++ ['0'..'9'] ++ ['_','+','-'] emoji :: PandocMonad m => MarkdownParser m (F Inlines) emoji = do guardEnabled Ext_emoji try $ do char ':' emojikey <- many1Char (oneOf emojiChars) char ':' case emojiToInline emojikey of Just i -> return (return $ B.singleton i) Nothing -> mzero -- Citations cite :: PandocMonad m => MarkdownParser m (F Inlines) cite = do guardEnabled Ext_citations -- We only use stateNoteNumber for assigning citationNoteNum, -- so we just assume that all citations produce notes. -- citationNoteNum doesn't affect non-note styles. inNote <- stateInNote <$> getState unless inNote $ updateState $ \st -> st{ stateNoteNumber = stateNoteNumber st + 1 } textualCite <|> do (cs, raw) <- withRaw normalCite return $ flip B.cite (B.text raw) <$> cs textualCite :: PandocMonad m => MarkdownParser m (F Inlines) textualCite = try $ do (suppressAuthor, key) <- citeKey True -- If this is a reference to an earlier example list item, -- then don't parse it as a citation. If the example list -- item comes later, we'll parse it here and figure out in -- the runF stage if it's a citation. But it helps with -- issue #6836 to filter out known example list references -- at this stage, so that we don't increment stateNoteNumber. getState >>= guard . isNothing . M.lookup key . stateExamples noteNum <- stateNoteNumber <$> getState let first = Citation{ citationId = key , citationPrefix = [] , citationSuffix = [] , citationMode = if suppressAuthor then SuppressAuthor else AuthorInText , citationNoteNum = noteNum , citationHash = 0 } (do -- parse [braced] material after author-in-text cite (cs, raw) <- withRaw $ (fmap (first:) <$> try (spnl *> normalCite)) <|> bareloc first let (spaces',raw') = T.span isSpace raw spc | T.null spaces' = mempty | otherwise = B.space lab <- parseFromString' inlines $ dropBrackets raw' fallback <- referenceLink B.linkWith (lab,raw') -- undo any incrementing of stateNoteNumber from last step: updateState $ \st -> st{ stateNoteNumber = noteNum } return $ do fallback' <- fallback cs' <- cs return $ case B.toList fallback' of Link{}:_ -> B.cite [first] (B.str $ "@" <> key) <> spc <> fallback' _ -> B.cite cs' (B.text $ "@" <> key <> " " <> raw)) <|> -- no braced material return (do st <- askF return $ case M.lookup key (stateExamples st) of Just n -> B.str $ tshow n _ -> B.cite [first] $ B.str $ "@" <> key) bareloc :: PandocMonad m => Citation -> MarkdownParser m (F [Citation]) bareloc c = try $ do spnl char '[' notFollowedBy $ char '^' suff <- suffix rest <- option (return []) $ try $ char ';' >> spnl >> citeList spnl char ']' notFollowedBy $ oneOf "[(" return $ do suff' <- suff rest' <- rest return $ c{ citationSuffix = B.toList suff' } : rest' normalCite :: PandocMonad m => MarkdownParser m (F [Citation]) normalCite = try $ do char '[' spnl citations <- citeList spnl char ']' notFollowedBy (oneOf "{([") -- not a link or a bracketed span return citations suffix :: PandocMonad m => MarkdownParser m (F Inlines) suffix = try $ do hasSpace <- option False (notFollowedBy nonspaceChar >> return True) spnl rest <- trimInlinesF . mconcat <$> many (notFollowedBy (oneOf ";]") >> inline) return $ if hasSpace then (B.space <>) <$> rest else rest prefix :: PandocMonad m => MarkdownParser m (F Inlines) prefix = trimInlinesF . mconcat <$> manyTill (notFollowedBy (char ';') >> inline) (char ']' <|> lookAhead (try $ do optional (try (char ';' >> spnl)) citeKey True return ']')) citeList :: PandocMonad m => MarkdownParser m (F [Citation]) citeList = fmap sequence $ sepBy1 citation (try $ char ';' >> spnl) citation :: PandocMonad m => MarkdownParser m (F Citation) citation = try $ do pref <- prefix (suppress_author, key) <- citeKey True suff <- suffix noteNum <- stateNoteNumber <$> getState return $ do x <- pref y <- suff return Citation{ citationId = key , citationPrefix = B.toList x , citationSuffix = B.toList y , citationMode = if suppress_author then SuppressAuthor else NormalCitation , citationNoteNum = noteNum , citationHash = 0 } smart :: PandocMonad m => MarkdownParser m (F Inlines) smart = do guardEnabled Ext_smart doubleQuoted <|> singleQuoted <|> (return <$> doubleCloseQuote) <|> (return <$> apostrophe) <|> (return <$> dash) <|> (return <$> ellipses) singleQuoted :: PandocMonad m => MarkdownParser m (F Inlines) singleQuoted = do singleQuoteStart (try (withQuoteContext InSingleQuote $ fmap B.singleQuoted . trimInlinesF . mconcat <$> many1Till inline singleQuoteEnd)) <|> (return (return (B.str "\8217"))) -- doubleQuoted will handle regular double-quoted sections, as well -- as dialogues with an open double-quote without a close double-quote -- in the same paragraph. doubleQuoted :: PandocMonad m => MarkdownParser m (F Inlines) doubleQuoted = do doubleQuoteStart (try (withQuoteContext InDoubleQuote $ fmap B.doubleQuoted . trimInlinesF . mconcat <$> many1Till inline doubleQuoteEnd)) <|> (return (return (B.str "\8220"))) pandoc-3.1.3/src/Text/Pandoc/Readers/MediaWiki.hs0000644000000000000000000006266707346545000017677 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Readers.MediaWiki Copyright : Copyright (C) 2012-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Conversion of mediawiki text to 'Pandoc' document. -} {- TODO: _ correctly handle tables within tables _ parse templates? -} module Text.Pandoc.Readers.MediaWiki ( readMediaWiki ) where import Control.Monad import Control.Monad.Except (throwError) import Data.Char (isAscii, isDigit, isLetter, isSpace) import qualified Data.Foldable as F import Data.List (intersperse) import Data.Maybe (fromMaybe, maybeToList) import Data.Sequence (ViewL (..), viewl, (<|)) import qualified Data.Set as Set import Data.Text (Text) import qualified Data.Text as T import Text.HTML.TagSoup import Text.Pandoc.Builder (Blocks, Inlines, trimInlines) import qualified Text.Pandoc.Builder as B import Text.Pandoc.Class.PandocMonad (PandocMonad (..)) import Text.Pandoc.Definition import Text.Pandoc.Logging import Text.Pandoc.Options import Text.Pandoc.Parsing hiding (tableCaption) import Text.Pandoc.Readers.HTML (htmlTag, isBlockTag, isCommentTag, toAttr) import Text.Pandoc.Shared (safeRead, stringify, stripTrailingNewlines, trim, splitTextBy, tshow, formatCode) import Text.Pandoc.XML (fromEntities) -- | Read mediawiki from an input string and return a Pandoc document. readMediaWiki :: (PandocMonad m, ToSources a) => ReaderOptions -> a -> m Pandoc readMediaWiki opts s = do let sources = toSources s parsed <- readWithM parseMediaWiki MWState{ mwOptions = opts , mwMaxNestingLevel = 4 , mwNextLinkNumber = 1 , mwCategoryLinks = [] , mwIdentifierList = Set.empty , mwLogMessages = [] , mwInTT = False } sources case parsed of Right result -> return result Left e -> throwError e data MWState = MWState { mwOptions :: ReaderOptions , mwMaxNestingLevel :: Int , mwNextLinkNumber :: Int , mwCategoryLinks :: [Inlines] , mwIdentifierList :: Set.Set Text , mwLogMessages :: [LogMessage] , mwInTT :: Bool } type MWParser m = ParsecT Sources MWState m instance HasReaderOptions MWState where extractReaderOptions = mwOptions instance HasIdentifierList MWState where extractIdentifierList = mwIdentifierList updateIdentifierList f st = st{ mwIdentifierList = f $ mwIdentifierList st } instance HasLogMessages MWState where addLogMessage m s = s{ mwLogMessages = m : mwLogMessages s } getLogMessages = reverse . mwLogMessages -- -- auxiliary functions -- specialChars :: [Char] specialChars = "'[]<=&*{}|\":\\" spaceChars :: [Char] spaceChars = " \n\t" sym :: PandocMonad m => Text -> MWParser m () sym s = () <$ try (string $ T.unpack s) newBlockTags :: [Text] newBlockTags = ["haskell","syntaxhighlight","source","gallery","references"] isBlockTag' :: Tag Text -> Bool isBlockTag' tag@(TagOpen t _) = (isBlockTag tag || t `elem` newBlockTags) && t `notElem` eitherBlockOrInline isBlockTag' (TagClose "ref") = True -- needed so 'special' doesn't parse it isBlockTag' tag@(TagClose t) = (isBlockTag tag || t `elem` newBlockTags) && t `notElem` eitherBlockOrInline isBlockTag' tag = isBlockTag tag isInlineTag' :: Tag Text -> Bool isInlineTag' (TagComment _) = True isInlineTag' (TagClose "ref") = False -- see below inlineTag isInlineTag' t = not (isBlockTag' t) eitherBlockOrInline :: [Text] eitherBlockOrInline = ["applet", "button", "del", "iframe", "ins", "map", "area", "object"] htmlComment :: PandocMonad m => MWParser m () htmlComment = () <$ htmlTag isCommentTag inlinesInTags :: PandocMonad m => Text -> MWParser m Inlines inlinesInTags tag = try $ do (_,raw) <- htmlTag (~== TagOpen tag []) if T.any (== '/') raw -- self-closing tag then return mempty else trimInlines . mconcat <$> manyTill inline (htmlTag (~== TagClose tag)) blocksInTags :: PandocMonad m => Text -> MWParser m Blocks blocksInTags tag = try $ do (_,raw) <- htmlTag (~== TagOpen tag []) let closer = if tag == "li" then htmlTag (~== TagClose ("li" :: Text)) <|> lookAhead ( htmlTag (~== TagOpen ("li" :: Text) []) <|> htmlTag (~== TagClose ("ol" :: Text)) <|> htmlTag (~== TagClose ("ul" :: Text))) else htmlTag (~== TagClose tag) if T.any (== '/') raw -- self-closing tag then return mempty else mconcat <$> manyTill block closer textInTags :: PandocMonad m => Text -> MWParser m Text textInTags tag = try $ do (_,raw) <- htmlTag (~== TagOpen tag []) if T.any (== '/') raw -- self-closing tag then return "" else T.pack <$> manyTill anyChar (htmlTag (~== TagClose tag)) -- -- main parser -- parseMediaWiki :: PandocMonad m => MWParser m Pandoc parseMediaWiki = do bs <- mconcat <$> many block spaces eof categoryLinks <- reverse . mwCategoryLinks <$> getState let categories = if null categoryLinks then mempty else B.para $ mconcat $ intersperse B.space categoryLinks reportLogMessages return $ B.doc $ bs <> categories -- -- block parsers -- block :: PandocMonad m => MWParser m Blocks block = do res <- mempty <$ skipMany1 blankline <|> table <|> header <|> hrule <|> orderedList <|> bulletList <|> definitionList <|> mempty <$ try (spaces *> htmlComment) <|> preformatted <|> blockTag <|> (B.rawBlock "mediawiki" <$> template) <|> para trace (T.take 60 $ tshow $ B.toList res) return res para :: PandocMonad m => MWParser m Blocks para = do contents <- trimInlines . mconcat <$> many1 inline if F.all (==Space) contents then return mempty else case B.toList contents of -- For the MediaWiki format all images are considered figures [Image attr figureCaption (src, title)] -> return $ B.simpleFigureWith attr (B.fromList figureCaption) src title _ -> return $ B.para contents table :: PandocMonad m => MWParser m Blocks table = do tableStart styles <- option [] $ parseAttrs <* skipMany spaceChar <* optional (char '|') skipMany spaceChar optional $ template >> skipMany spaceChar optional blanklines let tableWidth = case lookup "width" styles of Just w -> fromMaybe 1.0 $ parseWidth w Nothing -> 1.0 caption <- option mempty tableCaption optional rowsep hasheader <- option False $ True <$ lookAhead (skipSpaces *> char '!') (cellspecs',hdr) <- unzip <$> tableRow let widths = map (tableWidth *) cellspecs' let restwidth = tableWidth - sum widths let zerocols = length $ filter (==0.0) widths let defaultwidth = if zerocols == 0 || zerocols == length widths then ColWidthDefault else ColWidth $ restwidth / fromIntegral zerocols let widths' = map (\w -> if w > 0 then ColWidth w else defaultwidth) widths let cellspecs = zip (calculateAlignments hdr) widths' rows' <- many $ try $ rowsep *> (map snd <$> tableRow) optional blanklines tableEnd let (headers,rows) = if hasheader then (hdr, rows') else ([], hdr:rows') let toRow = Row nullAttr toHeaderRow l = [toRow l | not (null l)] return $ B.table (B.simpleCaption $ B.plain caption) cellspecs (TableHead nullAttr $ toHeaderRow headers) [TableBody nullAttr 0 [] $ map toRow rows] (TableFoot nullAttr []) calculateAlignments :: [Cell] -> [Alignment] calculateAlignments = map cellAligns where cellAligns :: Cell -> Alignment cellAligns (Cell _ align _ _ _) = align parseAttrs :: PandocMonad m => MWParser m [(Text,Text)] parseAttrs = many1 parseAttr parseAttr :: PandocMonad m => MWParser m (Text, Text) parseAttr = try $ do skipMany spaceChar k <- many1Char letter skipMany spaceChar char '=' skipMany spaceChar v <- (char '"' >> many1TillChar (satisfy (/='\n')) (char '"')) <|> many1Char (satisfy $ \c -> not (isSpace c) && c /= '|') return (k,v) tableStart :: PandocMonad m => MWParser m () tableStart = try $ guardColumnOne *> skipSpaces *> sym "{|" tableEnd :: PandocMonad m => MWParser m () tableEnd = try $ guardColumnOne *> skipSpaces *> sym "|}" rowsep :: PandocMonad m => MWParser m () rowsep = try $ guardColumnOne *> skipSpaces *> sym "|-" <* many (char '-') <* optional parseAttrs <* skipSpaces <* skipMany htmlComment <* blanklines cellsep :: PandocMonad m => MWParser m () cellsep = try $ do col <- sourceColumn <$> getPosition skipSpaces let pipeSep = do char '|' notFollowedBy (oneOf "-}+") if col == 1 then optional (char '|') else void (char '|') let exclSep = do char '!' if col == 1 then optional (char '!') else void (char '!') pipeSep <|> exclSep tableCaption :: PandocMonad m => MWParser m Inlines tableCaption = try $ do optional rowsep guardColumnOne skipSpaces sym "|+" optional (try $ parseAttrs *> skipSpaces *> char '|' *> blanklines) trimInlines . mconcat <$> many (notFollowedBy (cellsep <|> rowsep) *> inline) tableRow :: PandocMonad m => MWParser m [(Double, Cell)] tableRow = try $ skipMany htmlComment *> many tableCell tableCell :: PandocMonad m => MWParser m (Double, Cell) tableCell = try $ do cellsep skipMany spaceChar attribs <- option [] $ try $ parseAttrs <* skipSpaces <* char '|' <* notFollowedBy (char '|') skipMany spaceChar pos' <- getPosition ls <- T.concat <$> many (notFollowedBy (cellsep <|> rowsep <|> tableEnd) *> ((snd <$> withRaw table) <|> countChar 1 anyChar)) bs <- parseFromString (do setPosition pos' mconcat <$> many block) ls let align = case lookup "align" attribs of Just "left" -> AlignLeft Just "right" -> AlignRight Just "center" -> AlignCenter _ -> AlignDefault let width = case lookup "width" attribs of Just xs -> fromMaybe 0.0 $ parseWidth xs Nothing -> 0.0 let rowspan = RowSpan . fromMaybe 1 $ safeRead =<< lookup "rowspan" attribs let colspan = ColSpan . fromMaybe 1 $ safeRead =<< lookup "colspan" attribs let handledAttribs = ["align", "colspan", "rowspan"] attribs' = [ (k, v) | (k, v) <- attribs , k `notElem` handledAttribs ] return (width, B.cellWith (toAttr attribs') align rowspan colspan bs) parseWidth :: Text -> Maybe Double parseWidth s = case T.unsnoc s of Just (ds, '%') | T.all isDigit ds -> safeRead $ "0." <> ds _ -> Nothing template :: PandocMonad m => MWParser m Text template = try $ do string "{{" notFollowedBy (char '{') lookAhead $ letter <|> digit <|> char ':' let chunk = template <|> variable <|> many1Char (noneOf "{}") <|> countChar 1 anyChar contents <- manyTill chunk (try $ string "}}") return $ "{{" <> T.concat contents <> "}}" blockTag :: PandocMonad m => MWParser m Blocks blockTag = do (tag, _) <- lookAhead $ htmlTag isBlockTag' case tag of TagOpen "blockquote" _ -> B.blockQuote <$> blocksInTags "blockquote" TagOpen "pre" _ -> B.codeBlock . trimCode <$> textInTags "pre" TagOpen "syntaxhighlight" attrs -> syntaxhighlight "syntaxhighlight" attrs TagOpen "source" attrs -> syntaxhighlight "source" attrs TagOpen "haskell" _ -> B.codeBlockWith ("",["haskell"],[]) . trimCode <$> textInTags "haskell" TagOpen "gallery" _ -> blocksInTags "gallery" TagOpen "p" _ -> mempty <$ htmlTag (~== tag) TagClose "p" -> mempty <$ htmlTag (~== tag) _ -> B.rawBlock "html" . snd <$> htmlTag (~== tag) trimCode :: Text -> Text trimCode t = case T.uncons t of Just ('\n', xs) -> stripTrailingNewlines xs _ -> stripTrailingNewlines t syntaxhighlight :: PandocMonad m => Text -> [Attribute Text] -> MWParser m Blocks syntaxhighlight tag attrs = try $ do let mblang = lookup "lang" attrs let mbstart = lookup "start" attrs let mbline = lookup "line" attrs let classes = maybeToList mblang ++ maybe [] (const ["numberLines"]) mbline let kvs = maybe [] (\x -> [("startFrom",x)]) mbstart contents <- textInTags tag return $ B.codeBlockWith ("",classes,kvs) $ trimCode contents hrule :: PandocMonad m => MWParser m Blocks hrule = B.horizontalRule <$ try (string "----" *> many (char '-') *> newline) guardColumnOne :: PandocMonad m => MWParser m () guardColumnOne = getPosition >>= \pos -> guard (sourceColumn pos == 1) preformatted :: PandocMonad m => MWParser m Blocks preformatted = try $ do guardColumnOne char ' ' let endline' = B.linebreak <$ try (newline <* char ' ') let whitespace' = B.str <$> many1Char ('\160' <$ spaceChar) let spToNbsp ' ' = '\160' spToNbsp x = x let nowiki' = mconcat . intersperse B.linebreak . map B.str . T.lines . fromEntities . T.map spToNbsp <$> try (htmlTag (~== TagOpen ("nowiki" :: Text) []) *> manyTillChar anyChar (htmlTag (~== TagClose ("nowiki" :: Text)))) let inline' = whitespace' <|> endline' <|> nowiki' <|> try (notFollowedBy newline *> inline) contents <- mconcat <$> many1 inline' let spacesStr (Str xs) = T.all isSpace xs spacesStr _ = False if F.all spacesStr contents then return mempty else return $ B.para $ encode contents encode :: Inlines -> Inlines encode = formatCode nullAttr header :: PandocMonad m => MWParser m Blocks header = try $ do guardColumnOne lev <- length <$> many1 (char '=') guard $ lev <= 6 contents <- trimInlines . mconcat <$> manyTill inline (count lev $ char '=') opts <- mwOptions <$> getState attr <- (if isEnabled Ext_gfm_auto_identifiers opts then id else modifyIdentifier) <$> registerHeader nullAttr contents return $ B.headerWith attr lev contents -- See #4731: modifyIdentifier :: Attr -> Attr modifyIdentifier (ident,cl,kv) = (ident',cl,kv) where ident' = T.map (\c -> if c == '-' then '_' else c) ident bulletList :: PandocMonad m => MWParser m Blocks bulletList = B.bulletList <$> ( many1 (listItem '*') <|> (htmlTag (~== TagOpen ("ul" :: Text) []) *> spaces *> many (listItem '*' <|> li) <* optional (htmlTag (~== TagClose ("ul" :: Text)))) ) orderedList :: PandocMonad m => MWParser m Blocks orderedList = (B.orderedList <$> many1 (listItem '#')) <|> try (do (tag,_) <- htmlTag (~== TagOpen ("ol" :: Text) []) spaces items <- many (listItem '#' <|> li) optional (htmlTag (~== TagClose ("ol" :: Text))) let start = fromMaybe 1 $ safeRead $ fromAttrib "start" tag return $ B.orderedListWith (start, DefaultStyle, DefaultDelim) items) definitionList :: PandocMonad m => MWParser m Blocks definitionList = B.definitionList <$> many1 defListItem defListItem :: PandocMonad m => MWParser m (Inlines, [Blocks]) defListItem = try $ do terms <- mconcat . intersperse B.linebreak <$> many defListTerm -- we allow dd with no dt, or dt with no dd defs <- if null terms then notFollowedBy (try $ skipMany1 (char ':') >> string "") *> many1 (listItem ':') else many (listItem ':') return (terms, defs) defListTerm :: PandocMonad m => MWParser m Inlines defListTerm = do guardColumnOne char ';' skipMany spaceChar pos' <- getPosition anyLine >>= parseFromString (do setPosition pos' trimInlines . mconcat <$> many inline) listStart :: PandocMonad m => Char -> MWParser m () listStart c = char c *> notFollowedBy listStartChar listStartChar :: PandocMonad m => MWParser m Char listStartChar = oneOf "*#;:" anyListStart :: PandocMonad m => MWParser m Char anyListStart = guardColumnOne >> oneOf "*#:;" li :: PandocMonad m => MWParser m Blocks li = lookAhead (htmlTag (~== TagOpen ("li" :: Text) [])) *> (firstParaToPlain <$> blocksInTags "li") <* spaces listItem :: PandocMonad m => Char -> MWParser m Blocks listItem c = try $ do guardColumnOne extras <- many (try $ char c <* lookAhead listStartChar) if null extras then listItem' c else do skipMany spaceChar pos' <- getPosition first <- T.concat <$> manyTill listChunk newline rest <- many (try $ string extras *> lookAhead listStartChar *> (T.concat <$> manyTill listChunk newline)) contents <- parseFromString (do setPosition pos' many1 $ listItem' c) (T.unlines (first : rest)) case c of '*' -> return $ B.bulletList contents '#' -> return $ B.orderedList contents ':' -> return $ B.definitionList [(mempty, contents)] _ -> mzero -- The point of this is to handle stuff like -- * {{cite book -- | blah -- | blah -- }} -- * next list item -- which seems to be valid mediawiki. listChunk :: PandocMonad m => MWParser m Text listChunk = template <|> countChar 1 anyChar listItem' :: PandocMonad m => Char -> MWParser m Blocks listItem' c = try $ do listStart c skipMany spaceChar pos' <- getPosition first <- T.concat <$> manyTill listChunk newline rest <- many (try $ char c *> lookAhead listStartChar *> (T.concat <$> manyTill listChunk newline)) parseFromString (do setPosition pos' firstParaToPlain . mconcat <$> many1 block) $ T.unlines $ first : rest firstParaToPlain :: Blocks -> Blocks firstParaToPlain contents = case viewl (B.unMany contents) of Para xs :< ys -> B.Many $ Plain xs <| ys _ -> contents -- -- inline parsers -- inline :: PandocMonad m => MWParser m Inlines inline = whitespace <|> url <|> str <|> doubleQuotes <|> strong <|> emph <|> image <|> internalLink <|> externalLink <|> math <|> inlineTag <|> B.singleton <$> charRef <|> inlineHtml <|> (B.rawInline "mediawiki" <$> variable) <|> (B.rawInline "mediawiki" <$> template) <|> special str :: PandocMonad m => MWParser m Inlines str = B.str <$> many1Char (noneOf $ specialChars ++ spaceChars) math :: PandocMonad m => MWParser m Inlines math = (B.displayMath . trim <$> try (many1 (char ':') >> textInTags "math")) <|> (B.math . trim <$> textInTags "math") <|> (B.displayMath . trim <$> try (dmStart *> manyTillChar anyChar dmEnd)) <|> (B.math . trim <$> try (mStart *> manyTillChar (satisfy (/='\n')) mEnd)) where dmStart = string "\\[" dmEnd = try (string "\\]") mStart = string "\\(" mEnd = try (string "\\)") variable :: PandocMonad m => MWParser m Text variable = try $ do string "{{{" contents <- manyTillChar anyChar (try $ string "}}}") return $ "{{{" <> contents <> "}}}" singleParaToPlain :: Blocks -> Blocks singleParaToPlain bs = case B.toList bs of [Para ils] -> B.fromList [Plain ils] _ -> bs inlineTag :: PandocMonad m => MWParser m Inlines inlineTag = do (tag, _) <- lookAhead $ htmlTag isInlineTag' case tag of TagOpen "ref" _ -> B.note . singleParaToPlain <$> blocksInTags "ref" TagOpen "nowiki" _ -> try $ do (_,raw) <- htmlTag (~== tag) if T.any (== '/') raw then return mempty else B.text . fromEntities <$> manyTillChar anyChar (htmlTag (~== TagClose ("nowiki" :: Text))) TagOpen "br" _ -> B.linebreak <$ (htmlTag (~== TagOpen ("br" :: Text) []) -- will get /> too *> optional blankline) TagOpen "strike" _ -> B.strikeout <$> inlinesInTags "strike" TagOpen "del" _ -> B.strikeout <$> inlinesInTags "del" TagOpen "sub" _ -> B.subscript <$> inlinesInTags "sub" TagOpen "sup" _ -> B.superscript <$> inlinesInTags "sup" TagOpen "code" _ -> encode <$> inlinesInTags "code" TagOpen "tt" _ -> do inTT <- mwInTT <$> getState updateState $ \st -> st{ mwInTT = True } result <- encode <$> inlinesInTags "tt" updateState $ \st -> st{ mwInTT = inTT } return result TagOpen "hask" _ -> B.codeWith ("",["haskell"],[]) <$> textInTags "hask" _ -> B.rawInline "html" . snd <$> htmlTag (~== tag) special :: PandocMonad m => MWParser m Inlines special = B.str <$> countChar 1 (notFollowedBy' (htmlTag isBlockTag') *> oneOf specialChars) inlineHtml :: PandocMonad m => MWParser m Inlines inlineHtml = B.rawInline "html" . snd <$> htmlTag isInlineTag' whitespace :: PandocMonad m => MWParser m Inlines whitespace = B.space <$ (skipMany1 spaceChar <|> htmlComment) <|> B.softbreak <$ endline endline :: PandocMonad m => MWParser m () endline = () <$ try (newline <* notFollowedBy spaceChar <* notFollowedBy newline <* notFollowedBy' hrule <* notFollowedBy tableStart <* notFollowedBy' header <* notFollowedBy anyListStart) imageIdentifiers :: PandocMonad m => [MWParser m ()] imageIdentifiers = [sym (identifier <> ":") | identifier <- identifiers] where identifiers = ["File", "Image", "Archivo", "Datei", "Fichier", "Bild"] image :: PandocMonad m => MWParser m Inlines image = try $ do sym "[[" choice imageIdentifiers fname <- addUnderscores <$> many1Char (noneOf "|]") _ <- many imageOption dims <- try (char '|' *> sepBy (manyChar digit) (char 'x') <* string "px") <|> return [] _ <- many imageOption let kvs = case dims of [w] -> [("width", w)] [w, h] -> [("width", w), ("height", h)] _ -> [] let attr = ("", [], kvs) caption <- (B.str fname <$ sym "]]") <|> try (char '|' *> (mconcat <$> manyTill inline (sym "]]"))) return $ B.imageWith attr fname (stringify caption) caption imageOption :: PandocMonad m => MWParser m Text imageOption = try $ char '|' *> opt where opt = try (oneOfStrings [ "border", "thumbnail", "frameless" , "thumb", "upright", "left", "right" , "center", "none", "baseline", "sub" , "super", "top", "text-top", "middle" , "bottom", "text-bottom" ]) <|> try (textStr "frame") <|> try (oneOfStrings ["link=","alt=","page=","class="] <* many (noneOf "|]")) addUnderscores :: Text -> Text addUnderscores = T.intercalate "_" . splitTextBy sep where sep c = isSpace c || c == '_' internalLink :: PandocMonad m => MWParser m Inlines internalLink = try $ do sym "[[" pagename <- T.unwords . T.words <$> manyChar (noneOf "|]") label <- option (B.text pagename) $ char '|' *> ( (mconcat <$> many1 (notFollowedBy (char ']') *> inline)) -- the "pipe trick" -- [[Help:Contents|] -> "Contents" <|> return (B.text $ T.drop 1 $ T.dropWhile (/=':') pagename) ) sym "]]" linktrail <- B.text <$> manyChar (satisfy (\c -> isAscii c && isLetter c)) let link = B.link (addUnderscores pagename) "wikilink" (label <> linktrail) if "Category:" `T.isPrefixOf` pagename then do updateState $ \st -> st{ mwCategoryLinks = link : mwCategoryLinks st } return mempty else return link externalLink :: PandocMonad m => MWParser m Inlines externalLink = try $ do char '[' (_, src) <- uri lab <- try (trimInlines . mconcat <$> (skipMany1 spaceChar *> manyTill inline (char ']'))) <|> do char ']' num <- mwNextLinkNumber <$> getState updateState $ \st -> st{ mwNextLinkNumber = num + 1 } return $ B.str $ tshow num return $ B.link src "" lab url :: PandocMonad m => MWParser m Inlines url = do (orig, src) <- uri return $ B.link src "" (B.str orig) -- | Parses a list of inlines between start and end delimiters. inlinesBetween :: (PandocMonad m, Show b) => MWParser m a -> MWParser m b -> MWParser m Inlines inlinesBetween start end = trimInlines . mconcat <$> try (start >> many1Till inline end) emph :: PandocMonad m => MWParser m Inlines emph = B.emph <$> inlinesBetween start end where start = sym "''" end = try $ notFollowedBy' (() <$ strong) >> sym "''" strong :: PandocMonad m => MWParser m Inlines strong = B.strong <$> inlinesBetween start end where start = sym "'''" end = sym "'''" doubleQuotes :: PandocMonad m => MWParser m Inlines doubleQuotes = do guardEnabled Ext_smart inTT <- mwInTT <$> getState guard (not inTT) B.doubleQuoted <$> inlinesBetween openDoubleQuote closeDoubleQuote where openDoubleQuote = sym "\"" >> lookAhead nonspaceChar closeDoubleQuote = try $ sym "\"" �������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/Metadata.hs����������������������������������������������������0000644�0000000�0000000�00000013624�07346545000�017541� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {- | Module : Text.Pandoc.Readers.Metadata Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Parse YAML/JSON metadata to 'Pandoc' 'Meta'. -} module Text.Pandoc.Readers.Metadata ( yamlBsToMeta, yamlBsToRefs, yamlMetaBlock, yamlMap ) where import Control.Monad.Except (throwError) import qualified Data.ByteString as B import qualified Data.Map as M import Data.Text (Text) import qualified Data.Text as T import qualified Data.Yaml as Yaml import Data.Aeson (Value(..), Object, Result(..), fromJSON, (.:?), withObject) import Data.Aeson.Types (parse) import Text.Pandoc.Shared (tshow, blocksToInlines) import Text.Pandoc.Class.PandocMonad (PandocMonad (..)) import Text.Pandoc.Definition import Text.Pandoc.Error import Text.Pandoc.Parsing hiding (tableWith, parse) import qualified Text.Pandoc.UTF8 as UTF8 yamlBsToMeta :: (PandocMonad m, HasLastStrPosition st) => ParsecT Sources st m (Future st MetaValue) -> B.ByteString -> ParsecT Sources st m (Future st Meta) yamlBsToMeta pMetaValue bstr = do case Yaml.decodeAllEither' bstr of Right (Object o:_) -> fmap Meta <$> yamlMap pMetaValue o Right [] -> return . return $ mempty Right [Null] -> return . return $ mempty Right _ -> Prelude.fail "expected YAML object" Left err' -> do throwError $ PandocParseError $ T.pack $ Yaml.prettyPrintParseException err' -- Returns filtered list of references. yamlBsToRefs :: (PandocMonad m, HasLastStrPosition st) => ParsecT Sources st m (Future st MetaValue) -> (Text -> Bool) -- ^ Filter for id -> B.ByteString -> ParsecT Sources st m (Future st [MetaValue]) yamlBsToRefs pMetaValue idpred bstr = case Yaml.decodeAllEither' bstr of Right (Object m : _) -> do let isSelected (String t) = idpred t isSelected _ = False let hasSelectedId (Object o) = case parse (withObject "ref" (.:? "id")) (Object o) of Success (Just id') -> isSelected id' _ -> False hasSelectedId _ = False case parse (withObject "metadata" (.:? "references")) (Object m) of Success (Just refs) -> sequence <$> mapM (yamlToMetaValue pMetaValue) (filter hasSelectedId refs) _ -> return $ return [] Right _ -> return . return $ [] Left err' -> do throwError $ PandocParseError $ T.pack $ Yaml.prettyPrintParseException err' normalizeMetaValue :: (PandocMonad m, HasLastStrPosition st) => ParsecT Sources st m (Future st MetaValue) -> Text -> ParsecT Sources st m (Future st MetaValue) normalizeMetaValue pMetaValue x = -- Note: a standard quoted or unquoted YAML value will -- not end in a newline, but a "block" set off with -- `|` or `>` will. if "\n" `T.isSuffixOf` (T.dropWhileEnd isSpaceChar x) -- see #6823 then parseFromString' pMetaValue (x <> "\n\n") else try (parseFromString' asInlines x') -- see #8358 <|> -- see #8465 parseFromString' asInlines (x' <> "\n\n") where x' = T.dropWhile isSpaceOrNlChar x asInlines = fmap b2i <$> pMetaValue b2i (MetaBlocks bs) = MetaInlines (blocksToInlines bs) b2i y = y isSpaceChar ' ' = True isSpaceChar '\t' = True isSpaceChar _ = False isSpaceOrNlChar '\r' = True isSpaceOrNlChar '\n' = True isSpaceOrNlChar c = isSpaceChar c yamlToMetaValue :: (PandocMonad m, HasLastStrPosition st) => ParsecT Sources st m (Future st MetaValue) -> Value -> ParsecT Sources st m (Future st MetaValue) yamlToMetaValue pMetaValue v = case v of String t -> normalizeMetaValue pMetaValue t Bool b -> return $ return $ MetaBool b Number d -> normalizeMetaValue pMetaValue $ case fromJSON v of Success (x :: Int) -> tshow x _ -> tshow d Null -> return $ return $ MetaString "" Array{} -> do case fromJSON v of Error err' -> throwError $ PandocParseError $ T.pack err' Success xs -> fmap MetaList . sequence <$> mapM (yamlToMetaValue pMetaValue) xs Object o -> fmap MetaMap <$> yamlMap pMetaValue o yamlMap :: (PandocMonad m, HasLastStrPosition st) => ParsecT Sources st m (Future st MetaValue) -> Object -> ParsecT Sources st m (Future st (M.Map Text MetaValue)) yamlMap pMetaValue o = do case fromJSON (Object o) of Error err' -> throwError $ PandocParseError $ T.pack err' Success (m' :: M.Map Text Value) -> do let kvs = filter (not . ignorable . fst) $ M.toList m' fmap M.fromList . sequence <$> mapM toMeta kvs where ignorable t = "_" `T.isSuffixOf` t toMeta (k, v) = do fv <- yamlToMetaValue pMetaValue v return $ do v' <- fv return (k, v') -- | Parse a YAML metadata block using the supplied 'MetaValue' parser. yamlMetaBlock :: (HasLastStrPosition st, PandocMonad m) => ParsecT Sources st m (Future st MetaValue) -> ParsecT Sources st m (Future st Meta) yamlMetaBlock parser = try $ do string "---" blankline notFollowedBy blankline -- if --- is followed by a blank it's an HRULE rawYamlLines <- manyTill anyLine stopLine -- by including --- and ..., we allow yaml blocks with just comments: let rawYaml = T.unlines ("---" : (rawYamlLines ++ ["..."])) optional blanklines yamlBsToMeta parser $ UTF8.fromText rawYaml stopLine :: Monad m => ParsecT Sources st m () stopLine = try $ (string "---" <|> string "...") >> blankline >> return () ������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/Muse.hs��������������������������������������������������������0000644�0000000�0000000�00000106722�07346545000�016734� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE TupleSections #-} {-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Readers.Muse Copyright : Copyright (C) 2017-2020 Alexander Krotov License : GNU GPL, version 2 or above Maintainer : Alexander Krotov Stability : alpha Portability : portable Conversion of Muse text to 'Pandoc' document. -} {- TODO: - tag -} module Text.Pandoc.Readers.Muse (readMuse) where import Control.Monad import Control.Monad.Reader import Control.Monad.Except (throwError) import Data.Bifunctor import Data.Default import Data.List (transpose) import qualified Data.Map as M import qualified Data.Set as Set import Data.Maybe (fromMaybe, isNothing, maybeToList) import Data.Text (Text) import qualified Data.Text as T import Text.Pandoc.Builder (Blocks, Inlines, underline) import qualified Text.Pandoc.Builder as B import Text.Pandoc.Class.PandocMonad (PandocMonad (..)) import Text.Pandoc.Definition import Text.Pandoc.Logging import Text.Pandoc.Options import Text.Pandoc.Parsing import Text.Pandoc.Shared (trimr, tshow) -- | Read Muse from an input string and return a Pandoc document. readMuse :: (PandocMonad m, ToSources a) => ReaderOptions -> a -> m Pandoc readMuse opts s = do let sources = toSources s res <- flip runReaderT def $ runParserT parseMuse def{ museOptions = opts } (initialSourceName sources) sources case res of Left e -> throwError $ fromParsecError sources e Right d -> return d type F = Future MuseState data MuseState = MuseState { museMeta :: F Meta -- ^ Document metadata , museOptions :: ReaderOptions , museIdentifierList :: Set.Set Text , museLastSpacePos :: Maybe SourcePos -- ^ Position after last space or newline parsed , museLastStrPos :: Maybe SourcePos -- ^ Position after last str parsed , museLogMessages :: [LogMessage] , museNotes :: M.Map Text (SourcePos, F Blocks) } instance Default MuseState where def = MuseState { museMeta = return nullMeta , museOptions = def , museIdentifierList = Set.empty , museLastStrPos = Nothing , museLastSpacePos = Nothing , museLogMessages = [] , museNotes = M.empty } data MuseEnv = MuseEnv { museInLink :: Bool -- ^ True when parsing a link description to avoid nested links , museInPara :: Bool -- ^ True when parsing paragraph is not allowed } instance Default MuseEnv where def = MuseEnv { museInLink = False , museInPara = False } type MuseParser m = ParsecT Sources MuseState (ReaderT MuseEnv m) instance HasReaderOptions MuseState where extractReaderOptions = museOptions instance HasIdentifierList MuseState where extractIdentifierList = museIdentifierList updateIdentifierList f st = st{ museIdentifierList = f $ museIdentifierList st } instance HasLastStrPosition MuseState where setLastStrPos pos st = st{ museLastStrPos = pos } getLastStrPos st = museLastStrPos st instance HasLogMessages MuseState where addLogMessage m s = s{ museLogMessages = m : museLogMessages s } getLogMessages = reverse . museLogMessages updateLastSpacePos :: Monad m => MuseParser m () updateLastSpacePos = getPosition >>= \pos -> updateState $ \s -> s { museLastSpacePos = Just pos } -- | Parse Muse document parseMuse :: PandocMonad m => MuseParser m Pandoc parseMuse = do many directive blocks <- (:) <$> parseBlocks <*> many parseSection eof st <- getState runF (Pandoc <$> museMeta st <*> fmap B.toList (mconcat blocks)) st <$ reportLogMessages -- * Utility functions -- | Trim up to one newline from the beginning of the string. lchop :: Text -> Text lchop s = case T.uncons s of Just ('\n', xs) -> xs _ -> s -- | Trim up to one newline from the end of the string. rchop :: Text -> Text rchop s = case T.unsnoc s of Just (xs, '\n') -> xs _ -> s unindent :: Text -> Text unindent = rchop . T.intercalate "\n" . dropSpacePrefix . T.splitOn "\n" . lchop dropSpacePrefix :: [Text] -> [Text] dropSpacePrefix lns = T.drop maxIndent <$> lns where isSpaceChar c = c == ' ' || c == '\t' maxIndent = length $ takeWhile (isSpaceChar . T.head) $ takeWhile same $ T.transpose lns same t = case T.uncons t of Just (c, cs) -> T.all (== c) cs Nothing -> True atStart :: PandocMonad m => MuseParser m () atStart = do pos <- getPosition st <- getState guard $ museLastStrPos st /= Just pos noSpaceBefore :: PandocMonad m => MuseParser m () noSpaceBefore = do pos <- getPosition st <- getState guard $ museLastSpacePos st /= Just pos firstColumn :: PandocMonad m => MuseParser m () firstColumn = getPosition >>= \pos -> guard (sourceColumn pos == 1) -- * Parsers -- | Parse end-of-line, which can be either a newline or end-of-file. eol :: (Stream s m Char, UpdateSourcePos s Char) => ParsecT s st m () eol = void newline <|> eof getIndent :: PandocMonad m => MuseParser m Int getIndent = subtract 1 . sourceColumn <$ many spaceChar <*> getPosition -- ** HTML parsers openTag :: PandocMonad m => Text -> MuseParser m [(Text, Text)] openTag tag = try $ char '<' *> textStr tag *> manyTill attr (char '>') where attr = try $ (,) <$ many1 spaceChar <*> many1Char (noneOf "=\n") <* string "=\"" <*> manyTillChar (noneOf "\"") (char '"') closeTag :: PandocMonad m => Text -> MuseParser m () closeTag tag = try $ string " textStr tag *> void (char '>') -- | Convert HTML attributes to Pandoc 'Attr' htmlAttrToPandoc :: [(Text, Text)] -> Attr htmlAttrToPandoc attrs = (ident, classes, keyvals) where ident = fromMaybe "" $ lookup "id" attrs classes = maybe [] T.words $ lookup "class" attrs keyvals = [(k,v) | (k,v) <- attrs, k /= "id", k /= "class"] parseHtmlContent :: PandocMonad m => Text -- ^ Tag name -> MuseParser m (Attr, F Blocks) parseHtmlContent tag = try $ getIndent >>= \indent -> (,) <$> fmap htmlAttrToPandoc (openTag tag) <* manyTill spaceChar eol <*> allowPara (parseBlocksTill (try $ indentWith indent *> closeTag tag)) <* manyTill spaceChar eol -- closing tag must be followed by optional whitespace and newline -- ** Directive parsers -- While not documented, Emacs Muse allows "-" in directive name parseDirectiveKey :: PandocMonad m => MuseParser m Text parseDirectiveKey = char '#' *> manyChar (letter <|> char '-') parseEmacsDirective :: PandocMonad m => MuseParser m (Text, F Inlines) parseEmacsDirective = (,) <$> parseDirectiveKey <* spaceChar <*> (trimInlinesF . mconcat <$> manyTill inline' eol) parseAmuseDirective :: PandocMonad m => MuseParser m (Text, F Inlines) parseAmuseDirective = (,) <$> parseDirectiveKey <* many1 spaceChar <*> (trimInlinesF . mconcat <$> many1Till inline endOfDirective) <* many blankline where endOfDirective = lookAhead $ eof <|> try (newline *> (void blankline <|> void parseDirectiveKey)) directive :: PandocMonad m => MuseParser m () directive = do ext <- getOption readerExtensions (key, value) <- if extensionEnabled Ext_amuse ext then parseAmuseDirective else parseEmacsDirective updateState $ \st -> st { museMeta = B.setMeta (translateKey key) <$> value <*> museMeta st } where translateKey "cover" = "cover-image" translateKey x = x -- ** Block parsers allowPara :: MonadReader MuseEnv m => m a -> m a allowPara p = local (\s -> s { museInPara = False }) p -- | Parse section contents until EOF or next header parseBlocks :: PandocMonad m => MuseParser m (F Blocks) parseBlocks = try (parseEnd <|> nextSection <|> listStart <|> blockStart <|> paraStart) where nextSection = mempty <$ lookAhead headingStart parseEnd = mempty <$ eof blockStart = (B.<>) <$> (blockElements <|> emacsNoteBlock) <*> allowPara parseBlocks listStart = uncurry (B.<>) <$> allowPara (anyListUntil parseBlocks <|> amuseNoteBlockUntil parseBlocks) paraStart = do indent <- length <$> many spaceChar uncurry (B.<>) . first (p indent) <$> paraUntil parseBlocks where p indent = if indent >= 2 && indent < 6 then fmap B.blockQuote else id -- | Parse section that starts with a header parseSection :: PandocMonad m => MuseParser m (F Blocks) parseSection = ((B.<>) <$> emacsHeading <*> parseBlocks) <|> (uncurry (B.<>) <$> amuseHeadingUntil parseBlocks) parseBlocksTill :: PandocMonad m => MuseParser m a -> MuseParser m (F Blocks) parseBlocksTill end = continuation where parseEnd = mempty <$ end blockStart = (B.<>) <$> blockElements <*> allowPara continuation listStart = uncurry (B.<>) <$> allowPara (anyListUntil (parseEnd <|> continuation)) paraStart = uncurry (B.<>) <$> paraUntil (parseEnd <|> continuation) continuation = try $ parseEnd <|> listStart <|> blockStart <|> paraStart listItemContentsUntil :: PandocMonad m => Int -> MuseParser m a -> MuseParser m a -> MuseParser m (F Blocks, a) listItemContentsUntil col pre end = p where p = try listStart <|> try blockStart <|> try paraStart parsePre = (mempty,) <$> pre parseEnd = (mempty,) <$> end paraStart = do (f, (r, e)) <- paraUntil (parsePre <|> continuation <|> parseEnd) return (f B.<> r, e) blockStart = first <$> ((B.<>) <$> blockElements) <*> allowPara (parsePre <|> continuation <|> parseEnd) listStart = do (f, (r, e)) <- allowPara $ anyListUntil (parsePre <|> continuation <|> parseEnd) return (f B.<> r, e) continuation = try $ do blank <- optionMaybe blankline skipMany blankline indentWith col local (\s -> s { museInPara = museInPara s && isNothing blank }) p parseBlock :: PandocMonad m => MuseParser m (F Blocks) parseBlock = do res <- blockElements <|> para trace (T.take 60 $ tshow $ B.toList $ runF res def) return res where para = fst <$> paraUntil (try (eof <|> void (lookAhead blockElements))) blockElements :: PandocMonad m => MuseParser m (F Blocks) blockElements = (mempty <$ blankline) <|> comment <|> separator <|> pagebreak <|> example <|> exampleTag <|> literalTag <|> centerTag <|> rightTag <|> quoteTag <|> divTag <|> biblioTag <|> playTag <|> verseTag <|> lineBlock <|> museGridTable <|> table <|> commentTag -- | Parse a line comment, starting with @;@ in the first column. comment :: PandocMonad m => MuseParser m (F Blocks) comment = try $ mempty <$ firstColumn <* char ';' <* optional (spaceChar *> many (noneOf "\n")) <* eol -- | Parse a horizontal rule, consisting of 4 or more @\'-\'@ characters. separator :: PandocMonad m => MuseParser m (F Blocks) separator = try $ pure B.horizontalRule <$ string "----" <* many (char '-') <* many spaceChar <* eol -- | Parse a page break pagebreak :: PandocMonad m => MuseParser m (F Blocks) pagebreak = try $ pure (B.divWith ("", [], [("style", "page-break-before: always;")]) mempty) <$ count 6 spaceChar <* many spaceChar <* string "* * * * *" <* manyTill spaceChar eol headingStart :: PandocMonad m => MuseParser m (Text, Int) headingStart = try $ (,) <$> option "" (try (parseAnchor <* manyTill spaceChar eol)) <* firstColumn <*> fmap length (many1 $ char '*') <* spaceChar -- | Parse a single-line heading. emacsHeading :: PandocMonad m => MuseParser m (F Blocks) emacsHeading = try $ do guardDisabled Ext_amuse (anchorId, level) <- headingStart content <- trimInlinesF . mconcat <$> manyTill inline eol attr <- registerHeader (anchorId, [], []) (runF content def) return $ B.headerWith attr level <$> content -- | Parse a multi-line heading. -- It is a Text::Amuse extension, Emacs Muse does not allow heading to span multiple lines. amuseHeadingUntil :: PandocMonad m => MuseParser m a -- ^ Terminator parser -> MuseParser m (F Blocks, a) amuseHeadingUntil end = try $ do guardEnabled Ext_amuse (anchorId, level) <- headingStart (content, e) <- paraContentsUntil end attr <- registerHeader (anchorId, [], []) (runF content def) return (B.headerWith attr level <$> content, e) -- | Parse an example between @{{{@ and @}}}@. -- It is an Amusewiki extension influenced by Creole wiki, as described in @Text::Amuse@ documentation. example :: PandocMonad m => MuseParser m (F Blocks) example = try $ pure . B.codeBlock <$ string "{{{" <* many spaceChar <*> (unindent <$> manyTillChar anyChar (string "}}}")) -- | Parse an @\@ tag. exampleTag :: PandocMonad m => MuseParser m (F Blocks) exampleTag = try $ fmap pure $ B.codeBlockWith <$ many spaceChar <*> (htmlAttrToPandoc <$> openTag "example") <*> (unindent <$> manyTillChar anyChar (closeTag "example")) <* manyTill spaceChar eol -- | Parse a @\@ tag as a raw block. -- For 'RawInline' @\@ parser, see 'inlineLiteralTag'. literalTag :: PandocMonad m => MuseParser m (F Blocks) literalTag = try $ fmap pure $ B.rawBlock <$ many spaceChar <*> (fromMaybe "html" . lookup "style" <$> openTag "literal") -- FIXME: Emacs Muse inserts without style into all output formats, but we assume HTML <* manyTill spaceChar eol <*> (unindent <$> manyTillChar anyChar (closeTag "literal")) <* manyTill spaceChar eol -- | Parse @\
@ tag. -- Currently it is ignored as Pandoc cannot represent centered blocks. centerTag :: PandocMonad m => MuseParser m (F Blocks) centerTag = snd <$> parseHtmlContent "center" -- | Parse @\@ tag. -- Currently it is ignored as Pandoc cannot represent centered blocks. rightTag :: PandocMonad m => MuseParser m (F Blocks) rightTag = snd <$> parseHtmlContent "right" -- | Parse @\@ tag. quoteTag :: PandocMonad m => MuseParser m (F Blocks) quoteTag = fmap B.blockQuote . snd <$> parseHtmlContent "quote" -- | Parse @\
@ tag. -- @\
@ tag is supported by Emacs Muse, but not Amusewiki 2.025. divTag :: PandocMonad m => MuseParser m (F Blocks) divTag = do (attrs, content) <- parseHtmlContent "div" return $ B.divWith attrs <$> content -- | Parse @\@ tag, the result is the same as @\
@. -- @\@ tag is supported only in Text::Amuse mode. biblioTag :: PandocMonad m => MuseParser m (F Blocks) biblioTag = fmap (B.divWith ("", ["biblio"], [])) . snd <$ guardEnabled Ext_amuse <*> parseHtmlContent "biblio" -- | Parse @\@ tag, the result is the same as @\
@. -- @\@ tag is supported only in Text::Amuse mode. playTag :: PandocMonad m => MuseParser m (F Blocks) playTag = do guardEnabled Ext_amuse fmap (B.divWith ("", ["play"], [])) . snd <$> parseHtmlContent "play" verseLine :: PandocMonad m => MuseParser m (F Inlines) verseLine = (<>) <$> fmap pure (option mempty (B.str <$> many1Char ('\160' <$ char ' '))) <*> fmap (trimInlinesF . mconcat) (manyTill inline' eol) -- | Parse @\@ tag. verseTag :: PandocMonad m => MuseParser m (F Blocks) verseTag = try $ getIndent >>= \indent -> fmap B.lineBlock . sequence <$ openTag "verse" <* manyTill spaceChar eol <*> manyTill (indentWith indent *> verseLine) (try $ indentWith indent *> closeTag "verse") <* manyTill spaceChar eol -- | Parse @\@ tag. commentTag :: PandocMonad m => MuseParser m (F Blocks) commentTag = try $ mempty <$ many spaceChar <* openTag "comment" <* manyTill anyChar (closeTag "comment") <* manyTill spaceChar eol -- | Parse paragraph contents. paraContentsUntil :: PandocMonad m => MuseParser m a -- ^ Terminator parser -> MuseParser m (F Inlines, a) paraContentsUntil end = first (trimInlinesF . mconcat) <$> manyUntil inline (try (manyTill spaceChar eol *> local (\s -> s { museInPara = True}) end)) -- | Parse a paragraph. paraUntil :: PandocMonad m => MuseParser m a -- ^ Terminator parser -> MuseParser m (F Blocks, a) paraUntil end = do inPara <- asks museInPara guard $ not inPara first (fmap B.para) <$> paraContentsUntil end noteMarker' :: PandocMonad m => Char -> Char -> MuseParser m Text noteMarker' l r = try $ (\x y -> T.pack $ l:x:y ++ [r]) <$ char l <*> oneOf "123456789" <*> manyTill digit (char r) noteMarker :: PandocMonad m => MuseParser m Text noteMarker = noteMarker' '[' ']' <|> noteMarker' '{' '}' addNote :: PandocMonad m => Text -> SourcePos -> F Blocks -> MuseParser m () addNote ref pos content = do oldnotes <- museNotes <$> getState when (M.member ref oldnotes) (logMessage $ DuplicateNoteReference ref pos) updateState $ \s -> s{ museNotes = M.insert ref (pos, content) oldnotes } -- Amusewiki version of note -- Parsing is similar to list item, except that note marker is used instead of list marker amuseNoteBlockUntil :: PandocMonad m => MuseParser m a -> MuseParser m (F Blocks, a) amuseNoteBlockUntil end = try $ do guardEnabled Ext_amuse ref <- noteMarker pos <- getPosition void spaceChar <|> lookAhead eol (content, e) <- allowPara $ listItemContentsUntil (sourceColumn pos) (Prelude.fail "x") end addNote ref pos content return (mempty, e) -- Emacs version of note -- Notes are allowed only at the end of text, no indentation is required. emacsNoteBlock :: PandocMonad m => MuseParser m (F Blocks) emacsNoteBlock = try $ do guardDisabled Ext_amuse ref <- noteMarker pos <- getPosition content <- fmap mconcat blocksTillNote addNote ref pos content return mempty where blocksTillNote = many1Till parseBlock (eof <|> () <$ lookAhead noteMarker) -- -- Verse markup -- -- | Parse a line block indicated by @\'>\'@ characters. lineBlock :: PandocMonad m => MuseParser m (F Blocks) lineBlock = try $ getIndent >>= \indent -> fmap B.lineBlock . sequence <$> (blankVerseLine <|> nonblankVerseLine) `sepBy1'` try (indentWith indent) where blankVerseLine = try $ mempty <$ char '>' <* blankline nonblankVerseLine = try (string "> ") *> verseLine -- *** List parsers bulletListItemsUntil :: PandocMonad m => Int -- ^ Indentation -> MuseParser m a -- ^ Terminator parser -> MuseParser m ([F Blocks], a) bulletListItemsUntil indent end = try $ do char '-' void spaceChar <|> lookAhead eol (x, (xs, e)) <- allowPara $ listItemContentsUntil (indent + 2) (try (optional blankline *> indentWith indent *> bulletListItemsUntil indent end)) (([],) <$> end) return (x:xs, e) -- | Parse a bullet list. bulletListUntil :: PandocMonad m => MuseParser m a -> MuseParser m (F Blocks, a) bulletListUntil end = try $ do indent <- getIndent guard $ indent /= 0 first (fmap B.bulletList . sequence) <$> bulletListItemsUntil indent end museOrderedListMarker :: PandocMonad m => ListNumberStyle -> MuseParser m Int museOrderedListMarker style = snd <$> p <* char '.' where p = case style of Decimal -> decimal UpperRoman -> upperRoman LowerRoman -> lowerRoman UpperAlpha -> upperAlpha LowerAlpha -> lowerAlpha _ -> Prelude.fail "Unhandled case" orderedListItemsUntil :: PandocMonad m => Int -> ListNumberStyle -> MuseParser m a -> MuseParser m ([F Blocks], a) orderedListItemsUntil indent style end = continuation where continuation = try $ do pos <- getPosition void spaceChar <|> lookAhead eol (x, (xs, e)) <- allowPara $ listItemContentsUntil (sourceColumn pos) (try (optional blankline *> indentWith indent *> museOrderedListMarker style *> continuation)) (([],) <$> end) return (x:xs, e) -- | Parse an ordered list. orderedListUntil :: PandocMonad m => MuseParser m a -> MuseParser m (F Blocks, a) orderedListUntil end = try $ do indent <- getIndent guard $ indent /= 0 (style, start) <- decimal <|> lowerRoman <|> upperRoman <|> lowerAlpha <|> upperAlpha char '.' first (fmap (B.orderedListWith (start, style, Period)) . sequence) <$> orderedListItemsUntil indent style end descriptionsUntil :: PandocMonad m => Int -> MuseParser m a -> MuseParser m ([F Blocks], a) descriptionsUntil indent end = do void spaceChar <|> lookAhead eol (x, (xs, e)) <- allowPara $ listItemContentsUntil indent (try (optional blankline *> indentWith indent *> manyTill spaceChar (string "::") *> descriptionsUntil indent end)) (([],) <$> end) return (x:xs, e) definitionListItemsUntil :: PandocMonad m => Int -> MuseParser m a -> MuseParser m ([F (Inlines, [Blocks])], a) definitionListItemsUntil indent end = continuation where continuation = try $ do pos <- getPosition term <- trimInlinesF . mconcat <$> manyTill inline' (try $ string "::") (x, (xs, e)) <- descriptionsUntil (sourceColumn pos) (try (optional blankline *> indentWith indent *> continuation) <|> (([],) <$> end)) let xx = (,) <$> term <*> sequence x return (xx:xs, e) -- | Parse a definition list. definitionListUntil :: PandocMonad m => MuseParser m a -- ^ Terminator parser -> MuseParser m (F Blocks, a) definitionListUntil end = try $ do indent <- getIndent guardDisabled Ext_amuse <|> guard (indent /= 0) -- Initial space is required by Amusewiki, but not Emacs Muse first (fmap B.definitionList . sequence) <$> definitionListItemsUntil indent end anyListUntil :: PandocMonad m => MuseParser m a -- ^ Terminator parser -> MuseParser m (F Blocks, a) anyListUntil end = bulletListUntil end <|> orderedListUntil end <|> definitionListUntil end -- *** Table parsers -- | Internal Muse table representation. data MuseTable = MuseTable { museTableCaption :: Inlines , museTableHeaders :: [[Blocks]] , museTableRows :: [[Blocks]] , museTableFooters :: [[Blocks]] } data MuseTableElement = MuseHeaderRow [Blocks] | MuseBodyRow [Blocks] | MuseFooterRow [Blocks] | MuseCaption Inlines museToPandocTable :: MuseTable -> Blocks museToPandocTable (MuseTable caption headers body footers) = B.table (B.simpleCaption $ B.plain caption) attrs (TableHead nullAttr $ toHeaderRow headRow) [TableBody nullAttr 0 [] $ map toRow $ rows ++ body ++ footers] (TableFoot nullAttr []) where attrs = (AlignDefault, ColWidthDefault) <$ transpose (headers ++ body ++ footers) (headRow, rows) = case headers of (r:rs) -> (r, rs) [] -> ([], []) toRow = Row nullAttr . map B.simpleCell toHeaderRow l = [toRow l | not (null l)] museAppendElement :: MuseTableElement -> MuseTable -> MuseTable museAppendElement element tbl = case element of MuseHeaderRow row -> tbl{ museTableHeaders = row : museTableHeaders tbl } MuseBodyRow row -> tbl{ museTableRows = row : museTableRows tbl } MuseFooterRow row -> tbl{ museTableFooters = row : museTableFooters tbl } MuseCaption inlines -> tbl{ museTableCaption = inlines } tableElements :: PandocMonad m => MuseParser m (F [MuseTableElement]) tableElements = sequence <$> many1 tableParseElement elementsToTable :: [MuseTableElement] -> MuseTable elementsToTable = foldr museAppendElement emptyTable where emptyTable = MuseTable mempty mempty mempty mempty museGridPart :: PandocMonad m => MuseParser m Int museGridPart = try $ length <$> many1 (char '-') <* char '+' museGridTableHeader :: PandocMonad m => MuseParser m [Int] museGridTableHeader = try $ char '+' *> many1 museGridPart <* manyTill spaceChar eol museGridTableRow :: PandocMonad m => Int -> [Int] -> MuseParser m (F [Blocks]) museGridTableRow indent indices = try $ do lns <- many1 $ try (indentWith indent *> museGridTableRawLine indices) let cols = map (T.unlines . map trimr) $ transpose lns indentWith indent *> museGridTableHeader sequence <$> mapM (parseFromString' parseBlocks) cols museGridTableRawLine :: PandocMonad m => [Int] -> MuseParser m [Text] museGridTableRawLine indices = char '|' *> forM indices (\n -> countChar n anyChar <* char '|') <* manyTill spaceChar eol museGridTable :: PandocMonad m => MuseParser m (F Blocks) museGridTable = try $ do indent <- getIndent indices <- museGridTableHeader fmap rowsToTable . sequence <$> many1 (museGridTableRow indent indices) where rowsToTable rows = B.table B.emptyCaption attrs (TableHead nullAttr []) [TableBody nullAttr 0 [] $ map toRow rows] (TableFoot nullAttr []) where attrs = (AlignDefault, ColWidthDefault) <$ transpose rows toRow = Row nullAttr . map B.simpleCell -- | Parse a table. table :: PandocMonad m => MuseParser m (F Blocks) table = try $ fmap (museToPandocTable . elementsToTable) <$> tableElements tableParseElement :: PandocMonad m => MuseParser m (F MuseTableElement) tableParseElement = tableParseHeader <|> tableParseBody <|> tableParseFooter <|> tableParseCaption tableParseRow :: PandocMonad m => Int -- ^ Number of separator characters -> MuseParser m (F [Blocks]) tableParseRow n = try $ sequence <$> tableCells where tableCells = (:) <$> tableCell sep <*> (tableCells <|> fmap pure (tableCell eol)) tableCell p = try $ fmap B.plain . trimInlinesF . mconcat <$> manyTill inline' p sep = try $ many1 spaceChar *> count n (char '|') *> lookAhead (void (many1 spaceChar) <|> void eol) -- | Parse a table header row. tableParseHeader :: PandocMonad m => MuseParser m (F MuseTableElement) tableParseHeader = fmap MuseHeaderRow <$> tableParseRow 2 -- | Parse a table body row. tableParseBody :: PandocMonad m => MuseParser m (F MuseTableElement) tableParseBody = fmap MuseBodyRow <$> tableParseRow 1 -- | Parse a table footer row. tableParseFooter :: PandocMonad m => MuseParser m (F MuseTableElement) tableParseFooter = fmap MuseFooterRow <$> tableParseRow 3 -- | Parse table caption. tableParseCaption :: PandocMonad m => MuseParser m (F MuseTableElement) tableParseCaption = try $ fmap MuseCaption . trimInlinesF . mconcat <$ many spaceChar <* string "|+" <*> many1Till inline (try $ string "+|" *> eol) -- ** Inline parsers inline' :: PandocMonad m => MuseParser m (F Inlines) inline' = whitespace <|> br <|> anchor <|> footnote <|> strongEmph <|> strong <|> strongTag <|> emph <|> emphTag <|> underlined <|> superscriptTag <|> subscriptTag <|> strikeoutTag <|> verbatimTag <|> classTag <|> inlineRtl <|> inlineLtr <|> nbsp <|> linkOrImage <|> code <|> codeTag <|> mathTag <|> inlineLiteralTag <|> str <|> asterisks <|> symbol "inline" inline :: PandocMonad m => MuseParser m (F Inlines) inline = endline <|> inline' -- | Parse a soft break. endline :: PandocMonad m => MuseParser m (F Inlines) endline = try $ pure B.softbreak <$ newline <* notFollowedBy blankline <* updateLastSpacePos parseAnchor :: PandocMonad m => MuseParser m Text parseAnchor = try $ T.cons <$ firstColumn <* char '#' <*> letter <*> manyChar (letter <|> digit <|> char '-') anchor :: PandocMonad m => MuseParser m (F Inlines) anchor = try $ do anchorId <- parseAnchor skipMany spaceChar <|> void newline return $ return $ B.spanWith (anchorId, [], []) mempty -- | Parse a footnote reference. footnote :: PandocMonad m => MuseParser m (F Inlines) footnote = try $ do inLink <- asks museInLink guard $ not inLink ref <- noteMarker return $ do notes <- asksF museNotes case M.lookup ref notes of Nothing -> return $ B.str ref Just (_pos, contents) -> do st <- askF let contents' = runF contents st { museNotes = M.delete ref (museNotes st) } return $ B.note contents' whitespace :: PandocMonad m => MuseParser m (F Inlines) whitespace = try $ pure B.space <$ skipMany1 spaceChar <* updateLastSpacePos -- | Parse @\
@ tag. br :: PandocMonad m => MuseParser m (F Inlines) br = try $ pure B.linebreak <$ string "
" emphasisBetween :: (PandocMonad m, Show a) => MuseParser m a -> MuseParser m (F Inlines) emphasisBetween p = try $ trimInlinesF . mconcat <$ atStart <* p <* notFollowedBy space <*> many1Till inline (try $ noSpaceBefore *> p <* notFollowedBy alphaNum) -- | Parse an inline tag, such as @\@ and @\@. inlineTag :: PandocMonad m => Text -- ^ Tag name -> MuseParser m (F Inlines) inlineTag tag = try $ mconcat <$ openTag tag <*> manyTill inline (closeTag tag) -- | Parse strong emphasis inline markup, indicated by @***@. strongEmph :: PandocMonad m => MuseParser m (F Inlines) strongEmph = fmap (B.strong . B.emph) <$> emphasisBetween (string "***" <* notFollowedBy (char '*')) -- | Parse strong inline markup, indicated by @**@. strong :: PandocMonad m => MuseParser m (F Inlines) strong = fmap B.strong <$> emphasisBetween (string "**" <* notFollowedBy (char '*')) -- | Parse emphasis inline markup, indicated by @*@. emph :: PandocMonad m => MuseParser m (F Inlines) emph = fmap B.emph <$> emphasisBetween (char '*' <* notFollowedBy (char '*')) -- | Parse underline inline markup, indicated by @_@. -- Supported only in Emacs Muse mode, not Text::Amuse. underlined :: PandocMonad m => MuseParser m (F Inlines) underlined = fmap underline <$ guardDisabled Ext_amuse -- Supported only by Emacs Muse <*> emphasisBetween (char '_') -- | Parse @\@ tag. strongTag :: PandocMonad m => MuseParser m (F Inlines) strongTag = fmap B.strong <$> inlineTag "strong" -- | Parse @\@ tag. emphTag :: PandocMonad m => MuseParser m (F Inlines) emphTag = fmap B.emph <$> inlineTag "em" -- | Parse @\@ tag. superscriptTag :: PandocMonad m => MuseParser m (F Inlines) superscriptTag = fmap B.superscript <$> inlineTag "sup" -- | Parse @\@ tag. subscriptTag :: PandocMonad m => MuseParser m (F Inlines) subscriptTag = fmap B.subscript <$> inlineTag "sub" -- | Parse @\@ tag. strikeoutTag :: PandocMonad m => MuseParser m (F Inlines) strikeoutTag = fmap B.strikeout <$> inlineTag "del" -- | Parse @\@ tag. verbatimTag :: PandocMonad m => MuseParser m (F Inlines) verbatimTag = return . B.text <$ openTag "verbatim" <*> manyTillChar anyChar (closeTag "verbatim") -- | Parse @\@ tag. classTag :: PandocMonad m => MuseParser m (F Inlines) classTag = do classes <- maybe [] T.words . lookup "name" <$> openTag "class" fmap (B.spanWith ("", classes, [])) . mconcat <$> manyTill inline (closeTag "class") -- | Parse @\<\<\>>@ text. inlineRtl :: PandocMonad m => MuseParser m (F Inlines) inlineRtl = try $ fmap (B.spanWith ("", [], [("dir", "rtl")])) . mconcat <$ string "<<<" <*> manyTill inline (string ">>>") -- | Parse @\<\<\>>@ text. inlineLtr :: PandocMonad m => MuseParser m (F Inlines) inlineLtr = try $ fmap (B.spanWith ("", [], [("dir", "ltr")])) . mconcat <$ string ">>>" <*> manyTill inline (string "<<<") -- | Parse "~~" as nonbreaking space. nbsp :: PandocMonad m => MuseParser m (F Inlines) nbsp = try $ pure (B.str "\160") <$ string "~~" -- | Parse code markup, indicated by @\'=\'@ characters. code :: PandocMonad m => MuseParser m (F Inlines) code = try $ fmap pure $ B.code . uncurry (<>) <$ atStart <* char '=' <* notFollowedBy (spaceChar <|> newline) <*> manyUntilChar (noneOf "\n\r" <|> (newline <* notFollowedBy newline)) (try $ fmap T.singleton $ noneOf " \t\n\r=" <* char '=') <* notFollowedBy alphaNum -- | Parse @\@ tag. codeTag :: PandocMonad m => MuseParser m (F Inlines) codeTag = fmap pure $ B.codeWith <$> (htmlAttrToPandoc <$> openTag "code") <*> manyTillChar anyChar (closeTag "code") -- | Parse @\@ tag. -- @\@ tag is an Emacs Muse extension enabled by @(require 'muse-latex2png)@ mathTag :: PandocMonad m => MuseParser m (F Inlines) mathTag = return . B.math <$ openTag "math" <*> manyTillChar anyChar (closeTag "math") -- | Parse inline @\@ tag as a raw inline. inlineLiteralTag :: PandocMonad m => MuseParser m (F Inlines) inlineLiteralTag = try $ fmap pure $ B.rawInline <$> (fromMaybe "html" . lookup "style" <$> openTag "literal") -- FIXME: Emacs Muse inserts without style into all output formats, but we assume HTML <*> manyTillChar anyChar (closeTag "literal") str :: PandocMonad m => MuseParser m (F Inlines) str = return . B.str <$> many1Char alphaNum <* updateLastStrPos -- | Consume asterisks that were not used as emphasis opening. -- This prevents series of asterisks from being split into -- literal asterisk and emphasis opening. asterisks :: PandocMonad m => MuseParser m (F Inlines) asterisks = pure . B.str <$> many1Char (char '*') symbol :: PandocMonad m => MuseParser m (F Inlines) symbol = pure . B.str . T.singleton <$> nonspaceChar -- | Parse a link or image. linkOrImage :: PandocMonad m => MuseParser m (F Inlines) linkOrImage = try $ link "URL:" <|> image <|> link "" linkContent :: PandocMonad m => MuseParser m (F Inlines) linkContent = trimInlinesF . mconcat <$ char '[' <*> manyTill inline (char ']') -- | Parse a link starting with (possibly null) prefix link :: PandocMonad m => Text -> MuseParser m (F Inlines) link prefix = try $ do inLink <- asks museInLink guard $ not inLink textStr $ "[[" <> prefix url <- manyTillChar anyChar $ char ']' content <- option (pure $ B.str url) (local (\s -> s { museInLink = True }) linkContent) char ']' return $ B.link url "" <$> content image :: PandocMonad m => MuseParser m (F Inlines) image = try $ do string "[[" (url, (ext, width, align)) <- manyUntilChar (noneOf "]") (imageExtensionAndOptions <* char ']') content <- option mempty linkContent char ']' let widthAttr = case align of Just 'f' -> [("width", fromMaybe "100" width <> "%"), ("height", "75%")] _ -> maybeToList (("width",) . (<> "%") <$> width) let alignClass = case align of Just 'r' -> ["align-right"] Just 'l' -> ["align-left"] Just 'f' -> [] _ -> [] return $ B.imageWith ("", alignClass, widthAttr) (url <> ext) mempty <$> content where -- Taken from muse-image-regexp defined in Emacs Muse file lisp/muse-regexps.el imageExtensions = [".eps", ".gif", ".jpg", ".jpeg", ".pbm", ".png", ".tiff", ".xbm", ".xpm"] imageExtension = choice (try . textStr <$> imageExtensions) imageExtensionAndOptions = do ext <- imageExtension (width, align) <- option (Nothing, Nothing) imageAttrs return (ext, width, align) imageAttrs = (,) <$ many1 spaceChar <*> optionMaybe (many1Char digit) <* many spaceChar <*> optionMaybe (oneOf "rlf") ����������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/Native.hs������������������������������������������������������0000644�0000000�0000000�00000003563�07346545000�017250� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Readers.Native Copyright : Copyright (C) 2011-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Conversion of a string representation of a pandoc type (@Pandoc@, @[Block]@, @Block@, @[Inline]@, or @Inline@) to a @Pandoc@ document. -} module Text.Pandoc.Readers.Native ( readNative ) where import Text.Pandoc.Definition import Text.Pandoc.Options (ReaderOptions) import Text.Pandoc.Shared (safeRead) import Control.Monad.Except (throwError) import Data.Text (Text) import Text.Pandoc.Class.PandocMonad (PandocMonad) import Text.Pandoc.Error import Text.Pandoc.Sources (ToSources(..), sourcesToText) -- | Read native formatted text and return a Pandoc document. -- The input may be a full pandoc document, a block list, a block, -- an inline list, or an inline. Thus, for example, -- -- > Str "hi" -- -- will be treated as if it were -- -- > Pandoc nullMeta [Plain [Str "hi"]] -- readNative :: (PandocMonad m, ToSources a) => ReaderOptions -> a -> m Pandoc readNative _ s = let t = sourcesToText . toSources $ s in case maybe (Pandoc nullMeta <$> readBlocks t) Right (safeRead t) of Right doc -> return doc Left _ -> throwError $ PandocParseError "couldn't read native" readBlocks :: Text -> Either PandocError [Block] readBlocks s = maybe ((:[]) <$> readBlock s) Right (safeRead s) readBlock :: Text -> Either PandocError Block readBlock s = maybe (Plain <$> readInlines s) Right (safeRead s) readInlines :: Text -> Either PandocError [Inline] readInlines s = maybe ((:[]) <$> readInline s) Right (safeRead s) readInline :: Text -> Either PandocError Inline readInline s = maybe (Left . PandocParseError $ "Could not read: " <> s) Right (safeRead s) ���������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/ODT.hs���������������������������������������������������������0000644�0000000�0000000�00000006243�07346545000�016446� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Reader.ODT Copyright : Copyright (C) 2015 Martin Linnemann License : GNU GPL, version 2 or above Maintainer : Martin Linnemann Stability : alpha Portability : portable Entry point to the odt reader. -} module Text.Pandoc.Readers.ODT ( readODT ) where import Codec.Archive.Zip import Text.Pandoc.XML.Light import qualified Data.ByteString.Lazy as B import System.FilePath import Control.Monad.Except (throwError) import qualified Data.Text as T import Text.Pandoc.Class.PandocMonad (PandocMonad) import qualified Text.Pandoc.Class.PandocMonad as P import Text.Pandoc.Definition import Text.Pandoc.Error import Text.Pandoc.MediaBag import Text.Pandoc.Options import qualified Text.Pandoc.UTF8 as UTF8 import Text.Pandoc.Readers.ODT.ContentReader import Text.Pandoc.Readers.ODT.StyleReader import Text.Pandoc.Readers.ODT.Generic.Fallible import Text.Pandoc.Readers.ODT.Generic.XMLConverter import Text.Pandoc.Shared (filteredFilesFromArchive) readODT :: PandocMonad m => ReaderOptions -> B.ByteString -> m Pandoc readODT opts bytes = case readODT' opts bytes of Right (doc, mb) -> do P.setMediaBag mb return doc Left e -> throwError e -- readODT' :: ReaderOptions -> B.ByteString -> Either PandocError (Pandoc, MediaBag) readODT' _ bytes = bytesToODT bytes-- of -- Right (pandoc, mediaBag) -> Right (pandoc , mediaBag) -- Left err -> Left err -- bytesToODT :: B.ByteString -> Either PandocError (Pandoc, MediaBag) bytesToODT bytes = case toArchiveOrFail bytes of Right archive -> archiveToODT archive Left err -> Left $ PandocParseError $ "Could not unzip ODT: " <> T.pack err -- archiveToODT :: Archive -> Either PandocError (Pandoc, MediaBag) archiveToODT archive = do let onFailure msg Nothing = Left $ PandocParseError msg onFailure _ (Just x) = Right x contentEntry <- onFailure "Could not find content.xml" (findEntryByPath "content.xml" archive) stylesEntry <- onFailure "Could not find styles.xml" (findEntryByPath "styles.xml" archive) contentElem <- entryToXmlElem contentEntry stylesElem <- entryToXmlElem stylesEntry styles <- either (\_ -> Left $ PandocParseError "Could not read styles") Right (chooseMax (readStylesAt stylesElem ) (readStylesAt contentElem)) let filePathIsODTMedia :: FilePath -> Bool filePathIsODTMedia fp = let (dir, name) = splitFileName fp in (dir == "Pictures/") || (dir /= "./" && name == "content.xml") let media = filteredFilesFromArchive archive filePathIsODTMedia let startState = readerState styles media either (\_ -> Left $ PandocParseError "Could not convert opendocument") Right (runConverter' read_body startState contentElem) -- entryToXmlElem :: Entry -> Either PandocError Element entryToXmlElem entry = case parseXMLElement . UTF8.toTextLazy . fromEntry $ entry of Right x -> Right x Left msg -> Left $ PandocXMLError (T.pack $ eRelativePath entry) msg �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/ODT/Arrows/����������������������������������������������������0000755�0000000�0000000�00000000000�07346545000�017362� 5����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/ODT/Arrows/State.hs��������������������������������������������0000644�0000000�0000000�00000013261�07346545000�021001� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE TupleSections #-} {- | Module : Text.Pandoc.Readers.ODT.Arrows.State Copyright : Copyright (C) 2015 Martin Linnemann License : GNU GPL, version 2 or above Maintainer : Martin Linnemann Stability : alpha Portability : portable An arrow that transports a state. It is in essence a more powerful version of the standard state monad. As it is such a simple extension, there are other version out there that do exactly the same. The implementation is duplicated, though, to add some useful features. Most of these might be implemented without access to innards, but it's much faster and easier to implement this way. -} module Text.Pandoc.Readers.ODT.Arrows.State where import Control.Arrow import qualified Control.Category as Cat import Control.Monad import Data.List (foldl') import Text.Pandoc.Readers.ODT.Arrows.Utils import Text.Pandoc.Readers.ODT.Generic.Fallible newtype ArrowState state a b = ArrowState { runArrowState :: (state, a) -> (state, b) } -- | Constructor withState :: (state -> a -> (state, b)) -> ArrowState state a b withState = ArrowState . uncurry -- | Constructor modifyState :: (state -> state ) -> ArrowState state a a modifyState = ArrowState . first -- | Constructor ignoringState :: ( a -> b ) -> ArrowState state a b ignoringState = ArrowState . second -- | Constructor fromState :: (state -> (state, b)) -> ArrowState state a b fromState = ArrowState . (.fst) -- | Constructor extractFromState :: (state -> b ) -> ArrowState state x b extractFromState f = ArrowState $ \(state,_) -> (state, f state) -- | Constructor tryModifyState :: (state -> Either f state) -> ArrowState state a (Either f a) tryModifyState f = ArrowState $ \(state,a) -> (state,).Left ||| (,Right a) $ f state instance Cat.Category (ArrowState s) where id = ArrowState id arrow2 . arrow1 = ArrowState $ runArrowState arrow2 . runArrowState arrow1 instance Arrow (ArrowState state) where arr = ignoringState first a = ArrowState $ \(s,(aF,aS)) -> second (,aS) $ runArrowState a (s,aF) second a = ArrowState $ \(s,(aF,aS)) -> second (aF,) $ runArrowState a (s,aS) instance ArrowChoice (ArrowState state) where left a = ArrowState $ \(s,e) -> case e of Left l -> second Left $ runArrowState a (s,l) Right r -> (s, Right r) right a = ArrowState $ \(s,e) -> case e of Left l -> (s, Left l) Right r -> second Right $ runArrowState a (s,r) instance ArrowApply (ArrowState state) where app = ArrowState $ \(s, (f,b)) -> runArrowState f (s,b) -- | Switches the type of the state temporarily. -- Drops the intermediate result state, behaving like a fallible -- identity arrow, save for side effects in the state. withSubStateF :: ArrowState s x (Either f s') -> ArrowState s' s (Either f s ) -> ArrowState s x (Either f x ) withSubStateF unlift a = keepingTheValue (withSubStateF' unlift a) >>^ spreadChoice >>^ fmap fst -- | Switches the type of the state temporarily. -- Returns the resulting sub-state. withSubStateF' :: ArrowState s x (Either f s') -> ArrowState s' s (Either f s ) -> ArrowState s x (Either f s') withSubStateF' unlift a = ArrowState go where go p@(s,_) = tryRunning unlift ( tryRunning a (second Right) ) p where tryRunning a' b v = case runArrowState a' v of (_ , Left f) -> (s, Left f) (x , Right y) -> b (y,x) -- | Fold a state arrow through something 'Foldable'. Collect the results -- in a 'Monoid'. -- Intermediate form of a fold between one with "only" a 'Monoid' -- and one with any function. foldS :: (Foldable f, Monoid m) => ArrowState s x m -> ArrowState s (f x) m foldS a = ArrowState $ \(s,f) -> foldr a' (s,mempty) f where a' x (s',m) = second (mappend m) $ runArrowState a (s',x) -- | Fold a state arrow through something 'Foldable'. Collect the results in a -- 'MonadPlus'. iterateS :: (Foldable f, MonadPlus m) => ArrowState s x y -> ArrowState s (f x) (m y) iterateS a = ArrowState $ \(s,f) -> foldr a' (s,mzero) f where a' x (s',m) = second (mplus m.return) $ runArrowState a (s',x) -- | Fold a state arrow through something 'Foldable'. Collect the results in a -- 'MonadPlus'. iterateSL :: (Foldable f, MonadPlus m) => ArrowState s x y -> ArrowState s (f x) (m y) iterateSL a = ArrowState $ \(s,f) -> foldl' a' (s,mzero) f where a' (s',m) x = second (mplus m.return) $ runArrowState a (s',x) -- | Fold a fallible state arrow through something 'Foldable'. -- Collect the results in a 'MonadPlus'. -- If the iteration fails, the state will be reset to the initial one. iterateS' :: (Foldable f, MonadPlus m) => ArrowState s x (Either e y ) -> ArrowState s (f x) (Either e (m y)) iterateS' a = ArrowState $ \(s,f) -> foldr (a' s) (s,Right mzero) f where a' s x (s',Right m) = case runArrowState a (s',x) of (s'',Right m') -> (s'',Right $ mplus m $ return m') (_ ,Left e ) -> (s ,Left e ) a' _ _ e = e �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/ODT/Arrows/Utils.hs��������������������������������������������0000644�0000000�0000000�00000015525�07346545000�021026� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{- | Module : Text.Pandoc.Readers.ODT.Arrows.Utils Copyright : Copyright (C) 2015 Martin Linnemann License : GNU GPL, version 2 or above Maintainer : Martin Linnemann Stability : alpha Portability : portable Utility functions for Arrows (Kleisli monads). Some general notes on notation: * "^" is meant to stand for a pure function that is lifted into an arrow based on its usage for that purpose in "Control.Arrow". * "?" is meant to stand for the usage of a 'FallibleArrow' or a pure function with an equivalent return value. * "_" stands for the dropping of a value. -} -- We export everything module Text.Pandoc.Readers.ODT.Arrows.Utils where import Prelude hiding (Applicative(..)) import Control.Arrow import Control.Monad (join) import Text.Pandoc.Readers.ODT.Generic.Fallible import Text.Pandoc.Readers.ODT.Generic.Utils and2 :: (Arrow a) => a b c -> a b c' -> a b (c,c') and2 = (&&&) and3 :: (Arrow a) => a b c0->a b c1->a b c2 -> a b (c0,c1,c2 ) and4 :: (Arrow a) => a b c0->a b c1->a b c2->a b c3 -> a b (c0,c1,c2,c3 ) and5 :: (Arrow a) => a b c0->a b c1->a b c2->a b c3->a b c4 -> a b (c0,c1,c2,c3,c4 ) and6 :: (Arrow a) => a b c0->a b c1->a b c2->a b c3->a b c4->a b c5 -> a b (c0,c1,c2,c3,c4,c5 ) and3 a b c = and2 a b &&& c >>^ \((z,y ) , x) -> (z,y,x ) and4 a b c d = and3 a b c &&& d >>^ \((z,y,x ) , w) -> (z,y,x,w ) and5 a b c d e = and4 a b c d &&& e >>^ \((z,y,x,w ) , v) -> (z,y,x,w,v ) and6 a b c d e f = and5 a b c d e &&& f >>^ \((z,y,x,w,v ) , u) -> (z,y,x,w,v,u ) liftA2 :: (Arrow a) => (x -> y -> z) -> a b x -> a b y -> a b z liftA2 f a b = a &&& b >>^ uncurry f liftA3 :: (Arrow a) => (z->y->x -> r) -> a b z->a b y->a b x -> a b r liftA4 :: (Arrow a) => (z->y->x->w -> r) -> a b z->a b y->a b x->a b w -> a b r liftA5 :: (Arrow a) => (z->y->x->w->v -> r) -> a b z->a b y->a b x->a b w->a b v -> a b r liftA6 :: (Arrow a) => (z->y->x->w->v->u -> r) -> a b z->a b y->a b x->a b w->a b v->a b u -> a b r liftA3 fun a b c = and3 a b c >>^ uncurry3 fun liftA4 fun a b c d = and4 a b c d >>^ uncurry4 fun liftA5 fun a b c d e = and5 a b c d e >>^ uncurry5 fun liftA6 fun a b c d e f = and6 a b c d e f >>^ uncurry6 fun liftA :: (Arrow a) => (y -> z) -> a b y -> a b z liftA fun a = a >>^ fun -- | Duplicate a value to subsequently feed it into different arrows. -- Can almost always be replaced with '(&&&)', 'keepingTheValue', -- or even '(|||)'. -- Equivalent to -- > returnA &&& returnA duplicate :: (Arrow a) => a b (b,b) duplicate = arr $ join (,) -- | Applies a function to the uncurried result-pair of an arrow-application. -- (The %-symbol was chosen to evoke an association with pairs.) (>>%) :: (Arrow a) => a x (b,c) -> (b -> c -> d) -> a x d a >>% f = a >>^ uncurry f infixr 2 >>% -- | Duplicate a value and apply an arrow to the second instance. -- Equivalent to -- > \a -> duplicate >>> second a -- or -- > \a -> returnA &&& a keepingTheValue :: (Arrow a) => a b c -> a b (b,c) keepingTheValue a = returnA &&& a ( ^||| ) :: (ArrowChoice a) => (b -> d) -> a c d -> a (Either b c) d ( |||^ ) :: (ArrowChoice a) => a b d -> (c -> d) -> a (Either b c) d ( ^|||^ ) :: (ArrowChoice a) => (b -> d) -> (c -> d) -> a (Either b c) d l ^||| r = arr l ||| r l |||^ r = l ||| arr r l ^|||^ r = arr l ||| arr r infixr 2 ^||| , |||^, ^|||^ ( ^&&& ) :: (Arrow a) => (b -> c) -> a b c' -> a b (c,c') ( &&&^ ) :: (Arrow a) => a b c -> (b -> c') -> a b (c,c') l ^&&& r = arr l &&& r l &&&^ r = l &&& arr r infixr 3 ^&&&, &&&^ -- | Converts @Right a@ into @Just a@ and @Left _@ into @Nothing@. choiceToMaybe :: (ArrowChoice a) => a (Either l r) (Maybe r) choiceToMaybe = arr eitherToMaybe -- | Converts @Nothing@ into @Left ()@ and @Just a@ into @Right a@. maybeToChoice :: (ArrowChoice a) => a (Maybe b) (Fallible b) maybeToChoice = arr maybeToEither -- | Lifts a constant value into an arrow returnV :: (Arrow a) => c -> a x c returnV = arr.const -- | Defines Left as failure, Right as success type FallibleArrow a input failure success = a input (Either failure success) -- liftAsSuccess :: (ArrowChoice a) => a x success -> FallibleArrow a x failure success liftAsSuccess a = a >>^ Right -- | Execute the second arrow if the first succeeds (>>?) :: (ArrowChoice a) => FallibleArrow a x failure success -> FallibleArrow a success failure success' -> FallibleArrow a x failure success' a >>? b = a >>> Left ^||| b -- | Execute the lifted second arrow if the first succeeds (>>?^) :: (ArrowChoice a) => FallibleArrow a x failure success -> (success -> success') -> FallibleArrow a x failure success' a >>?^ f = a >>^ Left ^|||^ Right . f -- | Execute the lifted second arrow if the first succeeds (>>?^?) :: (ArrowChoice a) => FallibleArrow a x failure success -> (success -> Either failure success') -> FallibleArrow a x failure success' a >>?^? b = a >>> Left ^|||^ b -- | Execute the second arrow if the lifted first arrow succeeds (^>>?) :: (ArrowChoice a) => (x -> Either failure success) -> FallibleArrow a success failure success' -> FallibleArrow a x failure success' a ^>>? b = a ^>> Left ^||| b -- | Execute the second, non-fallible arrow if the first arrow succeeds (>>?!) :: (ArrowChoice a) => FallibleArrow a x failure success -> a success success' -> FallibleArrow a x failure success' a >>?! f = a >>> right f --- (>>?%) :: (ArrowChoice a) => FallibleArrow a x f (b,b') -> (b -> b' -> c) -> FallibleArrow a x f c a >>?% f = a >>?^ uncurry f --- (>>?%?) :: (ArrowChoice a) => FallibleArrow a x f (b,b') -> (b -> b' -> Either f c) -> FallibleArrow a x f c a >>?%? f = a >>?^? uncurry f infixr 1 >>?, >>?^, >>?^? infixr 1 ^>>?, >>?! infixr 1 >>?%, >>?%? -- | An arrow version of a short-circuit (<|>) ifFailedDo :: (ArrowChoice a) => FallibleArrow a x f y -> FallibleArrow a x f y -> FallibleArrow a x f y ifFailedDo a b = keepingTheValue a >>> repackage ^>> (b |||^ Right) where repackage (x , Left _) = Left x repackage (_ , Right y) = Right y infixr 1 `ifFailedDo` ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/ODT/�����������������������������������������������������������0000755�0000000�0000000�00000000000�07346545000�016105� 5����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/ODT/Base.hs����������������������������������������������������0000644�0000000�0000000�00000001162�07346545000�017313� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{- | Module : Text.Pandoc.Readers.ODT.Base Copyright : Copyright (C) 2015 Martin Linnemann License : GNU GPL, version 2 or above Maintainer : Martin Linnemann Stability : alpha Portability : portable Core types of the odt reader. -} module Text.Pandoc.Readers.ODT.Base where import Text.Pandoc.Readers.ODT.Generic.XMLConverter import Text.Pandoc.Readers.ODT.Namespaces type ODTConverterState s = XMLConverterState Namespace s type XMLReader s a b = FallibleXMLConverter Namespace s a b type XMLReaderSafe s a b = XMLConverter Namespace s a b ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/ODT/ContentReader.hs�������������������������������������������0000644�0000000�0000000�00000110564�07346545000�021205� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE Arrows #-} {-# LANGUAGE CPP #-} {-# LANGUAGE DeriveFoldable #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE PatternGuards #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TupleSections #-} {-# LANGUAGE ViewPatterns #-} {-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Readers.ODT.ContentReader Copyright : Copyright (C) 2015 Martin Linnemann License : GNU GPL, version 2 or above Maintainer : Martin Linnemann Stability : alpha Portability : portable The core of the odt reader that converts odt features into Pandoc types. -} module Text.Pandoc.Readers.ODT.ContentReader ( readerState , read_body ) where import Prelude hiding (Applicative(..)) import Control.Applicative hiding (liftA, liftA2, liftA3) import Control.Arrow import Control.Monad ((<=<)) import qualified Data.ByteString.Lazy as B import Data.Foldable (fold) import Data.List (find) import qualified Data.Map as M import qualified Data.Text as T import Data.Maybe import Data.Monoid (Alt (..)) import Text.TeXMath (readMathML, writeTeX) import qualified Text.Pandoc.XML.Light as XML import Text.Pandoc.Builder hiding (underline) import Text.Pandoc.MediaBag (MediaBag, insertMedia) import Text.Pandoc.Shared import Text.Pandoc.Extensions (extensionsFromList, Extension(..)) import qualified Text.Pandoc.UTF8 as UTF8 import Text.Pandoc.Readers.ODT.Base import Text.Pandoc.Readers.ODT.Namespaces import Text.Pandoc.Readers.ODT.StyleReader import Text.Pandoc.Readers.ODT.Arrows.State (foldS) import Text.Pandoc.Readers.ODT.Arrows.Utils import Text.Pandoc.Readers.ODT.Generic.Fallible import Text.Pandoc.Readers.ODT.Generic.Utils import Text.Pandoc.Readers.ODT.Generic.XMLConverter import Network.URI (parseRelativeReference, URI(uriPath)) import qualified Data.Set as Set -------------------------------------------------------------------------------- -- State -------------------------------------------------------------------------------- type Anchor = T.Text type Media = [(FilePath, B.ByteString)] data ReaderState = ReaderState { -- | A collection of styles read somewhere else. -- It is only queried here, not modified. styleSet :: Styles -- | A stack of the styles of parent elements. -- Used to look up inherited style properties. , styleTrace :: [Style] -- | Keeps track of the current depth in nested lists , currentListLevel :: ListLevel -- | Lists may provide their own style, but they don't have -- to. If they do not, the style of a parent list may be used -- or even a default list style from the paragraph style. -- This value keeps track of the closest list style there -- currently is. , currentListStyle :: Maybe ListStyle -- | A map from internal anchor names to "pretty" ones. -- The mapping is a purely cosmetic one. , bookmarkAnchors :: M.Map Anchor Anchor -- | A map of files / binary data from the archive , envMedia :: Media -- | Hold binary resources used in the document , odtMediaBag :: MediaBag } deriving ( Show ) readerState :: Styles -> Media -> ReaderState readerState styles media = ReaderState styles [] 0 Nothing M.empty media mempty -- pushStyle' :: Style -> ReaderState -> ReaderState pushStyle' style state = state { styleTrace = style : styleTrace state } -- popStyle' :: ReaderState -> ReaderState popStyle' state = case styleTrace state of _:trace -> state { styleTrace = trace } _ -> state -- modifyListLevel :: (ListLevel -> ListLevel) -> (ReaderState -> ReaderState) modifyListLevel f state = state { currentListLevel = f (currentListLevel state) } -- shiftListLevel :: ListLevel -> (ReaderState -> ReaderState) shiftListLevel diff = modifyListLevel (+ diff) -- swapCurrentListStyle :: Maybe ListStyle -> ReaderState -> (ReaderState, Maybe ListStyle) swapCurrentListStyle mListStyle state = ( state { currentListStyle = mListStyle } , currentListStyle state ) -- lookupPrettyAnchor :: Anchor -> ReaderState -> Maybe Anchor lookupPrettyAnchor anchor ReaderState{..} = M.lookup anchor bookmarkAnchors -- putPrettyAnchor :: Anchor -> Anchor -> ReaderState -> ReaderState putPrettyAnchor ugly pretty state@ReaderState{..} = state { bookmarkAnchors = M.insert ugly pretty bookmarkAnchors } -- usedAnchors :: ReaderState -> [Anchor] usedAnchors ReaderState{..} = M.elems bookmarkAnchors getMediaBag :: ReaderState -> MediaBag getMediaBag ReaderState{..} = odtMediaBag getMediaEnv :: ReaderState -> Media getMediaEnv ReaderState{..} = envMedia insertMedia' :: (FilePath, B.ByteString) -> ReaderState -> ReaderState insertMedia' (fp, bs) state@ReaderState{..} = state { odtMediaBag = insertMedia fp Nothing bs odtMediaBag } -------------------------------------------------------------------------------- -- Reader type and associated tools -------------------------------------------------------------------------------- type ODTReader a b = XMLReader ReaderState a b type ODTReaderSafe a b = XMLReaderSafe ReaderState a b -- | Extract something from the styles fromStyles :: (a -> Styles -> b) -> ODTReaderSafe a b fromStyles f = keepingTheValue (getExtraState >>^ styleSet) >>% f -- getStyleByName :: ODTReader StyleName Style getStyleByName = fromStyles lookupStyle >>^ maybeToChoice -- findStyleFamily :: ODTReader Style StyleFamily findStyleFamily = fromStyles getStyleFamily >>^ maybeToChoice -- lookupListStyle :: ODTReader StyleName ListStyle lookupListStyle = fromStyles lookupListStyleByName >>^ maybeToChoice -- switchCurrentListStyle :: ODTReaderSafe (Maybe ListStyle) (Maybe ListStyle) switchCurrentListStyle = keepingTheValue getExtraState >>% swapCurrentListStyle >>> first setExtraState >>^ snd -- pushStyle :: ODTReaderSafe Style Style pushStyle = keepingTheValue ( ( keepingTheValue getExtraState >>% pushStyle' ) >>> setExtraState ) >>^ fst -- popStyle :: ODTReaderSafe x x popStyle = keepingTheValue ( getExtraState >>> arr popStyle' >>> setExtraState ) >>^ fst -- getCurrentListLevel :: ODTReaderSafe _x ListLevel getCurrentListLevel = getExtraState >>^ currentListLevel -- updateMediaWithResource :: ODTReaderSafe (FilePath, B.ByteString) (FilePath, B.ByteString) updateMediaWithResource = keepingTheValue ( (keepingTheValue getExtraState >>% insertMedia' ) >>> setExtraState ) >>^ fst lookupResource :: ODTReaderSafe FilePath (FilePath, B.ByteString) lookupResource = proc target -> do state <- getExtraState -< () case lookup target (getMediaEnv state) of Just bs -> returnV (target, bs) -<< () Nothing -> returnV ("", B.empty) -< () type AnchorPrefix = T.Text -- | An adaptation of 'uniqueIdent' from "Text.Pandoc.Shared" that generates a -- unique identifier but without assuming that the id should be for a header. -- Second argument is a list of already used identifiers. uniqueIdentFrom :: AnchorPrefix -> [Anchor] -> Anchor uniqueIdentFrom baseIdent usedIdents = let numIdent n = baseIdent <> "-" <> T.pack (show n) in if baseIdent `elem` usedIdents then maybe baseIdent numIdent $ find (\x -> numIdent x `notElem` usedIdents) ([1..60000] :: [Int]) -- if we have more than 60,000, allow repeats else baseIdent -- | First argument: basis for a new "pretty" anchor if none exists yet -- Second argument: a key ("ugly" anchor) -- Returns: saved "pretty" anchor or created new one getPrettyAnchor :: ODTReaderSafe (AnchorPrefix, Anchor) Anchor getPrettyAnchor = proc (baseIdent, uglyAnchor) -> do state <- getExtraState -< () case lookupPrettyAnchor uglyAnchor state of Just prettyAnchor -> returnA -< prettyAnchor Nothing -> do let newPretty = uniqueIdentFrom baseIdent (usedAnchors state) modifyExtraState (putPrettyAnchor uglyAnchor newPretty) -<< newPretty -- | Input: basis for a new header anchor -- Output: saved new anchor getHeaderAnchor :: ODTReaderSafe Inlines Anchor getHeaderAnchor = proc title -> do state <- getExtraState -< () let exts = extensionsFromList [Ext_auto_identifiers] let anchor = uniqueIdent exts (toList title) (Set.fromList $ usedAnchors state) modifyExtraState (putPrettyAnchor anchor anchor) -<< anchor -------------------------------------------------------------------------------- -- Working with styles -------------------------------------------------------------------------------- -- readStyleByName :: ODTReader _x (StyleName, Style) readStyleByName = findAttr NsText "style-name" >>? keepingTheValue getStyleByName >>^ liftE where liftE :: (StyleName, Fallible Style) -> Fallible (StyleName, Style) liftE (name, Right v) = Right (name, v) liftE (_, Left v) = Left v -- isStyleToTrace :: ODTReader Style Bool isStyleToTrace = findStyleFamily >>?^ (==FaText) -- withNewStyle :: ODTReaderSafe x Inlines -> ODTReaderSafe x Inlines withNewStyle a = proc x -> do fStyle <- readStyleByName -< () case fStyle of Right (styleName, _) | isCodeStyle styleName -> do inlines <- a -< x arr inlineCode -<< inlines Right (_, style) -> do mFamily <- arr styleFamily -< style fTextProps <- arr ( maybeToChoice . textProperties . styleProperties ) -< style case fTextProps of Right textProps -> do state <- getExtraState -< () let triple = (state, textProps, mFamily) modifier <- arr modifierFromStyleDiff -< triple fShouldTrace <- isStyleToTrace -< style case fShouldTrace of Right shouldTrace -> if shouldTrace then do pushStyle -< style inlines <- a -< x popStyle -< () arr modifier -<< inlines else -- In case anything goes wrong a -< x Left _ -> a -< x Left _ -> a -< x Left _ -> a -< x where isCodeStyle :: StyleName -> Bool isCodeStyle "Source_Text" = True isCodeStyle _ = False inlineCode :: Inlines -> Inlines inlineCode = code . T.concat . map stringify . toList type PropertyTriple = (ReaderState, TextProperties, Maybe StyleFamily) type InlineModifier = Inlines -> Inlines -- | Given data about the local style changes, calculates how to modify -- an instance of 'Inlines' modifierFromStyleDiff :: PropertyTriple -> InlineModifier modifierFromStyleDiff propertyTriple = composition $ getVPosModifier propertyTriple : map (first ($ propertyTriple) >>> ifThen_else ignore) [ (hasEmphChanged , emph ) , (hasChanged isStrong , strong ) , (hasChanged strikethrough , strikeout ) ] where ifThen_else else' (if',then') = if if' then then' else else' ignore = id :: InlineModifier getVPosModifier :: PropertyTriple -> InlineModifier getVPosModifier triple@(_,textProps,_) = let getVPos = Just . verticalPosition in case lookupPreviousValueM getVPos triple of Nothing -> ignore Just oldVPos -> getVPosModifier' (oldVPos, verticalPosition textProps) getVPosModifier' (oldVPos , newVPos ) | oldVPos == newVPos = ignore getVPosModifier' ( _ , VPosSub ) = subscript getVPosModifier' ( _ , VPosSuper ) = superscript getVPosModifier' ( _ , _ ) = ignore hasEmphChanged :: PropertyTriple -> Bool hasEmphChanged = swing any [ hasChanged isEmphasised , hasChangedM pitch , hasChanged underline ] hasChanged property triple@(_, property -> newProperty, _) = (/= Just newProperty) (lookupPreviousValue property triple) hasChangedM property triple@(_, textProps,_) = fromMaybe False $ (/=) <$> property textProps <*> lookupPreviousValueM property triple lookupPreviousValue f = lookupPreviousStyleValue (fmap f . textProperties) lookupPreviousValueM f = lookupPreviousStyleValue (f <=< textProperties) lookupPreviousStyleValue f (ReaderState{..},_,mFamily) = findBy f (extendedStylePropertyChain styleTrace styleSet) <|> (f . lookupDefaultStyle' styleSet =<< mFamily) type ParaModifier = Blocks -> Blocks _MINIMUM_INDENTATION_FOR_BLOCKQUOTES_IN_MM_ :: Int _MINIMUM_INDENTATION_FOR_BLOCKQUOTES_IN_PERCENT_ :: Int _MINIMUM_INDENTATION_FOR_BLOCKQUOTES_IN_MM_ = 5 _MINIMUM_INDENTATION_FOR_BLOCKQUOTES_IN_PERCENT_ = 5 -- | Returns either 'id' or 'blockQuote' depending if any of the StyleProperties -- are indented at quote level. getParaModifier :: [StyleProperties] -> ParaModifier getParaModifier props | any isBlockQuote props = blockQuote | otherwise = id where isBlockQuote SProps {..} | Just paraProps <- paraProperties , isQuoteWidth (indentation paraProps) (margin_left paraProps) = True | otherwise = False isQuoteWidth mIndent mMargin | LengthValueMM indent <- mIndent , indent > _MINIMUM_INDENTATION_FOR_BLOCKQUOTES_IN_MM_ = True | LengthValueMM margin <- mMargin , margin > _MINIMUM_INDENTATION_FOR_BLOCKQUOTES_IN_MM_ = True | LengthValueMM indent <- mIndent , LengthValueMM margin <- mMargin = indent + margin > _MINIMUM_INDENTATION_FOR_BLOCKQUOTES_IN_MM_ | PercentValue indent <- mIndent , indent > _MINIMUM_INDENTATION_FOR_BLOCKQUOTES_IN_PERCENT_ = True | PercentValue margin <- mMargin , margin > _MINIMUM_INDENTATION_FOR_BLOCKQUOTES_IN_PERCENT_ = True | PercentValue indent <- mIndent , PercentValue margin <- mMargin = indent + margin > _MINIMUM_INDENTATION_FOR_BLOCKQUOTES_IN_PERCENT_ | otherwise = False -- constructPara :: ODTReaderSafe Blocks Blocks -> ODTReaderSafe Blocks Blocks constructPara reader = proc blocks -> do fStyle <- readStyleByName -< blocks case fStyle of Left _ -> reader -< blocks Right (styleName, _) | isTableCaptionStyle styleName -> do blocks' <- reader -< blocks arr tableCaptionP -< blocks' Right (_, style) -> do props <- fromStyles extendedStylePropertyChain -< [style] let modifier = getParaModifier props blocks' <- reader -< blocks arr modifier -<< blocks' where isTableCaptionStyle :: StyleName -> Bool isTableCaptionStyle "Table" = True isTableCaptionStyle _ = False tableCaptionP b = divWith ("", ["caption"], []) b type ListConstructor = [Blocks] -> Blocks getListConstructor :: ListLevelStyle -> ListConstructor getListConstructor ListLevelStyle{..} = case listLevelType of LltBullet -> bulletList LltImage -> bulletList LltNumbered -> let listNumberStyle = toListNumberStyle listItemFormat listNumberDelim = toListNumberDelim listItemPrefix listItemSuffix in orderedListWith (listItemStart, listNumberStyle, listNumberDelim) where toListNumberStyle LinfNone = DefaultStyle toListNumberStyle LinfNumber = Decimal toListNumberStyle LinfRomanLC = LowerRoman toListNumberStyle LinfRomanUC = UpperRoman toListNumberStyle LinfAlphaLC = LowerAlpha toListNumberStyle LinfAlphaUC = UpperAlpha toListNumberStyle (LinfString _) = Example toListNumberDelim Nothing (Just ".") = Period toListNumberDelim (Just "" ) (Just ".") = Period toListNumberDelim Nothing (Just ")") = OneParen toListNumberDelim (Just "" ) (Just ")") = OneParen toListNumberDelim (Just "(") (Just ")") = TwoParens toListNumberDelim _ _ = DefaultDelim -- | Determines which style to use for a list, which level to use of that -- style, and which type of list to create as a result of this information. -- Then prepares the state for eventual child lists and constructs the list from -- the results. -- Two main cases are handled: The list may provide its own style or it may -- rely on a parent list's style. I the former case the current style in the -- state must be switched before and after the call to the child converter -- while in the latter the child converter can be called directly. -- If anything goes wrong, a default ordered-list-constructor is used. constructList :: ODTReaderSafe x [Blocks] -> ODTReaderSafe x Blocks constructList reader = proc x -> do modifyExtraState (shiftListLevel 1) -< () listLevel <- getCurrentListLevel -< () fStyleName <- findAttr NsText "style-name" -< () case fStyleName of Right styleName -> do fListStyle <- lookupListStyle -< styleName case fListStyle of Right listStyle -> do fLLS <- arr (uncurry getListLevelStyle) -< (listLevel,listStyle) case fLLS of Just listLevelStyle -> do oldListStyle <- switchCurrentListStyle -< Just listStyle blocks <- constructListWith listLevelStyle -<< x switchCurrentListStyle -< oldListStyle returnA -< blocks Nothing -> constructOrderedList -< x Left _ -> constructOrderedList -< x Left _ -> do state <- getExtraState -< () mListStyle <- arr currentListStyle -< state case mListStyle of Just listStyle -> do fLLS <- arr (uncurry getListLevelStyle) -< (listLevel,listStyle) case fLLS of Just listLevelStyle -> constructListWith listLevelStyle -<< x Nothing -> constructOrderedList -< x Nothing -> constructOrderedList -< x where constructOrderedList = reader >>> modifyExtraState (shiftListLevel (-1)) >>^ orderedList constructListWith listLevelStyle = reader >>> getListConstructor listLevelStyle ^>> modifyExtraState (shiftListLevel (-1)) -------------------------------------------------------------------------------- -- Readers -------------------------------------------------------------------------------- type ElementMatcher result = (Namespace, ElementName, ODTReader result result) type InlineMatcher = ElementMatcher Inlines type BlockMatcher = ElementMatcher Blocks newtype FirstMatch a = FirstMatch (Alt Maybe a) deriving (Foldable, Monoid, Semigroup) firstMatch :: a -> FirstMatch a firstMatch = FirstMatch . Alt . Just -- matchingElement :: (Monoid e) => Namespace -> ElementName -> ODTReaderSafe e e -> ElementMatcher e matchingElement ns name reader = (ns, name, asResultAccumulator reader) where asResultAccumulator :: (ArrowChoice a, Monoid m) => a m m -> a m (Fallible m) asResultAccumulator a = liftAsSuccess $ keepingTheValue a >>% mappend -- matchChildContent' :: (Monoid result) => [ElementMatcher result] -> ODTReaderSafe _x result matchChildContent' ls = returnV mempty >>> matchContent' ls -- matchChildContent :: (Monoid result) => [ElementMatcher result] -> ODTReaderSafe (result, XML.Content) result -> ODTReaderSafe _x result matchChildContent ls fallback = returnV mempty >>> matchContent ls fallback -------------------------------------------- -- Matchers -------------------------------------------- ---------------------- -- Basics ---------------------- -- -- | Open Document allows several consecutive spaces if they are marked up read_plain_text :: ODTReaderSafe (Inlines, XML.Content) Inlines read_plain_text = fst ^&&& read_plain_text' >>% recover where -- fallible version read_plain_text' :: ODTReader (Inlines, XML.Content) Inlines read_plain_text' = ( second ( arr extractText ) >>^ spreadChoice >>?! second text ) >>?% mappend -- extractText :: XML.Content -> Fallible T.Text extractText (XML.Text cData) = succeedWith (XML.cdData cData) extractText _ = failEmpty read_text_seq :: InlineMatcher read_text_seq = matchingElement NsText "sequence" $ matchChildContent [] read_plain_text -- specifically. I honor that, although the current implementation of 'mappend' -- for 'Inlines' in "Text.Pandoc.Builder" will collapse them again. -- The rational is to be prepared for future modifications. read_spaces :: InlineMatcher read_spaces = matchingElement NsText "s" ( readAttrWithDefault NsText "c" 1 -- how many spaces? >>^ fromList.(`replicate` Space) ) -- read_line_break :: InlineMatcher read_line_break = matchingElement NsText "line-break" $ returnV linebreak -- read_tab :: InlineMatcher read_tab = matchingElement NsText "tab" $ returnV space -- read_span :: InlineMatcher read_span = matchingElement NsText "span" $ withNewStyle $ matchChildContent [ read_span , read_spaces , read_line_break , read_tab , read_link , read_frame , read_note , read_citation , read_bookmark , read_bookmark_start , read_reference_start , read_bookmark_ref , read_reference_ref ] read_plain_text -- read_paragraph :: BlockMatcher read_paragraph = matchingElement NsText "p" $ constructPara $ liftA para $ withNewStyle $ matchChildContent [ read_span , read_spaces , read_line_break , read_tab , read_link , read_note , read_citation , read_bookmark , read_bookmark_start , read_reference_start , read_bookmark_ref , read_reference_ref , read_frame , read_text_seq ] read_plain_text ---------------------- -- Headers ---------------------- -- read_header :: BlockMatcher read_header = matchingElement NsText "h" $ proc blocks -> do level <- ( readAttrWithDefault NsText "outline-level" 1 ) -< blocks children <- ( matchChildContent [ read_span , read_spaces , read_line_break , read_tab , read_link , read_note , read_citation , read_bookmark , read_bookmark_start , read_reference_start , read_bookmark_ref , read_reference_ref , read_frame ] read_plain_text ) -< blocks anchor <- getHeaderAnchor -< children let idAttr = (anchor, [], []) -- no classes, no key-value pairs arr (uncurry3 headerWith) -< (idAttr, level, children) ---------------------- -- Lists ---------------------- -- read_list :: BlockMatcher read_list = matchingElement NsText "list" -- $ withIncreasedListLevel $ constructList -- $ liftA bulletList $ matchChildContent' [ read_list_item , read_list_header ] -- read_list_item :: ElementMatcher [Blocks] read_list_item = read_list_element "list-item" read_list_header :: ElementMatcher [Blocks] read_list_header = read_list_element "list-header" read_list_element :: ElementName -> ElementMatcher [Blocks] read_list_element listElement = matchingElement NsText listElement $ liftA (compactify.(:[])) ( matchChildContent' [ read_paragraph , read_header , read_list , read_section ] ) ---------------------- -- Sections ---------------------- read_section :: ElementMatcher Blocks read_section = matchingElement NsText "section" $ liftA (divWith nullAttr) $ matchChildContent' [ read_paragraph , read_header , read_list , read_table , read_section ] ---------------------- -- Links ---------------------- read_link :: InlineMatcher read_link = matchingElement NsText "a" $ liftA3 link ( findAttrTextWithDefault NsXLink "href" "" >>> arr fixRelativeLink ) ( findAttrTextWithDefault NsOffice "title" "" ) ( matchChildContent [ read_span , read_note , read_citation , read_bookmark , read_bookmark_start , read_reference_start , read_bookmark_ref , read_reference_ref ] read_plain_text ) fixRelativeLink :: T.Text -> T.Text fixRelativeLink uri = case parseRelativeReference (T.unpack uri) of Nothing -> uri Just u -> case uriPath u of '.':'.':'/':xs -> tshow $ u{ uriPath = xs } _ -> uri ------------------------- -- Footnotes ------------------------- read_note :: InlineMatcher read_note = matchingElement NsText "note" $ liftA note $ matchChildContent' [ read_note_body ] read_note_body :: BlockMatcher read_note_body = matchingElement NsText "note-body" $ matchChildContent' [ read_paragraph ] ------------------------- -- Citations ------------------------- read_citation :: InlineMatcher read_citation = matchingElement NsText "bibliography-mark" $ liftA2 cite ( liftA2 makeCitation ( findAttrTextWithDefault NsText "identifier" "" ) ( readAttrWithDefault NsText "number" 0 ) ) ( matchChildContent [] read_plain_text ) where makeCitation :: T.Text -> Int -> [Citation] makeCitation citeId num = [Citation citeId [] [] NormalCitation num 0] ---------------------- -- Tables ---------------------- -- read_table :: BlockMatcher read_table = matchingElement NsTable "table" $ liftA simpleTable' $ matchChildContent' [ read_table_row ] -- | A simple table without a caption or headers -- | Infers the number of headers from rows simpleTable' :: [[Blocks]] -> Blocks simpleTable' [] = simpleTable [] [] simpleTable' (x : rest) = simpleTable (fmap (const defaults) x) (x : rest) where defaults = fromList [] -- read_table_row :: ElementMatcher [[Blocks]] read_table_row = matchingElement NsTable "table-row" $ liftA (:[]) $ matchChildContent' [ read_table_cell ] -- read_table_cell :: ElementMatcher [Blocks] read_table_cell = matchingElement NsTable "table-cell" $ liftA (compactify.(:[])) $ matchChildContent' [ read_paragraph , read_list ] ---------------------- -- Frames ---------------------- -- read_frame :: InlineMatcher read_frame = matchingElement NsDraw "frame" $ filterChildrenName' NsDraw (`elem` ["image", "object", "text-box"]) >>> foldS read_frame_child >>> arr fold read_frame_child :: ODTReaderSafe XML.Element (FirstMatch Inlines) read_frame_child = proc child -> case elName child of "image" -> read_frame_img -< child "object" -> read_frame_mathml -< child "text-box" -> read_frame_text_box -< child _ -> returnV mempty -< () read_frame_img :: ODTReaderSafe XML.Element (FirstMatch Inlines) read_frame_img = proc img -> do src <- executeIn (findAttr' NsXLink "href") -< img case fold src of "" -> returnV mempty -< () src' -> do let exts = extensionsFromList [Ext_auto_identifiers] resource <- lookupResource -< T.unpack src' _ <- updateMediaWithResource -< resource w <- findAttrText' NsSVG "width" -< () h <- findAttrText' NsSVG "height" -< () titleNodes <- matchChildContent' [ read_frame_title ] -< () alt <- matchChildContent [] read_plain_text -< () arr (firstMatch . uncurry4 imageWith) -< (image_attributes w h, src', inlineListToIdentifier exts (toList titleNodes), alt) read_frame_title :: InlineMatcher read_frame_title = matchingElement NsSVG "title" (matchChildContent [] read_plain_text) image_attributes :: Maybe T.Text -> Maybe T.Text -> Attr image_attributes x y = ( "", [], dim "width" x ++ dim "height" y) where dim _ (Just "") = [] dim name (Just v) = [(name, v)] dim _ Nothing = [] read_frame_mathml :: ODTReaderSafe XML.Element (FirstMatch Inlines) read_frame_mathml = proc obj -> do src <- executeIn (findAttr' NsXLink "href") -< obj case fold src of "" -> returnV mempty -< () src' -> do let path = T.unpack $ fromMaybe src' (T.stripPrefix "./" src') <> "/content.xml" (_, mathml) <- lookupResource -< path case readMathML (UTF8.toText $ B.toStrict mathml) of Left _ -> returnV mempty -< () Right exps -> arr (firstMatch . displayMath . writeTeX) -< exps read_frame_text_box :: ODTReaderSafe XML.Element (FirstMatch Inlines) read_frame_text_box = proc box -> do paragraphs <- executeIn (matchChildContent' [ read_paragraph ]) -< box arr read_img_with_caption -< toList paragraphs read_img_with_caption :: [Block] -> FirstMatch Inlines read_img_with_caption (Para [Image attr alt (src,title)] : _) = firstMatch $ singleton (Image attr alt (src, "fig:" <> title)) -- no text, default caption read_img_with_caption (Para (Image attr _ (src,title) : txt) : _) = firstMatch $ singleton (Image attr txt (src, "fig:" <> title) ) -- override caption with the text that follows read_img_with_caption ( Para (_ : xs) : ys) = read_img_with_caption (Para xs : ys) read_img_with_caption _ = mempty ---------------------- -- Internal links ---------------------- _ANCHOR_PREFIX_ :: T.Text _ANCHOR_PREFIX_ = "anchor" -- readAnchorAttr :: ODTReader _x Anchor readAnchorAttr = findAttrText NsText "name" -- | Beware: may fail findAnchorName :: ODTReader AnchorPrefix Anchor findAnchorName = ( keepingTheValue readAnchorAttr >>^ spreadChoice ) >>?! getPrettyAnchor -- maybeAddAnchorFrom :: ODTReader Inlines AnchorPrefix -> ODTReaderSafe Inlines Inlines maybeAddAnchorFrom anchorReader = keepingTheValue (anchorReader >>? findAnchorName >>?^ toAnchorElem) >>> proc (inlines, fAnchorElem) -> do case fAnchorElem of Right anchorElem -> returnA -< anchorElem Left _ -> returnA -< inlines where toAnchorElem :: Anchor -> Inlines toAnchorElem anchorID = spanWith (anchorID, [], []) mempty -- no classes, no key-value pairs -- read_bookmark :: InlineMatcher read_bookmark = matchingElement NsText "bookmark" $ maybeAddAnchorFrom (liftAsSuccess $ returnV _ANCHOR_PREFIX_) -- read_bookmark_start :: InlineMatcher read_bookmark_start = matchingElement NsText "bookmark-start" $ maybeAddAnchorFrom (liftAsSuccess $ returnV _ANCHOR_PREFIX_) -- read_reference_start :: InlineMatcher read_reference_start = matchingElement NsText "reference-mark-start" $ maybeAddAnchorFrom readAnchorAttr -- | Beware: may fail findAnchorRef :: ODTReader _x Anchor findAnchorRef = ( findAttrText NsText "ref-name" >>?^ (_ANCHOR_PREFIX_,) ) >>?! getPrettyAnchor -- maybeInAnchorRef :: ODTReaderSafe Inlines Inlines maybeInAnchorRef = proc inlines -> do fRef <- findAnchorRef -< () case fRef of Right anchor -> arr (toAnchorRef anchor) -<< inlines Left _ -> returnA -< inlines where toAnchorRef :: Anchor -> Inlines -> Inlines toAnchorRef anchor = link ("#" <> anchor) "" -- no title -- read_bookmark_ref :: InlineMatcher read_bookmark_ref = matchingElement NsText "bookmark-ref" $ maybeInAnchorRef <<< matchChildContent [] read_plain_text -- read_reference_ref :: InlineMatcher read_reference_ref = matchingElement NsText "reference-ref" $ maybeInAnchorRef <<< matchChildContent [] read_plain_text ---------------------- -- Entry point ---------------------- read_text :: ODTReaderSafe _x Pandoc read_text = matchChildContent' [ read_header , read_paragraph , read_list , read_section , read_table ] >>^ doc post_process :: Pandoc -> Pandoc post_process (Pandoc m blocks) = Pandoc m (post_process' blocks) post_process' :: [Block] -> [Block] post_process' (Table attr _ specs th tb tf : Div ("", ["caption"], _) blks : xs) = Table attr (Caption Nothing blks) specs th tb tf : post_process' xs post_process' bs = bs read_body :: ODTReader _x (Pandoc, MediaBag) read_body = executeInSub NsOffice "body" $ executeInSub NsOffice "text" $ liftAsSuccess $ proc inlines -> do txt <- read_text -< inlines state <- getExtraState -< () returnA -< (post_process txt, getMediaBag state) ��������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/ODT/Generic/���������������������������������������������������0000755�0000000�0000000�00000000000�07346545000�017461� 5����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/ODT/Generic/Fallible.hs����������������������������������������0000644�0000000�0000000�00000006305�07346545000�021533� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{- | Module : Text.Pandoc.Readers.ODT.Generic.Fallible Copyright : Copyright (C) 2015 Martin Linnemann License : GNU GPL, version 2 or above Maintainer : Martin Linnemann Stability : alpha Portability : portable Data types and utilities representing failure. Most of it is based on the "Either" type in its usual configuration (left represents failure). In most cases, the failure type is implied or required to be a "Monoid". The choice of "Either" instead of a custom type makes it easier to write compatible instances of "ArrowChoice". -} -- We export everything module Text.Pandoc.Readers.ODT.Generic.Fallible where -- | Default for now. Will probably become a class at some point. type Failure = () type Fallible a = Either Failure a -- maybeToEither :: Maybe a -> Fallible a maybeToEither (Just a) = Right a maybeToEither Nothing = Left () -- eitherToMaybe :: Either _l a -> Maybe a eitherToMaybe (Left _) = Nothing eitherToMaybe (Right a) = Just a -- | > recover a === either (const a) id recover :: a -> Either _f a -> a recover a (Left _) = a recover _ (Right a) = a -- | I would love to use 'fail'. Alas, 'Monad.fail'... failWith :: failure -> Either failure _x failWith f = Left f -- failEmpty :: (Monoid failure) => Either failure _x failEmpty = failWith mempty -- succeedWith :: a -> Either _x a succeedWith = Right -- collapseEither :: Either failure (Either failure x) -> Either failure x collapseEither (Left f ) = Left f collapseEither (Right (Left f)) = Left f collapseEither (Right (Right x)) = Right x -- | If either of the values represents a non-error, the result is a -- (possibly combined) non-error. If both values represent an error, an error -- is returned. chooseMax :: (Monoid a, Monoid b) => Either a b -> Either a b -> Either a b chooseMax = chooseMaxWith mappend -- | If either of the values represents a non-error, the result is a -- (possibly combined) non-error. If both values represent an error, an error -- is returned. chooseMaxWith :: (Monoid a) => (b -> b -> b) -> Either a b -> Either a b -> Either a b chooseMaxWith (><) (Right a) (Right b) = Right $ a >< b chooseMaxWith _ (Left a) (Left b) = Left $ a `mappend` b chooseMaxWith _ (Right a) _ = Right a chooseMaxWith _ _ (Right b) = Right b -- | Class of containers that can escalate contained 'Either's. -- The word "Vector" is meant in the sense of a disease transmitter. class ChoiceVector v where spreadChoice :: v (Either f a) -> Either f (v a) instance ChoiceVector ((,) a) where spreadChoice (_, Left f) = Left f spreadChoice (x, Right y) = Right (x,y) -- Wasn't there a newtype somewhere with the elements flipped? -- | Wrapper for a list. While the normal list instance of 'ChoiceVector' -- fails whenever it can, this type will never fail. newtype SuccessList a = SuccessList { collectNonFailing :: [a] } deriving ( Eq, Ord, Show ) instance ChoiceVector SuccessList where spreadChoice = Right . SuccessList . foldr unTagRight [] . collectNonFailing where unTagRight (Right x) = (x:) unTagRight _ = id ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/ODT/Generic/Namespaces.hs��������������������������������������0000644�0000000�0000000�00000003004�07346545000�022071� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{- | Module : Text.Pandoc.Readers.ODT.Generic.Namespaces Copyright : Copyright (C) 2015 Martin Linnemann License : GNU GPL, version 2 or above Maintainer : Martin Linnemann Stability : alpha Portability : portable A class containing a set of namespace identifiers. Used to convert between typesafe Haskell namespace identifiers and unsafe "real world" namespaces. -} module Text.Pandoc.Readers.ODT.Generic.Namespaces where import qualified Data.Map as M import Data.Text (Text) -- type NameSpaceIRI = Text -- type NameSpaceIRIs nsID = M.Map nsID NameSpaceIRI -- class (Eq nsID, Ord nsID) => NameSpaceID nsID where -- | Given a IRI, possibly update the map and return the id of the namespace. -- May fail if the namespace is unknown and the application does not -- allow unknown namespaces. getNamespaceID :: NameSpaceIRI -> NameSpaceIRIs nsID -> Maybe (NameSpaceIRIs nsID, nsID) -- | Given a namespace id, lookup its IRI. May be overridden for performance. getIRI :: nsID -> NameSpaceIRIs nsID -> Maybe NameSpaceIRI -- | The root element of an XML document has a namespace, too, and the -- "XML.Light-parser" is eager to remove the corresponding namespace -- attribute. -- As a result, at least this root namespace must be provided. getInitialIRImap :: NameSpaceIRIs nsID getIRI = M.lookup getInitialIRImap = M.empty ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/ODT/Generic/SetMap.hs������������������������������������������0000644�0000000�0000000�00000001544�07346545000�021212� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{- | Module : Text.Pandoc.Readers.ODT.Generic.SetMap Copyright : Copyright (C) 2015 Martin Linnemann License : GNU GPL, version 2 or above Maintainer : Martin Linnemann Stability : alpha Portability : portable A map of values to sets of values. -} module Text.Pandoc.Readers.ODT.Generic.SetMap where import qualified Data.Map as M import qualified Data.Set as S type SetMap k v = M.Map k (S.Set v) empty :: SetMap k v empty = M.empty fromList :: (Ord k, Ord v) => [(k,v)] -> SetMap k v fromList = foldr (uncurry insert) empty insert :: (Ord k, Ord v) => k -> v -> SetMap k v -> SetMap k v insert key value setMap = M.insertWith S.union key (S.singleton value) setMap union3 :: (Ord k) => SetMap k v -> SetMap k v -> SetMap k v -> SetMap k v union3 sm1 sm2 sm3 = sm1 `M.union` sm2 `M.union` sm3 ������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/ODT/Generic/Utils.hs�������������������������������������������0000644�0000000�0000000�00000007526�07346545000�021127� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE ViewPatterns #-} {- | Module : Text.Pandoc.Reader.ODT.Generic.Utils Copyright : Copyright (C) 2015 Martin Linnemann License : GNU GPL, version 2 or above Maintainer : Martin Linnemann Stability : alpha Portability : portable General utility functions for the odt reader. -} module Text.Pandoc.Readers.ODT.Generic.Utils ( uncurry3 , uncurry4 , uncurry5 , uncurry6 , swap , reverseComposition , tryToRead , Lookupable(..) , readLookupable , readPercent , findBy , swing , composition ) where import Control.Category (Category, (<<<), (>>>)) import qualified Control.Category as Cat (id) import Data.Char (isSpace) import qualified Data.Foldable as F (Foldable, foldr) import Data.Maybe import Data.Text (Text) import qualified Data.Text as T -- | Equivalent to -- > foldr (.) id -- where '(.)' are 'id' are the ones from "Control.Category" -- and 'foldr' is the one from "Data.Foldable". -- The noun-form was chosen to be consistent with 'sum', 'product' etc -- based on the discussion at -- -- (that I was not part of) composition :: (Category cat, F.Foldable f) => f (cat a a) -> cat a a composition = F.foldr (<<<) Cat.id -- | Equivalent to -- > foldr (flip (.)) id -- where '(.)' are 'id' are the ones from "Control.Category" -- and 'foldr' is the one from "Data.Foldable". -- A reversed version of 'composition'. reverseComposition :: (Category cat, F.Foldable f) => f (cat a a) -> cat a a reverseComposition = F.foldr (>>>) Cat.id -- | This function often makes it possible to switch values with the functions -- that are applied to them. -- -- Examples: -- > swing map :: [a -> b] -> a -> [b] -- > swing any :: [a -> Bool] -> a -> Bool -- > swing foldr :: b -> a -> [a -> b -> b] -> b -- > swing scanr :: c -> a -> [a -> c -> c] -> c -- > swing zipWith :: [a -> b -> c] -> a -> [b] -> [c] -- > swing find :: [a -> Bool] -> a -> Maybe (a -> Bool) -- -- Stolen from swing :: (((a -> b) -> b) -> c -> d) -> c -> a -> d swing = flip.(.flip id) -- swing f c a = f ($ a) c -- | Alternative to 'read'/'reads'. The former of these throws errors -- (nobody wants that) while the latter returns "to much" for simple purposes. -- This function instead applies 'reads' and returns the first match (if any) -- in a 'Maybe'. tryToRead :: (Read r) => Text -> Maybe r tryToRead = (reads . T.unpack) >>> listToMaybe >>> fmap fst -- | A version of 'reads' that requires a '%' sign after the number readPercent :: ReadS Int readPercent s = [ (i,s') | (i , r ) <- reads s , ("%" , s') <- lex r ] -- | Data that can be looked up. -- This is mostly a utility to read data with kind *. class Lookupable a where lookupTable :: [(Text, a)] -- | Very similar to a simple 'lookup' in the 'lookupTable', but with a lexer. readLookupable :: (Lookupable a) => Text -> Maybe a readLookupable s = lookup (T.takeWhile (not . isSpace) $ T.dropWhile isSpace s) lookupTable uncurry3 :: (a->b->c -> z) -> (a,b,c ) -> z uncurry4 :: (a->b->c->d -> z) -> (a,b,c,d ) -> z uncurry5 :: (a->b->c->d->e -> z) -> (a,b,c,d,e ) -> z uncurry6 :: (a->b->c->d->e->f -> z) -> (a,b,c,d,e,f ) -> z uncurry3 fun (a,b,c ) = fun a b c uncurry4 fun (a,b,c,d ) = fun a b c d uncurry5 fun (a,b,c,d,e ) = fun a b c d e uncurry6 fun (a,b,c,d,e,f ) = fun a b c d e f swap :: (a,b) -> (b,a) swap (a,b) = (b,a) -- | A version of "Data.List.find" that uses a converter to a Maybe instance. -- The returned value is the first which the converter returns in a 'Just' -- wrapper. findBy :: (a -> Maybe b) -> [a] -> Maybe b findBy _ [] = Nothing findBy f ((f -> Just x):_ ) = Just x findBy f ( _:xs) = findBy f xs ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/ODT/Generic/XMLConverter.hs������������������������������������0000644�0000000�0000000�00000100714�07346545000�022350� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TupleSections #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE PatternGuards #-} {- | Module : Text.Pandoc.Readers.ODT.Generic.XMLConverter Copyright : Copyright (C) 2015 Martin Linnemann License : GNU GPL, version 2 or above Maintainer : Martin Linnemann Stability : alpha Portability : portable A generalized XML parser based on stateful arrows. It might be sufficient to define this reader as a comonad, but there is not a lot of use in trying. -} module Text.Pandoc.Readers.ODT.Generic.XMLConverter ( ElementName , XMLConverterState , XMLConverter , FallibleXMLConverter , runConverter' , getExtraState , setExtraState , modifyExtraState , producingExtraState , findChild' , filterChildrenName' , isSet' , isSetWithDefault , elName , searchAttr , lookupAttr , lookupAttr' , lookupDefaultingAttr , findAttr' , findAttrText' , findAttr , findAttrText , findAttrTextWithDefault , readAttr , readAttr' , readAttrWithDefault , getAttr , executeIn , executeInSub , withEveryL , tryAll , matchContent' , matchContent ) where import Prelude hiding (Applicative(..)) import Control.Applicative hiding ( liftA, liftA2 ) import Control.Monad ( MonadPlus ) import Control.Arrow import Data.Bool ( bool ) import Data.Either ( rights ) import qualified Data.Map as M import Data.Text (Text) import Data.Default import Data.Maybe import Data.List (foldl') import qualified Text.Pandoc.XML.Light as XML import Text.Pandoc.Readers.ODT.Arrows.State import Text.Pandoc.Readers.ODT.Arrows.Utils import Text.Pandoc.Readers.ODT.Generic.Namespaces import Text.Pandoc.Readers.ODT.Generic.Utils import Text.Pandoc.Readers.ODT.Generic.Fallible -------------------------------------------------------------------------------- -- Basis types for readability -------------------------------------------------------------------------------- -- type ElementName = Text type AttributeName = Text type AttributeValue = Text type TextAttributeValue = Text -- type NameSpacePrefix = Text -- type NameSpacePrefixes nsID = M.Map nsID NameSpacePrefix -------------------------------------------------------------------------------- -- Main converter state -------------------------------------------------------------------------------- -- GADT so some of the NameSpaceID restrictions can be deduced data XMLConverterState nsID extraState where XMLConverterState :: NameSpaceID nsID => { -- | A stack of parent elements. The top element is the current one. -- Arguably, a real Zipper would be better. But that is an -- optimization that can be made at a later time, e.g. when -- replacing Text.XML.Light. parentElements :: [XML.Element] -- | A map from internal namespace IDs to the namespace prefixes -- used in XML elements , namespacePrefixes :: NameSpacePrefixes nsID -- | A map from internal namespace IDs to namespace IRIs -- (Only necessary for matching namespace IDs and prefixes) , namespaceIRIs :: NameSpaceIRIs nsID -- | A place to put "something else". This feature is used heavily -- to keep the main code cleaner. More specifically, the main reader -- is divided into different stages. Each stage lifts something up -- here, which the next stage can then use. This could of course be -- generalized to a state-tree or used for the namespace IRIs. The -- border between states and values is an imaginary one, after all. -- But the separation as it is seems to be enough for now. , moreState :: extraState } -> XMLConverterState nsID extraState -- createStartState :: (NameSpaceID nsID) => XML.Element -> extraState -> XMLConverterState nsID extraState createStartState element extraState = XMLConverterState { parentElements = [element] , namespacePrefixes = M.empty , namespaceIRIs = getInitialIRImap , moreState = extraState } -- | Functor over extra state instance Functor (XMLConverterState nsID) where fmap f ( XMLConverterState parents prefixes iRIs extraState ) = XMLConverterState parents prefixes iRIs (f extraState) -- replaceExtraState :: extraState -> XMLConverterState nsID _x -> XMLConverterState nsID extraState replaceExtraState x s = fmap (const x) s -- currentElement :: XMLConverterState nsID extraState -> XML.Element currentElement state = head (parentElements state) -- | Replace the current position by another, modifying the extra state -- in the process swapStack' :: XMLConverterState nsID extraState -> [XML.Element] -> ( XMLConverterState nsID extraState , [XML.Element] ) swapStack' state stack = ( state { parentElements = stack } , parentElements state ) -- pushElement :: XML.Element -> XMLConverterState nsID extraState -> XMLConverterState nsID extraState pushElement e state = state { parentElements = e:parentElements state } -- | Pop the top element from the call stack, unless it is the last one. popElement :: XMLConverterState nsID extraState -> Maybe (XMLConverterState nsID extraState) popElement state | _:es@(_:_) <- parentElements state = Just $ state { parentElements = es } | otherwise = Nothing -------------------------------------------------------------------------------- -- Main type -------------------------------------------------------------------------------- -- It might be a good idea to pack the converters in a GADT -- Downside: data instead of type -- Upside: 'Failure' could be made a parameter as well. -- type XMLConverter nsID extraState input output = ArrowState (XMLConverterState nsID extraState ) input output type FallibleXMLConverter nsID extraState input output = XMLConverter nsID extraState input (Fallible output) -- runConverter :: XMLConverter nsID extraState input output -> XMLConverterState nsID extraState -> input -> output runConverter converter state input = snd $ runArrowState converter (state,input) runConverter' :: (NameSpaceID nsID) => FallibleXMLConverter nsID extraState () success -> extraState -> XML.Element -> Fallible success runConverter' converter extraState element = runConverter (readNSattributes >>? converter) (createStartState element extraState) () -- getCurrentElement :: XMLConverter nsID extraState x XML.Element getCurrentElement = extractFromState currentElement -- getExtraState :: XMLConverter nsID extraState x extraState getExtraState = extractFromState moreState -- setExtraState :: XMLConverter nsID extraState extraState extraState setExtraState = withState $ \state extra -> (replaceExtraState extra state , extra) -- | Lifts a function to the extra state. modifyExtraState :: (extraState -> extraState) -> XMLConverter nsID extraState x x modifyExtraState = modifyState.fmap -- | First sets the extra state to the new value. Then modifies the original -- extra state with a converter that uses the new state. Finally, the -- intermediate state is dropped and the extra state is lifted into the -- state as it was at the beginning of the function. -- As a result, exactly the extra state and nothing else is changed. -- The resulting converter even behaves like an identity converter on the -- value level. -- -- (The -ing form is meant to be mnemonic in a sequence of arrows as in -- convertingExtraState () converter >>> doOtherStuff) -- convertingExtraState :: extraState' -> FallibleXMLConverter nsID extraState' extraState extraState -> FallibleXMLConverter nsID extraState x x convertingExtraState v a = withSubStateF setVAsExtraState modifyWithA where setVAsExtraState = liftAsSuccess $ extractFromState id >>^ replaceExtraState v modifyWithA = keepingTheValue (moreState ^>> a) >>^ spreadChoice >>?% flip replaceExtraState -- | First sets the extra state to the new value. Then produces a new -- extra state with a converter that uses the new state. Finally, the -- intermediate state is dropped and the extra state is lifted into the -- state as it was at the beginning of the function. -- As a result, exactly the extra state and nothing else is changed. -- The resulting converter even behaves like an identity converter on the -- value level. -- -- Equivalent to -- -- > \v x a -> convertingExtraState v (returnV x >>> a) -- -- (The -ing form is meant to be mnemonic in a sequence of arrows as in -- producingExtraState () () producer >>> doOtherStuff) -- producingExtraState :: extraState' -> a -> FallibleXMLConverter nsID extraState' a extraState -> FallibleXMLConverter nsID extraState x x producingExtraState v x a = convertingExtraState v (returnV x >>> a) -------------------------------------------------------------------------------- -- Work in namespaces -------------------------------------------------------------------------------- -- | Arrow version of 'getIRI' lookupNSiri :: (NameSpaceID nsID) => nsID -> XMLConverter nsID extraState x (Maybe NameSpaceIRI) lookupNSiri nsID = extractFromState $ \state -> getIRI nsID $ namespaceIRIs state -- lookupNSprefix :: (NameSpaceID nsID) => nsID -> XMLConverter nsID extraState x (Maybe NameSpacePrefix) lookupNSprefix nsID = extractFromState $ \state -> M.lookup nsID $ namespacePrefixes state -- | Extracts namespace attributes from the current element and tries to -- update the current mapping accordingly readNSattributes :: (NameSpaceID nsID) => FallibleXMLConverter nsID extraState x () readNSattributes = fromState $ \state -> maybe (state, failEmpty ) ( , succeedWith ()) (extractNSAttrs state ) where extractNSAttrs :: (NameSpaceID nsID) => XMLConverterState nsID extraState -> Maybe (XMLConverterState nsID extraState) extractNSAttrs startState = foldl' (\state d -> state >>= addNS d) (Just startState) nsAttribs where nsAttribs = mapMaybe readNSattr (XML.elAttribs element) element = currentElement startState readNSattr (XML.Attr (XML.QName name _ (Just "xmlns")) iri) = Just (name, iri) readNSattr _ = Nothing addNS (prefix, iri) state = fmap updateState $ getNamespaceID iri $ namespaceIRIs state where updateState (iris,nsID) = state { namespaceIRIs = iris , namespacePrefixes = M.insert nsID prefix $ namespacePrefixes state } -------------------------------------------------------------------------------- -- Common namespace accessors -------------------------------------------------------------------------------- -- | Given a namespace id and an element name, creates a 'XML.QName' for -- internal use qualifyName :: (NameSpaceID nsID) => nsID -> ElementName -> XMLConverter nsID extraState x XML.QName qualifyName nsID name = lookupNSiri nsID &&& lookupNSprefix nsID >>% XML.QName name -- | Checks if a given element matches both a specified namespace id -- and a predicate elemNameMatches :: (NameSpaceID nsID) => nsID -> (ElementName -> Bool) -> XMLConverter nsID extraState XML.Element Bool elemNameMatches nsID f = keepingTheValue (lookupNSiri nsID) >>% hasMatchingName where hasMatchingName e iri = let name = XML.elName e in f (XML.qName name) && XML.qURI name == iri -- | Checks if a given element matches both a specified namespace id -- and a specified element name elemNameIs :: (NameSpaceID nsID) => nsID -> ElementName -> XMLConverter nsID extraState XML.Element Bool elemNameIs nsID name = elemNameMatches nsID (== name) -------------------------------------------------------------------------------- -- General content -------------------------------------------------------------------------------- elName :: XML.Element -> ElementName elName = XML.qName . XML.elName -- elContent :: XMLConverter nsID extraState x [XML.Content] elContent = getCurrentElement >>^ XML.elContent -------------------------------------------------------------------------------- -- Children -------------------------------------------------------------------------------- -- -- findChildren :: (NameSpaceID nsID) => nsID -> ElementName -> XMLConverter nsID extraState x [XML.Element] findChildren nsID name = qualifyName nsID name &&& getCurrentElement >>% XML.findChildren -- findChild' :: (NameSpaceID nsID) => nsID -> ElementName -> XMLConverter nsID extraState x (Maybe XML.Element) findChild' nsID name = qualifyName nsID name &&& getCurrentElement >>% XML.findChild -- findChild :: (NameSpaceID nsID) => nsID -> ElementName -> FallibleXMLConverter nsID extraState x XML.Element findChild nsID name = findChild' nsID name >>> maybeToChoice filterChildrenName' :: (NameSpaceID nsID) => nsID -> (ElementName -> Bool) -> XMLConverter nsID extraState x [XML.Element] filterChildrenName' nsID f = getCurrentElement >>> arr XML.elChildren >>> iterateS (keepingTheValue (elemNameMatches nsID f)) >>> arr (map fst . filter snd) -------------------------------------------------------------------------------- -- Attributes -------------------------------------------------------------------------------- -- isSet' :: (NameSpaceID nsID) => nsID -> AttributeName -> XMLConverter nsID extraState x (Maybe Bool) isSet' nsID attrName = findAttr' nsID attrName >>^ (>>= stringToBool') isSetWithDefault :: (NameSpaceID nsID) => nsID -> AttributeName -> Bool -> XMLConverter nsID extraState x Bool isSetWithDefault nsID attrName def' = isSet' nsID attrName >>^ fromMaybe def' -- | Lookup value in a dictionary, fail if no attribute found or value -- not in dictionary searchAttrIn :: (NameSpaceID nsID) => nsID -> AttributeName -> [(AttributeValue,a)] -> FallibleXMLConverter nsID extraState x a searchAttrIn nsID attrName dict = findAttr nsID attrName >>?^? maybeToChoice.(`lookup` dict ) -- | Lookup value in a dictionary. If attribute or value not found, -- return default value searchAttr :: (NameSpaceID nsID) => nsID -> AttributeName -> a -> [(AttributeValue,a)] -> XMLConverter nsID extraState x a searchAttr nsID attrName defV dict = searchAttrIn nsID attrName dict >>> const defV ^|||^ id -- | Read a 'Lookupable' attribute. Fail if no match. lookupAttr :: (NameSpaceID nsID, Lookupable a) => nsID -> AttributeName -> FallibleXMLConverter nsID extraState x a lookupAttr nsID attrName = lookupAttr' nsID attrName >>^ maybeToChoice -- | Read a 'Lookupable' attribute. Return the result as a 'Maybe'. lookupAttr' :: (NameSpaceID nsID, Lookupable a) => nsID -> AttributeName -> XMLConverter nsID extraState x (Maybe a) lookupAttr' nsID attrName = findAttr' nsID attrName >>^ (>>= readLookupable) -- | Read a 'Lookupable' attribute with explicit default lookupAttrWithDefault :: (NameSpaceID nsID, Lookupable a) => nsID -> AttributeName -> a -> XMLConverter nsID extraState x a lookupAttrWithDefault nsID attrName deflt = lookupAttr' nsID attrName >>^ fromMaybe deflt -- | Read a 'Lookupable' attribute with implicit default lookupDefaultingAttr :: (NameSpaceID nsID, Lookupable a, Default a) => nsID -> AttributeName -> XMLConverter nsID extraState x a lookupDefaultingAttr nsID attrName = lookupAttrWithDefault nsID attrName def -- | Return value as a (Maybe Text) findAttr' :: (NameSpaceID nsID) => nsID -> AttributeName -> XMLConverter nsID extraState x (Maybe AttributeValue) findAttr' nsID attrName = qualifyName nsID attrName &&& getCurrentElement >>% XML.findAttr -- | Return value as a (Maybe Text) findAttrText' :: (NameSpaceID nsID) => nsID -> AttributeName -> XMLConverter nsID extraState x (Maybe TextAttributeValue) findAttrText' nsID attrName = qualifyName nsID attrName &&& getCurrentElement >>% XML.findAttr -- | Return value as string or fail findAttr :: (NameSpaceID nsID) => nsID -> AttributeName -> FallibleXMLConverter nsID extraState x AttributeValue findAttr nsID attrName = findAttr' nsID attrName >>> maybeToChoice -- | Return value as text or fail findAttrText :: (NameSpaceID nsID) => nsID -> AttributeName -> FallibleXMLConverter nsID extraState x TextAttributeValue findAttrText nsID attrName = findAttr' nsID attrName >>> maybeToChoice -- | Return value as string or return provided default value findAttrTextWithDefault :: (NameSpaceID nsID) => nsID -> AttributeName -> TextAttributeValue -> XMLConverter nsID extraState x TextAttributeValue findAttrTextWithDefault nsID attrName deflt = findAttr' nsID attrName >>^ fromMaybe deflt -- | Read and return value or fail readAttr :: (NameSpaceID nsID, Read attrValue) => nsID -> AttributeName -> FallibleXMLConverter nsID extraState x attrValue readAttr nsID attrName = readAttr' nsID attrName >>> maybeToChoice -- | Read and return value or return Nothing readAttr' :: (NameSpaceID nsID, Read attrValue) => nsID -> AttributeName -> XMLConverter nsID extraState x (Maybe attrValue) readAttr' nsID attrName = findAttr' nsID attrName >>^ (>>= tryToRead) -- | Read and return value or return provided default value readAttrWithDefault :: (NameSpaceID nsID, Read attrValue) => nsID -> AttributeName -> attrValue -> XMLConverter nsID extraState x attrValue readAttrWithDefault nsID attrName deflt = findAttr' nsID attrName >>^ (>>= tryToRead) >>^ fromMaybe deflt -- | Read and return value or return default value from 'Default' instance getAttr :: (NameSpaceID nsID, Read attrValue, Default attrValue) => nsID -> AttributeName -> XMLConverter nsID extraState x attrValue getAttr nsID attrName = readAttrWithDefault nsID attrName def -------------------------------------------------------------------------------- -- Movements -------------------------------------------------------------------------------- -- jumpThere :: XMLConverter nsID extraState XML.Element XML.Element jumpThere = withState (\state element -> ( pushElement element state , element ) ) -- swapStack :: XMLConverter nsID extraState [XML.Element] [XML.Element] swapStack = withState swapStack' -- jumpBack :: FallibleXMLConverter nsID extraState _x _x jumpBack = tryModifyState (popElement >>> maybeToChoice) -- | Support function for "procedural" converters: jump to an element, execute -- a converter, jump back. -- This version is safer than 'executeThere', because it does not rely on the -- internal stack. As a result, the converter can not move around in arbitrary -- ways. The downside is of course that some of the environment is not -- accessible to the converter. switchingTheStack :: XMLConverter nsID moreState a b -> XMLConverter nsID moreState (a, XML.Element) b switchingTheStack a = second ( (:[]) ^>> swapStack ) >>> first a >>> second swapStack >>^ fst -- | Support function for "procedural" converters: jumps to an element, executes -- a converter, jumps back. -- Make sure that the converter is well-behaved; that is it should -- return to the exact position it started from in /every possible path/ of -- execution, even if it "fails". If it does not, you may encounter -- strange bugs. If you are not sure about the behaviour or want to use -- shortcuts, you can often use 'switchingTheStack' instead. executeThere :: FallibleXMLConverter nsID moreState a b -> FallibleXMLConverter nsID moreState (a, XML.Element) b executeThere a = second jumpThere >>> fst ^>> a >>> jumpBack -- >>? jumpBack would not ensure the jump. >>^ collapseEither -- | Do something in a specific element, then come back executeIn :: XMLConverter nsID extraState XML.Element s -> XMLConverter nsID extraState XML.Element s executeIn a = duplicate >>> switchingTheStack a -- | Do something in a sub-element, then come back executeInSub :: (NameSpaceID nsID) => nsID -> ElementName -> FallibleXMLConverter nsID extraState f s -> FallibleXMLConverter nsID extraState f s executeInSub nsID name a = keepingTheValue (findChild nsID name) >>> ignoringState liftFailure >>? switchingTheStack a where liftFailure (_, Left f) = Left f liftFailure (x, Right e) = Right (x, e) -------------------------------------------------------------------------------- -- Iterating over children -------------------------------------------------------------------------------- -- Helper converter to prepare different types of iterations. -- It lifts the children (of a certain type) of the current element -- into the value level and pairs each one with the current input value. prepareIteration :: (NameSpaceID nsID) => nsID -> ElementName -> XMLConverter nsID extraState b [(b, XML.Element)] prepareIteration nsID name = keepingTheValue (findChildren nsID name) >>% distributeValue -- withEveryL :: (NameSpaceID nsID) => nsID -> ElementName -> FallibleXMLConverter nsID extraState a b -> FallibleXMLConverter nsID extraState a [b] withEveryL = withEvery -- | Applies a converter to every child element of a specific type. -- Collects results in a 'MonadPlus'. -- Fails completely if any conversion fails. withEvery :: (NameSpaceID nsID, MonadPlus m) => nsID -> ElementName -> FallibleXMLConverter nsID extraState a b -> FallibleXMLConverter nsID extraState a (m b) withEvery nsID name a = prepareIteration nsID name >>> iterateS' (switchingTheStack a) -- | Applies a converter to every child element of a specific type. -- Collects all successful results in a list. tryAll :: (NameSpaceID nsID) => nsID -> ElementName -> FallibleXMLConverter nsID extraState b a -> XMLConverter nsID extraState b [a] tryAll nsID name a = prepareIteration nsID name >>> iterateS (switchingTheStack a) >>^ rights -------------------------------------------------------------------------------- -- Matching children -------------------------------------------------------------------------------- type IdXMLConverter nsID moreState x = XMLConverter nsID moreState x x type MaybeCConverter nsID moreState x = Maybe (IdXMLConverter nsID moreState (x, XML.Content)) -- Chainable converter that helps deciding which converter to actually use. type ContentMatchConverter nsID extraState x = IdXMLConverter nsID extraState (MaybeCConverter nsID extraState x, XML.Content) -- Helper function: The @c@ is actually a converter that is to be selected by -- matching XML content to the first two parameters. -- The fold used to match elements however is very simple, so to use it, -- this function wraps the converter in another converter that unifies -- the accumulator. Think of a lot of converters with the resulting type -- chained together. The accumulator not only transports the element -- unchanged to the next matcher, it also does the actual selecting by -- combining the intermediate results with '(<|>)'. makeMatcherC :: (NameSpaceID nsID) => nsID -> ElementName -> FallibleXMLConverter nsID extraState a a -> ContentMatchConverter nsID extraState a makeMatcherC nsID name c = ( second ( contentToElem >>> returnV Nothing ||| ( elemNameIs nsID name >>^ bool Nothing (Just cWithJump) ) ) >>% (<|>) ) &&&^ snd where cWithJump = ( fst ^&&& ( second contentToElem >>> spreadChoice ^>>? executeThere c ) >>% recover) &&&^ snd contentToElem :: FallibleXMLConverter nsID extraState XML.Content XML.Element contentToElem = arr $ \case XML.Elem e' -> succeedWith e' _ -> failEmpty -- Creates and chains a bunch of matchers prepareMatchersC :: (NameSpaceID nsID) => [(nsID, ElementName, FallibleXMLConverter nsID extraState x x)] -> ContentMatchConverter nsID extraState x --prepareMatchersC = foldSs . (map $ uncurry3 makeMatcherC) prepareMatchersC = reverseComposition . map (uncurry3 makeMatcherC) -- | Takes a list of element-data - converter groups and -- * Finds all content of the current element -- * Matches each group to each piece of content in order -- (at most one group per piece of content) -- * Filters non-matched content -- * Chains all found converters in content-order -- * Applies the chain to the input element matchContent' :: (NameSpaceID nsID) => [(nsID, ElementName, FallibleXMLConverter nsID extraState a a)] -> XMLConverter nsID extraState a a matchContent' lookups = matchContent lookups (arr fst) -- | Takes a list of element-data - converter groups and -- * Finds all content of the current element -- * Matches each group to each piece of content in order -- (at most one group per piece of content) -- * Adds a default converter for all non-matched content -- * Chains all found converters in content-order -- * Applies the chain to the input element matchContent :: (NameSpaceID nsID) => [(nsID, ElementName, FallibleXMLConverter nsID extraState a a)] -> XMLConverter nsID extraState (a,XML.Content) a -> XMLConverter nsID extraState a a matchContent lookups fallback = let matcher = prepareMatchersC lookups in keepingTheValue ( elContent >>> map (Nothing,) ^>> iterateSL matcher >>^ map swallowOrFallback -- >>> foldSs >>> reverseComposition ) >>> swap ^>> app where -- let the converter swallow the content and drop the content -- in the return value swallowOrFallback (Just converter,content) = (,content) ^>> converter >>^ fst swallowOrFallback (Nothing ,content) = (,content) ^>> fallback -------------------------------------------------------------------------------- -- Internals -------------------------------------------------------------------------------- stringToBool' :: Text -> Maybe Bool stringToBool' val | val `elem` trueValues = Just True | val `elem` falseValues = Just False | otherwise = Nothing where trueValues = ["true" ,"on" ,"1"] falseValues = ["false","off","0"] distributeValue :: a -> [b] -> [(a,b)] distributeValue = map.(,) -------------------------------------------------------------------------------- {- NOTES It might be a good idea to refactor the namespace stuff. E.g.: if a namespace constructor took a string as a parameter, things like > a ?>/< (NsText,"body") would be nicer. Together with a rename and some trickery, something like > |< NsText "body" >< NsText "p" ?> a | might even be possible. Some day, XML.Light should be replaced by something better. While doing that, it might be useful to replace String as the type of element names with something else, too. (Of course with OverloadedStrings). While doing that, maybe the types can be created in a way that something like > NsText:"body" could be used. Overloading (:) does not sounds like the best idea, but if the element name type was a list, this might be possible. Of course that would be a bit hackish, so the "right" way would probably be something like > InNS NsText "body" but isn't that a bit boring? ;) -} ����������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/ODT/Namespaces.hs����������������������������������������������0000644�0000000�0000000�00000010413�07346545000�020517� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Reader.ODT.Namespaces Copyright : Copyright (C) 2015 Martin Linnemann License : GNU GPL, version 2 or above Maintainer : Martin Linnemann Stability : alpha Portability : portable Namespaces used in odt files. -} module Text.Pandoc.Readers.ODT.Namespaces ( Namespace (..) ) where import qualified Data.Map as M (empty, insert) import Data.Maybe (fromMaybe, listToMaybe) import Data.Text (Text) import qualified Data.Text as T import Text.Pandoc.Readers.ODT.Generic.Namespaces instance NameSpaceID Namespace where getInitialIRImap = nsIDmap getNamespaceID "" m = Just(m, NsXML) getNamespaceID iri m = asPair $ fromMaybe (NsOther iri) (findID iri) where asPair nsID = Just (M.insert nsID iri m, nsID) findID :: NameSpaceIRI -> Maybe Namespace findID iri = listToMaybe [nsID | (iri',nsID) <- nsIDs, iri' `T.isPrefixOf` iri] nsIDmap :: NameSpaceIRIs Namespace nsIDmap = foldr (uncurry $ flip M.insert) M.empty nsIDs data Namespace = -- Open Document core NsOffice | NsStyle | NsText | NsTable | NsForm | NsDraw | Ns3D | NsAnim | NsChart | NsConfig | NsDB | NsMeta | NsNumber | NsScript | NsManifest | NsPresentation -- Metadata | NsODF -- Compatible elements | NsXSL_FO | NsSVG | NsSmil -- External standards | NsMathML | NsXForms | NsXLink | NsXHtml | NsGRDDL | NsDublinCore -- Metadata manifest | NsPKG -- Others | NsOpenFormula -- Core XML (basically only for the 'id'-attribute) | NsXML -- Fallback | NsOther Text deriving ( Eq, Ord, Show ) -- | Not the actual iri's, but large prefixes of them - this way there are -- less versioning problems and the like. nsIDs :: [(Text, Namespace)] nsIDs = [ ("urn:oasis:names:tc:opendocument:xmlns:animation" , NsAnim ), ("urn:oasis:names:tc:opendocument:xmlns:chart" , NsChart ), ("urn:oasis:names:tc:opendocument:xmlns:config" , NsConfig ), ("urn:oasis:names:tc:opendocument:xmlns:database" , NsDB ), ("urn:oasis:names:tc:opendocument:xmlns:dr3d" , Ns3D ), ("urn:oasis:names:tc:opendocument:xmlns:drawing" , NsDraw ), ("urn:oasis:names:tc:opendocument:xmlns:form" , NsForm ), ("urn:oasis:names:tc:opendocument:xmlns:manifest" , NsManifest ), ("urn:oasis:names:tc:opendocument:xmlns:meta" , NsMeta ), ("urn:oasis:names:tc:opendocument:xmlns:datastyle" , NsNumber ), ("urn:oasis:names:tc:opendocument:xmlns:of" , NsOpenFormula ), ("urn:oasis:names:tc:opendocument:xmlns:office:1.0" , NsOffice ), ("urn:oasis:names:tc:opendocument:xmlns:presentation" , NsPresentation ), ("urn:oasis:names:tc:opendocument:xmlns:script" , NsScript ), ("urn:oasis:names:tc:opendocument:xmlns:style" , NsStyle ), ("urn:oasis:names:tc:opendocument:xmlns:table" , NsTable ), ("urn:oasis:names:tc:opendocument:xmlns:text" , NsText ), ("urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible", NsXSL_FO ), ("urn:oasis:names:tc:opendocument:xmlns:smil-compatible" , NsSmil ), ("urn:oasis:names:tc:opendocument:xmlns:svg-compatible" , NsSVG ), ("http://docs.oasis-open.org/ns/office/1.2/meta/odf" , NsODF ), ("http://docs.oasis-open.org/ns/office/1.2/meta/pkg" , NsPKG ), ("http://purl.org/dc/elements" , NsDublinCore ), ("http://www.w3.org/2003/g/data-view" , NsGRDDL ), ("http://www.w3.org/1998/Math/MathML" , NsMathML ), ("http://www.w3.org/1999/xhtml" , NsXHtml ), ("http://www.w3.org/2002/xforms" , NsXForms ), ("http://www.w3.org/1999/xlink" , NsXLink ) ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/ODT/StyleReader.hs���������������������������������������������0000644�0000000�0000000�00000061452�07346545000�020674� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE CPP #-} {-# LANGUAGE Arrows #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TupleSections #-} {-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Readers.ODT.StyleReader Copyright : Copyright (C) 2015 Martin Linnemann License : GNU GPL, version 2 or above Maintainer : Martin Linnemann Stability : alpha Portability : portable Reader for the style information in an odt document. -} module Text.Pandoc.Readers.ODT.StyleReader ( Style (..) , StyleName , StyleFamily (..) , Styles (..) , StyleProperties (..) , TextProperties (..) , ParaProperties (..) , VerticalTextPosition (..) , ListItemNumberFormat (..) , ListLevel , ListStyle (..) , ListLevelStyle (..) , ListLevelType (..) , LengthOrPercent (..) , lookupStyle , getListLevelStyle , getStyleFamily , lookupDefaultStyle' , lookupListStyleByName , extendedStylePropertyChain , readStylesAt ) where import Prelude hiding (Applicative(..)) import Control.Applicative hiding (liftA, liftA2, liftA3) import Control.Arrow import Data.Default import qualified Data.Foldable as F import Data.List (unfoldr, foldl') import qualified Data.Map as M import Data.Maybe import Data.Text (Text) import qualified Data.Text as T import qualified Data.Set as S import qualified Text.Pandoc.XML.Light as XML import Text.Pandoc.Shared (safeRead, tshow) import Text.Pandoc.Readers.ODT.Arrows.Utils import Text.Pandoc.Readers.ODT.Generic.Fallible import qualified Text.Pandoc.Readers.ODT.Generic.SetMap as SM import Text.Pandoc.Readers.ODT.Generic.Utils import Text.Pandoc.Readers.ODT.Generic.XMLConverter import Text.Pandoc.Readers.ODT.Base import Text.Pandoc.Readers.ODT.Namespaces readStylesAt :: XML.Element -> Fallible Styles readStylesAt e = runConverter' readAllStyles mempty e -------------------------------------------------------------------------------- -- Reader for font declarations and font pitches -------------------------------------------------------------------------------- -- Pandoc has no support for different font pitches. Yet knowing them can be -- very helpful in cases where Pandoc has more semantics than OpenDocument. -- In these cases, the pitch can help deciding as what to define a block of -- text. So let's start with a type for font pitches: data FontPitch = PitchVariable | PitchFixed deriving ( Eq, Show ) instance Lookupable FontPitch where lookupTable = [ ("variable" , PitchVariable) , ("fixed" , PitchFixed ) ] instance Default FontPitch where def = PitchVariable -- The font pitch can be specified in a style directly. Normally, however, -- it is defined in the font. That is also the specs' recommendation. -- -- Thus, we want type FontFaceName = Text type FontPitches = M.Map FontFaceName FontPitch -- To get there, the fonts have to be read and the pitches extracted. -- But the resulting map are only needed at one later place, so it should not be -- transported on the value level, especially as we already use a state arrow. -- So instead, the resulting map is lifted into the state of the reader. -- (An alternative might be ImplicitParams, but again, we already have a state.) -- -- So the main style readers will have the types type StyleReader a b = XMLReader FontPitches a b -- and type StyleReaderSafe a b = XMLReaderSafe FontPitches a b -- respectively. -- -- But before we can work with these, we need to define the reader that reads -- the fonts: -- | A reader for font pitches fontPitchReader :: XMLReader _s _x FontPitches fontPitchReader = executeInSub NsOffice "font-face-decls" ( withEveryL NsStyle "font-face" (liftAsSuccess ( findAttr' NsStyle "name" &&& lookupDefaultingAttr NsStyle "font-pitch" )) >>?^ ( M.fromList . foldl' accumLegalPitches [] ) ) `ifFailedDo` returnV (Right M.empty) where accumLegalPitches ls (Nothing,_) = ls accumLegalPitches ls (Just n,p) = (n,p):ls -- | A wrapper around the font pitch reader that lifts the result into the -- state. readFontPitches :: StyleReader x x readFontPitches = producingExtraState () () fontPitchReader -- | Looking up a pitch in the state of the arrow. -- -- The function does the following: -- * Look for the font pitch in an attribute. -- * If that fails, look for the font name, look up the font in the state -- and use the pitch from there. -- * Return the result in a Maybe -- findPitch :: XMLReaderSafe FontPitches _x (Maybe FontPitch) findPitch = ( lookupAttr NsStyle "font-pitch" `ifFailedDo` findAttr NsStyle "font-name" >>? ( keepingTheValue getExtraState >>% M.lookup >>^ maybeToChoice ) ) >>> choiceToMaybe -------------------------------------------------------------------------------- -- Definitions of main data -------------------------------------------------------------------------------- type StyleName = Text -- | There are two types of styles: named styles with a style family and an -- optional style parent, and default styles for each style family, -- defining default style properties data Styles = Styles { stylesByName :: M.Map StyleName Style , listStylesByName :: M.Map StyleName ListStyle , defaultStyleMap :: M.Map StyleFamily StyleProperties } deriving ( Show ) -- Styles from a monoid under union instance Semigroup Styles where (Styles sBn1 dSm1 lsBn1) <> (Styles sBn2 dSm2 lsBn2) = Styles (M.union sBn1 sBn2) (M.union dSm1 dSm2) (M.union lsBn1 lsBn2) instance Monoid Styles where mempty = Styles M.empty M.empty M.empty mappend = (<>) -- Not all families from the specifications are implemented, only those we need. -- But there are none that are not mentioned here. data StyleFamily = FaText | FaParagraph -- | FaTable | FaTableCell | FaTableColumn | FaTableRow -- | FaGraphic | FaDrawing | FaChart -- | FaPresentation -- | FaRuby deriving ( Eq, Ord, Show ) instance Lookupable StyleFamily where lookupTable = [ ( "text" , FaText ) , ( "paragraph" , FaParagraph ) -- , ( "table" , FaTable ) -- , ( "table-cell" , FaTableCell ) -- , ( "table-column" , FaTableColumn ) -- , ( "table-row" , FaTableRow ) -- , ( "graphic" , FaGraphic ) -- , ( "drawing-page" , FaDrawing ) -- , ( "chart" , FaChart ) -- , ( "presentation" , FaPresentation ) -- , ( "ruby" , FaRuby ) ] -- | A named style data Style = Style { styleFamily :: Maybe StyleFamily , styleParentName :: Maybe StyleName , listStyle :: Maybe StyleName , styleProperties :: StyleProperties } deriving ( Eq, Show ) data StyleProperties = SProps { textProperties :: Maybe TextProperties , paraProperties :: Maybe ParaProperties -- , tableColProperties :: Maybe TColProperties -- , tableRowProperties :: Maybe TRowProperties -- , tableCellProperties :: Maybe TCellProperties -- , tableProperties :: Maybe TableProperties -- , graphicProperties :: Maybe GraphProperties } deriving ( Eq, Show ) instance Default StyleProperties where def = SProps { textProperties = Just def , paraProperties = Just def } data TextProperties = PropT { isEmphasised :: Bool , isStrong :: Bool , pitch :: Maybe FontPitch , verticalPosition :: VerticalTextPosition , underline :: Maybe UnderlineMode , strikethrough :: Maybe UnderlineMode } deriving ( Eq, Show ) instance Default TextProperties where def = PropT { isEmphasised = False , isStrong = False , pitch = Just def , verticalPosition = def , underline = Nothing , strikethrough = Nothing } data ParaProperties = PropP { paraNumbering :: ParaNumbering , indentation :: LengthOrPercent , margin_left :: LengthOrPercent } deriving ( Eq, Show ) instance Default ParaProperties where def = PropP { paraNumbering = NumberingNone , indentation = def , margin_left = def } ---- -- All the little data types that make up the properties ---- data VerticalTextPosition = VPosNormal | VPosSuper | VPosSub deriving ( Eq, Show ) instance Default VerticalTextPosition where def = VPosNormal instance Read VerticalTextPosition where readsPrec _ s = [ (VPosSub , s') | ("sub" , s') <- lexS ] ++ [ (VPosSuper , s') | ("super" , s') <- lexS ] ++ [ (signumToVPos n , s') | ( n , s') <- readPercent s ] where lexS = lex s signumToVPos n | n < 0 = VPosSub | n > 0 = VPosSuper | otherwise = VPosNormal data UnderlineMode = UnderlineModeNormal | UnderlineModeSkipWhitespace deriving ( Eq, Show ) instance Lookupable UnderlineMode where lookupTable = [ ( "continuous" , UnderlineModeNormal ) , ( "skip-white-space" , UnderlineModeSkipWhitespace ) ] data ParaNumbering = NumberingNone | NumberingKeep | NumberingRestart Int deriving ( Eq, Show ) data LengthOrPercent = LengthValueMM Int | PercentValue Int deriving ( Eq, Show ) instance Default LengthOrPercent where def = LengthValueMM 0 instance Read LengthOrPercent where readsPrec _ s = [ (PercentValue percent , s' ) | (percent , s' ) <- readPercent s] ++ [ (LengthValueMM lengthMM , s'') | (length' , s' ) <- reads s , (unit , s'') <- reads s' , let lengthMM = estimateInMillimeter length' unit ] data XslUnit = XslUnitMM | XslUnitCM | XslUnitInch | XslUnitPoints | XslUnitPica | XslUnitPixel | XslUnitEM instance Show XslUnit where show XslUnitMM = "mm" show XslUnitCM = "cm" show XslUnitInch = "in" show XslUnitPoints = "pt" show XslUnitPica = "pc" show XslUnitPixel = "px" show XslUnitEM = "em" instance Read XslUnit where readsPrec _ "mm" = [(XslUnitMM , "")] readsPrec _ "cm" = [(XslUnitCM , "")] readsPrec _ "in" = [(XslUnitInch , "")] readsPrec _ "pt" = [(XslUnitPoints , "")] readsPrec _ "pc" = [(XslUnitPica , "")] readsPrec _ "px" = [(XslUnitPixel , "")] readsPrec _ "em" = [(XslUnitEM , "")] readsPrec _ _ = [] -- | Rough conversion of measures into millimetres. -- Pixels and em's are actually implementation dependent/relative measures, -- so I could not really easily calculate anything exact here even if I wanted. -- But I do not care about exactness right now, as I only use measures -- to determine if a paragraph is "indented" or not. estimateInMillimeter :: Double -> XslUnit -> Int estimateInMillimeter n XslUnitMM = round n estimateInMillimeter n XslUnitCM = round $ n * 10 estimateInMillimeter n XslUnitInch = round $ n * 25.4 estimateInMillimeter n XslUnitPoints = round $ n * (1/72) * 25.4 estimateInMillimeter n XslUnitPica = round $ n * 12 * (1/72) * 25.4 estimateInMillimeter n XslUnitPixel = round $ n * (1/72) * 25.4 estimateInMillimeter n XslUnitEM = round $ n * 16 * (1/72) * 25.4 ---- -- List styles ---- type ListLevel = Int newtype ListStyle = ListStyle { levelStyles :: M.Map ListLevel ListLevelStyle } deriving ( Eq, Show ) -- getListLevelStyle :: ListLevel -> ListStyle -> Maybe ListLevelStyle getListLevelStyle level ListStyle{..} = let (lower , exactHit , _) = M.splitLookup level levelStyles in exactHit <|> fmap fst (M.maxView lower) -- findBy (`M.lookup` levelStyles) [level, (level-1) .. 1] -- \^ simpler, but in general less efficient data ListLevelStyle = ListLevelStyle { listLevelType :: ListLevelType , listItemPrefix :: Maybe Text , listItemSuffix :: Maybe Text , listItemFormat :: ListItemNumberFormat , listItemStart :: Int } deriving ( Eq, Ord ) instance Show ListLevelStyle where show ListLevelStyle{..} = " listItemPrefix) ++ show listItemFormat ++ maybeToString (T.unpack <$> listItemSuffix) ++ ">" where maybeToString = fromMaybe "" data ListLevelType = LltBullet | LltImage | LltNumbered deriving ( Eq, Ord, Show ) data ListItemNumberFormat = LinfNone | LinfNumber | LinfRomanLC | LinfRomanUC | LinfAlphaLC | LinfAlphaUC | LinfString String deriving ( Eq, Ord ) instance Show ListItemNumberFormat where show LinfNone = "" show LinfNumber = "1" show LinfRomanLC = "i" show LinfRomanUC = "I" show LinfAlphaLC = "a" show LinfAlphaUC = "A" show (LinfString s) = s instance Default ListItemNumberFormat where def = LinfNone instance Read ListItemNumberFormat where readsPrec _ "" = [(LinfNone , "")] readsPrec _ "1" = [(LinfNumber , "")] readsPrec _ "i" = [(LinfRomanLC , "")] readsPrec _ "I" = [(LinfRomanUC , "")] readsPrec _ "a" = [(LinfAlphaLC , "")] readsPrec _ "A" = [(LinfAlphaUC , "")] readsPrec _ s = [(LinfString s , "")] -------------------------------------------------------------------------------- -- Readers -- -- ...it seems like a whole lot of this should be automatically derivable -- or at least moveable into a class. Most of this is data concealed in -- code. -------------------------------------------------------------------------------- -- readAllStyles :: StyleReader _x Styles readAllStyles = ( readFontPitches >>?! ( readAutomaticStyles &&& readStyles )) >>?%? chooseMax -- all top elements are always on the same hierarchy level -- readStyles :: StyleReader _x Styles readStyles = executeInSub NsOffice "styles" $ liftAsSuccess $ liftA3 Styles ( tryAll NsStyle "style" readStyle >>^ M.fromList ) ( tryAll NsText "list-style" readListStyle >>^ M.fromList ) ( tryAll NsStyle "default-style" readDefaultStyle >>^ M.fromList ) -- readAutomaticStyles :: StyleReader _x Styles readAutomaticStyles = executeInSub NsOffice "automatic-styles" $ liftAsSuccess $ liftA3 Styles ( tryAll NsStyle "style" readStyle >>^ M.fromList ) ( tryAll NsText "list-style" readListStyle >>^ M.fromList ) ( returnV M.empty ) -- readDefaultStyle :: StyleReader _x (StyleFamily, StyleProperties) readDefaultStyle = lookupAttr NsStyle "family" >>?! keepingTheValue readStyleProperties -- readStyle :: StyleReader _x (StyleName,Style) readStyle = findAttr NsStyle "name" >>?! keepingTheValue ( liftA4 Style ( lookupAttr' NsStyle "family" ) ( findAttr' NsStyle "parent-style-name" ) ( findAttr' NsStyle "list-style-name" ) readStyleProperties ) -- readStyleProperties :: StyleReaderSafe _x StyleProperties readStyleProperties = liftA2 SProps ( readTextProperties >>> choiceToMaybe ) ( readParaProperties >>> choiceToMaybe ) -- readTextProperties :: StyleReader _x TextProperties readTextProperties = executeInSub NsStyle "text-properties" $ liftAsSuccess ( liftA6 PropT ( searchAttr NsXSL_FO "font-style" False isFontEmphasised ) ( searchAttr NsXSL_FO "font-weight" False isFontBold ) findPitch ( getAttr NsStyle "text-position" ) readUnderlineMode readStrikeThroughMode ) where isFontEmphasised = [("normal",False),("italic",True),("oblique",True)] isFontBold = ("normal",False):("bold",True) :map ((,True) . tshow) ([100,200..900]::[Int]) readUnderlineMode :: StyleReaderSafe _x (Maybe UnderlineMode) readUnderlineMode = readLineMode "text-underline-mode" "text-underline-style" readStrikeThroughMode :: StyleReaderSafe _x (Maybe UnderlineMode) readStrikeThroughMode = readLineMode "text-line-through-mode" "text-line-through-style" readLineMode :: Text -> Text -> StyleReaderSafe _x (Maybe UnderlineMode) readLineMode modeAttr styleAttr = proc x -> do isUL <- searchAttr NsStyle styleAttr False isLinePresent -< x mode <- lookupAttr' NsStyle modeAttr -< x if isUL then case mode of Just m -> returnA -< Just m Nothing -> returnA -< Just UnderlineModeNormal else returnA -< Nothing where isLinePresent = ("none",False) : map (,True) [ "dash" , "dot-dash" , "dot-dot-dash" , "dotted" , "long-dash" , "solid" , "wave" ] -- readParaProperties :: StyleReader _x ParaProperties readParaProperties = executeInSub NsStyle "paragraph-properties" $ liftAsSuccess ( liftA3 PropP ( liftA2 readNumbering ( isSet' NsText "number-lines" ) ( readAttr' NsText "line-number" ) ) ( liftA2 readIndentation ( isSetWithDefault NsStyle "auto-text-indent" False ) ( getAttr NsXSL_FO "text-indent" ) ) ( getAttr NsXSL_FO "margin-left" ) ) where readNumbering (Just True) (Just n) = NumberingRestart n readNumbering (Just True) _ = NumberingKeep readNumbering _ _ = NumberingNone readIndentation False indent = indent readIndentation True _ = def ---- -- List styles ---- -- readListStyle :: StyleReader _x (StyleName, ListStyle) readListStyle = findAttr NsStyle "name" >>?! keepingTheValue ( liftA ListStyle $ liftA3 SM.union3 ( readListLevelStyles NsText "list-level-style-number" LltNumbered ) ( readListLevelStyles NsText "list-level-style-bullet" LltBullet ) ( readListLevelStyles NsText "list-level-style-image" LltImage ) >>^ M.mapMaybe chooseMostSpecificListLevelStyle ) -- readListLevelStyles :: Namespace -> ElementName -> ListLevelType -> StyleReaderSafe _x (SM.SetMap Int ListLevelStyle) readListLevelStyles namespace elementName levelType = tryAll namespace elementName (readListLevelStyle levelType) >>^ SM.fromList -- readListLevelStyle :: ListLevelType -> StyleReader _x (Int, ListLevelStyle) readListLevelStyle levelType = readAttr NsText "level" >>?! keepingTheValue ( liftA5 toListLevelStyle ( returnV levelType ) ( findAttr' NsStyle "num-prefix" ) ( findAttr' NsStyle "num-suffix" ) ( getAttr NsStyle "num-format" ) ( findAttrText' NsText "start-value" ) ) where toListLevelStyle _ p s LinfNone b = ListLevelStyle LltBullet p s LinfNone (startValue b) toListLevelStyle _ p s f@(LinfString _) b = ListLevelStyle LltBullet p s f (startValue b) toListLevelStyle t p s f b = ListLevelStyle t p s f (startValue b) startValue mbx = fromMaybe 1 (mbx >>= safeRead) -- chooseMostSpecificListLevelStyle :: S.Set ListLevelStyle -> Maybe ListLevelStyle chooseMostSpecificListLevelStyle ls = F.foldr select Nothing ls where select l Nothing = Just l select ( ListLevelStyle t1 p1 s1 f1 b1 ) ( Just ( ListLevelStyle t2 p2 s2 f2 _ )) = Just $ ListLevelStyle (select' t1 t2) (p1 <|> p2) (s1 <|> s2) (selectLinf f1 f2) b1 select' LltNumbered _ = LltNumbered select' _ LltNumbered = LltNumbered select' _ _ = LltBullet selectLinf LinfNone f2 = f2 selectLinf f1 LinfNone = f1 selectLinf (LinfString _) f2 = f2 selectLinf f1 (LinfString _) = f1 selectLinf f1 _ = f1 -------------------------------------------------------------------------------- -- Tools to access style data -------------------------------------------------------------------------------- -- lookupStyle :: StyleName -> Styles -> Maybe Style lookupStyle name Styles{..} = M.lookup name stylesByName -- lookupDefaultStyle' :: Styles -> StyleFamily -> StyleProperties lookupDefaultStyle' Styles{..} family = fromMaybe def (M.lookup family defaultStyleMap) -- lookupListStyleByName :: StyleName -> Styles -> Maybe ListStyle lookupListStyleByName name Styles{..} = M.lookup name listStylesByName -- | Returns a chain of parent of the current style. The direct parent will -- be the first element of the list, followed by its parent and so on. -- The current style is not in the list. parents :: Style -> Styles -> [Style] parents style styles = unfoldr findNextParent style -- Ha! where findNextParent Style{..} = fmap duplicate $ (`lookupStyle` styles) =<< styleParentName -- | Looks up the style family of the current style. Normally, every style -- should have one. But if not, all parents are searched. getStyleFamily :: Style -> Styles -> Maybe StyleFamily getStyleFamily style@Style{..} styles = styleFamily <|> F.asum (map (`getStyleFamily` styles) $ parents style styles) -- | Each 'Style' has certain 'StyleProperties'. But sometimes not all property -- values are specified. Instead, a value might be inherited from a -- parent style. This function makes this chain of inheritance -- concrete and easily accessible by encapsulating the necessary lookups. -- The resulting list contains the direct properties of the style as the first -- element, the ones of the direct parent element as the next one, and so on. -- -- Note: There should also be default properties for each style family. These -- are @not@ contained in this list because properties inherited from -- parent elements take precedence over default styles. -- -- This function is primarily meant to be used through convenience wrappers. -- stylePropertyChain :: Style -> Styles -> [StyleProperties] stylePropertyChain style styles = map styleProperties (style : parents style styles) -- extendedStylePropertyChain :: [Style] -> Styles -> [StyleProperties] extendedStylePropertyChain [] _ = [] extendedStylePropertyChain [style] styles = stylePropertyChain style styles ++ maybeToList (fmap (lookupDefaultStyle' styles) (getStyleFamily style styles)) extendedStylePropertyChain (style:trace) styles = stylePropertyChain style styles ++ extendedStylePropertyChain trace styles ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/OPML.hs��������������������������������������������������������0000644�0000000�0000000�00000010215�07346545000�016561� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Readers.OPML Copyright : Copyright (C) 2013-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Conversion of OPML to 'Pandoc' document. -} module Text.Pandoc.Readers.OPML ( readOPML ) where import Control.Monad.State.Strict import Data.Default import Data.Maybe (fromMaybe) import Data.Text (Text) import qualified Data.Text as T import qualified Data.Text.Lazy as TL import Text.Pandoc.Builder import Text.Pandoc.Class.PandocMonad (PandocMonad) import Text.Pandoc.Options import Text.Pandoc.Error (PandocError(..)) import Text.Pandoc.Readers.HTML (readHtml) import Text.Pandoc.Readers.Markdown (readMarkdown) import Text.Pandoc.Shared (blocksToInlines') import Text.Pandoc.Sources (ToSources(..), sourcesToText) import Text.Pandoc.XML.Light import Control.Monad.Except (throwError) type OPML m = StateT OPMLState m data OPMLState = OPMLState{ opmlSectionLevel :: Int , opmlDocTitle :: Inlines , opmlDocAuthors :: [Inlines] , opmlDocDate :: Inlines , opmlOptions :: ReaderOptions } deriving Show instance Default OPMLState where def = OPMLState{ opmlSectionLevel = 0 , opmlDocTitle = mempty , opmlDocAuthors = [] , opmlDocDate = mempty , opmlOptions = def } readOPML :: (PandocMonad m, ToSources a) => ReaderOptions -> a -> m Pandoc readOPML opts inp = do let sources = toSources inp (bs, st') <- runStateT (case parseXMLContents (TL.fromStrict . sourcesToText $ sources) of Left msg -> throwError $ PandocXMLError "" msg Right ns -> mapM parseBlock ns) def{ opmlOptions = opts } return $ setTitle (opmlDocTitle st') $ setAuthors (opmlDocAuthors st') $ setDate (opmlDocDate st') $ doc $ mconcat bs -- convenience function to get an attribute value, defaulting to "" attrValue :: Text -> Element -> Text attrValue attr elt = fromMaybe "" (lookupAttrBy (\x -> qName x == attr) (elAttribs elt)) -- exceptT :: PandocMonad m => Either PandocError a -> OPML m a -- exceptT = either throwError return asHtml :: PandocMonad m => Text -> OPML m Inlines asHtml s = do opts <- gets opmlOptions Pandoc _ bs <- readHtml def{ readerExtensions = readerExtensions opts } s return $ blocksToInlines' bs asMarkdown :: PandocMonad m => Text -> OPML m Blocks asMarkdown s = do opts <- gets opmlOptions Pandoc _ bs <- readMarkdown def{ readerExtensions = readerExtensions opts } s return $ fromList bs getBlocks :: PandocMonad m => Element -> OPML m Blocks getBlocks e = mconcat <$> mapM parseBlock (elContent e) parseBlock :: PandocMonad m => Content -> OPML m Blocks parseBlock (Elem e) = case qName (elName e) of "ownerName" -> mempty <$ modify (\st -> st{opmlDocAuthors = [text $ strContent e]}) "dateModified" -> mempty <$ modify (\st -> st{opmlDocDate = text $ strContent e}) "title" -> mempty <$ modify (\st -> st{opmlDocTitle = text $ strContent e}) "outline" -> gets opmlSectionLevel >>= sect . (+1) "?xml" -> return mempty _ -> getBlocks e where sect n = do headerText <- asHtml $ attrValue "text" e noteBlocks <- asMarkdown $ attrValue "_note" e modify $ \st -> st{ opmlSectionLevel = n } bs <- getBlocks e modify $ \st -> st{ opmlSectionLevel = n - 1 } let headerText' = case T.toUpper (attrValue "type" e) of "LINK" -> link (attrValue "url" e) "" headerText _ -> headerText return $ header n headerText' <> noteBlocks <> bs parseBlock _ = return mempty �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/Org.hs���������������������������������������������������������0000644�0000000�0000000�00000002610�07346545000�016541� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{- | Module : Text.Pandoc.Readers.Org Copyright : Copyright (C) 2014-2023 Albert Krewinkel License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel Conversion of org-mode formatted plain text to 'Pandoc' document. -} module Text.Pandoc.Readers.Org ( readOrg ) where import Text.Pandoc.Readers.Org.Blocks (blockList, meta) import Text.Pandoc.Readers.Org.ParserState (optionsToParserState) import Text.Pandoc.Readers.Org.Parsing (OrgParser, readWithM) import Text.Pandoc.Class.PandocMonad (PandocMonad) import Text.Pandoc.Definition import Text.Pandoc.Options import Text.Pandoc.Parsing (reportLogMessages) import Text.Pandoc.Sources (ToSources(..), ensureFinalNewlines) import Control.Monad.Except (throwError) import Control.Monad.Reader (runReaderT) -- | Parse org-mode string and return a Pandoc document. readOrg :: (PandocMonad m, ToSources a) => ReaderOptions -- ^ Reader options -> a -> m Pandoc readOrg opts s = do parsed <- flip runReaderT def $ readWithM parseOrg (optionsToParserState opts) (ensureFinalNewlines 2 (toSources s)) case parsed of Right result -> return result Left e -> throwError e -- -- Parser -- parseOrg :: PandocMonad m => OrgParser m Pandoc parseOrg = do blocks' <- blockList meta' <- meta reportLogMessages return $ Pandoc meta' blocks' ������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/Org/�����������������������������������������������������������0000755�0000000�0000000�00000000000�07346545000�016206� 5����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/Org/BlockStarts.hs���������������������������������������������0000644�0000000�0000000�00000010254�07346545000�020777� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Readers.Org.BlockStarts Copyright : Copyright (C) 2014-2023 Albert Krewinkel License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel Parsers for Org-mode inline elements. -} module Text.Pandoc.Readers.Org.BlockStarts ( exampleLineStart , hline , noteMarker , tableStart , drawerStart , headerStart , metaLineStart , latexEnvStart , commentLineStart , bulletListStart , orderedListStart , endOfBlock ) where import Control.Monad (void) import Data.Text (Text) import Text.Pandoc.Readers.Org.Parsing import Text.Pandoc.Definition as Pandoc import Text.Pandoc.Shared (safeRead) import Text.Pandoc.Parsing (lowerAlpha, upperAlpha) import Data.Functor (($>)) -- | Horizontal Line (five -- dashes or more) hline :: Monad m => OrgParser m () hline = try $ do skipSpaces string "-----" many (char '-') skipSpaces newline return () -- | Read the start of a header line, return the header level headerStart :: Monad m => OrgParser m Int headerStart = try $ (length <$> many1 (char '*')) <* many1 (char ' ') <* updateLastPreCharPos tableStart :: Monad m => OrgParser m Char tableStart = try $ skipSpaces *> char '|' gridTableStart :: Monad m => OrgParser m () gridTableStart = try $ skipSpaces <* char '+' <* char '-' latexEnvStart :: Monad m => OrgParser m Text latexEnvStart = try $ skipSpaces *> string "\\begin{" *> latexEnvName <* string "}" where latexEnvName :: Monad m => OrgParser m Text latexEnvName = try $ mappend <$> many1Char alphaNum <*> option "" (textStr "*") listCounterCookie :: Monad m => OrgParser m Int listCounterCookie = try $ string "[@" *> parseNum <* char ']' <* (skipSpaces <|> lookAhead eol) where parseNum = (safeRead =<< many1Char digit) <|> snd <$> lowerAlpha <|> snd <$> upperAlpha bulletListStart :: Monad m => OrgParser m Int bulletListStart = try $ do ind <- length <$> many spaceChar -- Unindented lists cannot use '*' bullets. oneOf (if ind == 0 then "+-" else "*+-") skipSpaces1 <|> lookAhead eol optionMaybe listCounterCookie return (ind + 1) eol :: Monad m => OrgParser m () eol = void (char '\n') orderedListStart :: Monad m => OrgParser m (Int, ListAttributes) orderedListStart = try $ do ind <- length <$> many spaceChar style <- choice styles delim <- choice delims skipSpaces1 <|> lookAhead eol start <- option 1 listCounterCookie return (ind + 1, (start, style, delim)) -- Ordered list markers allowed in org-mode where styles = [ many1Char digit $> Decimal , fst <$> lowerAlpha , fst <$> upperAlpha ] delims = [ char '.' $> Period , char ')' $> OneParen ] drawerStart :: Monad m => OrgParser m Text drawerStart = try $ skipSpaces *> drawerName <* skipSpaces <* newline where drawerName = char ':' *> manyTillChar nonspaceChar (char ':') metaLineStart :: Monad m => OrgParser m () metaLineStart = try $ skipSpaces <* string "#+" commentLineStart :: Monad m => OrgParser m () commentLineStart = try $ -- the first char after '#' must be a plain space character or a newline skipSpaces <* string "#" <* lookAhead (oneOf " \n") exampleLineStart :: Monad m => OrgParser m () exampleLineStart = () <$ try (skipSpaces *> string ": ") noteMarker :: Monad m => OrgParser m Text noteMarker = try $ do char '[' choice [ many1TillChar digit (char ']') , (<>) <$> textStr "fn:" <*> many1TillChar (noneOf "\n\r\t ") (char ']') ] -- | Succeeds if the parser is at the end of a block. endOfBlock :: Monad m => OrgParser m () endOfBlock = lookAhead . try $ void blankline <|> anyBlockStart where -- Succeeds if there is a new block starting at this position. anyBlockStart :: Monad m => OrgParser m () anyBlockStart = try . choice $ [ exampleLineStart , hline , metaLineStart , commentLineStart , gridTableStart , void noteMarker , void tableStart , void drawerStart , void headerStart , void latexEnvStart , void bulletListStart , void orderedListStart ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/Org/Blocks.hs��������������������������������������������������0000644�0000000�0000000�00000103575�07346545000�017772� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {- | Module : Text.Pandoc.Readers.Org.Blocks Copyright : Copyright (C) 2014-2023 Albert Krewinkel License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel Parsers for Org-mode block elements. -} module Text.Pandoc.Readers.Org.Blocks ( blockList , meta ) where import Text.Pandoc.Readers.Org.BlockStarts import Text.Pandoc.Readers.Org.DocumentTree (documentTree, unprunedHeadlineToBlocks) import Text.Pandoc.Readers.Org.Inlines import Text.Pandoc.Readers.Org.Meta (metaExport, metaKey, metaLine) import Text.Pandoc.Readers.Org.ParserState import Text.Pandoc.Readers.Org.Parsing import Text.Pandoc.Readers.Org.Shared (cleanLinkText, isImageFilename, originalLang, translateLang, exportsCode) import Text.Pandoc.Builder (Blocks, Inlines) import Text.Pandoc.Class.PandocMonad (PandocMonad) import Text.Pandoc.Definition import Text.Pandoc.Options import Text.Pandoc.Shared (compactify, compactifyDL, safeRead) import Control.Monad (foldM, guard, mzero, void) import Data.Char (isSpace) import Data.Default (Default) import Data.Functor (($>)) import Data.List (find, foldl') import Data.Maybe (fromMaybe, isJust, isNothing) import Data.Text (Text) import Data.List.NonEmpty (nonEmpty) import System.FilePath import qualified Data.Text as T import qualified Text.Pandoc.Builder as B import qualified Text.Pandoc.Walk as Walk import Text.Pandoc.Sources (ToSources(..)) -- -- parsing blocks -- -- | Get a list of blocks. blockList :: PandocMonad m => OrgParser m [Block] blockList = do fHeadlineTree <- documentTree blocks inline st <- getState let headlineTree = runF fHeadlineTree st unprunedHeadlineToBlocks headlineTree st -- | Get the meta information saved in the state. meta :: Monad m => OrgParser m Meta meta = do meta' <- metaExport runF meta' <$> getState blocks :: PandocMonad m => OrgParser m (F Blocks) blocks = mconcat <$> manyTill block (void (lookAhead headerStart) <|> eof) block :: PandocMonad m => OrgParser m (F Blocks) block = choice [ mempty <$ blanklines , table , orgBlock , figure , example , genericDrawer , include , specialLine , horizontalRule , list , latexFragment , noteBlock , rawOrgLine , paraOrPlain ] "block" -- | Parse a horizontal rule into a block element horizontalRule :: Monad m => OrgParser m (F Blocks) horizontalRule = return B.horizontalRule <$ try hline -- -- Block Attributes -- -- | Attributes that may be added to figures (like a name or caption). data BlockAttributes = BlockAttributes { blockAttrName :: Maybe Text , blockAttrCaption :: Maybe (F Inlines) , blockAttrKeyValues :: [(Text, Text)] } -- | Convert BlockAttributes into pandoc Attr attrFromBlockAttributes :: BlockAttributes -> Attr attrFromBlockAttributes BlockAttributes{..} = let ident = fromMaybe mempty $ lookup "id" blockAttrKeyValues classes = maybe [] T.words $ lookup "class" blockAttrKeyValues kv = filter ((`notElem` ["id", "class"]) . fst) blockAttrKeyValues in (ident, classes, kv) stringyMetaAttribute :: Monad m => OrgParser m (Text, Text) stringyMetaAttribute = try $ do metaLineStart attrName <- T.toLower <$> many1TillChar nonspaceChar (char ':') skipSpaces attrValue <- anyLine <|> ("" <$ newline) return (attrName, attrValue) -- | Parse a set of block attributes. Block attributes are given through -- lines like @#+caption: block caption@ or @#+attr_html: :width 20@. -- Parsing will fail if any line contains an attribute different from -- those attributes known to work on blocks. blockAttributes :: PandocMonad m => OrgParser m BlockAttributes blockAttributes = try $ do kv <- many stringyMetaAttribute guard $ all (isBlockAttr . fst) kv let caption = foldl' (appendValues "caption") Nothing kv let kvAttrs = foldl' (appendValues "attr_html") Nothing kv let name = snd <$> find ((`elem` ["name", "label"]) . fst) (reverse kv) caption' <- traverse (parseFromString inlines . (<> "\n")) caption kvAttrs' <- parseFromString keyValues . (<> "\n") $ fromMaybe mempty kvAttrs return BlockAttributes { blockAttrName = name , blockAttrCaption = caption' , blockAttrKeyValues = kvAttrs' } where isBlockAttr :: Text -> Bool isBlockAttr = flip elem [ "name", "label", "caption" , "attr_html", "attr_latex" , "results" ] appendValues :: Text -> Maybe Text -> (Text, Text) -> Maybe Text appendValues attrName accValue (key, value) = if key /= attrName then accValue else case accValue of Just acc -> Just $ acc <> " " <> value Nothing -> Just value -- | Parse key-value pairs for HTML attributes keyValues :: Monad m => OrgParser m [(Text, Text)] keyValues = try $ manyTill ((,) <$> key <*> value) newline where key :: Monad m => OrgParser m Text key = try $ skipSpaces *> char ':' *> many1Char nonspaceChar value :: Monad m => OrgParser m Text value = skipSpaces *> manyTillChar anyChar endOfValue endOfValue :: Monad m => OrgParser m () endOfValue = lookAhead (void $ try (many1 spaceChar <* key)) <|> try (skipSpaces <* lookAhead newline) -- -- Org Blocks (#+begin_... / #+end_...) -- -- | Read an org-mode block delimited by #+begin_type and #+end_type. orgBlock :: PandocMonad m => OrgParser m (F Blocks) orgBlock = try $ do blockAttrs <- blockAttributes blkType <- blockHeaderStart ($ blkType) $ case T.toLower blkType of "export" -> exportBlock "comment" -> rawBlockLines (const mempty) "html" -> rawBlockLines (return . B.rawBlock (lowercase blkType)) "latex" -> rawBlockLines (return . B.rawBlock (lowercase blkType)) "ascii" -> rawBlockLines (return . B.rawBlock (lowercase blkType)) "example" -> exampleBlock blockAttrs "quote" -> parseBlockLines (fmap B.blockQuote) "verse" -> verseBlock "src" -> codeBlock blockAttrs _ -> -- case-sensitive checks case blkType of "abstract" -> metadataBlock _ -> parseBlockLines $ let (ident, classes, kv) = attrFromBlockAttributes blockAttrs in fmap $ B.divWith (ident, classes ++ [blkType], kv) where blockHeaderStart :: Monad m => OrgParser m Text blockHeaderStart = try $ skipSpaces *> stringAnyCase "#+begin_" *> orgArgWord lowercase :: Text -> Text lowercase = T.toLower exampleBlock :: PandocMonad m => BlockAttributes -> Text -> OrgParser m (F Blocks) exampleBlock blockAttrs _label = do skipSpaces (classes, kv) <- switchesAsAttributes newline content <- rawBlockContent "example" let id' = fromMaybe mempty $ blockAttrName blockAttrs let codeBlck = B.codeBlockWith (id', "example":classes, kv) content return . return $ codeBlck rawBlockLines :: Monad m => (Text -> F Blocks) -> Text -> OrgParser m (F Blocks) rawBlockLines f blockType = ignHeaders *> (f <$> rawBlockContent blockType) parseBlockLines :: PandocMonad m => (F Blocks -> F Blocks) -> Text -> OrgParser m (F Blocks) parseBlockLines f blockType = ignHeaders *> (f <$> parsedBlockContent) where parsedBlockContent :: PandocMonad m => OrgParser m (F Blocks) parsedBlockContent = try $ do raw <- rawBlockContent blockType parseFromString blocks (raw <> "\n") -- | Read the raw string content of a block rawBlockContent :: Monad m => Text -> OrgParser m Text rawBlockContent blockType = try $ do blkLines <- manyTill rawLine blockEnder tabLen <- getOption readerTabStop trimP <- orgStateTrimLeadBlkIndent <$> getState let stripIndent strs = if trimP then map (T.drop (shortestIndent strs)) strs else strs (T.unlines . stripIndent . map (tabsToSpaces tabLen . commaEscaped) $ blkLines) <$ updateState (\s -> s { orgStateTrimLeadBlkIndent = True }) where rawLine :: Monad m => OrgParser m Text rawLine = try $ ("" <$ blankline) <|> anyLine blockEnder :: Monad m => OrgParser m () blockEnder = try $ skipSpaces <* stringAnyCase ("#+end_" <> blockType) shortestIndent :: [Text] -> Int shortestIndent = foldr (min . T.length . T.takeWhile isSpace) maxBound . filter (not . T.null) tabsToSpaces :: Int -> Text -> Text tabsToSpaces tabStop t = let (ind, suff) = T.span (\c -> c == ' ' || c == '\t') t tabNum = T.length $ T.filter (== '\n') ind spaceNum = T.length ind - tabNum in T.replicate (spaceNum + tabStop * tabNum) " " <> suff commaEscaped t = let (ind, suff) = T.span (\c -> c == ' ' || c == '\t') t in case T.uncons suff of Just (',', cs) | "*" <- T.take 1 cs -> ind <> cs | "#+" <- T.take 2 cs -> ind <> cs _ -> t -- | Read but ignore all remaining block headers. ignHeaders :: Monad m => OrgParser m () ignHeaders = (() <$ newline) <|> (() <$ anyLine) -- | Read a block containing code intended for export in specific backends -- only. exportBlock :: Monad m => Text -> OrgParser m (F Blocks) exportBlock blockType = try $ do exportType <- skipSpaces *> orgArgWord <* ignHeaders contents <- rawBlockContent blockType returnF (B.rawBlock (T.toLower exportType) contents) verseBlock :: PandocMonad m => Text -> OrgParser m (F Blocks) verseBlock blockType = try $ do ignHeaders content <- rawBlockContent blockType fmap B.lineBlock . sequence <$> mapM parseVerseLine (T.lines content) where -- replace initial spaces with nonbreaking spaces to preserve -- indentation, parse the rest as normal inline parseVerseLine :: PandocMonad m => Text -> OrgParser m (F Inlines) parseVerseLine cs = do let (initialSpaces, indentedLine) = T.span isSpace cs let nbspIndent = if T.null initialSpaces then mempty else B.str $ T.map (const '\160') initialSpaces line <- parseFromString inlines (indentedLine <> "\n") return (trimInlinesF $ pure nbspIndent <> line) -- | Parses an environment of the given name and adds the result to the document -- metadata under a key of the same name. metadataBlock :: PandocMonad m => Text -> OrgParser m (F Blocks) metadataBlock blockType = try $ do content <- parseBlockLines id blockType meta' <- orgStateMeta <$> getState updateState $ \st -> st { orgStateMeta = B.setMeta blockType <$> content <*> meta' } return mempty -- | Read a code block and the associated results block if present. Which of -- the blocks is included in the output is determined using the "exports" -- argument in the block header. codeBlock :: PandocMonad m => BlockAttributes -> Text -> OrgParser m (F Blocks) codeBlock blockAttrs blockType = do skipSpaces (classes, kv) <- codeHeaderArgs <|> (mempty <$ ignHeaders) content <- rawBlockContent blockType resultsContent <- option mempty babelResultsBlock let identifier = fromMaybe mempty $ blockAttrName blockAttrs let classes' = case classes of c:cs | Just c' <- T.stripPrefix "jupyter-" c -> c' : "code" : cs _ -> classes let codeBlk = B.codeBlockWith (identifier, classes', kv) content let wrap = maybe pure addCaption (blockAttrCaption blockAttrs) return $ (if exportsCode kv then wrap codeBlk else mempty) <> (if exportsResults kv then resultsContent else mempty) where addCaption :: F Inlines -> Blocks -> F Blocks addCaption caption blk = B.divWith ("", ["captioned-content"], []) <$> (mkCaptionBlock caption <> pure blk) mkCaptionBlock :: F Inlines -> F Blocks mkCaptionBlock = fmap (B.divWith ("", ["caption"], []) . B.plain) exportsResults :: [(Text, Text)] -> Bool exportsResults = maybe False (`elem` ["results", "both"]) . lookup "exports" -- | Parse the result of an evaluated babel code block. babelResultsBlock :: PandocMonad m => OrgParser m (F Blocks) babelResultsBlock = try $ do blanklines resultsMarker <|> (lookAhead . void . try $ manyTill (metaLineStart *> anyLineNewline) resultsMarker) block where resultsMarker = try . void $ stringAnyCase "#+RESULTS:" *> blankline -- | Parse code block arguments codeHeaderArgs :: Monad m => OrgParser m ([Text], [(Text, Text)]) codeHeaderArgs = try $ do language <- skipSpaces *> orgArgWord (switchClasses, switchKv) <- switchesAsAttributes parameters <- manyTill blockOption newline return ( translateLang language : switchClasses , originalLang language <> switchKv <> parameters ) switchesAsAttributes :: Monad m => OrgParser m ([Text], [(Text, Text)]) switchesAsAttributes = try $ do switches <- skipSpaces *> try (switch `sepBy` many1 spaceChar) return $ foldr addToAttr ([], []) switches where addToAttr :: (Char, Maybe Text, SwitchPolarity) -> ([Text], [(Text, Text)]) -> ([Text], [(Text, Text)]) addToAttr ('n', lineNum, pol) (cls, kv) = let kv' = case lineNum of Just num -> ("startFrom", num):kv Nothing -> kv cls' = case pol of SwitchPlus -> "continuedSourceBlock":cls SwitchMinus -> cls in ("numberLines":cls', kv') addToAttr _ x = x -- | Whether a switch flag is specified with @+@ or @-@. data SwitchPolarity = SwitchPlus | SwitchMinus deriving (Show, Eq) -- | Parses a switch's polarity. switchPolarity :: Monad m => OrgParser m SwitchPolarity switchPolarity = (SwitchMinus <$ char '-') <|> (SwitchPlus <$ char '+') -- | Parses a source block switch option. switch :: Monad m => OrgParser m (Char, Maybe Text, SwitchPolarity) switch = try $ lineNumberSwitch <|> labelSwitch <|> whitespaceSwitch <|> simpleSwitch where simpleSwitch = (\pol c -> (c, Nothing, pol)) <$> switchPolarity <*> letter labelSwitch = genericSwitch 'l' $ char '"' *> many1TillChar nonspaceChar (char '"') whitespaceSwitch :: Monad m => OrgParser m (Char, Maybe Text, SwitchPolarity) whitespaceSwitch = do string "-i" updateState $ \s -> s { orgStateTrimLeadBlkIndent = False } return ('i', Nothing, SwitchMinus) -- | Generic source block switch-option parser. genericSwitch :: Monad m => Char -> OrgParser m Text -> OrgParser m (Char, Maybe Text, SwitchPolarity) genericSwitch c p = try $ do polarity <- switchPolarity <* char c <* skipSpaces arg <- optionMaybe p return (c, arg, polarity) -- | Reads a line number switch option. The line number switch can be used with -- example and source blocks. lineNumberSwitch :: Monad m => OrgParser m (Char, Maybe Text, SwitchPolarity) lineNumberSwitch = genericSwitch 'n' (manyChar digit) blockOption :: Monad m => OrgParser m (Text, Text) blockOption = try $ do argKey <- orgArgKey paramValue <- option "yes" orgParamValue return (argKey, paramValue) orgParamValue :: Monad m => OrgParser m Text orgParamValue = try $ fmap T.pack $ skipSpaces *> notFollowedBy orgArgKey *> noneOf "\n\r" `many1Till` endOfValue <* skipSpaces where endOfValue = lookAhead $ try (skipSpaces <* oneOf "\n\r") <|> try (skipSpaces1 <* orgArgKey) -- -- Drawers -- -- | A generic drawer which has no special meaning for org-mode. -- Whether or not this drawer is included in the output depends on the drawers -- export setting. genericDrawer :: PandocMonad m => OrgParser m (F Blocks) genericDrawer = try $ do name <- T.toUpper <$> drawerStart content <- manyTill drawerLine (try drawerEnd) state <- getState -- Include drawer if it is explicitly included in or not explicitly excluded -- from the list of drawers that should be exported. PROPERTIES drawers are -- never exported. case exportDrawers . orgStateExportSettings $ state of _ | name == "PROPERTIES" -> return mempty Left names | name `elem` names -> return mempty Right names | name `notElem` names -> return mempty _ -> drawerDiv name <$> parseLines content where parseLines :: PandocMonad m => [Text] -> OrgParser m (F Blocks) parseLines = parseFromString blocks . (<> "\n") . T.unlines drawerDiv :: Text -> F Blocks -> F Blocks drawerDiv drawerName = fmap $ B.divWith (mempty, [drawerName, "drawer"], mempty) drawerLine :: Monad m => OrgParser m Text drawerLine = anyLine drawerEnd :: Monad m => OrgParser m Text drawerEnd = try $ skipSpaces *> stringAnyCase ":END:" <* skipSpaces <* newline -- -- Figures -- -- | Figures or an image paragraph (i.e. an image on a line by itself). Only -- images with a caption attribute are interpreted as figures. figure :: PandocMonad m => OrgParser m (F Blocks) figure = try $ do figAttrs <- blockAttributes src <- skipSpaces *> selfTarget <* skipSpaces <* endOfParagraph case cleanLinkText src of Nothing -> mzero Just imgSrc -> do guard (isImageFilename imgSrc) let isFigure = isJust $ blockAttrCaption figAttrs return $ imageBlock isFigure figAttrs imgSrc where selfTarget :: PandocMonad m => OrgParser m Text selfTarget = try $ char '[' *> linkTarget <* char ']' imageBlock :: Bool -> BlockAttributes -> Text -> F Blocks imageBlock isFigure figAttrs imgSrc = let figName = fromMaybe mempty $ blockAttrName figAttrs figCaption = fromMaybe mempty $ blockAttrCaption figAttrs figKeyVals = blockAttrKeyValues figAttrs attr = (figName, mempty, figKeyVals) in if isFigure then (\c -> B.figureWith attr (B.simpleCaption (B.plain c)) (B.plain $ B.image imgSrc "" mempty)) <$> figCaption else B.para . B.imageWith attr imgSrc figName <$> figCaption -- | Succeeds if looking at the end of the current paragraph endOfParagraph :: Monad m => OrgParser m () endOfParagraph = try $ skipSpaces *> newline *> endOfBlock -- -- Examples -- -- | Example code marked up by a leading colon. example :: Monad m => OrgParser m (F Blocks) example = try $ returnF . exampleCode . T.unlines =<< many1 exampleLine where exampleLine :: Monad m => OrgParser m Text exampleLine = try $ exampleLineStart *> anyLine exampleCode :: Text -> Blocks exampleCode = B.codeBlockWith ("", ["example"], []) -- -- Comments, Options and Metadata -- specialLine :: PandocMonad m => OrgParser m (F Blocks) specialLine = fmap return . try $ rawExportLine <|> printbibliographyLine <|> metaLine <|> commentLine printbibliographyLine :: PandocMonad m => OrgParser m Blocks printbibliographyLine = do try $ skipSpaces <* string "#+print_bibliography:" <* anyLine return $ B.divWith ("refs",[],[]) mempty -- | Include the content of a file. include :: PandocMonad m => OrgParser m (F Blocks) include = try $ do metaLineStart <* stringAnyCase "include:" <* skipSpaces filename <- includeTarget includeArgs <- many (try $ skipSpaces *> many1Char alphaNum) params <- keyValues blocksParser <- case includeArgs of ("example" : _) -> return $ pure . B.codeBlock <$> parseRaw ["export"] -> return . returnF $ B.fromList [] ["export", format] -> return $ pure . B.rawBlock format <$> parseRaw ("src" : rest) -> do let attr = case rest of [lang] -> (mempty, [lang], mempty) _ -> nullAttr return $ pure . B.codeBlockWith attr <$> parseRaw _ -> return $ return . B.fromList . blockFilter params <$> blockList currentDir <- takeDirectory . sourceName <$> getPosition let (startLine, endLine) = case lookup "lines" params of Nothing -> (Nothing, Nothing) Just bounds -> let boundStr = T.drop 1 (T.dropEnd 1 bounds) begStr = T.takeWhile (/= '-') boundStr endStr = T.takeWhileEnd (/= '-') boundStr in (safeRead begStr, pred <$> safeRead endStr) insertIncludedFile blocksParser toSources [currentDir] filename startLine endLine where includeTarget :: PandocMonad m => OrgParser m FilePath includeTarget = do char '"' manyTill (noneOf "\n\r\t") (char '"') parseRaw :: PandocMonad m => OrgParser m Text parseRaw = manyChar anyChar blockFilter :: [(Text, Text)] -> [Block] -> [Block] blockFilter params blks = let minlvl = lookup "minlevel" params in case (minlvl >>= safeRead :: Maybe Int) of Nothing -> blks Just lvl -> let levels = Walk.query headerLevel blks curMin = maybe 0 minimum $ nonEmpty levels in Walk.walk (shiftHeader (curMin - lvl)) blks headerLevel :: Block -> [Int] headerLevel (Header lvl _attr _content) = [lvl] headerLevel _ = [] shiftHeader :: Int -> Block -> Block shiftHeader shift blk = case blk of (Header lvl attr content) | lvl - shift > 0 -> Header (lvl - shift) attr content | otherwise -> Para content _ -> blk -- | Parses a meta line which defines a raw block. Currently recognized: -- @#+LATEX:@, @#+HTML:@, @#+TEXINFO:@, and @#+BEAMER@. rawExportLine :: PandocMonad m => OrgParser m Blocks rawExportLine = try $ do metaLineStart key <- metaKey if key `elem` ["latex", "html", "texinfo", "beamer"] then B.rawBlock key <$> anyLine else mzero -- | Parses any meta line, i.e., a line starting with @#+@, into a raw -- org block. This should be the last resort when trying to parse -- keywords. Leading spaces are discarded. rawOrgLine :: PandocMonad m => OrgParser m (F Blocks) rawOrgLine = do line <- metaLineStart *> anyLine returnF $ B.rawBlock "org" $ "#+" <> line commentLine :: Monad m => OrgParser m Blocks commentLine = commentLineStart *> anyLine $> mempty -- -- Tables -- data ColumnProperty = ColumnProperty { columnAlignment :: Maybe Alignment , columnRelWidth :: Maybe Int } deriving (Show, Eq) instance Default ColumnProperty where def = ColumnProperty Nothing Nothing data OrgTableRow = OrgContentRow (F [Blocks]) | OrgAlignRow [ColumnProperty] | OrgHlineRow -- OrgTable is strongly related to the pandoc table ADT. Using the same -- (i.e. pandoc-global) ADT would mean that the reader would break if the -- global structure was to be changed, which would be bad. The final table -- should be generated using a builder function. data OrgTable = OrgTable { orgTableColumnProperties :: [ColumnProperty] , orgTableHeader :: [Blocks] , orgTableRows :: [[Blocks]] } table :: PandocMonad m => OrgParser m (F Blocks) table = do withTables <- getExportSetting exportWithTables tbl <- gridTableWith blocks <|> orgTable return $ if withTables then tbl else mempty -- | A normal org table orgTable :: PandocMonad m => OrgParser m (F Blocks) orgTable = try $ do -- don't allow a table on the first line of a list item; org requires that -- tables start at first non-space character on the line let isFirstInListItem st = orgStateParserContext st == ListItemState && isNothing (orgStateLastPreCharPos st) guard . not . isFirstInListItem =<< getState blockAttrs <- blockAttributes lookAhead tableStart rows <- tableRows let caption = fromMaybe mempty (blockAttrCaption blockAttrs) let orgTbl = normalizeTable <$> rowsToTable rows let identMb = blockAttrName blockAttrs let attr = (fromMaybe mempty identMb, [], blockAttrKeyValues blockAttrs) return $ orgToPandocTable attr <$> orgTbl <*> caption orgToPandocTable :: Attr -> OrgTable -> Inlines -> Blocks orgToPandocTable attr (OrgTable colProps heads lns) caption = let totalWidth = if any (isJust . columnRelWidth) colProps then Just . sum $ map (fromMaybe 1 . columnRelWidth) colProps else Nothing in B.tableWith attr (B.simpleCaption $ B.plain caption) (map (convertColProp totalWidth) colProps) (TableHead nullAttr $ toHeaderRow heads) [TableBody nullAttr 0 [] $ map toRow lns] (TableFoot nullAttr []) where toRow = Row nullAttr . map B.simpleCell toHeaderRow l = [toRow l | not (null l)] convertColProp :: Maybe Int -> ColumnProperty -> (Alignment, ColWidth) convertColProp totalWidth colProp = let align' = fromMaybe AlignDefault $ columnAlignment colProp width' = (\w t -> fromIntegral w / fromIntegral t) <$> columnRelWidth colProp <*> totalWidth in (align', maybe ColWidthDefault ColWidth width') tableRows :: PandocMonad m => OrgParser m [OrgTableRow] tableRows = try $ many (tableAlignRow <|> tableHline <|> tableContentRow) tableContentRow :: PandocMonad m => OrgParser m OrgTableRow tableContentRow = try $ OrgContentRow . sequence <$> (tableStart *> manyTill tableContentCell newline) tableContentCell :: PandocMonad m => OrgParser m (F Blocks) tableContentCell = try $ fmap B.plain . trimInlinesF . mconcat <$> manyTill inline endOfCell tableAlignRow :: Monad m => OrgParser m OrgTableRow tableAlignRow = try $ do tableStart colProps <- many1Till columnPropertyCell newline -- Empty rows are regular (i.e. content) rows, not alignment rows. guard $ any (/= def) colProps return $ OrgAlignRow colProps columnPropertyCell :: Monad m => OrgParser m ColumnProperty columnPropertyCell = emptyOrgCell <|> propCell "alignment info" where emptyOrgCell = ColumnProperty Nothing Nothing <$ try (skipSpaces *> endOfCell) propCell = try $ ColumnProperty <$> (skipSpaces *> char '<' *> optionMaybe tableAlignFromChar) <*> (optionMaybe (many1Char digit >>= safeRead) <* char '>' <* emptyOrgCell) tableAlignFromChar :: Monad m => OrgParser m Alignment tableAlignFromChar = try $ choice [ char 'l' $> AlignLeft , char 'c' $> AlignCenter , char 'r' $> AlignRight ] tableHline :: Monad m => OrgParser m OrgTableRow tableHline = try $ OrgHlineRow <$ (tableStart *> char '-' *> anyLine) endOfCell :: Monad m => OrgParser m Char endOfCell = try $ char '|' <|> lookAhead newline rowsToTable :: [OrgTableRow] -> F OrgTable rowsToTable = foldM rowToContent emptyTable where emptyTable = OrgTable mempty mempty mempty normalizeTable :: OrgTable -> OrgTable normalizeTable (OrgTable colProps heads rows) = OrgTable colProps' heads rows where refRow = if heads /= mempty then heads else case rows of (r:_) -> r _ -> mempty cols = length refRow fillColumns base padding = take cols $ base ++ repeat padding colProps' = fillColumns colProps def -- One or more horizontal rules after the first content line mark the previous -- line as a header. All other horizontal lines are discarded. rowToContent :: OrgTable -> OrgTableRow -> F OrgTable rowToContent tbl row = case row of OrgHlineRow -> return singleRowPromotedToHeader OrgAlignRow props -> return . setProperties $ props OrgContentRow cs -> appendToBody cs where singleRowPromotedToHeader :: OrgTable singleRowPromotedToHeader = case tbl of OrgTable{ orgTableHeader = [], orgTableRows = [b] } -> tbl{ orgTableHeader = b , orgTableRows = [] } _ -> tbl setProperties :: [ColumnProperty] -> OrgTable setProperties ps = tbl{ orgTableColumnProperties = ps } appendToBody :: F [Blocks] -> F OrgTable appendToBody frow = do newRow <- frow let oldRows = orgTableRows tbl -- NOTE: This is an inefficient O(n) operation. This should be changed -- if performance ever becomes a problem. return tbl{ orgTableRows = oldRows ++ [newRow] } -- -- LaTeX fragments -- latexFragment :: PandocMonad m => OrgParser m (F Blocks) latexFragment = try $ do envName <- latexEnvStart texOpt <- getExportSetting exportWithLatex let envStart = "\\begin{" <> envName <> "}" let envEnd = "\\end{" <> envName <> "}" envContent <- do content <- manyTillChar anyChar (latexEnd envName) return $ envStart <> content <> envEnd returnF $ case texOpt of TeXExport -> B.rawBlock "latex" (envContent <> "\n") TeXIgnore -> mempty TeXVerbatim -> B.para . B.text $ envContent where latexEnd :: Monad m => Text -> OrgParser m () latexEnd envName = try . void $ textStr ("\\end{" <> envName <> "}") <* blankline -- -- Footnote definitions -- noteBlock :: PandocMonad m => OrgParser m (F Blocks) noteBlock = try $ do ref <- noteMarker <* skipSpaces <* updateLastPreCharPos content <- mconcat <$> many1Till block endOfFootnote addToNotesTable (ref, content) return mempty where endOfFootnote = eof <|> () <$ lookAhead noteMarker <|> () <$ lookAhead headerStart <|> () <$ lookAhead (try $ blankline *> blankline) -- Paragraphs or Plain text paraOrPlain :: PandocMonad m => OrgParser m (F Blocks) paraOrPlain = try $ do -- Make sure we are not looking at a headline notFollowedBy' headerStart ils <- inlines nl <- option False (newline $> True) -- Read block as paragraph, except if we are in a list context and the block -- is directly followed by a list item, in which case the block is read as -- plain text. try (guard nl *> notFollowedBy (inList *> (void orderedListStart <|> void bulletListStart)) $> (B.para <$> ils)) <|> return (B.plain <$> ils) -- -- list blocks -- list :: PandocMonad m => OrgParser m (F Blocks) list = choice [ definitionList, bulletList, orderedList ] "list" definitionList :: PandocMonad m => OrgParser m (F Blocks) definitionList = try $ do indent <- lookAhead bulletListStart fmap (B.definitionList . compactifyDL) . sequence <$> many1 (definitionListItem (bulletListStart `indented` indent)) bulletList :: PandocMonad m => OrgParser m (F Blocks) bulletList = try $ do indent <- lookAhead bulletListStart fmap (B.bulletList . compactify) . sequence <$> many1 (listItem (bulletListStart `indented` indent)) indented :: OrgParser m Int -> Int -> OrgParser m Int indented indentedMarker minIndent = try $ do n <- indentedMarker guard (minIndent <= n) return n orderedList :: PandocMonad m => OrgParser m (F Blocks) orderedList = try $ do (indent, attr) <- lookAhead orderedListStart attr' <- option (fst3 attr, DefaultStyle, DefaultDelim) $ guardEnabled Ext_fancy_lists $> attr fmap (B.orderedListWith attr' . compactify) . sequence <$> many1 (listItem ((fst <$> orderedListStart) `indented` indent)) where fst3 (x,_,_) = x definitionListItem :: PandocMonad m => OrgParser m Int -> OrgParser m (F (Inlines, [Blocks])) definitionListItem parseIndentedMarker = try $ do markerLength <- parseIndentedMarker term <- manyTillChar (noneOf "\n\r") (try definitionMarker) line1 <- anyLineNewline blank <- option "" ("\n" <$ blankline) cont <- T.concat <$> many (listContinuation markerLength) term' <- parseFromString inlines term contents' <- parseFromString blocks $ line1 <> blank <> cont return $ (,) <$> term' <*> fmap (:[]) contents' where definitionMarker = spaceChar *> string "::" <* (spaceChar <|> lookAhead newline) -- | Checkbox for tasks. data Checkbox = UncheckedBox | CheckedBox | SemicheckedBox -- | Parses a checkbox in a plain list. checkbox :: PandocMonad m => OrgParser m Checkbox checkbox = do guardEnabled Ext_task_lists try (char '[' *> status <* char ']') "checkbox" where status = choice [ UncheckedBox <$ char ' ' , CheckedBox <$ char 'X' , SemicheckedBox <$ char '-' ] checkboxToInlines :: Checkbox -> Inline checkboxToInlines = B.Str . \case UncheckedBox -> "☐" SemicheckedBox -> "☐" CheckedBox -> "☒" -- | parse raw text for one list item listItem :: PandocMonad m => OrgParser m Int -> OrgParser m (F Blocks) listItem parseIndentedMarker = try . withContext ListItemState $ do markerLength <- try parseIndentedMarker box <- optionMaybe checkbox firstLine <- anyLineNewline blank <- option "" ("\n" <$ blankline) rest <- T.concat <$> many (listContinuation markerLength) contents <- parseFromString (do initial <- paraOrPlain <|> pure mempty subsequent <- blocks return $ initial <> subsequent) (firstLine <> blank <> rest) return (maybe id (prependInlines . checkboxToInlines) box <$> contents) -- | Prepend inlines to blocks, adding them to the first paragraph or -- creating a new Plain element if necessary. prependInlines :: Inline -> Blocks -> Blocks prependInlines inlns = B.fromList . prepend . B.toList where prepend (Plain is : bs) = Plain (inlns : Space : is) : bs prepend (Para is : bs) = Para (inlns : Space : is) : bs prepend bs = Plain [inlns, Space] : bs -- continuation of a list item - indented and separated by blankline or endline. -- Note: nested lists are parsed as continuations. listContinuation :: PandocMonad m => Int -> OrgParser m Text listContinuation markerLength = try $ do notFollowedBy' blankline mappend <$> (T.concat <$> many1 (listContinuation' markerLength)) <*> manyChar blankline where listContinuation' indentation = blockLines indentation <|> listLine indentation listLine indentation = try $ indentWith indentation *> anyLineNewline -- The block attributes and start must be appropriately indented, -- but the contents, and end do not. blockLines indentation = try $ lookAhead (indentWith indentation >> blockAttributes >>= (\blockAttrs -> case attrFromBlockAttributes blockAttrs of ("", [], []) -> countChar 1 anyChar _ -> indentWith indentation)) >> (snd <$> withRaw orgBlock) �����������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/Org/DocumentTree.hs��������������������������������������������0000644�0000000�0000000�00000036340�07346545000�021146� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TupleSections #-} {- | Module : Text.Pandoc.Readers.Org.DocumentTree Copyright : Copyright (C) 2014-2023 Albert Krewinkel License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel Parsers for org-mode headlines and document subtrees -} module Text.Pandoc.Readers.Org.DocumentTree ( documentTree , unprunedHeadlineToBlocks ) where import Control.Arrow ((***), first) import Control.Monad (guard) import Data.List (intersperse) import Data.Maybe (mapMaybe) import Data.Text (Text) import Text.Pandoc.Builder (Blocks, Inlines) import Text.Pandoc.Class.PandocMonad (PandocMonad) import Text.Pandoc.Definition import Text.Pandoc.Readers.Org.BlockStarts import Text.Pandoc.Readers.Org.ParserState import Text.Pandoc.Readers.Org.Parsing import qualified Data.Set as Set import qualified Data.Text as T import qualified Text.Pandoc.Builder as B -- -- Org headers -- -- | Parse input as org document tree. documentTree :: PandocMonad m => OrgParser m (F Blocks) -> OrgParser m (F Inlines) -> OrgParser m (F Headline) documentTree blocks inline = do many commentLine properties <- option mempty propertiesDrawer initialBlocks <- blocks headlines <- sequence <$> manyTill (headline blocks inline 1) eof title <- fmap docTitle . orgStateMeta <$> getState return $ do headlines' <- headlines initialBlocks' <- initialBlocks title' <- title return Headline { headlineLevel = 0 , headlineTodoMarker = Nothing , headlineText = B.fromList title' , headlineTags = mempty , headlinePlanning = emptyPlanning , headlineProperties = properties , headlineContents = initialBlocks' , headlineChildren = headlines' } where commentLine :: Monad m => OrgParser m () commentLine = commentLineStart <* anyLine -- | Create a tag containing the given string. toTag :: Text -> Tag toTag = Tag -- | The key (also called name or type) of a property. newtype PropertyKey = PropertyKey { fromKey :: Text } deriving (Show, Eq, Ord) -- | Create a property key containing the given string. Org mode keys are -- case insensitive and are hence converted to lower case. toPropertyKey :: Text -> PropertyKey toPropertyKey = PropertyKey . T.toLower -- | The value assigned to a property. newtype PropertyValue = PropertyValue { fromValue :: Text } -- | Create a property value containing the given string. toPropertyValue :: Text -> PropertyValue toPropertyValue = PropertyValue -- | Check whether the property value is non-nil (i.e. truish). isNonNil :: PropertyValue -> Bool isNonNil p = T.toLower (fromValue p) `notElem` ["()", "{}", "nil"] -- | Key/value pairs from a PROPERTIES drawer type Properties = [(PropertyKey, PropertyValue)] -- | Org mode headline (i.e. a document subtree). data Headline = Headline { headlineLevel :: Int , headlineTodoMarker :: Maybe TodoMarker , headlineText :: Inlines , headlineTags :: [Tag] , headlinePlanning :: PlanningInfo -- ^ subtree planning information , headlineProperties :: Properties , headlineContents :: Blocks , headlineChildren :: [Headline] } -- | Read an Org mode headline and its contents (i.e. a document subtree). -- @lvl@ gives the minimum acceptable level of the tree. headline :: PandocMonad m => OrgParser m (F Blocks) -> OrgParser m (F Inlines) -> Int -> OrgParser m (F Headline) headline blocks inline lvl = try $ do level <- headerStart guard (lvl <= level) todoKw <- optionMaybe todoKeyword (title, tags) <- manyThen inline endOfTitle planning <- option emptyPlanning planningInfo properties <- option mempty propertiesDrawer contents <- blocks children <- many (headline blocks inline (level + 1)) return $ do title' <- trimInlinesF (mconcat title) contents' <- contents children' <- sequence children return Headline { headlineLevel = level , headlineTodoMarker = todoKw , headlineText = title' , headlineTags = tags , headlinePlanning = planning , headlineProperties = properties , headlineContents = contents' , headlineChildren = children' } where endOfTitle :: Monad m => OrgParser m [Tag] endOfTitle = try $ do skipSpaces tags <- option [] (headerTags <* skipSpaces) newline return tags headerTags :: Monad m => OrgParser m [Tag] headerTags = try $ do char ':' endBy1 (toTag <$> orgTagWord) (char ':') manyThen :: Monad m => OrgParser m a -> OrgParser m b -> OrgParser m ([a], b) manyThen p end = (([],) <$> try end) <|> do x <- p first (x:) <$> manyThen p end -- titleFollowedByTags :: Monad m => OrgParser m (Inlines, [Tag]) -- titleFollowedByTags = do unprunedHeadlineToBlocks :: Monad m => Headline -> OrgParserState -> OrgParser m [Block] unprunedHeadlineToBlocks hdln st = let usingSelectedTags = docContainsSelectTags hdln st rootNode = if not usingSelectedTags then hdln else includeRootAndSelected hdln st rootNode' = removeExplicitlyExcludedNodes rootNode st in if not usingSelectedTags || any (`Set.member` orgStateSelectTags st) (headlineTags rootNode') then do headlineBlocks <- headlineToBlocks rootNode' -- add metadata from root node :PROPERTIES: updateState $ \s -> s{ orgStateMeta = foldr (\(PropertyKey k, PropertyValue v) m -> B.setMeta k v <$> m) (orgStateMeta s) (headlineProperties rootNode') } -- ignore first headline, it's the document's title return $ drop 1 $ B.toList headlineBlocks else do headlineBlocks <- mconcat <$> mapM headlineToBlocks (headlineChildren rootNode') return . B.toList $ headlineBlocks -- | Convert an Org mode headline (i.e. a document tree) into pandoc's Blocks headlineToBlocks :: Monad m => Headline -> OrgParser m Blocks headlineToBlocks hdln = do maxLevel <- getExportSetting exportHeadlineLevels let tags = headlineTags hdln let text = headlineText hdln let level = headlineLevel hdln case () of _ | any isArchiveTag tags -> archivedHeadlineToBlocks hdln _ | isCommentTitle text -> return mempty _ | maxLevel <= level -> headlineToHeaderWithList hdln _ | otherwise -> headlineToHeaderWithContents hdln removeExplicitlyExcludedNodes :: Headline -> OrgParserState -> Headline removeExplicitlyExcludedNodes hdln st = hdln { headlineChildren = [removeExplicitlyExcludedNodes childHdln st | childHdln <- headlineChildren hdln, not $ headlineContainsExcludeTags childHdln st] } includeRootAndSelected :: Headline -> OrgParserState -> Headline includeRootAndSelected hdln st = hdln { headlineChildren = mapMaybe (`includeAncestorsAndSelected` st) (headlineChildren hdln)} docContainsSelectTags :: Headline -> OrgParserState -> Bool docContainsSelectTags hdln st = headlineContainsSelectTags hdln st || any (`docContainsSelectTags` st) (headlineChildren hdln) includeAncestorsAndSelected :: Headline -> OrgParserState -> Maybe Headline includeAncestorsAndSelected hdln st = if headlineContainsSelectTags hdln st then Just hdln else let children = mapMaybe (`includeAncestorsAndSelected` st) (headlineChildren hdln) in case children of [] -> Nothing _ -> Just $ hdln { headlineChildren = children } headlineContainsSelectTags :: Headline -> OrgParserState -> Bool headlineContainsSelectTags hdln st = any (`Set.member` orgStateSelectTags st) (headlineTags hdln) headlineContainsExcludeTags :: Headline -> OrgParserState -> Bool headlineContainsExcludeTags hdln st = any (`Set.member` orgStateExcludeTags st) (headlineTags hdln) isArchiveTag :: Tag -> Bool isArchiveTag = (== toTag "ARCHIVE") -- | Check if the title starts with COMMENT. -- FIXME: This accesses builder internals not intended for use in situations -- like these. Replace once keyword parsing is supported. isCommentTitle :: Inlines -> Bool isCommentTitle inlns = case B.toList inlns of (Str "COMMENT":_) -> True _ -> False archivedHeadlineToBlocks :: Monad m => Headline -> OrgParser m Blocks archivedHeadlineToBlocks hdln = do archivedTreesOption <- getExportSetting exportArchivedTrees case archivedTreesOption of ArchivedTreesNoExport -> return mempty ArchivedTreesExport -> headlineToHeaderWithContents hdln ArchivedTreesHeadlineOnly -> headlineToHeader hdln headlineToHeaderWithList :: Monad m => Headline -> OrgParser m Blocks headlineToHeaderWithList hdln = do maxHeadlineLevels <- getExportSetting exportHeadlineLevels header <- headlineToHeader hdln listElements <- mapM headlineToBlocks (headlineChildren hdln) planningBlock <- planningToBlock (headlinePlanning hdln) let listBlock = if null listElements then mempty else B.orderedList listElements let headerText = if maxHeadlineLevels == headlineLevel hdln then header else flattenHeader header return . mconcat $ [ headerText , planningBlock , headlineContents hdln , listBlock ] where flattenHeader :: Blocks -> Blocks flattenHeader blks = case B.toList blks of (Header _ _ inlns:_) -> B.para (B.fromList inlns) _ -> mempty headlineToHeaderWithContents :: Monad m => Headline -> OrgParser m Blocks headlineToHeaderWithContents hdln = do header <- headlineToHeader hdln planningBlock <- planningToBlock (headlinePlanning hdln) childrenBlocks <- mconcat <$> mapM headlineToBlocks (headlineChildren hdln) return $ header <> planningBlock <> headlineContents hdln <> childrenBlocks headlineToHeader :: Monad m => Headline -> OrgParser m Blocks headlineToHeader hdln = do exportTodoKeyword <- getExportSetting exportWithTodoKeywords exportTags <- getExportSetting exportWithTags let todoText = if exportTodoKeyword then case headlineTodoMarker hdln of Just kw -> todoKeywordToInlines kw <> B.space Nothing -> mempty else mempty let text = todoText <> headlineText hdln <> if exportTags then tagsToInlines (headlineTags hdln) else mempty let propAttr = propertiesToAttr (headlineProperties hdln) attr <- registerHeader propAttr (headlineText hdln) return $ B.headerWith attr (headlineLevel hdln) text todoKeyword :: Monad m => OrgParser m TodoMarker todoKeyword = try $ do taskStates <- activeTodoMarkers <$> getState let kwParser tdm = try (tdm <$ textStr (todoMarkerName tdm) <* spaceChar <* updateLastPreCharPos) choice (map kwParser taskStates) todoKeywordToInlines :: TodoMarker -> Inlines todoKeywordToInlines tdm = let todoText = todoMarkerName tdm todoState = T.toLower . T.pack . show $ todoMarkerState tdm classes = [todoState, todoText] in B.spanWith (mempty, classes, mempty) (B.str todoText) propertiesToAttr :: Properties -> Attr propertiesToAttr properties = let toTextPair = fromKey *** fromValue customIdKey = toPropertyKey "custom_id" classKey = toPropertyKey "class" unnumberedKey = toPropertyKey "unnumbered" specialProperties = [customIdKey, classKey, unnumberedKey] id' = maybe mempty fromValue . lookup customIdKey $ properties cls = maybe mempty fromValue . lookup classKey $ properties kvs' = map toTextPair . filter ((`notElem` specialProperties) . fst) $ properties isUnnumbered = maybe False isNonNil . lookup unnumberedKey $ properties in (id', T.words cls ++ ["unnumbered" | isUnnumbered], kvs') tagsToInlines :: [Tag] -> Inlines tagsToInlines [] = mempty tagsToInlines tags = (B.space <>) . mconcat . intersperse (B.str "\160") . map tagToInline $ tags where tagToInline :: Tag -> Inlines tagToInline t = tagSpan t . B.smallcaps . B.str $ fromTag t -- | Wrap the given inline in a span, marking it as a tag. tagSpan :: Tag -> Inlines -> Inlines tagSpan t = B.spanWith ("", ["tag"], [("tag-name", fromTag t)]) -- | Render planning info as a block iff the respective export setting is -- enabled. planningToBlock :: Monad m => PlanningInfo -> OrgParser m Blocks planningToBlock planning = do includePlanning <- getExportSetting exportWithPlanning return $ if includePlanning then B.plain . mconcat . intersperse B.space . filter (/= mempty) $ [ datumInlines planningClosed "CLOSED" , datumInlines planningDeadline "DEADLINE" , datumInlines planningScheduled "SCHEDULED" ] else mempty where datumInlines field name = case field planning of Nothing -> mempty Just time -> B.strong (B.str name <> B.str ":") <> B.space <> B.emph (B.str time) -- | An Org timestamp, including repetition marks. TODO: improve type Timestamp = Text timestamp :: Monad m => OrgParser m Timestamp timestamp = try $ do openChar <- oneOf "<[" let isActive = openChar == '<' let closeChar = if isActive then '>' else ']' content <- many1TillChar anyChar (char closeChar) return $ T.cons openChar $ content `T.snoc` closeChar -- | Planning information for a subtree/headline. data PlanningInfo = PlanningInfo { planningClosed :: Maybe Timestamp , planningDeadline :: Maybe Timestamp , planningScheduled :: Maybe Timestamp } emptyPlanning :: PlanningInfo emptyPlanning = PlanningInfo Nothing Nothing Nothing -- | Read a single planning-related and timestamped line. planningInfo :: Monad m => OrgParser m PlanningInfo planningInfo = try $ do updaters <- many1 planningDatum <* skipSpaces <* newline return $ foldr ($) emptyPlanning updaters where planningDatum = skipSpaces *> choice [ updateWith (\s p -> p { planningScheduled = Just s}) "SCHEDULED" , updateWith (\d p -> p { planningDeadline = Just d}) "DEADLINE" , updateWith (\c p -> p { planningClosed = Just c}) "CLOSED" ] updateWith fn cs = fn <$> (string cs *> char ':' *> skipSpaces *> timestamp) -- | Read a :PROPERTIES: drawer and return the key/value pairs contained -- within. propertiesDrawer :: Monad m => OrgParser m Properties propertiesDrawer = try $ do drawerType <- drawerStart guard $ T.toUpper drawerType == "PROPERTIES" manyTill property (try endOfDrawer) where property :: Monad m => OrgParser m (PropertyKey, PropertyValue) property = try $ (,) <$> key <*> value key :: Monad m => OrgParser m PropertyKey key = fmap toPropertyKey . try $ skipSpaces *> char ':' *> many1TillChar nonspaceChar (try $ char ':' *> spaceChar) value :: Monad m => OrgParser m PropertyValue value = fmap toPropertyValue . try $ skipSpaces *> manyTillChar anyChar (try $ skipSpaces *> newline) endOfDrawer :: Monad m => OrgParser m Text endOfDrawer = try $ skipSpaces *> stringAnyCase ":END:" <* skipSpaces <* newline ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/Org/ExportSettings.hs������������������������������������������0000644�0000000�0000000�00000015473�07346545000�021556� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Readers.Org.ExportSettings Copyright : © 2016-2023 Albert Krewinkel License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel Parsers for Org-mode export options. -} module Text.Pandoc.Readers.Org.ExportSettings ( exportSettings ) where import Text.Pandoc.Class.PandocMonad (PandocMonad, report) import Text.Pandoc.Logging (LogMessage (UnknownOrgExportOption)) import Text.Pandoc.Readers.Org.ParserState import Text.Pandoc.Readers.Org.Parsing import Control.Monad (mzero, void) import Data.Char (toLower) import Data.Maybe (listToMaybe) import Data.Text (Text, unpack) -- | Read and handle space separated org-mode export settings. exportSettings :: PandocMonad m => OrgParser m () exportSettings = void $ sepBy skipSpaces exportSetting -- | Setter function for export settings. type ExportSettingSetter a = a -> ExportSettings -> ExportSettings -- | Read and process a single org-mode export option. exportSetting :: PandocMonad m => OrgParser m () exportSetting = choice [ booleanSetting "^" (\val es -> es { exportSubSuperscripts = val }) , booleanSetting "'" (\val es -> es { exportSmartQuotes = val }) , booleanSetting "*" (\val es -> es { exportEmphasizedText = val }) , booleanSetting "-" (\val es -> es { exportSpecialStrings = val }) , ignoredSetting ":" , ignoredSetting "<" , booleanSetting "\\n" (\val es -> es { exportPreserveBreaks = val }) , archivedTreeSetting "arch" (\val es -> es { exportArchivedTrees = val }) , booleanSetting "author" (\val es -> es { exportWithAuthor = val }) , ignoredSetting "c" -- org-mode allows the special value `comment` for creator, which we'll -- interpret as true as it doesn't make sense in the context of Pandoc. , booleanSetting "creator" (\val es -> es { exportWithCreator = val }) , complementableListSetting "d" (\val es -> es { exportDrawers = val }) , ignoredSetting "date" , booleanSetting "e" (\val es -> es { exportWithEntities = val }) , booleanSetting "email" (\val es -> es { exportWithEmail = val }) , booleanSetting "f" (\val es -> es { exportWithFootnotes = val }) , integerSetting "H" (\val es -> es { exportHeadlineLevels = val }) , ignoredSetting "inline" , ignoredSetting "num" , booleanSetting "p" (\val es -> es { exportWithPlanning = val }) , ignoredSetting "pri" , ignoredSetting "prop" , ignoredSetting "stat" , booleanSetting "tags" (\val es -> es { exportWithTags = val }) , ignoredSetting "tasks" , texSetting "tex" (\val es -> es { exportWithLatex = val }) , ignoredSetting "timestamp" , ignoredSetting "title" , ignoredSetting "toc" , booleanSetting "todo" (\val es -> es { exportWithTodoKeywords = val }) , booleanSetting "|" (\val es -> es { exportWithTables = val }) , ignoreAndWarn ] "export setting" -- | Generic handler for export settings. Takes a parser which converts -- the plain option text into a data structure. genericExportSetting :: Monad m => OrgParser m a -> Text -> ExportSettingSetter a -> OrgParser m () genericExportSetting optionParser settingIdentifier setter = try $ do _ <- textStr settingIdentifier *> char ':' value <- optionParser updateState $ modifyExportSettings value where modifyExportSettings val st = st { orgStateExportSettings = setter val . orgStateExportSettings $ st } -- | A boolean option, either nil (False) or non-nil (True). booleanSetting :: Monad m => Text -> ExportSettingSetter Bool -> OrgParser m () booleanSetting = genericExportSetting elispBoolean -- | An integer-valued option. integerSetting :: Monad m => Text -> ExportSettingSetter Int -> OrgParser m () integerSetting = genericExportSetting parseInt where parseInt = try $ many1 digit >>= maybe mzero (return . fst) . listToMaybe . reads -- | Either the string "headline" or an elisp boolean and treated as an -- @ArchivedTreesOption@. archivedTreeSetting :: Monad m => Text -> ExportSettingSetter ArchivedTreesOption -> OrgParser m () archivedTreeSetting = genericExportSetting $ archivedTreesHeadlineSetting <|> archivedTreesBoolean where archivedTreesHeadlineSetting = ArchivedTreesHeadlineOnly <$ optionString "headline" archivedTreesBoolean = try $ do exportBool <- elispBoolean return $ if exportBool then ArchivedTreesExport else ArchivedTreesNoExport -- | A list or a complement list (i.e. a list starting with `not`). complementableListSetting :: Monad m => Text -> ExportSettingSetter (Either [Text] [Text]) -> OrgParser m () complementableListSetting = genericExportSetting $ choice [ Left <$> complementTextList , Right <$> stringList , (\b -> if b then Left [] else Right []) <$> elispBoolean ] where -- Read a plain list of strings. stringList :: Monad m => OrgParser m [Text] stringList = try $ char '(' *> sepBy elispText spaces <* char ')' -- Read an emacs lisp list specifying a complement set. complementTextList :: Monad m => OrgParser m [Text] complementTextList = try $ string "(not " *> sepBy elispText spaces <* char ')' elispText :: Monad m => OrgParser m Text elispText = try $ char '"' *> manyTillChar alphaNum (char '"') -- | Parses either @t@, @nil@, or @verbatim@ into a 'TeXExport' value. texSetting :: Monad m => Text -> ExportSettingSetter TeXExport -> OrgParser m () texSetting = genericExportSetting $ texVerbatim <|> texBoolean where texVerbatim = TeXVerbatim <$ optionString "verbatim" texBoolean = try $ do exportBool <- elispBoolean return $ if exportBool then TeXExport else TeXIgnore -- | Read but ignore the export setting. ignoredSetting :: Monad m => Text -> OrgParser m () ignoredSetting s = try (() <$ textStr s <* char ':' <* many1 nonspaceChar) -- | Read any setting string, but ignore it and emit a warning. ignoreAndWarn :: PandocMonad m => OrgParser m () ignoreAndWarn = try $ do opt <- many1Char nonspaceChar report (UnknownOrgExportOption opt) return () -- | Read an elisp boolean. Only NIL is treated as false, non-NIL values are -- interpreted as true. elispBoolean :: Monad m => OrgParser m Bool elispBoolean = try $ do value <- many1 nonspaceChar return $ case map toLower value of "nil" -> False "{}" -> False "()" -> False _ -> True -- | Try to parse a literal string as the option value. Returns the -- string on success. optionString :: Monad m => Text -> OrgParser m Text optionString s = try $ do _ <- string (unpack s) lookAhead (newline <|> spaceChar) return s �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/Org/Inlines.hs�������������������������������������������������0000644�0000000�0000000�00000077643�07346545000�020164� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Readers.Org.Inlines Copyright : Copyright (C) 2014-2023 Albert Krewinkel License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel Parsers for Org-mode inline elements. -} module Text.Pandoc.Readers.Org.Inlines ( inline , inlines , addToNotesTable , linkTarget ) where import Text.Pandoc.Readers.Org.BlockStarts (endOfBlock, noteMarker) import Text.Pandoc.Readers.Org.ParserState import Text.Pandoc.Readers.Org.Parsing import Text.Pandoc.Readers.Org.Shared (cleanLinkText, isImageFilename, originalLang, translateLang, exportsCode) import Text.Pandoc.Builder (Inlines) import qualified Text.Pandoc.Builder as B import Text.Pandoc.Class.PandocMonad (PandocMonad) import Text.Pandoc.Definition import Text.Pandoc.Options import Text.Pandoc.Readers.LaTeX (inlineCommand, rawLaTeXInline) import Text.TeXMath (DisplayType (..), readTeX, writePandoc) import Text.Pandoc.Sources (ToSources(..)) import qualified Text.TeXMath.Readers.MathML.EntityMap as MathMLEntityMap import Safe (lastMay) import Control.Monad (guard, mplus, mzero, unless, when, void) import Control.Monad.Trans (lift) import Data.Char (isAlphaNum, isSpace) import qualified Data.Map as M import Data.Text (Text) import qualified Data.Text as T -- -- Functions acting on the parser state -- recordAnchorId :: PandocMonad m => Text -> OrgParser m () recordAnchorId i = updateState $ \s -> s{ orgStateAnchorIds = i : orgStateAnchorIds s } pushToInlineCharStack :: PandocMonad m => Char -> OrgParser m () pushToInlineCharStack c = updateState $ \s -> s{ orgStateEmphasisCharStack = c:orgStateEmphasisCharStack s } popInlineCharStack :: PandocMonad m => OrgParser m () popInlineCharStack = updateState $ \s -> s{ orgStateEmphasisCharStack = drop 1 . orgStateEmphasisCharStack $ s } surroundingEmphasisChar :: PandocMonad m => OrgParser m [Char] surroundingEmphasisChar = take 1 . drop 1 . orgStateEmphasisCharStack <$> getState startEmphasisNewlinesCounting :: PandocMonad m => Int -> OrgParser m () startEmphasisNewlinesCounting maxNewlines = updateState $ \s -> s{ orgStateEmphasisNewlines = Just maxNewlines } decEmphasisNewlinesCount :: PandocMonad m => OrgParser m () decEmphasisNewlinesCount = updateState $ \s -> s{ orgStateEmphasisNewlines = (\n -> n - 1) <$> orgStateEmphasisNewlines s } newlinesCountWithinLimits :: PandocMonad m => OrgParser m Bool newlinesCountWithinLimits = do st <- getState return $ ((< 0) <$> orgStateEmphasisNewlines st) /= Just True resetEmphasisNewlines :: PandocMonad m => OrgParser m () resetEmphasisNewlines = updateState $ \s -> s{ orgStateEmphasisNewlines = Nothing } addToNotesTable :: PandocMonad m => OrgNoteRecord -> OrgParser m () addToNotesTable note = do oldnotes <- orgStateNotes' <$> getState updateState $ \s -> s{ orgStateNotes' = note:oldnotes } -- | Parse a single Org-mode inline element inline :: PandocMonad m => OrgParser m (F Inlines) inline = choice [ whitespace , linebreak , cite , footnote , linkOrImage , anchor , inlineCodeBlock , str , endline , emphasizedText , code , math , displayMath , verbatim , subscript , superscript , inlineLaTeX , exportSnippet , macro , smart , symbol ] <* (guard =<< newlinesCountWithinLimits) "inline" -- | Read the rest of the input as inlines. inlines :: PandocMonad m => OrgParser m (F Inlines) inlines = trimInlinesF . mconcat <$> many1 inline -- treat these as potentially non-text when parsing inline: specialChars :: [Char] specialChars = "\"$'()*+-,./:;<=>@[\\]^_{|}~" whitespace :: PandocMonad m => OrgParser m (F Inlines) whitespace = pure B.space <$ skipMany1 spaceChar <* updateLastPreCharPos <* updateLastForbiddenCharPos "whitespace" linebreak :: PandocMonad m => OrgParser m (F Inlines) linebreak = try $ pure B.linebreak <$ string "\\\\" <* skipSpaces <* newline str :: PandocMonad m => OrgParser m (F Inlines) str = return . B.str <$> ( many1Char (noneOf $ specialChars ++ "\n\r ") >>= updatePositions' ) <* updateLastStrPos where updatePositions' str' = str' <$ maybe mzero (updatePositions . snd) (T.unsnoc str') -- | An endline character that can be treated as a space, not a structural -- break. This should reflect the values of the Emacs variable -- @org-element-pagaraph-separate@. endline :: PandocMonad m => OrgParser m (F Inlines) endline = try $ do newline notFollowedBy' endOfBlock decEmphasisNewlinesCount guard =<< newlinesCountWithinLimits updateLastPreCharPos useHardBreaks <- exportPreserveBreaks . orgStateExportSettings <$> getState returnF (if useHardBreaks then B.linebreak else B.softbreak) -- -- Citations -- -- We first try to parse official org-cite citations, then fall -- back to org-ref citations (which are still in wide use). -- | A citation in org-cite style orgCite :: PandocMonad m => OrgParser m (F [Citation]) orgCite = try $ do string "[cite" (sty, _variants) <- citeStyle char ':' spnl globalPref <- option mempty (try (citePrefix <* char ';')) items <- citeItems globalSuff <- option mempty (try (char ';' *> citeSuffix)) spnl char ']' return $ adjustCiteStyle sty . addPrefixToFirstItem globalPref . addSuffixToLastItem globalSuff $ items adjustCiteStyle :: CiteStyle -> (F [Citation]) -> (F [Citation]) adjustCiteStyle sty cs = do cs' <- cs case cs' of [] -> return [] (d:ds) -- TODO needs refinement -> case sty of TextStyle -> return $ d{ citationMode = AuthorInText , citationSuffix = dropWhile (== Space) (citationSuffix d)} : ds NoAuthorStyle -> return $ d{ citationMode = SuppressAuthor } : ds _ -> return (d:ds) addPrefixToFirstItem :: (F Inlines) -> (F [Citation]) -> (F [Citation]) addPrefixToFirstItem aff cs = do cs' <- cs aff' <- aff case cs' of [] -> return [] (d:ds) -> return (d{ citationPrefix = B.toList aff' <> citationPrefix d }:ds) addSuffixToLastItem :: (F Inlines) -> (F [Citation]) -> (F [Citation]) addSuffixToLastItem aff cs = do cs' <- cs aff' <- aff case lastMay cs' of Nothing -> return cs' Just d -> return (init cs' ++ [d{ citationSuffix = citationSuffix d <> B.toList aff' }]) citeItems :: PandocMonad m => OrgParser m (F [Citation]) citeItems = sequence <$> citeItem `sepBy1` (char ';') citeItem :: PandocMonad m => OrgParser m (F Citation) citeItem = do pref <- citePrefix itemKey <- orgCiteKey suff <- citeSuffix return $ do pre' <- pref suf' <- suff return Citation { citationId = itemKey , citationPrefix = B.toList pre' , citationSuffix = B.toList suf' , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } orgCiteKey :: PandocMonad m => OrgParser m Text orgCiteKey = do char '@' T.pack <$> many1 (satisfy orgCiteKeyChar) orgCiteKeyChar :: Char -> Bool orgCiteKeyChar c = isAlphaNum c || c `elem` ['.',':','?','!','`','\'','/','*','@','+','|', '(',')','{','}','<','>','&','_','^','$','#', '%','~','-'] rawAffix :: PandocMonad m => Bool -> OrgParser m Text rawAffix isPrefix = snd <$> withRaw (many (affixChar <|> try (void (char '[' >> rawAffix isPrefix >> char ']')))) where affixChar = void $ satisfy $ \c -> not (c == '^' || c == ';' || c == '[' || c == ']') && (not isPrefix || c /= '@') citePrefix :: PandocMonad m => OrgParser m (F Inlines) citePrefix = rawAffix True >>= parseFromString (trimInlinesF . mconcat <$> many inline) citeSuffix :: PandocMonad m => OrgParser m (F Inlines) citeSuffix = rawAffix False >>= parseFromString parseSuffix where parseSuffix = do hasSpace <- option False (True <$ try (spaceChar >> skipSpaces >> lookAhead nonspaceChar)) ils <- trimInlinesF . mconcat <$> many inline return $ if hasSpace then (B.space <>) <$> ils else ils citeStyle :: PandocMonad m => OrgParser m (CiteStyle, [CiteVariant]) citeStyle = option (DefStyle, []) $ do sty <- option DefStyle $ try $ char '/' *> orgCiteStyle variants <- option [] $ try $ char '/' *> orgCiteVariants return (sty, variants) orgCiteStyle :: PandocMonad m => OrgParser m CiteStyle orgCiteStyle = choice $ map try [ NoAuthorStyle <$ string "noauthor" , NoAuthorStyle <$ string "na" , LocatorsStyle <$ string "locators" , LocatorsStyle <$ char 'l' , NociteStyle <$ string "nocite" , NociteStyle <$ char 'n' , TextStyle <$ string "text" , TextStyle <$ char 't' ] orgCiteVariants :: PandocMonad m => OrgParser m [CiteVariant] orgCiteVariants = (fullnameVariant `sepBy1` (char '-')) <|> (many1 onecharVariant) where fullnameVariant = choice $ map try [ Bare <$ string "bare" , Caps <$ string "caps" , Full <$ string "full" ] onecharVariant = choice [ Bare <$ char 'b' , Caps <$ char 'c' , Full <$ char 'f' ] data CiteStyle = NoAuthorStyle | LocatorsStyle | NociteStyle | TextStyle | DefStyle deriving Show data CiteVariant = Caps | Bare | Full deriving Show spnl :: PandocMonad m => OrgParser m () spnl = skipSpaces *> optional (newline *> notFollowedBy blankline *> skipSpaces) cite :: PandocMonad m => OrgParser m (F Inlines) cite = do guardEnabled Ext_citations (cs, raw) <- withRaw $ try $ choice [ orgCite , orgRefCite ] return $ flip B.cite (B.text raw) <$> cs -- org-ref orgRefCite :: PandocMonad m => OrgParser m (F [Citation]) orgRefCite = try $ choice [ normalOrgRefCite , fmap (:[]) <$> linkLikeOrgRefCite ] normalOrgRefCite :: PandocMonad m => OrgParser m (F [Citation]) normalOrgRefCite = try $ do mode <- orgRefCiteMode firstCitation <- orgRefCiteList mode moreCitations <- many (try $ char ',' *> orgRefCiteList mode) return . sequence $ firstCitation : moreCitations where -- A list of org-ref style citation keys, parsed as citation of the given -- citation mode. orgRefCiteList :: PandocMonad m => CitationMode -> OrgParser m (F Citation) orgRefCiteList citeMode = try $ do key <- orgRefCiteKey returnF Citation { citationId = key , citationPrefix = mempty , citationSuffix = mempty , citationMode = citeMode , citationNoteNum = 0 , citationHash = 0 } -- | Read a link-like org-ref style citation. The citation includes pre and -- post text. However, multiple citations are not possible due to limitations -- in the syntax. linkLikeOrgRefCite :: PandocMonad m => OrgParser m (F Citation) linkLikeOrgRefCite = try $ do _ <- string "[[" mode <- orgRefCiteMode key <- orgRefCiteKey _ <- string "][" pre <- trimInlinesF . mconcat <$> manyTill inline (try $ string "::") spc <- option False (True <$ spaceChar) suf <- trimInlinesF . mconcat <$> manyTill inline (try $ string "]]") return $ do pre' <- pre suf' <- suf return Citation { citationId = key , citationPrefix = B.toList pre' , citationSuffix = B.toList (if spc then B.space <> suf' else suf') , citationMode = mode , citationNoteNum = 0 , citationHash = 0 } -- | Read a citation key. The characters allowed in citation keys are taken -- from the `org-ref-cite-re` variable in `org-ref.el`. orgRefCiteKey :: PandocMonad m => OrgParser m Text orgRefCiteKey = let citeKeySpecialChars = "-_:\\./" :: String isCiteKeySpecialChar c = c `elem` citeKeySpecialChars isCiteKeyChar c = isAlphaNum c || isCiteKeySpecialChar c endOfCitation = try $ do many $ satisfy isCiteKeySpecialChar satisfy $ not . isCiteKeyChar in try $ do optional (char '&') -- this is used in org-ref v3 satisfy isCiteKeyChar `many1TillChar` lookAhead endOfCitation -- | Supported citation types. Only a small subset of org-ref types is -- supported for now. TODO: rewrite this, use LaTeX reader as template. orgRefCiteMode :: PandocMonad m => OrgParser m CitationMode orgRefCiteMode = choice $ map (\(s, mode) -> mode <$ try (string s <* char ':')) [ ("cite", AuthorInText) , ("citep", NormalCitation) , ("citep*", NormalCitation) , ("citet", AuthorInText) , ("citet*", AuthorInText) , ("citeyear", SuppressAuthor) ] footnote :: PandocMonad m => OrgParser m (F Inlines) footnote = try $ do note <- inlineNote <|> referencedNote withNote <- getExportSetting exportWithFootnotes return $ if withNote then note else mempty inlineNote :: PandocMonad m => OrgParser m (F Inlines) inlineNote = try $ do string "[fn:" ref <- manyChar alphaNum char ':' note <- fmap B.para . trimInlinesF . mconcat <$> many1Till inline (char ']') unless (T.null ref) $ addToNotesTable ("fn:" <> ref, note) return $ B.note <$> note referencedNote :: PandocMonad m => OrgParser m (F Inlines) referencedNote = try $ do ref <- noteMarker return $ do notes <- asksF orgStateNotes' case lookup ref notes of Nothing -> return . B.str $ "[" <> ref <> "]" Just contents -> do st <- askF let contents' = runF contents st{ orgStateNotes' = [] } return $ B.note contents' linkOrImage :: PandocMonad m => OrgParser m (F Inlines) linkOrImage = explicitOrImageLink <|> selflinkOrImage <|> angleLink <|> plainLink "link or image" explicitOrImageLink :: PandocMonad m => OrgParser m (F Inlines) explicitOrImageLink = try $ do char '[' srcF <- applyCustomLinkFormat =<< possiblyEmptyLinkTarget descr <- enclosedRaw (char '[') (char ']') titleF <- parseFromString (mconcat <$> many inline) descr char ']' return $ do src <- srcF title <- titleF case cleanLinkText descr of Just imgSrc | isImageFilename imgSrc -> return . B.link src "" $ B.image imgSrc mempty mempty _ -> linkToInlinesF src title selflinkOrImage :: PandocMonad m => OrgParser m (F Inlines) selflinkOrImage = try $ do target <- char '[' *> linkTarget <* char ']' case cleanLinkText target of Nothing -> case T.uncons target of Just ('#', _) -> returnF $ B.link target "" (B.str target) _ -> return $ internalLink target (B.str target) Just nonDocTgt -> if isImageFilename nonDocTgt then returnF $ B.image nonDocTgt "" "" else returnF $ B.link nonDocTgt "" (B.str target) plainLink :: PandocMonad m => OrgParser m (F Inlines) plainLink = try $ do (orig, src) <- uri returnF $ B.link src "" (B.str orig) angleLink :: PandocMonad m => OrgParser m (F Inlines) angleLink = try $ do char '<' link <- plainLink char '>' return link linkTarget :: PandocMonad m => OrgParser m Text linkTarget = T.pack <$> enclosedByPair1 '[' ']' (noneOf "\n\r[]") possiblyEmptyLinkTarget :: PandocMonad m => OrgParser m Text possiblyEmptyLinkTarget = try linkTarget <|> ("" <$ string "[]") applyCustomLinkFormat :: Text -> OrgParser m (F Text) applyCustomLinkFormat link = do let (linkType, rest) = T.break (== ':') link return $ do formatter <- M.lookup linkType <$> asksF orgStateLinkFormatters return $ maybe link ($ T.drop 1 rest) formatter -- | Take a link and return a function which produces new inlines when given -- description inlines. linkToInlinesF :: Text -> Inlines -> F Inlines linkToInlinesF linkStr = case T.uncons linkStr of Nothing -> pure . B.link mempty "" -- wiki link (empty by convention) Just ('#', _) -> pure . B.link linkStr "" -- document-local fraction _ -> case cleanLinkText linkStr of Just extTgt -> return . B.link extTgt "" Nothing -> internalLink linkStr -- other internal link internalLink :: Text -> Inlines -> F Inlines internalLink link title = do ids <- asksF orgStateAnchorIds if link `elem` ids then return $ B.link ("#" <> link) "" title else let attr' = ("", ["spurious-link"] , [("target", link)]) in return $ B.spanWith attr' (B.emph title) -- | Parse an anchor like @<>@ and return an empty span with -- @anchor-id@ set as id. Legal anchors in org-mode are defined through -- @org-target-regexp@, which is fairly liberal. Since no link is created if -- @anchor-id@ contains spaces, we are more restrictive in what is accepted as -- an anchor. anchor :: PandocMonad m => OrgParser m (F Inlines) anchor = try $ do anchorId <- parseAnchor recordAnchorId anchorId returnF $ B.spanWith (solidify anchorId, [], []) mempty where parseAnchor = string "<<" *> many1Char (noneOf "\t\n\r<>\"' ") <* string ">>" <* skipSpaces -- | Replace every char but [a-zA-Z0-9_.-:] with a hyphen '-'. This mirrors -- the org function @org-export-solidify-link-text@. solidify :: Text -> Text solidify = T.map replaceSpecialChar where replaceSpecialChar c | isAlphaNum c = c | c `elem` ("_.-:" :: String) = c | otherwise = '-' -- | Parses an inline code block and marks it as an babel block. inlineCodeBlock :: PandocMonad m => OrgParser m (F Inlines) inlineCodeBlock = try $ do string "src_" lang <- many1Char orgArgWordChar opts <- option [] $ enclosedByPair '[' ']' inlineBlockOption inlineCode <- T.pack <$> enclosedByPair1 '{' '}' (noneOf "\n\r") let attrClasses = [translateLang lang] let attrKeyVal = originalLang lang <> opts let codeInlineBlck = B.codeWith ("", attrClasses, attrKeyVal) inlineCode returnF $ if exportsCode opts then codeInlineBlck else mempty where inlineBlockOption :: PandocMonad m => OrgParser m (Text, Text) inlineBlockOption = try $ do argKey <- orgArgKey paramValue <- option "yes" orgInlineParamValue return (argKey, paramValue) orgInlineParamValue :: PandocMonad m => OrgParser m Text orgInlineParamValue = try $ skipSpaces *> notFollowedBy (char ':') *> many1Char (noneOf "\t\n\r ]") <* skipSpaces emphasizedText :: PandocMonad m => OrgParser m (F Inlines) emphasizedText = do state <- getState guard . exportEmphasizedText . orgStateExportSettings $ state try $ choice [ emph , strong , strikeout , underline ] enclosedByPair :: PandocMonad m => Char -- ^ opening char -> Char -- ^ closing char -> OrgParser m a -- ^ parser -> OrgParser m [a] enclosedByPair s e p = char s *> manyTill p (char e) enclosedByPair1 :: PandocMonad m => Char -- ^ opening char -> Char -- ^ closing char -> OrgParser m a -- ^ parser -> OrgParser m [a] enclosedByPair1 s e p = char s *> many1Till p (char e) emph :: PandocMonad m => OrgParser m (F Inlines) emph = fmap B.emph <$> emphasisBetween '/' strong :: PandocMonad m => OrgParser m (F Inlines) strong = fmap B.strong <$> emphasisBetween '*' strikeout :: PandocMonad m => OrgParser m (F Inlines) strikeout = fmap B.strikeout <$> emphasisBetween '+' underline :: PandocMonad m => OrgParser m (F Inlines) underline = fmap B.underline <$> emphasisBetween '_' verbatim :: PandocMonad m => OrgParser m (F Inlines) verbatim = return . B.codeWith ("", ["verbatim"], []) <$> verbatimBetween '=' code :: PandocMonad m => OrgParser m (F Inlines) code = return . B.code <$> verbatimBetween '~' subscript :: PandocMonad m => OrgParser m (F Inlines) subscript = fmap B.subscript <$> try (char '_' *> subOrSuperExpr) superscript :: PandocMonad m => OrgParser m (F Inlines) superscript = fmap B.superscript <$> try (char '^' *> subOrSuperExpr) math :: PandocMonad m => OrgParser m (F Inlines) math = return . B.math <$> choice [ math1CharBetween '$' , mathTextBetween '$' , rawMathBetween "\\(" "\\)" ] displayMath :: PandocMonad m => OrgParser m (F Inlines) displayMath = return . B.displayMath <$> choice [ rawMathBetween "\\[" "\\]" , rawMathBetween "$$" "$$" ] updatePositions :: PandocMonad m => Char -> OrgParser m Char updatePositions c = do st <- getState let emphasisPreChars = orgStateEmphasisPreChars st when (c `elem` emphasisPreChars) updateLastPreCharPos when (c `elem` emphasisForbiddenBorderChars) updateLastForbiddenCharPos return c symbol :: PandocMonad m => OrgParser m (F Inlines) symbol = return . B.str . T.singleton <$> (oneOf specialChars >>= updatePositions) emphasisBetween :: PandocMonad m => Char -> OrgParser m (F Inlines) emphasisBetween c = try $ do startEmphasisNewlinesCounting emphasisAllowedNewlines res <- enclosedInlines (emphasisStart c) (emphasisEnd c) isTopLevelEmphasis <- null . orgStateEmphasisCharStack <$> getState when isTopLevelEmphasis resetEmphasisNewlines return res verbatimBetween :: PandocMonad m => Char -> OrgParser m Text verbatimBetween c = try $ emphasisStart c *> many1TillNOrLessNewlines 1 verbatimChar (emphasisEnd c) where verbatimChar = noneOf "\n\r" >>= updatePositions -- | Parses a raw string delimited by @c@ using Org's math rules mathTextBetween :: PandocMonad m => Char -> OrgParser m Text mathTextBetween c = try $ do mathStart c body <- many1TillNOrLessNewlines mathAllowedNewlines (noneOf (c:"\n\r")) (lookAhead $ mathEnd c) final <- mathEnd c return $ T.snoc body final -- | Parse a single character between @c@ using math rules math1CharBetween :: PandocMonad m => Char -> OrgParser m Text math1CharBetween c = try $ do char c res <- noneOf $ c:mathForbiddenBorderChars char c eof <|> () <$ lookAhead (oneOf mathPostChars) return $ T.singleton res rawMathBetween :: PandocMonad m => Text -> Text -> OrgParser m Text rawMathBetween s e = try $ textStr s *> manyTillChar anyChar (try $ textStr e) -- | Parses the start (opening character) of emphasis emphasisStart :: PandocMonad m => Char -> OrgParser m Char emphasisStart c = try $ do guard =<< afterEmphasisPreChar char c lookAhead (noneOf emphasisForbiddenBorderChars) pushToInlineCharStack c -- nested inlines are allowed, so mark this position as one which might be -- followed by another inline. updateLastPreCharPos return c -- | Parses the closing character of emphasis emphasisEnd :: PandocMonad m => Char -> OrgParser m Char emphasisEnd c = try $ do guard =<< notAfterForbiddenBorderChar char c eof <|> () <$ lookAhead acceptablePostChars updateLastStrPos popInlineCharStack return c where acceptablePostChars = do emphasisPostChars <- orgStateEmphasisPostChars <$> getState surroundingEmphasisChar >>= \x -> oneOf (x ++ emphasisPostChars) mathStart :: PandocMonad m => Char -> OrgParser m Char mathStart c = try $ char c <* notFollowedBy' (oneOf (c:mathForbiddenBorderChars)) mathEnd :: PandocMonad m => Char -> OrgParser m Char mathEnd c = try $ do res <- noneOf (c:mathForbiddenBorderChars) char c eof <|> () <$ lookAhead (oneOf mathPostChars) return res enclosedInlines :: (PandocMonad m, Show b) => OrgParser m a -> OrgParser m b -> OrgParser m (F Inlines) enclosedInlines start end = try $ trimInlinesF . mconcat <$> enclosed start end inline enclosedRaw :: (PandocMonad m, Show b) => OrgParser m a -> OrgParser m b -> OrgParser m Text enclosedRaw start end = try $ start *> (onSingleLine <|> spanningTwoLines) where onSingleLine = try $ many1TillChar (noneOf "\n\r") end spanningTwoLines = try $ anyLine >>= \f -> mappend (f <> " ") <$> onSingleLine -- | Like many1Till, but parses at most @n+1@ lines. @p@ must not consume -- newlines. many1TillNOrLessNewlines :: PandocMonad m => Int -> OrgParser m Char -> OrgParser m a -> OrgParser m Text many1TillNOrLessNewlines n p end = try $ nMoreLines (Just n) mempty >>= oneOrMore where nMoreLines Nothing cs = return cs nMoreLines (Just 0) cs = try $ (cs ++) <$> finalLine nMoreLines k cs = try $ (final k cs <|> rest k cs) >>= uncurry nMoreLines final _ cs = (\x -> (Nothing, cs ++ x)) <$> try finalLine rest m cs = (\x -> (minus1 <$> m, cs ++ x ++ "\n")) <$> try (manyTill p newline) finalLine = try $ manyTill p end minus1 k = k - 1 oneOrMore cs = T.pack cs <$ guard (not $ null cs) -- Org allows customization of the way it reads emphasis. We use the defaults -- here (see, e.g., the Emacs Lisp variable `org-emphasis-regexp-components` -- for details). -- | Chars not allowed at the (inner) border of emphasis emphasisForbiddenBorderChars :: [Char] emphasisForbiddenBorderChars = "\t\n\r \x200B" -- | The maximum number of newlines within emphasisAllowedNewlines :: Int emphasisAllowedNewlines = 1 -- LaTeX-style math: see `org-latex-regexps` for details -- | Chars allowed after an inline ($...$) math statement mathPostChars :: [Char] mathPostChars = "\t\n \"'),-.:;?" -- | Chars not allowed at the (inner) border of math mathForbiddenBorderChars :: [Char] mathForbiddenBorderChars = "\t\n\r ,;.$" -- | Maximum number of newlines in an inline math statement mathAllowedNewlines :: Int mathAllowedNewlines = 2 -- | Whether we are right behind a char allowed before emphasis afterEmphasisPreChar :: PandocMonad m => OrgParser m Bool afterEmphasisPreChar = do pos <- getPosition lastPrePos <- orgStateLastPreCharPos <$> getState return $ maybe True (== pos) lastPrePos -- | Whether the parser is right after a forbidden border char notAfterForbiddenBorderChar :: PandocMonad m => OrgParser m Bool notAfterForbiddenBorderChar = do pos <- getPosition lastFBCPos <- orgStateLastForbiddenCharPos <$> getState return $ lastFBCPos /= Just pos -- | Read a sub- or superscript expression subOrSuperExpr :: PandocMonad m => OrgParser m (F Inlines) subOrSuperExpr = try $ simpleSubOrSuperText <|> (choice [ charsInBalanced '{' '}' (T.singleton <$> noneOf "\n\r") , enclosing ('(', ')') <$> charsInBalanced '(' ')' (T.singleton <$> noneOf "\n\r") ] >>= parseFromString (mconcat <$> many inline)) where enclosing (left, right) s = T.cons left $ T.snoc s right simpleSubOrSuperText :: PandocMonad m => OrgParser m (F Inlines) simpleSubOrSuperText = try $ do state <- getState guard . exportSubSuperscripts . orgStateExportSettings $ state return . B.str <$> choice [ textStr "*" , mappend <$> option "" (T.singleton <$> oneOf "+-") <*> many1Char alphaNum ] inlineLaTeX :: PandocMonad m => OrgParser m (F Inlines) inlineLaTeX = try $ do cmd <- inlineLaTeXCommand texOpt <- getExportSetting exportWithLatex allowEntities <- getExportSetting exportWithEntities ils <- parseAsInlineLaTeX cmd texOpt maybe mzero returnF $ parseAsMathMLSym allowEntities cmd `mplus` parseAsMath cmd texOpt `mplus` ils where parseAsInlineLaTeX :: PandocMonad m => Text -> TeXExport -> OrgParser m (Maybe Inlines) parseAsInlineLaTeX cs = \case TeXExport -> maybeRight <$> runParserT inlineCommand state "" (toSources cs) TeXIgnore -> return (Just mempty) TeXVerbatim -> return (Just $ B.str cs) parseAsMathMLSym :: Bool -> Text -> Maybe Inlines parseAsMathMLSym allowEntities cs = do -- drop initial backslash and any trailing "{}" let clean = T.dropWhileEnd (`elem` ("{}" :: String)) . T.drop 1 -- If entities are disabled, then return the string as text, but -- only if this *is* a MathML entity. case B.str <$> MathMLEntityMap.getUnicode (clean cs) of Just _ | not allowEntities -> Just $ B.str cs x -> x state :: ParserState state = def{ stateOptions = def{ readerExtensions = enableExtension Ext_raw_tex (readerExtensions def) } } parseAsMath :: Text -> TeXExport -> Maybe Inlines parseAsMath cs = \case TeXExport -> maybeRight (readTeX cs) >>= fmap B.fromList . writePandoc DisplayInline TeXIgnore -> Just mempty TeXVerbatim -> Just $ B.str cs maybeRight :: Either a b -> Maybe b maybeRight = either (const Nothing) Just inlineLaTeXCommand :: PandocMonad m => OrgParser m Text inlineLaTeXCommand = try $ do rest <- getInput st <- getState parsed <- (lift . lift) $ runParserT rawLaTeXInline st "source" rest case parsed of Right cs -> do -- drop any trailing whitespace, those are not part of the command as -- far as org mode is concerned. let cmdNoSpc = T.dropWhileEnd isSpace cs let len = T.length cmdNoSpc count len anyChar return cmdNoSpc _ -> mzero exportSnippet :: PandocMonad m => OrgParser m (F Inlines) exportSnippet = try $ do string "@@" format <- many1TillChar (alphaNum <|> char '-') (char ':') snippet <- manyTillChar anyChar (try $ string "@@") returnF $ B.rawInline format snippet macro :: PandocMonad m => OrgParser m (F Inlines) macro = try $ do recursionDepth <- orgStateMacroDepth <$> getState guard $ recursionDepth < 15 string "{{{" name <- manyChar alphaNum args <- ([] <$ string "}}}") <|> char '(' *> argument `sepBy` char ',' <* eoa expander <- lookupMacro name <$> getState case expander of Nothing -> mzero Just fn -> do updateState $ \s -> s { orgStateMacroDepth = recursionDepth + 1 } res <- parseFromString (mconcat <$> many inline) $ fn args updateState $ \s -> s { orgStateMacroDepth = recursionDepth } return res where argument = manyChar $ notFollowedBy eoa *> noneOf "," eoa = string ")}}}" smart :: PandocMonad m => OrgParser m (F Inlines) smart = choice [doubleQuoted, singleQuoted, orgApostrophe, orgDash, orgEllipses] where orgDash = do guardOrSmartEnabled =<< getExportSetting exportSpecialStrings pure <$> dash <* updatePositions '-' orgEllipses = do guardOrSmartEnabled =<< getExportSetting exportSpecialStrings pure <$> ellipses <* updatePositions '.' orgApostrophe = do guardEnabled Ext_smart (char '\'' <|> char '\8217') <* updateLastPreCharPos <* updateLastForbiddenCharPos returnF (B.str "\x2019") guardOrSmartEnabled :: PandocMonad m => Bool -> OrgParser m () guardOrSmartEnabled b = do smartExtension <- extensionEnabled Ext_smart <$> getOption readerExtensions guard (b || smartExtension) singleQuoted :: PandocMonad m => OrgParser m (F Inlines) singleQuoted = try $ do guardOrSmartEnabled =<< getExportSetting exportSmartQuotes singleQuoteStart updatePositions '\'' withQuoteContext InSingleQuote $ fmap B.singleQuoted . trimInlinesF . mconcat <$> many1Till inline (singleQuoteEnd <* updatePositions '\'') -- doubleQuoted will handle regular double-quoted sections, as well -- as dialogues with an open double-quote without a close double-quote -- in the same paragraph. doubleQuoted :: PandocMonad m => OrgParser m (F Inlines) doubleQuoted = try $ do guardOrSmartEnabled =<< getExportSetting exportSmartQuotes doubleQuoteStart updatePositions '"' contents <- mconcat <$> many (try $ notFollowedBy doubleQuoteEnd >> inline) let doubleQuotedContent = withQuoteContext InDoubleQuote $ do doubleQuoteEnd updateLastForbiddenCharPos return . fmap B.doubleQuoted . trimInlinesF $ contents let leftQuoteAndContent = return $ pure (B.str "\8220") <> contents doubleQuotedContent <|> leftQuoteAndContent ���������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/Org/Meta.hs����������������������������������������������������0000644�0000000�0000000�00000026521�07346545000�017436� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Readers.Org.Meta Copyright : Copyright (C) 2014-2023 Albert Krewinkel License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel Parsers for Org-mode meta declarations. -} module Text.Pandoc.Readers.Org.Meta ( metaExport , metaKey , metaLine ) where import Text.Pandoc.Readers.Org.BlockStarts import Text.Pandoc.Readers.Org.ExportSettings (exportSettings) import Text.Pandoc.Readers.Org.Inlines import Text.Pandoc.Readers.Org.ParserState import Text.Pandoc.Readers.Org.Parsing import Text.Pandoc.Builder (Blocks, Inlines) import qualified Text.Pandoc.Builder as B import Text.Pandoc.Class.PandocMonad (PandocMonad) import Text.Pandoc.Definition import Text.Pandoc.Shared (blocksToInlines, safeRead) import Text.Pandoc.URI (urlEncode) import Control.Monad (mzero, void) import Data.List (intercalate, intersperse) import Data.Map (Map) import Data.Maybe (fromMaybe) import Data.Text (Text) import qualified Data.Map as Map import qualified Data.Set as Set import qualified Data.Text as T -- | Returns the current meta, respecting export options. metaExport :: Monad m => OrgParser m (F Meta) metaExport = do st <- getState let settings = orgStateExportSettings st return $ (if exportWithAuthor settings then id else removeMeta "author") . (if exportWithCreator settings then id else removeMeta "creator") . (if exportWithEmail settings then id else removeMeta "email") <$> orgStateMeta st removeMeta :: Text -> Meta -> Meta removeMeta key meta' = let metaMap = unMeta meta' in Meta $ Map.delete key metaMap -- | Parse and handle a single line containing meta information -- The order, in which blocks are tried, makes sure that we're not looking at -- the beginning of a block, so we don't need to check for it metaLine :: PandocMonad m => OrgParser m Blocks metaLine = try $ mempty <$ metaLineStart <* keywordLine keywordLine :: PandocMonad m => OrgParser m () keywordLine = try $ do key <- T.toLower <$> metaKey case Map.lookup key keywordHandlers of Nothing -> fail $ "Unknown keyword: " ++ T.unpack key Just hd -> hd metaKey :: Monad m => OrgParser m Text metaKey = T.toLower <$> many1Char (noneOf ": \n\r") <* char ':' <* skipSpaces infix 0 ~~> (~~>) :: a -> b -> (a, b) a ~~> b = (a, b) keywordHandlers :: PandocMonad m => Map Text (OrgParser m ()) keywordHandlers = Map.fromList [ "author" ~~> lineOfInlines `parseThen` collectLines "author" , "bibliography" ~~> fmap pure anyLine `parseThen` collectAsList "bibliography" , "creator" ~~> fmap pure anyLine `parseThen` B.setMeta "creator" , "date" ~~> lineOfInlines `parseThen` B.setMeta "date" , "description" ~~> lineOfInlines `parseThen` collectLines "description" , "email" ~~> fmap pure anyLine `parseThen` B.setMeta "email" , "exclude_tags" ~~> tagList >>= updateState . setExcludedTags , "header-includes" ~~> lineOfInlines `parseThen` collectLines "header-includes" -- HTML-specifix export settings , "html_head" ~~> metaExportSnippet "html" `parseThen` collectAsList "header-includes" , "html_head_extra" ~~> metaExportSnippet "html" `parseThen` collectAsList "header-includes" , "institute" ~~> lineOfInlines `parseThen` collectLines "institute" -- topic keywords , "keywords" ~~> lineOfInlines `parseThen` collectLines "keywords" -- document language , "language" ~~> fmap pure anyLine `parseThen` B.setMeta "lang" -- LaTeX-specific export settings , "latex_class" ~~> fmap pure anyLine `parseThen` B.setMeta "documentclass" , "latex_class_options" ~~> (pure . T.filter (`notElem` ("[]" :: String)) <$> anyLine) `parseThen` B.setMeta "classoption" , "latex_header" ~~> metaExportSnippet "latex" `parseThen` collectAsList "header-includes" , "latex_header_extra" ~~> metaExportSnippet "latex" `parseThen` collectAsList "header-includes" -- link and macro , "link" ~~> addLinkFormatter , "macro" ~~> macroDefinition >>= updateState . registerMacro -- pandoc-specific way to include references in the bibliography , "nocite" ~~> lineOfInlines `parseThen` collectLines "nocite" -- compact way to set export settings , "options" ~~> exportSettings -- pandoc-specific way to configure emphasis recognition , "pandoc-emphasis-post" ~~> emphChars >>= updateState . setEmphasisPostChar , "pandoc-emphasis-pre" ~~> emphChars >>= updateState . setEmphasisPreChar -- result markers (ignored) , "result" ~~> void anyLine , "select_tags" ~~> tagList >>= updateState . setSelectedTags , "seq_todo" ~~> todoSequence >>= updateState . registerTodoSequence , "subtitle" ~~> lineOfInlines `parseThen` collectLines "subtitle" , "title" ~~> lineOfInlines `parseThen` collectLines "title" , "todo" ~~> todoSequence >>= updateState . registerTodoSequence , "typ_todo" ~~> todoSequence >>= updateState . registerTodoSequence ] parseThen :: PandocMonad m => OrgParser m (F a) -> (a -> Meta -> Meta) -> OrgParser m () parseThen p modMeta = do value <- p meta <- orgStateMeta <$> getState updateState (\st -> st { orgStateMeta = modMeta <$> value <*> meta }) collectLines :: Text -> Inlines -> Meta -> Meta collectLines key value meta = let value' = appendValue meta (B.toList value) in B.setMeta key value' meta where appendValue :: Meta -> [Inline] -> MetaValue appendValue m v = MetaInlines $ curInlines m <> v curInlines m = case collectInlines <$> lookupMeta key m of Nothing -> [] Just [] -> [] Just xs -> xs <> [B.SoftBreak] collectInlines :: MetaValue -> [Inline] collectInlines = \case MetaInlines inlns -> inlns MetaList ml -> intercalate [B.SoftBreak] $ map collectInlines ml MetaString s -> [B.Str s] MetaBlocks blks -> blocksToInlines blks MetaMap _map -> [] MetaBool _bool -> [] -- | Accumulate the result as a MetaList under the given key. collectAsList :: B.ToMetaValue a => Text -> a -> Meta -> Meta collectAsList key value meta = let value' = metaListAppend meta (B.toMetaValue value) in B.setMeta key value' meta where metaListAppend m v = MetaList (curList m ++ [v]) curList m = case lookupMeta key m of Just (MetaList ms) -> ms Just x -> [x] _ -> [] -- | Read an format specific meta definition metaExportSnippet :: Monad m => Text -> OrgParser m (F Inlines) metaExportSnippet format = pure . B.rawInline format <$> anyLine -- | Parse a link type definition (like @wp https://en.wikipedia.org/wiki/@). addLinkFormatter :: Monad m => OrgParser m () addLinkFormatter = try $ do linkType <- T.cons <$> letter <*> manyChar (alphaNum <|> oneOf "-_") <* skipSpaces formatter <- parseFormat updateState $ \s -> let fs = orgStateLinkFormatters s in s{ orgStateLinkFormatters = Map.insert linkType formatter fs } -- | An ad-hoc, single-argument-only implementation of a printf-style format -- parser. parseFormat :: Monad m => OrgParser m (Text -> Text) parseFormat = try $ replacePlain <|> replaceUrl <|> justAppend where -- inefficient replacePlain = try $ (\x -> T.concat . flip intersperse x) <$> sequence [tillSpecifier 's', rest] replaceUrl = try $ (\x -> T.concat . flip intersperse x . urlEncode) <$> sequence [tillSpecifier 'h', rest] justAppend = try $ (<>) <$> rest rest = manyTillChar anyChar (eof <|> () <$ oneOf "\n\r") tillSpecifier c = manyTillChar (noneOf "\n\r") (try $ string ('%':c:"")) tagList :: Monad m => OrgParser m [Tag] tagList = do skipSpaces map Tag <$> many (orgTagWord <* skipSpaces) <* newline setExcludedTags :: [Tag] -> OrgParserState -> OrgParserState setExcludedTags tags st = let finalSet = if orgStateExcludeTagsChanged st then foldr Set.insert (orgStateExcludeTags st) tags else Set.fromList tags in st { orgStateExcludeTags = finalSet, orgStateExcludeTagsChanged = True } setSelectedTags :: [Tag] -> OrgParserState -> OrgParserState setSelectedTags tags st = let finalSet = if orgStateSelectTagsChanged st then foldr Set.insert (orgStateSelectTags st) tags else Set.fromList tags in st { orgStateSelectTags = finalSet, orgStateSelectTagsChanged = True } setEmphasisPreChar :: Maybe [Char] -> OrgParserState -> OrgParserState setEmphasisPreChar csMb st = let preChars = fromMaybe (orgStateEmphasisPreChars defaultOrgParserState) csMb in st { orgStateEmphasisPreChars = preChars } setEmphasisPostChar :: Maybe [Char] -> OrgParserState -> OrgParserState setEmphasisPostChar csMb st = let postChars = fromMaybe (orgStateEmphasisPostChars defaultOrgParserState) csMb in st { orgStateEmphasisPostChars = postChars } -- | Parses emphasis border character like @".,?!"@ emphChars :: Monad m => OrgParser m (Maybe [Char]) emphChars = do skipSpaces safeRead <$> anyLine lineOfInlines :: PandocMonad m => OrgParser m (F Inlines) lineOfInlines = do updateLastPreCharPos trimInlinesF . mconcat <$> manyTill inline newline -- | Parses ToDo sequences / keywords like @TODO DOING | DONE@. todoSequence :: Monad m => OrgParser m TodoSequence todoSequence = try $ do todoKws <- todoKeywords doneKws <- optionMaybe $ todoDoneSep *> doneKeywords newline -- There must be at least one DONE keyword. The last TODO keyword is -- taken if necessary. case doneKws of Just done -> return $ keywordsToSequence todoKws done Nothing -> case reverse todoKws of [] -> mzero -- no keywords present (x:xs) -> return $ keywordsToSequence (reverse xs) [x] where todoKeyword :: Monad m => OrgParser m Text todoKeyword = many1Char nonspaceChar <* skipSpaces todoKeywords :: Monad m => OrgParser m [Text] todoKeywords = try $ let endOfKeywords = todoDoneSep <|> void newline in manyTill todoKeyword (lookAhead endOfKeywords) doneKeywords :: Monad m => OrgParser m [Text] doneKeywords = try $ manyTill (todoKeyword <* optional todoDoneSep) (lookAhead newline) todoDoneSep :: Monad m => OrgParser m () todoDoneSep = void . try $ skipSpaces *> char '|' <* skipSpaces1 keywordsToSequence :: [Text] -> [Text] -> TodoSequence keywordsToSequence todo done = let todoMarkers = map (TodoMarker Todo) todo doneMarkers = map (TodoMarker Done) done in todoMarkers ++ doneMarkers macroDefinition :: Monad m => OrgParser m (Text, [Text] -> Text) macroDefinition = try $ do macroName <- many1Char nonspaceChar <* skipSpaces firstPart <- expansionPart (elemOrder, parts) <- unzip <$> many ((,) <$> placeholder <*> expansionPart) let expander = mconcat . alternate (firstPart:parts) . reorder elemOrder return (macroName, expander) where placeholder :: Monad m => OrgParser m Int placeholder = try . fmap (fromMaybe 1 . safeRead) $ char '$' *> many1Char digit expansionPart :: Monad m => OrgParser m Text expansionPart = try $ manyChar (notFollowedBy placeholder *> noneOf "\n\r") alternate :: [a] -> [a] -> [a] alternate [] ys = ys alternate xs [] = xs alternate (x:xs) (y:ys) = x : y : alternate xs ys reorder :: [Int] -> [Text] -> [Text] reorder perm xs = let element n = take 1 $ drop (n - 1) xs in concatMap element perm �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/Org/ParserState.hs���������������������������������������������0000644�0000000�0000000�00000025304�07346545000�021003� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Readers.Org.ParserState Copyright : Copyright (C) 2014-2023 Albert Krewinkel License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel Define the Org-mode parser state. -} module Text.Pandoc.Readers.Org.ParserState ( OrgParserState (..) , defaultOrgParserState , OrgParserLocal (..) , OrgNoteRecord , Tag(..) , HasReaderOptions (..) , HasQuoteContext (..) , HasMacros (..) , TodoMarker (..) , TodoSequence , TodoState (..) , activeTodoMarkers , registerTodoSequence , MacroExpander , lookupMacro , registerMacro , F , askF , asksF , trimInlinesF , runF , returnF , ExportSettings (..) , ArchivedTreesOption (..) , TeXExport (..) , optionsToParserState ) where import Control.Monad.Reader (ReaderT, asks, local) import Data.Default (Default (..)) import qualified Data.Map as M import qualified Data.Set as Set import Data.Text (Text) import Text.Pandoc.Builder (Blocks) import Text.Pandoc.Definition (Meta (..), nullMeta) import Text.Pandoc.Logging import Text.Pandoc.Options (ReaderOptions (..)) import Text.Pandoc.Parsing (Future, HasIdentifierList (..), HasIncludeFiles (..), HasLastStrPosition (..), HasLogMessages (..), HasMacros (..), HasQuoteContext (..), HasReaderOptions (..), ParserContext (..), QuoteContext (..), SourcePos, askF, asksF, returnF, runF, trimInlinesF) import Text.Pandoc.TeX (Macro) -- | This is used to delay evaluation until all relevant information has been -- parsed and made available in the parser state. type F = Future OrgParserState -- | An inline note / footnote containing the note key and its (inline) value. type OrgNoteRecord = (Text, F Blocks) -- | Table of footnotes type OrgNoteTable = [OrgNoteRecord] -- | Map of functions for link transformations. The map key is refers to the -- link-type, the corresponding function transforms the given link string. type OrgLinkFormatters = M.Map Text (Text -> Text) -- | Macro expander function type MacroExpander = [Text] -> Text -- | Tag newtype Tag = Tag { fromTag :: Text } deriving (Show, Eq, Ord) -- | The states in which a todo item can be data TodoState = Todo | Done deriving (Eq, Ord, Show) -- | A ToDo keyword like @TODO@ or @DONE@. data TodoMarker = TodoMarker { todoMarkerState :: TodoState , todoMarkerName :: Text } deriving (Show, Eq) -- | Collection of todo markers in the order in which items should progress type TodoSequence = [TodoMarker] -- | Org-mode parser state data OrgParserState = OrgParserState { orgStateAnchorIds :: [Text] , orgStateEmphasisCharStack :: [Char] , orgStateEmphasisPreChars :: [Char] -- ^ Chars allowed to occur before -- emphasis; spaces and newlines are -- always ok in addition to what is -- specified here. , orgStateEmphasisPostChars :: [Char] -- ^ Chars allowed at after emphasis , orgStateEmphasisNewlines :: Maybe Int , orgStateExcludeTags :: Set.Set Tag , orgStateExcludeTagsChanged :: Bool , orgStateExportSettings :: ExportSettings , orgStateIdentifiers :: Set.Set Text , orgStateIncludeFiles :: [Text] , orgStateLastForbiddenCharPos :: Maybe SourcePos , orgStateLastPreCharPos :: Maybe SourcePos , orgStateLastStrPos :: Maybe SourcePos , orgStateLinkFormatters :: OrgLinkFormatters , orgStateMacros :: M.Map Text MacroExpander , orgStateMacroDepth :: Int , orgStateMeta :: F Meta , orgStateNotes' :: OrgNoteTable , orgStateOptions :: ReaderOptions , orgStateParserContext :: ParserContext , orgStateSelectTags :: Set.Set Tag , orgStateSelectTagsChanged :: Bool , orgStateTodoSequences :: [TodoSequence] , orgStateTrimLeadBlkIndent :: Bool , orgLogMessages :: [LogMessage] , orgMacros :: M.Map Text Macro } newtype OrgParserLocal = OrgParserLocal { orgLocalQuoteContext :: QuoteContext } instance Default OrgParserLocal where def = OrgParserLocal NoQuote instance HasReaderOptions OrgParserState where extractReaderOptions = orgStateOptions instance HasLastStrPosition OrgParserState where getLastStrPos = orgStateLastStrPos setLastStrPos pos st = st{ orgStateLastStrPos = pos } instance Monad m => HasQuoteContext st (ReaderT OrgParserLocal m) where getQuoteContext = asks orgLocalQuoteContext withQuoteContext q = local (\s -> s{orgLocalQuoteContext = q}) instance HasIdentifierList OrgParserState where extractIdentifierList = orgStateIdentifiers updateIdentifierList f s = s{ orgStateIdentifiers = f (orgStateIdentifiers s) } instance HasLogMessages OrgParserState where addLogMessage msg st = st{ orgLogMessages = msg : orgLogMessages st } getLogMessages st = reverse $ orgLogMessages st instance HasMacros OrgParserState where extractMacros st = orgMacros st updateMacros f st = st{ orgMacros = f (orgMacros st) } instance HasIncludeFiles OrgParserState where getIncludeFiles = orgStateIncludeFiles addIncludeFile f st = st { orgStateIncludeFiles = f : orgStateIncludeFiles st } dropLatestIncludeFile st = st { orgStateIncludeFiles = drop 1 $ orgStateIncludeFiles st } instance Default OrgParserState where def = defaultOrgParserState defaultOrgParserState :: OrgParserState defaultOrgParserState = OrgParserState { orgStateAnchorIds = [] , orgStateEmphasisPreChars = "-\t ('\"{\x200B" , orgStateEmphasisPostChars = "-\t\n .,:!?;'\")}[\x200B" , orgStateEmphasisCharStack = [] , orgStateEmphasisNewlines = Nothing , orgStateExportSettings = def , orgStateExcludeTags = Set.singleton $ Tag "noexport" , orgStateExcludeTagsChanged = False , orgStateIdentifiers = Set.empty , orgStateIncludeFiles = [] , orgStateLastForbiddenCharPos = Nothing , orgStateLastPreCharPos = Nothing , orgStateLastStrPos = Nothing , orgStateLinkFormatters = M.empty , orgStateMacros = M.empty , orgStateMacroDepth = 0 , orgStateMeta = return nullMeta , orgStateNotes' = [] , orgStateOptions = def , orgStateParserContext = NullState , orgStateSelectTags = Set.singleton $ Tag "export" , orgStateSelectTagsChanged = False , orgStateTrimLeadBlkIndent = True , orgStateTodoSequences = [] , orgLogMessages = [] , orgMacros = M.empty } optionsToParserState :: ReaderOptions -> OrgParserState optionsToParserState opts = def { orgStateOptions = opts } registerTodoSequence :: TodoSequence -> OrgParserState -> OrgParserState registerTodoSequence todoSeq st = let curSeqs = orgStateTodoSequences st in st{ orgStateTodoSequences = todoSeq : curSeqs } -- | Get the current todo/done sequences. If no custom todo sequences have been -- defined, return a list containing just the default todo/done sequence. activeTodoSequences :: OrgParserState -> [TodoSequence] activeTodoSequences st = let curSeqs = orgStateTodoSequences st in if null curSeqs then [[ TodoMarker Todo "TODO" , TodoMarker Done "DONE" ]] else curSeqs activeTodoMarkers :: OrgParserState -> TodoSequence activeTodoMarkers = concat . activeTodoSequences lookupMacro :: Text -> OrgParserState -> Maybe MacroExpander lookupMacro macroName = M.lookup macroName . orgStateMacros registerMacro :: (Text, MacroExpander) -> OrgParserState -> OrgParserState registerMacro (name, expander) st = let curMacros = orgStateMacros st in st{ orgStateMacros = M.insert name expander curMacros } -- -- Export Settings -- -- | Options for the way archived trees are handled. data ArchivedTreesOption = ArchivedTreesExport -- ^ Export the complete tree | ArchivedTreesNoExport -- ^ Exclude archived trees from exporting | ArchivedTreesHeadlineOnly -- ^ Export only the headline, discard the contents -- | Options for the handling of LaTeX environments and fragments. -- Represents allowed values of Emacs variable @org-export-with-latex@. data TeXExport = TeXExport -- ^ Include raw TeX in the output | TeXIgnore -- ^ Ignore raw TeX | TeXVerbatim -- ^ Keep everything in verbatim -- | Export settings -- These settings can be changed via OPTIONS statements. data ExportSettings = ExportSettings { exportArchivedTrees :: ArchivedTreesOption -- ^ How to treat archived trees , exportDrawers :: Either [Text] [Text] -- ^ Specify drawer names which should be exported. @Left@ names are -- explicitly excluded from the resulting output while @Right@ means that -- only the listed drawer names should be included. , exportEmphasizedText :: Bool -- ^ Parse emphasized text , exportHeadlineLevels :: Int -- ^ Maximum depth of headlines, deeper headlines are convert to list , exportPreserveBreaks :: Bool -- ^ Whether to preserve linebreaks , exportSmartQuotes :: Bool -- ^ Parse quotes smartly , exportSpecialStrings :: Bool -- ^ Parse ellipses and dashes smartly , exportSubSuperscripts :: Bool -- ^ TeX-like syntax for sub- and superscripts , exportWithAuthor :: Bool -- ^ Include author in final meta-data , exportWithCreator :: Bool -- ^ Include creator in final meta-data , exportWithEmail :: Bool -- ^ Include email in final meta-data , exportWithEntities :: Bool -- ^ Include MathML-like entities , exportWithFootnotes :: Bool -- ^ Include footnotes , exportWithLatex :: TeXExport -- ^ Handling of raw TeX commands , exportWithPlanning :: Bool -- ^ Keep planning info after headlines , exportWithTags :: Bool -- ^ Keep tags as part of headlines , exportWithTables :: Bool -- ^ Include tables , exportWithTodoKeywords :: Bool -- ^ Keep TODO keywords in headers } instance Default ExportSettings where def = defaultExportSettings defaultExportSettings :: ExportSettings defaultExportSettings = ExportSettings { exportArchivedTrees = ArchivedTreesHeadlineOnly , exportDrawers = Left ["LOGBOOK"] , exportEmphasizedText = True , exportHeadlineLevels = 3 , exportPreserveBreaks = False , exportSmartQuotes = False , exportSpecialStrings = True , exportSubSuperscripts = True , exportWithAuthor = True , exportWithCreator = True , exportWithEmail = True , exportWithEntities = True , exportWithFootnotes = True , exportWithLatex = TeXExport , exportWithPlanning = False , exportWithTags = True , exportWithTables = True , exportWithTodoKeywords = True } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/Org/Parsing.hs�������������������������������������������������0000644�0000000�0000000�00000012467�07346545000�020157� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{- | Module : Text.Pandoc.Readers.Org.Parsing Copyright : Copyright (C) 2014-2023 Albert Krewinkel License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel Org-mode parsing utilities. Most functions are simply re-exports from @Text.Pandoc.Parsing@, some functions are adapted to Org-mode specific functionality. -} module Text.Pandoc.Readers.Org.Parsing ( OrgParser , anyLine , anyLineNewline , indentWith , blanklines , newline , parseFromString , skipSpaces1 , inList , withContext , getExportSetting , updateLastForbiddenCharPos , updateLastPreCharPos , orgArgKey , orgArgWord , orgArgWordChar , orgTagWord , orgTagWordChar -- * Re-exports from Text.Pandoc.Parser , ParserContext (..) , textStr , countChar , manyChar , many1Char , manyTillChar , many1Till , many1TillChar , notFollowedBy' , spaceChar , nonspaceChar , skipSpaces , blankline , enclosed , stringAnyCase , charsInBalanced , uri , withRaw , readWithM , guardEnabled , updateLastStrPos , notAfterString , ParserState (..) , registerHeader , QuoteContext (..) , singleQuoteStart , singleQuoteEnd , doubleQuoteStart , doubleQuoteEnd , dash , ellipses , citeKey , gridTableWith , insertIncludedFile , runParser , runParserT , getInput , char , letter , digit , alphaNum , skipMany1 , spaces , anyChar , satisfy , string , count , eof , noneOf , oneOf , lookAhead , notFollowedBy , many , many1 , manyTill , (<|>) , () , choice , try , sepBy , sepBy1 , sepEndBy1 , endBy1 , option , optional , optionMaybe , getState , updateState , SourcePos , sourceName , getPosition ) where import Data.Text (Text) import Text.Pandoc.Readers.Org.ParserState import Text.Pandoc.Parsing hiding (anyLine, blanklines, newline, parseFromString) import qualified Text.Pandoc.Parsing as P import Control.Monad (guard) import Control.Monad.Reader (ReaderT) -- | The parser used to read org files. type OrgParser m = ParsecT Sources OrgParserState (ReaderT OrgParserLocal m) -- -- Adaptions and specializations of parsing utilities -- -- | Parse any line of text anyLine :: Monad m => OrgParser m Text anyLine = P.anyLine <* updateLastPreCharPos <* updateLastForbiddenCharPos -- | Like @'Text.Pandoc.Parsing'@, but resets the position of the last character -- allowed before emphasised text. parseFromString :: Monad m => OrgParser m a -> Text -> OrgParser m a parseFromString parser str' = do updateState $ \s -> s{ orgStateLastPreCharPos = Nothing } result <- P.parseFromString parser str' updateState $ \s -> s { orgStateLastPreCharPos = Nothing } return result -- | Skip one or more tab or space characters. skipSpaces1 :: Monad m => OrgParser m () skipSpaces1 = skipMany1 spaceChar -- | Like @Text.Parsec.Char.newline@, but causes additional state changes. newline :: Monad m => OrgParser m Char newline = P.newline <* updateLastPreCharPos <* updateLastForbiddenCharPos -- | Like @Text.Parsec.Char.blanklines@, but causes additional state changes. blanklines :: Monad m => OrgParser m Text blanklines = P.blanklines <* updateLastPreCharPos <* updateLastForbiddenCharPos -- | Succeeds when we're in list context. inList :: Monad m => OrgParser m () inList = do ctx <- orgStateParserContext <$> getState guard (ctx == ListItemState) -- | Parse in different context withContext :: Monad m => ParserContext -- ^ New parser context -> OrgParser m a -- ^ Parsec to run in that context -> OrgParser m a withContext context parser = do oldContext <- orgStateParserContext <$> getState updateState $ \s -> s{ orgStateParserContext = context } result <- parser updateState $ \s -> s{ orgStateParserContext = oldContext } return result -- -- Parsec state functions -- -- | Get an export setting. getExportSetting :: Monad m => (ExportSettings -> a) -> OrgParser m a getExportSetting s = s . orgStateExportSettings <$> getState -- | Set the current position as the last position at which a forbidden char -- was found (i.e. a character which is not allowed at the inner border of -- markup). updateLastForbiddenCharPos :: Monad m => OrgParser m () updateLastForbiddenCharPos = getPosition >>= \p -> updateState $ \s -> s{ orgStateLastForbiddenCharPos = Just p} -- | Set the current parser position as the position at which a character was -- seen which allows inline markup to follow. updateLastPreCharPos :: Monad m => OrgParser m () updateLastPreCharPos = getPosition >>= \p -> updateState $ \s -> s{ orgStateLastPreCharPos = Just p} -- -- Org key-value parsing -- -- | Read the key of a plist style key-value list. orgArgKey :: Monad m => OrgParser m Text orgArgKey = try $ skipSpaces *> char ':' *> many1Char orgArgWordChar -- | Read the value of a plist style key-value list. orgArgWord :: Monad m => OrgParser m Text orgArgWord = many1Char orgArgWordChar -- | Chars treated as part of a word in plists. orgArgWordChar :: Monad m => OrgParser m Char orgArgWordChar = alphaNum <|> oneOf "-_" orgTagWord :: Monad m => OrgParser m Text orgTagWord = many1Char orgTagWordChar orgTagWordChar :: Monad m => OrgParser m Char orgTagWordChar = alphaNum <|> oneOf "@%#_" ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/Org/Shared.hs��������������������������������������������������0000644�0000000�0000000�00000006513�07346545000�017755� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Readers.Org.Shared Copyright : Copyright (C) 2014-2023 Albert Krewinkel License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel Utility functions used in other Pandoc Org modules. -} module Text.Pandoc.Readers.Org.Shared ( cleanLinkText , isImageFilename , originalLang , translateLang , exportsCode ) where import Control.Applicative ((<|>)) import Data.Char (isAlphaNum) import Data.Text (Text) import qualified Data.Text as T import System.FilePath (isValid, takeExtension) import qualified System.FilePath.Posix as Posix import qualified System.FilePath.Windows as Windows -- | Check whether the given string looks like the path to of URL of an image. isImageFilename :: Text -> Bool isImageFilename fp = hasImageExtension && (isValid (T.unpack fp) || isKnownProtocolUri) where hasImageExtension = takeExtension (T.unpack $ T.toLower fp) `elem` imageExtensions isKnownProtocolUri = any (\x -> (x <> "://") `T.isPrefixOf` fp) protocols imageExtensions = [ ".jpeg", ".jpg", ".png", ".gif", ".svg", ".webp", ".jxl" ] protocols = [ "file", "http", "https" ] -- | Cleanup and canonicalize a string describing a link. Return @Nothing@ if -- the string does not appear to be a link. cleanLinkText :: Text -> Maybe Text cleanLinkText s | Just f <- toFileSchema s = Just f -- absolute path | Just _ <- T.stripPrefix "./" s = Just s -- relative path | Just _ <- T.stripPrefix "../" s = Just s -- relative path -- Relative path or URL (file schema) | Just s' <- T.stripPrefix "file:" s = if "//" `T.isPrefixOf` s' then Just s else toFileSchema s' <|> Just s' | isUrl s = Just s | otherwise = Nothing where toFileSchema :: Text -> Maybe Text toFileSchema t | Windows.isAbsolute (T.unpack t) = Just ("file:///" <> t) | Posix.isAbsolute (T.unpack t) = Just ("file://" <> t) | otherwise = Nothing isUrl :: Text -> Bool isUrl cs = let (scheme, path) = T.break (== ':') cs in T.all (\c -> isAlphaNum c || T.any (== c) ".-") scheme && not (T.null path) -- | Creates an key-value pair marking the original language name specified for -- a piece of source code. -- | Creates an key-value attributes marking the original language name -- specified for a piece of source code. originalLang :: Text -> [(Text, Text)] originalLang lang = let transLang = translateLang lang in [("org-language", lang) | transLang /= lang] -- | Translate from Org-mode's programming language identifiers to those used -- by Pandoc. This is useful to allow for proper syntax highlighting in -- Pandoc output. translateLang :: Text -> Text translateLang cs = case cs of "C" -> "c" "C++" -> "cpp" "emacs-lisp" -> "commonlisp" -- emacs lisp is not supported "js" -> "javascript" "lisp" -> "commonlisp" "R" -> "r" "sh" -> "bash" "sqlite" -> "sql" _ -> cs exportsCode :: [(Text, Text)] -> Bool exportsCode = maybe True (`elem` ["code", "both"]) . lookup "exports" �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/RIS.hs���������������������������������������������������������0000644�0000000�0000000�00000021475�07346545000�016461� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Readers.RIS Copyright : Copyright (C) 2022-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Parses RIS bibliographies into a Pandoc document with empty body and `references` and `nocite` fields in the metadata. A wildcard `nocite` is used so that if the document is rendered in another format, the entire bibliography will be printed. -} module Text.Pandoc.Readers.RIS ( readRIS ) where import Text.Pandoc.Options import Text.Pandoc.Definition import Text.Pandoc.Parsing import Data.Char (isAsciiUpper, isDigit, isSpace, ord, chr) import Data.List (foldl') import Citeproc (Reference(..), ItemId(..), Val(..), Date(..), DateParts(..), toVariable) import Text.Pandoc.Builder as B import Text.Pandoc.Class (PandocMonad) import Text.Pandoc.Citeproc.MetaValue (referenceToMetaValue) import Text.Pandoc.Citeproc.Name (toName, NameOpts(..)) import Control.Monad.Except (throwError) import qualified Data.Text as T import Data.Text (Text) import Data.Maybe (fromMaybe) import qualified Data.Map as M import Safe (readMay) -- | Read RIS from an input string and return a Pandoc document. -- The document will have only metadata, with an empty body. -- The metadata will contain a `references` field with the -- bibliography entries, and a `nocite` field with the wildcard `[@*]`. readRIS :: (PandocMonad m, ToSources a) => ReaderOptions -> a -> m Pandoc readRIS _opts inp = do parsed <- readWithM risReferences () inp case parsed of Right refs -> do refs' <- mapM (traverse (return . text)) refs return $ setMeta "nocite" (cite [Citation {citationId = "*" , citationPrefix = [] , citationSuffix = [] , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0}] (str "[@*]")) $ setMeta "references" (map referenceToMetaValue refs') $ B.doc mempty Left e -> throwError e type RISParser m = ParsecT Sources () m risLine :: PandocMonad m => RISParser m (Text, Text) risLine = do key <- T.pack <$> count 2 (satisfy (\c -> isAsciiUpper c || isDigit c)) _ <- many1 spaceChar char '-' val <- (many1 spaceChar *> anyLine) <|> mempty <$ newline return (key, T.strip val) risSeparator :: PandocMonad m => RISParser m () risSeparator = do try $ string "ER" _ <- many1 spaceChar char '-' _ <- anyLine optional blanklines risRecord :: PandocMonad m => RISParser m [(Text, Text)] risRecord = manyTill risLine risSeparator risRecordToReference :: [(Text, Text)] -> Reference Text risRecordToReference keys = addId $ foldr go defref keys where go (key, val) = case key of "TY" -> \ref -> ref{ referenceType = fromMaybe "misc" (M.lookup val risTypes) } "ID" -> \ref -> ref{ referenceId = ItemId val } "VL" -> addVar "volume" val "KW" -> \ref -> ref{ referenceVariables = M.alter (\x -> case x of Nothing -> Just $ TextVal val Just (TextVal kws) -> Just (TextVal (kws <> ", " <> val)) _ -> x) "keyword" (referenceVariables ref) } "PB" -> addVar "publisher" val "PP" -> addVar "publisher-place" val "DO" -> addVar "DOI" val "SP" -> \ref -> case M.lookup "page" (referenceVariables ref) of Nothing -> addVar "page" val ref Just (FancyVal eg) -> addVar "page" (val <> eg) ref _ -> ref "EP" -> \ref -> case M.lookup "page" (referenceVariables ref) of Nothing -> addVar "page" ("-" <> val) ref Just (FancyVal eg) -> addVar "page" (val <> "-" <> eg) ref _ -> ref "AU" -> addName "author" val "A1" -> addName "author" val "ED" -> addName "editor" val "A2" -> addName "editor" val "TI" -> addVar "title" val "T1" -> addVar "title" val "CT" -> addVar "title" val "BT" -> \ref -> if referenceType ref == "book" then addVar "title" val ref else addVar "container-title" val ref "JO" -> addVar "container-title" val "JF" -> addVar "container-title" val "T2" -> addVar "container-title" val "ET" -> addVar "edition" val "NV" -> addVar "number-of-volumes" val "AB" -> addVar "abstract" val "PY" -> addYear "issued" val "Y1" -> addYear "issued" val "IS" -> addVar "issue" val "SN" -> addVar "ISSN" val "LA" -> addVar "language" val "UR" -> addVar "url" val "LK" -> addVar "url" val _ -> id -- TODO addVar k v r = r{ referenceVariables = M.insert (toVariable k) (FancyVal v) (referenceVariables r) } addName k v r = let new = toName NameOpts{ nameOptsPrefixIsNonDroppingParticle = False , nameOptsUseJuniorComma = False } . B.toList . B.text $ v f Nothing = Just (NamesVal new) f (Just (NamesVal ns)) = Just (NamesVal (new ++ ns)) f (Just x) = Just x in r{ referenceVariables = M.alter f k (referenceVariables r) } addYear k v r = let d = DateVal $ case readMay (T.unpack v) of Nothing -> Date { dateParts = [] , dateCirca = False , dateSeason = Nothing , dateLiteral = Just v } Just y -> Date { dateParts = [DateParts [y]] , dateCirca = False , dateSeason = Nothing , dateLiteral = Nothing } in r{ referenceVariables = M.insert k d (referenceVariables r) } defref = Reference{ referenceId = mempty , referenceType = mempty , referenceDisambiguation = Nothing , referenceVariables = mempty } addId rec = if referenceId rec == mempty then rec{ referenceId = ItemId (authors <> pubdate) } else rec authors = T.intercalate "_" $ [T.takeWhile (\c -> c /= ',' && not (isSpace c)) n | (k, n) <- keys, k == "AU" || k == "A1"] pubdate = mconcat ["_" <> d | (k, d) <- keys, k == "PY" || k == "Y1"] risReferences :: PandocMonad m => RISParser m [Reference Text] risReferences = do recs <- many risRecord spaces eof return $ fixDuplicateIds $ map risRecordToReference recs fixDuplicateIds :: [Reference Text] -> [Reference Text] fixDuplicateIds = reverse . snd . foldl' go (mempty, []) where go (ids_seen, refs) ref = case M.lookup (referenceId ref) ids_seen of Nothing -> (M.insert (referenceId ref) (ord 'a') ids_seen, ref:refs) Just n -> (M.insert (referenceId ref) (n+1) ids_seen, ref{ referenceId = ItemId . (<> T.singleton (chr n)) . unItemId $ referenceId ref } : refs) risTypes :: M.Map Text Text risTypes = M.fromList [ ("ABST", "article") , ("ADVS", "motion-picture") , ("AGGR", "dataset") , ("ANCIENT", "book") , ("ART", "graphic") , ("BILL", "bill") , ("BLOG", "post-weblog") , ("BOOK", "book") , ("CASE", "legal_case") , ("CHAP", "chapter") , ("CHART", "graphic") , ("CLSWK", "book") , ("COMP", "program") , ("CONF", "paper-conference") , ("CPAPER", "paper-conference") , ("CTLG", "catalog") , ("DATA", "dataset") , ("DBASE", "dataset") , ("DICT", "book") , ("EBOOK", "book") , ("ECHAP", "chapter") , ("EDBOOK", "book") , ("EJOUR", "article") , ("WEB", "webpage") , ("ENCYC", "entry-encyclopedia") , ("EQUA", "figure") , ("FIGURE", "figure") , ("GEN", "entry") , ("GOVDOC", "report") , ("GRANT", "report") , ("HEAR", "report") , ("ICOMM", "personal_communication") , ("INPR", "article-journal") , ("JFULL", "article-journal") , ("JOUR", "article-journal") , ("LEGAL", "legal_case") , ("MANSCPT", "manuscript") , ("MAP", "map") , ("MGZN", "article-magazine") , ("MPCT", "motion-picture") , ("MULTI", "webpage") , ("MUSIC", "musical_score") , ("NEWS", "article-newspaper") , ("PAMP", "pamphlet") , ("PAT", "patent") , ("PCOMM", "personal_communication") , ("RPRT", "report") , ("SER", "article") , ("SLIDE", "graphic") , ("SOUND", "musical_score") , ("STAND", "report") , ("STAT", "legislation") , ("THES", "thesis") , ("UNBILL", "bill") , ("UNPB", "unpublished") , ("VIDEO", "graphic") ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/RST.hs���������������������������������������������������������0000644�0000000�0000000�00000200325�07346545000�016465� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE ViewPatterns #-} {- | Module : Text.Pandoc.Readers.RST Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Conversion from reStructuredText to 'Pandoc' document. -} module Text.Pandoc.Readers.RST ( readRST ) where import Control.Arrow (second) import Control.Monad (forM_, guard, liftM, mplus, mzero, when) import Control.Monad.Except (throwError) import Control.Monad.Identity (Identity (..)) import Data.Char (isHexDigit, isSpace, toUpper, isAlphaNum) import Data.List (deleteFirstsBy, elemIndex, nub, partition, sort, transpose) import qualified Data.Map as M import Data.Maybe (fromMaybe, maybeToList, isJust) import Data.Sequence (ViewR (..), viewr) import Data.Text (Text) import qualified Data.Text as T import Text.Printf (printf) import Text.Pandoc.Builder (Blocks, Inlines, fromList, setMeta, trimInlines) import qualified Text.Pandoc.Builder as B import Text.Pandoc.Class.PandocMonad (PandocMonad, fetchItem, getTimestamp) import Text.Pandoc.CSV (CSVOptions (..), defaultCSVOptions, parseCSV) import Text.Pandoc.Definition import Text.Pandoc.Error import Text.Pandoc.ImageSize (lengthToDim, scaleDimension) import Text.Pandoc.Logging import Text.Pandoc.Options import Text.Pandoc.Parsing import Text.Pandoc.Shared import Text.Pandoc.URI import qualified Text.Pandoc.UTF8 as UTF8 import Data.Time.Format import System.FilePath (takeDirectory) -- TODO: -- [ ] .. parsed-literal -- | Parse reStructuredText string and return Pandoc document. readRST :: (PandocMonad m, ToSources a) => ReaderOptions -- ^ Reader options -> a -> m Pandoc readRST opts s = do parsed <- readWithM parseRST def{ stateOptions = opts } (ensureFinalNewlines 2 (toSources s)) case parsed of Right result -> return result Left e -> throwError e type RSTParser m = ParsecT Sources ParserState m -- -- Constants and data structure definitions --- bulletListMarkers :: [Char] bulletListMarkers = "*+-•‣⁃" underlineChars :: [Char] underlineChars = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~" -- treat these as potentially non-text when parsing inline: specialChars :: [Char] specialChars = "\\`|*_<>$:/[]{}()-.\"'\8216\8217\8220\8221" -- -- parsing documents -- isHeader :: Int -> Block -> Bool isHeader n (Header x _ _) = x == n isHeader _ _ = False -- | Promote all headers in a list of blocks. (Part of -- title transformation for RST.) promoteHeaders :: Int -> [Block] -> [Block] promoteHeaders num (Header level attr text:rest) = Header (level - num) attr text:promoteHeaders num rest promoteHeaders num (other:rest) = other:promoteHeaders num rest promoteHeaders _ [] = [] -- | If list of blocks starts with a header (or a header and subheader) -- of level that are not found elsewhere, return it as a title and -- promote all the other headers. Also process a definition list right -- after the title block as metadata. titleTransform :: ([Block], Meta) -- ^ list of blocks, metadata -> ([Block], Meta) -- ^ modified list of blocks, metadata titleTransform (bs, meta) = let (bs', meta') = case bs of (Header 1 _ head1:Header 2 _ head2:rest) | not (any (isHeader 1) rest || any (isHeader 2) rest) -> -- tit/sub (promoteHeaders 2 rest, setMeta "title" (fromList head1) $ setMeta "subtitle" (fromList head2) meta) (Header 1 _ head1:rest) | not (any (isHeader 1) rest) -> -- title only (promoteHeaders 1 rest, setMeta "title" (fromList head1) meta) _ -> (bs, meta) in case bs' of (DefinitionList ds : rest) -> (rest, metaFromDefList ds meta') _ -> (bs', meta') metaFromDefList :: [([Inline], [[Block]])] -> Meta -> Meta metaFromDefList ds meta = adjustAuthors $ foldr f meta ds where f (k,v) = setMeta (T.toLower $ stringify k) (mconcat $ map fromList v) adjustAuthors (Meta metamap) = Meta $ M.adjust splitAuthors "author" $ M.adjust toPlain "date" $ M.adjust toPlain "title" $ M.mapKeys (\k -> if k == "authors" then "author" else k) metamap toPlain (MetaBlocks [Para xs]) = MetaInlines xs toPlain x = x splitAuthors (MetaBlocks [Para xs]) = MetaList $ map MetaInlines $ splitAuthors' xs splitAuthors x = x splitAuthors' = map normalizeSpaces . splitOnSemi . concatMap factorSemi normalizeSpaces = reverse . dropWhile isSp . reverse . dropWhile isSp isSp Space = True isSp SoftBreak = True isSp LineBreak = True isSp _ = False splitOnSemi = splitBy (==Str ";") factorSemi (Str "") = [] factorSemi (Str s) = case T.break (==';') s of (xs,"") -> [Str xs] (xs,T.uncons -> Just (';',ys)) -> Str xs : Str ";" : factorSemi (Str ys) (xs,ys) -> Str xs : factorSemi (Str ys) factorSemi x = [x] parseRST :: PandocMonad m => RSTParser m Pandoc parseRST = do optional blanklines -- skip blank lines at beginning of file startPos <- getPosition -- go through once just to get list of reference keys and notes -- docMinusKeys is the raw document with blanks where the keys were... let chunk = referenceKey <|> anchorDef <|> noteBlock <|> citationBlock <|> (snd <$> withRaw comment) <|> headerBlock <|> lineClump docMinusKeys <- Sources <$> manyTill (do pos <- getPosition t <- chunk return (pos, t)) eof -- UGLY: we collapse source position information. -- TODO: fix the parser to use the F monad instead of two passes setInput docMinusKeys setPosition startPos st' <- getState let reversedNotes = stateNotes st' updateState $ \s -> s { stateNotes = reverse reversedNotes , stateIdentifiers = mempty } -- now parse it for real... blocks <- B.toList <$> parseBlocks citations <- sort . M.toList . stateCitations <$> getState citationItems <- mapM parseCitation citations let refBlock = [Div ("citations",[],[]) $ B.toList $ B.definitionList citationItems | not (null citationItems)] standalone <- getOption readerStandalone state <- getState let meta = stateMeta state let (blocks', meta') = if standalone then titleTransform (blocks, meta) else (blocks, meta) reportLogMessages return $ Pandoc meta' (blocks' ++ refBlock) parseCitation :: PandocMonad m => (Text, Text) -> RSTParser m (Inlines, [Blocks]) parseCitation (ref, raw) = do contents <- parseFromString' parseBlocks raw return (B.spanWith (ref, ["citation-label"], []) (B.str ref), [contents]) -- -- parsing blocks -- parseBlocks :: PandocMonad m => RSTParser m Blocks parseBlocks = mconcat <$> manyTill block eof block :: PandocMonad m => RSTParser m Blocks block = choice [ codeBlock , blockQuote , fieldList , directive , anchor , comment , header , hrule , lineBlock -- must go before definitionList , table , list , lhsCodeBlock , para , mempty <$ blanklines ] "block" -- -- field list -- rawFieldListItem :: Monad m => Int -> RSTParser m (Text, Text) rawFieldListItem minIndent = try $ do indent <- length <$> many (char ' ') guard $ indent >= minIndent char ':' name <- many1TillChar (noneOf "\n") (char ':') (() <$ lookAhead newline) <|> skipMany1 spaceChar first <- anyLine rest <- option "" $ try $ do lookAhead (count indent (char ' ') >> spaceChar) indentedBlock let raw = (if T.null first then "" else first <> "\n") <> rest <> (if T.null first && T.null rest then "" else "\n") return (name, raw) fieldListItem :: PandocMonad m => Int -> RSTParser m (Inlines, [Blocks]) fieldListItem minIndent = try $ do (name, raw) <- rawFieldListItem minIndent term <- parseInlineFromText name contents <- parseFromString' parseBlocks raw optional blanklines return (term, [contents]) fieldList :: PandocMonad m => RSTParser m Blocks fieldList = try $ do indent <- length <$> lookAhead (many spaceChar) items <- many1 $ fieldListItem indent case items of [] -> return mempty items' -> return $ B.definitionList items' -- -- line block -- lineBlock :: PandocMonad m => RSTParser m Blocks lineBlock = try $ do lines' <- lineBlockLines lines'' <- mapM parseInlineFromText lines' return $ B.lineBlock lines'' lineBlockDirective :: PandocMonad m => Text -> RSTParser m Blocks lineBlockDirective body = do lines' <- mapM parseInlineFromText $ T.lines $ stripTrailingNewlines body return $ B.lineBlock lines' -- -- paragraph block -- -- note: paragraph can end in a :: starting a code block para :: PandocMonad m => RSTParser m Blocks para = try $ do result <- trimInlines . mconcat <$> many1 inline option (B.plain result) $ try $ do newline blanklines case viewr (B.unMany result) of ys :> Str xs | "::" `T.isSuffixOf` xs -> do raw <- option mempty codeBlockBody return $ B.para (B.Many ys <> B.str (T.take (T.length xs - 1) xs)) <> raw _ -> return (B.para result) plain :: PandocMonad m => RSTParser m Blocks plain = B.plain . trimInlines . mconcat <$> many1 inline -- -- header blocks -- header :: PandocMonad m => RSTParser m Blocks header = doubleHeader <|> singleHeader "header" -- a header with lines on top and bottom doubleHeader :: PandocMonad m => RSTParser m Blocks doubleHeader = do (txt, c) <- doubleHeader' -- check to see if we've had this kind of header before. -- if so, get appropriate level. if not, add to list. state <- getState let headerTable = stateHeaderTable state let (headerTable',level) = case elemIndex (DoubleHeader c) headerTable of Just ind -> (headerTable, ind + 1) Nothing -> (headerTable ++ [DoubleHeader c], length headerTable + 1) setState (state { stateHeaderTable = headerTable' }) attr <- registerHeader nullAttr txt return $ B.headerWith attr level txt doubleHeader' :: PandocMonad m => RSTParser m (Inlines, Char) doubleHeader' = try $ do c <- oneOf underlineChars rest <- many (char c) -- the top line let lenTop = length (c:rest) skipSpaces newline txt <- trimInlines . mconcat <$> many1 (notFollowedBy blankline >> inline) pos <- getPosition let len = sourceColumn pos - 1 when (len > lenTop) $ Prelude.fail "title longer than border" blankline -- spaces and newline count lenTop (char c) -- the bottom line blanklines return (txt, c) -- a header with line on the bottom only singleHeader :: PandocMonad m => RSTParser m Blocks singleHeader = do (txt, c) <- singleHeader' state <- getState let headerTable = stateHeaderTable state let (headerTable',level) = case elemIndex (SingleHeader c) headerTable of Just ind -> (headerTable, ind + 1) Nothing -> (headerTable ++ [SingleHeader c], length headerTable + 1) setState (state { stateHeaderTable = headerTable' }) attr <- registerHeader nullAttr txt return $ B.headerWith attr level txt singleHeader' :: PandocMonad m => RSTParser m (Inlines, Char) singleHeader' = try $ do notFollowedBy' whitespace lookAhead $ anyLine >> oneOf underlineChars txt <- trimInlines . mconcat <$> many1 (notFollowedBy blankline >> inline) pos <- getPosition let len = sourceColumn pos - 1 blankline c <- oneOf underlineChars count (len - 1) (char c) many (char c) blanklines return (txt, c) -- -- hrule block -- hrule :: Monad m => ParsecT Sources st m Blocks hrule = try $ do chr <- oneOf underlineChars count 3 (char chr) skipMany (char chr) blankline blanklines return B.horizontalRule -- -- code blocks -- -- read a line indented by a given string indentedLine :: (HasReaderOptions st, Monad m) => Int -> ParsecT Sources st m Text indentedLine indents = try $ do lookAhead spaceChar gobbleAtMostSpaces indents anyLine -- one or more indented lines, possibly separated by blank lines. -- any amount of indentation will work. indentedBlock :: (HasReaderOptions st, Monad m) => ParsecT Sources st m Text indentedBlock = try $ do indents <- length <$> lookAhead (many1 spaceChar) lns <- many1 $ try $ do b <- option "" blanklines l <- indentedLine indents return (b <> l) optional blanklines return $ T.unlines lns quotedBlock :: Monad m => ParsecT Sources st m Text quotedBlock = try $ do quote <- lookAhead $ oneOf "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~" lns <- many1 $ lookAhead (char quote) >> anyLine optional blanklines return $ T.unlines lns codeBlockStart :: Monad m => ParsecT Sources st m Char codeBlockStart = string "::" >> blankline >> blankline codeBlock :: Monad m => ParsecT Sources ParserState m Blocks codeBlock = try $ codeBlockStart >> codeBlockBody codeBlockBody :: Monad m => ParsecT Sources ParserState m Blocks codeBlockBody = do lang <- stateRstHighlight <$> getState try $ B.codeBlockWith ("", maybeToList lang, []) . stripTrailingNewlines <$> (indentedBlock <|> quotedBlock) lhsCodeBlock :: Monad m => RSTParser m Blocks lhsCodeBlock = try $ do getPosition >>= guard . (==1) . sourceColumn guardEnabled Ext_literate_haskell optional codeBlockStart lns <- latexCodeBlock <|> birdCodeBlock blanklines return $ B.codeBlockWith ("", ["haskell","literate"], []) $ T.intercalate "\n" lns latexCodeBlock :: Monad m => ParsecT Sources st m [Text] latexCodeBlock = try $ do try (latexBlockLine "\\begin{code}") many1Till anyLine (try $ latexBlockLine "\\end{code}") where latexBlockLine s = skipMany spaceChar >> string s >> blankline birdCodeBlock :: Monad m => ParsecT Sources st m [Text] birdCodeBlock = filterSpace <$> many1 birdTrackLine where filterSpace lns = -- if (as is normal) there is always a space after >, drop it if all (\ln -> T.null ln || T.take 1 ln == " ") lns then map (T.drop 1) lns else lns birdTrackLine :: Monad m => ParsecT Sources st m Text birdTrackLine = char '>' >> anyLine -- -- block quotes -- blockQuote :: PandocMonad m => RSTParser m Blocks blockQuote = do raw <- indentedBlock -- parse the extracted block, which may contain various block elements: contents <- parseFromString' parseBlocks $ raw <> "\n\n" return $ B.blockQuote contents {- Unsupported options for include: tab-width encoding -} includeDirective :: PandocMonad m => Text -> [(Text, Text)] -> Text -> RSTParser m Blocks includeDirective top fields body = do let f = T.unpack $ trim top guard $ not $ null f guard $ T.null (trim body) let startLine = lookup "start-line" fields >>= safeRead let endLine = lookup "end-line" fields >>= safeRead let classes = maybe [] T.words (lookup "class" fields) let ident = maybe "" trimr $ lookup "name" fields let parser = case lookup "code" fields `mplus` lookup "literal" fields of Just lang -> (codeblock ident classes fields (trimr lang) False . sourcesToText) <$> getInput Nothing -> parseBlocks let isLiteral = isJust (lookup "code" fields `mplus` lookup "literal" fields) let selectLines = (case trim <$> lookup "end-before" fields of Just patt -> takeWhile (not . (patt `T.isInfixOf`)) Nothing -> id) . (case trim <$> lookup "start-after" fields of Just patt -> drop 1 . dropWhile (not . (patt `T.isInfixOf`)) Nothing -> id) let toStream t = Sources [(initialPos f, (T.unlines . selectLines . T.lines $ t) <> if isLiteral then mempty else "\n")] -- see #7436 currentDir <- takeDirectory . sourceName <$> getPosition insertIncludedFile parser toStream [currentDir] f startLine endLine -- -- list blocks -- list :: PandocMonad m => RSTParser m Blocks list = choice [ bulletList, orderedList, definitionList ] "list" definitionListItem :: PandocMonad m => RSTParser m (Inlines, [Blocks]) definitionListItem = try $ do -- avoid capturing a directive or comment notFollowedBy (try $ char '.' >> char '.') term <- trimInlines . mconcat <$> many1Till inline endline raw <- indentedBlock -- parse the extracted block, which may contain various block elements: contents <- parseFromString' parseBlocks $ raw <> "\n" return (term, [contents]) definitionList :: PandocMonad m => RSTParser m Blocks definitionList = B.definitionList <$> many1 definitionListItem -- parses bullet list start and returns its length (inc. following whitespace) bulletListStart :: Monad m => ParsecT Sources st m Int bulletListStart = try $ do notFollowedBy' hrule -- because hrules start out just like lists marker <- oneOf bulletListMarkers white <- many1 spaceChar <|> "" <$ lookAhead (char '\n') return $ length (marker:white) -- parses ordered list start and returns its length (inc following whitespace) orderedListStart :: Monad m => ListNumberStyle -> ListNumberDelim -> RSTParser m Int orderedListStart style delim = try $ do (_, markerLen) <- withHorizDisplacement (orderedListMarker style delim) white <- many1 spaceChar <|> "" <$ lookAhead (char '\n') return $ markerLen + length white -- parse a line of a list item listLine :: Monad m => Int -> RSTParser m Text listLine markerLength = try $ do notFollowedBy blankline indentWith markerLength anyLineNewline -- parse raw text for one list item, excluding start marker and continuations rawListItem :: Monad m => RSTParser m Int -> RSTParser m (Int, Text) rawListItem start = try $ do markerLength <- start firstLine <- anyLineNewline restLines <- many (listLine markerLength) return (markerLength, firstLine <> T.concat restLines) -- continuation of a list item - indented and separated by blankline or -- (in compact lists) endline. -- Note: nested lists are parsed as continuations. listContinuation :: Monad m => Int -> RSTParser m Text listContinuation markerLength = try $ do blanks <- many1Char blankline result <- many1 (listLine markerLength) return $ blanks <> T.concat result listItem :: PandocMonad m => RSTParser m Int -> RSTParser m Blocks listItem start = try $ do (markerLength, first) <- rawListItem start rest <- many (listContinuation markerLength) skipMany1 blankline <|> () <$ lookAhead start -- parsing with ListItemState forces markers at beginning of lines to -- count as list item markers, even if not separated by blank space. -- see definition of "endline" state <- getState let oldContext = stateParserContext state setState $ state {stateParserContext = ListItemState} -- parse the extracted block, which may itself contain block elements parsed <- parseFromString' parseBlocks $ T.concat (first:rest) <> "\n" updateState (\st -> st {stateParserContext = oldContext}) return $ case B.toList parsed of [Para xs] -> B.singleton $ Plain xs [Para xs, BulletList ys] -> B.fromList [Plain xs, BulletList ys] [Para xs, OrderedList s ys] -> B.fromList [Plain xs, OrderedList s ys] [Para xs, DefinitionList ys] -> B.fromList [Plain xs, DefinitionList ys] _ -> parsed orderedList :: PandocMonad m => RSTParser m Blocks orderedList = try $ do (start, style, delim) <- lookAhead (anyOrderedListMarker <* spaceChar) items <- many1 (listItem (orderedListStart style delim)) let items' = compactify items return $ B.orderedListWith (start, style, delim) items' bulletList :: PandocMonad m => RSTParser m Blocks bulletList = B.bulletList . compactify <$> many1 (listItem bulletListStart) -- -- directive (e.g. comment, container, compound-paragraph) -- comment :: Monad m => RSTParser m Blocks comment = try $ do string ".." skipMany1 spaceChar <|> (() <$ lookAhead newline) -- notFollowedBy' directiveLabel -- comment comes after directive so unnec. _ <- anyLine optional indentedBlock optional blanklines return mempty directiveLabel :: Monad m => RSTParser m Text directiveLabel = T.toLower <$> many1TillChar (letter <|> char '-') (try $ string "::") directive :: PandocMonad m => RSTParser m Blocks directive = try $ do string ".." directive' directive' :: PandocMonad m => RSTParser m Blocks directive' = do skipMany1 spaceChar label <- directiveLabel skipMany spaceChar top <- manyChar $ satisfy (/='\n') <|> try (char '\n' <* notFollowedBy' (rawFieldListItem 1) <* many1 (char ' ') <* notFollowedBy blankline) newline fields <- do fieldIndent <- length <$> lookAhead (many (char ' ')) if fieldIndent == 0 then return [] else many $ rawFieldListItem fieldIndent body <- option "" $ try $ blanklines >> indentedBlock optional blanklines let body' = body <> "\n\n" name = trim $ fromMaybe "" (lookup "name" fields) classes = T.words $ maybe "" trim (lookup "class" fields) keyvals = [(k, trim v) | (k, v) <- fields, k /= "name", k /= "class"] imgAttr cl = (name, classes ++ alignClasses, widthAttr ++ heightAttr) where alignClasses = T.words $ maybe "" trim (lookup cl fields) <> maybe "" (\x -> "align-" <> trim x) (lookup "align" fields) scale = case trim <$> lookup "scale" fields of Just v -> case T.unsnoc v of Just (vv, '%') -> case safeRead vv of Just (percent :: Double) -> percent / 100.0 Nothing -> 1.0 _ -> case safeRead v of Just (s :: Double) -> s Nothing -> 1.0 Nothing -> 1.0 widthAttr = maybe [] (\x -> [("width", tshow $ scaleDimension scale x)]) $ lookup "width" fields >>= (lengthToDim . T.filter (not . isSpace)) heightAttr = maybe [] (\x -> [("height", tshow $ scaleDimension scale x)]) $ lookup "height" fields >>= (lengthToDim . T.filter (not . isSpace)) case label of "include" -> includeDirective top fields body' "table" -> tableDirective top fields body' "list-table" -> listTableDirective top fields body' "csv-table" -> csvTableDirective top fields body' "line-block" -> lineBlockDirective body' "raw" -> return $ B.rawBlock (trim top) (stripTrailingNewlines body) "role" -> addNewRole top $ map (second trim) fields "container" -> B.divWith (name, "container" : T.words top ++ classes, []) <$> parseFromString' parseBlocks body' "replace" -> B.para <$> -- consumed by substKey parseInlineFromText (trim top) "date" -> B.para <$> do -- consumed by substKey t <- getTimestamp let format = case T.unpack (T.strip top) of [] -> "%Y-%m-%d" x -> x return $ B.text $ T.pack $ formatTime defaultTimeLocale format t "unicode" -> B.para <$> -- consumed by substKey parseInlineFromText (trim $ unicodeTransform top) "compound" -> parseFromString' parseBlocks body' "pull-quote" -> B.blockQuote <$> parseFromString' parseBlocks body' "epigraph" -> B.blockQuote <$> parseFromString' parseBlocks body' "highlights" -> B.blockQuote <$> parseFromString' parseBlocks body' "rubric" -> B.para . B.strong <$> parseInlineFromText top _ | label `elem` ["attention","caution","danger","error","hint", "important","note","tip","warning","admonition"] -> do bod <- parseFromString' parseBlocks $ top <> "\n\n" <> body' let lab = case label of "admonition" -> mempty (T.uncons -> Just (l, ls)) -> B.divWith ("",["title"],[]) (B.para (B.str $ T.cons (toUpper l) ls)) _ -> mempty return $ B.divWith (name,label:classes,keyvals) (lab <> bod) "sidebar" -> do let subtit = maybe "" trim $ lookup "subtitle" fields tit <- B.para . B.strong <$> parseInlineFromText (trim top <> if T.null subtit then "" else ": " <> subtit) bod <- parseFromString' parseBlocks body' return $ B.divWith (name,"sidebar":classes,keyvals) $ tit <> bod "topic" -> do tit <- B.para . B.strong <$> parseInlineFromText top bod <- parseFromString' parseBlocks body' return $ B.divWith (name,"topic":classes,keyvals) $ tit <> bod "default-role" -> mempty <$ updateState (\s -> s { stateRstDefaultRole = case trim top of "" -> stateRstDefaultRole def role -> role }) "highlight" -> mempty <$ updateState (\s -> s { stateRstHighlight = case trim top of "" -> stateRstHighlight def lang -> Just lang }) x | x == "code" || x == "code-block" || x == "sourcecode" -> return $ codeblock name classes (map (second trimr) fields) (trim top) True body "aafig" -> do let attribs = (name, ["aafig"], map (second trimr) fields) return $ B.codeBlockWith attribs $ stripTrailingNewlines body "math" -> return $ B.para $ (case mkAttr name classes fields of attr | attr == nullAttr -> id | otherwise -> B.spanWith attr) $ mconcat $ map B.displayMath $ toChunks $ top <> "\n\n" <> body "figure" -> do (caption, legend) <- parseFromString' extractCaption body' let src = escapeURI $ trim top let (ident, cls, kvs) = imgAttr "class" let (figclasskv, kvs') = partition ((== "figclass") . fst) kvs let figattr = ("", concatMap (T.words . snd) figclasskv, []) let capt = B.caption Nothing (B.plain caption <> legend) return $ B.figureWith figattr capt $ B.plain (B.imageWith (ident, cls, kvs') src "" (B.text src)) "image" -> do let src = escapeURI $ trim top let alt = B.str $ maybe "image" trim $ lookup "alt" fields let attr = imgAttr "class" return $ B.para $ case lookup "target" fields of Just t -> B.link (escapeURI $ trim t) "" $ B.imageWith attr src "" alt Nothing -> B.imageWith attr src "" alt "class" -> do let attrs = (name, T.words (trim top), map (second trimr) fields) -- directive content or the first immediately following element children <- case body of "" -> block _ -> parseFromString' parseBlocks body' return $ case B.toList children of [Header lev attrs' ils] | T.null body -> -- # see #6699 B.headerWith (attrs' <> attrs) lev (B.fromList ils) _ -> B.divWith attrs children other -> do pos <- getPosition logMessage $ SkippedContent (".. " <> other) pos bod <- parseFromString' parseBlocks $ top <> "\n\n" <> body' return $ B.divWith (name, other:classes, keyvals) bod tableDirective :: PandocMonad m => Text -> [(Text, Text)] -> Text -> RSTParser m Blocks tableDirective top fields body = do bs <- parseFromString' parseBlocks body case B.toList bs of [Table attr _ tspecs' thead@(TableHead _ thrs) tbody tfoot] -> do let (aligns', widths') = unzip tspecs' title <- parseFromString' (trimInlines . mconcat <$> many inline) top columns <- getOption readerColumns let numOfCols = case thrs of [] -> 0 (r:_) -> rowLength r let normWidths ws = strictPos . (/ max 1.0 (fromIntegral (columns - numOfCols))) <$> ws let widths = case trim <$> lookup "widths" fields of Just "auto" -> replicate numOfCols ColWidthDefault Just "grid" -> widths' Just specs -> normWidths $ map (fromMaybe (0 :: Double) . safeRead) $ splitTextBy (`elem` (" ," :: String)) specs Nothing -> widths' -- align is not applicable since we can't represent whole table align let tspecs = zip aligns' widths return $ B.singleton $ Table attr (B.caption Nothing (B.plain title)) tspecs thead tbody tfoot _ -> return mempty where -- only valid on the very first row of a table section rowLength (Row _ rb) = sum $ cellLength <$> rb cellLength (Cell _ _ _ (ColSpan w) _) = max 1 w strictPos w | w > 0 = ColWidth w | otherwise = ColWidthDefault -- TODO: :stub-columns:. -- Only the first row becomes the header even if header-rows: > 1, -- since Pandoc doesn't support a table with multiple header rows. -- We don't need to parse :align: as it represents the whole table align. listTableDirective :: PandocMonad m => Text -> [(Text, Text)] -> Text -> RSTParser m Blocks listTableDirective top fields body = do bs <- parseFromString' parseBlocks body title <- parseFromString' (trimInlines . mconcat <$> many inline) top let rows = takeRows $ B.toList bs headerRowsNum = fromMaybe (0 :: Int) $ lookup "header-rows" fields >>= safeRead (headerRow,bodyRows,numOfCols) = case rows of x:xs -> if headerRowsNum > 0 then (x, xs, length x) else ([], rows, length x) _ -> ([],[],0) widths = case trim <$> lookup "widths" fields of Just "auto" -> replicate numOfCols ColWidthDefault Just specs -> normWidths $ map (fromMaybe (0 :: Double) . safeRead) $ splitTextBy (`elem` (" ," :: String)) specs _ -> replicate numOfCols ColWidthDefault toRow = Row nullAttr . map B.simpleCell toHeaderRow l = [toRow l | not (null l)] return $ B.table (B.simpleCaption $ B.plain title) (zip (replicate numOfCols AlignDefault) widths) (TableHead nullAttr $ toHeaderRow headerRow) [TableBody nullAttr 0 [] $ map toRow bodyRows] (TableFoot nullAttr []) where takeRows [BulletList rows] = map takeCells rows takeRows _ = [] takeCells [BulletList cells] = map B.fromList cells takeCells _ = [] normWidths ws = strictPos . (/ max 1 (sum ws)) <$> ws strictPos w | w > 0 = ColWidth w | otherwise = ColWidthDefault csvTableDirective :: PandocMonad m => Text -> [(Text, Text)] -> Text -> RSTParser m Blocks csvTableDirective top fields rawcsv = do let explicitHeader = trim <$> lookup "header" fields let opts = defaultCSVOptions{ csvDelim = case trim <$> lookup "delim" fields of Just "tab" -> '\t' Just "space" -> ' ' Just (T.unpack -> [c]) -> c _ -> ',' , csvQuote = case trim <$> lookup "quote" fields of Just (T.unpack -> [c]) -> Just c _ -> Just '"' , csvEscape = case trim <$> lookup "escape" fields of Just (T.unpack -> [c]) -> Just c _ -> Nothing , csvKeepSpace = case trim <$> lookup "keepspace" fields of Just "true" -> True _ -> False } let headerRowsNum = fromMaybe (case explicitHeader of Just _ -> 1 :: Int Nothing -> 0 :: Int) $ lookup "header-rows" fields >>= safeRead rawcsv' <- case trim <$> lookup "file" fields `mplus` lookup "url" fields of Just u -> do (bs, _) <- fetchItem u return $ UTF8.toText bs Nothing -> return rawcsv let header' = case explicitHeader of Just h -> parseCSV defaultCSVOptions h Nothing -> Right [] let res = parseCSV opts rawcsv' case (<>) <$> header' <*> res of Left e -> throwError $ fromParsecError (toSources rawcsv') e Right rawrows -> do let singleParaToPlain bs = case B.toList bs of [Para ils] -> B.fromList [Plain ils] _ -> bs let parseCell t = singleParaToPlain <$> parseFromString' parseBlocks (t <> "\n\n") let parseRow = mapM parseCell rows <- mapM parseRow rawrows let (headerRow,bodyRows,numOfCols) = case rows of x:xs -> if headerRowsNum > 0 then (x, xs, length x) else ([], rows, length x) _ -> ([],[],0) title <- parseFromString' (trimInlines . mconcat <$> many inline) top let strictPos w | w > 0 = ColWidth w | otherwise = ColWidthDefault let normWidths ws = strictPos . (/ max 1 (sum ws)) <$> ws let widths = case trim <$> lookup "widths" fields of Just "auto" -> replicate numOfCols ColWidthDefault Just specs -> normWidths $ map (fromMaybe (0 :: Double) . safeRead) $ splitTextBy (`elem` (" ," :: String)) specs _ -> replicate numOfCols ColWidthDefault let toRow = Row nullAttr . map B.simpleCell toHeaderRow l = [toRow l | not (null l)] return $ B.table (B.simpleCaption $ B.plain title) (zip (replicate numOfCols AlignDefault) widths) (TableHead nullAttr $ toHeaderRow headerRow) [TableBody nullAttr 0 [] $ map toRow bodyRows] (TableFoot nullAttr []) -- TODO: -- - Only supports :format: fields with a single format for :raw: roles, -- change Text.Pandoc.Definition.Format to fix addNewRole :: PandocMonad m => Text -> [(Text, Text)] -> RSTParser m Blocks addNewRole roleText fields = do pos <- getPosition (role, parentRole) <- parseFromString' inheritedRole roleText customRoles <- stateRstCustomRoles <$> getState let getBaseRole (r, f, a) roles = case M.lookup r roles of Just (r', f', a') -> getBaseRole (r', f', a') roles Nothing -> (r, f, a) (baseRole, baseFmt, baseAttr) = getBaseRole (parentRole, Nothing, nullAttr) customRoles fmt = if parentRole == "raw" then lookup "format" fields else baseFmt updateClasses :: [Text] -> [Text] updateClasses oldClasses = let codeLanguageClass = if baseRole == "code" then maybeToList (lookup "language" fields) else [] -- if no ":class:" field is given, the default is the role name classFieldClasses = maybe [role] T.words (lookup "class" fields) -- nub in case role name & language class are the same in nub (classFieldClasses ++ codeLanguageClass ++ oldClasses) attr = let (ident, baseClasses, keyValues) = baseAttr in (ident, updateClasses baseClasses, keyValues) -- warn about syntax we ignore forM_ fields $ \(key, _) -> case key of "language" -> when (baseRole /= "code") $ logMessage $ SkippedContent ":language: [because parent of role is not :code:]" pos "format" -> when (baseRole /= "raw") $ logMessage $ SkippedContent ":format: [because parent of role is not :raw:]" pos _ -> logMessage $ SkippedContent (":" <> key <> ":") pos when (parentRole == "raw" && countKeys "format" > 1) $ logMessage $ SkippedContent ":format: [after first in definition of role]" pos when (parentRole == "code" && countKeys "language" > 1) $ logMessage $ SkippedContent ":language: [after first in definition of role]" pos updateState $ \s -> s { stateRstCustomRoles = M.insert role (baseRole, fmt, attr) customRoles } return mempty where countKeys k = length . filter (== k) . map fst $ fields inheritedRole = (,) <$> roleName <*> ((char '(' *> roleName <* char ')') <|> pure "span") -- Can contain character codes as decimal numbers or -- hexadecimal numbers, prefixed by 0x, x, \x, U+, u, or \u -- or as XML-style hexadecimal character entities, e.g. ᨫ -- or text, which is used as-is. Comments start with .. unicodeTransform :: Text -> Text unicodeTransform t | Just xs <- T.stripPrefix ".." t = unicodeTransform $ T.dropWhile (/= '\n') xs -- comment | Just xs <- T.stripPrefix "0x" t = go "0x" xs | Just xs <- T.stripPrefix "x" t = go "x" xs | Just xs <- T.stripPrefix "\\x" t = go "\\x" xs | Just xs <- T.stripPrefix "U+" t = go "U+" xs | Just xs <- T.stripPrefix "u" t = go "u" xs | Just xs <- T.stripPrefix "\\u" t = go "\\u" xs | Just xs <- T.stripPrefix "&#x" t = maybe ("&#x" <> unicodeTransform xs) -- drop semicolon (\(c,s) -> T.cons c $ unicodeTransform $ T.drop 1 s) $ extractUnicodeChar xs | Just (x, xs) <- T.uncons t = T.cons x $ unicodeTransform xs | otherwise = "" where go pref zs = maybe (pref <> unicodeTransform zs) (\(c,s) -> T.cons c $ unicodeTransform s) $ extractUnicodeChar zs extractUnicodeChar :: Text -> Maybe (Char, Text) extractUnicodeChar s = fmap (\c -> (c,rest)) mbc where (ds,rest) = T.span isHexDigit s mbc = safeRead ("'\\x" <> ds <> "'") extractCaption :: PandocMonad m => RSTParser m (Inlines, Blocks) extractCaption = do capt <- trimInlines . mconcat <$> many inline legend <- optional blanklines >> (mconcat <$> many block) return (capt,legend) -- divide string by blanklines, and surround with -- \begin{aligned}...\end{aligned} if needed. toChunks :: Text -> [Text] toChunks = dropWhile T.null . map (addAligned . trim . T.unlines) . splitBy (T.all (`elem` (" \t" :: String))) . T.lines -- we put this in an aligned environment if it contains \\, see #4254 where addAligned s = if "\\\\" `T.isInfixOf` s then "\\begin{aligned}\n" <> s <> "\n\\end{aligned}" else s codeblock :: Text -> [Text] -> [(Text, Text)] -> Text -> Bool -> Text -> Blocks codeblock ident classes fields lang rmTrailingNewlines body = B.codeBlockWith attribs $ stripTrailingNewlines' body where stripTrailingNewlines' = if rmTrailingNewlines then stripTrailingNewlines else id attribs = (ident, classes', kvs) classes' = lang : ["numberLines" | isJust (lookup "number-lines" fields)] ++ classes kvs = [(k,v) | (k,v) <- fields, k /= "number-lines", k /= "class", k /= "id", k /= "name"] ++ case lookup "number-lines" fields of Just v | not (T.null v) -> [("startFrom", v)] _ -> [] -- | Creates element attributes from a name, list of classes, and fields. -- Removes fields named @name@, @id@, or @class@. mkAttr :: Text -> [Text] -> [(Text, Text)] -> Attr mkAttr ident classes fields = (ident, classes, fields') where fields' = [(k, v') | (k, v) <- fields , let v' = trimr v , k /= "name", k /= "id", k /= "class"] --- --- note block --- noteBlock :: Monad m => RSTParser m Text noteBlock = try $ do (ref, raw, replacement) <- noteBlock' noteMarker updateState $ \s -> s { stateNotes = (ref, raw) : stateNotes s } -- return blanks so line count isn't affected return replacement citationBlock :: Monad m => RSTParser m Text citationBlock = try $ do (ref, raw, replacement) <- noteBlock' citationMarker updateState $ \s -> s { stateCitations = M.insert ref raw (stateCitations s), stateKeys = M.insert (toKey ref) (("#" <> ref,""), ("",["citation"],[])) (stateKeys s) } -- return blanks so line count isn't affected return replacement noteBlock' :: Monad m => RSTParser m Text -> RSTParser m (Text, Text, Text) noteBlock' marker = try $ do startPos <- getPosition string ".." spaceChar >> skipMany spaceChar ref <- marker first <- (spaceChar >> skipMany spaceChar >> anyLine) <|> (newline >> return "") blanks <- option "" blanklines rest <- option "" indentedBlock endPos <- getPosition let raw = first <> "\n" <> blanks <> rest <> "\n" let replacement = T.replicate (sourceLine endPos - sourceLine startPos) "\n" return (ref, raw, replacement) citationMarker :: Monad m => RSTParser m Text citationMarker = do char '[' res <- simpleReferenceName char ']' return res noteMarker :: Monad m => RSTParser m Text noteMarker = do char '[' res <- many1Char digit <|> try (char '#' >> liftM ("#" <>) simpleReferenceName) <|> countChar 1 (oneOf "#*") char ']' return res -- -- reference key -- quotedReferenceName :: PandocMonad m => RSTParser m Text quotedReferenceName = try $ do char '`' >> notFollowedBy (char '`') -- `` means inline code! manyTillChar anyChar (char '`') -- Simple reference names are single words consisting of alphanumerics -- plus isolated (no two adjacent) internal hyphens, underscores, -- periods, colons and plus signs; no whitespace or other characters -- are allowed. simpleReferenceName :: Monad m => ParsecT Sources st m Text simpleReferenceName = do x <- alphaNum xs <- many $ alphaNum <|> try (oneOf "-_:+." <* lookAhead alphaNum) return $ T.pack (x:xs) referenceName :: PandocMonad m => RSTParser m Text referenceName = quotedReferenceName <|> simpleReferenceName referenceKey :: PandocMonad m => RSTParser m Text referenceKey = do startPos <- getPosition choice [substKey, anonymousKey, regularKey] optional blanklines endPos <- getPosition -- return enough blanks to replace key return $ T.replicate (sourceLine endPos - sourceLine startPos) "\n" targetURI :: Monad m => ParsecT Sources st m Text targetURI = do skipSpaces optional $ try $ newline >> notFollowedBy blankline contents <- trim <$> many1Char (satisfy (/='\n') <|> try (newline >> many1 spaceChar >> noneOf " \t\n")) blanklines return $ stripBackticks contents where stripBackticks t | Just xs <- T.stripSuffix "`_" t = T.dropWhile (=='`') xs <> "_" | Just _ <- T.stripSuffix "_" t = t | otherwise = escapeURI t substKey :: PandocMonad m => RSTParser m () substKey = try $ do string ".." skipMany1 spaceChar (alt,ref) <- withRaw $ trimInlines . mconcat <$> enclosed (char '|') (char '|') inline res <- B.toList <$> directive' il <- case res of -- use alt unless :alt: attribute on image: [Para [Image attr [Str "image"] (src,tit)]] -> return $ B.imageWith attr src tit alt [Para [Link _ [Image attr [Str "image"] (src,tit)] (src',tit')]] -> return $ B.link src' tit' (B.imageWith attr src tit alt) [Para ils] -> return $ B.fromList ils _ -> mzero let key = toKey $ stripFirstAndLast ref updateState $ \s -> s{ stateSubstitutions = M.insert key il $ stateSubstitutions s } anonymousKey :: PandocMonad m => RSTParser m () anonymousKey = try $ do oneOfStrings [".. __:", "__"] src <- targetURI -- we need to ensure that the keys are ordered by occurrence in -- the document. numKeys <- M.size . stateKeys <$> getState let key = toKey $ "_" <> T.pack (printf "%04d" numKeys) updateState $ \s -> s { stateKeys = M.insert key ((src,""), nullAttr) $ stateKeys s } referenceNames :: PandocMonad m => RSTParser m [Text] referenceNames = do let rn = try $ do string ".. _" ref <- quotedReferenceName <|> manyChar ( noneOf "\\:\n" <|> try (char '\n' <* string " " <* notFollowedBy blankline) <|> try (char '\\' *> char ':') <|> try (char ':' <* lookAhead alphaNum) ) char ':' return ref first <- rn rest <- many (try (blanklines *> rn)) return (first:rest) regularKey :: PandocMonad m => RSTParser m () regularKey = try $ do -- we allow several references to the same URL, e.g. -- .. _hello: -- .. _goodbye: url.com refs <- referenceNames src <- targetURI guard $ not (T.null src) let keys = map toKey refs forM_ keys $ \key -> updateState $ \s -> s { stateKeys = M.insert key ((src,""), nullAttr) $ stateKeys s } anchorDef :: PandocMonad m => RSTParser m Text anchorDef = try $ do (refs, raw) <- withRaw $ try (referenceNames <* blanklines) forM_ refs $ \rawkey -> updateState $ \s -> s { stateKeys = M.insert (toKey rawkey) (("#" <> rawkey,""), nullAttr) $ stateKeys s } -- keep this for 2nd round of parsing, where we'll add the divs (anchor) return raw anchor :: PandocMonad m => RSTParser m Blocks anchor = try $ do refs <- referenceNames blanklines b <- block let addDiv ref = B.divWith (ref, [], []) let emptySpanWithId id' = Span (id',[],[]) [] -- put identifier on next block: case B.toList b of [Header lev (_,classes,kvs) txt] -> case reverse refs of [] -> return b (r:rs) -> return $ B.singleton $ Header lev (r,classes,kvs) (txt ++ map emptySpanWithId rs) -- we avoid generating divs for headers, -- because it hides them from promoteHeader, see #4240 _ -> return $ foldr addDiv b refs headerBlock :: PandocMonad m => RSTParser m Text headerBlock = do ((txt, _), raw) <- withRaw (doubleHeader' <|> singleHeader') (ident,_,_) <- registerHeader nullAttr txt let key = toKey (stringify txt) updateState $ \s -> s { stateKeys = M.insert key (("#" <> ident,""), nullAttr) $ stateKeys s } return raw -- -- tables -- -- General tables TODO: -- - figure out if leading spaces are acceptable and if so, add -- support for them -- -- Simple tables TODO: -- - column spans -- - multiline support -- - ensure that rightmost column span does not need to reach end -- - require at least 2 columns dashedLine :: Monad m => Char -> ParsecT Sources st m (Int, Int) dashedLine ch = do dashes <- many1 (char ch) sp <- many (char ' ') return (length dashes, length $ dashes ++ sp) simpleDashedLines :: Monad m => Char -> ParsecT Sources st m [(Int,Int)] simpleDashedLines ch = try $ many1 (dashedLine ch) -- Parse a table row separator simpleTableSep :: Monad m => Char -> RSTParser m Char simpleTableSep ch = try $ simpleDashedLines ch >> newline -- Parse a table footer simpleTableFooter :: Monad m => RSTParser m Text simpleTableFooter = try $ simpleTableSep '=' >> blanklines -- Parse a raw line and split it into chunks by indices. simpleTableRawLine :: Monad m => [Int] -> RSTParser m [Text] simpleTableRawLine indices = simpleTableSplitLine indices <$> anyLine simpleTableRawLineWithEmptyCell :: Monad m => [Int] -> RSTParser m [Text] simpleTableRawLineWithEmptyCell indices = try $ do cs <- simpleTableRawLine indices let isEmptyCell = T.all (\c -> c == ' ' || c == '\t') guard $ any isEmptyCell cs return cs -- Parse a table row and return a list of blocks (columns). simpleTableRow :: PandocMonad m => [Int] -> RSTParser m [Blocks] simpleTableRow indices = do notFollowedBy' simpleTableFooter firstLine <- simpleTableRawLine indices conLines <- many $ simpleTableRawLineWithEmptyCell indices let cols = map T.unlines . transpose $ firstLine : conLines ++ [replicate (length indices) "" | not (null conLines)] mapM (parseFromString' parseBlocks) cols simpleTableSplitLine :: [Int] -> Text -> [Text] simpleTableSplitLine indices line = map trimr $ tail $ splitTextByIndices (init indices) line simpleTableHeader :: PandocMonad m => Bool -- ^ Headerless table -> RSTParser m ([Blocks], [Alignment], [Int]) simpleTableHeader headless = try $ do optional blanklines rawContent <- if headless then return "" else simpleTableSep '=' >> anyLine dashes <- if headless then simpleDashedLines '=' else simpleDashedLines '=' <|> simpleDashedLines '-' newline let lines' = map snd dashes let indices = scanl (+) 0 lines' let aligns = replicate (length lines') AlignDefault let rawHeads = if headless then [] else simpleTableSplitLine indices rawContent heads <- mapM ( parseFromString' (mconcat <$> many plain) . trim) rawHeads return (heads, aligns, indices) -- Parse a simple table. simpleTable :: PandocMonad m => Bool -- ^ Headerless table -> RSTParser m Blocks simpleTable headless = do let wrapIdFst (a, b, c) = (Identity a, b, c) wrapId = fmap Identity tbl <- runIdentity <$> tableWith (wrapIdFst <$> simpleTableHeader headless) (wrapId <$> simpleTableRow) sep simpleTableFooter -- Simple tables get 0s for relative column widths (i.e., use default) case B.toList tbl of [Table attr cap spec th tb tf] -> return $ B.singleton $ Table attr cap (rewidth spec) th tb tf _ -> throwError $ PandocShouldNeverHappenError "tableWith returned something unexpected" where sep = return () -- optional (simpleTableSep '-') rewidth = fmap $ fmap $ const ColWidthDefault gridTable :: PandocMonad m => RSTParser m Blocks gridTable = runIdentity <$> gridTableWith (Identity <$> parseBlocks) table :: PandocMonad m => RSTParser m Blocks table = gridTable <|> simpleTable False <|> simpleTable True "table" -- -- inline -- inline :: PandocMonad m => RSTParser m Inlines inline = choice [ note -- can start with whitespace, so try before ws , link , strong , emph , code , subst , interpretedRole , inlineContent ] "inline" -- strings, spaces and other characters that can appear either by -- themselves or within inline markup inlineContent :: PandocMonad m => RSTParser m Inlines inlineContent = choice [ whitespace , str , endline , smart , hyphens , escapedChar , symbol ] "inline content" parseInlineFromText :: PandocMonad m => Text -> RSTParser m Inlines parseInlineFromText = parseFromString' (trimInlines . mconcat <$> many inline) hyphens :: Monad m => RSTParser m Inlines hyphens = do result <- many1Char (char '-') optional endline -- don't want to treat endline after hyphen or dash as a space return $ B.str result escapedChar :: Monad m => ParsecT Sources st m Inlines escapedChar = do c <- escaped anyChar return $ if c == ' ' || c == '\n' || c == '\r' -- '\ ' is null in RST then mempty else B.str $ T.singleton c symbol :: Monad m => RSTParser m Inlines symbol = do result <- oneOf specialChars return $ B.str $ T.singleton result -- parses inline code, between codeStart and codeEnd code :: Monad m => RSTParser m Inlines code = try $ do string "``" result <- manyTillChar anyChar (try (string "``")) return $ B.code $ trim $ T.unwords $ T.lines result -- succeeds only if we're not right after a str (ie. in middle of word) atStart :: Monad m => RSTParser m a -> RSTParser m a atStart p = do pos <- getPosition st <- getState -- single quote start can't be right after str guard $ stateLastStrPos st /= Just pos p emph :: PandocMonad m => RSTParser m Inlines emph = B.emph . trimInlines . mconcat <$> enclosed (atStart $ char '*') (char '*') inlineContent strong :: PandocMonad m => RSTParser m Inlines strong = B.strong . trimInlines . mconcat <$> enclosed (atStart $ string "**") (try $ string "**") inlineContent -- Note, this doesn't precisely implement the complex rule in -- http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#inline-markup-recognition-rules -- but it should be good enough for most purposes -- -- TODO: -- - Classes are silently discarded in addNewRole -- - Allows direct use of the :raw: role, rST only allows inherited use. interpretedRole :: PandocMonad m => RSTParser m Inlines interpretedRole = try $ do (role, contents) <- roleBefore <|> roleAfter renderRole contents Nothing role nullAttr renderRole :: PandocMonad m => Text -> Maybe Text -> Text -> Attr -> RSTParser m Inlines renderRole contents fmt role attr = case role of "sup" -> return $ B.superscript $ treatAsText contents "superscript" -> return $ B.superscript $ treatAsText contents "sub" -> return $ B.subscript $ treatAsText contents "subscript" -> return $ B.subscript $ treatAsText contents "mark" -> return $ B.spanWith ("",["mark"],[]) $ treatAsText contents "emphasis" -> return $ B.emph $ treatAsText contents "strong" -> return $ B.strong $ treatAsText contents "rfc-reference" -> return $ rfcLink contents "RFC" -> return $ rfcLink contents "pep-reference" -> return $ pepLink contents "PEP" -> return $ pepLink contents "literal" -> return $ B.codeWith attr contents "math" -> return $ B.math contents "title-reference" -> titleRef contents "title" -> titleRef contents "t" -> titleRef contents "code" -> return $ B.codeWith attr contents "span" -> return $ B.spanWith attr $ treatAsText contents "raw" -> return $ B.rawInline (fromMaybe "" fmt) contents custom -> do customRoles <- stateRstCustomRoles <$> getState case M.lookup custom customRoles of Just (newRole, newFmt, newAttr) -> renderRole contents newFmt newRole newAttr Nothing -> -- undefined role return $ B.codeWith ("",["interpreted-text"],[("role",role)]) contents where titleRef ref = return $ B.spanWith ("",["title-ref"],[]) $ treatAsText ref rfcLink rfcNo = B.link rfcUrl ("RFC " <> rfcNo) $ B.str ("RFC " <> rfcNo) where rfcUrl = "http://www.faqs.org/rfcs/rfc" <> rfcNo <> ".html" pepLink pepNo = B.link pepUrl ("PEP " <> pepNo) $ B.str ("PEP " <> pepNo) where padNo = T.replicate (4 - T.length pepNo) "0" <> pepNo pepUrl = "http://www.python.org/dev/peps/pep-" <> padNo <> "/" treatAsText = B.text . handleEscapes handleEscapes = T.concat . removeSpace . T.splitOn "\\" where headSpace t = fromMaybe t $ T.stripPrefix " " t removeSpace (x:xs) = x : map headSpace xs removeSpace [] = [] -- single words consisting of alphanumerics plus isolated (no two adjacent) -- internal hyphens, underscores, periods, colons and plus signs; -- no whitespace or other characters are allowed roleName :: PandocMonad m => RSTParser m Text roleName = many1Char (alphaNum <|> try (oneOf "-_.:+" <* lookAhead alphaNum)) roleMarker :: PandocMonad m => RSTParser m Text roleMarker = char ':' *> roleName <* char ':' roleBefore :: PandocMonad m => RSTParser m (Text,Text) roleBefore = try $ do role <- roleMarker contents <- unmarkedInterpretedText return (role,contents) roleAfter :: PandocMonad m => RSTParser m (Text,Text) roleAfter = try $ do contents <- unmarkedInterpretedText role <- roleMarker <|> (stateRstDefaultRole <$> getState) return (role,contents) unmarkedInterpretedText :: PandocMonad m => RSTParser m Text unmarkedInterpretedText = try $ do atStart (char '`') contents <- mconcat <$> many1 ( many1 (noneOf "`\\\n") <|> (char '\\' >> ((\c -> ['\\',c]) <$> noneOf "\n")) <|> (string "\n" <* notFollowedBy blankline) <|> try (string "`" <* notFollowedBy (() <$ roleMarker) <* lookAhead (satisfy isAlphaNum)) ) char '`' return $ T.pack contents whitespace :: PandocMonad m => RSTParser m Inlines whitespace = B.space <$ skipMany1 spaceChar "whitespace" str :: Monad m => RSTParser m Inlines str = do let strChar = noneOf ("\t\n " ++ specialChars) result <- many1Char strChar updateLastStrPos return $ B.str result -- an endline character that can be treated as a space, not a structural break endline :: Monad m => RSTParser m Inlines endline = try $ do newline notFollowedBy blankline -- parse potential list-starts at beginning of line differently in a list: st <- getState when (stateParserContext st == ListItemState) $ notFollowedBy (anyOrderedListMarker >> spaceChar) >> notFollowedBy' bulletListStart return B.softbreak -- -- links -- link :: PandocMonad m => RSTParser m Inlines link = choice [explicitLink, referenceLink, autoLink] "link" explicitLink :: PandocMonad m => RSTParser m Inlines explicitLink = try $ do char '`' notFollowedBy (char '`') -- `` marks start of inline code label' <- trimInlines . mconcat <$> manyTill (notFollowedBy (char '`') >> inlineContent) (char '<') src <- trim <$> manyTillChar (noneOf ">\n") (char '>') skipSpaces string "`_" optional $ char '_' -- anonymous form let label'' = if label' == mempty then B.str src else label' -- `link ` is a reference link to _google! ((src',tit),attr) <- if isURI src then return ((src, ""), nullAttr) else case T.unsnoc src of Just (xs, '_') -> lookupKey [] (toKey xs) _ -> return ((src, ""), nullAttr) return $ B.linkWith attr (escapeURI src') tit label'' citationName :: PandocMonad m => RSTParser m Text citationName = do raw <- citationMarker return $ "[" <> raw <> "]" referenceLink :: PandocMonad m => RSTParser m Inlines referenceLink = try $ do ref <- (referenceName <|> citationName) <* char '_' let label' = B.text ref let isAnonKey (Key (T.uncons -> Just ('_',_))) = True isAnonKey _ = False state <- getState let keyTable = stateKeys state key <- option (toKey ref) $ do char '_' let anonKeys = sort $ filter isAnonKey $ M.keys keyTable case anonKeys of [] -> mzero (k:_) -> return k ((src,tit), attr) <- lookupKey [] key -- if anonymous link, remove key so it won't be used again when (isAnonKey key) $ updateState $ \s -> s{ stateKeys = M.delete key keyTable } return $ B.linkWith attr src tit label' -- We keep a list of oldkeys so we can detect lookup loops. lookupKey :: PandocMonad m => [Key] -> Key -> RSTParser m ((Text, Text), Attr) lookupKey oldkeys key = do pos <- getPosition state <- getState let keyTable = stateKeys state case M.lookup key keyTable of Nothing -> do let Key key' = key logMessage $ ReferenceNotFound key' pos return (("",""),nullAttr) -- check for keys of the form link_, which need to be resolved: Just ((u, ""),_) | T.length u > 1, T.last u == '_', T.head u /= '#' -> do let rawkey = T.init u let newkey = toKey rawkey if newkey `elem` oldkeys then do logMessage $ CircularReference rawkey pos return (("",""),nullAttr) else lookupKey (key:oldkeys) newkey Just val -> return val autoURI :: Monad m => RSTParser m Inlines autoURI = do (orig, src) <- uri return $ B.link src "" $ B.str orig autoEmail :: Monad m => RSTParser m Inlines autoEmail = do (orig, src) <- emailAddress return $ B.link src "" $ B.str orig autoLink :: PandocMonad m => RSTParser m Inlines autoLink = autoURI <|> autoEmail subst :: PandocMonad m => RSTParser m Inlines subst = try $ do (_,ref) <- withRaw $ enclosed (char '|') (char '|') inline state <- getState let substTable = stateSubstitutions state let key = toKey $ stripFirstAndLast ref case M.lookup key substTable of Nothing -> do pos <- getPosition logMessage $ ReferenceNotFound (tshow key) pos return mempty Just target -> return target note :: PandocMonad m => RSTParser m Inlines note = try $ do optional whitespace ref <- noteMarker char '_' state <- getState let notes = stateNotes state case lookup ref notes of Nothing -> do pos <- getPosition logMessage $ ReferenceNotFound ref pos return mempty Just raw -> do -- We temporarily empty the note list while parsing the note, -- so that we don't get infinite loops with notes inside notes... -- Note references inside other notes are allowed in reST, but -- not yet in this implementation. updateState $ \st -> st{ stateNotes = [] } contents <- parseFromString' parseBlocks raw let newnotes = if ref == "*" || ref == "#" -- auto-numbered -- delete the note so the next auto-numbered note -- doesn't get the same contents: then deleteFirstsBy (==) notes [(ref,raw)] else notes updateState $ \st -> st{ stateNotes = newnotes } return $ B.note contents smart :: PandocMonad m => RSTParser m Inlines smart = smartPunctuation inline �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/RTF.hs���������������������������������������������������������0000644�0000000�0000000�00000124400�07346545000�016447� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE BangPatterns #-} {-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Readers.RTF Copyright : Copyright (C) 2021-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane () Stability : alpha Portability : portable Conversion of RTF documents 'Pandoc' document. We target version 1.5 of the RTF spec. -} module Text.Pandoc.Readers.RTF (readRTF) where import qualified Data.IntMap as IntMap import qualified Data.Sequence as Seq import Control.Monad import Control.Monad.Except (throwError) import Data.List (find, foldl') import Data.Word (Word8, Word16) import Data.Default import Data.Text (Text) import qualified Data.Text as T import qualified Data.Text.Read as TR import Text.Pandoc.Builder (Blocks, Inlines) import qualified Text.Pandoc.Builder as B import Text.Pandoc.Class.PandocMonad (PandocMonad (..), insertMedia) import Text.Pandoc.Definition import Text.Pandoc.Options import Text.Pandoc.Parsing import Text.Pandoc.Shared (tshow) import Data.Char (isAlphaNum, chr, isAscii, isLetter, isSpace, ord) import qualified Data.ByteString.Lazy as BL import Data.Digest.Pure.SHA (sha1, showDigest) import Data.Maybe (mapMaybe, fromMaybe) import Safe (lastMay, initSafe, headDef) -- import Debug.Trace -- TODO: -- [ ] more complex table features -- -- | Read RTF from an input string and return a Pandoc document. readRTF :: (PandocMonad m, ToSources a) => ReaderOptions -> a -> m Pandoc readRTF opts s = do let sources = toSources s parsed <- readWithM parseRTF def{ sOptions = opts } sources case parsed of Left e -> throwError e Right d -> return d data CharSet = ANSI | Mac | Pc | Pca deriving (Show, Eq) -- first index is the list (or override) id, second is the list level type ListTable = IntMap.IntMap ListLevelTable type ListLevelTable = IntMap.IntMap ListType data RTFState = RTFState { sOptions :: ReaderOptions , sCharSet :: CharSet , sGroupStack :: [Properties] , sListStack :: [List] , sCurrentCell :: Blocks , sTableRows :: [TableRow] -- reverse order , sTextContent :: [(Properties, Text)] , sMetadata :: [(Text, Inlines)] , sFontTable :: FontTable , sStylesheet :: Stylesheet , sListTable :: ListTable , sListOverrideTable :: ListTable , sEatChars :: Int } deriving (Show) instance Default RTFState where def = RTFState { sOptions = def , sCharSet = ANSI , sGroupStack = [] , sListStack = [] , sCurrentCell = mempty , sTableRows = [] , sTextContent = [] , sMetadata = [] , sFontTable = mempty , sStylesheet = mempty , sListTable = mempty , sListOverrideTable = mempty , sEatChars = 0 } type FontTable = IntMap.IntMap FontFamily data FontFamily = Roman | Swiss | Modern | Script | Decor | Tech | Bidi deriving (Show, Eq) data StyleType = ParagraphStyle | SectionStyle | CharStyle | TableStyle deriving (Show, Eq) data Style = Style { styleNum :: Int , styleType :: StyleType , styleBasedOn :: Maybe Int , styleName :: Text , styleFormatting :: [Tok] } deriving (Show, Eq) type Stylesheet = IntMap.IntMap Style data PictType = Emfblip | Pngblip | Jpegblip deriving (Show, Eq) data Pict = Pict { picType :: Maybe PictType , picWidth :: Maybe Int , picHeight :: Maybe Int , picWidthGoal :: Maybe Int , picHeightGoal :: Maybe Int , picBinary :: Bool , picData :: Text , picName :: Text , picBytes :: BL.ByteString } deriving (Show, Eq) instance Default Pict where def = Pict { picType = Nothing , picWidth = Nothing , picHeight = Nothing , picWidthGoal = Nothing , picHeightGoal = Nothing , picBinary = False , picData = mempty , picName = mempty , picBytes = mempty } data Properties = Properties { gBold :: Bool , gItalic :: Bool , gCaps :: Bool , gDeleted :: Bool , gSub :: Bool , gSuper :: Bool , gSmallCaps :: Bool , gUnderline :: Bool , gHyperlink :: Maybe Text , gAnchor :: Maybe Text , gImage :: Maybe Pict , gFontFamily :: Maybe FontFamily , gHidden :: Bool , gUC :: Int -- number of ansi chars to skip after unicode char , gFootnote :: Maybe Blocks , gOutlineLevel :: Maybe ListLevel , gListOverride :: Maybe Override , gListLevel :: Maybe Int , gInTable :: Bool } deriving (Show, Eq) instance Default Properties where def = Properties { gBold = False , gItalic = False , gCaps = False , gDeleted = False , gSub = False , gSuper = False , gSmallCaps = False , gUnderline = False , gHyperlink = Nothing , gAnchor = Nothing , gImage = Nothing , gFontFamily = Nothing , gHidden = False , gUC = 1 , gFootnote = Nothing , gOutlineLevel = Nothing , gListOverride = Nothing , gListLevel = Nothing , gInTable = False } type RTFParser m = ParsecT Sources RTFState m data ListType = Bullet | Ordered ListAttributes deriving (Show, Eq) type Override = Int type ListLevel = Int data List = List Override ListLevel ListType [Blocks] -- items in reverse order deriving (Show, Eq) newtype TableRow = TableRow [Blocks] -- cells in reverse order deriving (Show, Eq) parseRTF :: PandocMonad m => RTFParser m Pandoc parseRTF = do skipMany nl bs <- many tok >>= foldM processTok mempty >>= emitBlocks unclosed <- closeContainers let doc = B.doc $ bs <> unclosed kvs <- sMetadata <$> getState pure $ foldr (uncurry B.setMeta) doc kvs data Tok = Tok !SourcePos !TokContents deriving (Show, Eq) data TokContents = ControlWord !Text !(Maybe Int) | ControlSymbol !Char | UnformattedText !Text | BinData !BL.ByteString | HexVal !Word8 | Grouped [Tok] deriving (Show, Eq) tok :: PandocMonad m => RTFParser m Tok tok = do pos <- getPosition Tok pos <$!> ((controlThing <|> unformattedText <|> grouped) <* skipMany nl) where controlThing = do char '\\' *> ( controlWord <|> (HexVal <$> hexVal) <|> (ControlSymbol <$> anyChar) ) controlWord = do name <- letterSequence param <- parameter <* optional delimChar case name of "bin" -> do let n = fromMaybe 0 param spaces -- NOTE: We assume here that if the document contains binary -- data, it will not be valid UTF-8 and hence it will have been -- read as latin1, so we can recover the data in the following -- way. This is probably not completely reliable, but I don't -- know if we can do better without making this reader take -- a ByteString input. dat <- BL.pack . map (fromIntegral . ord) <$> count n anyChar return $! BinData dat _ -> return $! ControlWord name param parameter = do hyph <- option False $ True <$ char '-' rest <- many digit if null rest then return Nothing else do let pstr = T.pack rest case TR.decimal pstr of Right (!i,_) -> return $! Just $! if hyph then (-1) * i else i _ -> return Nothing hexVal = do char '\'' x <- hexDigit y <- hexDigit return $ hexToWord (T.pack [x,y]) letterSequence = T.pack <$> many1 (satisfy (\c -> isAscii c && isLetter c)) unformattedText = do ts <- filter (\c -> c /= '\r' && c /= '\n') <$> ( many1 (satisfy (\c -> not (isSpecial c) || c == '\r' || c == '\n'))) return $! UnformattedText $! T.pack ts grouped = do char '{' skipMany nl ts <- manyTill tok (char '}') case ts of Tok _ (ControlWord "rtf" (Just 1)) : _ -> do setInput mempty -- discard remaining input: content after the \rtf1 -- group can be non-RTF _ -> return () return $! Grouped ts nl :: PandocMonad m => RTFParser m () nl = void (char '\n' <|> char '\r') isSpecial :: Char -> Bool isSpecial '{' = True isSpecial '}' = True isSpecial '\\' = True isSpecial '\n' = True isSpecial _ = False delimChar :: PandocMonad m => RTFParser m Char delimChar = satisfy (\c -> not (isAlphaNum c || isSpecial c)) modifyGroup :: PandocMonad m => (Properties -> Properties) -> RTFParser m () modifyGroup f = updateState $ \st -> st{ sGroupStack = case sGroupStack st of [] -> [] (x:xs) -> f x : xs } addFormatting :: (Properties, Text) -> Inlines addFormatting (_, "\n") = B.linebreak addFormatting (props, _) | gHidden props = mempty addFormatting (props, _) | Just bs <- gFootnote props = B.note bs addFormatting (props, txt) = (if gBold props then B.strong else id) . (if gItalic props then B.emph else id) . (if gDeleted props then B.strikeout else id) . (if gSub props then B.subscript else id) . (if gSuper props then B.superscript else id) . (if gSmallCaps props then B.smallcaps else id) . (if gUnderline props then B.underline else id) . (case gHyperlink props of Nothing -> id Just linkdest -> B.link linkdest mempty) . (case gAnchor props of Nothing -> id Just ident -> B.spanWith (ident,[],[])) . (case gFontFamily props of Just Modern -> B.code _ -> case gImage props of Just pict -> let attr = ("",[], (case picWidthGoal pict of Nothing -> [] Just w -> [("width", tshow (fromIntegral w / 1440 :: Double) <> "in")]) ++ (case picHeightGoal pict of Nothing -> [] Just h -> [("height", tshow (fromIntegral h / 1440 :: Double) <> "in")])) in B.imageWith attr (picName pict) "" . B.text Nothing -> B.text) . (if gCaps props then T.toUpper else id) $ txt addText :: PandocMonad m => Text -> RTFParser m () addText t = do gs <- sGroupStack <$> getState let !props = case gs of (x:_) -> x _ -> def updateState (\s -> s{ sTextContent = (props, t) : sTextContent s }) inGroup :: PandocMonad m => RTFParser m a -> RTFParser m a inGroup p = do updateState $ \st -> st{ sGroupStack = case sGroupStack st of [] -> [def] (x:xs) -> (x:x:xs) } -- inherit current group's properties result <- p updateState $ \st -> st{ sGroupStack = case sGroupStack st of [] -> [] -- should not happen (_:xs) -> xs } return result getStyleFormatting :: PandocMonad m => Int -> RTFParser m [Tok] getStyleFormatting stynum = do stylesheet <- sStylesheet <$> getState case IntMap.lookup stynum stylesheet of Nothing -> return [] Just sty -> case styleBasedOn sty of Just i -> (<> styleFormatting sty) <$> getStyleFormatting i Nothing -> return $ styleFormatting sty isMetadataField :: Text -> Bool isMetadataField "title" = True isMetadataField "subject" = True isMetadataField "author" = True isMetadataField "manager" = True isMetadataField "company" = True isMetadataField "operator" = True isMetadataField "category" = True isMetadataField "keywords" = True isMetadataField "comment" = True isMetadataField "doccomm" = True isMetadataField "hlinkbase" = True isMetadataField "generator" = True isMetadataField _ = False isHeaderFooter :: Text -> Bool isHeaderFooter "header" = True isHeaderFooter "headerl" = True isHeaderFooter "headerr" = True isHeaderFooter "headerf" = True isHeaderFooter "footer" = True isHeaderFooter "footerl" = True isHeaderFooter "footerr" = True isHeaderFooter "footerf" = True isHeaderFooter _ = False boolParam :: Maybe Int -> Bool boolParam (Just 0) = False boolParam _ = True isUnderline :: Text -> Bool isUnderline "ul" = True isUnderline "uld" = True isUnderline "uldash" = True isUnderline "uldashd" = True isUnderline "uldashdd" = True isUnderline "uldb" = True isUnderline "ulth" = True isUnderline "ulthd" = True isUnderline "ulthdash" = True isUnderline "ulw" = True isUnderline "ulwave" = True isUnderline _ = False processTok :: PandocMonad m => Blocks -> Tok -> RTFParser m Blocks processTok bs (Tok pos tok') = do setPosition pos case tok' of HexVal{} -> return () UnformattedText{} -> return () _ -> updateState $ \s -> s{ sEatChars = 0 } case tok' of Grouped (Tok _ (ControlSymbol '*') : toks) -> bs <$ (do oldTextContent <- sTextContent <$> getState processTok mempty (Tok pos (Grouped toks)) updateState $ \st -> st{ sTextContent = oldTextContent }) Grouped (Tok _ (ControlWord "fonttbl" _) : toks) -> inGroup $ do updateState $ \s -> s{ sFontTable = processFontTable toks } pure bs Grouped (Tok _ (ControlWord "field" _) : toks) -> inGroup $ handleField bs toks Grouped (Tok _ (ControlWord "pict" _) : toks) -> bs <$ inGroup (handlePict toks) Grouped (Tok _ (ControlWord "stylesheet" _) : toks) -> bs <$ inGroup (handleStylesheet toks) Grouped (Tok _ (ControlWord "listtext" _) : _) -> do -- eject any previous list items...sometimes TextEdit -- doesn't put in a \par emitBlocks bs Grouped (Tok _ (ControlWord "pgdsc" _) : _) -> pure bs Grouped (Tok _ (ControlWord "colortbl" _) : _) -> pure bs Grouped (Tok _ (ControlWord "listtable" _) : toks) -> bs <$ inGroup (handleListTable toks) Grouped (Tok _ (ControlWord "listoverridetable" _) : toks) -> bs <$ inGroup (handleListOverrideTable toks) Grouped (Tok _ (ControlWord "wgrffmtfilter" _) : _) -> pure bs Grouped (Tok _ (ControlWord "themedata" _) : _) -> pure bs Grouped (Tok _ (ControlWord "colorschememapping" _) : _) -> pure bs Grouped (Tok _ (ControlWord "datastore" _) : _) -> pure bs Grouped (Tok _ (ControlWord "latentstyles" _) : _) -> pure bs Grouped (Tok _ (ControlWord "pntxta" _) : _) -> pure bs -- TODO Grouped (Tok _ (ControlWord "pntxtb" _) : _) -> pure bs -- TODO Grouped (Tok _ (ControlWord "xmlnstbl" _) : _) -> pure bs Grouped (Tok _ (ControlWord "filetbl" _) : _) -> pure bs Grouped (Tok _ (ControlWord "expandedcolortbl" _) : _) -> pure bs Grouped (Tok _ (ControlWord "listtables" _) : _) -> pure bs Grouped (Tok _ (ControlWord "revtbl" _) : _) -> pure bs Grouped (Tok _ (ControlWord "bkmkstart" _) : Tok _ (UnformattedText t) : _) -> do -- TODO ideally we'd put the span around bkmkstart/end, but this -- is good for now: modifyGroup (\g -> g{ gAnchor = Just $ T.strip t }) pure bs Grouped (Tok _ (ControlWord "bkmkend" _) : _) -> do modifyGroup (\g -> g{ gAnchor = Nothing }) pure bs Grouped (Tok _ (ControlWord f _) : _) | isHeaderFooter f -> pure bs Grouped (Tok _ (ControlWord "footnote" _) : toks) -> do noteBs <- inGroup $ processDestinationToks toks modifyGroup (\g -> g{ gFootnote = Just noteBs }) addText "*" modifyGroup (\g -> g{ gFootnote = Nothing }) return bs Grouped (Tok _ (ControlWord "info" _) : toks) -> bs <$ inGroup (processDestinationToks toks) Grouped (Tok _ (ControlWord f _) : toks) | isMetadataField f -> inGroup $ do foldM_ processTok mempty toks annotatedToks <- reverse . sTextContent <$> getState updateState $ \s -> s{ sTextContent = [] } let ils = B.trimInlines . mconcat $ map addFormatting annotatedToks updateState $ \s -> s{ sMetadata = (f, ils) : sMetadata s } pure bs Grouped toks -> inGroup (foldM processTok bs toks) UnformattedText t -> bs <$ do -- return $! traceShowId $! (pos, t) eatChars <- sEatChars <$> getState case eatChars of 0 -> addText t n | n < T.length t -> do updateState $ \s -> s{ sEatChars = 0 } addText (T.drop n t) | otherwise -> do updateState $ \s -> s{ sEatChars = n - T.length t } HexVal n -> bs <$ do eatChars <- sEatChars <$> getState if eatChars == 0 then do charset <- sCharSet <$> getState case charset of ANSI -> addText (T.singleton $ ansiToChar n) Mac -> addText (T.singleton $ macToChar n) Pc -> addText (T.singleton $ pcToChar n) Pca -> addText (T.singleton $ pcaToChar n) else updateState $ \s -> s{ sEatChars = eatChars - 1 } ControlWord "ansi" _ -> bs <$ updateState (\s -> s{ sCharSet = ANSI }) ControlWord "mac" _ -> bs <$ updateState (\s -> s{ sCharSet = Mac }) ControlWord "pc" _ -> bs <$ updateState (\s -> s{ sCharSet = Pc }) ControlWord "pca" _ -> bs <$ updateState (\s -> s{ sCharSet = Pca }) ControlWord "outlinelevel" mbp -> bs <$ modifyGroup (\g -> g{ gOutlineLevel = mbp }) ControlWord "ls" mbp -> bs <$ modifyGroup (\g -> g{ gListOverride = mbp }) ControlWord "ilvl" mbp -> bs <$ modifyGroup (\g -> g{ gListLevel = mbp }) ControlSymbol '\\' -> bs <$ addText "\\" ControlSymbol '{' -> bs <$ addText "{" ControlSymbol '}' -> bs <$ addText "}" ControlSymbol '~' -> bs <$ addText "\x00a0" ControlSymbol '-' -> bs <$ addText "\x00ad" ControlSymbol '_' -> bs <$ addText "\x2011" ControlWord "trowd" _ -> bs <$ do -- add new row updateState $ \s -> s{ sTableRows = TableRow [] : sTableRows s , sCurrentCell = mempty } ControlWord "cell" _ -> bs <$ do new <- emitBlocks mempty curCell <- (<> new) . sCurrentCell <$> getState updateState $ \s -> s{ sTableRows = case sTableRows s of TableRow cs : rs -> TableRow (curCell : cs) : rs [] -> [TableRow [curCell]] -- shouldn't happen , sCurrentCell = mempty } ControlWord "intbl" _ -> emitBlocks bs <* modifyGroup (\g -> g{ gInTable = True }) ControlWord "plain" _ -> bs <$ modifyGroup (const def) ControlWord "lquote" _ -> bs <$ addText "\x2018" ControlWord "rquote" _ -> bs <$ addText "\x2019" ControlWord "ldblquote" _ -> bs <$ addText "\x201C" ControlWord "rdblquote" _ -> bs <$ addText "\x201D" ControlWord "emdash" _ -> bs <$ addText "\x2014" ControlWord "emspace" _ -> bs <$ addText "\x2003" ControlWord "enspace" _ -> bs <$ addText "\x2002" ControlWord "endash" _ -> bs <$ addText "\x2013" ControlWord "bullet" _ -> bs <$ addText "\x2022" ControlWord "tab" _ -> bs <$ addText "\t" ControlWord "line" _ -> bs <$ addText "\n" ControlSymbol '\n' -> bs <$ addText "\n" ControlSymbol '\r' -> bs <$ addText "\n" ControlWord "uc" (Just i) -> bs <$ modifyGroup (\g -> g{ gUC = i }) ControlWord "cs" (Just n) -> do getStyleFormatting n >>= foldM processTok bs ControlWord "s" (Just n) -> do getStyleFormatting n >>= foldM processTok bs ControlWord "ds" (Just n) -> do getStyleFormatting n >>= foldM processTok bs ControlWord "f" (Just i) -> bs <$ do fontTable <- sFontTable <$> getState modifyGroup (\g -> g{ gFontFamily = IntMap.lookup i fontTable }) ControlWord "u" (Just i) -> bs <$ do st <- getState let curgroup = case sGroupStack st of [] -> def (x:_) -> x updateState $ \s -> s{ sEatChars = gUC curgroup } -- "RTF control words generally accept signed 16-bit numbers as -- arguments. For this reason, Unicode values greater than 32767 -- must be expressed as negative numbers." let codepoint :: Word16 codepoint = fromIntegral i addText (T.singleton (chr $ fromIntegral codepoint)) ControlWord "caps" mbp -> bs <$ modifyGroup (\g -> g{ gCaps = boolParam mbp }) ControlWord "deleted" mbp -> bs <$ modifyGroup (\g -> g{ gDeleted = boolParam mbp }) ControlWord "b" mbp -> bs <$ modifyGroup (\g -> g{ gBold = boolParam mbp }) ControlWord "i" mbp -> bs <$ modifyGroup (\g -> g{ gItalic = boolParam mbp }) ControlWord "sub" mbp -> bs <$ modifyGroup (\g -> g{ gSub = boolParam mbp }) ControlWord "super" mbp -> bs <$ modifyGroup (\g -> g{ gSuper = boolParam mbp }) ControlWord "nosupersub" mbp -> bs <$ modifyGroup (\g -> g{ gSuper = not $ boolParam mbp , gSub = not $ boolParam mbp }) ControlWord "up" mbp -> bs <$ modifyGroup (\g -> g{ gSuper = boolParam mbp }) ControlWord "strike" mbp -> bs <$ modifyGroup (\g -> g{ gDeleted = boolParam mbp }) ControlWord "strikedl" mbp -> bs <$ modifyGroup (\g -> g{ gDeleted = boolParam mbp }) ControlWord "striked" mbp -> bs <$ modifyGroup (\g -> g{ gDeleted = boolParam mbp }) ControlWord "scaps" mbp -> bs <$ modifyGroup (\g -> g{ gSmallCaps = boolParam mbp }) ControlWord "v" mbp -> bs <$ modifyGroup (\g -> g{ gHidden = boolParam mbp }) ControlWord x mbp | isUnderline x -> bs <$ modifyGroup (\g -> g{ gUnderline = boolParam mbp }) ControlWord "ulnone" _ -> bs <$ modifyGroup (\g -> g{ gUnderline = False }) ControlWord "pard" _ -> bs <$ do modifyGroup (const def) getStyleFormatting 0 >>= foldM processTok bs ControlWord "par" _ -> emitBlocks bs _ -> pure bs processDestinationToks :: PandocMonad m => [Tok] -> RTFParser m Blocks processDestinationToks toks = do textContent <- sTextContent <$> getState liststack <- sListStack <$> getState updateState $ \s -> s{ sTextContent = mempty , sListStack = [] } result <- inGroup $ foldM processTok mempty toks >>= emitBlocks unclosed <- closeContainers updateState $ \s -> s{ sTextContent = textContent , sListStack = liststack } return $ result <> unclosed -- close lists >= level closeLists :: PandocMonad m => Int -> RTFParser m Blocks closeLists lvl = do lists <- sListStack <$> getState case lists of (List _ lvl' lt items : rest) | lvl' >= lvl -> do let newlist = (case lt of Bullet -> B.bulletList Ordered listAttr -> B.orderedListWith listAttr) (reverse items) updateState $ \s -> s{ sListStack = rest } case rest of [] -> do updateState $ \s -> s{ sListStack = rest } pure newlist (List lo lvl'' lt' [] : rest') -> do -- should not happen updateState $ \s -> s{ sListStack = List lo lvl'' lt' [newlist] : rest' } closeLists lvl (List lo lvl'' lt' (i:is) : rest') -> do updateState $ \s -> s{ sListStack = List lo lvl'' lt' (i <> newlist : is) : rest' } closeLists lvl _ -> pure mempty closeTable :: PandocMonad m => RTFParser m Blocks closeTable = do rawrows <- sTableRows <$> getState if null rawrows then return mempty else do let getCells (TableRow cs) = reverse cs let rows = map getCells . reverse $ rawrows updateState $ \s -> s{ sCurrentCell = mempty , sTableRows = [] } return $ B.simpleTable [] rows closeContainers :: PandocMonad m => RTFParser m Blocks closeContainers = do tbl <- closeTable lists <- closeLists 0 return $ tbl <> lists trimFinalLineBreak :: Inlines -> Inlines trimFinalLineBreak ils = case Seq.viewr (B.unMany ils) of rest Seq.:> LineBreak -> B.Many rest _ -> ils emitBlocks :: PandocMonad m => Blocks -> RTFParser m Blocks emitBlocks bs = do annotatedToks <- reverse . sTextContent <$> getState updateState $ \s -> s{ sTextContent = [] } let justCode = def{ gFontFamily = Just Modern } let prop = case annotatedToks of [] -> def ((p,_):_) -> p tbl <- if gInTable prop || null annotatedToks then pure mempty else closeTable new <- case annotatedToks of [] -> pure mempty _ | Just lst <- gListOverride prop -> do let level = fromMaybe 0 $ gListLevel prop listOverrideTable <- sListOverrideTable <$> getState let listType = fromMaybe Bullet $ IntMap.lookup lst listOverrideTable >>= IntMap.lookup level lists <- sListStack <$> getState -- get para contents of list item let newbs = B.para . B.trimInlines . trimFinalLineBreak . mconcat $ map addFormatting annotatedToks case lists of (List lo parentlevel _lt items : cs) | lo == lst , parentlevel == level -- add another item to existing list -> do updateState $ \s -> s{ sListStack = List lo level listType (newbs:items) : cs } pure mempty | lo /= lst || level < parentlevel -- close parent list and add new list -> do new <- closeLists level -- close open lists > level updateState $ \s -> s{ sListStack = List lst level listType [newbs] : sListStack s } pure new _ -> do -- add new list (level > parentlevel) updateState $ \s -> s{ sListStack = List lst level listType [newbs] : sListStack s } pure mempty | Just lvl <- gOutlineLevel prop -> do lists <- closeLists 0 pure $ lists <> B.header (lvl + 1) (B.trimInlines . mconcat $ map addFormatting $ removeCommonFormatting annotatedToks) | all ((== justCode) . fst) annotatedToks -> do lists <- closeLists 0 pure $ lists <> B.codeBlock (mconcat $ map snd annotatedToks) | all (T.all isSpace . snd) annotatedToks -> closeLists 0 | otherwise -> do lists <- closeLists 0 pure $ lists <> B.para (B.trimInlines . trimFinalLineBreak . mconcat $ map addFormatting annotatedToks) if gInTable prop then do updateState $ \s -> s{ sCurrentCell = sCurrentCell s <> new } pure bs else do pure $ bs <> tbl <> new -- Headers often have a style applied. We usually want to remove -- this, because headers will have their own styling in the target -- format. removeCommonFormatting :: [(Properties, Text)] -> [(Properties, Text)] removeCommonFormatting = (\ts -> if all (gBold . fst) ts then map (\(p,t) -> (p{ gBold = False }, t)) ts else ts) . (\ts -> if all (gItalic . fst) ts then map (\(p,t) -> (p{ gItalic = False }, t)) ts else ts) -- {\field{\*\fldinst{HYPERLINK "http://pandoc.org"}}{\fldrslt foo}} handleField :: PandocMonad m => Blocks -> [Tok] -> RTFParser m Blocks handleField bs (Tok _ (Grouped (Tok _ (ControlSymbol '*') :Tok _ (ControlWord "fldinst" Nothing) :Tok _ (Grouped (Tok _ (UnformattedText insttext):rest)) :_)) :linktoks) | Just linkdest <- getHyperlink insttext = do let linkdest' = case rest of (Tok _ (ControlSymbol '\\') : Tok _ (UnformattedText t) : _) | Just bkmrk <- T.stripPrefix "l" t -> "#" <> unquote bkmrk _ -> linkdest modifyGroup $ \g -> g{ gHyperlink = Just linkdest' } result <- foldM processTok bs linktoks modifyGroup $ \g -> g{ gHyperlink = Nothing } return result handleField bs _ = pure bs unquote :: Text -> Text unquote = T.dropWhile (=='"') . T.dropWhileEnd (=='"') . T.strip handleListTable :: PandocMonad m => [Tok] -> RTFParser m () handleListTable toks = do mapM_ handleList toks handleList :: PandocMonad m => Tok -> RTFParser m () handleList (Tok _ (Grouped (Tok _ (ControlWord "list" _) : toks))) = do let listid = headDef 0 [n | Tok _ (ControlWord "listid" (Just n)) <- toks] let levels = [ts | Tok _ (Grouped (Tok _ (ControlWord "listlevel" _) : ts)) <- toks] tbl <- foldM handleListLevel mempty (zip [0..] levels) updateState $ \s -> s{ sListTable = IntMap.insert listid tbl $ sListTable s } handleList _ = return () handleListLevel :: PandocMonad m => ListLevelTable -> (Int, [Tok]) -> RTFParser m ListLevelTable handleListLevel levelTable (lvl, toks) = do let start = headDef 1 [n | Tok _ (ControlWord "levelstartat" (Just n)) <- toks] let mbNumberStyle = case [n | Tok _ (ControlWord "levelnfc" (Just n)) <- toks] of [] -> Nothing (0:_) -> Just Decimal (1:_) -> Just UpperRoman (2:_) -> Just LowerRoman (3:_) -> Just UpperAlpha (4:_) -> Just LowerAlpha (23:_) -> Nothing (255:_) -> Nothing _ -> Just DefaultStyle let listType = case mbNumberStyle of Nothing -> Bullet Just numStyle -> Ordered (start,numStyle,Period) return $ IntMap.insert lvl listType levelTable handleListOverrideTable :: PandocMonad m => [Tok] -> RTFParser m () handleListOverrideTable toks = mapM_ handleListOverride toks handleListOverride :: PandocMonad m => Tok -> RTFParser m () handleListOverride (Tok _ (Grouped (Tok _ (ControlWord "listoverride" _) : toks))) = do let listid = headDef 0 [n | Tok _ (ControlWord "listid" (Just n)) <- toks] let lsn = headDef 0 [n | Tok _ (ControlWord "ls" (Just n)) <- toks] -- TODO override stuff, esp. start num -- for now we just handle indirection listTable <- sListTable <$> getState case IntMap.lookup listid listTable of Nothing -> return () Just tbl -> updateState $ \s -> s{ sListOverrideTable = IntMap.insert lsn tbl $ sListOverrideTable s } handleListOverride _ = return () handleStylesheet :: PandocMonad m => [Tok] -> RTFParser m () handleStylesheet toks = do let styles = mapMaybe parseStyle toks updateState $ \s -> s{ sStylesheet = IntMap.fromList $ zip (map styleNum styles) styles } parseStyle :: Tok -> Maybe Style parseStyle (Tok _ (Grouped toks)) = do let (styType, styNum, rest) = case toks of Tok _ (ControlWord "s" (Just n)) : ts -> (ParagraphStyle, n, ts) Tok _ (ControlWord "ds" (Just n)) : ts -> (SectionStyle, n, ts) Tok _ (ControlWord "cs" (Just n)) : ts -> (CharStyle, n, ts) Tok _ (ControlWord "ts" (Just n)) : ts -> (TableStyle, n, ts) _ -> (ParagraphStyle, 0, toks) let styName = case lastMay rest of Just (Tok _ (UnformattedText t)) -> T.dropWhileEnd (==';') t _ -> mempty let isBasedOn (Tok _ (ControlWord "sbasedon" (Just _))) = True isBasedOn _ = False let styBasedOn = case find isBasedOn toks of Just (Tok _ (ControlWord "sbasedon" (Just i))) -> Just i _ -> Nothing let isStyleControl (Tok _ (ControlWord x _)) = x `elem` ["cs", "s", "ds", "additive", "sbasedon", "snext", "sautoupd", "shidden", "keycode", "alt", "shift", "ctrl", "fn"] isStyleControl _ = False let styFormatting = filter (not . isStyleControl) (initSafe rest) return $ Style{ styleNum = styNum , styleType = styType , styleBasedOn = styBasedOn , styleName = styName , styleFormatting = styFormatting } parseStyle _ = Nothing hexToWord :: Text -> Word8 hexToWord t = case TR.hexadecimal t of Left _ -> 0 Right (x,_) -> x handlePict :: PandocMonad m => [Tok] -> RTFParser m () handlePict toks = do let pict = foldl' getPictData def toks let altText = "image" let bytes = if picBinary pict then picBytes pict else BL.pack $ map hexToWord $ T.chunksOf 2 $ picData pict let (mimetype, ext) = case picType pict of Just Emfblip -> (Just "image/x-emf", ".emf") Just Pngblip -> (Just "image/png", ".png") Just Jpegblip -> (Just "image/jpeg", ".jpg") Nothing -> (Nothing, "") case mimetype of Just mt -> do let pictname = showDigest (sha1 bytes) <> ext insertMedia pictname (Just mt) bytes modifyGroup $ \g -> g{ gImage = Just pict{ picName = T.pack pictname, picBytes = bytes } } addText altText modifyGroup $ \g -> g{ gImage = Nothing } _ -> return () where getPictData :: Pict -> Tok -> Pict getPictData pict (Tok _ tok') = case tok' of ControlWord "emfblip" _-> pict{ picType = Just Emfblip } ControlWord "pngblip" _-> pict{ picType = Just Pngblip } ControlWord "jpegblip" _-> pict{ picType = Just Jpegblip } ControlWord "picw" (Just w) -> pict{ picWidth = Just w } ControlWord "pich" (Just h) -> pict{ picHeight = Just h } ControlWord "picwgoal" (Just w) -> pict{ picWidthGoal = Just w } ControlWord "pichgoal" (Just h) -> pict{ picHeightGoal = Just h } BinData d | not (BL.null d) -> pict{ picBinary = True, picBytes = picBytes pict <> d } UnformattedText t -> pict{ picData = t } _ -> pict getHyperlink :: Text -> Maybe Text getHyperlink t = case T.stripPrefix "HYPERLINK" (T.strip t) of Nothing -> Nothing Just rest -> Just $ unquote rest processFontTable :: [Tok] -> FontTable processFontTable = snd . foldl' go (0, mempty) where go (fontnum, tbl) (Tok _ tok') = case tok' of (ControlWord "f" (Just i)) -> (i, tbl) (ControlWord "fnil" _) -> (fontnum, tbl) (ControlWord "froman" _) -> (fontnum, IntMap.insert fontnum Roman tbl) (ControlWord "fswiss" _) -> (fontnum, IntMap.insert fontnum Swiss tbl) (ControlWord "fmodern" _) -> (fontnum, IntMap.insert fontnum Modern tbl) (ControlWord "fscript" _) -> (fontnum, IntMap.insert fontnum Script tbl) (ControlWord "fdecor" _) -> (fontnum, IntMap.insert fontnum Decor tbl) (ControlWord "ftech" _) -> (fontnum, IntMap.insert fontnum Tech tbl) (ControlWord "fbidi" _) -> (fontnum, IntMap.insert fontnum Bidi tbl) (Grouped ts) -> foldl' go (fontnum, tbl) ts _ -> (fontnum, tbl) ansiToChar :: Word8 -> Char ansiToChar i = chr $ case i of 128 -> 8364 130 -> 8218 131 -> 402 132 -> 8222 133 -> 8230 134 -> 8224 135 -> 8225 136 -> 710 137 -> 8240 138 -> 352 139 -> 8249 140 -> 338 142 -> 381 145 -> 8216 146 -> 8217 147 -> 8220 148 -> 8221 149 -> 8226 150 -> 8211 151 -> 8212 152 -> 732 153 -> 8482 154 -> 353 155 -> 8250 156 -> 339 158 -> 382 159 -> 376 173 -> 0xAD _ -> fromIntegral i macToChar :: Word8 -> Char macToChar i = chr $ case i of 0x80 -> 0xC4 0x81 -> 0xC5 0x82 -> 0xC7 0x83 -> 0xC9 0x84 -> 0xD1 0x85 -> 0xD6 0x86 -> 0xDC 0x87 -> 0xE1 0x88 -> 0xE0 0x89 -> 0xE2 0x8A -> 0xE4 0x8B -> 0xE3 0x8C -> 0xE5 0x8D -> 0xE7 0x8E -> 0xE9 0x8F -> 0xE8 0x90 -> 0xEA 0x91 -> 0xEB 0x92 -> 0xED 0x93 -> 0xEC 0x94 -> 0xEE 0x95 -> 0xEF 0x96 -> 0xF1 0x97 -> 0xF3 0x98 -> 0xF2 0x99 -> 0xF4 0x9A -> 0xF6 0x9B -> 0xF5 0x9C -> 0xFA 0x9D -> 0xF9 0x9E -> 0xFB 0x9F -> 0xFC 0xA0 -> 0xDD 0xA1 -> 0xB0 0xA2 -> 0xA2 0xA3 -> 0xA3 0xA4 -> 0xA7 0xA5 -> 0xD7 0xA6 -> 0xB6 0xA7 -> 0xDF 0xA8 -> 0xAE 0xA9 -> 0xA9 0xAA -> 0xB2 0xAB -> 0xB4 0xAC -> 0xA8 0xAD -> 0xB3 0xAE -> 0xC6 0xAF -> 0xD8 0xB0 -> 0xB9 0xB1 -> 0xB1 0xB2 -> 0xBC 0xB3 -> 0xBD 0xB4 -> 0xA5 0xB5 -> 0xB5 0xBA -> 0xBE 0xBB -> 0xAA 0xBC -> 0xBA 0xBE -> 0xE6 0xBF -> 0xF8 0xC0 -> 0xBF 0xC1 -> 0xA1 0xC2 -> 0xAC 0xC3 -> 0x0141 0xC4 -> 0x0192 0xC5 -> 0x02CB 0xC7 -> 0xAB 0xC8 -> 0xBB 0xC9 -> 0xA6 0xCA -> 0xA0 0xCB -> 0xC0 0xCC -> 0xC3 0xCD -> 0xD5 0xCE -> 0x0152 0xCF -> 0x0153 0xD0 -> 0xAD 0xD4 -> 0x0142 0xD6 -> 0xF7 0xD8 -> 0xFF 0xD9 -> 0x0178 0xDB -> 0xA4 0xDC -> 0xD0 0xDD -> 0xF0 0xDE -> 0xDE 0xDF -> 0xFE 0xE0 -> 0xFD 0xE1 -> 0xB7 0xE5 -> 0xC2 0xE6 -> 0xCA 0xE7 -> 0xC1 0xE8 -> 0xCB 0xE9 -> 0xC8 0xEA -> 0xCD 0xEB -> 0xCE 0xEC -> 0xCF 0xED -> 0xCC 0xEE -> 0xD3 0xEF -> 0xD4 0xF1 -> 0xD2 0xF2 -> 0xDA 0xF3 -> 0xDB 0xF4 -> 0xD9 0xF5 -> 0x0131 0xF6 -> 0x02C6 0xF7 -> 0x02DC 0xF8 -> 0xAF 0xF9 -> 0x02D8 0xFA -> 0x02D9 0xFB -> 0x02DA 0xFC -> 0xB8 0xFD -> 0x02DD 0xFE -> 0x02DB 0xFF -> 0x02C7 _ -> fromIntegral i pcToChar :: Word8 -> Char pcToChar i = chr $ case i of 0x80 -> 0xc7 0x81 -> 0xfc 0x82 -> 0xe9 0x83 -> 0xe2 0x84 -> 0xe4 0x85 -> 0xe0 0x86 -> 0xe5 0x87 -> 0xe7 0x88 -> 0xea 0x89 -> 0xeb 0x8a -> 0xe8 0x8b -> 0xef 0x8c -> 0xee 0x8d -> 0xec 0x8e -> 0xc4 0x8f -> 0xc5 0x90 -> 0xc9 0x91 -> 0xe6 0x92 -> 0xc6 0x93 -> 0xf4 0x94 -> 0xf6 0x95 -> 0xf2 0x96 -> 0xfb 0x97 -> 0xf9 0x98 -> 0xff 0x99 -> 0xd6 0x9a -> 0xdc 0x9b -> 0xa2 0x9c -> 0xa3 0x9d -> 0xa5 0x9e -> 0x20a7 0x9f -> 0x0192 0xa0 -> 0xe1 0xa1 -> 0xed 0xa2 -> 0xf3 0xa3 -> 0xfa 0xa4 -> 0xf1 0xa5 -> 0xd1 0xa6 -> 0xaa 0xa7 -> 0xba 0xa8 -> 0xbf 0xa9 -> 0x2310 0xaa -> 0xac 0xab -> 0xbd 0xac -> 0xbc 0xad -> 0xa1 0xae -> 0xab 0xaf -> 0xbb 0xb0 -> 0x2591 0xb1 -> 0x2592 0xb2 -> 0x2593 0xb3 -> 0x2502 0xb4 -> 0x2524 0xb5 -> 0x2561 0xb6 -> 0x2562 0xb7 -> 0x2556 0xb8 -> 0x2555 0xb9 -> 0x2563 0xba -> 0x2551 0xbb -> 0x2557 0xbc -> 0x255d 0xbd -> 0x255c 0xbe -> 0x255b 0xbf -> 0x2510 0xc0 -> 0x2514 0xc1 -> 0x2534 0xc2 -> 0x252c 0xc3 -> 0x251c 0xc4 -> 0x2500 0xc5 -> 0x253c 0xc6 -> 0x255e 0xc7 -> 0x255f 0xc8 -> 0x255a 0xc9 -> 0x2554 0xca -> 0x2569 0xcb -> 0x2566 0xcc -> 0x2560 0xcd -> 0x2550 0xce -> 0x256c 0xcf -> 0x2567 0xd0 -> 0x2568 0xd1 -> 0x2564 0xd2 -> 0x2565 0xd3 -> 0x2559 0xd4 -> 0x2558 0xd5 -> 0x2552 0xd6 -> 0x2553 0xd7 -> 0x256b 0xd8 -> 0x256a 0xd9 -> 0x2518 0xda -> 0x250c 0xdb -> 0x2588 0xdc -> 0x2584 0xdd -> 0x258c 0xde -> 0x2590 0xdf -> 0x2580 0xe0 -> 0x03b1 0xe1 -> 0xdf 0xe2 -> 0x0393 0xe3 -> 0x03c0 0xe4 -> 0x03a3 0xe5 -> 0x03c3 0xe6 -> 0xb5 0xe7 -> 0x03c4 0xe8 -> 0x03a6 0xe9 -> 0x0398 0xea -> 0x03a9 0xeb -> 0x03b4 0xec -> 0x221e 0xed -> 0x03c6 0xee -> 0x03b5 0xef -> 0x2229 0xf0 -> 0x2261 0xf1 -> 0xb1 0xf2 -> 0x2265 0xf3 -> 0x2264 0xf4 -> 0x2320 0xf5 -> 0x2321 0xf6 -> 0xf7 0xf7 -> 0x2248 0xf8 -> 0xb0 0xf9 -> 0x2219 0xfa -> 0xb7 0xfb -> 0x221a 0xfc -> 0x207f 0xfd -> 0xb2 0xfe -> 0x25a0 0xff -> 0xa0 _ -> fromIntegral i pcaToChar :: Word8 -> Char pcaToChar i = chr $ case i of 0x80 -> 0x00c7 0x81 -> 0x00fc 0x82 -> 0x00e9 0x83 -> 0x00e2 0x84 -> 0x00e4 0x85 -> 0x00e0 0x86 -> 0x00e5 0x87 -> 0x00e7 0x88 -> 0x00ea 0x89 -> 0x00eb 0x8a -> 0x00e8 0x8b -> 0x00ef 0x8c -> 0x00ee 0x8d -> 0x00ec 0x8e -> 0x00c4 0x8f -> 0x00c5 0x90 -> 0x00c9 0x91 -> 0x00e6 0x92 -> 0x00c6 0x93 -> 0x00f4 0x94 -> 0x00f6 0x95 -> 0x00f2 0x96 -> 0x00fb 0x97 -> 0x00f9 0x98 -> 0x00ff 0x99 -> 0x00d6 0x9a -> 0x00dc 0x9b -> 0x00f8 0x9c -> 0x00a3 0x9d -> 0x00d8 0x9e -> 0x00d7 0x9f -> 0x0192 0xa0 -> 0x00e1 0xa1 -> 0x00ed 0xa2 -> 0x00f3 0xa3 -> 0x00fa 0xa4 -> 0x00f1 0xa5 -> 0x00d1 0xa6 -> 0x00aa 0xa7 -> 0x00ba 0xa8 -> 0x00bf 0xa9 -> 0x00ae 0xaa -> 0x00ac 0xab -> 0x00bd 0xac -> 0x00bc 0xad -> 0x00a1 0xae -> 0x00ab 0xaf -> 0x00bb 0xb0 -> 0x2591 0xb1 -> 0x2592 0xb2 -> 0x2593 0xb3 -> 0x2502 0xb4 -> 0x2524 0xb5 -> 0x00c1 0xb6 -> 0x00c2 0xb7 -> 0x00c0 0xb8 -> 0x00a9 0xb9 -> 0x2563 0xba -> 0x2551 0xbb -> 0x2557 0xbc -> 0x255d 0xbd -> 0x00a2 0xbe -> 0x00a5 0xbf -> 0x2510 0xc0 -> 0x2514 0xc1 -> 0x2534 0xc2 -> 0x252c 0xc3 -> 0x251c 0xc4 -> 0x2500 0xc5 -> 0x253c 0xc6 -> 0x00e3 0xc7 -> 0x00c3 0xc8 -> 0x255a 0xc9 -> 0x2554 0xca -> 0x2569 0xcb -> 0x2566 0xcc -> 0x2560 0xcd -> 0x2550 0xce -> 0x256c 0xcf -> 0x00a4 0xd0 -> 0x00f0 0xd1 -> 0x00d0 0xd2 -> 0x00ca 0xd3 -> 0x00cb 0xd4 -> 0x00c8 0xd5 -> 0x0131 0xd6 -> 0x00cd 0xd7 -> 0x00ce 0xd8 -> 0x00cf 0xd9 -> 0x2518 0xda -> 0x250c 0xdb -> 0x2588 0xdc -> 0x2584 0xdd -> 0x00a6 0xde -> 0x00cc 0xdf -> 0x2580 0xe0 -> 0x00d3 0xe1 -> 0x00df 0xe2 -> 0x00d4 0xe3 -> 0x00d2 0xe4 -> 0x00f5 0xe5 -> 0x00d5 0xe6 -> 0x00b5 0xe7 -> 0x00fe 0xe8 -> 0x00de 0xe9 -> 0x00da 0xea -> 0x00db 0xeb -> 0x00d9 0xec -> 0x00fd 0xed -> 0x00dd 0xee -> 0x00af 0xef -> 0x00b4 0xf0 -> 0x00ad 0xf1 -> 0x00b1 0xf2 -> 0x2017 0xf3 -> 0x00be 0xf4 -> 0x00b6 0xf5 -> 0x00a7 0xf6 -> 0x00f7 0xf7 -> 0x00b8 0xf8 -> 0x00b0 0xf9 -> 0x00a8 0xfa -> 0x00b7 0xfb -> 0x00b9 0xfc -> 0x00b3 0xfd -> 0x00b2 0xfe -> 0x25a0 0xff -> 0x00a0 _ -> fromIntegral i ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/Roff.hs��������������������������������������������������������0000644�0000000�0000000�00000057431�07346545000�016721� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ViewPatterns #-} {- | Module : Text.Pandoc.Readers.Roff Copyright : Copyright (C) 2018-2020 Yan Pashkovsky and John MacFarlane License : GNU GPL, version 2 or above Maintainer : Yan Pashkovsky Stability : WIP Portability : portable Tokenizer for roff formats (man, ms). -} module Text.Pandoc.Readers.Roff ( FontSpec(..) , defaultFontSpec , LinePart(..) , Arg , TableOption , CellFormat(..) , TableRow , RoffToken(..) , RoffTokens(..) , linePartsToText , lexRoff ) where import Safe (lastDef) import Control.Monad (void, mzero, mplus, guard) import Control.Monad.Except (throwError) import Text.Pandoc.Class.PandocMonad (getResourcePath, readFileFromDirs, PandocMonad(..), report) import Data.Char (isLower, toLower, toUpper, chr, isAscii, isAlphaNum) import Data.Default (Default) import qualified Data.Map as M import Data.List (intercalate) import qualified Data.Text as T import Text.Pandoc.Logging (LogMessage(..)) import Text.Pandoc.Options import Text.Pandoc.Parsing import Text.Pandoc.Shared (safeRead) import Text.Pandoc.RoffChar (characterCodes, combiningAccents) import qualified Data.Sequence as Seq import qualified Data.Foldable as Foldable import qualified Data.Text.Normalize as Normalize -- import Debug.Trace (traceShowId) -- -- Data Types -- data FontSpec = FontSpec{ fontBold :: Bool , fontItalic :: Bool , fontMonospace :: Bool } deriving (Show, Eq, Ord) defaultFontSpec :: FontSpec defaultFontSpec = FontSpec False False False data LinePart = RoffStr T.Text | Font FontSpec | MacroArg Int deriving Show type Arg = [LinePart] type TableOption = (T.Text, T.Text) data CellFormat = CellFormat { columnType :: Char , pipePrefix :: Bool , pipeSuffix :: Bool , columnSuffixes :: [T.Text] } deriving (Show, Eq, Ord) type TableRow = ([CellFormat], [RoffTokens]) data RoffToken = TextLine [LinePart] | EmptyLine | ControlLine T.Text [Arg] SourcePos | Tbl [TableOption] [TableRow] SourcePos deriving Show newtype RoffTokens = RoffTokens { unRoffTokens :: Seq.Seq RoffToken } deriving (Show, Semigroup, Monoid) singleTok :: RoffToken -> RoffTokens singleTok t = RoffTokens (Seq.singleton t) data RoffMode = NormalMode | CopyMode deriving Show data RoffState = RoffState { customMacros :: M.Map T.Text RoffTokens , prevFont :: FontSpec , currentFont :: FontSpec , tableTabChar :: Char , roffMode :: RoffMode , lastExpression :: Maybe Bool , afterConditional :: Bool } deriving Show instance Default RoffState where def = RoffState { customMacros = M.fromList $ map (\(n, s) -> (n, singleTok (TextLine [RoffStr s]))) [ ("Tm", "\x2122") , ("lq", "\x201C") , ("rq", "\x201D") , ("R", "\x00AE") ] , prevFont = defaultFontSpec , currentFont = defaultFontSpec , tableTabChar = '\t' , roffMode = NormalMode , lastExpression = Nothing , afterConditional = False } type RoffLexer m = ParsecT Sources RoffState m -- -- Lexer: T.Text -> RoffToken -- eofline :: (Stream s m Char, UpdateSourcePos s Char) => ParsecT s u m () eofline = void newline <|> eof <|> () <$ lookAhead (string "\\}") spacetab :: (Stream s m Char, UpdateSourcePos s Char) => ParsecT s u m Char spacetab = char ' ' <|> char '\t' characterCodeMap :: M.Map T.Text Char characterCodeMap = M.fromList $ map (\(x,y) -> (y,x)) characterCodes combiningAccentsMap :: M.Map T.Text Char combiningAccentsMap = M.fromList $ map (\(x,y) -> (y,x)) combiningAccents escape :: PandocMonad m => RoffLexer m [LinePart] escape = try $ do backslash escapeGlyph <|> escapeNormal escapeGlyph :: PandocMonad m => RoffLexer m [LinePart] escapeGlyph = do c <- lookAhead (oneOf ['[','(']) escapeArg >>= resolveGlyph c resolveGlyph :: PandocMonad m => Char -> T.Text -> RoffLexer m [LinePart] resolveGlyph delimChar glyph = do let cs = T.replace "_u" " u" glyph -- unicode glyphs separated by _ (case T.words cs of [] -> mzero [s] -> case M.lookup s characterCodeMap `mplus` readUnicodeChar s of Nothing -> mzero Just c -> return [RoffStr $ T.singleton c] (s:ss) -> do basechar <- case M.lookup s characterCodeMap `mplus` readUnicodeChar s of Nothing -> case T.unpack s of [ch] | isAscii ch && isAlphaNum ch -> return ch _ -> mzero Just c -> return c let addAccents [] xs = return $ Normalize.normalize Normalize.NFC $ T.reverse xs addAccents (a:as) xs = case M.lookup a combiningAccentsMap `mplus` readUnicodeChar a of Just x -> addAccents as $ T.cons x xs Nothing -> mzero addAccents ss (T.singleton basechar) >>= \xs -> return [RoffStr xs]) <|> case delimChar of '[' -> escUnknown ("\\[" <> glyph <> "]") '(' -> escUnknown ("\\(" <> glyph) '\'' -> escUnknown ("\\C'" <> glyph <> "'") _ -> Prelude.fail "resolveGlyph: unknown glyph delimiter" readUnicodeChar :: T.Text -> Maybe Char readUnicodeChar t = case T.uncons t of Just ('u', cs) | T.length cs > 3 -> chr <$> safeRead ("0x" <> cs) _ -> Nothing escapeNormal :: PandocMonad m => RoffLexer m [LinePart] escapeNormal = do c <- noneOf "{}" optional expandString case c of ' ' -> return [RoffStr " "] '"' -> mempty <$ skipMany (satisfy (/='\n')) -- line comment '#' -> mempty <$ manyTill anyChar newline '%' -> return mempty -- optional hyphenation '&' -> return mempty -- nonprintable zero-width ')' -> return mempty -- nonprintable zero-width '*' -> escString ',' -> return mempty -- to fix spacing after roman '-' -> return [RoffStr "-"] '.' -> return [RoffStr "."] '/' -> return mempty -- to fix spacing before roman '0' -> return [RoffStr "\x2007"] -- digit-width space ':' -> return mempty -- zero-width break 'A' -> quoteArg >>= checkDefined 'B' -> escIgnore 'B' [quoteArg] 'C' -> quoteArg >>= resolveGlyph '\'' 'D' -> escIgnore 'D' [quoteArg] 'E' -> do mode <- roffMode <$> getState case mode of CopyMode -> return mempty NormalMode -> return [RoffStr "\\"] 'H' -> escIgnore 'H' [quoteArg] 'L' -> escIgnore 'L' [quoteArg] 'M' -> escIgnore 'M' [escapeArg, countChar 1 (satisfy (/='\n'))] 'N' -> escIgnore 'N' [quoteArg] 'O' -> escIgnore 'O' [countChar 1 (oneOf ['0','1'])] 'R' -> escIgnore 'R' [quoteArg] 'S' -> escIgnore 'S' [quoteArg] 'V' -> escIgnore 'V' [escapeArg, countChar 1 alphaNum] 'X' -> escIgnore 'X' [quoteArg] 'Y' -> escIgnore 'Y' [escapeArg, countChar 1 (satisfy (/='\n'))] 'Z' -> escIgnore 'Z' [quoteArg] '\'' -> return [RoffStr "'"] '\n' -> return mempty -- line continuation '^' -> return [RoffStr "\x200A"] -- 1/12 em space '_' -> return [RoffStr "_"] '`' -> return [RoffStr "`"] 'a' -> return mempty -- "non-interpreted leader character" 'b' -> escIgnore 'b' [quoteArg] 'c' -> return mempty -- interrupt text processing 'd' -> escIgnore 'd' [] -- forward down 1/2em 'e' -> return [RoffStr "\\"] 'f' -> escFont 'g' -> escIgnore 'g' [escapeArg, countChar 1 (satisfy (/='\n'))] 'h' -> escIgnore 'h' [quoteArg] 'k' -> escIgnore 'k' [escapeArg, countChar 1 (satisfy (/='\n'))] 'l' -> escIgnore 'l' [quoteArg] 'm' -> escIgnore 'm' [escapeArg, countChar 1 (satisfy (/='\n'))] 'n' -> escIgnore 'm' [escapeArg, countChar 1 (satisfy (/='\n'))] 'o' -> escIgnore 'o' [quoteArg] 'p' -> escIgnore 'p' [] 'r' -> escIgnore 'r' [] 's' -> escIgnore 's' [escapeArg, signedNumber] 't' -> return [RoffStr "\t"] 'u' -> escIgnore 'u' [] 'v' -> escIgnore 'v' [quoteArg] 'w' -> escIgnore 'w' [quoteArg] 'x' -> escIgnore 'x' [quoteArg] 'z' -> escIgnore 'z' [countChar 1 anyChar] '|' -> return [RoffStr "\x2006"] --1/6 em space '~' -> return [RoffStr "\160"] -- nonbreaking space '\\' -> do mode <- roffMode <$> getState case mode of CopyMode -> char '\\' NormalMode -> return '\\' return [RoffStr "\\"] _ -> return [RoffStr $ T.singleton c] -- man 7 groff: "If a backslash is followed by a character that -- does not constitute a defined escape sequence, the backslash -- is silently ignored and the character maps to itself." escIgnore :: PandocMonad m => Char -> [RoffLexer m T.Text] -> RoffLexer m [LinePart] escIgnore c argparsers = do pos <- getPosition arg <- snd <$> withRaw (choice argparsers) <|> return "" report $ SkippedContent ("\\" <> T.cons c arg) pos return mempty escUnknown :: PandocMonad m => T.Text -> RoffLexer m [LinePart] escUnknown s = do pos <- getPosition report $ SkippedContent s pos return [RoffStr "\xFFFD"] signedNumber :: PandocMonad m => RoffLexer m T.Text signedNumber = try $ do sign <- option "" ("-" <$ char '-' <|> "" <$ char '+') ds <- many1Char digit return (sign <> ds) -- Parses: [..] or (.. escapeArg :: PandocMonad m => RoffLexer m T.Text escapeArg = choice [ char '[' *> optional expandString *> manyTillChar (noneOf ['\n',']']) (char ']') , char '(' *> optional expandString *> countChar 2 (satisfy (/='\n')) ] expandString :: PandocMonad m => RoffLexer m () expandString = try $ do pos <- getPosition char '\\' char '*' cs <- escapeArg <|> countChar 1 anyChar s <- linePartsToText <$> resolveText cs pos addToInput s -- Parses: '..' quoteArg :: PandocMonad m => RoffLexer m T.Text quoteArg = char '\'' *> manyTillChar (noneOf ['\n','\'']) (char '\'') escFont :: PandocMonad m => RoffLexer m [LinePart] escFont = do font <- escapeArg <|> countChar 1 alphaNum font' <- if T.null font || font == "P" then prevFont <$> getState else return $ foldr processFontLetter defaultFontSpec $ T.unpack font updateState $ \st -> st{ prevFont = currentFont st , currentFont = font' } return [Font font'] where processFontLetter c fs | isLower c = processFontLetter (toUpper c) fs processFontLetter 'B' fs = fs{ fontBold = True } processFontLetter 'I' fs = fs{ fontItalic = True } processFontLetter 'C' fs = fs{ fontMonospace = True } processFontLetter _ fs = fs -- do nothing -- separate function from lexMacro since real man files sometimes do not -- follow the rules lexComment :: PandocMonad m => RoffLexer m RoffTokens lexComment = do try $ string ".\\\"" skipMany $ noneOf "\n" eofline return mempty lexMacro :: PandocMonad m => RoffLexer m RoffTokens lexMacro = do pos <- getPosition st <- getState guard $ sourceColumn pos == 1 || afterConditional st char '.' <|> char '\'' skipMany spacetab macroName <- manyChar (satisfy isAlphaNum) case macroName of "nop" -> return mempty "ie" -> lexConditional "ie" "if" -> lexConditional "if" "el" -> lexConditional "el" "while" -> lexConditional "while" -- this doesn't get the semantics right but -- avoids parse errors _ -> do args <- lexArgs case macroName of "" -> return mempty "TS" -> lexTable pos "de" -> lexMacroDef args "de1" -> lexMacroDef args "ds" -> lexStringDef args "ds1" -> lexStringDef args "sp" -> return $ singleTok EmptyLine "so" -> lexIncludeFile args _ -> resolveMacro macroName args pos lexTable :: PandocMonad m => SourcePos -> RoffLexer m RoffTokens lexTable pos = do skipMany lexComment spaces opts <- try tableOptions <|> [] <$ optional (char ';') case lookup "tab" opts of Just (T.uncons -> Just (c, _)) -> updateState $ \st -> st{ tableTabChar = c } _ -> updateState $ \st -> st{ tableTabChar = '\t' } spaces skipMany lexComment spaces rows <- lexTableRows morerows <- many $ try $ do string ".T&" skipMany spacetab newline lexTableRows string ".TE" skipMany spacetab eofline return $ singleTok $ Tbl opts (rows <> concat morerows) pos lexTableRows :: PandocMonad m => RoffLexer m [TableRow] lexTableRows = do aligns <- tableFormatSpec spaces skipMany $ lexComment <|> try (mempty <$ (string ".sp" >> skipMany spaceChar >> newline)) spaces rows <- many (notFollowedBy (try (string ".TE") <|> try (string ".T&")) >> tableRow) return $ zip aligns rows tableCell :: PandocMonad m => RoffLexer m RoffTokens tableCell = do pos <- getPosition (enclosedCell <|> simpleCell) >>= lexRoff pos . T.pack where enclosedCell = do try (string "T{") manyTill anyChar (try (string "T}")) simpleCell = do tabChar <- tableTabChar <$> getState many (notFollowedBy (char tabChar <|> newline) >> anyChar) tableRow :: PandocMonad m => RoffLexer m [RoffTokens] tableRow = do tabChar <- tableTabChar <$> getState c <- tableCell cs <- many $ try (char tabChar >> tableCell) skipMany spacetab eofline skipMany lexComment return (c:cs) tableOptions :: PandocMonad m => RoffLexer m [TableOption] tableOptions = many1 tableOption <* spaces <* char ';' tableOption :: PandocMonad m => RoffLexer m TableOption tableOption = do k <- many1Char letter v <- option "" $ try $ do skipMany spacetab char '(' manyTillChar anyChar (char ')') skipMany spacetab optional (char ',' >> skipMany spacetab) return (k,v) tableFormatSpec :: PandocMonad m => RoffLexer m [[CellFormat]] tableFormatSpec = do first <- tableFormatSpecLine rest <- many $ try $ (newline <|> char ',') *> tableFormatSpecLine let speclines = first:rest spaces char '.' return $ speclines <> repeat (lastDef [] speclines) -- last line is default tableFormatSpecLine :: PandocMonad m => RoffLexer m [CellFormat] tableFormatSpecLine = many1 $ skipMany spacetab *> tableColFormat <* skipMany spacetab tableColFormat :: PandocMonad m => RoffLexer m CellFormat tableColFormat = do pipePrefix' <- option False $ True <$ try (string "|" <* notFollowedBy spacetab) c <- oneOf ['a','A','c','C','l','L','n','N','r','R','s','S','^','_','-', '=','|'] suffixes <- many $ try (skipMany spacetab *> countChar 1 digit) <|> (do x <- oneOf ['b','B','d','D','e','E','f','F','i','I','m','M', 'p','P','t','T','u','U','v','V','w','W','x','X', 'z','Z'] num <- case toLower x of 'w' -> many1 digit <|> (do char '(' xs <- manyTill anyChar (char ')') return ("(" <> xs <> ")")) <|> return "" 'f' -> count 1 alphaNum <* skipMany spacetab 'm' -> count 1 alphaNum <* skipMany spacetab _ -> return "" return $ T.pack $ x : num) pipeSuffix' <- option False $ True <$ string "|" return $ CellFormat { columnType = c , pipePrefix = pipePrefix' , pipeSuffix = pipeSuffix' , columnSuffixes = suffixes } -- We don't fully handle the conditional. But we do -- include everything under '.ie n', which occurs commonly -- in man pages. lexConditional :: PandocMonad m => T.Text -> RoffLexer m RoffTokens lexConditional mname = do pos <- getPosition skipMany spacetab mbtest <- if mname == "el" then fmap not . lastExpression <$> getState else expression skipMany spacetab st <- getState -- save state, so we can reset it ifPart <- do optional $ try $ char '\\' >> newline lexGroup <|> do updateState $ \s -> s{ afterConditional = True } t <- manToken updateState $ \s -> s{ afterConditional = False } return t case mbtest of Nothing -> do setState st -- reset state, so we don't record macros in skipped section report $ SkippedContent (T.cons '.' mname) pos return mempty Just True -> return ifPart Just False -> do setState st return mempty expression :: PandocMonad m => RoffLexer m (Maybe Bool) expression = do raw <- charsInBalanced '(' ')' (T.singleton <$> (satisfy (/= '\n'))) <|> many1Char nonspaceChar returnValue $ case raw of "1" -> Just True "n" -> Just True -- nroff mode "t" -> Just False -- troff mode _ -> Nothing where returnValue v = do updateState $ \st -> st{ lastExpression = v } return v lexGroup :: PandocMonad m => RoffLexer m RoffTokens lexGroup = do groupstart mconcat <$> manyTill manToken groupend where groupstart = try $ string "\\{" <* optional (try (string "\\\n")) groupend = try $ string "\\}" lexIncludeFile :: PandocMonad m => [Arg] -> RoffLexer m RoffTokens lexIncludeFile args = do pos <- getPosition case args of (f:_) -> do let fp = linePartsToText f dirs <- getResourcePath result <- readFileFromDirs dirs $ T.unpack fp case result of Nothing -> report $ CouldNotLoadIncludeFile fp pos Just s -> addToInput s return mempty [] -> return mempty resolveMacro :: PandocMonad m => T.Text -> [Arg] -> SourcePos -> RoffLexer m RoffTokens resolveMacro macroName args pos = do macros <- customMacros <$> getState case M.lookup macroName macros of Nothing -> return $ singleTok $ ControlLine macroName args pos Just ts -> do let fillLP (MacroArg i) zs = case drop (i - 1) args of [] -> zs (ys:_) -> ys <> zs fillLP z zs = z : zs let fillMacroArg (TextLine lineparts) = TextLine (foldr fillLP [] lineparts) fillMacroArg x = x return $ RoffTokens . fmap fillMacroArg . unRoffTokens $ ts lexStringDef :: PandocMonad m => [Arg] -> RoffLexer m RoffTokens lexStringDef args = do -- string definition case args of [] -> Prelude.fail "No argument to .ds" (x:ys) -> do let ts = singleTok $ TextLine (intercalate [RoffStr " " ] ys) let stringName = linePartsToText x updateState $ \st -> st{ customMacros = M.insert stringName ts (customMacros st) } return mempty lexMacroDef :: PandocMonad m => [Arg] -> RoffLexer m RoffTokens lexMacroDef args = do -- macro definition updateState $ \st -> st{ roffMode = CopyMode } (macroName, stopMacro) <- case args of (x : y : _) -> return (linePartsToText x, linePartsToText y) -- optional second arg (x:_) -> return (linePartsToText x, ".") [] -> Prelude.fail "No argument to .de" let stop = try $ do char '.' <|> char '\'' skipMany spacetab textStr stopMacro _ <- lexArgs return () ts <- mconcat <$> manyTill manToken stop updateState $ \st -> st{ customMacros = M.insert macroName ts (customMacros st) , roffMode = NormalMode } return mempty lexArgs :: PandocMonad m => RoffLexer m [Arg] lexArgs = do args <- many $ try oneArg skipMany spacetab eofline return args where oneArg :: PandocMonad m => RoffLexer m [LinePart] oneArg = do skipMany $ try $ string "\\\n" -- continuation line try quotedArg <|> plainArg -- try, because there are some erroneous files, e.g. linux/bpf.2 plainArg :: PandocMonad m => RoffLexer m [LinePart] plainArg = do skipMany spacetab mconcat <$> many1 (macroArg <|> escape <|> regularText <|> unescapedQuote) where unescapedQuote = char '"' >> return [RoffStr "\""] quotedArg :: PandocMonad m => RoffLexer m [LinePart] quotedArg = do skipMany spacetab char '"' xs <- mconcat <$> many (macroArg <|> escape <|> regularText <|> spaceTabChar <|> escapedQuote) char '"' return xs where escapedQuote = try $ do char '"' char '"' return [RoffStr "\""] checkDefined :: PandocMonad m => T.Text -> RoffLexer m [LinePart] checkDefined name = do macros <- customMacros <$> getState case M.lookup name macros of Just _ -> return [RoffStr "1"] Nothing -> return [RoffStr "0"] escString :: PandocMonad m => RoffLexer m [LinePart] escString = try $ do pos <- getPosition (do cs <- escapeArg <|> countChar 1 anyChar resolveText cs pos) <|> mempty <$ char 'S' -- strings and macros share namespace resolveText :: PandocMonad m => T.Text -> SourcePos -> RoffLexer m [LinePart] resolveText stringname pos = do RoffTokens ts <- resolveMacro stringname [] pos case Foldable.toList ts of [TextLine xs] -> return xs _ -> do report $ SkippedContent ("unknown string " <> stringname) pos return mempty lexLine :: PandocMonad m => RoffLexer m RoffTokens lexLine = do mode <- roffMode <$> getState case mode of CopyMode -> optional $ try $ string "\\&" NormalMode -> return () lnparts <- mconcat <$> many1 linePart eofline go lnparts where -- return empty line if we only have empty strings; -- this can happen if the line just contains \f[C], for example. go [] = return mempty go (RoffStr "" : xs) = go xs go xs = return $ singleTok $ TextLine xs linePart :: PandocMonad m => RoffLexer m [LinePart] linePart = macroArg <|> escape <|> regularText <|> quoteChar <|> spaceTabChar backslash :: PandocMonad m => RoffLexer m () backslash = do char '\\' mode <- roffMode <$> getState case mode of -- experimentally, it seems you don't always need to double -- the backslash in macro defs. It's essential with \\$1, -- but not with \\f[I]. So we make the second one optional. CopyMode -> optional $ char '\\' NormalMode -> return () macroArg :: PandocMonad m => RoffLexer m [LinePart] macroArg = try $ do pos <- getPosition backslash char '$' x <- escapeArg <|> countChar 1 digit case safeRead x of Just i -> return [MacroArg i] Nothing -> do report $ SkippedContent ("illegal macro argument " <> x) pos return [] regularText :: PandocMonad m => RoffLexer m [LinePart] regularText = do s <- many1Char $ noneOf "\n\r\t \\\"" return [RoffStr s] quoteChar :: PandocMonad m => RoffLexer m [LinePart] quoteChar = do char '"' return [RoffStr "\""] spaceTabChar :: PandocMonad m => RoffLexer m [LinePart] spaceTabChar = do c <- spacetab return [RoffStr $ T.singleton c] lexEmptyLine :: PandocMonad m => RoffLexer m RoffTokens lexEmptyLine = newline >> return (singleTok EmptyLine) manToken :: PandocMonad m => RoffLexer m RoffTokens manToken = lexComment <|> lexMacro <|> lexLine <|> lexEmptyLine linePartsToText :: [LinePart] -> T.Text linePartsToText = mconcat . map go where go (RoffStr s) = s go _ = mempty -- | Tokenize a string as a sequence of roff tokens. lexRoff :: PandocMonad m => SourcePos -> T.Text -> m RoffTokens lexRoff pos txt = do eithertokens <- readWithM (do setPosition pos mconcat <$> many manToken) def txt case eithertokens of Left e -> throwError e Right tokenz -> return tokenz ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/TWiki.hs�������������������������������������������������������0000644�0000000�0000000�00000042667�07346545000�017061� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Readers.TWiki Copyright : Copyright (C) 2014 Alexander Sulfrian License : GNU GPL, version 2 or above Maintainer : Alexander Sulfrian Stability : alpha Portability : portable Conversion of twiki text to 'Pandoc' document. -} module Text.Pandoc.Readers.TWiki ( readTWiki ) where import Control.Monad import Control.Monad.Except (throwError) import Data.Char (isAlphaNum) import qualified Data.Foldable as F import Data.Maybe (fromMaybe) import Data.Text (Text) import qualified Data.Text as T import Text.HTML.TagSoup import qualified Text.Pandoc.Builder as B import Text.Pandoc.Class.PandocMonad (PandocMonad (..)) import Text.Pandoc.Definition import Text.Pandoc.Options import Text.Pandoc.Parsing hiding (enclosed) import Text.Pandoc.Readers.HTML (htmlTag, isCommentTag) import Text.Pandoc.Shared (tshow) import Text.Pandoc.XML (fromEntities) -- | Read twiki from an input string and return a Pandoc document. readTWiki :: (PandocMonad m, ToSources a) => ReaderOptions -> a -> m Pandoc readTWiki opts s = do let sources = ensureFinalNewlines 2 (toSources s) res <- readWithM parseTWiki def{ stateOptions = opts } sources case res of Left e -> throwError e Right d -> return d type TWParser = ParsecT Sources ParserState -- -- utility functions -- tryMsg :: Text -> TWParser m a -> TWParser m a tryMsg msg p = try p T.unpack msg htmlElement :: PandocMonad m => Text -> TWParser m (Attr, Text) htmlElement tag = tryMsg tag $ do (TagOpen _ attr, _) <- htmlTag (~== TagOpen tag []) content <- T.pack <$> manyTill anyChar (endtag <|> endofinput) return (htmlAttrToPandoc attr, trim content) where endtag = void $ htmlTag (~== TagClose tag) endofinput = lookAhead $ try $ skipMany blankline >> skipSpaces >> eof trim = T.dropAround (=='\n') htmlAttrToPandoc :: [Attribute Text] -> Attr htmlAttrToPandoc attrs = (ident, classes, keyvals) where ident = fromMaybe "" $ lookup "id" attrs classes = maybe [] T.words $ lookup "class" attrs keyvals = [(k,v) | (k,v) <- attrs, k /= "id" && k /= "class"] parseHtmlContentWithAttrs :: PandocMonad m => Text -> TWParser m a -> TWParser m (Attr, [a]) parseHtmlContentWithAttrs tag parser = do (attr, content) <- htmlElement tag parsedContent <- try $ parseContent content return (attr, parsedContent) where parseContent = parseFromString' $ manyTill parser endOfContent endOfContent = try $ skipMany blankline >> skipSpaces >> eof parseCharHtmlContentWithAttrs :: PandocMonad m => Text -> TWParser m Char -> TWParser m (Attr, Text) parseCharHtmlContentWithAttrs tag = fmap go . parseHtmlContentWithAttrs tag where go (x, y) = (x, T.pack y) parseHtmlContent :: PandocMonad m => Text -> TWParser m a -> TWParser m [a] parseHtmlContent tag p = snd <$> parseHtmlContentWithAttrs tag p -- -- main parser -- parseTWiki :: PandocMonad m => TWParser m Pandoc parseTWiki = B.doc . mconcat <$> many block <* spaces <* eof -- -- block parsers -- block :: PandocMonad m => TWParser m B.Blocks block = do res <- mempty <$ skipMany1 blankline <|> blockElements <|> para skipMany blankline trace (T.take 60 $ tshow $ B.toList res) return res blockElements :: PandocMonad m => TWParser m B.Blocks blockElements = choice [ separator , header , verbatim , literal , list "" , table , blockQuote , noautolink ] separator :: PandocMonad m => TWParser m B.Blocks separator = tryMsg "separator" $ string "---" >> newline >> return B.horizontalRule header :: PandocMonad m => TWParser m B.Blocks header = tryMsg "header" $ do string "---" level <- length <$> many1 (char '+') guard $ level <= 6 classes <- option [] $ string "!!" >> return ["unnumbered"] skipSpaces content <- B.trimInlines . mconcat <$> manyTill inline newline attr <- registerHeader ("", classes, []) content return $ B.headerWith attr level content verbatim :: PandocMonad m => TWParser m B.Blocks verbatim = uncurry B.codeBlockWith <$> (htmlElement "verbatim" <|> htmlElement "pre") literal :: PandocMonad m => TWParser m B.Blocks literal = rawBlock <$> htmlElement "literal" where format (_, _, kvs) = fromMaybe "html" $ lookup "format" kvs rawBlock (attrs, content) = B.rawBlock (format attrs) content list :: PandocMonad m => Text -> TWParser m B.Blocks list prefix = choice [ bulletList prefix , orderedList prefix , definitionList prefix] definitionList :: PandocMonad m => Text -> TWParser m B.Blocks definitionList prefix = tryMsg "definitionList" $ do indent <- lookAhead $ textStr prefix *> many1 (textStr " ") <* textStr "$ " elements <- many $ parseDefinitionListItem (prefix <> T.concat indent) return $ B.definitionList elements where parseDefinitionListItem :: PandocMonad m => Text -> TWParser m (B.Inlines, [B.Blocks]) parseDefinitionListItem indent = do textStr (indent <> "$ ") >> skipSpaces term <- many1Till inline $ string ": " line <- listItemLine indent $ string "$ " return (mconcat term, [line]) bulletList :: PandocMonad m => Text -> TWParser m B.Blocks bulletList prefix = tryMsg "bulletList" $ parseList prefix (char '*') (char ' ') orderedList :: PandocMonad m => Text -> TWParser m B.Blocks orderedList prefix = tryMsg "orderedList" $ parseList prefix (oneOf "1iIaA") (string ". ") parseList :: PandocMonad m => Text -> TWParser m Char -> TWParser m a -> TWParser m B.Blocks parseList prefix marker delim = do (indent, style) <- lookAhead $ textStr prefix *> listStyle <* delim blocks <- many $ parseListItem (prefix <> indent) (char style <* delim) return $ case style of '1' -> B.orderedListWith (1, DefaultStyle, DefaultDelim) blocks 'i' -> B.orderedListWith (1, LowerRoman, DefaultDelim) blocks 'I' -> B.orderedListWith (1, UpperRoman, DefaultDelim) blocks 'a' -> B.orderedListWith (1, LowerAlpha, DefaultDelim) blocks 'A' -> B.orderedListWith (1, UpperAlpha, DefaultDelim) blocks _ -> B.bulletList blocks where listStyle = do indent <- many1 $ textStr " " style <- marker return (T.concat indent, style) parseListItem :: (PandocMonad m, Show a) => Text -> TWParser m a -> TWParser m B.Blocks parseListItem prefix marker = textStr prefix >> marker >> listItemLine prefix marker listItemLine :: (PandocMonad m, Show a) => Text -> TWParser m a -> TWParser m B.Blocks listItemLine prefix marker = mconcat <$> (lineContent >>= parseContent) where lineContent = do content <- anyLine continuation <- optionMaybe listContinuation return $ filterSpaces content <> "\n" <> maybe "" (" " <>) continuation filterSpaces = T.dropWhileEnd (== ' ') listContinuation = notFollowedBy (textStr prefix >> marker) >> string " " >> lineContent parseContent = parseFromString' $ many1 $ nestedList <|> parseInline parseInline = B.plain . mconcat <$> many1Till inline (lastNewline <|> newlineBeforeNestedList) nestedList = list prefix lastNewline = try $ char '\n' <* eof newlineBeforeNestedList = try $ char '\n' <* lookAhead nestedList table :: PandocMonad m => TWParser m B.Blocks table = try $ do thead <- optionMaybe (unzip <$> many1Till tableParseHeader newline) rows <- many1 tableParseRow return $ buildTable mempty rows $ fromMaybe (align rows, columns rows) thead where buildTable caption rows (aligns, heads) = B.table (B.simpleCaption $ B.plain caption) aligns (TableHead nullAttr $ toHeaderRow heads) [TableBody nullAttr 0 [] $ map toRow rows] (TableFoot nullAttr []) align rows = replicate (columCount rows) (AlignDefault, ColWidthDefault) columns rows = replicate (columCount rows) mempty columCount rows = length $ head rows toRow = Row nullAttr . map B.simpleCell toHeaderRow l = [toRow l | not (null l)] tableParseHeader :: PandocMonad m => TWParser m ((Alignment, ColWidth), B.Blocks) tableParseHeader = try $ do char '|' leftSpaces <- length <$> many spaceChar char '*' content <- tableColumnContent (char '*' >> skipSpaces >> char '|') char '*' rightSpaces <- length <$> many spaceChar optional tableEndOfRow return (tableAlign leftSpaces rightSpaces, content) where tableAlign left right | left >= 2 && left == right = (AlignCenter, ColWidthDefault) | left > right = (AlignRight, ColWidthDefault) | otherwise = (AlignLeft, ColWidthDefault) tableParseRow :: PandocMonad m => TWParser m [B.Blocks] tableParseRow = many1Till tableParseColumn newline tableParseColumn :: PandocMonad m => TWParser m B.Blocks tableParseColumn = char '|' *> skipSpaces *> tableColumnContent (skipSpaces >> char '|') <* skipSpaces <* optional tableEndOfRow tableEndOfRow :: PandocMonad m => TWParser m Char tableEndOfRow = lookAhead (try $ char '|' >> char '\n') >> char '|' tableColumnContent :: PandocMonad m => TWParser m a -> TWParser m B.Blocks tableColumnContent end = B.plain . mconcat <$> manyTill content (lookAhead $ try end) where content = continuation <|> inline continuation = try $ char '\\' >> newline >> return mempty blockQuote :: PandocMonad m => TWParser m B.Blocks blockQuote = B.blockQuote . mconcat <$> parseHtmlContent "blockquote" block noautolink :: PandocMonad m => TWParser m B.Blocks noautolink = do (_, content) <- htmlElement "noautolink" st <- getState setState $ st{ stateAllowLinks = False } blocks <- try $ parseContent content setState $ st{ stateAllowLinks = True } return $ mconcat blocks where parseContent = parseFromString' $ many block para :: PandocMonad m => TWParser m B.Blocks para = result . mconcat <$> many1Till inline endOfParaElement where endOfParaElement = lookAhead $ endOfInput <|> endOfPara <|> newBlockElement endOfInput = try $ skipMany blankline >> skipSpaces >> eof endOfPara = try $ blankline >> skipMany1 blankline newBlockElement = try $ blankline >> void blockElements result content = if F.all (==Space) content then mempty else B.para $ B.trimInlines content -- -- inline parsers -- inline :: PandocMonad m => TWParser m B.Inlines inline = choice [ whitespace , br , macro , strong , strongHtml , strongAndEmph , emph , emphHtml , boldCode , smart , link , htmlComment , code , codeHtml , nop , autoLink , str , symbol ] "inline" whitespace :: PandocMonad m => TWParser m B.Inlines whitespace = lb <|> regsp where lb = try $ skipMany spaceChar >> linebreak >> return B.space regsp = try $ skipMany1 spaceChar >> return B.space br :: PandocMonad m => TWParser m B.Inlines br = try $ string "%BR%" >> return B.linebreak linebreak :: PandocMonad m => TWParser m B.Inlines linebreak = newline >> notFollowedBy newline >> (lastNewline <|> innerNewline) where lastNewline = eof >> return mempty innerNewline = return B.space between :: (Monoid c, PandocMonad m, Show b) => TWParser m a -> TWParser m b -> (TWParser m b -> TWParser m c) -> TWParser m c between start end p = mconcat <$> try (start >> notFollowedBy whitespace >> many1Till (p end) end) enclosed :: (Monoid b, PandocMonad m, Show a) => TWParser m a -> (TWParser m a -> TWParser m b) -> TWParser m b enclosed sep p = between sep (try $ sep <* endMarker) p where endMarker = lookAhead $ void endSpace <|> void (oneOf ".,!?:)|") <|> eof endSpace = (spaceChar <|> newline) >> return B.space macro :: PandocMonad m => TWParser m B.Inlines macro = macroWithParameters <|> withoutParameters where withoutParameters = emptySpan <$> enclosed (char '%') (const macroName) emptySpan name = buildSpan name [] mempty macroWithParameters :: PandocMonad m => TWParser m B.Inlines macroWithParameters = try $ do char '%' name <- macroName (content, kvs) <- attributes char '%' return $ buildSpan name kvs $ B.str content buildSpan :: Text -> [(Text, Text)] -> B.Inlines -> B.Inlines buildSpan className kvs = B.spanWith attrs where attrs = ("", ["twiki-macro", className] ++ additionalClasses, kvsWithoutClasses) additionalClasses = maybe [] T.words $ lookup "class" kvs kvsWithoutClasses = [(k,v) | (k,v) <- kvs, k /= "class"] macroName :: PandocMonad m => TWParser m Text macroName = do first <- letter rest <- many $ alphaNum <|> char '_' return $ T.pack $ first:rest attributes :: PandocMonad m => TWParser m (Text, [(Text, Text)]) attributes = foldr (either mkContent mkKvs) ("", []) <$> (char '{' *> spnl *> many (attribute <* spnl) <* char '}') where spnl = skipMany (spaceChar <|> newline) mkContent c ("", kvs) = (c, kvs) mkContent c (rest, kvs) = (c <> " " <> rest, kvs) mkKvs kv (cont, rest) = (cont, kv : rest) attribute :: PandocMonad m => TWParser m (Either Text (Text, Text)) attribute = withKey <|> withoutKey where withKey = try $ do key <- macroName char '=' curry Right key <$> parseValue False withoutKey = try $ Left <$> parseValue True parseValue allowSpaces = fromEntities <$> (withQuotes <|> withoutQuotes allowSpaces) withQuotes = between (char '"') (char '"') (\_ -> countChar 1 $ noneOf ['"']) withoutQuotes allowSpaces | allowSpaces = many1Char $ noneOf "}" | otherwise = many1Char $ noneOf " }" nestedInlines :: (Show a, PandocMonad m) => TWParser m a -> TWParser m B.Inlines nestedInlines end = innerSpace <|> nestedInline where innerSpace = try $ whitespace <* notFollowedBy end nestedInline = notFollowedBy whitespace >> inline strong :: PandocMonad m => TWParser m B.Inlines strong = try $ B.strong <$> enclosed (char '*') nestedInlines strongHtml :: PandocMonad m => TWParser m B.Inlines strongHtml = B.strong . mconcat <$> (parseHtmlContent "strong" inline <|> parseHtmlContent "b" inline) strongAndEmph :: PandocMonad m => TWParser m B.Inlines strongAndEmph = try $ B.emph . B.strong <$> enclosed (string "__") nestedInlines emph :: PandocMonad m => TWParser m B.Inlines emph = try $ B.emph <$> enclosed (char '_') (\p -> notFollowedBy (char '|') >> nestedInlines p) -- emphasis closers can't cross table cell boundaries, see #3921 emphHtml :: PandocMonad m => TWParser m B.Inlines emphHtml = B.emph . mconcat <$> (parseHtmlContent "em" inline <|> parseHtmlContent "i" inline) nestedString :: (Show a, PandocMonad m) => TWParser m a -> TWParser m Text nestedString end = innerSpace <|> countChar 1 nonspaceChar where innerSpace = try $ many1Char spaceChar <* notFollowedBy end boldCode :: PandocMonad m => TWParser m B.Inlines boldCode = try $ B.strong . B.code . fromEntities <$> enclosed (string "==") nestedString htmlComment :: PandocMonad m => TWParser m B.Inlines htmlComment = htmlTag isCommentTag >> return mempty code :: PandocMonad m => TWParser m B.Inlines code = try $ B.code . fromEntities <$> enclosed (char '=') nestedString codeHtml :: PandocMonad m => TWParser m B.Inlines codeHtml = do (attrs, content) <- parseCharHtmlContentWithAttrs "code" anyChar return $ B.codeWith attrs $ fromEntities content autoLink :: PandocMonad m => TWParser m B.Inlines autoLink = try $ do state <- getState guard $ stateAllowLinks state (text, url) <- parseLink guard $ checkLink (T.last url) return $ makeLink (text, url) where parseLink = notFollowedBy nop >> (uri <|> emailAddress) makeLink (text, url) = B.link url "" $ B.str text checkLink c | c == '/' = True | otherwise = isAlphaNum c str :: PandocMonad m => TWParser m B.Inlines str = B.str <$> (many1Char alphaNum <|> characterReference) nop :: PandocMonad m => TWParser m B.Inlines nop = try $ (void exclamation <|> void nopTag) >> followContent where exclamation = char '!' nopTag = stringAnyCase "" followContent = B.str . fromEntities <$> many1Char nonspaceChar symbol :: PandocMonad m => TWParser m B.Inlines symbol = B.str <$> countChar 1 nonspaceChar smart :: PandocMonad m => TWParser m B.Inlines smart = smartPunctuation inline link :: PandocMonad m => TWParser m B.Inlines link = try $ do st <- getState guard $ stateAllowLinks st setState $ st{ stateAllowLinks = False } (url, title, content) <- linkText setState $ st{ stateAllowLinks = True } return $ B.link url title content linkText :: PandocMonad m => TWParser m (Text, Text, B.Inlines) linkText = do string "[[" url <- T.pack <$> many1Till anyChar (char ']') content <- option (B.str url) (mconcat <$> linkContent) char ']' return (url, "", content) where linkContent = char '[' >> many1Till anyChar (char ']') >>= parseLinkContent . T.pack parseLinkContent = parseFromString' $ many1 inline �������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Readers/Textile.hs�����������������������������������������������������0000644�0000000�0000000�00000065224�07346545000�017442� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ViewPatterns #-} {- | Module : Text.Pandoc.Readers.Textile Copyright : Copyright (C) 2010-2012 Paul Rivier 2010-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : Paul Rivier Stability : alpha Portability : portable Conversion from Textile to 'Pandoc' document, based on the spec available at https://www.promptworks.com/textile/. Implemented and parsed: - Paragraphs - Code blocks - Lists - blockquote - Inlines : strong, emph, cite, code, deleted, superscript, subscript, links - footnotes - HTML-specific and CSS-specific attributes on headers Left to be implemented: - dimension sign - all caps - continued blocks (ex bq..) TODO : refactor common patterns across readers : - more ... -} module Text.Pandoc.Readers.Textile ( readTextile) where import Control.Monad (guard, liftM) import Control.Monad.Except (throwError) import Data.Char (digitToInt, isUpper) import Data.List (intersperse, transpose, foldl') import Data.List.NonEmpty (NonEmpty(..), nonEmpty) import Data.Text (Text) import qualified Data.Text as T import Text.HTML.TagSoup (Tag (..), fromAttrib) import Text.HTML.TagSoup.Match import Text.Pandoc.Builder (Blocks, Inlines, trimInlines) import qualified Text.Pandoc.Builder as B import Text.Pandoc.Class.PandocMonad (PandocMonad (..)) import Text.Pandoc.CSS import Text.Pandoc.Definition import Text.Pandoc.Options import Text.Pandoc.Parsing import Text.Pandoc.Readers.HTML (htmlTag, isBlockTag, isInlineTag) import Text.Pandoc.Readers.LaTeX (rawLaTeXBlock, rawLaTeXInline) import Text.Pandoc.Shared (trim, tshow) import Text.Read (readMaybe) -- | Parse a Textile text and return a Pandoc document. readTextile :: (PandocMonad m, ToSources a) => ReaderOptions -- ^ Reader options -> a -> m Pandoc readTextile opts s = do let sources = ensureFinalNewlines 2 (toSources s) parsed <- readWithM parseTextile def{ stateOptions = opts } sources case parsed of Right result -> return result Left e -> throwError e type TextileParser = ParsecT Sources ParserState -- | Generate a Pandoc ADT from a textile document parseTextile :: PandocMonad m => TextileParser m Pandoc parseTextile = do many blankline startPos <- getPosition -- go through once just to get list of reference keys and notes -- docMinusKeys is the raw document with blanks where the keys/notes were... let firstPassParser = do pos <- getPosition t <- noteBlock <|> lineClump return (pos, t) manyTill firstPassParser eof >>= setInput . Sources setPosition startPos st' <- getState let reversedNotes = stateNotes st' updateState $ \s -> s { stateNotes = reverse reversedNotes } -- now parse it for real... Pandoc nullMeta . B.toList <$> parseBlocks -- FIXME noteMarker :: PandocMonad m => TextileParser m Text noteMarker = do skipMany spaceChar string "fn" T.pack <$> manyTill digit (string "." <|> try (string "^.")) noteBlock :: PandocMonad m => TextileParser m Text noteBlock = try $ do startPos <- getPosition ref <- noteMarker optional blankline contents <- T.unlines <$> many1Till anyLine (blanklines <|> noteBlock) endPos <- getPosition let newnote = (ref, contents <> "\n") st <- getState let oldnotes = stateNotes st updateState $ \s -> s { stateNotes = newnote : oldnotes } -- return blanks so line count isn't affected return $ T.replicate (sourceLine endPos - sourceLine startPos) "\n" -- | Parse document blocks parseBlocks :: PandocMonad m => TextileParser m Blocks parseBlocks = mconcat <$> manyTill block eof -- | Block parsers list tried in definition order blockParsers :: PandocMonad m => [TextileParser m Blocks] blockParsers = [ codeBlock , header , blockQuote , hrule , commentBlock , anyList , rawHtmlBlock , rawLaTeXBlock' , table , explicitBlock "p" (para <|> pure (B.para mempty)) , para , mempty <$ blanklines ] -- | Any block in the order of definition of blockParsers block :: PandocMonad m => TextileParser m Blocks block = do res <- choice blockParsers "block" trace (T.take 60 $ tshow $ B.toList res) return res commentBlock :: PandocMonad m => TextileParser m Blocks commentBlock = try $ do string "###." manyTill anyLine blanklines return mempty codeBlock :: PandocMonad m => TextileParser m Blocks codeBlock = codeBlockTextile <|> codeBlockHtml codeBlockTextile :: PandocMonad m => TextileParser m Blocks codeBlockTextile = try $ do string "bc." <|> string "pre." extended <- option False (True <$ char '.') char ' ' let starts = ["p", "table", "bq", "bc", "pre", "h1", "h2", "h3", "h4", "h5", "h6", "pre", "###", "notextile"] let ender = () <$ choice (map explicitBlockStart starts) contents <- if extended then do f <- anyLine rest <- many (notFollowedBy ender *> anyLine) return (f:rest) else manyTill anyLine blanklines return $ B.codeBlock (trimTrailingNewlines (T.unlines contents)) trimTrailingNewlines :: Text -> Text trimTrailingNewlines = T.dropWhileEnd (=='\n') -- | Code Blocks in Textile are between
 and 
codeBlockHtml :: PandocMonad m => TextileParser m Blocks codeBlockHtml = try $ do (t@(TagOpen _ attrs),_) <- htmlTag (tagOpen (=="pre") (const True)) result' <- T.pack <$> manyTill anyChar (htmlTag (tagClose (=="pre"))) -- drop leading newline if any let result'' = case T.uncons result' of Just ('\n', xs) -> xs _ -> result' -- drop trailing newline if any let result''' = case T.unsnoc result'' of Just (xs, '\n') -> xs _ -> result'' let classes = T.words $ fromAttrib "class" t let ident = fromAttrib "id" t let kvs = [(k,v) | (k,v) <- attrs, k /= "id" && k /= "class"] return $ B.codeBlockWith (ident,classes,kvs) result''' -- | Header of the form "hN. content" with N in 1..6 header :: PandocMonad m => TextileParser m Blocks header = try $ do char 'h' level <- digitToInt <$> oneOf "123456" attr <- attributes char '.' lookAhead whitespace name <- trimInlines . mconcat <$> many inline attr' <- registerHeader attr name return $ B.headerWith attr' level name -- | Blockquote of the form "bq. content" blockQuote :: PandocMonad m => TextileParser m Blocks blockQuote = try $ do string "bq" >> attributes >> char '.' >> whitespace B.blockQuote <$> para -- Horizontal rule hrule :: PandocMonad m => TextileParser m Blocks hrule = try $ do skipSpaces start <- oneOf "-*" count 2 (skipSpaces >> char start) skipMany (spaceChar <|> char start) newline optional blanklines return B.horizontalRule -- Lists handling -- | Can be a bullet list or an ordered list. This implementation is -- strict in the nesting, sublist must start at exactly "parent depth -- plus one" anyList :: PandocMonad m => TextileParser m Blocks anyList = try $ anyListAtDepth 1 <* blanklines -- | This allow one type of list to be nested into an other type, -- provided correct nesting anyListAtDepth :: PandocMonad m => Int -> TextileParser m Blocks anyListAtDepth depth = choice [ bulletListAtDepth depth, orderedListAtDepth depth, definitionList ] -- | Bullet List of given depth, depth being the number of leading '*' bulletListAtDepth :: PandocMonad m => Int -> TextileParser m Blocks bulletListAtDepth depth = try $ B.bulletList <$> many1 (bulletListItemAtDepth depth) -- | Bullet List Item of given depth, depth being the number of -- leading '*' bulletListItemAtDepth :: PandocMonad m => Int -> TextileParser m Blocks bulletListItemAtDepth depth = try $ do bulletListStartAtDepth depth genericListItemContentsAtDepth depth -- | Ordered List of given depth, depth being the number of -- leading '#' -- The first Ordered List Item may have a start attribute orderedListAtDepth :: PandocMonad m => Int -> TextileParser m Blocks orderedListAtDepth depth = try $ do (startNum, firstItem) <- firstOrderedListItemAtDepth depth moreItems <- many (orderedListItemAtDepth depth) let listItems = firstItem : moreItems return $ B.orderedListWith (startNum, DefaultStyle, DefaultDelim) listItems -- | The first Ordered List Item, which could have a start attribute firstOrderedListItemAtDepth :: PandocMonad m => Int -> TextileParser m (Int, Blocks) firstOrderedListItemAtDepth depth = try $ do startNum <- orderedListStartAtDepth depth contents <- genericListItemContentsAtDepth depth return (startNum, contents) -- | Ordered List Item of given depth, depth being the number of -- leading '#' orderedListItemAtDepth :: PandocMonad m => Int -> TextileParser m Blocks orderedListItemAtDepth depth = try $ do orderedListStartAtDepth depth genericListItemContentsAtDepth depth -- | Lists always start with a number of leading characters '#' or '*' -- Ordered list start characters '#' can be followed by the start attribute -- number, but bullet list characters '*' can not orderedListStartAtDepth :: PandocMonad m => Int -> TextileParser m Int orderedListStartAtDepth depth = count depth (char '#') >> try orderedListStartAttr <* (attributes >> whitespace) bulletListStartAtDepth :: PandocMonad m => Int -> TextileParser m () bulletListStartAtDepth depth = () <$ (count depth (char '*') >> attributes >> whitespace) -- | The leading characters and start attributes differ between ordered and -- unordered lists, but their contents have the same structure and can -- share a Parser genericListItemContentsAtDepth :: PandocMonad m => Int -> TextileParser m Blocks genericListItemContentsAtDepth depth = do contents <- mconcat <$> many ((B.plain . mconcat <$> many1 inline) <|> try (newline >> codeBlockHtml)) newline sublist <- option mempty (anyListAtDepth (depth + 1)) return $ contents <> sublist -- | A definition list is a set of consecutive definition items definitionList :: PandocMonad m => TextileParser m Blocks definitionList = try $ B.definitionList <$> many1 definitionListItem -- | List start character. listStart :: PandocMonad m => TextileParser m () listStart = genericListStart '*' <|> () <$ orderedListStart <|> () <$ definitionListStart genericListStart :: PandocMonad m => Char -> TextileParser m () genericListStart c = () <$ try (many1 (char c) >> whitespace) orderedListStart :: PandocMonad m => TextileParser m () orderedListStart = () <$ try (many1 (char '#') >> try orderedListStartAttr >> whitespace) basicDLStart :: PandocMonad m => TextileParser m () basicDLStart = do char '-' whitespace notFollowedBy newline definitionListStart :: PandocMonad m => TextileParser m Inlines definitionListStart = try $ do basicDLStart trimInlines . mconcat <$> many1Till inline ( try (newline *> lookAhead basicDLStart) <|> try (lookAhead (() <$ string ":=")) ) -- | A definition list item in textile begins with '- ', followed by -- the term defined, then spaces and ":=". The definition follows, on -- the same single line, or spaned on multiple line, after a line -- break. definitionListItem :: PandocMonad m => TextileParser m (Inlines, [Blocks]) definitionListItem = try $ do term <- mconcat . intersperse B.linebreak <$> many1 definitionListStart def' <- string ":=" *> optional whitespace *> (multilineDef <|> inlineDef) return (term, def') where inlineDef :: PandocMonad m => TextileParser m [Blocks] inlineDef = liftM (\d -> [B.plain d]) $ optional whitespace >> (trimInlines . mconcat <$> many inline) <* newline multilineDef :: PandocMonad m => TextileParser m [Blocks] multilineDef = try $ do optional whitespace >> newline s <- T.pack <$> many1Till anyChar (try (string "=:" >> newline)) -- this <> "\n\n" does not look very good ds <- parseFromString' parseBlocks (s <> "\n\n") return [ds] -- raw content -- | A raw Html Block, optionally followed by blanklines rawHtmlBlock :: PandocMonad m => TextileParser m Blocks rawHtmlBlock = try $ do skipMany spaceChar (_,b) <- htmlTag isBlockTag optional blanklines return $ B.rawBlock "html" b -- | Raw block of LaTeX content rawLaTeXBlock' :: PandocMonad m => TextileParser m Blocks rawLaTeXBlock' = do guardEnabled Ext_raw_tex B.rawBlock "latex" <$> (rawLaTeXBlock <* spaces) -- | In textile, paragraphs are separated by blank lines. para :: PandocMonad m => TextileParser m Blocks para = B.para . trimInlines . mconcat <$> many1 inline -- Tables toAlignment :: Char -> Alignment toAlignment '<' = AlignLeft toAlignment '>' = AlignRight toAlignment '=' = AlignCenter toAlignment _ = AlignDefault cellAttributes :: PandocMonad m => TextileParser m (Bool, Alignment) cellAttributes = try $ do isHeader <- option False (True <$ char '_') -- we just ignore colspan and rowspan markers: optional $ try $ oneOf "/\\" >> many1 digit -- we pay attention to alignments: alignment <- option AlignDefault $ toAlignment <$> oneOf "<>=" -- ignore other attributes for now: _ <- attributes char '.' return (isHeader, alignment) -- | A table cell spans until a pipe | tableCell :: PandocMonad m => TextileParser m ((Bool, Alignment), Blocks) tableCell = try $ do char '|' (isHeader, alignment) <- option (False, AlignDefault) cellAttributes notFollowedBy blankline raw <- trim . T.pack <$> many (noneOf "|\n" <|> try (char '\n' <* notFollowedBy blankline)) content <- mconcat <$> parseFromString' (many inline) raw return ((isHeader, alignment), B.plain content) -- | A table row is made of many table cells tableRow :: PandocMonad m => TextileParser m [((Bool, Alignment), Blocks)] tableRow = try $ do -- skip optional row attributes optional $ try $ do _ <- attributes char '.' many1 spaceChar many1 tableCell <* char '|' <* blankline -- | A table with an optional header. table :: PandocMonad m => TextileParser m Blocks table = try $ do -- ignore table attributes caption <- option mempty $ try $ do string "table" _ <- attributes char '.' rawcapt <- trim <$> anyLine parseFromString' (mconcat <$> many inline) rawcapt rawrows <- many1 $ skipMany ignorableRow >> tableRow skipMany ignorableRow blanklines let (headers, rows) = case rawrows of (toprow:rest) | any (fst . fst) toprow -> (toprow, rest) _ -> (mempty, rawrows) let nbOfCols = maximum $ fmap length (headers :| rows) let aligns = map (maybe AlignDefault minimum . nonEmpty) $ transpose $ map (map (snd . fst)) (headers:rows) let toRow = Row nullAttr . map B.simpleCell toHeaderRow l = [toRow l | not (null l)] return $ B.table (B.simpleCaption $ B.plain caption) (zip aligns (replicate nbOfCols ColWidthDefault)) (TableHead nullAttr $ toHeaderRow $ map snd headers) [TableBody nullAttr 0 [] $ map (toRow . map snd) rows] (TableFoot nullAttr []) -- | Ignore markers for cols, thead, tfoot. ignorableRow :: PandocMonad m => TextileParser m () ignorableRow = try $ do char '|' oneOf ":^-~" _ <- attributes char '.' _ <- anyLine return () explicitBlockStart :: PandocMonad m => Text -> TextileParser m Attr explicitBlockStart name = try $ do string (T.unpack name) attr <- attributes char '.' optional whitespace optional endline return attr -- | Blocks like 'p' and 'table' do not need explicit block tag. -- However, they can be used to set HTML/CSS attributes when needed. explicitBlock :: PandocMonad m => Text -- ^ block tag name -> TextileParser m Blocks -- ^ implicit block -> TextileParser m Blocks explicitBlock name blk = try $ do attr <- explicitBlockStart name contents <- blk return $ if attr == nullAttr then contents else B.divWith attr contents ---------- -- Inlines ---------- -- | Any inline element inline :: PandocMonad m => TextileParser m Inlines inline = choice inlineParsers "inline" -- | Inline parsers tried in order inlineParsers :: PandocMonad m => [TextileParser m Inlines] inlineParsers = [ str , whitespace , endline , code , escapedInline , inlineMarkup , groupedInlineMarkup , rawHtmlInline , rawLaTeXInline' , note , link , image , mark , B.str <$> characterReference , smartPunctuation inline , symbol ] -- | Inline markups inlineMarkup :: PandocMonad m => TextileParser m Inlines inlineMarkup = choice [ simpleInline (string "??") (B.cite []) , simpleInline (string "**") B.strong , simpleInline (string "__") B.emph , simpleInline (char '*') B.strong , simpleInline (char '_') B.emph , simpleInline (char '+') B.underline , simpleInline (char '-' <* notFollowedBy (char '-')) B.strikeout , simpleInline (char '^') B.superscript , simpleInline (char '~') B.subscript , simpleInline (char '%') id ] -- | Trademark, registered, copyright mark :: PandocMonad m => TextileParser m Inlines mark = try $ char '(' >> (try tm <|> try reg <|> copy) reg :: PandocMonad m => TextileParser m Inlines reg = do oneOf "Rr" char ')' return $ B.str "\174" tm :: PandocMonad m => TextileParser m Inlines tm = do oneOf "Tt" oneOf "Mm" char ')' return $ B.str "\8482" copy :: PandocMonad m => TextileParser m Inlines copy = do oneOf "Cc" char ')' return $ B.str "\169" note :: PandocMonad m => TextileParser m Inlines note = try $ do ref <- char '[' *> many1 digit <* char ']' notes <- stateNotes <$> getState case lookup (T.pack ref) notes of Nothing -> Prelude.fail "note not found" Just raw -> B.note <$> parseFromString' parseBlocks raw -- | Special chars markupChars :: [Char] markupChars = "\\*#_@~-+^|%=[]&" -- | Break strings on following chars. Space tab and newline break for -- inlines breaking. Open paren breaks for mark. Quote, dash and dot -- break for smart punctuation. Punctuation breaks for regular -- punctuation. Double quote breaks for named links. > and < break -- for inline html. stringBreakers :: [Char] stringBreakers = " \t\n\r.,\"'?!;:<>«»„“”‚‘’()[]" wordBoundaries :: [Char] wordBoundaries = markupChars <> stringBreakers -- | Parse a hyphened sequence of words hyphenedWords :: PandocMonad m => TextileParser m Text hyphenedWords = do x <- wordChunk xs <- many (try $ char '-' >> wordChunk) return $ T.intercalate "-" (x:xs) wordChunk :: PandocMonad m => TextileParser m Text wordChunk = try $ do hd <- noneOf wordBoundaries tl <- many ( noneOf wordBoundaries <|> try (notFollowedBy' note *> oneOf markupChars <* lookAhead (noneOf wordBoundaries) ) ) return $ T.pack $ hd:tl -- | Any string str :: PandocMonad m => TextileParser m Inlines str = do baseStr <- hyphenedWords -- RedCloth compliance : if parsed word is uppercase and immediately -- followed by parens, parens content is unconditionally word acronym fullStr <- option baseStr $ try $ do guard $ T.all isUpper baseStr acro <- T.pack <$> enclosed (char '(') (char ')') anyChar' return $ T.concat [baseStr, " (", acro, ")"] updateLastStrPos return $ B.str fullStr -- | Some number of space chars whitespace :: PandocMonad m => TextileParser m Inlines whitespace = many1 spaceChar >> return B.space "whitespace" -- | In Textile, an isolated endline character is a line break endline :: PandocMonad m => TextileParser m Inlines endline = try $ do newline notFollowedBy blankline notFollowedBy listStart notFollowedBy rawHtmlBlock return B.linebreak rawHtmlInline :: PandocMonad m => TextileParser m Inlines rawHtmlInline = B.rawInline "html" . snd <$> htmlTag isInlineTag -- | Raw LaTeX Inline rawLaTeXInline' :: PandocMonad m => TextileParser m Inlines rawLaTeXInline' = try $ do guardEnabled Ext_raw_tex B.rawInline "latex" <$> rawLaTeXInline -- | Textile standard link syntax is "label":target. But we -- can also have ["label":target]. link :: PandocMonad m => TextileParser m Inlines link = try $ do bracketed <- (True <$ char '[') <|> return False char '"' *> notFollowedBy (oneOf " \t\n\r") attr <- attributes name <- trimInlines . mconcat <$> withQuoteContext InDoubleQuote (many1Till inline (char '"')) url <- linkUrl bracketed let name' = if B.toList name == [Str "$"] then B.str url else name return $ if attr == nullAttr then B.link url "" name' else B.spanWith attr $ B.link url "" name' linkUrl :: PandocMonad m => Bool -> TextileParser m Text linkUrl bracketed = do char ':' let stop = if bracketed then char ']' else lookAhead $ space <|> eof' <|> oneOf "[]" <|> try (oneOf "!.,;:*" *> (space <|> newline <|> eof')) T.pack <$> many1Till nonspaceChar stop -- | image embedding image :: PandocMonad m => TextileParser m Inlines image = try $ do char '!' >> notFollowedBy space (ident, cls, kvs) <- attributes let attr = case lookup "style" kvs of Just stls -> (ident, cls, pickStylesToKVs ["width", "height"] stls) Nothing -> (ident, cls, kvs) src <- T.pack <$> many1 (noneOf " \t\n\r!(") alt <- fmap T.pack $ option "" $ try $ char '(' *> manyTill anyChar (char ')') char '!' let img = B.imageWith attr src alt (B.str alt) try (do -- image link url <- linkUrl False return (B.link url "" img)) <|> return img escapedInline :: PandocMonad m => TextileParser m Inlines escapedInline = escapedEqs <|> escapedTag escapedEqs :: PandocMonad m => TextileParser m Inlines escapedEqs = B.str . T.pack <$> try (string "==" *> manyTill anyChar' (try $ string "==")) -- | literal text escaped btw tags escapedTag :: PandocMonad m => TextileParser m Inlines escapedTag = B.str . T.pack <$> try (string "" *> manyTill anyChar' (try $ string "")) -- | Any special symbol defined in wordBoundaries symbol :: PandocMonad m => TextileParser m Inlines symbol = B.str . T.singleton <$> (notFollowedBy newline *> notFollowedBy rawHtmlBlock *> oneOf wordBoundaries) -- | Inline code code :: PandocMonad m => TextileParser m Inlines code = code1 <|> code2 -- any character except a newline before a blank line anyChar' :: PandocMonad m => TextileParser m Char anyChar' = satisfy (/='\n') <|> try (char '\n' <* notFollowedBy blankline) code1 :: PandocMonad m => TextileParser m Inlines code1 = B.code . T.pack <$> surrounded (char '@') anyChar' code2 :: PandocMonad m => TextileParser m Inlines code2 = do htmlTag (tagOpen (=="tt") null) B.code . T.pack <$> manyTill anyChar' (try $ htmlTag $ tagClose (=="tt")) orderedListStartAttr :: PandocMonad m => TextileParser m Int orderedListStartAttr = do digits <- many digit case readMaybe digits :: Maybe Int of Nothing -> return 1 Just n -> return n -- | Html / CSS attributes attributes :: PandocMonad m => TextileParser m Attr attributes = foldl' (flip ($)) ("",[],[]) <$> try (do special <- option id specialAttribute attrs <- many attribute return (special : attrs)) specialAttribute :: PandocMonad m => TextileParser m (Attr -> Attr) specialAttribute = do alignStr <- ("center" <$ char '=') <|> ("justify" <$ try (string "<>")) <|> ("right" <$ char '>') <|> ("left" <$ char '<') notFollowedBy spaceChar return $ addStyle $ T.pack $ "text-align:" ++ alignStr attribute :: PandocMonad m => TextileParser m (Attr -> Attr) attribute = try $ (classIdAttr <|> styleAttr <|> langAttr) <* notFollowedBy spaceChar classIdAttr :: PandocMonad m => TextileParser m (Attr -> Attr) classIdAttr = try $ do -- (class class #id) char '(' ws <- T.words `fmap` T.pack <$> manyTill anyChar' (char ')') case reverse ws of [] -> return $ \(_,_,keyvals) -> ("",[],keyvals) ((T.uncons -> Just ('#', ident')):classes') -> return $ \(_,_,keyvals) -> (ident',classes',keyvals) classes' -> return $ \(_,_,keyvals) -> ("",classes',keyvals) styleAttr :: PandocMonad m => TextileParser m (Attr -> Attr) styleAttr = do style <- try $ enclosed (char '{') (char '}') anyChar' return $ addStyle $ T.pack style addStyle :: Text -> Attr -> Attr addStyle style (id',classes,keyvals) = (id',classes,keyvals') where keyvals' = ("style", style') : [(k,v) | (k,v) <- keyvals, k /= "style"] style' = style <> ";" <> T.concat [v | ("style",v) <- keyvals] langAttr :: PandocMonad m => TextileParser m (Attr -> Attr) langAttr = do lang <- try $ enclosed (char '[') (char ']') alphaNum return $ \(id',classes,keyvals) -> (id',classes,("lang",T.pack lang):keyvals) -- | Parses material surrounded by a parser. surrounded :: (PandocMonad m, Show t) => ParsecT Sources st m t -- ^ surrounding parser -> ParsecT Sources st m a -- ^ content parser (to be used repeatedly) -> ParsecT Sources st m [a] surrounded border = enclosed (border *> notFollowedBy (oneOf " \t\n\r")) (try border) simpleInline :: PandocMonad m => TextileParser m t -- ^ surrounding parser -> (Inlines -> Inlines) -- ^ Inline constructor -> TextileParser m Inlines -- ^ content parser (to be used repeatedly) simpleInline border construct = try $ do notAfterString border *> notFollowedBy (oneOf " \t\n\r") attr <- attributes body <- trimInlines . mconcat <$> withQuoteContext InSingleQuote (manyTill (notFollowedBy newline >> inline) (try border <* notFollowedBy alphaNum)) return $ construct $ if attr == nullAttr then body else B.spanWith attr body groupedInlineMarkup :: PandocMonad m => TextileParser m Inlines groupedInlineMarkup = try $ do char '[' sp1 <- option mempty $ B.space <$ whitespace result <- withQuoteContext InSingleQuote inlineMarkup sp2 <- option mempty $ B.space <$ whitespace char ']' return $ sp1 <> result <> sp2 eof' :: Monad m => ParsecT Sources s m Char eof' = '\n' <$ eof pandoc-3.1.3/src/Text/Pandoc/Readers/TikiWiki.hs0000644000000000000000000005241507346545000017546 0ustar0000000000000000{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Readers.TikiWiki Copyright : Copyright (C) 2017 Robin Lee Powell License : GNU GPL, version 2 or above Maintainer : Robin Lee Powell Stability : alpha Portability : portable Conversion of TikiWiki text to 'Pandoc' document. -} module Text.Pandoc.Readers.TikiWiki ( readTikiWiki ) where import Control.Monad import Control.Monad.Except (throwError) import qualified Data.Foldable as F import Data.List (dropWhileEnd) import Data.Maybe (fromMaybe) import Data.Text (Text) import qualified Data.Text as T import qualified Text.Pandoc.Builder as B import Text.Pandoc.Class.CommonState (CommonState (..)) import Text.Pandoc.Class.PandocMonad (PandocMonad (..)) import Text.Pandoc.Definition import Text.Pandoc.Logging (Verbosity (..)) import Text.Pandoc.Options import Text.Pandoc.Parsing hiding (enclosed) import Text.Pandoc.Shared (safeRead) import Text.Pandoc.XML (fromEntities) import Text.Printf (printf) -- | Read TikiWiki from an input string and return a Pandoc document. readTikiWiki :: (PandocMonad m, ToSources a) => ReaderOptions -> a -> m Pandoc readTikiWiki opts s = do let sources = ensureFinalNewlines 2 (toSources s) res <- readWithM parseTikiWiki def{ stateOptions = opts } sources case res of Left e -> throwError e Right d -> return d type TikiWikiParser = ParsecT Sources ParserState -- -- utility functions -- tryMsg :: Text -> TikiWikiParser m a -> TikiWikiParser m a tryMsg msg p = try p T.unpack msg skip :: TikiWikiParser m a -> TikiWikiParser m () skip parser = Control.Monad.void parser -- -- main parser -- parseTikiWiki :: PandocMonad m => TikiWikiParser m Pandoc parseTikiWiki = do bs <- mconcat <$> many block spaces eof return $ B.doc bs block :: PandocMonad m => TikiWikiParser m B.Blocks block = do verbosity <- getsCommonState stVerbosity pos <- getPosition res <- mempty <$ skipMany1 blankline <|> blockElements <|> para skipMany blankline when (verbosity >= INFO) $ trace (T.pack $ printf "line %d: %s" (sourceLine pos) (take 60 $ show $ B.toList res)) return res blockElements :: PandocMonad m => TikiWikiParser m B.Blocks blockElements = choice [ table , hr , header , mixedList , definitionList , codeMacro ] -- top -- ---- -- bottom -- -- ---- -- hr :: PandocMonad m => TikiWikiParser m B.Blocks hr = try $ do string "----" many (char '-') newline return B.horizontalRule -- ! header -- -- !! header level two -- -- !!! header level 3 -- header :: PandocMonad m => TikiWikiParser m B.Blocks header = tryMsg "header" $ do level <- fmap length (many1 (char '!')) guard $ level <= 6 skipSpaces content <- B.trimInlines . mconcat <$> manyTill inline newline attr <- registerHeader nullAttr content return $ B.headerWith attr level content tableRow :: PandocMonad m => TikiWikiParser m [B.Blocks] tableRow = try $ do -- row <- sepBy1 (many1Till inline $ oneOf "\n|") (try $ string "|" <* notFollowedBy (oneOf "|\n")) -- return $ map (B.plain . mconcat) row row <- sepBy1 (many1 (noneOf "\n|") >>= parseColumn . T.pack) (try $ string "|" <* notFollowedBy (oneOf "|\n")) return $ map B.plain row where parseColumn x = do parsed <- parseFromString (many1 inline) x return $ mconcat parsed -- Tables: -- -- ||foo|| -- -- ||row1-column1|row1-column2||row2-column1|row2-column2|| -- -- ||row1-column1|row1-column2 -- row2-column1|row2-column2|| -- -- ||row1-column1|row1-column2 -- row2-column1|row2-column2||row3-column1|row3-column2|| -- -- || Orange | Apple | more -- Bread | Pie | more -- Butter | Ice cream | and more || -- table :: PandocMonad m => TikiWikiParser m B.Blocks table = try $ do string "||" rows <- sepBy1 tableRow (try $ string "\n" <|> (string "||" <* notFollowedBy (string "\n"))) string "||" newline -- return $ B.simpleTable (headers rows) $ trace ("rows: " ++ (show rows)) rows return $ B.simpleTable (headers rows) rows where -- The headers are as many empty strings as the number of columns -- in the first row headers rows = replicate (length $ head rows) ((B.plain . B.str) "") para :: PandocMonad m => TikiWikiParser m B.Blocks para = fmap (result . mconcat) ( many1Till inline endOfParaElement) where endOfParaElement = lookAhead $ endOfInput <|> endOfPara <|> newBlockElement endOfInput = try $ skipMany blankline >> skipSpaces >> eof endOfPara = try $ blankline >> skipMany1 blankline newBlockElement = try $ blankline >> skip blockElements result content = if F.all (==Space) content then mempty else B.para $ B.trimInlines content -- ;item 1: definition 1 -- ;item 2: definition 2-1 -- + definition 2-2 -- ;item ''3'': definition ''3'' -- definitionList :: PandocMonad m => TikiWikiParser m B.Blocks definitionList = tryMsg "definitionList" $ do elements <-many1 parseDefinitionListItem return $ B.definitionList elements where parseDefinitionListItem :: PandocMonad m => TikiWikiParser m (B.Inlines, [B.Blocks]) parseDefinitionListItem = do skipSpaces >> char ';' <* skipSpaces term <- many1Till inline $ char ':' <* skipSpaces line <- listItemLine 1 return (mconcat term, [B.plain line]) data ListType = None | Numbered | Bullet deriving (Ord, Eq, Show) data ListNesting = LN { lntype :: ListType, lnnest :: Int } deriving (Ord, Eq, Show) -- The first argument is a stack (most recent == head) of our list -- nesting status; the list type and the nesting level; if we're in -- a number list in a bullet list it'd be -- [LN Numbered 2, LN Bullet 1] -- -- Mixed list example: -- -- # one -- # two -- ** two point one -- ** two point two -- # three -- # four -- mixedList :: PandocMonad m => TikiWikiParser m B.Blocks mixedList = try $ do items <- try $ many1 listItem return $ mconcat $ fixListNesting $ spanFoldUpList (LN None 0) items -- See the "Handling Lists" section of DESIGN-CODE for why this -- function exists. It's to post-process the lists and do some -- mappends. -- -- We need to walk the tree two items at a time, so we can see what -- we're going to join *to* before we get there. -- -- Because of that, it seemed easier to do it by hand than to try to -- figre out a fold or something. fixListNesting :: [B.Blocks] -> [B.Blocks] fixListNesting [] = [] fixListNesting [first] = [recurseOnList first] -- fixListNesting nestall | trace ("\n\nfixListNesting: " ++ (show nestall)) False = undefined -- fixListNesting nestall@(first:second:rest) = fixListNesting (first:second:rest) = let secondBlock = head $ B.toList second in case secondBlock of BulletList _ -> fixListNesting $ mappend (recurseOnList first) (recurseOnList second) : rest OrderedList _ _ -> fixListNesting $ mappend (recurseOnList first) (recurseOnList second) : rest _ -> recurseOnList first : fixListNesting (second:rest) -- This function walks the Block structure for fixListNesting, -- because it's a bit complicated, what with converting to and from -- lists and so on. recurseOnList :: B.Blocks -> B.Blocks -- recurseOnList item | trace ("rOL: " ++ (show $ length $ B.toList item) ++ ", " ++ (show $ B.toList item)) False = undefined recurseOnList items | length (B.toList items) == 1 = let itemBlock = head $ B.toList items in case itemBlock of BulletList listItems -> B.bulletList $ fixListNesting $ map B.fromList listItems OrderedList _ listItems -> B.orderedList $ fixListNesting $ map B.fromList listItems _ -> items -- The otherwise works because we constructed the blocks, and we -- know for a fact that no mappends have been run on them; each -- Blocks consists of exactly one Block. -- -- Anything that's not like that has already been processed by -- fixListNesting; don't bother to process it again. | otherwise = items -- Turn the list if list items into a tree by breaking off the first -- item, splitting the remainder of the list into items that are in -- the tree of the first item and those that aren't, wrapping the -- tree of the first item in its list time, and recursing on both -- sections. spanFoldUpList :: ListNesting -> [(ListNesting, B.Blocks)] -> [B.Blocks] spanFoldUpList _ [] = [] spanFoldUpList ln [first] = listWrap ln (fst first) [snd first] spanFoldUpList ln (first:rest) = let (span1, span2) = span (splitListNesting (fst first)) rest newTree1 = listWrap ln (fst first) $ snd first : spanFoldUpList (fst first) span1 newTree2 = spanFoldUpList ln span2 in newTree1 ++ newTree2 -- Decide if the second item should be in the tree of the first -- item, which is true if the second item is at a deeper nesting -- level and of the same type. splitListNesting :: ListNesting -> (ListNesting, B.Blocks) -> Bool splitListNesting ln1 (ln2, _) | lnnest ln1 < lnnest ln2 = True | ln1 == ln2 = True | otherwise = False -- If we've moved to a deeper nesting level, wrap the new level in -- the appropriate type of list. listWrap :: ListNesting -> ListNesting -> [B.Blocks] -> [B.Blocks] listWrap upperLN curLN retTree = if upperLN == curLN then retTree else case lntype curLN of None -> [] Bullet -> [B.bulletList retTree] Numbered -> [B.orderedList retTree] listItem :: PandocMonad m => TikiWikiParser m (ListNesting, B.Blocks) listItem = choice [ bulletItem , numberedItem ] -- * Start each line -- * with an asterisk (*). -- ** More asterisks gives deeper -- *** and deeper levels. -- bulletItem :: PandocMonad m => TikiWikiParser m (ListNesting, B.Blocks) bulletItem = try $ do prefix <- many1 $ char '*' many $ char ' ' content <- listItemLine (length prefix) return (LN Bullet (length prefix), B.plain content) -- # Start each line -- # with a number (1.). -- ## More number signs gives deeper -- ### and deeper -- numberedItem :: PandocMonad m => TikiWikiParser m (ListNesting, B.Blocks) numberedItem = try $ do prefix <- many1 $ char '#' many $ char ' ' content <- listItemLine (length prefix) return (LN Numbered (length prefix), B.plain content) listItemLine :: PandocMonad m => Int -> TikiWikiParser m B.Inlines listItemLine nest = lineContent >>= parseContent where lineContent = do content <- anyLine continuation <- optionMaybe listContinuation return $ filterSpaces content <> "\n" <> Data.Maybe.fromMaybe "" continuation filterSpaces = T.dropWhileEnd (== ' ') listContinuation = string (replicate nest '+') >> lineContent parseContent x = do parsed <- parseFromString (many1 inline) x return $ mconcat $ dropWhileEnd (== B.space) parsed -- Turn the CODE macro attributes into Pandoc code block attributes. mungeAttrs :: [(Text, Text)] -> (Text, [Text], [(Text, Text)]) mungeAttrs rawAttrs = ("", classes, rawAttrs) where -- "colors" is TikiWiki CODE macro for "name of language to do -- highlighting for"; turn the value into a class color = fromMaybe "" $ lookup "colors" rawAttrs -- ln = 1 means line numbering. It's also the default. So we -- emit numberLines as a class unless ln = 0 lnRaw = fromMaybe "1" $ lookup "ln" rawAttrs ln = if lnRaw == "0" then "" else "numberLines" classes = filter (/= "") [color, ln] codeMacro :: PandocMonad m => TikiWikiParser m B.Blocks codeMacro = try $ do string "{CODE(" rawAttrs <- macroAttrs string ")}" body <- T.pack <$> manyTill anyChar (try (string "{CODE}")) newline if not (null rawAttrs) then return $ B.codeBlockWith (mungeAttrs rawAttrs) body else return $ B.codeBlock body -- -- inline parsers -- inline :: PandocMonad m => TikiWikiParser m B.Inlines inline = choice [ whitespace , noparse , strong , emph , nbsp , image , htmlComment , strikeout , code , wikiLink , notExternalLink , externalLink , superTag , superMacro , subTag , subMacro , escapedChar , colored , centered , underlined , boxed , breakChars , str , symbol ] "inline" whitespace :: PandocMonad m => TikiWikiParser m B.Inlines whitespace = lb <|> regsp where lb = try $ skipMany spaceChar >> linebreak >> return B.space regsp = try $ skipMany1 spaceChar >> return B.space -- UNSUPPORTED, as there doesn't seem to be any facility in calibre -- for this nbsp :: PandocMonad m => TikiWikiParser m B.Inlines nbsp = try $ do string "~hs~" return $ B.str " NOT SUPPORTED BEGIN: ~hs~ (non-breaking space) :END " -- UNSUPPORTED, as the desired behaviour (that the data be -- *retained* and stored as a comment) doesn't exist in calibre, and -- silently throwing data out seemed bad. htmlComment :: PandocMonad m => TikiWikiParser m B.Inlines htmlComment = try $ do string "~hc~" inner <- fmap T.pack $ many1 $ noneOf "~" string "~/hc~" return $ B.str $ " NOT SUPPORTED: ~hc~ (html comment opener) BEGIN: " <> inner <> " ~/hc~ :END " linebreak :: PandocMonad m => TikiWikiParser m B.Inlines linebreak = newline >> notFollowedBy newline >> (lastNewline <|> innerNewline) where lastNewline = eof >> return mempty innerNewline = return B.space between :: (Monoid c, PandocMonad m, Show b) => TikiWikiParser m a -> TikiWikiParser m b -> (TikiWikiParser m b -> TikiWikiParser m c) -> TikiWikiParser m c between start end p = mconcat <$> try (start >> notFollowedBy whitespace >> many1Till (p end) end) enclosed :: (Monoid b, PandocMonad m, Show a) => TikiWikiParser m a -> (TikiWikiParser m a -> TikiWikiParser m b) -> TikiWikiParser m b enclosed sep p = between sep (try $ sep <* endMarker) p where endMarker = lookAhead $ skip endSpace <|> skip (oneOf ".,!?:)|'_") <|> eof endSpace = (spaceChar <|> newline) >> return B.space nestedInlines :: (Show a, PandocMonad m) => TikiWikiParser m a -> TikiWikiParser m B.Inlines nestedInlines end = innerSpace <|> nestedInline where innerSpace = try $ whitespace <* notFollowedBy end nestedInline = notFollowedBy whitespace >> inline -- {img attId="39" imalign="right" link="http://info.tikiwiki.org" alt="Panama Hat"} -- -- {img attId="37", thumb="mouseover", styleimage="border", desc="150"} -- -- {img src="img/wiki_up/393px-Pears.jpg" thumb="y" imalign="center" stylebox="border" button="y" desc="Pretty pears" max="200" rel="box"} -- image :: PandocMonad m => TikiWikiParser m B.Inlines image = try $ do string "{img " rawAttrs <- sepEndBy1 imageAttr spaces string "}" let src = fromMaybe "" $ lookup "src" rawAttrs let title = fromMaybe src $ lookup "desc" rawAttrs let alt = fromMaybe title $ lookup "alt" rawAttrs let classes = map fst $ filter (\(_,b) -> b == "" || b == "y") rawAttrs if not (T.null src) then return $ B.imageWith ("", classes, rawAttrs) src title (B.str alt) else return $ B.str $ " NOT SUPPORTED: image without src attribute BEGIN: {img " <> printAttrs rawAttrs <> "} :END " where printAttrs attrs = T.unwords $ map (\(a, b) -> a <> "=\"" <> b <> "\"") attrs imageAttr :: PandocMonad m => TikiWikiParser m (Text, Text) imageAttr = try $ do key <- many1 (noneOf "=} \t\n") char '=' optional $ char '"' value <- many1 (noneOf "}\"\n") optional $ char '"' optional $ char ',' return (T.pack key, T.pack value) -- __strong__ strong :: PandocMonad m => TikiWikiParser m B.Inlines strong = try $ fmap B.strong (enclosed (string "__") nestedInlines) -- ''emph'' emph :: PandocMonad m => TikiWikiParser m B.Inlines emph = try $ fmap B.emph (enclosed (string "''") nestedInlines) -- ~246~ escapedChar :: PandocMonad m => TikiWikiParser m B.Inlines escapedChar = try $ do string "~" mNumber <- safeRead . T.pack <$> many1 digit string "~" return $ B.str $ case mNumber of Just number -> T.singleton $ toEnum (number :: Int) Nothing -> "" -- UNSUPPORTED, as there doesn't seem to be any facility in calibre -- for this centered :: PandocMonad m => TikiWikiParser m B.Inlines centered = try $ do string "::" inner <- fmap T.pack $ many1 $ noneOf ":\n" string "::" return $ B.str $ " NOT SUPPORTED: :: (centered) BEGIN: ::" <> inner <> ":: :END " -- UNSUPPORTED, as there doesn't seem to be any facility in calibre -- for this colored :: PandocMonad m => TikiWikiParser m B.Inlines colored = try $ do string "~~" inner <- fmap T.pack $ many1 $ noneOf "~\n" string "~~" return $ B.str $ " NOT SUPPORTED: ~~ (colored) BEGIN: ~~" <> inner <> "~~ :END " -- ===underlined=== underlined :: PandocMonad m => TikiWikiParser m B.Inlines underlined = try $ B.underline <$> enclosed (string "===") nestedInlines -- UNSUPPORTED, as there doesn't seem to be any facility in calibre -- for this boxed :: PandocMonad m => TikiWikiParser m B.Inlines boxed = try $ do string "^" inner <- fmap T.pack $ many1 $ noneOf "^\n" string "^" return $ B.str $ " NOT SUPPORTED: ^ (boxed) BEGIN: ^" <> inner <> "^ :END " -- --text-- strikeout :: PandocMonad m => TikiWikiParser m B.Inlines strikeout = try $ fmap B.strikeout (enclosed (string "--") nestedInlines) nestedString :: (Show a, PandocMonad m) => TikiWikiParser m a -> TikiWikiParser m Text nestedString end = innerSpace <|> countChar 1 nonspaceChar where innerSpace = try $ T.pack <$> many1 spaceChar <* notFollowedBy end breakChars :: PandocMonad m => TikiWikiParser m B.Inlines breakChars = try $ string "%%%" >> return B.linebreak -- superscript: foo{TAG(tag=>sup)}super{TAG}foo / bar{SUP()}super2{SUP}bar superTag :: PandocMonad m => TikiWikiParser m B.Inlines superTag = try $ fmap (B.superscript . B.text . fromEntities) ( between (string "{TAG(tag=>sup)}") (string "{TAG}") nestedString) superMacro :: PandocMonad m => TikiWikiParser m B.Inlines superMacro = try $ do string "{SUP(" manyTill anyChar (string ")}") body <- manyTill anyChar (string "{SUP}") return $ B.superscript $ B.text $ T.pack body -- subscript: baz{TAG(tag=>sub)}sub{TAG}qux / qux{SUB()}sub2{SUB}qux subTag :: PandocMonad m => TikiWikiParser m B.Inlines subTag = try $ fmap (B.subscript . B.text . fromEntities) ( between (string "{TAG(tag=>sub)}") (string "{TAG}") nestedString) subMacro :: PandocMonad m => TikiWikiParser m B.Inlines subMacro = try $ do string "{SUB(" manyTill anyChar (string ")}") body <- manyTill anyChar (string "{SUB}") return $ B.subscript $ B.text $ T.pack body -- -+text+- code :: PandocMonad m => TikiWikiParser m B.Inlines code = try $ fmap (B.code . fromEntities) ( between (string "-+") (string "+-") nestedString) macroAttr :: PandocMonad m => TikiWikiParser m (Text, Text) macroAttr = try $ do key <- many1 (noneOf "=)") char '=' optional $ char '"' value <- many1 (noneOf " )\"") optional $ char '"' return (T.pack key, T.pack value) macroAttrs :: PandocMonad m => TikiWikiParser m [(Text, Text)] macroAttrs = try $ sepEndBy macroAttr spaces -- ~np~ __not bold__ ~/np~ noparse :: PandocMonad m => TikiWikiParser m B.Inlines noparse = try $ do string "~np~" body <- manyTill anyChar (string "~/np~") return $ B.str $ T.pack body str :: PandocMonad m => TikiWikiParser m B.Inlines str = fmap B.str (T.pack <$> many1 alphaNum <|> characterReference) symbol :: PandocMonad m => TikiWikiParser m B.Inlines symbol = fmap B.str (countChar 1 nonspaceChar) -- [[not a link] notExternalLink :: PandocMonad m => TikiWikiParser m B.Inlines notExternalLink = try $ do start <- string "[[" body <- many (noneOf "\n[]") end <- string "]" return $ B.text $ T.pack $ start ++ body ++ end -- [http://www.somesite.org url|Some Site title] -- ((internal link)) -- -- The ((...)) wiki links and [...] external links are handled -- exactly the same; this abstracts that out makeLink :: PandocMonad m => Text -> Text -> Text -> TikiWikiParser m B.Inlines makeLink start middle end = try $ do st <- getState guard $ stateAllowLinks st setState $ st{ stateAllowLinks = False } (url, title, anchor) <- wikiLinkText start middle end parsedTitle <- parseFromString (many1 inline) title setState $ st{ stateAllowLinks = True } return $ B.link (url <> anchor) "" $ mconcat parsedTitle wikiLinkText :: PandocMonad m => Text -> Text -> Text -> TikiWikiParser m (Text, Text, Text) wikiLinkText start middle end = do string (T.unpack start) url <- T.pack <$> many1 (noneOf $ T.unpack middle ++ "\n") seg1 <- option url linkContent seg2 <- option "" linkContent string (T.unpack end) if seg2 /= "" then return (url, seg2, seg1) else return (url, seg1, "") where linkContent = do char '|' T.pack <$> many (noneOf $ T.unpack middle) externalLink :: PandocMonad m => TikiWikiParser m B.Inlines externalLink = makeLink "[" "]|" "]" -- NB: this wiki linking is unlikely to work for anyone besides me -- (rlpowell); it happens to work for me because my Hakyll code has -- post-processing that treats pandoc .md titles as valid link -- targets, so something like -- [see also this other post](My Other Page) is perfectly valid. wikiLink :: PandocMonad m => TikiWikiParser m B.Inlines wikiLink = makeLink "((" ")|" "))" pandoc-3.1.3/src/Text/Pandoc/Readers/Txt2Tags.hs0000644000000000000000000004375107346545000017505 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE LambdaCase #-} {- | Module : Text.Pandoc.Readers.Txt2Tags Copyright : Copyright (C) 2014 Matthew Pickering License : GNU GPL, version 2 or above Maintainer : Matthew Pickering Conversion of txt2tags formatted plain text to 'Pandoc' document. -} module Text.Pandoc.Readers.Txt2Tags ( readTxt2Tags , getT2TMeta , T2TMeta (..) ) where import Control.Monad (guard, void, when) import Control.Monad.Except (catchError, throwError) import Control.Monad.Reader (Reader, asks, runReader) import Data.Default import Data.List (intercalate, transpose) import Data.List.NonEmpty (nonEmpty) import Data.Maybe (fromMaybe) import Data.Text (Text) import qualified Data.Text as T import Data.Time.Format (formatTime) import Text.Pandoc.Builder (Blocks, Inlines, trimInlines) import qualified Text.Pandoc.Builder as B import Text.Pandoc.Class.PandocMonad (PandocMonad) import qualified Text.Pandoc.Class.PandocMonad as P import Data.Time (defaultTimeLocale) import Text.Pandoc.Definition import Text.Pandoc.Options import Text.Pandoc.Parsing hiding (space, spaces, uri) import Text.Pandoc.Shared (compactify, compactifyDL) import Text.Pandoc.URI (escapeURI) type T2T = ParsecT Sources ParserState (Reader T2TMeta) -- | An object for the T2T macros meta information -- the contents of each field is simply substituted verbatim into the file data T2TMeta = T2TMeta { date :: Text -- ^ Current date , mtime :: Text -- ^ Last modification time of infile , infile :: FilePath -- ^ Input file , outfile :: FilePath -- ^ Output file } deriving Show instance Default T2TMeta where def = T2TMeta "" "" "" "" -- | Get the meta information required by Txt2Tags macros getT2TMeta :: PandocMonad m => m T2TMeta getT2TMeta = do inps <- P.getInputFiles outp <- fromMaybe "" <$> P.getOutputFile curDate <- formatTime defaultTimeLocale "%F" <$> P.getZonedTime curMtime <- catchError (mapM P.getModificationTime inps >>= (\case Nothing -> formatTime defaultTimeLocale "%T" <$> P.getZonedTime Just ts -> return $ formatTime defaultTimeLocale "%T" $ maximum ts) . nonEmpty) (const (return "")) return $ T2TMeta (T.pack curDate) (T.pack curMtime) (intercalate ", " inps) outp -- | Read Txt2Tags from an input string returning a Pandoc document readTxt2Tags :: (PandocMonad m, ToSources a) => ReaderOptions -> a -> m Pandoc readTxt2Tags opts s = do let sources = ensureFinalNewlines 2 (toSources s) meta <- getT2TMeta let parsed = flip runReader meta $ readWithM parseT2T (def {stateOptions = opts}) sources case parsed of Right result -> return result Left e -> throwError e -- | Read Txt2Tags (ignoring all macros) from an input string returning -- a Pandoc document -- readTxt2TagsNoMacros :: PandocMonad m => ReaderOptions -> Text -> m Pandoc -- readTxt2TagsNoMacros = readTxt2Tags parseT2T :: T2T Pandoc parseT2T = do -- Parse header if standalone flag is set standalone <- getOption readerStandalone when standalone parseHeader body <- mconcat <$> manyTill block eof meta' <- stateMeta <$> getState return $ Pandoc meta' (B.toList body) parseHeader :: T2T () parseHeader = do () <$ try blankline <|> header meta <- stateMeta <$> getState optional blanklines config <- manyTill setting (notFollowedBy setting) -- TODO: Handle settings better let settings = foldr (\(k,v) -> B.setMeta k (MetaString v)) meta config updateState (\s -> s {stateMeta = settings}) <* optional blanklines header :: T2T () header = titleline >> authorline >> dateline headerline :: B.ToMetaValue a => Text -> T2T a -> T2T () headerline field p = (() <$ try blankline) <|> (p >>= updateState . B.setMeta field) titleline :: T2T () titleline = headerline "title" (trimInlines . mconcat <$> manyTill inline newline) authorline :: T2T () authorline = headerline "author" (sepBy author (char ';') <* newline) where author = trimInlines . mconcat <$> many (notFollowedBy (char ';' <|> newline) >> inline) dateline :: T2T () dateline = headerline "date" (trimInlines . mconcat <$> manyTill inline newline) type Keyword = Text type Value = Text setting :: T2T (Keyword, Value) setting = do string "%!" keyword <- ignoreSpacesCap (many1Char alphaNum) char ':' value <- ignoreSpacesCap (manyTillChar anyChar newline) return (keyword, value) -- Blocks parseBlocks :: T2T Blocks parseBlocks = mconcat <$> manyTill block eof block :: T2T Blocks block = choice [ mempty <$ blanklines , quote , hrule -- hrule must go above title , title , commentBlock , verbatim , rawBlock , taggedBlock , list , table , para ] title :: T2T Blocks title = try $ balancedTitle '+' <|> balancedTitle '=' balancedTitle :: Char -> T2T Blocks balancedTitle c = try $ do spaces level <- length <$> many1 (char c) guard (level <= 5) -- Max header level 5 heading <- manyTillChar (noneOf "\n\r") (count level (char c)) label <- optionMaybe (enclosed (char '[') (char ']') (alphaNum <|> oneOf "_-")) many spaceChar *> newline let attr = maybe nullAttr (\x -> (T.pack x, [], [])) label return $ B.headerWith attr level (trimInlines $ B.text heading) para :: T2T Blocks para = try $ do ils <- parseInlines nl <- option False (True <$ newline) option (B.plain ils) (guard nl >> notFollowedBy listStart >> return (B.para ils)) where listStart = try bulletListStart <|> orderedListStart commentBlock :: T2T Blocks commentBlock = try (blockMarkupArea anyLine (const mempty) "%%%") <|> comment -- Separator and Strong line treated the same hrule :: T2T Blocks hrule = try $ do spaces line <- many1 (oneOf "=-_") guard (length line >= 20) B.horizontalRule <$ blankline quote :: T2T Blocks quote = try $ do lookAhead tab rawQuote <- many1 (tab *> optional spaces *> anyLine) contents <- parseFromString' parseBlocks (T.intercalate "\n" rawQuote <> "\n\n") return $ B.blockQuote contents commentLine :: T2T Inlines commentLine = comment -- List Parsing code from Org Reader list :: T2T Blocks list = choice [bulletList, orderedList, definitionList] bulletList :: T2T Blocks bulletList = B.bulletList . compactify <$> many1 (listItem bulletListStart parseBlocks) orderedList :: T2T Blocks orderedList = B.orderedList . compactify <$> many1 (listItem orderedListStart parseBlocks) definitionList :: T2T Blocks definitionList = try $ B.definitionList . compactifyDL <$> many1 (listItem definitionListStart definitionListEnd) definitionListEnd :: T2T (Inlines, [Blocks]) definitionListEnd = (,) <$> (mconcat <$> manyTill inline newline) <*> ((:[]) <$> parseBlocks) genericListStart :: T2T Char -> T2T Int genericListStart listMarker = try $ (2+) <$> (length <$> many spaceChar <* listMarker <* space <* notFollowedBy space) -- parses bullet list \start and returns its length (excl. following whitespace) bulletListStart :: T2T Int bulletListStart = genericListStart (char '-') orderedListStart :: T2T Int orderedListStart = genericListStart (char '+' ) definitionListStart :: T2T Int definitionListStart = genericListStart (char ':') -- parse raw text for one list item, excluding start marker and continuations listItem :: T2T Int -> T2T a -> T2T a listItem start end = try $ do markerLength <- try start firstLine <- anyLineNewline blank <- option "" ("\n" <$ blankline) rest <- T.concat <$> many (listContinuation markerLength) parseFromString' end $ firstLine <> blank <> rest -- continuation of a list item - indented and separated by blankline or endline. -- Note: nested lists are parsed as continuations. listContinuation :: Int -> T2T Text listContinuation markerLength = try $ notFollowedBy' (blankline >> blankline) *> (mappend <$> (T.concat <$> many1 listLine) <*> manyChar blankline) where listLine = try $ indentWith markerLength *> anyLineNewline -- Table table :: T2T Blocks table = try $ do tableHeader <- fmap snd <$> option mempty (try headerRow) rows <- many1 (many commentLine *> tableRow) let columns = transpose rows let ncolumns = length columns let aligns = map (fromMaybe AlignDefault . foldr findAlign Nothing) columns let rows' = map (map snd) rows let size = maybe 0 maximum $ nonEmpty $ map length rows' let rowsPadded = map (pad size) rows' let headerPadded = if null tableHeader then mempty else pad size tableHeader let toRow = Row nullAttr . map B.simpleCell toHeaderRow l = [toRow l | not (null l)] return $ B.table B.emptyCaption (zip aligns (replicate ncolumns ColWidthDefault)) (TableHead nullAttr $ toHeaderRow headerPadded) [TableBody nullAttr 0 [] $ map toRow rowsPadded] (TableFoot nullAttr []) pad :: (Monoid a) => Int -> [a] -> [a] pad n xs = xs ++ replicate (n - length xs) mempty findAlign :: (Alignment, a) -> Maybe Alignment -> Maybe Alignment findAlign (x,_) (Just y) | x == y = Just x | otherwise = Just AlignDefault findAlign (x,_) Nothing = Just x headerRow :: T2T [(Alignment, Blocks)] headerRow = genericRow (string "||") tableRow :: T2T [(Alignment, Blocks)] tableRow = genericRow (char '|') genericRow :: T2T a -> T2T [(Alignment, Blocks)] genericRow start = try $ do spaces *> start manyTill tableCell newline "genericRow" tableCell :: T2T (Alignment, Blocks) tableCell = try $ do leftSpaces <- length <$> lookAhead (many1 space) -- Case of empty cell means we must lookAhead content <- manyTill inline (try $ lookAhead cellEnd) rightSpaces <- length <$> many space let align = case compare leftSpaces rightSpaces of LT -> AlignLeft EQ -> AlignCenter GT -> AlignRight endOfCell return (align, B.plain (B.trimInlines $ mconcat content)) where cellEnd = void newline <|> (many1 space *> endOfCell) endOfCell :: T2T () endOfCell = try (skipMany1 $ char '|') <|> ( () <$ lookAhead newline) -- Raw area verbatim :: T2T Blocks verbatim = genericBlock anyLineNewline B.codeBlock "```" rawBlock :: T2T Blocks rawBlock = genericBlock anyLineNewline (B.para . B.str) "\"\"\"" taggedBlock :: T2T Blocks taggedBlock = do target <- getTarget genericBlock anyLineNewline (B.rawBlock target) "'''" -- Generic genericBlock :: Monoid a => T2T a -> (a -> Blocks) -> Text -> T2T Blocks genericBlock p f s = blockMarkupArea p f s <|> blockMarkupLine p f s blockMarkupArea :: Monoid a => T2T a -> (a -> Blocks) -> Text -> T2T Blocks blockMarkupArea p f s = try (do textStr s *> blankline f . mconcat <$> manyTill p (eof <|> void (textStr s *> blankline))) blockMarkupLine :: T2T a -> (a -> Blocks) -> Text -> T2T Blocks blockMarkupLine p f s = try (f <$> (textStr s *> space *> p)) -- Can be in either block or inline position comment :: Monoid a => T2T a comment = try $ do atStart notFollowedBy macro mempty <$ (char '%' *> anyLine) -- Inline parseInlines :: T2T Inlines parseInlines = trimInlines . mconcat <$> many1 inline inline :: T2T Inlines inline = choice [ endline , macro , commentLine , whitespace , url , link , image , bold , underline , code , raw , tagged , strike , italic , code , str , symbol ] bold :: T2T Inlines bold = inlineMarkup inline B.strong '*' B.str underline :: T2T Inlines underline = inlineMarkup inline B.underline '_' B.str strike :: T2T Inlines strike = inlineMarkup inline B.strikeout '-' B.str italic :: T2T Inlines italic = inlineMarkup inline B.emph '/' B.str code :: T2T Inlines code = inlineMarkup (T.singleton <$> anyChar) B.code '`' id raw :: T2T Inlines raw = inlineMarkup (T.singleton <$> anyChar) B.text '"' id tagged :: T2T Inlines tagged = do target <- getTarget inlineMarkup (T.singleton <$> anyChar) (B.rawInline target) '\'' id -- Parsec for markup indicated by a double character. -- Inline markup is greedy and glued -- Greedy meaning ***a*** = Bold [Str "*a*"] -- Glued meaning that markup must be tight to content -- Markup can't pass newlines inlineMarkup :: Monoid a => T2T a -- Content parser -> (a -> Inlines) -- Constructor -> Char -- Fence -> (Text -> a) -- Special Case to handle ****** -> T2T Inlines inlineMarkup p f c special = try $ do start <- many1Char (char c) let l = T.length start guard (l >= 2) when (l == 2) (void $ notFollowedBy space) -- We must make sure that there is no space before the start of the -- closing tags body <- optionMaybe (try $ manyTillChar (noneOf "\n\r") (try $ lookAhead (noneOf " " >> string [c,c] ))) case body of Just middle -> do lastChar <- anyChar end <- many1Char (char c) let parser inp = parseFromString' (mconcat <$> many p) inp let start' = case T.drop 2 start of "" -> mempty xs -> special xs body' <- parser (middle <> T.singleton lastChar) let end' = case T.drop 2 end of "" -> mempty xs -> special xs return $ f (start' `mappend` body' `mappend` end') Nothing -> do -- Either bad or case such as ***** guard (l >= 5) let body' = T.replicate (l - 4) $ T.singleton c return $ f (special body') link :: T2T Inlines link = try imageLink <|> titleLink -- Link with title titleLink :: T2T Inlines titleLink = try $ do char '[' notFollowedBy space tokens <- sepBy1 (manyChar $ noneOf " ]") space guard (length tokens >= 2) char ']' let link' = last tokens guard $ not $ T.null link' let tit = T.unwords (init tokens) return $ B.link link' "" (B.text tit) -- Link with image imageLink :: T2T Inlines imageLink = try $ do char '[' body <- image many1 space l <- manyTillChar (noneOf "\n\r ") (char ']') return (B.link l "" body) macro :: T2T Inlines macro = try $ do name <- string "%%" *> oneOfStringsCI (map fst commands) optional (try $ enclosed (char '(') (char ')') anyChar) lookAhead (spaceChar <|> oneOf specialChars <|> newline) maybe (return mempty) (\f -> asks (B.str . f)) (lookup name commands) where commands = [ ("date", date), ("mtime", mtime) , ("infile", T.pack . infile), ("outfile", T.pack . outfile)] -- raw URLs in text are automatically linked url :: T2T Inlines url = try $ do (rawUrl, escapedUrl) <- try uri <|> emailAddress' return $ B.link rawUrl "" (B.str escapedUrl) emailAddress' :: T2T (Text, Text) emailAddress' = do (base, mailURI) <- emailAddress query <- option "" emailQuery return (base <> query, mailURI <> query) emailQuery :: T2T Text emailQuery = do char '?' parts <- kv `sepBy1` (char '&') return $ "?" <> T.intercalate "&" parts kv :: T2T Text kv = do k <- T.pack <$> many1 alphaNum char '=' let vchar = alphaNum <|> try (oneOf "%._/~:,=$@&+-;*" <* lookAhead alphaNum) v <- T.pack <$> many1 vchar return (k <> "=" <> v) uri :: T2T (Text, Text) uri = try $ do address <- t2tURI return (address, escapeURI address) -- The definition of a URI in the T2T source differs from the -- actual definition. This is a transcription of the definition in -- the source of v2.6 --isT2TURI :: String -> Bool --isT2TURI (parse t2tURI "" -> Right _) = True --isT2TURI _ = False t2tURI :: T2T Text t2tURI = do start <- try ((<>) <$> proto <*> urlLogin) <|> guess domain <- many1Char chars sep <- manyChar (char '/') form' <- option mempty (T.cons <$> char '?' <*> many1Char form) anchor' <- option mempty (T.cons <$> char '#' <*> manyChar anchor) return (start <> domain <> sep <> form' <> anchor') where protos = ["http", "https", "ftp", "telnet", "gopher", "wais"] proto = (<>) <$> oneOfStrings protos <*> textStr "://" guess = (<>) <$> (((<>) <$> stringAnyCase "www" <*> option mempty (T.singleton <$> oneOf "23")) <|> stringAnyCase "ftp") <*> (T.singleton <$> char '.') login = alphaNum <|> oneOf "_.-" pass = manyChar (noneOf " @") chars = alphaNum <|> oneOf "%._/~:,=$@&+-" anchor = alphaNum <|> oneOf "%._0" form = chars <|> oneOf ";*" urlLogin = option mempty $ try ((\x y z -> x <> y <> T.singleton z) <$> many1Char login <*> option mempty (T.cons <$> char ':' <*> pass) <*> char '@') image :: T2T Inlines image = try $ do -- List taken from txt2tags source let extensions = [".jpg", ".jpeg", ".gif", ".png", ".eps", ".bmp"] char '[' (path, ext) <- manyUntilChar (noneOf "\n\t\r ") (oneOfStrings extensions) char ']' return $ B.image (path <> ext) "" mempty -- Characters used in markup specialChars :: [Char] specialChars = "%*-_/|:+;" tab :: T2T Char tab = char '\t' space :: T2T Char space = char ' ' spaces :: T2T Text spaces = manyChar space endline :: T2T Inlines endline = try $ do newline notFollowedBy blankline notFollowedBy hrule notFollowedBy title notFollowedBy verbatim notFollowedBy rawBlock notFollowedBy taggedBlock notFollowedBy quote notFollowedBy list notFollowedBy table return B.softbreak str :: T2T Inlines str = try $ B.str <$> many1Char (noneOf $ specialChars ++ "\n\r ") whitespace :: T2T Inlines whitespace = try $ B.space <$ spaceChar symbol :: T2T Inlines symbol = B.str . T.singleton <$> oneOf specialChars -- Utility getTarget :: T2T Text getTarget = do mv <- lookupMeta "target" . stateMeta <$> getState return $ case mv of Just (MetaString target) -> target Just (MetaInlines [Str target]) -> target _ -> "html" atStart :: T2T () atStart = getPosition >>= guard . (== 1) . sourceColumn ignoreSpacesCap :: T2T Text -> T2T Text ignoreSpacesCap p = T.toLower <$> (spaces *> p <* spaces) pandoc-3.1.3/src/Text/Pandoc/Readers/Typst.hs0000644000000000000000000004514307346545000017145 0ustar0000000000000000{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedLists #-} {-# LANGUAGE ScopedTypeVariables #-} {- | Module : Text.Pandoc.Readers.Typst Copyright : Copyright (C) 2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Reads and evaluates a Typst document as a Pandoc AST. -} module Text.Pandoc.Readers.Typst ( readTypst ) where import Text.Pandoc.Class import Text.Pandoc.Sources import Text.Pandoc.Options import Text.Pandoc.Definition import Typst ( parseTypst, evaluateTypst ) import Text.Pandoc.Error (PandocError(..)) import Control.Monad.Except (throwError) import Control.Monad (MonadPlus (mplus), void) import qualified Data.Foldable as F import qualified Data.Map as M import Data.Maybe (catMaybes, fromMaybe, isNothing) import Data.Sequence (Seq) import qualified Data.Sequence as Seq import Data.Text (Text) import qualified Data.Text as T import qualified Data.Vector as V import qualified Text.Pandoc.Builder as B import Text.Pandoc.Walk import Text.Parsec import Text.TeXMath (writeTeX) import Text.TeXMath.Shared (getSpaceChars) import Text.Pandoc.Readers.Typst.Math (pMathMany) import Text.Pandoc.Readers.Typst.Parsing (pTok, warn, chunks, getField, P) import Typst.Methods (applyPureFunction, formatNumber) import Typst.Types -- | Read Typst from an input string and return a Pandoc document. readTypst :: (PandocMonad m, ToSources a) => ReaderOptions -> a -> m Pandoc readTypst _opts inp = do let sources = toSources inp let inputName = case sources of Sources ((pos, _):_) -> sourceName pos _ -> "" case parseTypst inputName (sourcesToText sources) of Left e -> throwError $ PandocParseError $ T.pack $ show e Right parsed -> evaluateTypst readFileStrict inputName parsed >>= either (throwError . PandocParseError . T.pack . show) pure >>= runParserT pPandoc () inputName . F.toList >>= either (throwError . PandocParseError . T.pack . show) pure pPandoc :: PandocMonad m => P m B.Pandoc pPandoc = B.doc <$> pBlocks pBlocks :: PandocMonad m => P m B.Blocks pBlocks = mconcat <$> many pBlock pBlock :: PandocMonad m => P m B.Blocks pBlock = pPara <|> pBlockElt pBlockElt :: PandocMonad m => P m B.Blocks pBlockElt = pTok isBlock >>= handleBlock pSpace :: PandocMonad m => P m Content pSpace = pTok ( \case Txt t | T.all (== ' ') t -> True _ -> False ) pLab :: PandocMonad m => P m Text pLab = try $ do optional pSpace Lab t <- pTok ( \case Lab _ -> True _ -> False ) pure t handleBlock :: PandocMonad m => Content -> P m B.Blocks handleBlock tok = do -- check for following label mbident <- option Nothing $ Just <$> pLab case tok of Txt {} -> fail "pBlockElt encountered Txt" Lab {} -> pure mempty Elt "heading" _ fields -> do body <- getField "body" fields lev <- getField "level" fields <|> pure 1 B.headerWith (fromMaybe "" mbident,[],[]) lev <$> pWithContents pInlines body Elt "list" _ fields -> do children <- V.toList <$> getField "children" fields B.bulletList <$> mapM (pWithContents pBlocks) children Elt "list.item" _ fields -> getField "body" fields >>= pWithContents pBlocks Elt "enum" _ fields -> do children <- V.toList <$> getField "children" fields mbstart <- getField "start" fields start <- case mbstart of Nothing -> pure 1 Just x | x >= 0 -> pure x | otherwise -> fail "number must be positive" (numbering :: Text) <- getField "numbering" fields `mplus` pure "" let (sty, delim) = case numbering of "1." -> (B.Decimal, B.Period) "1)" -> (B.Decimal, B.OneParen) "(1)" -> (B.Decimal, B.TwoParens) "a." -> (B.LowerAlpha, B.Period) "a)" -> (B.LowerAlpha, B.OneParen) "(a)" -> (B.LowerAlpha, B.TwoParens) "A." -> (B.UpperAlpha, B.Period) "A)" -> (B.UpperAlpha, B.OneParen) "(A)" -> (B.UpperAlpha, B.TwoParens) "i." -> (B.LowerRoman, B.Period) "i)" -> (B.LowerRoman, B.OneParen) "(i)" -> (B.LowerRoman, B.TwoParens) "I." -> (B.UpperRoman, B.Period) "I)" -> (B.UpperRoman, B.OneParen) "(I)" -> (B.UpperRoman, B.TwoParens) _ -> (B.DefaultStyle, B.DefaultDelim) let listAttr = (start, sty, delim) B.orderedListWith listAttr <$> mapM (pWithContents pBlocks) children Elt "enum.item" _ fields -> getField "body" fields >>= pWithContents pBlocks Elt "terms" _ fields -> do children <- V.toList <$> getField "children" fields B.definitionList <$> mapM ( \case VTermItem t d -> do t' <- pWithContents pInlines t d' <- pWithContents pBlocks d pure (t', [d']) _ -> pure (mempty, []) ) children Elt "terms.item" _ fields -> getField "body" fields >>= pWithContents pBlocks Elt "raw" _ fields -> do txt <- getField "text" fields mblang <- getField "lang" fields let attr = (fromMaybe "" mbident, maybe [] (\l -> [l]) mblang, []) pure $ B.codeBlockWith attr txt Elt "parbreak" _ _ -> pure mempty Elt "block" _ fields -> B.divWith (fromMaybe "" mbident, [], []) <$> (getField "body" fields >>= pWithContents pBlocks) Elt "place" pos fields -> do warn "Ignoring parameters of place" handleBlock (Elt "block" pos fields) Elt "columns" _ fields -> do (cnt :: Integer) <- getField "count" fields B.divWith ("", ["columns-flow"], [("count", T.pack (show cnt))]) <$> (getField "body" fields >>= pWithContents pBlocks) Elt "rect" _ fields -> B.divWith ("", ["rect"], []) <$> (getField "body" fields >>= pWithContents pBlocks) Elt "circle" _ fields -> B.divWith ("", ["circle"], []) <$> (getField "body" fields >>= pWithContents pBlocks) Elt "ellipse" _ fields -> B.divWith ("", ["ellipse"], []) <$> (getField "body" fields >>= pWithContents pBlocks) Elt "polygon" _ fields -> B.divWith ("", ["polygon"], []) <$> (getField "body" fields >>= pWithContents pBlocks) Elt "square" _ fields -> B.divWith ("", ["square"], []) <$> (getField "body" fields >>= pWithContents pBlocks) Elt "align" _ fields -> do alignment <- getField "alignment" fields B.divWith ("", [], [("align", repr alignment)]) <$> (getField "body" fields >>= pWithContents pBlocks) Elt "stack" _ fields -> do (dir :: Direction) <- getField "dir" fields `mplus` pure Ltr rawchildren <- getField "children" fields children <- mapM ( \case val@(VFraction {}) -> pure $ B.divWith ("", [], [("space", repr val)]) mempty val -> fromVal val >>= pWithContents pBlocks ) (V.toList rawchildren) pure $ B.divWith ("", [], [("stack", repr (VDirection dir))]) $ mconcat $ map (B.divWith ("", [], [])) children Elt "grid" _ fields -> do children <- getField "children" fields >>= mapM (pWithContents pBlocks) . V.toList (columns :: Val) <- getField "columns" fields let toWidth (VFraction f) = Just (floor $ 1000 * f) toWidth _ = Nothing let normalizeWidths xs = let givenwidths = catMaybes xs (totgivenwidth :: Int) = sum givenwidths avgwidth = totgivenwidth `div` length givenwidths totwidth = avgwidth * length xs in if null givenwidths then replicate (length xs) B.ColWidthDefault else map ( \case Just x -> B.ColWidth (fromIntegral x / fromIntegral totwidth) Nothing -> B.ColWidth (fromIntegral avgwidth / fromIntegral totwidth) ) xs widths <- case columns of VInteger x -> pure $ replicate (fromIntegral x) B.ColWidthDefault VArray x -> pure $ normalizeWidths $ map toWidth (V.toList x) VNone -> pure [B.ColWidthDefault] _ -> fail $ "Could not determine number of columns: " <> show columns let numcols = length widths align <- getField "align" fields let toAlign (VAlignment (Just horiz) _) = case horiz of HorizStart -> B.AlignLeft HorizLeft -> B.AlignLeft HorizEnd -> B.AlignRight HorizRight -> B.AlignRight HorizCenter -> B.AlignCenter toAlign _ = B.AlignDefault aligns <- case align of VAlignment {} -> pure $ replicate numcols (toAlign align) VArray v -> pure $ map toAlign (V.toList v) VFunction _ _ f -> do mapM ( \colnum -> case applyPureFunction f [VInteger colnum, VInteger 0] of Success x -> pure $ toAlign x Failure e -> fail e ) [0 .. (fromIntegral numcols - 1)] _ -> pure $ replicate numcols B.AlignDefault let colspecs = zip (aligns ++ repeat B.AlignDefault) widths let rows = map (B.Row B.nullAttr) $ chunks numcols $ map ( B.Cell B.nullAttr B.AlignDefault (B.RowSpan 1) (B.ColSpan 1) . B.toList ) children pure $ B.tableWith (fromMaybe "" mbident, [], []) (B.Caption mempty mempty) colspecs (B.TableHead B.nullAttr []) [B.TableBody B.nullAttr 0 [] rows] (B.TableFoot B.nullAttr []) Elt "table" pos fields -> handleBlock (Elt "grid" pos fields) Elt "figure" _ fields -> do body <- getField "body" fields >>= pWithContents pBlocks (mbCaption :: Maybe (Seq Content)) <- getField "caption" fields (caption :: B.Blocks) <- maybe mempty (pWithContents pBlocks) mbCaption pure $ case B.toList body of [B.Table attr _ colspecs thead tbodies tfoot] -> B.singleton (B.Table attr (B.Caption Nothing (B.toList caption)) colspecs thead tbodies tfoot) _ -> B.figureWith (fromMaybe "" mbident, [], []) (B.Caption Nothing (B.toList caption)) body Elt "line" _ fields | isNothing ( M.lookup "start" fields >> M.lookup "end" fields >> M.lookup "angle" fields ) -> do pure $ B.horizontalRule Elt "numbering" _ fields -> do numStyle <- getField "numbering" fields (nums :: V.Vector Integer) <- getField "numbers" fields let toText v = fromMaybe "" $ fromVal v let toNum n = case numStyle of VString t -> formatNumber t (fromIntegral n) VFunction _ _ f -> case applyPureFunction f [VInteger n] of Success x -> toText x Failure _ -> "?" _ -> "?" pure $ B.plain . B.text . mconcat . map toNum $ V.toList nums Elt "footnote.entry" _ fields -> getField "body" fields >>= pWithContents pBlocks Elt (Identifier tname) _ _ -> do warn ("Skipping unknown block element " <> tname) pure mempty pPara :: PandocMonad m => P m B.Blocks pPara = B.para . B.trimInlines . mconcat <$> (many1 pInline <* optional pParBreak) pParBreak :: PandocMonad m => P m () pParBreak = void $ pTok ( \case Elt "parbreak" _ _ -> True _ -> False ) isInline :: Content -> Bool isInline (Lab {}) = True isInline (Txt {}) = True isInline x = not (isBlock x) isBlock :: Content -> Bool isBlock (Txt {}) = False isBlock (Lab {}) = True isBlock (Elt name _ fields) = case name of "align" -> True "bibliography" -> True "block" -> True "circle" -> True "colbreak" -> True "columns" -> True "csv" -> True "ellipse" -> True "enum" -> True "enum.item" -> True "figure" -> True "grid" -> True "heading" -> True "json" -> True "line" -> True "list" -> True "list.item" -> True "numbering" -> True "footnote.entry" -> True "outline" -> True "page" -> True "pagebreak" -> True "par" -> True "parbreak" -> True "place" -> True "polygon" -> True "raw" -> M.lookup "block" fields == Just (VBoolean True) "read" -> True "rect" -> True "square" -> True "stack" -> True "table" -> True "terms" -> True "terms.item" -> True "toml" -> True "v" -> True "xml" -> True "yaml" -> True _ -> False pWithContents :: PandocMonad m => P m a -> Seq Content -> P m a pWithContents pa cs = do inp <- getInput setInput $ F.toList cs res <- pa setInput inp pure res pInlines :: PandocMonad m => P m B.Inlines pInlines = mconcat <$> many pInline pInline :: PandocMonad m => P m B.Inlines pInline = pTok isInline >>= handleInline handleInline :: PandocMonad m => Content -> P m B.Inlines handleInline tok = case tok of Txt t -> pure $ B.text t Lab name -> pure $ B.spanWith (name, [], []) mempty Elt "ref" _ fields -> do VLabel target <- getField "target" fields supplement' <- getField "supplement" fields supplement <- case supplement' of VAuto -> -- TODO for now, until we can locate the element pure $ B.text ("[" <> target <> "]") VContent cs -> pWithContents pInlines cs VFunction _ _ _f -> -- TODO for now, until we can locate the element pure $ B.text ("[" <> target <> "]") _ -> pure mempty pure $ B.linkWith ("", ["ref"], []) ("#" <> target) "" supplement Elt "linebreak" _ _ -> pure B.linebreak Elt "text" _ fields -> do body <- getField "body" fields (mbweight :: Maybe Text) <- getField "weight" fields case mbweight of Just "bold" -> B.strong <$> pWithContents pInlines body _ -> pWithContents pInlines body Elt "raw" _ fields -> B.code <$> getField "text" fields Elt "footnote" _ fields -> B.note <$> (getField "body" fields >>= pWithContents pBlocks) Elt "cite" _ fields -> do keys <- V.toList <$> getField "keys" fields let toCitation key = B.Citation { B.citationId = key, B.citationPrefix = mempty, B.citationSuffix = mempty, B.citationMode = B.NormalCitation, B.citationNoteNum = 0, B.citationHash = 0 } let citations = map toCitation keys pure $ B.cite citations (B.text $ "[" <> T.intercalate "," keys <> "]") Elt "lower" _ fields -> do body <- getField "text" fields walk (modString T.toLower) <$> pWithContents pInlines body Elt "upper" _ fields -> do body <- getField "text" fields walk (modString T.toUpper) <$> pWithContents pInlines body Elt "emph" _ fields -> do body <- getField "body" fields B.emph <$> pWithContents pInlines body Elt "strong" _ fields -> do body <- getField "body" fields B.strong <$> pWithContents pInlines body Elt "sub" _ fields -> do body <- getField "body" fields B.subscript <$> pWithContents pInlines body Elt "super" _ fields -> do body <- getField "body" fields B.superscript <$> pWithContents pInlines body Elt "strike" _ fields -> do body <- getField "body" fields B.strikeout <$> pWithContents pInlines body Elt "smallcaps" _ fields -> do body <- getField "body" fields B.smallcaps <$> pWithContents pInlines body Elt "underline" _ fields -> do body <- getField "body" fields B.underline <$> pWithContents pInlines body Elt "link" _ fields -> do dest <- getField "dest" fields src <- case dest of VString t -> pure t VLabel t -> pure $ "#" <> t VDict _ -> do warn "Unable to link to location, linking to #" pure "#" _ -> fail $ "Expected string or label for dest" body <- getField "body" fields description <- if null body then pure $ B.text $ if "mailto:" `T.isPrefixOf` src then T.drop 7 src else if "tel:" `T.isPrefixOf` src then T.drop 4 src else src else pWithContents pInlines body pure $ B.link src "" description Elt "image" _ fields -> do path <- getField "path" fields alt <- (B.text <$> getField "alt" fields) `mplus` pure mempty (mbwidth :: Maybe Text) <- fmap (renderLength False) <$> getField "width" fields (mbheight :: Maybe Text) <- fmap (renderLength False) <$> getField "height" fields let attr = ( "", [], maybe [] (\x -> [("width", x)]) mbwidth ++ maybe [] (\x -> [("height", x)]) mbheight ) pure $ B.imageWith attr path "" alt Elt "box" _ fields -> do body <- getField "body" fields B.spanWith ("", ["box"], []) <$> pWithContents pInlines body Elt "h" _ fields -> do amount <- getField "amount" fields `mplus` pure (LExact 1 LEm) let em = case amount of LExact x LEm -> toRational x _ -> case amount <> LExact 0 LPt of -- force to Pt LExact x LPt -> toRational x / 12 _ -> 1 / 3 -- guess! pure $ B.text $ getSpaceChars em Elt "style" _ fields -> do Function f <- getField "func" fields case applyPureFunction (Function f) [VStyles] of Success (VContent cs) -> pWithContents pInlines cs Success x -> pure $ B.text $ repr x Failure e -> fail e Elt "math.equation" _ fields -> do body <- getField "body" fields display <- getField "block" fields (if display then B.displayMath else B.math) . writeTeX <$> pMathMany body Elt (Identifier tname) _ _ | "math." `T.isPrefixOf` tname -> B.math . writeTeX <$> pMathMany (Seq.singleton tok) Elt (Identifier tname) _ _ -> do warn ("Skipping unknown inline element " <> tname) pure mempty modString :: (Text -> Text) -> B.Inline -> B.Inline modString f (B.Str t) = B.Str (f t) modString _ x = x pandoc-3.1.3/src/Text/Pandoc/Readers/Typst/0000755000000000000000000000000007346545000016602 5ustar0000000000000000pandoc-3.1.3/src/Text/Pandoc/Readers/Typst/Math.hs0000644000000000000000000003377007346545000020041 0ustar0000000000000000{-# LANGUAGE OverloadedLists #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} module Text.Pandoc.Readers.Typst.Math ( pMathMany ) where import Control.Monad (MonadPlus (mplus)) import Data.Char (isAlphaNum, isDigit) import Data.List (intercalate) import qualified Data.Map as M import Data.Maybe (fromMaybe) import Data.Sequence (Seq) import qualified Data.Sequence as Seq import Data.Text (Text) import qualified Data.Text as T import qualified Data.Vector as V import Text.Pandoc.Parsing ( many ) import Text.Pandoc.Class ( PandocMonad ) import Text.TeXMath.Types ( Alignment (..), Exp (..), FractionType (..), TeXSymbolType (..), TextType (..), ) import Text.TeXMath.Unicode.ToTeX (getSymbolType) import Text.Pandoc.Readers.Typst.Parsing ( P, pTok, warn, pWithContents, getField, chunks ) import Typst.Types -- import Debug.Trace withGroup :: [Exp] -> Exp withGroup [x] = x withGroup xs = EGrouped xs data AttachmentStyle = Limits | Scripts deriving (Eq, Show) getAttachmentStyle :: PandocMonad m => M.Map Identifier Val -> P m (Maybe AttachmentStyle) getAttachmentStyle fields = do (base :: Seq Content) <- getField "base" fields case base of [Elt "limits" _ _] -> pure $ Just Limits [Elt "scripts" _ _] -> pure $ Just Scripts _ -> pure Nothing pMath :: PandocMonad m => P m Exp pMath = pTok (const True) >>= handleMath handleMath :: PandocMonad m => Content -> P m Exp handleMath tok = case tok of Lab t -> do warn ("skipping label " <> t) pure (EGrouped []) Txt t | T.any isDigit t -> pure $ ENumber t | T.length t == 1 -> case T.unpack t of [c] | not (isAlphaNum c) -> pure $ ESymbol (getSymbolType c) t _ -> pure $ EIdentifier t | otherwise -> pure $ EText TextNormal t Elt "math.dif" _ _ -> pure $ EIdentifier "d" Elt "math.Dif" _ _ -> pure $ EIdentifier "D" Elt "math.equation" _ fields -> getField "body" fields >>= pMathGrouped Elt "text" _ fields -> do body <- getField "body" fields (mbweight :: Maybe Text) <- getField "weight" fields case mbweight of Just "bold" -> EStyled TextBold <$> pMathMany body _ -> pMathGrouped body Elt "math.op" _ fields -> EMathOperator <$> getField "text" fields Elt "math.frac" _ fields -> do num <- getField "num" fields >>= pMathGrouped denom <- getField "denom" fields >>= pMathGrouped pure $ EFraction NormalFrac num denom Elt "math.accent" _ fields -> do base <- getField "base" fields >>= pMathGrouped acc <- getField "accent" fields >>= pMathGrouped let acc' = case acc of ESymbol _ t -> ESymbol Accent t _ -> acc pure $ EOver False base acc' Elt "math.attach" _ fields -> do attachmentStyle <- getAttachmentStyle fields base <- getField "base" fields >>= pMathGrouped t' <- getField "t" fields b' <- getField "b" fields tr' <- getField "tr" fields tl' <- getField "tl" fields br' <- getField "br" fields bl' <- getField "bl" fields let limits = attachmentStyle == Just Limits let (mbt, mbtr) = case (t', tr') of (Just top, Just topright) -> (Just top, Just topright) (Just top, Nothing) | limits -> (Just top, Nothing) | otherwise -> (Nothing, Just top) (Nothing, Just topright) -> (Nothing, Just topright) (Nothing, Nothing) -> (Nothing, Nothing) let (mbb, mbbr) = case (b', br') of (Just bot, Just botright) -> (Just bot, Just botright) (Just bot, Nothing) | limits -> (Just bot, Nothing) | otherwise -> (Nothing, Just bot) (Nothing, Just topright) -> (Nothing, Just topright) (Nothing, Nothing) -> (Nothing, Nothing) let dummy = EGrouped [] let addPrefix x = case (tl', bl') of (Nothing, Nothing) -> pure x (Just top, Nothing) -> do res <- ESuper dummy <$> pMathGrouped top pure $ EGrouped [res, x] (Nothing, Just bot) -> do res <- ESub dummy <$> pMathGrouped bot pure $ EGrouped [res, x] (Just top, Just bot) -> do res <- ESubsup dummy <$> pMathGrouped bot <*> pMathGrouped top pure $ EGrouped [res, x] base' <- case (mbtr, mbbr) of (Nothing, Nothing) -> pure base (Nothing, Just br) -> ESub base <$> pMathGrouped br (Just tr, Nothing) -> ESuper base <$> pMathGrouped tr (Just tr, Just br) -> ESubsup base <$> pMathGrouped br <*> pMathGrouped tr suffix <- case (mbt, mbb) of (Nothing, Nothing) -> pure base' (Nothing, Just bot) -> EUnder False base' <$> pMathGrouped bot (Just top, Nothing) -> EOver False base' <$> pMathGrouped top (Just top, Just bot) -> EUnderover False base' <$> pMathGrouped bot <*> pMathGrouped top addPrefix suffix Elt "math.serif" _ fields -> EStyled TextNormal <$> (getField "body" fields >>= pMathMany) Elt "math.sans" _ fields -> EStyled TextSansSerif <$> (getField "body" fields >>= pMathMany) Elt "math.frak" _ fields -> EStyled TextFraktur <$> (getField "body" fields >>= pMathMany) Elt "math.mono" _ fields -> EStyled TextMonospace <$> (getField "body" fields >>= pMathMany) Elt "math.cal" _ fields -> EStyled TextScript <$> (getField "body" fields >>= pMathMany) Elt "math.bb" _ fields -> EStyled TextDoubleStruck <$> (getField "body" fields >>= pMathMany) Elt "math.upright" _ fields -> EStyled TextNormal <$> (getField "body" fields >>= pMathMany) Elt "math.bold" _ fields -> EStyled TextBold <$> (getField "body" fields >>= pMathMany) Elt "math.italic" _ fields -> EStyled TextItalic <$> (getField "body" fields >>= pMathMany) Elt "math.underline" _ fields -> EUnder False <$> (getField "body" fields >>= pMathGrouped) <*> pure (ESymbol TUnder "_") Elt "math.overline" _ fields -> EUnder False <$> (getField "body" fields >>= pMathGrouped) <*> pure (ESymbol TOver "\175") Elt "math.underbrace" _ fields -> do mbAnn <- getField "annotation" fields body <- getField "body" fields >>= pMathGrouped let x = EUnder False body (ESymbol TUnder "\9183") case mbAnn of Nothing -> pure x Just ann -> EUnder False x <$> pMathGrouped ann Elt "math.overbrace" _ fields -> do mbAnn <- getField "annotation" fields body <- getField "body" fields >>= pMathGrouped let x = EOver False body (ESymbol TOver "\9182") case mbAnn of Nothing -> pure x Just ann -> EOver False x <$> pMathGrouped ann Elt "math.underbracket" _ fields -> do mbAnn <- getField "annotation" fields body <- getField "body" fields >>= pMathGrouped let x = EUnder False body (ESymbol TUnder "\9141") case mbAnn of Nothing -> pure x Just ann -> EUnder False x <$> pMathGrouped ann Elt "math.overbracket" _ fields -> do mbAnn <- getField "annotation" fields body <- getField "body" fields >>= pMathGrouped let x = EOver False body (ESymbol TOver "\9140") case mbAnn of Nothing -> pure x Just ann -> EOver False x <$> pMathGrouped ann Elt "math.scripts" _ fields -> getField "body" fields >>= pMathGrouped Elt "math.limits" _ fields -> getField "body" fields >>= pMathGrouped Elt "math.root" _ fields -> do mbindex <- getField "index" fields radicand <- getField "radicand" fields >>= pMathGrouped case mbindex of Nothing -> pure $ ESqrt radicand Just index -> do index' <- pMathGrouped index pure $ ERoot index' radicand Elt "math.sqrt" _ fields -> ESqrt <$> (getField "radicand" fields >>= pMathGrouped) Elt "math.abs" _ fields -> do body <- getField "body" fields >>= pMathGrouped pure $ EDelimited "|" "|" [Right body] Elt "math.floor" _ fields -> do body <- getField "body" fields >>= pMathGrouped pure $ EDelimited "\8970" "\8971" [Right body] Elt "math.ceil" _ fields -> do body <- getField "body" fields >>= pMathGrouped pure $ EDelimited "\8968" "\8969" [Right body] Elt "math.norm" _ fields -> do body <- getField "body" fields >>= pMathGrouped pure $ EDelimited "\8741" "\8741" [Right body] Elt "math.round" _ fields -> do body <- getField "body" fields >>= pMathGrouped pure $ EDelimited "\8970" "\8969" [Right body] Elt "math.lr" _ fields -> do bodyparts <- getField "body" fields >>= mapM pMathMany . V.toList let rawbody = intercalate [ESymbol Pun ","] bodyparts let (op, rest) = case rawbody of (ESymbol _ t : xs) -> (t, xs) _ -> ("", rawbody) let (body, cl) = case reverse rest of (ESymbol _ t : _) -> (map Right (init rest), t) _ -> (map Right rest, "") pure $ EDelimited op cl body Elt "math.binom" _ fields -> do up <- getField "upper" fields >>= pMathGrouped low <- getField "lower" fields >>= pMathGrouped pure $ EDelimited "(" ")" [Right (EFraction NoLineFrac up low)] Elt "math.cases" _ fields -> do (delim :: Maybe Text) <- getField "delim" fields (children :: [Seq Content]) <- map valToContent . V.toList <$> getField "children" fields let isAlignPoint (Elt "math.alignpoint" _ _) = True isAlignPoint _ = False let formatRow vs = case Seq.breakl isAlignPoint vs of (xs, ys) -> do case Seq.viewl ys of _ Seq.:< rest -> do xs' <- pMathMany xs ys' <- pMathMany rest pure [xs', ys'] _ -> (: []) <$> pMathMany vs rows <- mapM formatRow children pure $ EDelimited (fromMaybe "{" delim) "" [Right (EArray [AlignLeft, AlignLeft] rows)] Elt "math.vec" _ fields -> do (op, cl) <- arrayDelims fields rows <- getField "children" fields >>= mapM (fmap (: []) . pMathMany) . V.toList pure $ EDelimited op cl [Right (EArray [AlignCenter] rows)] Elt "math.mat" _ fields -> do (op, cl) <- arrayDelims fields let formatCell x = do let content = valToContent x let align = case Seq.viewl content of Elt "math.alignpoint" _ _ Seq.:< _ -> AlignLeft _ -> case Seq.viewr content of _ Seq.:> Elt "math.alignpoint" _ _ -> AlignRight _ -> AlignCenter exp' <- pMathMany content pure (align, exp') let formatRow (VArray vs) = mapM formatCell (V.toList vs) formatRow _ = fail "mat expected array" (rawrows :: V.Vector Val) <- getField "rows" fields rows <- mapM formatRow (V.toList rawrows) let aligns = case rows of [] -> [] (r : _) -> map fst r pure $ EDelimited op cl [Right (EArray aligns (map (map snd) rows))] Elt "hide" _ fields -> do EPhantom <$> (getField "body" fields >>= pMathGrouped) Elt "h" _ fields -> do amount <- getField "amount" fields let em = case amount of LExact x LEm -> toRational x _ -> case amount <> LExact 0 LPt of -- force to Pt LExact x LPt -> toRational x / 12 _ -> 1 / 3 -- guess! pure $ ESpace em Elt "grid" _ fields -> do children <- getField "children" fields >>= mapM pMathMany . V.toList (columns :: Val) <- getField "columns" fields numcols <- case columns of VInteger x -> pure $ fromIntegral x VArray x -> pure $ V.length x VNone -> pure 1 _ -> fail $ "Could not determine number of columns: " <> show columns let rows = chunks numcols children pure $ EArray (replicate numcols AlignLeft) rows Elt "table" pos fields -> handleMath (Elt "grid" pos fields) Elt "link" _ fields -> do body <- getField "body" fields warn "Hyperlinks not supported in math" pMathGrouped body Elt (Identifier name) _ fields -> do body <- getField "body" fields `mplus` pure mempty warn ("Ignoring unsupported " <> name) pMathGrouped body arrayDelims :: PandocMonad m => M.Map Identifier Val -> P m (Text, Text) arrayDelims fields = do (mbdelim :: Maybe Text) <- getField "delim" fields pure $ case mbdelim of Just "(" -> ("(", ")") Just "[" -> ("[", "]") Just "{" -> ("{", "}") Just "|" -> ("|", "|") Just "||" -> ("\8741", "\8741") _ -> ("(", ")") pMathMany :: PandocMonad m => Seq Content -> P m [Exp] pMathMany cs = do -- check for "alignpoint" and "linebreak" elements -- and use an array structure for alignment let lns = splitOnLinebreaks cs case lns of [] -> pure [] [ln] | not (any isAlignpoint ln) -> pWithContents (many pMath) ln _ -> do rows <- mapM (mapM (pWithContents (many pMath)) . splitOnAlignpoints) lns let numcols = maximum $ map length rows let cols = take numcols $ AlignRight : cycle [AlignLeft, AlignRight] pure [EArray cols rows] pMathGrouped :: PandocMonad m => Seq Content -> P m Exp pMathGrouped = fmap withGroup . pMathMany splitOnLinebreaks :: Seq Content -> [Seq Content] splitOnLinebreaks xs = if Seq.null bs then if null as then [] else [as] else as : splitOnLinebreaks (Seq.drop 1 bs) where (as, bs) = Seq.breakl isLinebreak xs isLinebreak (Elt "linebreak" _ _) = True isLinebreak _ = False splitOnAlignpoints :: Seq Content -> [Seq Content] splitOnAlignpoints xs = if Seq.null bs then if null as then [] else [as] else as : splitOnAlignpoints (Seq.drop 1 bs) where (as, bs) = Seq.breakl isAlignpoint xs isAlignpoint :: Content -> Bool isAlignpoint (Elt "math.alignpoint" _ _) = True isAlignpoint _ = False pandoc-3.1.3/src/Text/Pandoc/Readers/Typst/Parsing.hs0000644000000000000000000000317207346545000020544 0ustar0000000000000000{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedLists #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} module Text.Pandoc.Readers.Typst.Parsing ( P, pTok, pWithContents, warn, getField, chunks, ) where import Control.Monad (MonadPlus) import Control.Monad.Reader (lift) import qualified Data.Foldable as F import qualified Data.Map as M import Data.Maybe (fromMaybe) import Data.Sequence (Seq) import Data.Text (Text) import Text.Parsec ( ParsecT, getInput, setInput, tokenPrim ) import Typst.Types ( Identifier, Content(Elt), FromVal(..), Val(VNone) ) import Text.Pandoc.Class.PandocMonad ( PandocMonad, report ) import Text.Pandoc.Logging (LogMessage(..)) type P m a = ParsecT [Content] () m a pTok :: PandocMonad m => (Content -> Bool) -> P m Content pTok f = tokenPrim show showPos match where showPos _oldpos (Elt _ (Just pos) _) _ = pos showPos oldpos _ _ = oldpos match x | f x = Just x match _ = Nothing warn :: PandocMonad m => Text -> P m () warn msg = lift $ report $ IgnoredElement msg pWithContents :: PandocMonad m => P m a -> Seq Content -> P m a pWithContents pa cs = do inp <- getInput setInput $ F.toList cs res <- pa setInput inp pure res -- | Get field value from element, defaulting to VNone. getField :: (MonadFail m, MonadPlus m, FromVal a) => Identifier -> M.Map Identifier Val -> m a getField name fields = fromVal $ fromMaybe VNone $ M.lookup name fields -- | Split a list into chunks of a given size. The last chunk may be smaller. chunks :: Int -> [a] -> [[a]] chunks _ [] = [] chunks n xs = take n xs : chunks n (drop n xs) pandoc-3.1.3/src/Text/Pandoc/Readers/Vimwiki.hs0000644000000000000000000005364707346545000017451 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE CPP #-} {- | Module : Text.Pandoc.Readers.Vimwiki Copyright : Copyright (C) 2017-2020 Yuchen Pei License : GNU GPL, version 2 or above Maintainer : Yuchen Pei Stability : alpha Portability : portable Conversion of vimwiki text to 'Pandoc' document. -} {-- [X]: implemented [O]: not implemented * block parsers: * [X] header * [X] hrule * [X] comment * [X] blockquote * [X] preformatted -- using codeblock * [X] displaymath * [X] bulletlist / orderedlist * [X] todo lists -- using span. * [X] table * [X] centered table -- using div * [O] colspan and rowspan -- see issue #1024 * [X] paragraph * [X] definition list * inline parsers: * [X] bareURL * [X] strong * [X] emph * [X] strikeout * [X] code * [X] link * [X] image * [X] inline math * [X] tag * [X] sub- and super-scripts * misc: * [X] `TODO:` mark * [X] metadata placeholders: %title and %date * [O] control placeholders: %template and %nohtml -- ignored --} module Text.Pandoc.Readers.Vimwiki ( readVimwiki ) where import Control.Monad (guard) import Control.Monad.Except (throwError) import Data.Default import Data.List (isInfixOf) import Data.Maybe import Data.Text (Text) import qualified Data.Text as T import Text.Pandoc.Builder (Blocks, Inlines, fromList, toList, trimInlines) import qualified Text.Pandoc.Builder as B (blockQuote, bulletList, code, codeBlockWith, definitionList, displayMath, divWith, emph, headerWith, horizontalRule, image, imageWith, link, math, orderedList, para, plain, setMeta, simpleTable, softbreak, space, spanWith, str, strikeout, strong, subscript, superscript) import Text.Pandoc.Class.PandocMonad (PandocMonad (..)) import Text.Pandoc.Definition (Attr, Block (BulletList, OrderedList), Inline (Space), ListNumberDelim (..), ListNumberStyle (..), Pandoc (..), nullMeta) import Text.Pandoc.Options (ReaderOptions) import Text.Pandoc.Parsing (ParserState, ParsecT, blanklines, emailAddress, many1Till, orderedListMarker, readWithM, registerHeader, spaceChar, stateMeta, stateOptions, uri, manyTillChar, manyChar, textStr, many1Char, countChar, many1TillChar, alphaNum, anyChar, char, newline, noneOf, oneOf, space, spaces, string, choice, eof, lookAhead, many1, many, manyTill, notFollowedBy, skipMany1, try, option, updateState, getState, (<|>)) import Text.Pandoc.Sources (ToSources(..), Sources) import Text.Pandoc.Shared (splitTextBy, stringify, stripFirstAndLast, tshow) import Text.Pandoc.URI (isURI) readVimwiki :: (PandocMonad m, ToSources a) => ReaderOptions -> a -> m Pandoc readVimwiki opts s = do let sources = toSources s res <- readWithM parseVimwiki def{ stateOptions = opts } sources case res of Left e -> throwError e Right result -> return result type VwParser = ParsecT Sources ParserState -- constants specialChars :: [Char] specialChars = "=*-#[]_~{}`$|:%^," spaceChars :: [Char] spaceChars = " \t\n" -- main parser parseVimwiki :: PandocMonad m => VwParser m Pandoc parseVimwiki = do bs <- mconcat <$> many block spaces eof st <- getState let meta = stateMeta st return $ Pandoc meta (toList bs) -- block parser block :: PandocMonad m => VwParser m Blocks block = do res <- choice [ mempty <$ blanklines , header , hrule , mempty <$ comment , mixedList , preformatted , displayMath , table , mempty <$ placeholder , blockQuote , definitionList , para ] trace (T.take 60 $ tshow $ toList res) return res blockML :: PandocMonad m => VwParser m Blocks blockML = choice [preformatted, displayMath, table] header :: PandocMonad m => VwParser m Blocks header = try $ do sp <- many spaceChar eqs <- many1 (char '=') spaceChar let lev = length eqs guard $ lev <= 6 contents <- trimInlines . mconcat <$> manyTill inline (try $ spaceChar >> string eqs >> many spaceChar >> newline) attr <- registerHeader (makeId contents, ["justcenter" | not (null sp)], []) contents return $ B.headerWith attr lev contents para :: PandocMonad m => VwParser m Blocks para = try $ do contents <- trimInlines . mconcat <$> many1 inline if all (==Space) (toList contents) then return mempty else return $ B.para contents hrule :: PandocMonad m => VwParser m Blocks hrule = try $ B.horizontalRule <$ (string "----" >> many (char '-') >> newline) comment :: PandocMonad m => VwParser m () comment = try $ do many spaceChar >> string "%%" >> many (noneOf "\n") return () blockQuote :: PandocMonad m => VwParser m Blocks blockQuote = try $ do string " " contents <- trimInlines . mconcat <$> many1 inlineBQ if all (==Space) (toList contents) then return mempty else return $ B.blockQuote $ B.plain contents definitionList :: PandocMonad m => VwParser m Blocks definitionList = try $ B.definitionList <$> many1 (dlItemWithDT <|> dlItemWithoutDT) dlItemWithDT :: PandocMonad m => VwParser m (Inlines, [Blocks]) dlItemWithDT = do dt <- definitionTerm dds <- many definitionDef return (dt, dds) dlItemWithoutDT :: PandocMonad m => VwParser m (Inlines, [Blocks]) dlItemWithoutDT = do dds <- many1 definitionDef return (mempty, dds) definitionDef :: PandocMonad m => VwParser m Blocks definitionDef = try $ notFollowedBy definitionTerm >> many spaceChar >> (definitionDef1 <|> definitionDef2) definitionDef1 :: PandocMonad m => VwParser m Blocks definitionDef1 = try $ mempty <$ defMarkerE definitionDef2 :: PandocMonad m => VwParser m Blocks definitionDef2 = try $ B.plain <$> (defMarkerM >> (trimInlines . mconcat <$> many inline') <* newline) definitionTerm :: PandocMonad m => VwParser m Inlines definitionTerm = try $ do x <- definitionTerm1 <|> definitionTerm2 guard (stringify x /= "") return x definitionTerm1 :: PandocMonad m => VwParser m Inlines definitionTerm1 = try $ trimInlines . mconcat <$> manyTill inline' (try defMarkerE) definitionTerm2 :: PandocMonad m => VwParser m Inlines definitionTerm2 = try $ trimInlines . mconcat <$> manyTill inline' (try $ lookAhead (defMarkerM >> notFollowedBy hasDefMarkerM)) defMarkerM :: PandocMonad m => VwParser m Char defMarkerM = string "::" >> spaceChar defMarkerE :: PandocMonad m => VwParser m Char defMarkerE = string "::" >> newline hasDefMarkerM :: PandocMonad m => VwParser m Text hasDefMarkerM = manyTillChar (noneOf "\n") (try defMarkerM) preformatted :: PandocMonad m => VwParser m Blocks preformatted = try $ do many spaceChar >> string "{{{" attrText <- manyChar (noneOf "\n") lookAhead newline contents <- manyTillChar anyChar (try (char '\n' >> many spaceChar >> string "}}}" >> many spaceChar >> newline)) if (contents /= "") && (T.head contents == '\n') then return $ B.codeBlockWith (makeAttr attrText) (T.tail contents) else return $ B.codeBlockWith (makeAttr attrText) contents makeAttr :: Text -> Attr makeAttr s = let xs = splitTextBy (`elem` (" \t" :: String)) s in ("", syntax xs, mapMaybe nameValue xs) syntax :: [Text] -> [Text] syntax (s:_) | not $ T.isInfixOf "=" s = [s] syntax _ = [] nameValue :: Text -> Maybe (Text, Text) nameValue s = let t = splitTextBy (== '=') s in if length t /= 2 then Nothing else let (a, b) = (head t, last t) in if (T.length b < 2) || ((T.head b, T.last b) /= ('"', '"')) then Nothing else Just (a, stripFirstAndLast b) displayMath :: PandocMonad m => VwParser m Blocks displayMath = try $ do many spaceChar >> string "{{$" mathTag <- option "" mathTagParser many space contents <- manyTillChar anyChar (try (char '\n' >> many spaceChar >> string "}}$" >> many spaceChar >> newline)) let contentsWithTags | mathTag == "" = contents | otherwise = "\\begin{" <> mathTag <> "}\n" <> contents <> "\n\\end{" <> mathTag <> "}" return $ B.para $ B.displayMath contentsWithTags mathTagLaTeX :: Text -> Text mathTagLaTeX s = case s of "equation" -> "" "equation*" -> "" "gather" -> "gathered" "gather*" -> "gathered" "multline" -> "gathered" "multline*" -> "gathered" "eqnarray" -> "aligned" "eqnarray*" -> "aligned" "align" -> "aligned" "align*" -> "aligned" "alignat" -> "aligned" "alignat*" -> "aligned" _ -> s mixedList :: PandocMonad m => VwParser m Blocks mixedList = try $ do (bl, _) <- mixedList' (-1) return $ head bl mixedList' :: PandocMonad m => Int -> VwParser m ([Blocks], Int) mixedList' prevInd = do (curInd, builder) <- option (-1, "na") (lookAhead listStart) if curInd < prevInd then return ([], curInd) else do listStart curLine <- listItemContent let listBuilder = if builder == "ul" then B.bulletList else B.orderedList (subList, lowInd) <- mixedList' curInd if lowInd >= curInd then do (sameIndList, endInd) <- mixedList' lowInd let curList = combineList curLine subList ++ sameIndList if curInd > prevInd then return ([listBuilder curList], endInd) else return (curList, endInd) else do let (curList, endInd) = (combineList curLine subList, lowInd) if curInd > prevInd then return ([listBuilder curList], endInd) else return (curList, endInd) plainInlineML' :: PandocMonad m => Inlines -> VwParser m Blocks plainInlineML' w = do xs <- many inlineML newline return $ B.plain $ trimInlines $ mconcat $ w:xs plainInlineML :: PandocMonad m => VwParser m Blocks plainInlineML = notFollowedBy listStart >> spaceChar >> plainInlineML' mempty listItemContent :: PandocMonad m => VwParser m Blocks listItemContent = try $ do w <- option mempty listTodoMarker x <- plainInlineML' w y <- many blocksThenInline z <- many blockML return $ mconcat $ x:y ++ z blocksThenInline :: PandocMonad m => VwParser m Blocks blocksThenInline = try $ do y <- many1 blockML x <- plainInlineML return $ mconcat $ y ++ [x] listTodoMarker :: PandocMonad m => VwParser m Inlines listTodoMarker = try $ do x <- (many spaceChar >> char '[') *> oneOf " .oOX" <* (char ']' >> spaceChar) return $ makeListMarkerSpan x makeListMarkerSpan :: Char -> Inlines makeListMarkerSpan x = let cl = case x of ' ' -> "done0" '.' -> "done1" 'o' -> "done2" 'O' -> "done3" 'X' -> "done4" _ -> "" in B.spanWith ("", [cl], []) mempty combineList :: Blocks -> [Blocks] -> [Blocks] combineList x [y] = case toList y of [BulletList z] -> [fromList $ toList x ++ [BulletList z]] [OrderedList attr z] -> [fromList $ toList x ++ [OrderedList attr z]] _ -> x:[y] combineList x xs = x:xs listStart :: PandocMonad m => VwParser m (Int, Text) listStart = try $ do s <- many spaceChar listType <- bulletListMarkers <|> orderedListMarkers spaceChar return (length s, listType) bulletListMarkers :: PandocMonad m => VwParser m Text bulletListMarkers = "ul" <$ (char '*' <|> char '-') orderedListMarkers :: PandocMonad m => VwParser m Text orderedListMarkers = ("ol" <$ choice (orderedListMarker Decimal Period:(($ OneParen) . orderedListMarker <$> [Decimal, LowerRoman, UpperRoman, LowerAlpha, UpperAlpha]))) <|> ("ol" <$ char '#') --many need trimInlines table :: PandocMonad m => VwParser m Blocks table = try $ do indent <- lookAhead (many spaceChar) (th, trs) <- table1 <|> table2 let tab = B.simpleTable th trs if indent == "" then return tab else return $ B.divWith ("", ["center"], []) tab -- table with header table1 :: PandocMonad m => VwParser m ([Blocks], [[Blocks]]) table1 = try $ do th <- tableRow many1 tableHeaderSeparator trs <- many tableRow return (th, trs) -- headerless table table2 :: PandocMonad m => VwParser m ([Blocks], [[Blocks]]) table2 = try $ do trs <- many1 tableRow return (replicate (length $ head trs) mempty, trs) tableHeaderSeparator :: PandocMonad m => VwParser m () tableHeaderSeparator = try $ do many spaceChar >> char '|' >> many1 (many1 (char '-') >> char '|') >> many spaceChar >> newline return () tableRow :: PandocMonad m => VwParser m [Blocks] tableRow = try $ do many spaceChar >> char '|' s <- lookAhead $ manyTill anyChar (try (char '|' >> many spaceChar >> newline)) guard $ not $ "||" `isInfixOf` ("|" ++ s ++ "|") many tableCell <* many spaceChar <* char '\n' tableCell :: PandocMonad m => VwParser m Blocks tableCell = try $ B.plain . trimInlines . mconcat <$> manyTill inline' (char '|') placeholder :: PandocMonad m => VwParser m () placeholder = try $ choice (ph <$> ["title", "date"]) <|> noHtmlPh <|> templatePh ph :: PandocMonad m => Text -> VwParser m () ph s = try $ do many spaceChar >> textStr (T.cons '%' s) >> spaceChar contents <- trimInlines . mconcat <$> manyTill inline (lookAhead newline) --use lookAhead because of placeholder in the whitespace parser let meta' = B.setMeta s contents nullMeta -- this order ensures that later values will be ignored in favor -- of earlier ones: updateState $ \st -> st { stateMeta = meta' <> stateMeta st } noHtmlPh :: PandocMonad m => VwParser m () noHtmlPh = try $ () <$ many spaceChar <* string "%nohtml" <* many spaceChar <* lookAhead newline templatePh :: PandocMonad m => VwParser m () templatePh = try $ () <$ many spaceChar <* string "%template" <* many (noneOf "\n") <* lookAhead newline -- inline parser inline :: PandocMonad m => VwParser m Inlines inline = choice $ whitespace endlineP:inlineList inlineList :: PandocMonad m => [VwParser m Inlines] inlineList = [ bareURL , todoMark , str , strong , emph , strikeout , code , link , image , inlineMath , tag , superscript , subscript , special ] -- inline parser without softbreaks or comment breaks inline' :: PandocMonad m => VwParser m Inlines inline' = choice $ whitespace':inlineList -- inline parser for blockquotes inlineBQ :: PandocMonad m => VwParser m Inlines inlineBQ = choice $ whitespace endlineBQ:inlineList -- inline parser for mixedlists inlineML :: PandocMonad m => VwParser m Inlines inlineML = choice $ whitespace endlineML:inlineList str :: PandocMonad m => VwParser m Inlines str = B.str <$> many1Char (noneOf $ spaceChars ++ specialChars) whitespace :: PandocMonad m => VwParser m () -> VwParser m Inlines whitespace endline = B.space <$ (skipMany1 spaceChar <|> try (newline >> (comment <|> placeholder))) <|> B.softbreak <$ endline whitespace' :: PandocMonad m => VwParser m Inlines whitespace' = B.space <$ skipMany1 spaceChar special :: PandocMonad m => VwParser m Inlines special = B.str <$> countChar 1 (oneOf specialChars) bareURL :: PandocMonad m => VwParser m Inlines bareURL = try $ do (orig, src) <- uri <|> emailAddress return $ B.link src "" (B.str orig) strong :: PandocMonad m => VwParser m Inlines strong = try $ do s <- lookAhead $ char '*' *> many1 (noneOf "*") <* char '*' guard $ (head s `notElem` spaceChars) && (last s `notElem` spaceChars) char '*' contents <- mconcat <$>manyTill inline' (char '*' >> notFollowedBy alphaNum) return $ B.spanWith (makeId contents, [], []) mempty <> B.strong contents makeId :: Inlines -> Text makeId i = T.concat (stringify <$> toList i) emph :: PandocMonad m => VwParser m Inlines emph = try $ do s <- lookAhead $ char '_' *> many1 (noneOf "_") <* char '_' guard $ (head s `notElem` spaceChars) && (last s `notElem` spaceChars) char '_' contents <- mconcat <$>manyTill inline' (char '_' >> notFollowedBy alphaNum) return $ B.emph contents strikeout :: PandocMonad m => VwParser m Inlines strikeout = try $ do string "~~" contents <- mconcat <$>many1Till inline' (string "~~") return $ B.strikeout contents code :: PandocMonad m => VwParser m Inlines code = try $ do char '`' contents <- many1TillChar (noneOf "\n") (char '`') return $ B.code contents superscript :: PandocMonad m => VwParser m Inlines superscript = try $ B.superscript . mconcat <$> (char '^' >> many1Till inline' (char '^')) subscript :: PandocMonad m => VwParser m Inlines subscript = try $ B.subscript . mconcat <$> (string ",," >> many1Till inline' (try $ string ",,")) link :: PandocMonad m => VwParser m Inlines link = try $ do string "[[" contents <- lookAhead $ manyTillChar anyChar (string "]]") if T.any (== '|') contents then do url <- manyTillChar anyChar $ char '|' lab <- mconcat <$> manyTill inline (string "]]") let tit = if isURI url then "" else "wikilink" return $ B.link (procLink url) tit lab else do manyTill anyChar (string "]]") -- not using try here because [[hell]o]] is not rendered as a link in vimwiki let tit = if isURI contents then "" else "wikilink" return $ B.link (procLink contents) tit (B.str contents) image :: PandocMonad m => VwParser m Inlines image = try $ do string "{{" contentText <- lookAhead $ manyTill (noneOf "\n") (try $ string "}}") images $ length $ filter (== '|') contentText images :: PandocMonad m => Int -> VwParser m Inlines images k | k == 0 = do imgurl <- manyTillChar anyChar (try $ string "}}") return $ B.image (procImgurl imgurl) "" (B.str "") | k == 1 = do imgurl <- manyTillChar anyChar (char '|') alt <- mconcat <$> manyTill inline (try $ string "}}") return $ B.image (procImgurl imgurl) "" alt | k == 2 = do imgurl <- manyTillChar anyChar (char '|') alt <- mconcat <$> manyTill inline (char '|') attrText <- manyTillChar anyChar (try $ string "}}") return $ B.imageWith (makeAttr attrText) (procImgurl imgurl) "" alt | otherwise = do imgurl <- manyTillChar anyChar (char '|') alt <- mconcat <$> manyTill inline (char '|') attrText <- manyTillChar anyChar (char '|') manyTill anyChar (try $ string "}}") return $ B.imageWith (makeAttr attrText) (procImgurl imgurl) "" alt procLink' :: Text -> Text procLink' s | T.take 6 s == "local:" = "file" <> T.drop 5 s | T.take 6 s == "diary:" = "diary/" <> T.drop 6 s | or ((`T.isPrefixOf` s) <$> [ "http:", "https:", "ftp:", "file:", "mailto:", "news:", "telnet:" ]) = s | s == "" = "" | T.last s == '/' = s | otherwise = s procLink :: Text -> Text procLink s = procLink' x <> y where (x, y) = T.break (=='#') s procImgurl :: Text -> Text procImgurl s = if T.take 6 s == "local:" then "file" <> T.drop 5 s else s inlineMath :: PandocMonad m => VwParser m Inlines inlineMath = try $ B.math <$ char '$' <*> many1TillChar (noneOf "\n") (char '$') tag :: PandocMonad m => VwParser m Inlines tag = try $ do char ':' s <- manyTillChar (noneOf spaceChars) (try (char ':' >> lookAhead space)) guard $ not $ "::" `T.isInfixOf` (":" <> s <> ":") let ss = splitTextBy (==':') s return $ mconcat $ makeTagSpan' (head ss):(makeTagSpan <$> tail ss) todoMark :: PandocMonad m => VwParser m Inlines todoMark = try $ do string "TODO:" return $ B.spanWith ("", ["todo"], []) (B.str "TODO:") -- helper functions and parsers endlineP :: PandocMonad m => VwParser m () endlineP = () <$ try (newline <* nFBTTBSB <* notFollowedBy blockQuote) endlineBQ :: PandocMonad m => VwParser m () endlineBQ = () <$ try (newline <* nFBTTBSB <* string " ") endlineML :: PandocMonad m => VwParser m () endlineML = () <$ try (newline <* nFBTTBSB <* many1 spaceChar) --- nFBTTBSB is short for notFollowedByThingsThatBreakSoftBreaks nFBTTBSB :: PandocMonad m => VwParser m () nFBTTBSB = notFollowedBy newline <* notFollowedBy hrule <* notFollowedBy tableRow <* notFollowedBy header <* notFollowedBy listStart <* notFollowedBy preformatted <* notFollowedBy displayMath <* notFollowedBy hasDefMarker hasDefMarker :: PandocMonad m => VwParser m () hasDefMarker = () <$ manyTill (noneOf "\n") (string "::" >> oneOf spaceChars) makeTagSpan' :: Text -> Inlines makeTagSpan' s = B.spanWith (T.cons '-' s, [], []) (B.str "") <> B.spanWith (s, ["tag"], []) (B.str s) makeTagSpan :: Text -> Inlines makeTagSpan s = B.space <> makeTagSpan' s mathTagParser :: PandocMonad m => VwParser m Text mathTagParser = do s <- try $ lookAhead (char '%' >> manyTillChar (noneOf spaceChars) (try $ char '%' >> many (noneOf $ '%':spaceChars) >> space)) char '%' >> textStr s >> char '%' return $ mathTagLaTeX s pandoc-3.1.3/src/Text/Pandoc/RoffChar.hs0000644000000000000000000001727607346545000016135 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.RoffChar Copyright : Copyright (C) 2007-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Roff character escaping/unescaping. -} module Text.Pandoc.RoffChar ( standardEscapes , characterCodes , combiningAccents ) where import qualified Data.Text as T -- | These are the escapes specifically mentioned in groff_man(7), -- plus @ and ellipsis. standardEscapes :: [(Char, T.Text)] standardEscapes = [ ('\160', "\\ ") , ('\'', "\\[aq]") , ('‘', "\\[oq]") , ('’', "\\[cq]") , ('"', "\\[dq]") , ('“', "\\[lq]") , ('”', "\\[rq]") , ('—', "\\[em]") , ('–', "\\[en]") , ('`', "\\[ga]") , ('^', "\\[ha]") , ('~', "\\[ti]") , ('\\', "\\[rs]") , ('@', "\\[at]") -- because we use @ as a table and math delimiter , ('\x2026', "\\&...") -- because u2026 doesn't render on tty ] characterCodes :: [(Char, T.Text)] characterCodes = [ ('Ð', "-D") , ('ð', "Sd") , ('Þ', "TP") , ('þ', "Tp") , ('ß', "ss") , ('ff', "ff") , ('fi', "fi") , ('fl', "fl") , ('ffi', "Fi") , ('ffl', "Fl") , ('Ł', "/L") , ('ł', "/l") , ('Ø', "/O") , ('ø', "/o") , ('Æ', "AE") , ('æ', "ae") , ('Œ', "OE") , ('œ', "oe") , ('IJ', "IJ") , ('ij', "ij") , ('ı', ".i") , ('ȷ', ".j") , ('Á', "'A") , ('Ć', "'C") , ('É', "'E") , ('Í', "'I") , ('Ó', "'O") , ('Ú', "'U") , ('Ý', "'Y") , ('á', "'a") , ('ć', "'c") , ('é', "'e") , ('í', "'i") , ('ó', "'o") , ('ú', "'u") , ('ý', "'y") , ('Ä', ":A") , ('Ë', ":E") , ('Ï', ":I") , ('Ö', ":O") , ('Ü', ":U") , ('Ÿ', ":Y") , ('ä', ":a") , ('ë', ":e") , ('ï', ":i") , ('ö', ":o") , ('ü', ":u") , ('ÿ', ":y") , ('Â', "^A") , ('Ê', "^E") , ('Î', "^I") , ('Ô', "^O") , ('Û', "^U") , ('â', "^a") , ('ê', "^e") , ('î', "^i") , ('ô', "^o") , ('û', "^u") , ('À', "`A") , ('È', "`E") , ('Ì', "`I") , ('Ò', "`O") , ('Ù', "`U") , ('à', "`a") , ('è', "`e") , ('ì', "`i") , ('ò', "`o") , ('ù', "`u") , ('Ã', "~A") , ('Ñ', "~N") , ('Õ', "~O") , ('ã', "~a") , ('ñ', "~n") , ('õ', "~o") , ('Š', "vS") , ('š', "vs") , ('Ž', "vZ") , ('ž', "vz") , ('Ç', ",C") , ('ç', ",c") , ('Å', "oA") , ('å', "oa") , ('˝', "a\"") , ('¯', "a-") , ('˙', "a.") , ('^', "a^") , ('´', "aa") , ('`', "ga") , ('˘', "ab") , ('¸', "ac") , ('¨', "ad") , ('ˇ', "ah") , ('˚', "ao") , ('~', "a~") , ('˛', "ho") , ('^', "ha") , ('~', "ti") , ('„', "Bq") , ('‚', "bq") , ('“', "lq") , ('”', "rq") , ('‘', "oq") , ('’', "cq") , ('\'', "aq") , ('"', "dq") , ('«', "Fo") , ('»', "Fc") , ('‹', "fo") , ('›', "fc") , ('¡', "r!") , ('¿', "r?") , ('—', "em") , ('–', "en") , ('‐', "hy") , ('[', "lB") , (']', "rB") , ('{', "lC") , ('}', "rC") , ('⟨', "la") , ('⟩', "ra") , ('⎪', "bv") , ('⎪', "braceex") , ('⎡', "bracketlefttp") , ('⎣', "bracketleftbt") , ('⎢', "bracketleftex") , ('⎤', "bracketrighttp") , ('⎦', "bracketrightbt") , ('⎥', "bracketrightex") , ('╭', "lt") , ('⎧', "bracelefttp") , ('┥', "lk") , ('⎨', "braceleftmid") , ('╰', "lb") , ('⎩', "braceleftbt") , ('⎪', "braceleftex") , ('╮', "rt") , ('⎫', "bracerighttp") , ('┝', "rk") , ('⎬', "bracerightmid") , ('╯', "rb") , ('⎭', "bracerightbt") , ('⎪', "bracerightex") , ('⎛', "parenlefttp") , ('⎝', "parenleftbt") , ('⎜', "parenleftex") , ('⎞', "parenrighttp") , ('⎠', "parenrightbt") , ('⎟', "parenrightex") , ('←', "<-") , ('→', "->") , ('↔', "<>") , ('↓', "da") , ('↑', "ua") , ('↕', "va") , ('⇐', "lA") , ('⇒', "rA") , ('⇔', "hA") , ('⇓', "dA") , ('⇑', "uA") , ('⇕', "vA") , ('⎯', "an") , ('|', "ba") , ('│', "br") , ('_', "ul") , ('‾', "rn") , ('_', "ru") , ('¦', "bb") , ('/', "sl") , ('\\', "rs") , ('○', "ci") , ('·', "bu") , ('‡', "dd") , ('†', "dg") , ('◊', "lz") , ('□', "sq") , ('¶', "ps") , ('§', "sc") , ('☜', "lh") , ('☞', "rh") , ('@', "at") , ('#', "sh") , ('↵', "CR") , ('✓', "OK") , ('©', "co") , ('®', "rg") , ('™', "tm") , ('$', "Do") , ('¢', "ct") , ('€', "eu") , ('€', "Eu") , ('¥', "Ye") , ('£', "Po") , ('¤', "Cs") , ('ƒ', "Fn") , ('°', "de") , ('‰', "%0") , ('′', "fm") , ('″', "sd") , ('µ', "mc") , ('ª', "Of") , ('º', "Om") , ('∧', "AN") , ('∨', "OR") , ('¬', "no") , ('¬', "tno") , ('∃', "te") , ('∀', "fa") , ('∋', "st") , ('∴', "3d") , ('∴', "tf") , ('|', "or") , ('½', "12") , ('¼', "14") , ('¾', "34") , ('⅛', "18") , ('⅜', "38") , ('⅝', "58") , ('⅞', "78") , ('¹', "S1") , ('²', "S2") , ('³', "S3") , ('+', "pl") , ('−', "mi") , ('∓', "-+") , ('±', "+-") , ('±', "t+-") , ('·', "pc") , ('⋅', "md") , ('×', "mu") , ('×', "tmu") , ('⊗', "c*") , ('⊕', "c+") , ('÷', "di") , ('÷', "tdi") , ('⁄', "f/") , ('∗', "**") , ('≤', "<=") , ('≥', ">=") , ('≪', "<<") , ('≫', ">>") , ('=', "eq") , ('≠', "!=") , ('≡', "==") , ('≢', "ne") , ('≅', "=~") , ('≃', "|=") , ('∼', "ap") , ('≈', "~~") , ('≈', "~=") , ('∝', "pt") , ('∅', "es") , ('∈', "mo") , ('∉', "nm") , ('⊂', "sb") , ('⊄', "nb") , ('⊃', "sp") , ('⊅', "nc") , ('⊆', "ib") , ('⊇', "ip") , ('∩', "ca") , ('∪', "cu") , ('∠', "/_") , ('⊥', "pp") , ('∫', "is") , ('∫', "integral") , ('∑', "sum") , ('∏', "product") , ('∐', "coproduct") , ('∇', "gr") , ('√', "sr") , ('√', "sqrt") -- , "radicalex" -- "sqrtex" , ('⌈', "lc") , ('⌉', "rc") , ('⌊', "lf") , ('⌋', "rf") , ('∞', "if") , ('ℵ', "Ah") , ('ℑ', "Im") , ('ℜ', "Re") , ('℘', "wp") , ('∂', "pd") , ('ℏ', "-h") , ('ℏ', "hbar") , ('Α', "*A") , ('Β', "*B") , ('Γ', "*G") , ('Δ', "*D") , ('Ε', "*E") , ('Ζ', "*Z") , ('Η', "*Y") , ('Θ', "*H") , ('Ι', "*I") , ('Κ', "*K") , ('Λ', "*L") , ('Μ', "*M") , ('Ν', "*N") , ('Ξ', "*C") , ('Ο', "*O") , ('Π', "*P") , ('Ρ', "*R") , ('Σ', "*S") , ('Τ', "*T") , ('Υ', "*U") , ('Φ', "*F") , ('Χ', "*X") , ('Ψ', "*Q") , ('Ω', "*W") , ('α', "*a") , ('β', "*b") , ('γ', "*g") , ('δ', "*d") , ('ε', "*e") , ('ζ', "*z") , ('η', "*y") , ('θ', "*h") , ('ι', "*i") , ('κ', "*k") , ('λ', "*l") , ('μ', "*m") , ('ν', "*n") , ('ξ', "*c") , ('ο', "*o") , ('π', "*p") , ('ρ', "*r") , ('ς', "ts") , ('σ', "*s") , ('τ', "*t") , ('υ', "*u") , ('ϕ', "*f") , ('χ', "*x") , ('ψ', "*q") , ('ω', "*w") , ('ϑ', "+h") , ('φ', "+f") , ('ϖ', "+p") , ('ϵ', "+e") , ('♣', "CL") , ('♠', "SP") , ('♥', "HE") , ('♦', "DI") , ('˝' , "a\"") , ('¯', "a-") , ('˙', "a.") , ('^', "a^") , ('´', "aa") , ('`', "ga") , ('˘', "ab") , ('¸', "ac") , ('¨', "ad") , ('ˇ', "ah") , ('˚', "ao") , ('~', "a~") , ('˛', "ho") , ('^', "ha") , ('~', "ti") ] -- use like: \\[E a^ aa] combiningAccents :: [(Char, T.Text)] combiningAccents = [ ('\779' , "a\"") , ('\772', "a-") , ('\775', "a.") , ('\770', "a^") , ('\769', "aa") , ('\768', "ga") , ('\774', "ab") , ('\807', "ac") , ('\776', "ad") , ('\780', "ah") , ('\778', "ao") , ('\771', "a~") , ('\808', "ho") , ('\770', "ha") , ('\771', "ti") ] pandoc-3.1.3/src/Text/Pandoc/Scripting.hs0000644000000000000000000000410507346545000016370 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ImpredicativeTypes #-} {-# LANGUAGE ScopedTypeVariables #-} {- | Module : Text.Pandoc.Scripting Copyright : © 2022-2023 Albert Krewinkel License : GPL-2.0-or-later Maintainer : Albert Krewinkel Central data structure for scripting engines. -} module Text.Pandoc.Scripting ( ScriptingEngine (..) , CustomComponents(..) , noEngine ) where import Control.Monad.Except (throwError) import Control.Monad.IO.Class (MonadIO) import Data.Text (Text) import Text.Pandoc.Class.PandocMonad (PandocMonad) import Text.Pandoc.Definition (Pandoc) import Text.Pandoc.Error (PandocError (PandocNoScriptingEngine)) import Text.Pandoc.Filter.Environment (Environment) import Text.Pandoc.Format (ExtensionsConfig) import Text.Pandoc.Readers (Reader) import Text.Pandoc.Writers (Writer) -- | A component of a custom reader/writer: a custom reader, -- a custom writer, a template for a custom writer, or a specification -- of the extensions used by a script and their default values. -- Note that a single script can contain all of these. data CustomComponents m = CustomComponents { customReader :: Maybe (Reader m) , customWriter :: Maybe (Writer m) , customTemplate :: Maybe Text , customExtensions :: Maybe ExtensionsConfig } -- | Structure to define a scripting engine. data ScriptingEngine = ScriptingEngine { engineName :: Text -- ^ Name of the engine. , engineApplyFilter :: forall m. (PandocMonad m, MonadIO m) => Environment -> [String] -> FilePath -> Pandoc -> m Pandoc -- ^ Use the scripting engine to run a filter. , engineLoadCustom :: forall m. (PandocMonad m, MonadIO m) => FilePath -> m (CustomComponents m) -- ^ Function to load a custom reader/writer from a script. } noEngine :: ScriptingEngine noEngine = ScriptingEngine { engineName = "none" , engineApplyFilter = \_env _args _fp _doc -> throwError PandocNoScriptingEngine , engineLoadCustom = \_fp -> throwError PandocNoScriptingEngine } pandoc-3.1.3/src/Text/Pandoc/SelfContained.hs0000644000000000000000000002640007346545000017146 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE TupleSections #-} {- | Module : Text.Pandoc.SelfContained Copyright : Copyright (C) 2011-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Functions for converting an HTML file into one that can be viewed offline, by incorporating linked images, CSS, and scripts into the HTML using data URIs. -} module Text.Pandoc.SelfContained ( makeDataURI, makeSelfContained ) where import Codec.Compression.GZip as Gzip import Control.Applicative ((<|>)) import Control.Monad.Trans (lift) import Data.ByteString (ByteString) import Data.ByteString.Base64 (encodeBase64) import qualified Data.ByteString.Char8 as B import qualified Data.ByteString.Lazy as L import qualified Data.Text as T import Data.Char (isAlphaNum, isAscii) import Network.URI (escapeURIString) import System.FilePath (takeDirectory, takeExtension, ()) import Text.HTML.TagSoup import Text.Pandoc.Class.PandocMonad (PandocMonad (..), fetchItem, getInputFiles, report, setInputFiles) import Text.Pandoc.Logging import Text.Pandoc.Error (PandocError(..)) import Text.Pandoc.MIME (MimeType) import Text.Pandoc.Shared (renderTags', trim, tshow) import Text.Pandoc.URI (isURI) import Text.Pandoc.UTF8 (toString, toText, fromText) import Text.Pandoc.Parsing (ParsecT, runParserT) import qualified Text.Pandoc.Parsing as P import Control.Monad.Except (throwError, catchError) isOk :: Char -> Bool isOk c = isAscii c && isAlphaNum c makeDataURI :: (MimeType, ByteString) -> T.Text makeDataURI (mime, raw) = if textual then "data:" <> mime' <> "," <> T.pack (escapeURIString isOk (toString raw)) else "data:" <> mime' <> ";base64," <> encodeBase64 raw where textual = "text/" `T.isPrefixOf` mime mime' = if textual && T.any (== ';') mime then mime <> ";charset=utf-8" else mime -- mime type already has charset isSourceAttribute :: T.Text -> (T.Text, T.Text) -> Bool isSourceAttribute tagname (x,_) = x == "src" || x == "data-src" || (x == "href" && tagname == "link") || x == "poster" || x == "data-background-image" convertTags :: PandocMonad m => [Tag T.Text] -> m [Tag T.Text] convertTags [] = return [] convertTags (t@TagOpen{}:ts) | fromAttrib "data-external" t == "1" = (t:) <$> convertTags ts convertTags (t@(TagOpen "style" _):ts) = case span isTagText ts of (xs,rest) -> do xs' <- mapM (\case TagText s -> TagText . toText <$> cssURLs "" (fromText s) tag -> return tag) xs ((t:xs') ++) <$> convertTags rest convertTags (t@(TagOpen "script" as):tc@(TagClose "script"):ts) = case fromAttrib "src" t of "" -> (t:) <$> convertTags ts src -> do let typeAttr = fromAttrib "type" t res <- getData typeAttr src rest <- convertTags ts case res of AlreadyDataURI dataUri -> return $ TagOpen "script" (("src",dataUri) : [(x,y) | (x,y) <- as, x /= "src"]) : TagClose "script" : rest Fetched (mime, bs) | ("text/javascript" `T.isPrefixOf` mime || "application/javascript" `T.isPrefixOf` mime || "application/x-javascript" `T.isPrefixOf` mime) && not (" return $ TagOpen "script" [("type", typeAttr)|not (T.null typeAttr)] : TagText (toText bs) : TagClose "script" : rest | otherwise -> return $ TagOpen "script" (("src",makeDataURI (mime, bs)) : [(x,y) | (x,y) <- as, x /= "src"]) : TagClose "script" : rest CouldNotFetch _ -> return $ t:tc:rest convertTags (t@(TagOpen "link" as):ts) = case fromAttrib "href" t of "" -> (t:) <$> convertTags ts src -> do res <- getData (fromAttrib "type" t) src case res of AlreadyDataURI dataUri -> do rest <- convertTags ts return $ TagOpen "link" (("href",dataUri) : [(x,y) | (x,y) <- as, x /= "href"]) : rest Fetched (mime, bs) | "text/css" `T.isPrefixOf` mime && T.null (fromAttrib "media" t) && not (" do rest <- convertTags $ dropWhile (==TagClose "link") ts return $ TagOpen "style" [("type", "text/css")] -- see #5725 : TagText (toText bs) : TagClose "style" : rest | otherwise -> do rest <- convertTags ts return $ TagOpen "link" (("href",makeDataURI (mime, bs)) : [(x,y) | (x,y) <- as, x /= "href"]) : rest CouldNotFetch _ -> do rest <- convertTags ts return $ t:rest convertTags (t@(TagOpen tagname as):ts) | any (isSourceAttribute tagname) as = do as' <- mapM processAttribute as rest <- convertTags ts return $ TagOpen tagname as' : rest where processAttribute (x,y) = if isSourceAttribute tagname (x,y) then do res <- getData (fromAttrib "type" t) y case res of AlreadyDataURI enc -> return (x, enc) Fetched (mt,bs) -> return (x, makeDataURI (mt,bs)) CouldNotFetch _ -> return (x, y) else return (x,y) convertTags (t:ts) = (t:) <$> convertTags ts cssURLs :: PandocMonad m => FilePath -> ByteString -> m ByteString cssURLs d orig = do res <- runParserT (parseCSSUrls d) () "css" orig case res of Left e -> do report $ CouldNotParseCSS $ T.pack $ show e return orig Right bs -> return bs parseCSSUrls :: PandocMonad m => FilePath -> ParsecT ByteString () m ByteString parseCSSUrls d = B.concat <$> P.many (pCSSWhite <|> pCSSComment <|> pCSSImport d <|> pCSSUrl d <|> pCSSOther) pCSSImport :: PandocMonad m => FilePath -> ParsecT ByteString () m ByteString pCSSImport d = P.try $ do P.string "@import" P.spaces res <- (pQuoted <|> pUrl) >>= handleCSSUrl d P.spaces P.char ';' P.spaces case res of Left b -> return $ B.pack "@import " <> b Right (_, b) -> return b -- Note: some whitespace in CSS is significant, so we can't collapse it! pCSSWhite :: PandocMonad m => ParsecT ByteString () m ByteString pCSSWhite = B.singleton <$> P.space <* P.spaces pCSSComment :: PandocMonad m => ParsecT ByteString () m ByteString pCSSComment = P.try $ do P.string "/*" P.manyTill P.anyChar (P.try (P.string "*/")) return B.empty pCSSOther :: PandocMonad m => ParsecT ByteString () m ByteString pCSSOther = (B.pack <$> P.many1 (P.noneOf "u/ \n\r\t")) <|> (B.singleton <$> P.char 'u') <|> (B.singleton <$> P.char '/') pCSSUrl :: PandocMonad m => FilePath -> ParsecT ByteString () m ByteString pCSSUrl d = P.try $ do res <- pUrl >>= handleCSSUrl d case res of Left b -> return b Right (mt,b) -> do let enc = makeDataURI (mt, b) return $ fromText $ "url(" <> enc <> ")" pQuoted :: PandocMonad m => ParsecT ByteString () m (T.Text, ByteString) pQuoted = P.try $ do quote <- P.oneOf "\"'" url <- T.pack <$> P.manyTill P.anyChar (P.char quote) let fallback = fromText $ T.singleton quote <> trim url <> T.singleton quote return (url, fallback) pUrl :: PandocMonad m => ParsecT ByteString () m (T.Text, ByteString) pUrl = P.try $ do P.string "url(" P.spaces quote <- P.option Nothing (Just <$> P.oneOf "\"'") url <- T.pack <$> P.manyTill P.anyChar (maybe (P.lookAhead (P.char ')')) P.char quote) P.spaces P.char ')' let fallback = fromText ("url(" <> maybe "" T.singleton quote <> trim url <> maybe "" T.singleton quote <> ")") return (url, fallback) handleCSSUrl :: PandocMonad m => FilePath -> (T.Text, ByteString) -> ParsecT ByteString () m (Either ByteString (MimeType, ByteString)) handleCSSUrl d (url, fallback) = case escapeURIString (/='|') (T.unpack $ trim url) of '#':_ -> return $ Left fallback 'd':'a':'t':'a':':':_ -> return $ Left fallback u -> do let url' = if isURI (T.pack u) then T.pack u else T.pack (d u) res <- lift $ getData "" url' case res of AlreadyDataURI uri -> return $ Left (fromText $ "url(" <> uri <> ")") Fetched (mt', raw) -> do -- note that the downloaded CSS may -- itself contain url(...). (mt, b) <- if "text/css" `T.isPrefixOf` mt' -- see #5725: in HTML5, content type -- isn't allowed on style type attribute then ("text/css",) <$> cssURLs d raw else return (mt', raw) return $ Right (mt, b) CouldNotFetch _ -> return $ Left fallback data GetDataResult = AlreadyDataURI T.Text | CouldNotFetch PandocError | Fetched (MimeType, ByteString) deriving (Show) getData :: PandocMonad m => MimeType -> T.Text -> m GetDataResult getData mimetype src | "data:" `T.isPrefixOf` src = return $ AlreadyDataURI src -- already data: uri | otherwise = catchError fetcher handler where fetcher = do let ext = T.toLower $ T.pack $ takeExtension $ T.unpack src (raw, respMime) <- fetchItem src let raw' = if ext `elem` [".gz", ".svgz"] then B.concat $ L.toChunks $ Gzip.decompress $ L.fromChunks [raw] else raw let mime = case (mimetype, respMime) of ("",Nothing) -> "application/octet-stream" (x, Nothing) -> x (_, Just x ) -> x result <- if "text/css" `T.isPrefixOf` mime then do oldInputs <- getInputFiles setInputFiles [T.unpack src] res <- cssURLs (takeDirectory $ T.unpack src) raw' setInputFiles oldInputs return res else return raw' return $ Fetched (mime, result) handler e = case e of PandocResourceNotFound r -> do report $ CouldNotFetchResource r "" return $ CouldNotFetch e PandocHttpError u er -> do report $ CouldNotFetchResource u (tshow er) return $ CouldNotFetch e _ -> throwError e -- | Convert HTML into self-contained HTML, incorporating images, -- scripts, and CSS using data: URIs. makeSelfContained :: PandocMonad m => T.Text -> m T.Text makeSelfContained inp = do let tags = parseTags inp out' <- convertTags tags return $ renderTags' out' pandoc-3.1.3/src/Text/Pandoc/Shared.hs0000644000000000000000000010270607346545000015642 0ustar0000000000000000{-# LANGUAGE CPP #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE ViewPatterns #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Shared Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Utility functions and definitions used by the various Pandoc modules. -} module Text.Pandoc.Shared ( -- * List processing splitBy, splitTextBy, splitTextByIndices, -- * Text processing inquotes, tshow, stripTrailingNewlines, trim, triml, trimr, trimMath, stripFirstAndLast, camelCaseToHyphenated, camelCaseStrToHyphenated, toRomanNumeral, tabFilter, -- * Date/time normalizeDate, -- * Pandoc block and inline list processing orderedListMarkers, extractSpaces, removeFormatting, deNote, stringify, capitalize, compactify, compactifyDL, linesToPara, figureDiv, makeSections, uniqueIdent, inlineListToIdentifier, textToIdentifier, isHeaderBlock, headerShift, stripEmptyParagraphs, onlySimpleTableCells, isTightList, taskListItemFromAscii, taskListItemToAscii, handleTaskListItem, addMetaField, eastAsianLineBreakFilter, htmlSpanLikeElements, filterIpynbOutput, formatCode, -- * TagSoup HTML handling renderTags', -- * File handling inDirectory, makeCanonical, collapseFilePath, filteredFilesFromArchive, -- * for squashing blocks blocksToInlines, blocksToInlines', blocksToInlinesWithSep, defaultBlocksSeparator, -- * Safe read safeRead, safeStrRead ) where import Codec.Archive.Zip import qualified Control.Exception as E import Control.Monad (MonadPlus (..), msum, unless) import qualified Control.Monad.State.Strict as S import qualified Data.ByteString.Lazy as BL import Data.Containers.ListUtils (nubOrd) import Data.Char (isAlpha, isLower, isSpace, isUpper, toLower, isAlphaNum, generalCategory, GeneralCategory(NonSpacingMark, SpacingCombiningMark, EnclosingMark, ConnectorPunctuation)) import Data.List (find, foldl', groupBy, intercalate, intersperse, union, sortOn) import qualified Data.Map as M import Data.Maybe (mapMaybe, fromMaybe) import Data.Monoid (Any (..)) import Data.Sequence (ViewL (..), ViewR (..), viewl, viewr) import qualified Data.Set as Set import qualified Data.Text as T import System.Directory import System.FilePath (isPathSeparator, splitDirectories) import qualified System.FilePath.Posix as Posix import Text.HTML.TagSoup (RenderOptions (..), Tag (..), renderOptions, renderTagsOptions) import Text.Pandoc.Builder (Blocks, Inlines, ToMetaValue (..)) import qualified Text.Pandoc.Builder as B import Data.Time import Text.Pandoc.Asciify (toAsciiText) import Text.Pandoc.Definition import Text.Pandoc.Extensions (Extensions, Extension(..), extensionEnabled) import Text.Pandoc.Generic (bottomUp) import Text.DocLayout (charWidth) import Text.Pandoc.Walk -- -- List processing -- -- | Split list by groups of one or more sep. splitBy :: (a -> Bool) -> [a] -> [[a]] splitBy _ [] = [] splitBy isSep lst = let (first, rest) = break isSep lst in first:splitBy isSep (dropWhile isSep rest) -- | Split text by groups of one or more separator. splitTextBy :: (Char -> Bool) -> T.Text -> [T.Text] splitTextBy isSep t | T.null t = [] | otherwise = let (first, rest) = T.break isSep t in first : splitTextBy isSep (T.dropWhile isSep rest) -- | Split text at the given widths. Note that the break points are -- /not/ indices but text widths, which will be different for East Asian -- characters, emojis, etc. splitTextByIndices :: [Int] -> T.Text -> [T.Text] splitTextByIndices ns = splitTextByRelIndices (zipWith (-) ns (0:ns)) . T.unpack where splitTextByRelIndices [] cs = [T.pack cs] splitTextByRelIndices (x:xs) cs = let (first, rest) = splitAt' x cs in T.pack first : splitTextByRelIndices xs rest -- | Returns a pair whose first element is a prefix of @t@ and that has -- width @n@, and whose second is the remainder of the string. -- -- Note: Do *not* replace this with 'T.splitAt', which is not sensitive -- to character widths! splitAt' :: Int {-^ n -} -> [Char] {-^ t -} -> ([Char],[Char]) splitAt' _ [] = ([],[]) splitAt' n xs | n <= 0 = ([],xs) splitAt' n (x:xs) = (x:ys,zs) where (ys,zs) = splitAt' (n - charWidth x) xs -- -- Text processing -- -- | Wrap double quotes around a Text inquotes :: T.Text -> T.Text inquotes txt = T.cons '\"' (T.snoc txt '\"') -- | Like @'show'@, but returns a 'T.Text' instead of a 'String'. tshow :: Show a => a -> T.Text tshow = T.pack . show -- | Strip trailing newlines from string. stripTrailingNewlines :: T.Text -> T.Text stripTrailingNewlines = T.dropWhileEnd (== '\n') -- | Returns 'True' for an ASCII whitespace character, viz. space, -- carriage return, newline, and horizontal tab. isWS :: Char -> Bool isWS ' ' = True isWS '\r' = True isWS '\n' = True isWS '\t' = True isWS _ = False -- | Remove leading and trailing space (including newlines) from string. trim :: T.Text -> T.Text trim = T.dropAround isWS -- | Remove leading space (including newlines) from string. triml :: T.Text -> T.Text triml = T.dropWhile isWS -- | Remove trailing space (including newlines) from string. trimr :: T.Text -> T.Text trimr = T.dropWhileEnd isWS -- | Trim leading space and trailing space unless after \. trimMath :: T.Text -> T.Text trimMath = triml . T.reverse . stripBeginSpace . T.reverse -- no Text.spanEnd where stripBeginSpace t | T.null pref = t | Just ('\\', _) <- T.uncons suff = T.cons (T.last pref) suff | otherwise = suff where (pref, suff) = T.span isWS t -- | Strip leading and trailing characters from string stripFirstAndLast :: T.Text -> T.Text stripFirstAndLast t = case T.uncons t of Just (_, t') -> case T.unsnoc t' of Just (t'', _) -> t'' _ -> t' _ -> "" -- | Change CamelCase word to hyphenated lowercase (e.g., camel-case). camelCaseToHyphenated :: T.Text -> T.Text camelCaseToHyphenated = T.pack . camelCaseStrToHyphenated . T.unpack -- This may not work as expected on general Unicode, if it contains -- letters with a longer lower case form than upper case. I don't know -- what the camel case practices of affected scripts are, though. camelCaseStrToHyphenated :: String -> String camelCaseStrToHyphenated [] = "" camelCaseStrToHyphenated (a:b:rest) | isLower a , isUpper b = a:'-':toLower b:camelCaseStrToHyphenated rest -- handle ABCDef = abc-def camelCaseStrToHyphenated (a:b:c:rest) | isUpper a , isUpper b , isLower c = toLower a:'-':toLower b:camelCaseStrToHyphenated (c:rest) camelCaseStrToHyphenated (a:rest) = toLower a:camelCaseStrToHyphenated rest -- | Convert number < 4000 to uppercase roman numeral. toRomanNumeral :: Int -> T.Text toRomanNumeral x | x >= 4000 || x < 0 = "?" | x >= 1000 = "M" <> toRomanNumeral (x - 1000) | x >= 900 = "CM" <> toRomanNumeral (x - 900) | x >= 500 = "D" <> toRomanNumeral (x - 500) | x >= 400 = "CD" <> toRomanNumeral (x - 400) | x >= 100 = "C" <> toRomanNumeral (x - 100) | x >= 90 = "XC" <> toRomanNumeral (x - 90) | x >= 50 = "L" <> toRomanNumeral (x - 50) | x >= 40 = "XL" <> toRomanNumeral (x - 40) | x >= 10 = "X" <> toRomanNumeral (x - 10) | x == 9 = "IX" | x >= 5 = "V" <> toRomanNumeral (x - 5) | x == 4 = "IV" | x >= 1 = "I" <> toRomanNumeral (x - 1) | otherwise = "" -- | Convert tabs to spaces. Tabs will be preserved if tab stop is set to 0. tabFilter :: Int -- ^ Tab stop -> T.Text -- ^ Input -> T.Text tabFilter 0 = id tabFilter tabStop = T.unlines . map go . T.lines where go s = let (s1, s2) = T.break (== '\t') s in if T.null s2 then s1 else s1 <> T.replicate (tabStop - (T.length s1 `mod` tabStop)) (T.pack " ") <> go (T.drop 1 s2) -- -- Date/time -- -- | Parse a date and convert (if possible) to "YYYY-MM-DD" format. We -- limit years to the range 1601-9999 (ISO 8601 accepts greater than -- or equal to 1583, but MS Word only accepts dates starting 1601). normalizeDate :: T.Text -> Maybe T.Text normalizeDate = fmap T.pack . normalizeDate' . T.unpack -- | Like @'normalizeDate'@, but acts on 'String' instead of 'T.Text'. normalizeDate' :: String -> Maybe String normalizeDate' s = fmap (formatTime defaultTimeLocale "%F") (msum $ map (\fs -> parsetimeWith fs s >>= rejectBadYear) formats :: Maybe Day) where rejectBadYear day = case toGregorian day of (y, _, _) | y >= 1601 && y <= 9999 -> Just day _ -> Nothing parsetimeWith = parseTimeM True defaultTimeLocale formats = ["%x","%m/%d/%Y", "%D","%F", "%d %b %Y", "%e %B %Y", "%b. %e, %Y", "%B %e, %Y", "%Y%m%d", "%Y%m", "%Y"] -- -- Pandoc block and inline list processing -- -- | Generate infinite lazy list of markers for an ordered list, -- depending on list attributes. orderedListMarkers :: (Int, ListNumberStyle, ListNumberDelim) -> [T.Text] orderedListMarkers (start, numstyle, numdelim) = let nums = case numstyle of DefaultStyle -> map tshow [start..] Example -> map tshow [start..] Decimal -> map tshow [start..] UpperAlpha -> drop (start - 1) $ cycle $ map T.singleton ['A'..'Z'] LowerAlpha -> drop (start - 1) $ cycle $ map T.singleton ['a'..'z'] UpperRoman -> map toRomanNumeral [start..] LowerRoman -> map (T.toLower . toRomanNumeral) [start..] inDelim str = case numdelim of DefaultDelim -> str <> "." Period -> str <> "." OneParen -> str <> ")" TwoParens -> "(" <> str <> ")" in map inDelim nums -- | Extract the leading and trailing spaces from inside an inline element -- and place them outside the element. SoftBreaks count as Spaces for -- these purposes. extractSpaces :: (Inlines -> Inlines) -> Inlines -> Inlines extractSpaces f is = let contents = B.unMany is left = case viewl contents of (Space :< _) -> B.space (SoftBreak :< _) -> B.softbreak _ -> mempty right = case viewr contents of (_ :> Space) -> B.space (_ :> SoftBreak) -> B.softbreak _ -> mempty in (left <> f (B.trimInlines . B.Many $ contents) <> right) -- | Extract inlines, removing formatting. removeFormatting :: Walkable Inline a => a -> [Inline] removeFormatting = query go . walk (deNote . deQuote) where go :: Inline -> [Inline] go (Str xs) = [Str xs] go Space = [Space] go SoftBreak = [SoftBreak] go (Code _ x) = [Str x] go (Math _ x) = [Str x] go LineBreak = [Space] go _ = [] -- | Replaces 'Note' elements with empty strings. deNote :: Inline -> Inline deNote (Note _) = Str "" deNote x = x -- | Convert pandoc structure to a string with formatting removed. -- Footnotes are skipped (since we don't want their contents in link -- labels). stringify :: Walkable Inline a => a -> T.Text stringify = query go . walk fixInlines where go :: Inline -> T.Text go Space = " " go SoftBreak = " " go (Str x) = x go (Code _ x) = x go (Math _ x) = x go (RawInline (Format "html") (T.unpack -> ('<':'b':'r':_))) = " " -- see #2105 go LineBreak = " " go _ = "" fixInlines :: Inline -> Inline fixInlines (Cite _ ils) = Cite [] ils fixInlines (Note _) = Note [] fixInlines (q@Quoted{}) = deQuote q fixInlines x = x -- | Unwrap 'Quoted' inline elements, enclosing the contents with -- English-style Unicode quotes instead. deQuote :: Inline -> Inline deQuote (Quoted SingleQuote xs) = Span ("",[],[]) (Str "\8216" : xs ++ [Str "\8217"]) deQuote (Quoted DoubleQuote xs) = Span ("",[],[]) (Str "\8220" : xs ++ [Str "\8221"]) deQuote x = x -- | Bring all regular text in a pandoc structure to uppercase. -- -- This function correctly handles cases where a lowercase character doesn't -- match to a single uppercase character – e.g. “Straße” would be converted -- to “STRASSE”, not “STRAßE”. capitalize :: Walkable Inline a => a -> a capitalize = walk go where go :: Inline -> Inline go (Str s) = Str $ T.toUpper s go x = x -- | Change final list item from @Para@ to @Plain@ if the list contains -- no other @Para@ blocks. Otherwise (if the list items contain @Para@ -- blocks besides possibly at the end), turn any @Plain@s into @Para@s (#5285). compactify :: [Blocks] -- ^ List of list items (each a list of blocks) -> [Blocks] compactify [] = [] compactify items = let (others, final) = (init items, last items) in case reverse (B.toList final) of (Para a:xs) | null [Para x | Para x <- xs ++ concatMap B.toList others] -> others ++ [B.fromList (reverse (Plain a : xs))] _ | null [Para x | Para x <- concatMap B.toList items] -> items _ -> map (fmap plainToPara) items plainToPara :: Block -> Block plainToPara (Plain ils) = Para ils plainToPara x = x -- | Like @compactify@, but acts on items of definition lists. compactifyDL :: [(Inlines, [Blocks])] -> [(Inlines, [Blocks])] compactifyDL items = case reverse items of ((t,ds):ys) -> case reverse (map (reverse . B.toList) ds) of ((Para x:xs) : zs) | not (any isPara xs) -> reverse ys ++ [(t, reverse (map B.fromList zs) ++ [B.fromList (reverse (Plain x:xs))])] _ -> items _ -> items -- | Combine a list of lines by adding hard linebreaks. combineLines :: [[Inline]] -> [Inline] combineLines = intercalate [LineBreak] -- | Convert a list of lines into a paragraph with hard line breaks. This is -- useful e.g. for rudimentary support of LineBlock elements in writers. linesToPara :: [[Inline]] -> Block linesToPara = Para . combineLines -- | Creates a Div block from figure components. The intended use is in -- writers of formats that do not have markup support for figures. -- -- The resulting div is given the class @figure@ and contains the figure -- body and the figure caption. The latter is wrapped in a 'Div' of -- class @caption@, with the stringified @short-caption@ as attribute. figureDiv :: Attr -> Caption -> [Block] -> Block figureDiv (ident, classes, kv) (Caption shortcapt longcapt) body = let divattr = ( ident , ["figure"] `union` classes , kv ) captkv = maybe mempty (\s -> [("short-caption", stringify s)]) shortcapt capt = [Div ("", ["caption"], captkv) longcapt | not (null longcapt)] in Div divattr (body ++ capt) -- | Returns 'True' iff the given element is a 'Para'. isPara :: Block -> Bool isPara (Para _) = True isPara _ = False -- | Convert Pandoc inline list to plain text identifier. inlineListToIdentifier :: Extensions -> [Inline] -> T.Text inlineListToIdentifier exts = textToIdentifier exts . stringify . walk unEmojify where unEmojify :: [Inline] -> [Inline] unEmojify | extensionEnabled Ext_gfm_auto_identifiers exts || extensionEnabled Ext_ascii_identifiers exts = walk unEmoji | otherwise = id unEmoji (Span ("",["emoji"],[("data-emoji",ename)]) _) = Str ename unEmoji x = x -- | Convert string to plain text identifier. textToIdentifier :: Extensions -> T.Text -> T.Text textToIdentifier exts = dropNonLetter . filterAscii . toIdent where dropNonLetter | extensionEnabled Ext_gfm_auto_identifiers exts = id | otherwise = T.dropWhile (not . isAlpha) filterAscii | extensionEnabled Ext_ascii_identifiers exts = toAsciiText | otherwise = id toIdent | extensionEnabled Ext_gfm_auto_identifiers exts = filterPunct . spaceToDash . T.toLower | otherwise = T.intercalate "-" . T.words . filterPunct . T.toLower filterPunct = T.filter (\c -> isSpace c || isAlphaNum c || isAllowedPunct c) isAllowedPunct c | extensionEnabled Ext_gfm_auto_identifiers exts = c == '-' || c == '_' || generalCategory c `elem` [NonSpacingMark, SpacingCombiningMark, EnclosingMark, ConnectorPunctuation] | otherwise = c == '_' || c == '-' || c == '.' spaceToDash = T.map (\c -> if isSpace c then '-' else c) -- | Put a list of Pandoc blocks into a hierarchical structure: -- a list of sections (each a Div with class "section" and first -- element a Header). If the 'numbering' parameter is True, Header -- numbers are added via the number attribute on the header. -- If the baseLevel parameter is Just n, Header levels are -- adjusted to be gapless starting at level n. makeSections :: Bool -> Maybe Int -> [Block] -> [Block] makeSections numbering mbBaseLevel bs = S.evalState (go bs) (mbBaseLevel, []) where go :: [Block] -> S.State (Maybe Int, [Int]) [Block] go (Header level (ident,classes,kvs) title':xs) = do (mbLevel, lastnum) <- S.get let level' = fromMaybe level mbLevel let lastnum' = take level' lastnum let newnum = if level' > 0 then case length lastnum' of x | "unnumbered" `elem` classes -> [] | x >= level' -> init lastnum' ++ [last lastnum' + 1] | otherwise -> lastnum ++ replicate (level' - length lastnum - 1) 0 ++ [1] else [] unless (null newnum) $ S.modify $ \(mbl, _) -> (mbl, newnum) let (sectionContents, rest) = break (headerLtEq level) xs S.modify $ \(_, ln) -> (fmap (+ 1) mbLevel, ln) sectionContents' <- go sectionContents S.modify $ \(_, ln) -> (mbLevel, ln) rest' <- go rest let kvs' = -- don't touch number if already present case lookup "number" kvs of Nothing | numbering , "unnumbered" `notElem` classes -> ("number", T.intercalate "." (map tshow newnum)) : kvs _ -> kvs let divattr = (ident, "section":classes, kvs') let attr = ("",classes,kvs') return $ Div divattr (Header level' attr title' : sectionContents') : rest' go (Div divattr@(dident,dclasses,_) (Header level hattr title':ys) : xs) | all (\case Header level' _ _ -> level' > level _ -> True) ys , "column" `notElem` dclasses , "columns" `notElem` dclasses , "fragment" `notElem` dclasses = do inner <- go (Header level hattr title':ys) rest <- go xs return $ case inner of [Div divattr'@(dident',_,_) zs] | T.null dident || T.null dident' || dident == dident' -> Div (combineAttr divattr' divattr) zs : rest _ -> Div divattr inner : rest go (Div attr xs : rest) = do xs' <- go xs rest' <- go rest return $ Div attr xs' : rest' go (x:xs) = (x :) <$> go xs go [] = return [] combineAttr :: Attr -> Attr -> Attr combineAttr (id1, classes1, kvs1) (id2, classes2, kvs2) = (if T.null id1 then id2 else id1, nubOrd (classes1 ++ classes2), foldr (\(k,v) kvs -> case lookup k kvs of Nothing -> (k,v):kvs Just _ -> kvs) mempty (kvs1 ++ kvs2)) headerLtEq :: Int -> Block -> Bool headerLtEq level (Header l _ _) = l <= level headerLtEq level (Div _ (b:_)) = headerLtEq level b headerLtEq _ _ = False -- | Generate a unique identifier from a list of inlines. -- Second argument is a list of already used identifiers. uniqueIdent :: Extensions -> [Inline] -> Set.Set T.Text -> T.Text uniqueIdent exts title' usedIdents = if baseIdent `Set.member` usedIdents then maybe baseIdent numIdent $ find (\x -> numIdent x `Set.notMember` usedIdents) ([1..60000] :: [Int]) -- if we have more than 60,000, allow repeats else baseIdent where baseIdent = case inlineListToIdentifier exts title' of "" -> "section" x -> x numIdent n = baseIdent <> "-" <> tshow n -- | True if block is a Header block. isHeaderBlock :: Block -> Bool isHeaderBlock Header{} = True isHeaderBlock _ = False -- | Shift header levels up or down. headerShift :: Int -> Pandoc -> Pandoc headerShift n (Pandoc meta (Header m _ ils : bs)) | n < 0 , m + n == 0 = headerShift n $ B.setTitle (B.fromList ils) $ Pandoc meta bs headerShift n (Pandoc meta bs) = Pandoc meta (walk shift bs) where shift :: Block -> Block shift (Header level attr inner) | level + n > 0 = Header (level + n) attr inner | otherwise = Para inner shift x = x -- | Remove empty paragraphs. stripEmptyParagraphs :: Pandoc -> Pandoc stripEmptyParagraphs = walk go where go :: [Block] -> [Block] go = filter (not . isEmptyParagraph) isEmptyParagraph (Para []) = True isEmptyParagraph _ = False -- | Detect if table rows contain only cells consisting of a single -- paragraph that has no @LineBreak@. onlySimpleTableCells :: [[[Block]]] -> Bool onlySimpleTableCells = all isSimpleCell . concat where isSimpleCell [Plain ils] = not (hasLineBreak ils) isSimpleCell [Para ils ] = not (hasLineBreak ils) isSimpleCell [] = True isSimpleCell _ = False hasLineBreak = getAny . query isLineBreak isLineBreak LineBreak = Any True isLineBreak _ = Any False -- | Detect if a list is tight. isTightList :: [[Block]] -> Bool isTightList = all (\item -> firstIsPlain item || null item) where firstIsPlain (Plain _ : _) = True firstIsPlain _ = False -- | Convert a list item containing tasklist syntax (e.g. @[x]@) -- to using @U+2610 BALLOT BOX@ or @U+2612 BALLOT BOX WITH X@. taskListItemFromAscii :: Extensions -> [Block] -> [Block] taskListItemFromAscii = handleTaskListItem fromMd where fromMd (Str "[" : Space : Str "]" : Space : is) = Str "☐" : Space : is fromMd (Str "[x]" : Space : is) = Str "☒" : Space : is fromMd (Str "[X]" : Space : is) = Str "☒" : Space : is fromMd is = is -- | Convert a list item containing text starting with @U+2610 BALLOT BOX@ -- or @U+2612 BALLOT BOX WITH X@ to tasklist syntax (e.g. @[x]@). taskListItemToAscii :: Extensions -> [Block] -> [Block] taskListItemToAscii = handleTaskListItem toMd where toMd (Str "☐" : Space : is) = rawMd "[ ]" : Space : is toMd (Str "☒" : Space : is) = rawMd "[x]" : Space : is toMd (Str "❏" : Space : is) = rawMd "[ ]" : Space : is toMd (Str "✓" : Space : is) = rawMd "[x]" : Space : is toMd is = is rawMd = RawInline (Format "markdown") handleTaskListItem :: ([Inline] -> [Inline]) -> Extensions -> [Block] -> [Block] handleTaskListItem handleInlines exts bls = if Ext_task_lists `extensionEnabled` exts then handleItem bls else bls where handleItem (Plain is : bs) = Plain (handleInlines is) : bs handleItem (Para is : bs) = Para (handleInlines is) : bs handleItem bs = bs -- | Set a field of a 'Meta' object. If the field already has a value, -- convert it into a list with the new value appended to the old value(s). addMetaField :: ToMetaValue a => T.Text -> a -> Meta -> Meta addMetaField key val (Meta meta) = Meta $ M.insertWith combine key (toMetaValue val) meta where combine newval (MetaList xs) = MetaList (xs ++ tolist newval) combine newval x = MetaList [x, newval] tolist (MetaList ys) = ys tolist y = [y] -- | Remove soft breaks between East Asian characters. eastAsianLineBreakFilter :: Pandoc -> Pandoc eastAsianLineBreakFilter = bottomUp go where go (x:SoftBreak:y:zs) | Just (_, b) <- T.unsnoc $ stringify x , Just (c, _) <- T.uncons $ stringify y , charWidth b == 2 , charWidth c == 2 = x:y:zs | otherwise = x:SoftBreak:y:zs go xs = xs -- | Set of HTML elements that are represented as Span with a class equal as -- the element tag itself. htmlSpanLikeElements :: Set.Set T.Text htmlSpanLikeElements = Set.fromList ["kbd", "mark", "dfn"] -- | Process ipynb output cells. If mode is Nothing, -- remove all output. If mode is Just format, select -- best output for the format. If format is not ipynb, -- strip out ANSI escape sequences from CodeBlocks (see #5633). filterIpynbOutput :: Maybe Format -> Pandoc -> Pandoc filterIpynbOutput mode = walk go where go (Div (ident, "output":os, kvs) bs) = case mode of Nothing -> Div (ident, "output":os, kvs) [] -- "best" for ipynb includes all formats: Just fmt | fmt == Format "ipynb" -> Div (ident, "output":os, kvs) bs | otherwise -> Div (ident, "output":os, kvs) $ walk removeANSI $ take 1 $ sortOn rank bs where rank (RawBlock (Format "html") _) | fmt == Format "html" = 1 :: Int | fmt == Format "markdown" = 3 | otherwise = 4 rank (RawBlock (Format "latex") _) | fmt == Format "latex" = 1 | fmt == Format "markdown" = 3 | otherwise = 4 rank (RawBlock f _) | fmt == f = 1 | otherwise = 4 rank (Para [Image{}]) = 2 rank _ = 3 removeANSI (CodeBlock attr code) = CodeBlock attr (removeANSIEscapes code) removeANSI x = x removeANSIEscapes t | Just cs <- T.stripPrefix "\x1b[" t = removeANSIEscapes $ T.drop 1 $ T.dropWhile (/='m') cs | Just (c, cs) <- T.uncons t = T.cons c $ removeANSIEscapes cs | otherwise = "" go x = x -- | Reformat 'Inlines' as code, putting the stringlike parts in 'Code' -- elements while bringing other inline formatting outside. -- The idea is that e.g. `[Str "a",Space,Strong [Str "b"]]` should turn -- into `[Code ("",[],[]) "a ", Strong [Code ("",[],[]) "b"]]`. -- This helps work around the limitation that pandoc's Code element can -- only contain string content (see issue #7525). formatCode :: Attr -> Inlines -> Inlines formatCode attr = B.fromList . walk fmt . B.toList where isPlaintext (Str _) = True isPlaintext Space = True isPlaintext SoftBreak = True isPlaintext (Quoted _ _) = True isPlaintext _ = False fmt = concatMap go . groupBy (\a b -> isPlaintext a && isPlaintext b) where go xs | all isPlaintext xs = B.toList $ B.codeWith attr $ stringify xs | otherwise = xs -- -- TagSoup HTML handling -- -- | Render HTML tags. renderTags' :: [Tag T.Text] -> T.Text renderTags' = renderTagsOptions renderOptions{ optMinimize = matchTags ["hr", "br", "img", "meta", "link", "col"] , optRawTag = matchTags ["script", "style"] } where matchTags tags = flip elem tags . T.toLower -- -- File handling -- -- | Perform an IO action in a directory, returning to starting directory. inDirectory :: FilePath -> IO a -> IO a inDirectory path action = E.bracket getCurrentDirectory setCurrentDirectory (const $ setCurrentDirectory path >> action) -- | Canonicalizes a file path by removing redundant @.@ and @..@. makeCanonical :: FilePath -> FilePath makeCanonical = Posix.joinPath . transformPathParts . splitDirectories where transformPathParts = reverse . foldl' go [] go as "." = as go ("..":as) ".." = ["..", ".."] <> as go (_:as) ".." = as go as x = x : as -- | Remove intermediate "." and ".." directories from a path. -- -- > collapseFilePath "./foo" == "foo" -- > collapseFilePath "/bar/../baz" == "/baz" -- > collapseFilePath "/../baz" == "/../baz" -- > collapseFilePath "parent/foo/baz/../bar" == "parent/foo/bar" -- > collapseFilePath "parent/foo/baz/../../bar" == "parent/bar" -- > collapseFilePath "parent/foo/.." == "parent" -- > collapseFilePath "/parent/foo/../../bar" == "/bar" collapseFilePath :: FilePath -> FilePath collapseFilePath = Posix.joinPath . reverse . foldl' go [] . splitDirectories where go rs "." = rs go r@(p:rs) ".." = case p of ".." -> "..":r (checkPathSeperator -> Just True) -> "..":r _ -> rs go _ (checkPathSeperator -> Just True) = [[Posix.pathSeparator]] go rs x = x:rs isSingleton [] = Nothing isSingleton [x] = Just x isSingleton _ = Nothing checkPathSeperator = fmap isPathSeparator . isSingleton -- -- File selection from the archive -- filteredFilesFromArchive :: Archive -> (FilePath -> Bool) -> [(FilePath, BL.ByteString)] filteredFilesFromArchive zf f = mapMaybe (fileAndBinary zf) (filter f (filesInArchive zf)) where fileAndBinary :: Archive -> FilePath -> Maybe (FilePath, BL.ByteString) fileAndBinary a fp = findEntryByPath fp a >>= \e -> Just (fp, fromEntry e) --- --- Squash blocks into inlines --- blockToInlines :: Block -> Inlines blockToInlines (Plain ils) = B.fromList ils blockToInlines (Para ils) = B.fromList ils blockToInlines (LineBlock lns) = B.fromList $ combineLines lns blockToInlines (CodeBlock attr str) = B.codeWith attr str blockToInlines (RawBlock (Format fmt) str) = B.rawInline fmt str blockToInlines (BlockQuote blks) = blocksToInlines' blks blockToInlines (OrderedList _ blkslst) = mconcat $ map blocksToInlines' blkslst blockToInlines (BulletList blkslst) = mconcat $ map blocksToInlines' blkslst blockToInlines (DefinitionList pairslst) = mconcat $ map f pairslst where f (ils, blkslst) = B.fromList ils <> B.str ":" <> B.space <> mconcat (map blocksToInlines' blkslst) blockToInlines (Header _ _ ils) = B.fromList ils blockToInlines HorizontalRule = mempty blockToInlines (Table _ _ _ (TableHead _ hbd) bodies (TableFoot _ fbd)) = mconcat $ intersperse B.linebreak $ map (mconcat . map blocksToInlines') (plainRowBody <$> hbd <> unTableBodies bodies <> fbd) where plainRowBody (Row _ body) = cellBody <$> body cellBody (Cell _ _ _ _ body) = body unTableBody (TableBody _ _ hd bd) = hd <> bd unTableBodies = concatMap unTableBody blockToInlines (Div _ blks) = blocksToInlines' blks blockToInlines (Figure _ _ body) = blocksToInlines' body blocksToInlinesWithSep :: Inlines -> [Block] -> Inlines blocksToInlinesWithSep sep = mconcat . intersperse sep . map blockToInlines blocksToInlines' :: [Block] -> Inlines blocksToInlines' = blocksToInlinesWithSep defaultBlocksSeparator blocksToInlines :: [Block] -> [Inline] blocksToInlines = B.toList . blocksToInlines' -- | Inline elements used to separate blocks when squashing blocks into -- inlines. defaultBlocksSeparator :: Inlines defaultBlocksSeparator = -- This is used in the pandoc.utils.blocks_to_inlines function. Docs -- there should be updated if this is changed. B.linebreak -- -- Safe read -- safeRead :: (MonadPlus m, Read a) => T.Text -> m a safeRead = safeStrRead . T.unpack safeStrRead :: (MonadPlus m, Read a) => String -> m a safeStrRead s = case reads s of (d,x):_ | all isSpace x -> return d _ -> mzero pandoc-3.1.3/src/Text/Pandoc/Slides.hs0000644000000000000000000000427407346545000015660 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Slides Copyright : Copyright (C) 2012-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Utility functions for splitting documents into slides for slide show formats (dzslides, revealjs, s5, slidy, slideous, beamer). -} module Text.Pandoc.Slides ( getSlideLevel, prepSlides ) where import Text.Pandoc.Definition -- | Find level of header that starts slides (defined as the least header -- level that occurs before a non-header/non-hrule in the blocks). getSlideLevel :: [Block] -> Int getSlideLevel = go 6 where go least (Header n _ _ : x : xs) | n < least && nonHOrHR x = go n xs | otherwise = go least (x:xs) go least (Div _ bs : xs) = min (go least bs) (go least xs) go least (_ : xs) = go least xs go least [] = least nonHOrHR Header{} = False nonHOrHR HorizontalRule = False nonHOrHR _ = True -- | Prepare a block list to be passed to makeSections. prepSlides :: Int -> [Block] -> [Block] prepSlides slideLevel = ensureStartWithH . splitHrule . extractRefsHeader where splitHrule (HorizontalRule : Header n attr xs : ys) | n == slideLevel = Header slideLevel attr xs : splitHrule ys splitHrule (HorizontalRule : xs) = Header slideLevel nullAttr [Str "\0"] : splitHrule xs splitHrule (x : xs) = x : splitHrule xs splitHrule [] = [] extractRefsHeader bs = case reverse bs of (Div ("refs",classes,kvs) (Header n attrs xs : ys) : zs) -> reverse zs ++ [Header n attrs xs, Div ("refs",classes,kvs) ys] _ -> bs ensureStartWithH bs@(Header n _ _:_) | n <= slideLevel = bs ensureStartWithH bs@(Div _ (Header n _ _:_) : _) | n <= slideLevel = bs ensureStartWithH bs = Header slideLevel nullAttr [Str "\0"] : bs pandoc-3.1.3/src/Text/Pandoc/Sources.hs0000644000000000000000000001455107346545000016057 0ustar0000000000000000{-# LANGUAGE BangPatterns #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Sources Copyright : Copyright (C) 2021-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Defines Sources object to be used as input to pandoc parsers and redefines Char parsers so they get source position information from it. -} module Text.Pandoc.Sources ( Sources(..) , ToSources(..) , UpdateSourcePos(..) , sourcesToText , initialSourceName , addToSources , ensureFinalNewlines , addToInput , satisfy , oneOf , noneOf , anyChar , char , string , newline , space , spaces , letter , digit , hexDigit , alphaNum ) where import qualified Text.Parsec as P import Text.Parsec (Stream(..), ParsecT) import Text.Parsec.Pos as P import Data.Text (Text) import qualified Data.Text as T import qualified Data.ByteString as BS import qualified Data.ByteString.Lazy as BL import Data.Char (isSpace, isLetter, isAlphaNum, isDigit, isHexDigit) import Data.String (IsString(..)) import qualified Data.List.NonEmpty as NonEmpty -- | A list of inputs labeled with source positions. It is assumed -- that the 'Text's have @\n@ line endings. newtype Sources = Sources { unSources :: [(SourcePos, Text)] } deriving (Show, Semigroup, Monoid) instance Monad m => Stream Sources m Char where uncons (Sources []) = return Nothing uncons (Sources ((pos,t):rest)) = case T.uncons t of Nothing -> uncons (Sources rest) Just (c,t') -> return $ Just (c, Sources ((pos,t'):rest)) instance IsString Sources where fromString s = Sources [(P.initialPos "", T.pack (filter (/='\r') s))] class ToSources a where toSources :: a -> Sources instance ToSources Text where toSources t = Sources [(P.initialPos "", T.filter (/='\r') t)] instance ToSources [(FilePath, Text)] where toSources = Sources . map (\(fp,t) -> (P.initialPos fp, T.snoc (T.filter (/='\r') t) '\n')) instance ToSources Sources where toSources = id sourcesToText :: Sources -> Text sourcesToText (Sources xs) = mconcat $ map snd xs addToSources :: Monad m => SourcePos -> Text -> ParsecT Sources u m () addToSources pos t = do curpos <- P.getPosition Sources xs <- P.getInput let xs' = case xs of [] -> [] ((_,t'):rest) -> (curpos,t'):rest P.setInput $ Sources ((pos, T.filter (/='\r') t):xs') ensureFinalNewlines :: Int -- ^ number of trailing newlines -> Sources -> Sources ensureFinalNewlines n (Sources xs) = case NonEmpty.nonEmpty xs of Nothing -> Sources [(initialPos "", T.replicate n "\n")] Just lst -> case NonEmpty.last lst of (spos, t) -> case T.length (T.takeWhileEnd (=='\n') t) of len | len >= n -> Sources xs | otherwise -> Sources (NonEmpty.init lst ++ [(spos, t <> T.replicate (n - len) "\n")]) class UpdateSourcePos s c where updateSourcePos :: SourcePos -> c -> s -> SourcePos instance UpdateSourcePos Text Char where updateSourcePos pos c _ = updatePosChar pos c instance UpdateSourcePos [Char] Char where updateSourcePos pos c _ = updatePosChar pos c instance UpdateSourcePos BS.ByteString Char where updateSourcePos pos c _ = updatePosChar pos c instance UpdateSourcePos BL.ByteString Char where updateSourcePos pos c _ = updatePosChar pos c instance UpdateSourcePos Sources Char where updateSourcePos pos c sources = case sources of Sources [] -> updatePosChar pos c Sources ((_,t):(pos',_):_) | T.null t -> pos' Sources _ -> case c of '\n' -> incSourceLine (setSourceColumn pos 1) 1 '\t' -> incSourceColumn pos (4 - ((sourceColumn pos - 1) `mod` 4)) _ -> incSourceColumn pos 1 -- | Get name of first source in 'Sources'. initialSourceName :: Sources -> FilePath initialSourceName (Sources []) = "" initialSourceName (Sources ((pos,_):_)) = sourceName pos -- | Add some text to the beginning of the input sources. -- This simplifies code that expands macros. addToInput :: Monad m => Text -> ParsecT Sources u m () addToInput t = do Sources xs <- P.getInput case xs of [] -> P.setInput $ Sources [(initialPos "",t)] (pos,t'):rest -> P.setInput $ Sources ((pos, t <> t'):rest) -- We need to redefine the parsers in Text.Parsec.Char so that they -- update source positions properly from the Sources stream. satisfy :: (Monad m, Stream s m Char, UpdateSourcePos s Char) => (Char -> Bool) -> ParsecT s u m Char satisfy f = P.tokenPrim show updateSourcePos matcher where matcher !c = if f c then Just c else Nothing oneOf :: (Monad m, Stream s m Char, UpdateSourcePos s Char) => [Char] -> ParsecT s u m Char oneOf cs = satisfy (`elem` cs) noneOf :: (Monad m, Stream s m Char, UpdateSourcePos s Char) => [Char] -> ParsecT s u m Char noneOf cs = satisfy (`notElem` cs) anyChar :: (Monad m, Stream s m Char, UpdateSourcePos s Char) => ParsecT s u m Char anyChar = satisfy (const True) char :: (Monad m, Stream s m Char, UpdateSourcePos s Char) => Char -> ParsecT s u m Char char c = satisfy (== c) string :: (Monad m, Stream s m Char, UpdateSourcePos s Char) => [Char] -> ParsecT s u m [Char] string = mapM char newline :: (Monad m, Stream s m Char, UpdateSourcePos s Char) => ParsecT s u m Char newline = satisfy (== '\n') space :: (Monad m, Stream s m Char, UpdateSourcePos s Char) => ParsecT s u m Char space = satisfy isSpace spaces :: (Monad m, Stream s m Char, UpdateSourcePos s Char) => ParsecT s u m () spaces = P.skipMany space P. "white space" letter :: (Monad m, Stream s m Char, UpdateSourcePos s Char) => ParsecT s u m Char letter = satisfy isLetter alphaNum :: (Monad m, Stream s m Char, UpdateSourcePos s Char) => ParsecT s u m Char alphaNum = satisfy isAlphaNum digit :: (Monad m, Stream s m Char, UpdateSourcePos s Char) => ParsecT s u m Char digit = satisfy isDigit hexDigit :: (Monad m, Stream s m Char, UpdateSourcePos s Char) => ParsecT s u m Char hexDigit = satisfy isHexDigit pandoc-3.1.3/src/Text/Pandoc/TeX.hs0000644000000000000000000000314207346545000015126 0ustar0000000000000000{-# LANGUAGE FlexibleInstances #-} {- | Module : Text.Pandoc.TeX Copyright : Copyright (C) 2017-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Types for TeX tokens and macros. -} module Text.Pandoc.TeX ( Tok(..) , TokType(..) , Macro(..) , ArgSpec(..) , ExpansionPoint(..) , MacroScope(..) , SourcePos ) where import Data.Text (Text) import Text.Parsec (SourcePos, sourceName) import Text.Pandoc.Sources import Data.List (groupBy) data TokType = CtrlSeq Text | Spaces | Newline | Symbol | Word | Comment | Esc1 | Esc2 | Arg Int | DeferredArg Int deriving (Eq, Ord, Show) data Tok = Tok SourcePos TokType Text deriving (Eq, Ord, Show) instance ToSources [Tok] where toSources = Sources . map (\ts -> case ts of Tok p _ _ : _ -> (p, mconcat $ map tokToText ts) _ -> error "toSources [Tok] encountered empty group") . groupBy (\(Tok p1 _ _) (Tok p2 _ _) -> sourceName p1 == sourceName p2) tokToText :: Tok -> Text tokToText (Tok _ _ t) = t data ExpansionPoint = ExpandWhenDefined | ExpandWhenUsed deriving (Eq, Ord, Show) data MacroScope = GlobalScope | GroupScope deriving (Eq, Ord, Show) data Macro = Macro MacroScope ExpansionPoint [ArgSpec] (Maybe [Tok]) [Tok] deriving Show data ArgSpec = ArgNum Int | Pattern [Tok] deriving Show pandoc-3.1.3/src/Text/Pandoc/Templates.hs0000644000000000000000000001274607346545000016376 0ustar0000000000000000{-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Templates Copyright : Copyright (C) 2009-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Utility functions for working with pandoc templates. 'WithDefaultPartials' and 'WithPartials' are Monad wrappers. Wrapping these around an instance of 'PandocMonad' gives different instances of 'TemplateMonad', with different search behaviors when retrieving partials. To compile a template and limit partial search to pandoc’s data files, use @runWithDefaultPartials (compileTemplate ...)@. To compile a template and allow partials to be found locally (either on the file system or via HTTP, in the event that the main template has an absolute URL), ue @runWithPartials (compileTemplate ...)@. 'getTemplate' seeks a template locally, or via HTTP if the template has an absolute URL, falling back to the data files if not found. -} module Text.Pandoc.Templates ( Template , WithDefaultPartials(..) , WithPartials(..) , compileTemplate , renderTemplate , getTemplate , getDefaultTemplate , compileDefaultTemplate ) where import System.FilePath ((<.>), (), takeFileName) import Text.DocTemplates (Template, TemplateMonad(..), compileTemplate, renderTemplate) import Text.Pandoc.Class.CommonState (CommonState(..)) import Text.Pandoc.Class.PandocMonad (PandocMonad, fetchItem, getCommonState, modifyCommonState) import Text.Pandoc.Data (readDataFile) import qualified Text.Pandoc.UTF8 as UTF8 import Control.Monad.Except (catchError, throwError) import Data.Text (Text) import qualified Data.Text as T import Text.Pandoc.Error import System.IO.Error (isDoesNotExistError) -- | Wrap a Monad in this if you want partials to -- be taken only from the default data files. newtype WithDefaultPartials m a = WithDefaultPartials { runWithDefaultPartials :: m a } deriving (Functor, Applicative, Monad) -- | Wrap a Monad in this if you want partials to -- be looked for locally (or, when the main template -- is at a URL, via HTTP), falling back to default data files. newtype WithPartials m a = WithPartials { runWithPartials :: m a } deriving (Functor, Applicative, Monad) instance PandocMonad m => TemplateMonad (WithDefaultPartials m) where getPartial fp = WithDefaultPartials $ UTF8.toText <$> readDataFile ("templates" takeFileName fp) instance PandocMonad m => TemplateMonad (WithPartials m) where getPartial fp = WithPartials $ getTemplate fp -- | Retrieve text for a template. getTemplate :: PandocMonad m => FilePath -> m Text getTemplate tp = UTF8.toText <$> ((do surl <- stSourceURL <$> getCommonState -- we don't want to look for templates remotely -- unless the full URL is specified: modifyCommonState $ \st -> st{ stSourceURL = Nothing } (bs, _) <- fetchItem $ T.pack tp modifyCommonState $ \st -> st{ stSourceURL = surl } return bs) `catchError` (\e -> case e of PandocResourceNotFound _ -> -- see #5987 on reason for takeFileName readDataFile ("templates" takeFileName tp) PandocIOError _ ioe | isDoesNotExistError ioe -> -- see #5987 on reason for takeFileName readDataFile ("templates" takeFileName tp) _ -> throwError e)) -- | Get default template for the specified writer. getDefaultTemplate :: PandocMonad m => Text -- ^ Name of writer -> m Text getDefaultTemplate format = do case format of "native" -> return "" "csljson" -> return "" "json" -> return "" "docx" -> return "" "fb2" -> return "" "pptx" -> return "" "ipynb" -> return "" "odt" -> getDefaultTemplate "opendocument" "html" -> getDefaultTemplate "html5" "docbook" -> getDefaultTemplate "docbook5" "epub" -> getDefaultTemplate "epub3" "beamer" -> getDefaultTemplate "latex" "jats" -> getDefaultTemplate "jats_archiving" "markdown_strict" -> getDefaultTemplate "markdown" "multimarkdown" -> getDefaultTemplate "markdown" "markdown_github" -> getDefaultTemplate "markdown" "markdown_mmd" -> getDefaultTemplate "markdown" "markdown_phpextra" -> getDefaultTemplate "markdown" "gfm" -> getDefaultTemplate "commonmark" "commonmark_x" -> getDefaultTemplate "commonmark" _ -> do let fname = "templates" "default" <.> T.unpack format UTF8.toText <$> readDataFile fname -- | Get and compile default template for the specified writer. -- Raise an error on compilation failure. compileDefaultTemplate :: PandocMonad m => Text -> m (Template Text) compileDefaultTemplate writer = do res <- getDefaultTemplate writer >>= runWithDefaultPartials . compileTemplate ("templates/default." <> T.unpack writer) case res of Left e -> throwError $ PandocTemplateError (T.pack e) Right t -> return t pandoc-3.1.3/src/Text/Pandoc/Translations.hs0000644000000000000000000000750107346545000017112 0ustar0000000000000000{-# LANGUAGE CPP #-} {-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Translations Copyright : Copyright (C) 2017-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Functions for getting localized translations of terms. -} module Text.Pandoc.Translations ( module Text.Pandoc.Translations.Types , readTranslations , getTranslations , setTranslations , translateTerm ) where import Text.Pandoc.Translations.Types import Text.Pandoc.Class (PandocMonad(..), CommonState(..), report) import Text.Pandoc.Data (readDataFile) import Text.Pandoc.Error (PandocError(..)) import Text.Pandoc.Logging (LogMessage(..)) import Control.Monad.Except (catchError) import qualified Data.Text as T import qualified Data.Yaml as Yaml import qualified Text.Pandoc.UTF8 as UTF8 import Data.Yaml (prettyPrintParseException) import Text.Collate.Lang (Lang(..), renderLang) -- | Parse YAML translations. readTranslations :: T.Text -> Either T.Text Translations readTranslations s = case Yaml.decodeAllEither' $ UTF8.fromText s of Left err' -> Left $ T.pack $ prettyPrintParseException err' Right (t:_) -> Right t Right [] -> Left "empty YAML document" -- | Select the language to use with 'translateTerm'. -- Note that this does not read a translation file; -- that is only done the first time 'translateTerm' is -- used. setTranslations :: PandocMonad m => Lang -> m () setTranslations lang = modifyCommonState $ \st -> st{ stTranslations = Just (lang, Nothing) } -- | Load term map. getTranslations :: PandocMonad m => m Translations getTranslations = do mbtrans <- getsCommonState stTranslations case mbtrans of Nothing -> return mempty -- no language defined Just (_, Just t) -> return t Just (lang, Nothing) -> do -- read from file let translationFile = "translations/" <> renderLang lang <> ".yaml" let fallbackFile = "translations/" <> langLanguage lang <> ".yaml" let getTrans fp = do bs <- readDataFile fp case readTranslations (UTF8.toText bs) of Left e -> do report $ CouldNotLoadTranslations (renderLang lang) (T.pack fp <> ": " <> e) -- make sure we don't try again... modifyCommonState $ \st -> st{ stTranslations = Nothing } return mempty Right t -> do modifyCommonState $ \st -> st{ stTranslations = Just (lang, Just t) } return t catchError (getTrans $ T.unpack translationFile) (\_ -> catchError (getTrans $ T.unpack fallbackFile) (\e -> do report $ CouldNotLoadTranslations (renderLang lang) $ case e of PandocCouldNotFindDataFileError _ -> "data file " <> fallbackFile <> " not found" _ -> "" -- make sure we don't try again... modifyCommonState $ \st -> st{ stTranslations = Nothing } return mempty)) -- | Get a translation from the current term map. -- Issue a warning if the term is not defined. translateTerm :: PandocMonad m => Term -> m T.Text translateTerm term = do translations <- getTranslations case lookupTerm term translations of Just s -> return s Nothing -> do report $ NoTranslation $ T.pack $ show term return "" pandoc-3.1.3/src/Text/Pandoc/Translations/0000755000000000000000000000000007346545000016553 5ustar0000000000000000pandoc-3.1.3/src/Text/Pandoc/Translations/Types.hs0000644000000000000000000000473507346545000020224 0ustar0000000000000000{-# LANGUAGE CPP #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Translations.Types Copyright : Copyright (C) 2017-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Data types for localization. Translations are stored in @data/translations/langname.trans@, where langname can be the full BCP47 language specifier, or just the language part. File format is: > # A comment, ignored > Figure: Figura > Index: Indeksi -} module Text.Pandoc.Translations.Types ( Term(..) , Translations , lookupTerm ) where import Data.Aeson.Types (Value(..), FromJSON(..)) import qualified Data.Aeson.Types as Aeson import qualified Data.Map as M import qualified Data.Text as T import GHC.Generics (Generic) import Text.Pandoc.Shared (safeRead) data Term = Abstract | Appendix | Bibliography | Cc | Chapter | Contents | Encl | Figure | Glossary | Index | Listing | ListOfFigures | ListOfTables | Page | Part | Preface | Proof | References | See | SeeAlso | Table | To deriving (Show, Eq, Ord, Generic, Enum, Read) newtype Translations = Translations (M.Map Term T.Text) deriving (Show, Generic, Semigroup, Monoid) instance FromJSON Term where parseJSON (String t) = case safeRead t of Just t' -> pure t' Nothing -> Prelude.fail $ "Invalid Term name " ++ show t parseJSON invalid = Aeson.typeMismatch "Term" invalid instance FromJSON Translations where parseJSON o@(Object{}) = do xs <- parseJSON o >>= mapM addItem . M.toList return $ Translations (M.fromList xs) where addItem (k,v) = case safeRead k of Nothing -> Prelude.fail $ "Invalid Term name " ++ show k Just t -> case v of (String s) -> return (t, T.strip s) inv -> Aeson.typeMismatch "String" inv parseJSON invalid = Aeson.typeMismatch "Translations" invalid -- | Lookup a term in a 'Translations'. lookupTerm :: Term -> Translations -> Maybe T.Text lookupTerm t (Translations tm) = M.lookup t tm pandoc-3.1.3/src/Text/Pandoc/URI.hs0000644000000000000000000001221307346545000015064 0ustar0000000000000000{-# LANGUAGE ViewPatterns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE CPP #-} {- | Module : Text.Pandoc.URI Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable -} module Text.Pandoc.URI ( urlEncode , escapeURI , isURI , schemes , uriPathToPath ) where import qualified Network.HTTP.Types as HTTP import qualified Text.Pandoc.UTF8 as UTF8 import qualified Data.Text as T import qualified Data.Set as Set import Data.Char (isSpace, isAscii) import Network.URI (URI (uriScheme), parseURI, escapeURIString) urlEncode :: T.Text -> T.Text urlEncode = UTF8.toText . HTTP.urlEncode True . UTF8.fromText -- | Escape whitespace and some punctuation characters in URI. escapeURI :: T.Text -> T.Text escapeURI = T.pack . escapeURIString (not . needsEscaping) . T.unpack where needsEscaping c = isSpace c || T.any (== c) "<>|\"{}[]^`" -- -- IANA URIs -- -- | Schemes from http://www.iana.org/assignments/uri-schemes.html plus -- the unofficial schemes doi, javascript, isbn, pmid. schemes :: Set.Set T.Text schemes = Set.fromList -- Official IANA schemes [ "aaa", "aaas", "about", "acap", "acct", "acr", "adiumxtra", "afp", "afs" , "aim", "appdata", "apt", "attachment", "aw", "barion", "beshare", "bitcoin" , "blob", "bolo", "browserext", "callto", "cap", "chrome", "chrome-extension" , "cid", "coap", "coaps", "com-eventbrite-attendee", "content", "crid", "cvs" , "data", "dav", "dict", "dis", "dlna-playcontainer", "dlna-playsingle" , "dns", "dntp", "dtn", "dvb", "ed2k", "example", "facetime", "fax", "feed" , "feedready", "file", "filesystem", "finger", "fish", "ftp", "geo", "gg" , "git", "gizmoproject", "go", "gopher", "graph", "gtalk", "h323", "ham" , "hcp", "http", "https", "hxxp", "hxxps", "hydrazone", "iax", "icap", "icon" , "im", "imap", "info", "iotdisco", "ipn", "ipp", "ipps", "irc", "irc6" , "ircs", "iris", "iris.beep", "iris.lwz", "iris.xpc", "iris.xpcs" , "isostore", "itms", "jabber", "jar", "jms", "keyparc", "lastfm", "ldap" , "ldaps", "lvlt", "magnet", "mailserver", "mailto", "maps", "market" , "message", "mid", "mms", "modem", "mongodb", "moz", "ms-access" , "ms-browser-extension", "ms-drive-to", "ms-enrollment", "ms-excel" , "ms-gamebarservices", "ms-getoffice", "ms-help", "ms-infopath" , "ms-media-stream-id", "ms-officeapp", "ms-project", "ms-powerpoint" , "ms-publisher", "ms-search-repair", "ms-secondary-screen-controller" , "ms-secondary-screen-setup", "ms-settings", "ms-settings-airplanemode" , "ms-settings-bluetooth", "ms-settings-camera", "ms-settings-cellular" , "ms-settings-cloudstorage", "ms-settings-connectabledevices" , "ms-settings-displays-topology", "ms-settings-emailandaccounts" , "ms-settings-language", "ms-settings-location", "ms-settings-lock" , "ms-settings-nfctransactions", "ms-settings-notifications" , "ms-settings-power", "ms-settings-privacy", "ms-settings-proximity" , "ms-settings-screenrotation", "ms-settings-wifi", "ms-settings-workplace" , "ms-spd", "ms-sttoverlay", "ms-transit-to", "ms-virtualtouchpad" , "ms-visio", "ms-walk-to", "ms-whiteboard", "ms-whiteboard-cmd", "ms-word" , "msnim", "msrp", "msrps", "mtqp", "mumble", "mupdate", "mvn", "news", "nfs" , "ni", "nih", "nntp", "notes", "ocf", "oid", "onenote", "onenote-cmd" , "opaquelocktoken", "pack", "palm", "paparazzi", "pkcs11", "platform", "pop" , "pres", "prospero", "proxy", "pwid", "psyc", "qb", "query", "redis" , "rediss", "reload", "res", "resource", "rmi", "rsync", "rtmfp", "rtmp" , "rtsp", "rtsps", "rtspu", "secondlife", "service", "session", "sftp", "sgn" , "shttp", "sieve", "sip", "sips", "skype", "smb", "sms", "smtp", "snews" , "snmp", "soap.beep", "soap.beeps", "soldat", "spotify", "ssh", "steam" , "stun", "stuns", "submit", "svn", "tag", "teamspeak", "tel", "teliaeid" , "telnet", "tftp", "things", "thismessage", "tip", "tn3270", "tool", "turn" , "turns", "tv", "udp", "unreal", "urn", "ut2004", "v-event", "vemmi" , "ventrilo", "videotex", "vnc", "view-source", "wais", "webcal", "wpid" , "ws", "wss", "wtai", "wyciwyg", "xcon", "xcon-userid", "xfire" , "xmlrpc.beep", "xmlrpc.beeps", "xmpp", "xri", "ymsgr", "z39.50", "z39.50r" , "z39.50s" -- Unofficial schemes , "doi", "isbn", "javascript", "pmid" ] -- | Check if the string is a valid URL with a IANA or frequently used but -- unofficial scheme (see @schemes@). isURI :: T.Text -> Bool isURI = -- we URI-escape non-ASCII characters because otherwise parseURI will choke: maybe False hasKnownScheme . parseURI . escapeURIString isAscii . T.unpack where hasKnownScheme = (`Set.member` schemes) . T.toLower . T.filter (/= ':') . T.pack . uriScheme -- | Converts the path part of a file: URI to a regular path. -- On windows, @/c:/foo@ should be @c:/foo@. -- On linux, @/foo@ should be @/foo@. uriPathToPath :: T.Text -> FilePath uriPathToPath (T.unpack -> path) = #ifdef _WINDOWS case path of '/':ps -> ps ps -> ps #else path #endif pandoc-3.1.3/src/Text/Pandoc/UTF8.hs0000644000000000000000000001033607346545000015157 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.UTF8 Copyright : Copyright (C) 2010-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable UTF-8 aware string IO functions that will work with GHC 6.10, 6.12, or 7. -} module Text.Pandoc.UTF8 ( readFile , getContents , writeFileWith , writeFile , putStrWith , putStr , putStrLnWith , putStrLn , hPutStrWith , hPutStr , hPutStrLnWith , hPutStrLn , hGetContents , toString , toText , fromString , fromText , toStringLazy , fromTextLazy , toTextLazy , fromStringLazy , encodePath , decodeArg ) where import qualified Data.ByteString.Char8 as B import qualified Data.ByteString.Lazy.Char8 as BL import Data.Text (Text) import qualified Data.Text as T import qualified Data.Text.IO as TIO import qualified Data.Text.Encoding as T import qualified Data.Text.Lazy as TL import qualified Data.Text.Lazy.Encoding as TL import Prelude hiding (getContents, putStr, putStrLn, readFile, writeFile) import System.IO hiding (getContents, hGetContents, hPutStr, hPutStrLn, putStr, putStrLn, readFile, writeFile) readFile :: FilePath -> IO Text readFile f = do h <- openFile (encodePath f) ReadMode hGetContents h getContents :: IO Text getContents = hGetContents stdin writeFileWith :: Newline -> FilePath -> Text -> IO () writeFileWith eol f s = withFile (encodePath f) WriteMode $ \h -> hPutStrWith eol h s writeFile :: FilePath -> Text -> IO () writeFile = writeFileWith nativeNewline putStrWith :: Newline -> Text -> IO () putStrWith eol s = hPutStrWith eol stdout s putStr :: Text -> IO () putStr = putStrWith nativeNewline putStrLnWith :: Newline -> Text -> IO () putStrLnWith eol s = hPutStrLnWith eol stdout s putStrLn :: Text -> IO () putStrLn = putStrLnWith nativeNewline hPutStrWith :: Newline -> Handle -> Text -> IO () hPutStrWith eol h s = hSetNewlineMode h (NewlineMode eol eol) >> hSetEncoding h utf8 >> TIO.hPutStr h s hPutStr :: Handle -> Text -> IO () hPutStr = hPutStrWith nativeNewline hPutStrLnWith :: Newline -> Handle -> Text -> IO () hPutStrLnWith eol h s = hSetNewlineMode h (NewlineMode eol eol) >> hSetEncoding h utf8 >> TIO.hPutStrLn h s hPutStrLn :: Handle -> Text -> IO () hPutStrLn = hPutStrLnWith nativeNewline hGetContents :: Handle -> IO Text hGetContents = fmap toText . B.hGetContents -- | Convert UTF8-encoded ByteString to Text, also -- removing '\\r' characters. toText :: B.ByteString -> Text toText = T.decodeUtf8 . filterCRs . dropBOM where dropBOM bs = if "\xEF\xBB\xBF" `B.isPrefixOf` bs then B.drop 3 bs else bs filterCRs = B.filter (/='\r') -- | Convert UTF8-encoded ByteString to String, also -- removing '\\r' characters. toString :: B.ByteString -> String toString = T.unpack . toText -- | Convert UTF8-encoded ByteString to Text, also -- removing '\\r' characters. toTextLazy :: BL.ByteString -> TL.Text toTextLazy = TL.decodeUtf8 . filterCRs . dropBOM where dropBOM bs = if "\xEF\xBB\xBF" `BL.isPrefixOf` bs then BL.drop 3 bs else bs filterCRs = BL.filter (/='\r') -- | Convert UTF8-encoded ByteString to String, also -- removing '\\r' characters. toStringLazy :: BL.ByteString -> String toStringLazy = TL.unpack . toTextLazy fromText :: Text -> B.ByteString fromText = T.encodeUtf8 fromTextLazy :: TL.Text -> BL.ByteString fromTextLazy = TL.encodeUtf8 fromString :: String -> B.ByteString fromString = fromText . T.pack fromStringLazy :: String -> BL.ByteString fromStringLazy = fromTextLazy . TL.pack encodePath :: FilePath -> FilePath encodePath = id decodeArg :: String -> String decodeArg = id pandoc-3.1.3/src/Text/Pandoc/UUID.hs0000644000000000000000000000326207346545000015177 0ustar0000000000000000{- | Module : Text.Pandoc.UUID Copyright : Copyright (C) 2010-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable UUID generation using Version 4 (random method) described in RFC4122. See http://tools.ietf.org/html/rfc4122 -} module Text.Pandoc.UUID ( UUID(..), getRandomUUID ) where import Data.Bits (clearBit, setBit) import Data.Word import System.Random (RandomGen, randoms) import Text.Printf (printf) import Text.Pandoc.Class.PandocMonad data UUID = UUID Word8 Word8 Word8 Word8 Word8 Word8 Word8 Word8 Word8 Word8 Word8 Word8 Word8 Word8 Word8 Word8 instance Show UUID where show (UUID a b c d e f g h i j k l m n o p) = "urn:uuid:" ++ printf "%02x" a ++ printf "%02x" b ++ printf "%02x" c ++ printf "%02x" d ++ "-" ++ printf "%02x" e ++ printf "%02x" f ++ "-" ++ printf "%02x" g ++ printf "%02x" h ++ "-" ++ printf "%02x" i ++ printf "%02x" j ++ "-" ++ printf "%02x" k ++ printf "%02x" l ++ printf "%02x" m ++ printf "%02x" n ++ printf "%02x" o ++ printf "%02x" p getUUID :: RandomGen g => g -> UUID getUUID gen = case take 16 (randoms gen :: [Word8]) of [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p] -> -- set variant let i' = i `setBit` 7 `clearBit` 6 -- set version (0100 for random) g' = g `clearBit` 7 `setBit` 6 `clearBit` 5 `clearBit` 4 in UUID a b c d e f g' h i' j k l m n o p _ -> error "not enough random numbers for UUID" -- should not happen getRandomUUID :: PandocMonad m => m UUID getRandomUUID = getUUID <$> newStdGen pandoc-3.1.3/src/Text/Pandoc/Version.hs0000644000000000000000000000140507346545000016053 0ustar0000000000000000{-# LANGUAGE CPP #-} {- | Module : Text.Pandoc.Version Copyright : Copyright (C) 2022-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Version information. -} module Text.Pandoc.Version ( pandocVersion, pandocVersionText ) where import Data.Version (Version, showVersion) import Paths_pandoc (version) import qualified Data.Text as T -- | Version number of pandoc library. pandocVersion :: Version pandocVersion = version -- | Text representation of the library's version number. pandocVersionText :: T.Text pandocVersionText = T.pack $ showVersion version pandoc-3.1.3/src/Text/Pandoc/Writers.hs0000644000000000000000000001553507346545000016076 0ustar0000000000000000{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TupleSections #-} {- | Module : Text.Pandoc Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable This helper module exports all writers functions. -} module Text.Pandoc.Writers ( -- * Writers: converting /from/ Pandoc format Writer(..) , writers , writeAsciiDoc , writeAsciiDoctor , writeBeamer , writeBibTeX , writeBibLaTeX , writeChunkedHTML , writeCommonMark , writeConTeXt , writeCslJson , writeDZSlides , writeDocBook4 , writeDocBook5 , writeDocx , writeDokuWiki , writeEPUB2 , writeEPUB3 , writeFB2 , writeIpynb , writeHaddock , writeHtml4 , writeHtml4String , writeHtml5 , writeHtml5String , writeICML , writeJATS , writeJatsArchiving , writeJatsArticleAuthoring , writeJatsPublishing , writeJSON , writeJira , writeLaTeX , writeMan , writeMarkdown , writeMarkua , writeMediaWiki , writeMs , writeMuse , writeNative , writeODT , writeOPML , writeOpenDocument , writeOrg , writePlain , writePowerpoint , writeRST , writeRTF , writeRevealJs , writeS5 , writeSlideous , writeSlidy , writeTEI , writeTexinfo , writeTextile , writeTypst , writeXWiki , writeZimWiki , getWriter ) where import Control.Monad.Except (throwError) import Data.Aeson import qualified Data.ByteString.Lazy as BL import Data.Text (Text) import Text.Pandoc.Class import Text.Pandoc.Definition import qualified Text.Pandoc.Format as Format import Text.Pandoc.Options import qualified Text.Pandoc.UTF8 as UTF8 import Text.Pandoc.Error import Text.Pandoc.Writers.AsciiDoc import Text.Pandoc.Writers.BibTeX import Text.Pandoc.Writers.ChunkedHTML import Text.Pandoc.Writers.CommonMark import Text.Pandoc.Writers.ConTeXt import Text.Pandoc.Writers.CslJson import Text.Pandoc.Writers.DocBook import Text.Pandoc.Writers.Docx import Text.Pandoc.Writers.DokuWiki import Text.Pandoc.Writers.EPUB import Text.Pandoc.Writers.FB2 import Text.Pandoc.Writers.Ipynb import Text.Pandoc.Writers.Haddock import Text.Pandoc.Writers.HTML import Text.Pandoc.Writers.ICML import Text.Pandoc.Writers.JATS import Text.Pandoc.Writers.Jira import Text.Pandoc.Writers.LaTeX import Text.Pandoc.Writers.Man import Text.Pandoc.Writers.Markdown import Text.Pandoc.Writers.MediaWiki import Text.Pandoc.Writers.Ms import Text.Pandoc.Writers.Muse import Text.Pandoc.Writers.Native import Text.Pandoc.Writers.ODT import Text.Pandoc.Writers.OpenDocument import Text.Pandoc.Writers.OPML import Text.Pandoc.Writers.Org import Text.Pandoc.Writers.Powerpoint import Text.Pandoc.Writers.RST import Text.Pandoc.Writers.RTF import Text.Pandoc.Writers.TEI import Text.Pandoc.Writers.Texinfo import Text.Pandoc.Writers.Textile import Text.Pandoc.Writers.Typst import Text.Pandoc.Writers.XWiki import Text.Pandoc.Writers.ZimWiki data Writer m = TextWriter (WriterOptions -> Pandoc -> m Text) | ByteStringWriter (WriterOptions -> Pandoc -> m BL.ByteString) -- | Association list of formats and writers. writers :: PandocMonad m => [ (Text, Writer m) ] writers = [ ("native" , TextWriter writeNative) ,("json" , TextWriter writeJSON) ,("docx" , ByteStringWriter writeDocx) ,("odt" , ByteStringWriter writeODT) ,("pptx" , ByteStringWriter writePowerpoint) ,("epub" , ByteStringWriter writeEPUB3) ,("epub2" , ByteStringWriter writeEPUB2) ,("epub3" , ByteStringWriter writeEPUB3) ,("fb2" , TextWriter writeFB2) ,("ipynb" , TextWriter writeIpynb) ,("html" , TextWriter writeHtml5String) ,("html4" , TextWriter writeHtml4String) ,("html5" , TextWriter writeHtml5String) ,("icml" , TextWriter writeICML) ,("s5" , TextWriter writeS5) ,("slidy" , TextWriter writeSlidy) ,("slideous" , TextWriter writeSlideous) ,("dzslides" , TextWriter writeDZSlides) ,("revealjs" , TextWriter writeRevealJs) ,("docbook" , TextWriter writeDocBook5) ,("docbook4" , TextWriter writeDocBook4) ,("docbook5" , TextWriter writeDocBook5) ,("jats" , TextWriter writeJatsArchiving) ,("jats_articleauthoring", TextWriter writeJatsArticleAuthoring) ,("jats_publishing" , TextWriter writeJatsPublishing) ,("jats_archiving" , TextWriter writeJatsArchiving) ,("jira" , TextWriter writeJira) ,("opml" , TextWriter writeOPML) ,("opendocument" , TextWriter writeOpenDocument) ,("latex" , TextWriter writeLaTeX) ,("beamer" , TextWriter writeBeamer) ,("context" , TextWriter writeConTeXt) ,("texinfo" , TextWriter writeTexinfo) ,("man" , TextWriter writeMan) ,("ms" , TextWriter writeMs) ,("markdown" , TextWriter writeMarkdown) ,("markdown_strict" , TextWriter writeMarkdown) ,("markdown_phpextra" , TextWriter writeMarkdown) ,("markdown_github" , TextWriter writeMarkdown) ,("markdown_mmd" , TextWriter writeMarkdown) ,("plain" , TextWriter writePlain) ,("rst" , TextWriter writeRST) ,("mediawiki" , TextWriter writeMediaWiki) ,("dokuwiki" , TextWriter writeDokuWiki) ,("xwiki" , TextWriter writeXWiki) ,("zimwiki" , TextWriter writeZimWiki) ,("textile" , TextWriter writeTextile) ,("typst" , TextWriter writeTypst) ,("rtf" , TextWriter writeRTF) ,("org" , TextWriter writeOrg) ,("asciidoc" , TextWriter writeAsciiDoc) ,("asciidoctor" , TextWriter writeAsciiDoctor) ,("haddock" , TextWriter writeHaddock) ,("commonmark" , TextWriter writeCommonMark) ,("commonmark_x" , TextWriter writeCommonMark) ,("gfm" , TextWriter writeCommonMark) ,("tei" , TextWriter writeTEI) ,("muse" , TextWriter writeMuse) ,("csljson" , TextWriter writeCslJson) ,("bibtex" , TextWriter writeBibTeX) ,("biblatex" , TextWriter writeBibLaTeX) ,("markua" , TextWriter writeMarkua) ,("chunkedhtml" , ByteStringWriter writeChunkedHTML) ] -- | Retrieve writer, extensions based on formatSpec (format+extensions). getWriter :: PandocMonad m => Format.FlavoredFormat -> m (Writer m, Extensions) getWriter flvrd = do let writerName = Format.formatName flvrd case lookup writerName writers of Nothing -> throwError $ PandocUnknownWriterError writerName Just w -> (w,) <$> Format.applyExtensionsDiff (Format.getExtensionsConfig writerName) flvrd writeJSON :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeJSON _ = return . UTF8.toText . BL.toStrict . encode pandoc-3.1.3/src/Text/Pandoc/Writers/0000755000000000000000000000000007346545000015531 5ustar0000000000000000pandoc-3.1.3/src/Text/Pandoc/Writers/AnnotatedTable.hs0000644000000000000000000003034307346545000020755 0ustar0000000000000000{-# LANGUAGE BangPatterns #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE TupleSections #-} {-# LANGUAGE UndecidableInstances #-} {- | Module : Text.Pandoc.Writers.AnnotatedTable Copyright : Copyright 2020 Christian Despres License : GNU GPL, version 2 or above Maintainer : Christian Despres Stability : alpha Portability : portable Definitions and conversion functions for an intermediate 'Table' and related types, which annotates the existing Pandoc 'B.Table' types with additional inferred information. For use in writers that need to know the details of columns that cells span, row numbers, and the cells that are in the row head. -} module Text.Pandoc.Writers.AnnotatedTable ( toTable , fromTable , Table(..) , TableHead(..) , TableBody(..) , TableFoot(..) , HeaderRow(..) , BodyRow(..) , RowNumber(..) , RowHead , RowBody , Cell(..) , ColNumber(..) ) where import Control.Monad.RWS.Strict import Data.Generics ( Data , Typeable ) import Data.List.NonEmpty ( NonEmpty(..) ) import GHC.Generics ( Generic ) import qualified Text.Pandoc.Builder as B import Text.Pandoc.Walk ( Walkable (..) ) -- | An annotated table type, corresponding to the Pandoc 'B.Table' -- constructor and the HTML @\@ element. It records the data -- of the columns that cells span, the cells in the row head, the row -- numbers of rows, and the column numbers of cells, in addition to -- the data in a 'B.Table'. The type itself does not enforce any -- guarantees about the consistency of this data. Use 'toTable' to -- produce a 'Table' from a Pandoc 'B.Table'. data Table = Table B.Attr B.Caption [B.ColSpec] TableHead [TableBody] TableFoot deriving (Eq, Ord, Read, Show, Typeable, Data, Generic) -- | An annotated table head, corresponding to a Pandoc 'B.TableHead' -- and the HTML @\@ element. data TableHead = TableHead B.Attr [HeaderRow] deriving (Eq, Ord, Read, Show, Typeable, Data, Generic) -- | An annotated table body, with an intermediate head and body, -- corresponding to a Pandoc 'B.TableBody' and the HTML @\@ -- element. data TableBody = TableBody B.Attr B.RowHeadColumns [HeaderRow] [BodyRow] deriving (Eq, Ord, Read, Show, Typeable, Data, Generic) -- | An annotated table foot, corresponding to a Pandoc 'B.TableFoot' -- and the HTML @\@ element. data TableFoot = TableFoot B.Attr [HeaderRow] deriving (Eq, Ord, Read, Show, Typeable, Data, Generic) -- | An annotated header row, corresponding to a Pandoc 'B.Row' and -- the HTML @\@ element, and also recording the row number of the -- row. All the cells in a 'HeaderRow' are header (@\@) cells. data HeaderRow = HeaderRow B.Attr RowNumber [Cell] deriving (Eq, Ord, Read, Show, Typeable, Data, Generic) -- | An annotated body row, corresponding to a Pandoc 'B.Row' and the -- HTML @\@ element, and also recording its row number and -- separating the row head cells from the row body cells. data BodyRow = BodyRow B.Attr RowNumber RowHead RowBody deriving (Eq, Ord, Read, Show, Typeable, Data, Generic) -- | The row number of a row. Note that rows are numbered continuously -- from zero from the start of the table, so the first row in a table -- body, for instance, may have a large 'RowNumber'. newtype RowNumber = RowNumber Int deriving (Eq, Ord, Read, Show, Typeable, Data, Generic, Num, Enum) -- | The head of a body row; the portion of the row lying in the stub -- of the 'TableBody'. Its cells correspond to HTML @\@ cells. type RowHead = [Cell] -- | The body of a body row; the portion of the row lying after the -- stub of the 'TableBody'. Its cells correspond to HTML @\@ -- cells. type RowBody = [Cell] -- | An annotated table cell, wrapping a Pandoc 'B.Cell' with its -- 'ColNumber' and the 'B.ColSpec' data for the columns that the cell -- spans. data Cell = Cell (NonEmpty B.ColSpec) ColNumber B.Cell deriving (Eq, Ord, Read, Show, Typeable, Data, Generic) -- | The column number of a cell, meaning the column number of the -- first column that the cell spans, if the table were laid on a -- grid. Columns are numbered starting from zero. newtype ColNumber = ColNumber Int deriving (Eq, Ord, Read, Show, Typeable, Data, Generic, Num, Enum) -- | Convert a Pandoc 'B.Table' to an annotated 'Table'. This function -- also performs the same normalization that the 'B.table' builder -- does (fixing overlapping cells, cells that protrude out of their -- table section, and so on). If the input table happens to satisfy -- the conditions that 'B.table' guarantees, then the resulting -- 'Table' will be identical, save for the addition of the inferred -- table information. toTable :: B.Attr -> B.Caption -> [B.ColSpec] -> B.TableHead -> [B.TableBody] -> B.TableFoot -> Table toTable attr cap cs th tbs tf = Table attr cap cs th' tbs' tf' where (th', tbs', tf') = fst $ evalRWS (annotateTable th tbs tf) (cs, length cs) 0 -- | Internal monad for annotating a table, passing in the 'B.ColSpec' -- data for the table, the grid width, and the current 'RowNumber' to -- be referenced or updated. type AnnM a = RWS ([B.ColSpec], Int) () RowNumber a incRowNumber :: AnnM RowNumber incRowNumber = do rn <- get put $ rn + 1 return rn annotateTable :: B.TableHead -> [B.TableBody] -> B.TableFoot -> AnnM (TableHead, [TableBody], TableFoot) annotateTable th tbs tf = do th' <- annotateTableHead th tbs' <- traverse annotateTableBody tbs tf' <- annotateTableFoot tf return (th', tbs', tf') annotateTableHead :: B.TableHead -> AnnM TableHead annotateTableHead (B.TableHead attr rows) = TableHead attr <$> annotateHeaderSection rows annotateTableBody :: B.TableBody -> AnnM TableBody annotateTableBody (B.TableBody attr rhc th tb) = do twidth <- asks snd let rhc' = max 0 $ min (B.RowHeadColumns twidth) rhc th' <- annotateHeaderSection th tb' <- annotateBodySection rhc' tb return $ TableBody attr rhc' th' tb' annotateTableFoot :: B.TableFoot -> AnnM TableFoot annotateTableFoot (B.TableFoot attr rows) = TableFoot attr <$> annotateHeaderSection rows annotateHeaderSection :: [B.Row] -> AnnM [HeaderRow] annotateHeaderSection rows = do colspec <- asks fst let hangcolspec = (1, ) <$> colspec annotateHeaderSection' hangcolspec id $ B.clipRows rows where annotateHeaderSection' oldHang acc (B.Row attr cells : rs) = do let (_, newHang, cells', _) = annotateRowSection 0 oldHang $ cells <> repeat B.emptyCell n <- incRowNumber let annRow = HeaderRow attr n cells' annotateHeaderSection' newHang (acc . (annRow :)) rs annotateHeaderSection' _ acc [] = return $ acc [] annotateBodySection :: B.RowHeadColumns -> [B.Row] -> AnnM [BodyRow] annotateBodySection (B.RowHeadColumns rhc) rows = do colspec <- asks fst let colspec' = (1, ) <$> colspec let (stubspec, bodyspec) = splitAt rhc colspec' normalizeBodySection' stubspec bodyspec id $ B.clipRows rows where normalizeBodySection' headHang bodyHang acc (B.Row attr cells : rs) = do let (colnum, headHang', rowStub, cells') = annotateRowSection 0 headHang $ cells <> repeat B.emptyCell let (_, bodyHang', rowBody, _) = annotateRowSection colnum bodyHang cells' n <- incRowNumber let annRow = BodyRow attr n rowStub rowBody normalizeBodySection' headHang' bodyHang' (acc . (annRow :)) rs normalizeBodySection' _ _ acc [] = return $ acc [] -- | Lay out a section of a 'Table' row on a grid row, annotating the -- cells with the 'B.ColSpec' data for the columns that they -- span. Performs the same normalization as 'B.placeRowSection'. annotateRowSection :: ColNumber -- ^ The current column number -> [(B.RowSpan, B.ColSpec)] -- ^ The overhang of the previous grid row, -- with column data -> [B.Cell] -- ^ The cells to annotate -> (ColNumber, [(B.RowSpan, B.ColSpec)], [Cell], [B.Cell]) -- ^ The new -- column -- number, -- overhang, -- annotated -- cells, -- and -- remaining -- cells annotateRowSection !colnum oldHang cells -- If the grid has overhang at our position, try to re-lay in -- the next position. | (o, colspec) : os <- oldHang , o > 1 = let (colnum', newHang, newCell, cells') = annotateRowSection (colnum + 1) os cells in (colnum', (o - 1, colspec) : newHang, newCell, cells') -- Otherwise if there is any available width, place the cell and -- continue. | c : cells' <- cells , (h, w) <- getDim c , w' <- max 1 w , (w'', cellHang@(chStart : chRest), oldHang') <- splitCellHang h w' oldHang = let c' = setW w'' c annCell = Cell (snd <$> chStart :| chRest) colnum c' colnum' = colnum + ColNumber (getColSpan w'') (colnum'', newHang, newCells, remainCells) = annotateRowSection colnum' oldHang' cells' in (colnum'', cellHang <> newHang, annCell : newCells, remainCells) -- Otherwise there is no room in the section | otherwise = (colnum, [], [], cells) where getColSpan (B.ColSpan x) = x getDim (B.Cell _ _ h w _) = (h, w) setW w (B.Cell a b h _ c) = B.Cell a b h w c -- | In @'splitCellHang' rs cs coldata@, with @rs@ the height of a -- cell that lies at the beginning of @coldata@, and @cs@ its width -- (which is not assumed to fit in the available space), return the -- actual width of the cell (what will fit in the available space), -- the data for the columns that the cell spans (including updating -- the overhang to equal @rs@), and the remaining column data. splitCellHang :: B.RowSpan -> B.ColSpan -> [(B.RowSpan, B.ColSpec)] -> (B.ColSpan, [(B.RowSpan, B.ColSpec)], [(B.RowSpan, B.ColSpec)]) splitCellHang h n = go 0 where go acc ((1, spec) : ls) | acc < n = let (acc', hang, ls') = go (acc + 1) ls in (acc', (h, spec) : hang, ls') go acc l = (acc, [], l) -- | Convert an annotated 'Table' to a Pandoc -- 'B.Table'. This is the inverse of 'toTable' on -- well-formed tables (i.e. tables satisfying the guarantees of -- 'B.table'). fromTable :: Table -> ( B.Attr , B.Caption , [B.ColSpec] , B.TableHead , [B.TableBody] , B.TableFoot ) fromTable (Table attr cap cs th tbs tf) = (attr, cap, cs, th', tbs', tf') where th' = fromTableHead th tbs' = map fromTableBody tbs tf' = fromTableFoot tf fromTableHead :: TableHead -> B.TableHead fromTableHead (TableHead attr rows) = B.TableHead attr $ fromHeaderRow <$> rows fromTableBody :: TableBody -> B.TableBody fromTableBody (TableBody attr rhc th tb) = B.TableBody attr rhc (fromHeaderRow <$> th) (fromBodyRow <$> tb) fromTableFoot :: TableFoot -> B.TableFoot fromTableFoot (TableFoot attr rows) = B.TableFoot attr $ fromHeaderRow <$> rows fromHeaderRow :: HeaderRow -> B.Row fromHeaderRow (HeaderRow attr _ cells) = B.Row attr $ fromCell <$> cells fromBodyRow :: BodyRow -> B.Row fromBodyRow (BodyRow attr _ rh rb) = B.Row attr ((fromCell <$> rh) <> (fromCell <$> rb)) fromCell :: Cell -> B.Cell fromCell (Cell _ _ c) = c -- -- Instances -- instance Walkable a B.Cell => Walkable a Cell where walkM f (Cell colspecs colnum cell) = Cell colspecs colnum <$> walkM f cell query f (Cell _colspecs _colnum cell) = query f cell instance Walkable a B.Cell => Walkable a HeaderRow where walkM f (HeaderRow attr rownum cells) = HeaderRow attr rownum <$> walkM f cells query f (HeaderRow _attr _rownum cells) = query f cells instance Walkable a B.Cell => Walkable a TableHead where walkM f (TableHead attr rows) = TableHead attr <$> walkM f rows query f (TableHead _attr rows) = query f rows pandoc-3.1.3/src/Text/Pandoc/Writers/AsciiDoc.hs0000644000000000000000000006612507346545000017555 0ustar0000000000000000{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Writers.AsciiDoc Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Conversion of 'Pandoc' documents to asciidoc. Note that some information may be lost in conversion, due to expressive limitations of asciidoc. Footnotes and table cells with paragraphs (or other block items) are not possible in asciidoc. If pandoc encounters one of these, it will insert a message indicating that it has omitted the construct. AsciiDoc: -} module Text.Pandoc.Writers.AsciiDoc (writeAsciiDoc, writeAsciiDoctor) where import Control.Monad (foldM) import Control.Monad.State.Strict ( StateT, MonadState(get), gets, modify, evalStateT ) import Data.Char (isPunctuation, isSpace) import Data.List (delete, intercalate, intersperse) import Data.List.NonEmpty (NonEmpty(..)) import Data.Maybe (fromMaybe, isJust) import qualified Data.Set as Set import qualified Data.Text as T import Data.Text (Text) import System.FilePath (dropExtension) import Text.Pandoc.Class.PandocMonad (PandocMonad, report) import Text.Pandoc.Definition import Text.Pandoc.ImageSize import Text.Pandoc.Logging import Text.Pandoc.Options import Text.Pandoc.Parsing hiding (blankline, space) import Text.DocLayout import Text.Pandoc.Shared import Text.Pandoc.URI import Text.Pandoc.Templates (renderTemplate) import Text.Pandoc.Writers.Shared import Text.Pandoc.Walk (walk) data WriterState = WriterState { defListMarker :: Text , orderedListLevel :: Int , bulletListLevel :: Int , intraword :: Bool , autoIds :: Set.Set Text , asciidoctorVariant :: Bool , inList :: Bool , hasMath :: Bool -- |0 is no table -- 1 is top level table -- 2 is a table in a table , tableNestingLevel :: Int } defaultWriterState :: WriterState defaultWriterState = WriterState { defListMarker = "::" , orderedListLevel = 0 , bulletListLevel = 0 , intraword = False , autoIds = Set.empty , asciidoctorVariant = False , inList = False , hasMath = False , tableNestingLevel = 0 } -- | Convert Pandoc to AsciiDoc. writeAsciiDoc :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeAsciiDoc opts document = evalStateT (pandocToAsciiDoc opts document) defaultWriterState -- | Convert Pandoc to AsciiDoctor compatible AsciiDoc. writeAsciiDoctor :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeAsciiDoctor opts document = evalStateT (pandocToAsciiDoc opts document) defaultWriterState{ asciidoctorVariant = True } type ADW = StateT WriterState -- | Return asciidoc representation of document. pandocToAsciiDoc :: PandocMonad m => WriterOptions -> Pandoc -> ADW m Text pandocToAsciiDoc opts (Pandoc meta blocks) = do let titleblock = not $ null (docTitle meta) && null (docAuthors meta) && null (docDate meta) let colwidth = if writerWrapText opts == WrapAuto then Just $ writerColumns opts else Nothing metadata <- metaToContext opts (blockListToAsciiDoc opts) (fmap chomp . inlineListToAsciiDoc opts) meta main <- blockListToAsciiDoc opts $ makeSections False (Just 1) blocks st <- get let context = defField "body" main $ defField "toc" (writerTableOfContents opts && isJust (writerTemplate opts)) $ defField "math" (hasMath st) $ defField "titleblock" titleblock metadata return $ render colwidth $ case writerTemplate opts of Nothing -> main Just tpl -> renderTemplate tpl context -- | Escape special characters for AsciiDoc. escapeString :: PandocMonad m => Text -> ADW m (Doc Text) escapeString t = do parentTableLevel <- gets tableNestingLevel let needsEscape '{' = True needsEscape '|' = parentTableLevel > 0 needsEscape _ = False let escChar c | needsEscape c = "\\" <> T.singleton c | otherwise = T.singleton c if T.any needsEscape t then return $ literal $ T.concatMap escChar t else return $ literal t -- | Ordered list start parser for use in Para below. olMarker :: Parsec Text ParserState Char olMarker = do (start, style', delim) <- anyOrderedListMarker if delim == Period && (style' == UpperAlpha || (style' == UpperRoman && start `elem` [1, 5, 10, 50, 100, 500, 1000])) then spaceChar >> spaceChar else spaceChar -- | True if string begins with an ordered list marker -- or would be interpreted as an AsciiDoc option command needsEscaping :: Text -> Bool needsEscaping s = beginsWithOrderedListMarker s || isBracketed s where beginsWithOrderedListMarker str = case runParser olMarker defaultParserState "para start" (T.take 10 str) of Left _ -> False Right _ -> True isBracketed t | Just ('[', t') <- T.uncons t , Just (_, ']') <- T.unsnoc t' = True | otherwise = False -- | Convert Pandoc block element to asciidoc. blockToAsciiDoc :: PandocMonad m => WriterOptions -- ^ Options -> Block -- ^ Block element -> ADW m (Doc Text) blockToAsciiDoc opts (Div (id',"section":_,_) (Header level (_,cls,kvs) ils : xs)) = do hdr <- blockToAsciiDoc opts (Header level (id',cls,kvs) ils) rest <- blockListToAsciiDoc opts xs return $ hdr $$ rest blockToAsciiDoc opts (Plain inlines) = do contents <- inlineListToAsciiDoc opts inlines return $ contents <> blankline blockToAsciiDoc opts (Para inlines) = do contents <- inlineListToAsciiDoc opts inlines -- escape if para starts with ordered list marker let esc = if needsEscaping (render Nothing contents) then text "{empty}" else empty return $ esc <> contents <> blankline blockToAsciiDoc opts (LineBlock lns) = do let docify line = if null line then return blankline else inlineListToAsciiDoc opts line let joinWithLinefeeds = nowrap . mconcat . intersperse cr contents <- joinWithLinefeeds <$> mapM docify lns return $ "[verse]" $$ text "--" $$ contents $$ text "--" $$ blankline blockToAsciiDoc _ b@(RawBlock f s) | f == "asciidoc" = return $ literal s | otherwise = do report $ BlockNotRendered b return empty blockToAsciiDoc _ HorizontalRule = return $ blankline <> text "'''''" <> blankline blockToAsciiDoc opts (Header level (ident,_,_) inlines) = do contents <- inlineListToAsciiDoc opts inlines ids <- gets autoIds let autoId = uniqueIdent (writerExtensions opts) inlines ids modify $ \st -> st{ autoIds = Set.insert autoId ids } let identifier = if T.null ident || (isEnabled Ext_auto_identifiers opts && ident == autoId) then empty else "[[" <> literal ident <> "]]" return $ identifier $$ nowrap (text (replicate (level + 1) '=') <> space <> contents) <> blankline blockToAsciiDoc opts (Figure attr (Caption _ longcapt) body) = do -- Images in figures all get rendered as individual block-level images -- with the given caption. Non-image elements are rendered unchanged. capt <- inlineListToAsciiDoc opts (blocksToInlines longcapt) let renderFigElement = \case Plain [Image imgAttr alternate (src, tit)] -> do args <- imageArguments opts imgAttr alternate src tit let figAttributes = case attr of ("", _, _) -> empty (ident, _, _) -> literal $ "[#" <> ident <> "]" -- .Figure caption -- image::images/logo.png[Company logo, title="blah"] return $ "." <> nowrap capt $$ figAttributes $$ "image::" <> args <> blankline blk -> blockToAsciiDoc opts blk vcat <$> mapM renderFigElement body blockToAsciiDoc _ (CodeBlock (_,classes,_) str) = return $ flush ( if null classes then "...." $$ literal str $$ "...." else attrs $$ "----" $$ literal str $$ "----") <> blankline where attrs = "[" <> literal (T.intercalate "," classes') <> "]" classes' = if "numberLines" `elem` classes then "source%linesnum" : delete "numberLines" classes else "source" : classes blockToAsciiDoc opts (BlockQuote blocks) = do contents <- blockListToAsciiDoc opts blocks let isBlock (BlockQuote _) = True isBlock _ = False -- if there are nested block quotes, put in an open block let contents' = if any isBlock blocks then "--" $$ contents $$ "--" else contents let bar = text "____" return $ bar $$ chomp contents' $$ bar <> blankline blockToAsciiDoc opts block@(Table _ blkCapt specs thead tbody tfoot) = do let (caption, aligns, widths, headers, rows) = toLegacyTable blkCapt specs thead tbody tfoot caption' <- inlineListToAsciiDoc opts caption let caption'' = if null caption then empty else "." <> caption' <> cr let isSimple = all (== 0) widths let relativePercentWidths = if isSimple then widths else map (/ sum widths) widths let widths'' :: [Integer] widths'' = map (floor . (* 100)) relativePercentWidths -- ensure that the widths sum to 100 let widths' = case widths'' of _ | isSimple -> widths'' (w:ws) | sum (w:ws) < 100 -> (100 - sum ws) : ws ws -> ws let totalwidth :: Integer totalwidth = floor $ sum widths * 100 let colspec al wi = (case al of AlignLeft -> "<" AlignCenter -> "^" AlignRight -> ">" AlignDefault -> "") ++ if wi == 0 then "" else show wi ++ "%" let headerspec = if all null headers then empty else text "options=\"header\"," let widthspec = if totalwidth == 0 then empty else text "width=" <> doubleQuotes (text $ show totalwidth ++ "%") <> text "," let tablespec = text "[" <> widthspec <> text "cols=" <> doubleQuotes (text $ intercalate "," $ zipWith colspec aligns widths') <> text "," <> headerspec <> text "]" -- construct cells and recurse in case of nested tables parentTableLevel <- gets tableNestingLevel let currentNestingLevel = parentTableLevel + 1 modify $ \st -> st{ tableNestingLevel = currentNestingLevel } let separator = text (if parentTableLevel == 0 then "|" -- top level separator else "!") -- nested separator let makeCell [Plain x] = do d <- blockListToAsciiDoc opts [Plain x] return $ separator <> chomp d makeCell [Para x] = makeCell [Plain x] makeCell [] = return separator makeCell bs = if currentNestingLevel == 2 then do --asciidoc only supports nesting once report $ BlockNotRendered block return separator else do d <- blockListToAsciiDoc opts bs return $ (text "a" <> separator) $$ d let makeRow cells = hsep `fmap` mapM makeCell cells rows' <- mapM makeRow rows head' <- makeRow headers modify $ \st -> st{ tableNestingLevel = parentTableLevel } let head'' = if all null headers then empty else head' let colwidth = if writerWrapText opts == WrapAuto then writerColumns opts else 100000 let maxwidth = maximum $ fmap offset (head' :| rows') let body = if maxwidth > colwidth then vsep rows' else vcat rows' let border = separator <> text "===" return $ caption'' $$ tablespec $$ border $$ head'' $$ body $$ border $$ blankline blockToAsciiDoc opts (BulletList items) = do inlist <- gets inList modify $ \st -> st{ inList = True } contents <- mapM (bulletListItemToAsciiDoc opts) items modify $ \st -> st{ inList = inlist } return $ mconcat contents <> blankline blockToAsciiDoc opts (OrderedList (start, sty, _delim) items) = do let listStyle = case sty of DefaultStyle -> [] Decimal -> ["arabic"] Example -> [] _ -> [T.toLower (tshow sty)] let listStart = ["start=" <> tshow start | start /= 1] let listoptions = case T.intercalate ", " (listStyle ++ listStart) of "" -> empty x -> brackets (literal x) inlist <- gets inList modify $ \st -> st{ inList = True } contents <- mapM (orderedListItemToAsciiDoc opts) items modify $ \st -> st{ inList = inlist } return $ listoptions $$ mconcat contents <> blankline blockToAsciiDoc opts (DefinitionList items) = do inlist <- gets inList modify $ \st -> st{ inList = True } contents <- mapM (definitionListItemToAsciiDoc opts) items modify $ \st -> st{ inList = inlist } return $ mconcat contents <> blankline blockToAsciiDoc opts (Div (ident,classes,_) bs) = do let identifier = if T.null ident then empty else "[[" <> literal ident <> "]]" let admonitions = ["attention","caution","danger","error","hint", "important","note","tip","warning"] contents <- case classes of (l:_) | l `elem` admonitions -> do let (titleBs, bodyBs) = case bs of (Div (_,["title"],_) ts : rest) -> (ts, rest) _ -> ([], bs) admonitionTitle <- if null titleBs then return mempty else ("." <>) <$> blockListToAsciiDoc opts titleBs admonitionBody <- blockListToAsciiDoc opts bodyBs return $ "[" <> literal (T.toUpper l) <> "]" $$ chomp admonitionTitle $$ "====" $$ chomp admonitionBody $$ "====" _ -> blockListToAsciiDoc opts bs return $ identifier $$ contents $$ blankline -- | Convert bullet list item (list of blocks) to asciidoc. bulletListItemToAsciiDoc :: PandocMonad m => WriterOptions -> [Block] -> ADW m (Doc Text) bulletListItemToAsciiDoc opts blocks = do lev <- gets bulletListLevel modify $ \s -> s{ bulletListLevel = lev + 1 } isAsciidoctor <- gets asciidoctorVariant let blocksWithTasks = if isAsciidoctor then (taskListItemToAsciiDoc blocks) else blocks contents <- foldM (addBlock opts) empty blocksWithTasks modify $ \s -> s{ bulletListLevel = lev } let marker = text (replicate (lev + 1) '*') return $ marker <> text " " <> listBegin blocksWithTasks <> contents <> cr -- | Convert a list item containing text starting with @U+2610 BALLOT BOX@ -- or @U+2612 BALLOT BOX WITH X@ to asciidoctor checkbox syntax (e.g. @[x]@). taskListItemToAsciiDoc :: [Block] -> [Block] taskListItemToAsciiDoc = handleTaskListItem toOrg listExt where toOrg (Str "☐" : Space : is) = Str "[ ]" : Space : is toOrg (Str "☒" : Space : is) = Str "[x]" : Space : is toOrg is = is listExt = extensionsFromList [Ext_task_lists] addBlock :: PandocMonad m => WriterOptions -> Doc Text -> Block -> ADW m (Doc Text) addBlock opts d b = do x <- chomp <$> blockToAsciiDoc opts b return $ case b of BulletList{} -> d <> cr <> x OrderedList{} -> d <> cr <> x Para (Math DisplayMath _:_) -> d <> cr <> x Plain (Math DisplayMath _:_) -> d <> cr <> x Para{} | isEmpty d -> x Plain{} | isEmpty d -> x _ -> d <> cr <> text "+" <> cr <> x listBegin :: [Block] -> Doc Text listBegin blocks = case blocks of Para (Math DisplayMath _:_) : _ -> "{blank}" Plain (Math DisplayMath _:_) : _ -> "{blank}" Para _ : _ -> empty Plain _ : _ -> empty _ : _ -> "{blank}" [] -> "{blank}" -- | Convert ordered list item (a list of blocks) to asciidoc. orderedListItemToAsciiDoc :: PandocMonad m => WriterOptions -- ^ options -> [Block] -- ^ list item (list of blocks) -> ADW m (Doc Text) orderedListItemToAsciiDoc opts blocks = do lev <- gets orderedListLevel modify $ \s -> s{ orderedListLevel = lev + 1 } contents <- foldM (addBlock opts) empty blocks modify $ \s -> s{ orderedListLevel = lev } let marker = text (replicate (lev + 1) '.') return $ marker <> text " " <> listBegin blocks <> contents <> cr -- | Convert definition list item (label, list of blocks) to asciidoc. definitionListItemToAsciiDoc :: PandocMonad m => WriterOptions -> ([Inline],[[Block]]) -> ADW m (Doc Text) definitionListItemToAsciiDoc opts (label, defs) = do labelText <- inlineListToAsciiDoc opts label marker <- gets defListMarker if marker == "::" then modify (\st -> st{ defListMarker = ";;"}) else modify (\st -> st{ defListMarker = "::"}) let divider = cr <> text "+" <> cr let defsToAsciiDoc :: PandocMonad m => [Block] -> ADW m (Doc Text) defsToAsciiDoc ds = (vcat . intersperse divider . map chomp) `fmap` mapM (blockToAsciiDoc opts) ds defs' <- mapM defsToAsciiDoc defs modify (\st -> st{ defListMarker = marker }) let contents = nest 2 $ vcat $ intersperse divider $ map chomp defs' return $ labelText <> literal marker <> cr <> contents <> cr -- | Convert list of Pandoc block elements to asciidoc. blockListToAsciiDoc :: PandocMonad m => WriterOptions -- ^ Options -> [Block] -- ^ List of block elements -> ADW m (Doc Text) blockListToAsciiDoc opts blocks = mconcat `fmap` mapM (blockToAsciiDoc opts) blocks data SpacyLocation = End | Start -- | Convert list of Pandoc inline elements to asciidoc. inlineListToAsciiDoc :: PandocMonad m => WriterOptions -> [Inline] -> ADW m (Doc Text) inlineListToAsciiDoc opts lst = do oldIntraword <- gets intraword setIntraword False result <- go lst setIntraword oldIntraword return result where go [] = return empty go (y:x:xs) | not (isSpacy End y) = do y' <- if isSpacy Start x then inlineToAsciiDoc opts y else withIntraword $ inlineToAsciiDoc opts y x' <- withIntraword $ inlineToAsciiDoc opts x xs' <- go xs return (y' <> x' <> xs') | not (isSpacy Start x) = do y' <- withIntraword $ inlineToAsciiDoc opts y xs' <- go (x:xs) return (y' <> xs') go (x:xs) = do x' <- inlineToAsciiDoc opts x xs' <- go xs return (x' <> xs') isSpacy :: SpacyLocation -> Inline -> Bool isSpacy _ Space = True isSpacy _ LineBreak = True isSpacy _ SoftBreak = True -- Note that \W characters count as spacy in AsciiDoc -- for purposes of determining interword: isSpacy End (Str xs) = case T.unsnoc xs of Just (_, c) -> isPunctuation c || isSpace c _ -> False isSpacy Start (Str xs) | Just (c, _) <- T.uncons xs = isPunctuation c || isSpace c isSpacy _ _ = True setIntraword :: PandocMonad m => Bool -> ADW m () setIntraword b = modify $ \st -> st{ intraword = b } withIntraword :: PandocMonad m => ADW m a -> ADW m a withIntraword p = setIntraword True *> p <* setIntraword False -- | Convert Pandoc inline element to asciidoc. inlineToAsciiDoc :: PandocMonad m => WriterOptions -> Inline -> ADW m (Doc Text) inlineToAsciiDoc opts (Emph [Strong xs]) = inlineToAsciiDoc opts (Strong [Emph xs]) -- see #5565 inlineToAsciiDoc opts (Emph lst) = do contents <- inlineListToAsciiDoc opts lst isIntraword <- gets intraword let marker = if isIntraword then "__" else "_" return $ marker <> contents <> marker inlineToAsciiDoc opts (Underline lst) = do contents <- inlineListToAsciiDoc opts lst return $ "[.underline]#" <> contents <> "#" inlineToAsciiDoc opts (Strong lst) = do contents <- inlineListToAsciiDoc opts lst isIntraword <- gets intraword let marker = if isIntraword then "**" else "*" return $ marker <> contents <> marker inlineToAsciiDoc opts (Strikeout lst) = do contents <- inlineListToAsciiDoc opts lst return $ "[line-through]*" <> contents <> "*" inlineToAsciiDoc opts (Superscript lst) = do contents <- inlineListToAsciiDoc opts lst return $ "^" <> contents <> "^" inlineToAsciiDoc opts (Subscript lst) = do contents <- inlineListToAsciiDoc opts lst return $ "~" <> contents <> "~" inlineToAsciiDoc opts (SmallCaps lst) = inlineListToAsciiDoc opts lst inlineToAsciiDoc opts (Quoted qt lst) = do isAsciidoctor <- gets asciidoctorVariant inlineListToAsciiDoc opts $ case qt of SingleQuote | isAsciidoctor -> [Str "'`"] ++ lst ++ [Str "`'"] | otherwise -> [Str "`"] ++ lst ++ [Str "'"] DoubleQuote | isAsciidoctor -> [Str "\"`"] ++ lst ++ [Str "`\""] | otherwise -> [Str "``"] ++ lst ++ [Str "''"] inlineToAsciiDoc _ (Code _ str) = do isAsciidoctor <- gets asciidoctorVariant let escChar '`' = "\\'" escChar c = T.singleton c let contents = literal (T.concatMap escChar str) return $ if isAsciidoctor then text "`+" <> contents <> "+`" else text "`" <> contents <> "`" inlineToAsciiDoc _ (Str str) = escapeString str inlineToAsciiDoc _ (Math InlineMath str) = do isAsciidoctor <- gets asciidoctorVariant modify $ \st -> st{ hasMath = True } let content = if isAsciidoctor then literal str else "$" <> literal str <> "$" return $ "latexmath:[" <> content <> "]" inlineToAsciiDoc _ (Math DisplayMath str) = do isAsciidoctor <- gets asciidoctorVariant modify $ \st -> st{ hasMath = True } let content = if isAsciidoctor then literal str else "\\[" <> literal str <> "\\]" inlist <- gets inList let sepline = if inlist then text "+" else blankline return $ (cr <> sepline) $$ "[latexmath]" $$ "++++" $$ content $$ "++++" <> cr inlineToAsciiDoc _ il@(RawInline f s) | f == "asciidoc" = return $ literal s | otherwise = do report $ InlineNotRendered il return empty inlineToAsciiDoc _ LineBreak = return $ " +" <> cr inlineToAsciiDoc _ Space = return space inlineToAsciiDoc opts SoftBreak = case writerWrapText opts of WrapAuto -> return space WrapPreserve -> return cr WrapNone -> return space inlineToAsciiDoc opts (Cite _ lst) = inlineListToAsciiDoc opts lst inlineToAsciiDoc opts (Link _ txt (src, _tit)) = do -- relative: link:downloads/foo.zip[download foo.zip] -- abs: http://google.cod[Google] -- or my@email.com[email john] let fixCommas (Str t) = intersperse (RawInline (Format "asciidoc") ",") $ map Str $ T.splitOn "," t -- see #8070 fixCommas x = [x] linktext <- inlineListToAsciiDoc opts $ walk (concatMap fixCommas) txt let isRelative = T.all (/= ':') src let needsPassthrough = "--" `T.isInfixOf` src let prefix = if isRelative then text "link:" else empty let srcSuffix = fromMaybe src (T.stripPrefix "mailto:" src) let useAuto = case txt of [Str s] | escapeURI s == srcSuffix -> True _ -> False return $ if needsPassthrough then if useAuto then "link:++" <> literal srcSuffix <> "++[]" else "link:++" <> literal src <> "++[" <> linktext <> "]" else if useAuto then literal srcSuffix else prefix <> literal src <> "[" <> linktext <> "]" inlineToAsciiDoc opts (Image attr alternate (src, tit)) = ("image:" <>) <$> imageArguments opts attr alternate src tit inlineToAsciiDoc opts (Note [Para inlines]) = inlineToAsciiDoc opts (Note [Plain inlines]) inlineToAsciiDoc opts (Note [Plain inlines]) = do contents <- inlineListToAsciiDoc opts inlines return $ text "footnote:[" <> contents <> "]" -- asciidoc can't handle blank lines in notes inlineToAsciiDoc _ (Note _) = return "[multiblock footnote omitted]" inlineToAsciiDoc opts (Span (ident,classes,_) ils) = do contents <- inlineListToAsciiDoc opts ils isIntraword <- gets intraword let marker = if isIntraword then "##" else "#" if T.null ident && null classes then return contents else do let modifier = brackets $ literal $ T.unwords $ [ "#" <> ident | not (T.null ident)] ++ map ("." <>) classes return $ modifier <> marker <> contents <> marker -- | Provides the arguments for both `image:` and `image::` -- e.g.: sunset.jpg[Sunset,300,200] imageArguments :: PandocMonad m => WriterOptions -> Attr -> [Inline] -> Text -> Text -> ADW m (Doc Text) imageArguments opts attr altText src title = do let txt = if null altText || (altText == [Str ""]) then [Str . T.pack . dropExtension $ T.unpack src] else altText linktext <- inlineListToAsciiDoc opts txt let linktitle = if T.null title then empty else ",title=\"" <> literal title <> "\"" showDim dir = case dimension dir attr of Just (Percent a) -> ["scaledwidth=" <> text (show (Percent a))] Just dim -> [text (show dir) <> "=" <> literal (showInPixel opts dim)] Nothing -> [] dimList = showDim Width ++ showDim Height dims = if null dimList then empty else "," <> mconcat (intersperse "," dimList) return $ literal src <> "[" <> linktext <> linktitle <> dims <> "]" pandoc-3.1.3/src/Text/Pandoc/Writers/BibTeX.hs0000644000000000000000000000427707346545000017214 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Writers.BibTeX Copyright : Copyright (C) 2021-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Writes a BibTeX or BibLaTeX bibliographies based on the 'references' metadata in a Pandoc document. -} module Text.Pandoc.Writers.BibTeX ( writeBibTeX , writeBibLaTeX ) where import Text.Pandoc.Options import Text.Pandoc.Definition import Data.Text (Text) import Data.Maybe (mapMaybe) import Citeproc (parseLang) import Text.Pandoc.Class (PandocMonad) import Text.Pandoc.Citeproc.BibTeX as BibTeX import Text.Pandoc.Citeproc.MetaValue (metaValueToReference) import Text.Pandoc.Writers.Shared (lookupMetaString, defField, addVariablesToContext) import Text.DocLayout (render, vcat) import Text.DocTemplates (Context(..)) import Text.Pandoc.Templates (renderTemplate) -- | Write BibTeX based on the references metadata from a Pandoc document. writeBibTeX :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeBibTeX = writeBibTeX' BibTeX.Bibtex -- | Write BibLaTeX based on the references metadata from a Pandoc document. writeBibLaTeX :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeBibLaTeX = writeBibTeX' BibTeX.Biblatex writeBibTeX' :: PandocMonad m => Variant -> WriterOptions -> Pandoc -> m Text writeBibTeX' variant opts (Pandoc meta _) = do let mblang = case lookupMetaString "lang" meta of "" -> Nothing t -> either (const Nothing) Just $ parseLang t let refs = case lookupMeta "references" meta of Just (MetaList xs) -> mapMaybe metaValueToReference xs _ -> [] let main = vcat $ map (BibTeX.writeBibtexString opts variant mblang) refs let context = defField "body" main $ addVariablesToContext opts (mempty :: Context Text) let colwidth = if writerWrapText opts == WrapAuto then Just $ writerColumns opts else Nothing return $ render colwidth $ case writerTemplate opts of Nothing -> main Just tpl -> renderTemplate tpl context pandoc-3.1.3/src/Text/Pandoc/Writers/Blaze.hs0000644000000000000000000001145707346545000017132 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Writers.Blaze Copyright : Copyright (C) 2021-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Render blaze-html Html to DocLayout document (so it can be wrapped). -} module Text.Pandoc.Writers.Blaze ( layoutMarkup ) where import Text.Blaze import qualified Data.ByteString as S import Data.List (isInfixOf) import Data.Text.Encoding (decodeUtf8) import qualified Data.Text as T import Data.Text (Text) import Text.DocLayout hiding (Text, Empty) import Text.Blaze.Internal (ChoiceString(..), getText, MarkupM(..)) layoutMarkup :: Markup -> Doc T.Text layoutMarkup = go True mempty where go :: Bool -> Doc T.Text -> MarkupM b -> Doc T.Text go wrap attrs (Parent _ open close content) = let open' = getText open in literal open' <> attrs <> char '>' <> (case open' of " go False mempty content t | t == " flush $ go False mempty content | otherwise -> go wrap mempty content) <> literal (getText close) go wrap attrs (CustomParent tag content) = char '<' <> fromChoiceString wrap tag <> attrs <> char '>' <> go wrap mempty content <> literal " fromChoiceString wrap tag <> char '>' go _wrap attrs (Leaf _ begin end _) = literal (getText begin) <> attrs <> literal (getText end) go wrap attrs (CustomLeaf tag close _) = char '<' <> fromChoiceString wrap tag <> attrs <> (if close then literal " />" else char '>') go wrap attrs (AddAttribute rawkey _ value h) = go wrap (space' wrap <> literal (getText rawkey) <> char '=' <> doubleQuotes (fromChoiceString False value) <> attrs) h go wrap attrs (AddCustomAttribute key value h) = go wrap (space' wrap <> fromChoiceString wrap key <> char '=' <> doubleQuotes (fromChoiceString False value) <> attrs) h go wrap _ (Content content _) = fromChoiceString wrap content go wrap _ (Comment comment _) = literal "" go wrap attrs (Append h1 h2) = go wrap attrs h1 <> go wrap attrs h2 go _ _ (Empty _) = mempty space' wrap = if wrap then space else char ' ' fromChoiceString :: Bool -- ^ Allow wrapping -> ChoiceString -- ^ String to render -> Doc Text -- ^ Resulting builder fromChoiceString wrap (Static s) = withWrap wrap $ getText s fromChoiceString wrap (String s) = withWrap wrap $ escapeMarkupEntities $ T.pack s fromChoiceString wrap (Text s) = withWrap wrap $ escapeMarkupEntities s fromChoiceString wrap (ByteString s) = withWrap wrap $ decodeUtf8 s fromChoiceString _wrap (PreEscaped x) = -- don't wrap! case x of String s -> literal $ T.pack s Text s -> literal s s -> fromChoiceString False s fromChoiceString wrap (External x) = case x of -- Check that the sequence " if " if " if " fromChoiceString wrap s fromChoiceString wrap (AppendChoiceString x y) = fromChoiceString wrap x <> fromChoiceString wrap y fromChoiceString _ EmptyChoiceString = mempty withWrap :: Bool -> Text -> Doc Text withWrap wrap | wrap = mconcat . toChunks | otherwise = literal toChunks :: Text -> [Doc Text] toChunks = map toDoc . T.groupBy sameStatus where toDoc t | t == " " = space | t == "\n" = cr | otherwise = literal t sameStatus c d = (c == ' ' && d == ' ') || (c == '\n' && d == '\n') || (c /= ' ' && d /= ' ' && c /= '\n' && d /= '\n') -- | Escape predefined XML entities in a text value -- escapeMarkupEntities :: Text -- ^ Text to escape -> Text -- ^ Resulting Doc escapeMarkupEntities = T.concatMap escape where escape :: Char -> Text escape '<' = "<" escape '>' = ">" escape '&' = "&" escape '"' = """ escape '\'' = "'" escape x = T.singleton x pandoc-3.1.3/src/Text/Pandoc/Writers/ChunkedHTML.hs0000644000000000000000000001450507346545000020140 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Writers.ChunkedHTML Copyright : Copyright (C) 2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Conversion of 'Pandoc' documents to "chunked" HTML (a folder of linked HTML documents, split by sections. -} module Text.Pandoc.Writers.ChunkedHTML ( writeChunkedHTML ) where import Text.Pandoc.Definition import Text.Pandoc.Options (WriterOptions(..)) import Text.Pandoc.Shared (stringify, tshow) import Text.Pandoc.Class (PandocMonad, getPOSIXTime, runPure, fetchItem, insertMedia, getMediaBag) import Text.Pandoc.MediaBag (mediaItems) import qualified Data.ByteString.Lazy as BL import Text.Pandoc.Chunks (splitIntoChunks, Chunk(..), ChunkedDoc(..), SecInfo(..), tocToList) import Text.Pandoc.URI (isURI) import Data.Text (Text) import Data.Tree import qualified Data.Text as T import qualified Data.Text.Encoding as TE import Text.Pandoc.Writers.HTML (writeHtml5String) import Codec.Archive.Zip (Entry, addEntryToArchive, emptyArchive, toEntry, fromArchive) import qualified Data.Map as M import Text.DocTemplates (Context(..), Val(..)) import Text.DocLayout (literal) import Text.Pandoc.Writers.Shared (defField) import Data.Aeson (toJSON, encode) import System.FilePath (isRelative, normalise) import Data.List (isInfixOf) import Text.Pandoc.Walk (walkM) import Text.Pandoc.Builder (setMeta) -- | Splits document into HTML chunks, dividing them by section, -- and returns a zip archive of a folder of files. writeChunkedHTML :: PandocMonad m => WriterOptions -> Pandoc -> m BL.ByteString writeChunkedHTML opts (Pandoc meta blocks) = do walkM addMedia (Pandoc meta blocks) epochtime <- floor <$> getPOSIXTime let toMediaEntry (fp, _mt, bs) = toEntry fp epochtime bs mediaEntries <- map toMediaEntry . mediaItems <$> getMediaBag let chunkedDoc = splitIntoChunks (writerChunkTemplate opts) True (Just 1) (writerSplitLevel opts) (Pandoc meta blocks) let topChunk = Chunk { chunkHeading = docTitle meta , chunkId = "top" , chunkLevel = 0 , chunkNumber = 0 , chunkSectionNumber = Nothing , chunkPath = "index.html" , chunkUp = Nothing , chunkPrev = Nothing , chunkNext = case chunkedChunks chunkedDoc of [] -> Nothing (x:_) -> Just x , chunkUnlisted = True , chunkContents = mempty } let chunks = map (\x -> case chunkUp x of Nothing -> x{ chunkUp = Just topChunk } _ -> x) $ case chunkedChunks chunkedDoc of [] -> [] (x:xs) -> x{ chunkPrev = Just topChunk } : xs let Node secinfo secs = chunkedTOC chunkedDoc let tocTree = Node secinfo{ secTitle = docTitle meta, secPath = "index.html" } secs renderedTOC <- writeHtml5String opts{ writerTemplate = Nothing } (Pandoc nullMeta [buildTOC opts tocTree]) let opts' = opts{ writerVariables = defField "table-of-contents" renderedTOC $ writerVariables opts } entries <- mapM (chunkToEntry opts' meta topChunk) (topChunk : chunks) let sitemap = toEntry "sitemap.json" epochtime (encode $ toJSON $ tocTreeToContext tocTree) let archive = foldr addEntryToArchive emptyArchive (sitemap : entries ++ mediaEntries) return $ fromArchive archive -- We include in the zip only local media that is in the working directory -- or below. addMedia :: PandocMonad m => Inline -> m Inline addMedia il@(Image _ _ (src,_)) | not (isURI src) , fp <- normalise (T.unpack src) , isRelative fp , not (".." `isInfixOf` fp) = do (bs, mbMime) <- fetchItem (T.pack fp) insertMedia fp mbMime (BL.fromStrict bs) return il addMedia il = return il buildTOC :: WriterOptions -> Tree SecInfo -> Block buildTOC opts = tocToList (writerNumberSections opts) (writerTOCDepth opts) chunkToEntry :: PandocMonad m => WriterOptions -> Meta -> Chunk -> Chunk -> m Entry chunkToEntry opts meta topChunk chunk = do html <- writeHtml5String opts' (Pandoc meta' blocks) epochtime <- floor <$> getPOSIXTime let htmlLBS = BL.fromStrict $ TE.encodeUtf8 html return $ toEntry (chunkPath chunk) epochtime htmlLBS where opts' = opts{ writerVariables = addContextVars opts' topChunk chunk $ writerVariables opts } meta' = setMeta "pagetitle" (MetaString (stringify $ chunkHeading chunk)) meta blocks = chunkContents chunk tocTreeToContext :: Tree SecInfo -> Context Text tocTreeToContext (Node secinfo subs) = Context $ M.fromList [ ("section", MapVal $ secInfoToContext secinfo) , ("subsections", ListVal $ map (MapVal . tocTreeToContext) subs) ] secInfoToContext :: SecInfo -> Context Text secInfoToContext sec = Context $ M.fromList [ ("title", SimpleVal $ literal $ stringify $ secTitle sec) , ("number", maybe NullVal (SimpleVal . literal) (secNumber sec)) , ("id", SimpleVal $ literal $ secId sec) , ("path", SimpleVal $ literal $ secPath sec) , ("level", SimpleVal $ literal $ tshow $ secLevel sec) ] addContextVars :: WriterOptions -> Chunk -> Chunk -> Context Text -> Context Text addContextVars opts topChunk chunk context = maybe id (defField "next" . navlinks) (chunkNext chunk) . maybe id (defField "previous" . navlinks) (chunkPrev chunk) . maybe id (defField "up" . navlinks) (chunkUp chunk) . maybe id (defField "top" . navlinks) (if chunk == topChunk then Nothing else Just topChunk) . defField "toc" (chunk == topChunk && writerTableOfContents opts) $ context where navlinks ch = toMapVal [("url", formatPath ch), ("title", formatHeading ch)] toMapVal = MapVal . Context . M.fromList formatPath = SimpleVal . literal . T.pack . chunkPath formatHeading ch = SimpleVal . literal . either (const "") id . runPure $ writeHtml5String opts{ writerTemplate = Nothing } (Pandoc nullMeta [Plain $ chunkHeading ch]) pandoc-3.1.3/src/Text/Pandoc/Writers/CommonMark.hs0000644000000000000000000000072007346545000020127 0ustar0000000000000000{- | Module : Text.Pandoc.Writers.CommonMark Copyright : Copyright (C) 2015-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Conversion of 'Pandoc' documents to CommonMark. CommonMark: -} module Text.Pandoc.Writers.CommonMark (writeCommonMark) where import Text.Pandoc.Writers.Markdown (writeCommonMark) pandoc-3.1.3/src/Text/Pandoc/Writers/ConTeXt.hs0000644000000000000000000010360507346545000017416 0ustar0000000000000000{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE ViewPatterns #-} {- | Module : Text.Pandoc.Writers.ConTeXt Copyright : Copyright (C) 2007-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Conversion of 'Pandoc' format into ConTeXt. -} module Text.Pandoc.Writers.ConTeXt ( writeConTeXt ) where import Control.Monad (liftM, unless) import Control.Monad.State.Strict ( StateT, MonadState(put, get), gets, modify, evalStateT ) import Data.Char (ord, isDigit) import Data.List (intersperse) import Data.List.NonEmpty (NonEmpty ((:|))) import Data.Maybe (isNothing, mapMaybe, catMaybes) import Data.Monoid (Any (Any, getAny)) import Data.Text (Text) import qualified Data.Text as T import Network.URI (unEscapeString) import Text.Collate.Lang (Lang(..)) import Text.Pandoc.Class.PandocMonad (PandocMonad, report, toLang) import Text.Pandoc.Definition import Text.Pandoc.Highlighting (formatConTeXtBlock, formatConTeXtInline, highlight, styleToConTeXt) import Text.Pandoc.ImageSize import Text.Pandoc.Logging import Text.Pandoc.Options import Text.DocLayout import Text.Pandoc.Shared import Text.Pandoc.URI (isURI) import Text.Pandoc.Templates (renderTemplate) import Text.Pandoc.Walk (query) import Text.Pandoc.Writers.Shared import Text.Printf (printf) import qualified Data.List.NonEmpty as NonEmpty import qualified Data.Map.Strict as Map import qualified Text.Pandoc.Writers.AnnotatedTable as Ann data WriterState = WriterState { stCslHangingIndent :: Bool -- CSL hanging indent , stHasCslRefs :: Bool -- has CSL citations , stHighlighting :: Bool -- has syntax-highlighted code blocks , stNextRef :: Int -- number of next URL reference , stOptions :: WriterOptions -- writer options , stOrderedListLevel :: Int -- level of ordered list , stEmphasisCommands :: Map.Map Text (Doc Text) } -- | Table type data Tabl = Xtb -- ^ Extreme tables | Ntb -- ^ Natural tables deriving (Show, Eq) -- | Whether a heading belongs to a section environment or is standalone. data HeadingType = SectionHeading | NonSectionHeading orderedListStyles :: [Char] orderedListStyles = cycle "narg" -- | Convert Pandoc to ConTeXt. writeConTeXt :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeConTeXt options document = let defaultWriterState = WriterState { stCslHangingIndent = False , stHasCslRefs = False , stHighlighting = False , stNextRef = 1 , stOptions = options , stOrderedListLevel = 0 , stEmphasisCommands = mempty } in evalStateT (pandocToConTeXt options document) defaultWriterState type WM = StateT WriterState pandocToConTeXt :: PandocMonad m => WriterOptions -> Pandoc -> WM m Text pandocToConTeXt options (Pandoc meta blocks) = do let colwidth = if writerWrapText options == WrapAuto then Just $ writerColumns options else Nothing metadata <- metaToContext options blockListToConTeXt (fmap chomp . inlineListToConTeXt) meta main <- blockListToConTeXt $ makeSections False Nothing blocks let layoutFromMargins = mconcat $ intersperse ("," :: Doc Text) $ mapMaybe (\(x,y) -> ((x <> "=") <>) <$> getField y metadata) [("leftmargin","margin-left") ,("rightmargin","margin-right") ,("top","margin-top") ,("bottom","margin-bottom") ] mblang <- fromBCP47 (getLang options meta) st <- get let context = defField "toc" (writerTableOfContents options) $ defField "placelist" (mconcat . intersperse ("," :: Doc Text) $ take (writerTOCDepth options + case writerTopLevelDivision options of TopLevelPart -> 0 TopLevelChapter -> 0 _ -> 1) ["chapter","section","subsection","subsubsection", "subsubsubsection","subsubsubsubsection"]) $ defField "body" main $ defField "layout" layoutFromMargins $ defField "number-sections" (writerNumberSections options) $ defField "csl-refs" (stHasCslRefs st) $ defField "csl-hanging-indent" (stCslHangingIndent st) $ maybe id (\l -> defField "context-lang" (literal l :: Doc Text)) mblang $ (case T.unpack . render Nothing <$> getField "papersize" metadata of Just (('a':d:ds) :: String) | all isDigit (d:ds) -> resetField "papersize" (T.pack ('A':d:ds)) _ -> id) $ defField "emphasis-commands" (mconcat $ Map.elems (stEmphasisCommands st)) $ (case writerHighlightStyle options of Just sty | stHighlighting st -> defField "highlighting-commands" (styleToConTeXt sty) _ -> id) $ (case T.toLower $ lookupMetaString "pdfa" meta of "true" -> resetField "pdfa" (T.pack "1b:2005") _ -> id) metadata let context' = defField "context-dir" (maybe mempty toContextDir $ getField "dir" context) context return $ render colwidth $ case writerTemplate options of Nothing -> main Just tpl -> renderTemplate tpl context' -- change rtl to r2l, ltr to l2r toContextDir :: Doc Text -> Doc Text toContextDir = fmap (\t -> case t of "ltr" -> "l2r" "rtl" -> "r2l" _ -> t) -- | escape things as needed for ConTeXt escapeCharForConTeXt :: WriterOptions -> Char -> Text escapeCharForConTeXt opts ch = let ligatures = isEnabled Ext_smart opts in case ch of '{' -> "\\{" '}' -> "\\}" '\\' -> "\\letterbackslash{}" '$' -> "\\$" '|' -> "\\letterbar{}" '%' -> "\\letterpercent{}" '~' -> "\\lettertilde{}" '#' -> "\\#" '[' -> "{[}" ']' -> "{]}" '\160' -> "~" '\x2014' | ligatures -> "---" '\x2013' | ligatures -> "--" '\x2019' | ligatures -> "'" '\x2026' -> "\\ldots{}" x -> T.singleton x -- | Escape string for ConTeXt stringToConTeXt :: WriterOptions -> Text -> Text stringToConTeXt opts = T.concatMap (escapeCharForConTeXt opts) -- | Sanitize labels toLabel :: Text -> Text toLabel z = T.concatMap go z where go x | x `elem` ("\\#[]\",{}%()|=" :: String) = "ux" <> T.pack (printf "%x" (ord x)) | otherwise = T.singleton x -- | Convert Pandoc block element to ConTeXt. blockToConTeXt :: PandocMonad m => Block -> WM m (Doc Text) blockToConTeXt (Div attr@(_,"section":_,_) (Header level _ title' : xs)) = do header' <- sectionHeader attr level title' SectionHeading footer' <- sectionFooter attr level innerContents <- blockListToConTeXt xs return $ header' $$ innerContents $$ footer' blockToConTeXt (Plain lst) = do opts <- gets stOptions contents <- inlineListToConTeXt lst return $ if isEnabled Ext_tagging opts then "\\bpar{}" <> contents <> "\\epar{}" else contents blockToConTeXt (Para lst) = do opts <- gets stOptions contents <- inlineListToConTeXt lst return $ if isEnabled Ext_tagging opts then "\\bpar" $$ contents $$ "\\epar" <> blankline else contents <> blankline blockToConTeXt (LineBlock lns) = do let emptyToBlankline doc = if isEmpty doc then blankline else doc doclines <- mapM inlineListToConTeXt lns let contextLines = vcat . map emptyToBlankline $ doclines return $ "\\startlines" $$ contextLines $$ "\\stoplines" <> blankline blockToConTeXt (BlockQuote lst) = do contents <- blockListToConTeXt lst return $ "\\startblockquote" $$ nest 0 contents $$ "\\stopblockquote" <> blankline blockToConTeXt (CodeBlock (_ident, classes, kv) str) = do opts <- gets stOptions let syntaxMap = writerSyntaxMap opts let attr' = ("", classes, kv) let unhighlighted = vcat ["\\starttyping", literal str, "\\stoptyping"] let highlighted = case highlight syntaxMap formatConTeXtBlock attr' str of Left msg -> do unless (T.null msg) $ report (CouldNotHighlight msg) return unhighlighted Right h -> do modify (\s -> s{ stHighlighting = True }) return (literal h) -- blankline because \stoptyping can't have anything after it, inc. '}' ($$ blankline) . flush <$> if null classes || isNothing (writerHighlightStyle opts) then pure unhighlighted else highlighted blockToConTeXt b@(RawBlock f str) | f == Format "context" || f == Format "tex" = return $ literal str <> blankline | otherwise = empty <$ report (BlockNotRendered b) blockToConTeXt (Div ("refs",classes,_) bs) = do modify $ \st -> st{ stHasCslRefs = True , stCslHangingIndent = "hanging-indent" `elem` classes } inner <- blockListToConTeXt bs return $ "\\startcslreferences" $$ inner $$ "\\stopcslreferences" blockToConTeXt (Div (ident,_,kvs) bs) = do let align dir txt = "\\startalignment[" <> dir <> "]" $$ txt $$ "\\stopalignment" mblang <- fromBCP47 (lookup "lang" kvs) let wrapRef txt = if T.null ident then txt else ("\\reference" <> brackets (literal $ toLabel ident) <> braces empty <> "%") $$ txt wrapDir = case lookup "dir" kvs of Just "rtl" -> align "righttoleft" Just "ltr" -> align "lefttoright" _ -> id wrapLang txt = case mblang of Just lng -> "\\start\\language[" <> literal lng <> "]" $$ txt $$ "\\stop" Nothing -> txt wrapBlank txt = blankline <> txt <> blankline wrapBlank . wrapLang . wrapDir . wrapRef <$> blockListToConTeXt bs blockToConTeXt (BulletList lst) = do contents <- mapM listItemToConTeXt lst return $ ("\\startitemize" <> if isTightList lst then brackets "packed" else empty) $$ vcat contents $$ literal "\\stopitemize" <> blankline blockToConTeXt (OrderedList (start, style', delim) lst) = do st <- get let level = stOrderedListLevel st put st {stOrderedListLevel = level + 1} contents <- mapM listItemToConTeXt lst put st {stOrderedListLevel = level} let start' = if start == 1 then "" else "start=" <> tshow start let delim' = case delim of DefaultDelim -> "" Period -> "stopper=." OneParen -> "stopper=)" TwoParens -> "left=(,stopper=)" let specs2Items = filter (not . T.null) [start', delim'] let specs2 = if null specs2Items then "" else "[" <> T.intercalate "," specs2Items <> "]" let style'' = '[': (case style' of DefaultStyle -> orderedListStyles !! level Decimal -> 'n' Example -> 'n' LowerRoman -> 'r' UpperRoman -> 'R' LowerAlpha -> 'a' UpperAlpha -> 'A') : if isTightList lst then ",packed]" else "]" let specs = T.pack style'' <> specs2 return $ "\\startenumerate" <> literal specs $$ vcat contents $$ "\\stopenumerate" <> blankline blockToConTeXt (DefinitionList lst) = liftM vcat $ mapM defListItemToConTeXt lst blockToConTeXt HorizontalRule = return $ "\\thinrule" <> blankline -- If this is ever executed, provide a default for the reference identifier. blockToConTeXt (Header level attr lst) = sectionHeader attr level lst NonSectionHeading blockToConTeXt (Table attr caption colspecs thead tbody tfoot) = tableToConTeXt (Ann.toTable attr caption colspecs thead tbody tfoot) blockToConTeXt (Figure (ident, _, _) (Caption cshort clong) body) = do title <- inlineListToConTeXt (blocksToInlines clong) list <- maybe (pure empty) inlineListToConTeXt cshort content <- blockListToConTeXt body let options = ["reference=" <> literal (toLabel ident) | not (T.null ident)] ++ ["title=" <> braces title | not (isEmpty title)] ++ ["list=" <> braces list | not (isEmpty list)] let hasSubfigures = getAny $ query (Any . \case {Figure {} -> True; _ -> False}) body return $ "\\startplacefigure" <> brackets (mconcat $ intersperse "," options) $$ (if hasSubfigures then "\\startfloatcombination" else empty) $$ content $$ (if hasSubfigures then "\\stopfloatcombination" else empty) $$ "\\stopplacefigure" $$ blankline tableToConTeXt :: PandocMonad m => Ann.Table -> WM m (Doc Text) tableToConTeXt (Ann.Table attr caption colspecs thead tbodies tfoot) = do opts <- gets stOptions let tabl = if isEnabled Ext_ntb opts then Ntb else Xtb captionText <- case caption of Caption _ [] -> return mempty Caption _ longCapt -> blockListToConTeXt longCapt head' <- tableHeadToConTeXt tabl thead bodies <- mapM (tableBodyToConTeXt tabl) tbodies foot' <- tableFootToConTeXt tabl tfoot let body = case tabl of Xtb -> "\\startxtable" $$ head' $$ "\\startxtablebody[body]" $$ vcat bodies $$ "\\stopxtablebody" $$ foot' $$ "\\stopxtable" Ntb -> setupCols colspecs $$ "\\bTABLE" $$ head' $$ "\\bTABLEbody" $$ vcat bodies $$ "\\eTABLEbody" $$ foot' $$ "\\eTABLE" let (ident, _classes, _attribs) = attr let tblopts = filter (not . isEmpty) [ if isEmpty captionText then "location=none" else "title=" <> braces captionText , if T.null ident then empty else "reference=" <> braces (literal (toLabel ident)) ] return $ vcat [ "\\startplacetable" <> brackets (mconcat $ intersperse "," tblopts) , body , "\\stopplacetable" <> blankline ] setupCols :: [ColSpec] -> Doc Text setupCols = vcat . zipWith toColSetup [1::Int ..] where toColSetup i (align, width) = let opts = filter (not . isEmpty) [ case align of AlignLeft -> "align=right" AlignRight -> "align=left" AlignCenter -> "align=middle" AlignDefault -> "align=left" , case width of ColWidthDefault -> empty ColWidth w -> ("width=" <>) . braces . text $ printf "%.2f\\textwidth" w ] in "\\setupTABLE[column]" <> brackets (text $ show i) <> brackets (mconcat $ intersperse "," opts) tableBodyToConTeXt :: PandocMonad m => Tabl -> Ann.TableBody -> WM m (Doc Text) tableBodyToConTeXt tabl (Ann.TableBody _attr _rowHeadCols inthead rows) = do intermediateHead <- if null inthead then return mempty else headerRowsToConTeXt tabl Thead inthead bodyRows <- bodyRowsToConTeXt tabl rows return $ intermediateHead <> bodyRows tableHeadToConTeXt :: PandocMonad m => Tabl -> Ann.TableHead -> WM m (Doc Text) tableHeadToConTeXt tabl (Ann.TableHead attr rows) = tablePartToConTeXt tabl Thead attr rows tableFootToConTeXt :: PandocMonad m => Tabl -> Ann.TableFoot -> WM m (Doc Text) tableFootToConTeXt tbl (Ann.TableFoot attr rows) = tablePartToConTeXt tbl Tfoot attr rows tablePartToConTeXt :: PandocMonad m => Tabl -> TablePart -> Attr -> [Ann.HeaderRow] -> WM m (Doc Text) tablePartToConTeXt tabl tblpart _attr rows = do let (startCmd, stopCmd) = case (tabl, tblpart) of (Ntb, Thead) -> ("\\bTABLEhead", "\\eTABLEhead") (Ntb, Tfoot) -> ("\\bTABLEfoot", "\\eTABLEfoot") (Xtb, Thead) -> ("\\startxtablehead[head]", "\\stopxtablehead") (Xtb, Tfoot) -> ("\\startxtablefoot[foot]", "\\stopxtablefoot") _ -> ("", "") -- this would be unexpected contents <- headerRowsToConTeXt tabl tblpart rows return $ startCmd $$ contents $$ stopCmd -- | The part of a table; header, footer, or body. data TablePart = Thead | Tfoot | Tbody deriving (Eq) data CellType = HeaderCell | BodyCell data TableRow = TableRow TablePart Attr Ann.RowHead Ann.RowBody headerRowsToConTeXt :: PandocMonad m => Tabl -> TablePart -> [Ann.HeaderRow] -> WM m (Doc Text) headerRowsToConTeXt tabl tablepart = rowListToConTeXt tabl . map toTableRow where toTableRow (Ann.HeaderRow attr _rownum rowbody) = TableRow tablepart attr [] rowbody bodyRowsToConTeXt :: PandocMonad m => Tabl -> [Ann.BodyRow] -> WM m (Doc Text) bodyRowsToConTeXt tabl = rowListToConTeXt tabl . map toTableRow where toTableRow (Ann.BodyRow attr _rownum rowhead rowbody) = TableRow Tbody attr rowhead rowbody rowListToConTeXt :: PandocMonad m => Tabl -> [TableRow] -> WM m (Doc Text) rowListToConTeXt = \case Ntb -> fmap vcat . mapM (tableRowToConTeXt Ntb) Xtb -> \rows -> do (butlast, lastrow) <- case reverse rows of [] -> pure ( [] , empty ) r:rs -> (,) <$> (mapM (tableRowToConTeXt Xtb) (reverse rs)) <*> tableRowToConTeXt Xtb r return $ vcat butlast $$ if isEmpty lastrow then empty else "\\startxrowgroup[lastrow]" $$ lastrow $$ "\\stopxrowgroup" tableRowToConTeXt :: PandocMonad m => Tabl -> TableRow -> WM m (Doc Text) tableRowToConTeXt tabl (TableRow tblpart _attr rowhead rowbody) = do let celltype = case tblpart of Thead -> HeaderCell _ -> BodyCell headcells <- mapM (tableCellToConTeXt tabl HeaderCell) rowhead bodycells <- mapM (tableCellToConTeXt tabl celltype) rowbody let cells = vcat headcells $$ vcat bodycells return $ case tabl of Xtb -> "\\startxrow" $$ cells $$ "\\stopxrow" Ntb -> "\\bTR" $$ cells $$ "\\eTR" tableCellToConTeXt :: PandocMonad m => Tabl -> CellType -> Ann.Cell -> WM m (Doc Text) tableCellToConTeXt tabl celltype (Ann.Cell colspecs _colnum cell) = do let Cell _attr cellalign rowspan colspan blocks = cell let (colalign, _) :| _ = colspecs let halign = alignToConTeXt $ case (cellalign, tabl) of (AlignDefault, Xtb) -> colalign _ -> cellalign let nx = case colspan of ColSpan 1 -> empty ColSpan n -> "nc=" <> literal (tshow n) let ny = case rowspan of RowSpan 1 -> empty RowSpan n -> "nr=" <> literal (tshow n) let widths = map snd (NonEmpty.toList colspecs) let mbcolwidth = flip map widths $ \case ColWidthDefault -> Nothing ColWidth w -> Just w let colwidth = case catMaybes mbcolwidth of [] -> empty ws -> ("width=" <>) . braces . text $ printf "%.2f\\textwidth" (sum ws) let keys = hcat . intersperse "," $ filter (not . isEmpty) $ case tabl of Xtb -> [halign, colwidth, nx, ny] Ntb -> [halign, nx, ny] -- no need for a column width let options = (if isEmpty keys then empty else brackets keys) <> space cellContents <- blockListToConTeXt blocks return $ case tabl of Xtb -> "\\startxcell" <> options <> cellContents <> " \\stopxcell" Ntb -> case celltype of BodyCell -> "\\bTD" <> options <> cellContents <> "\\eTD" HeaderCell -> "\\bTH" <> options <> cellContents <> "\\eTH" alignToConTeXt :: Alignment -> Doc Text alignToConTeXt = \case AlignLeft -> "align=right" AlignRight -> "align=left" AlignCenter -> "align=middle" AlignDefault -> empty --- --- Lists -- listItemToConTeXt :: PandocMonad m => [Block] -> WM m (Doc Text) listItemToConTeXt list = ("\\item" $$) . nest 2 <$> blockListToConTeXt list defListItemToConTeXt :: PandocMonad m => ([Inline], [[Block]]) -> WM m (Doc Text) defListItemToConTeXt (term, defs) = do term' <- inlineListToConTeXt term def' <- liftM vsep $ mapM blockListToConTeXt defs return $ "\\startdescription" <> braces term' $$ nest 2 def' $$ "\\stopdescription" <> blankline -- | Convert list of block elements to ConTeXt. blockListToConTeXt :: PandocMonad m => [Block] -> WM m (Doc Text) blockListToConTeXt lst = liftM vcat $ mapM blockToConTeXt lst -- | Convert list of inline elements to ConTeXt. inlineListToConTeXt :: PandocMonad m => [Inline] -- ^ Inlines to convert -> WM m (Doc Text) inlineListToConTeXt lst = liftM hcat $ mapM inlineToConTeXt $ addStruts lst -- We add a \strut after a line break that precedes a space, -- or the space gets swallowed where addStruts (LineBreak : s : xs) | isSpacey s = LineBreak : RawInline (Format "context") "\\strut " : s : addStruts xs addStruts (x:xs) = x : addStruts xs addStruts [] = [] isSpacey Space = True isSpacey (Str (T.uncons -> Just ('\160',_))) = True isSpacey _ = False highlightInlines :: PandocMonad m => Text -> (Doc Text) -> [Inline] -> WM m (Doc Text) highlightInlines name style inlines = do opts <- gets stOptions contents <- inlineListToConTeXt inlines if not (isEnabled Ext_tagging opts) then return $ braces (style <> space <> contents) else do let cmd = "\\definehighlight " <> brackets (literal name) <> brackets ("style=" <> braces style) modify (\st -> st{ stEmphasisCommands = Map.insert name cmd (stEmphasisCommands st) }) return $ "\\" <> literal name <> braces contents -- | Convert inline element to ConTeXt inlineToConTeXt :: PandocMonad m => Inline -- ^ Inline to convert -> WM m (Doc Text) inlineToConTeXt (Emph lst) = highlightInlines "emph" "\\em" lst inlineToConTeXt (Strong lst) = highlightInlines "strong" "\\bf" lst inlineToConTeXt (SmallCaps lst) = highlightInlines "smallcaps" "\\sc" lst inlineToConTeXt (Underline lst) = do contents <- inlineListToConTeXt lst return $ "\\underbar" <> braces contents inlineToConTeXt (Strikeout lst) = do contents <- inlineListToConTeXt lst return $ "\\overstrikes" <> braces contents inlineToConTeXt (Superscript lst) = do contents <- inlineListToConTeXt lst return $ "\\high" <> braces contents inlineToConTeXt (Subscript lst) = do contents <- inlineListToConTeXt lst return $ "\\low" <> braces contents inlineToConTeXt (Code (_ident, classes, _kv) str) = do let rawCode = pure . literal $ case typeDelim str of Just (open, close) -> "\\type" <> (open `T.cons` str) `T.snoc` close Nothing -> "\\type[escape=yes]{" <> (T.replace "{" "/BTEX\\letteropenbrace /ETEX" . T.replace "}" "/BTEX\\letterclosebrace /ETEX" $ str) `T.snoc` '}' opts <- gets stOptions let syntaxMap = writerSyntaxMap opts let attr' = ("", classes, []) let highlightCode = case highlight syntaxMap formatConTeXtInline attr' str of Left msg -> do unless (T.null msg) $ report (CouldNotHighlight msg) rawCode Right h -> do modify (\st -> st{ stHighlighting = True }) return (text (T.unpack h)) if isNothing (writerHighlightStyle opts) || null classes then rawCode else highlightCode inlineToConTeXt (Quoted SingleQuote lst) = do contents <- inlineListToConTeXt lst return $ "\\quote" <> braces contents inlineToConTeXt (Quoted DoubleQuote lst) = do contents <- inlineListToConTeXt lst return $ "\\quotation" <> braces contents inlineToConTeXt (Cite _ lst) = inlineListToConTeXt lst inlineToConTeXt (Str str) = do opts <- gets stOptions return $ literal $ stringToConTeXt opts str inlineToConTeXt (Math InlineMath str) = return $ char '$' <> literal str <> char '$' inlineToConTeXt (Math DisplayMath str) = return $ literal "\\startformula " <> literal str <> literal " \\stopformula" <> space inlineToConTeXt il@(RawInline f str) | f == Format "tex" || f == Format "context" = return $ literal str | otherwise = empty <$ report (InlineNotRendered il) inlineToConTeXt LineBreak = return $ literal "\\crlf" <> cr inlineToConTeXt SoftBreak = do wrapText <- gets (writerWrapText . stOptions) return $ case wrapText of WrapAuto -> space WrapNone -> space WrapPreserve -> cr inlineToConTeXt Space = return space inlineToConTeXt (Link _ txt (src, _)) = do let isAutolink = txt == [Str (T.pack $ unEscapeString $ T.unpack src)] let escConTeXtURL = T.concatMap $ \case '#' -> "\\#" '%' -> "\\%" c -> T.singleton c if isAutolink then do next <- gets stNextRef modify $ \st -> st {stNextRef = next + 1} let ref = "url" <> tshow next return $ mconcat [ "\\useURL" , brackets (literal ref) , brackets (literal $ escConTeXtURL src) , "\\from" , brackets (literal ref) ] else do contents <- inlineListToConTeXt txt -- Handle HTML-like internal document references to sections reference <- case T.uncons src of Just ('#', ref) -> toLabel <$> (stringToConTeXt <$> gets stOptions <*> pure ref) _ -> pure $ "url(" <> escConTeXtURL src <> ")" return $ mconcat [ "\\goto" , braces contents , brackets (literal reference) ] inlineToConTeXt (Image attr@(_,cls,_) _ (src, _)) = do opts <- gets stOptions let showDim dir = let d = literal (tshow dir) <> "=" in case dimension dir attr of Just (Pixel a) -> [d <> literal (showInInch opts (Pixel a)) <> "in"] Just (Percent a) -> [d <> literal (showFl (a / 100)) <> "\\textwidth"] Just dim -> [d <> literal (tshow dim)] Nothing -> [] dimList = showDim Width ++ showDim Height dims = if null dimList then empty else brackets $ mconcat (intersperse "," dimList) clas = if null cls then empty else brackets $ literal $ toLabel $ head cls -- Use / for path separators on Windows; see #4918 fixPathSeparators = T.map $ \c -> case c of '\\' -> '/' _ -> c src' = fixPathSeparators $ if isURI src then src else T.pack $ unEscapeString $ T.unpack src return $ braces $ "\\externalfigure" <> brackets (literal src') <> dims <> clas inlineToConTeXt (Note contents) = do contents' <- blockListToConTeXt contents let codeBlock x@(CodeBlock _ _) = [x] codeBlock _ = [] let codeBlocks = query codeBlock contents return $ if null codeBlocks then literal "\\footnote{" <> nest 2 (chomp contents') <> char '}' else literal "\\startbuffer " <> nest 2 (chomp contents') <> literal "\\stopbuffer\\footnote{\\getbuffer}" inlineToConTeXt (Span (ident,_,kvs) ils) = do mblang <- fromBCP47 (lookup "lang" kvs) let wrapDir txt = case lookup "dir" kvs of Just "rtl" -> braces $ "\\righttoleft " <> txt Just "ltr" -> braces $ "\\lefttoright " <> txt _ -> txt wrapLang txt = case mblang of Just lng -> braces ("\\language" <> brackets (literal lng) <> txt) Nothing -> txt addReference = if T.null ident then id else (("\\reference" <> brackets (literal ident) <> "{}") <>) addReference . wrapLang . wrapDir <$> inlineListToConTeXt ils -- | Craft the section header, inserting the section reference, if supplied. sectionHeader :: PandocMonad m => Attr -> Int -> [Inline] -> HeadingType -> WM m (Doc Text) sectionHeader (ident,classes,kvs) hdrLevel lst secenv = do opts <- gets stOptions contents <- inlineListToConTeXt lst levelText <- sectionLevelToText opts (ident,classes,kvs) hdrLevel secenv let optsList = mconcat . filter (not . null) $ [ ["title=" <> braces contents | not (isEmpty contents)] , ["reference=" <> braces (literal (toLabel ident)) | not (T.null ident)] , ["number=no" | "unnumbered" `elem` classes] , ["incrementnumber=no" | "unnumbered" `elem` classes] ] let starter = case secenv of SectionHeading -> "\\start" NonSectionHeading -> "\\" let options = if null optsList || isEmpty levelText then empty else brackets $ hcat (intersperse "," optsList) return $ starter <> levelText <> options <> blankline -- | Craft the section footer sectionFooter :: PandocMonad m => Attr -> Int -> WM m (Doc Text) sectionFooter attr hdrLevel = do opts <- gets stOptions levelText <- sectionLevelToText opts attr hdrLevel SectionHeading return $ "\\stop" <> levelText <> blankline -- | Generate a textual representation of the section level sectionLevelToText :: PandocMonad m => WriterOptions -> Attr -> Int -> HeadingType -> WM m (Doc Text) sectionLevelToText opts (_,classes,_) hdrLevel headingType = do let unlisted = "unlisted" `elem` classes let semanticSection shift = do let (section, chapter) = if unlisted then (literal "subject", literal "title") else (literal "section", literal "chapter") return $ case hdrLevel + shift of -1 -> literal "part" 0 -> chapter n | n >= 1 -> text (concat (replicate (n - 1) "sub")) <> section _ -> empty -- cannot happen case writerTopLevelDivision opts of TopLevelPart -> semanticSection (-2) TopLevelChapter -> semanticSection (-1) TopLevelSection -> semanticSection 0 TopLevelDefault -> if unlisted then semanticSection 0 else return . literal $ case headingType of SectionHeading -> "sectionlevel" NonSectionHeading -> "" -- | Finds a pair of symbols that can be used as delimiters. typeDelim :: Text -> Maybe (Char, Char) typeDelim t = let delimChars = "{\"'`()-+=%,.:;" go delims '}' = go delims '{' go delims c = T.filter (/= c) delims in case fmap fst . T.uncons $ T.foldl' go delimChars t of Just '{' -> Just ('{', '}') Just c -> Just (c, c) Nothing -> Nothing fromBCP47 :: PandocMonad m => Maybe Text -> WM m (Maybe Text) fromBCP47 mbs = fromBCP47' <$> toLang mbs -- Takes a list of the constituents of a BCP 47 language code -- and irons out ConTeXt's exceptions -- https://tools.ietf.org/html/bcp47#section-2.1 -- http://wiki.contextgarden.net/Language_Codes fromBCP47' :: Maybe Lang -> Maybe Text fromBCP47' (Just (Lang "ar" _ (Just "SY") _ _ _)) = Just "ar-sy" fromBCP47' (Just (Lang "ar" _ (Just "IQ") _ _ _)) = Just "ar-iq" fromBCP47' (Just (Lang "ar" _ (Just "JO") _ _ _)) = Just "ar-jo" fromBCP47' (Just (Lang "ar" _ (Just "LB") _ _ _)) = Just "ar-lb" fromBCP47' (Just (Lang "ar" _ (Just "DZ") _ _ _)) = Just "ar-dz" fromBCP47' (Just (Lang "ar" _ (Just "MA") _ _ _)) = Just "ar-ma" fromBCP47' (Just (Lang "de" _ _ ["1901"] _ _)) = Just "deo" fromBCP47' (Just (Lang "de" _ (Just "DE") _ _ _)) = Just "de-de" fromBCP47' (Just (Lang "de" _ (Just "AT") _ _ _)) = Just "de-at" fromBCP47' (Just (Lang "de" _ (Just "CH") _ _ _)) = Just "de-ch" fromBCP47' (Just (Lang "el" _ _ ["poly"] _ _)) = Just "agr" fromBCP47' (Just (Lang "en" _ (Just "US") _ _ _)) = Just "en-us" fromBCP47' (Just (Lang "en" _ (Just "GB") _ _ _)) = Just "en-gb" fromBCP47' (Just (Lang "grc"_ _ _ _ _)) = Just "agr" fromBCP47' (Just (Lang "el" _ _ _ _ _)) = Just "gr" fromBCP47' (Just (Lang "eu" _ _ _ _ _)) = Just "ba" fromBCP47' (Just (Lang "he" _ _ _ _ _)) = Just "il" fromBCP47' (Just (Lang "jp" _ _ _ _ _)) = Just "ja" fromBCP47' (Just (Lang "uk" _ _ _ _ _)) = Just "ua" fromBCP47' (Just (Lang "vi" _ _ _ _ _)) = Just "vn" fromBCP47' (Just (Lang "zh" _ _ _ _ _)) = Just "cn" fromBCP47' (Just (Lang l _ _ _ _ _)) = Just l fromBCP47' Nothing = Nothing pandoc-3.1.3/src/Text/Pandoc/Writers/CslJson.hs0000644000000000000000000000717707346545000017454 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Writers.CslJson Copyright : Copyright (C) 2020-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Conversion of references from 'Pandoc' metadata to CSL JSON: . Note that this writer ignores everything in the body of the document and everything in the metadata except `references`. It assumes that the `references` field is a list with the structure of a CSL JSON bibliography. -} module Text.Pandoc.Writers.CslJson ( writeCslJson ) where import Data.Text (Text) import qualified Data.Text as T import qualified Text.Pandoc.UTF8 as UTF8 import Text.Pandoc.Error import Text.Pandoc.Class import Control.Monad.Except (throwError) import Data.ByteString.Lazy (toStrict) import Data.ByteString (ByteString) import Text.Pandoc.Definition import Text.Pandoc.Builder as B import Text.Pandoc.Citeproc.MetaValue (metaValueToReference, metaValueToText) import Citeproc (parseLang, Locale, Reference(..), Lang(..)) import Control.Monad.Identity import Citeproc.Locale (getLocale) import Citeproc.CslJson import Text.Pandoc.Options (WriterOptions) import Data.Maybe (mapMaybe, fromMaybe) import Data.Aeson.Encode.Pretty (Config (..), Indent (Spaces), NumberFormat (Generic), defConfig, encodePretty') writeCslJson :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeCslJson _opts (Pandoc meta _) = do let lang = fromMaybe (Lang "en" Nothing (Just "US") [] [] []) (lookupMeta "lang" meta >>= metaValueToText >>= either (const Nothing) Just . parseLang) locale <- case getLocale lang of Left e -> throwError $ PandocCiteprocError e Right l -> return l let rs = case lookupMeta "references" meta of Just (MetaList xs) -> xs _ -> [] return $ UTF8.toText (toCslJson locale (mapMaybe metaValueToReference rs)) <> "\n" fromInlines :: [Inline] -> CslJson Text fromInlines = foldMap fromInline . B.fromList fromInline :: Inline -> CslJson Text fromInline (Str t) = CslText t fromInline (Emph ils) = CslItalic (fromInlines ils) fromInline (Strong ils) = CslBold (fromInlines ils) fromInline (Underline ils) = CslUnderline (fromInlines ils) fromInline (Strikeout ils) = fromInlines ils fromInline (Superscript ils) = CslSup (fromInlines ils) fromInline (Subscript ils) = CslSub (fromInlines ils) fromInline (SmallCaps ils) = CslSmallCaps (fromInlines ils) fromInline (Quoted _ ils) = CslQuoted (fromInlines ils) fromInline (Cite _ ils) = fromInlines ils fromInline (Code _ t) = CslText t fromInline Space = CslText " " fromInline SoftBreak = CslText " " fromInline LineBreak = CslText "\n" fromInline (Math _ t) = CslText t fromInline (RawInline _ _) = CslEmpty fromInline (Link _ ils _) = fromInlines ils fromInline (Image _ ils _) = fromInlines ils fromInline (Note _) = CslEmpty fromInline (Span (_,[cl],_) ils) | "csl-" `T.isPrefixOf` cl = CslDiv cl (fromInlines ils) | cl == "nocase" = CslNoCase (fromInlines ils) fromInline (Span _ ils) = fromInlines ils toCslJson :: Locale -> [Reference Inlines] -> ByteString toCslJson locale = toStrict . encodePretty' defConfig{ confIndent = Spaces 2 , confCompare = compare , confNumFormat = Generic } . map (runIdentity . traverse (return . renderCslJson False locale . foldMap fromInline)) pandoc-3.1.3/src/Text/Pandoc/Writers/DocBook.hs0000644000000000000000000005744007346545000017417 0ustar0000000000000000{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE PatternGuards #-} {- | Module : Text.Pandoc.Writers.DocBook Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Conversion of 'Pandoc' documents to DocBook XML. -} module Text.Pandoc.Writers.DocBook ( writeDocBook4, writeDocBook5 ) where import Control.Monad.Reader import Data.Generics (everywhere, mkT) import Data.List (nub, partition) import Data.Maybe (isNothing) import Data.Monoid (All (..), Any (..)) import Data.Text (Text) import qualified Data.Text as T import qualified Text.Pandoc.Builder as B import Text.Pandoc.Class.PandocMonad (PandocMonad, report) import Text.Pandoc.Definition import Text.Pandoc.Highlighting (languages, languagesByExtension) import Text.Pandoc.ImageSize import Text.Pandoc.Logging import Text.Pandoc.Options import Text.DocLayout import Text.Pandoc.Shared import Text.Pandoc.URI import Text.Pandoc.Templates (renderTemplate) import Text.Pandoc.Writers.Shared import Text.Pandoc.Walk import Text.Pandoc.Writers.Math import Text.Pandoc.XML import Text.TeXMath import qualified Text.XML.Light as Xml data DocBookVersion = DocBook4 | DocBook5 deriving (Eq, Show) type DB = ReaderT DocBookVersion -- | Get level of the top-level headers based on the configured top-level division. -- The header level can then be used to determine appropriate DocBook element -- for each subdivision associated with a header. -- The numbering here follows LaTeX's internal numbering getStartLvl :: WriterOptions -> Int getStartLvl opts = case writerTopLevelDivision opts of TopLevelPart -> -1 TopLevelChapter -> 0 TopLevelSection -> 1 TopLevelDefault -> 1 -- | Get correct name for the id attribute based on DocBook version. -- DocBook 4 used custom id attribute but DocBook 5 adopted the xml:id specification. -- https://www.w3.org/TR/xml-id/ idName :: DocBookVersion -> Text idName DocBook5 = "xml:id" idName DocBook4 = "id" -- | Convert list of authors to a docbook section authorToDocBook :: PandocMonad m => WriterOptions -> [Inline] -> DB m B.Inlines authorToDocBook opts name' = do name <- render Nothing <$> inlinesToDocBook opts name' let colwidth = if writerWrapText opts == WrapAuto then Just $ writerColumns opts else Nothing return $ B.rawInline "docbook" $ render colwidth $ inTags True "personname" [] $ if T.any (== ',') name then -- last name first let (lastname, rest) = T.break (==',') name firstname = triml rest in inTagsSimple "firstname" (literal $ escapeStringForXML firstname) <> inTagsSimple "surname" (literal $ escapeStringForXML lastname) else -- last name last let namewords = T.words name lengthname = length namewords (firstname, lastname) = case lengthname of 0 -> ("","") 1 -> ("", name) n -> (T.unwords (take (n-1) namewords), last namewords) in inTagsSimple "firstname" (literal $ escapeStringForXML firstname) $$ inTagsSimple "surname" (literal $ escapeStringForXML lastname) writeDocBook4 :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeDocBook4 opts d = runReaderT (writeDocBook opts d) DocBook4 writeDocBook5 :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeDocBook5 opts d = runReaderT (writeDocBook opts d) DocBook5 -- | Convert Pandoc document to string in DocBook format. writeDocBook :: PandocMonad m => WriterOptions -> Pandoc -> DB m Text writeDocBook opts doc = do let Pandoc meta blocks = ensureValidXmlIdentifiers doc let colwidth = if writerWrapText opts == WrapAuto then Just $ writerColumns opts else Nothing let startLvl = getStartLvl opts let fromBlocks = blocksToDocBook opts . makeSections False (Just startLvl) auths' <- mapM (authorToDocBook opts) $ docAuthors meta let meta' = B.setMeta "author" auths' meta metadata <- metaToContext opts fromBlocks (inlinesToDocBook opts) meta' main <- fromBlocks blocks let context = defField "body" main $ defField "mathml" (case writerHTMLMathMethod opts of MathML -> True _ -> False) metadata return $ render colwidth $ (if writerPreferAscii opts then fmap toEntities else id) $ case writerTemplate opts of Nothing -> main Just tpl -> renderTemplate tpl context -- | Convert a list of Pandoc blocks to DocBook. blocksToDocBook :: PandocMonad m => WriterOptions -> [Block] -> DB m (Doc Text) blocksToDocBook opts = fmap vcat . mapM (blockToDocBook opts) -- | Auxiliary function to convert Plain block to Para. plainToPara :: Block -> Block plainToPara (Plain x) = Para x plainToPara x = x -- | Convert a list of pairs of terms and definitions into a list of -- DocBook varlistentrys. deflistItemsToDocBook :: PandocMonad m => WriterOptions -> [([Inline],[[Block]])] -> DB m (Doc Text) deflistItemsToDocBook opts items = vcat <$> mapM (uncurry (deflistItemToDocBook opts)) items -- | Convert a term and a list of blocks into a DocBook varlistentry. deflistItemToDocBook :: PandocMonad m => WriterOptions -> [Inline] -> [[Block]] -> DB m (Doc Text) deflistItemToDocBook opts term defs = do term' <- inlinesToDocBook opts term def' <- blocksToDocBook opts $ concatMap (map plainToPara) defs return $ inTagsIndented "varlistentry" $ inTagsIndented "term" term' $$ inTagsIndented "listitem" def' -- | Convert a list of lists of blocks to a list of DocBook list items. listItemsToDocBook :: PandocMonad m => WriterOptions -> [[Block]] -> DB m (Doc Text) listItemsToDocBook opts items = vcat <$> mapM (listItemToDocBook opts) items -- | Convert a list of blocks into a DocBook list item. listItemToDocBook :: PandocMonad m => WriterOptions -> [Block] -> DB m (Doc Text) listItemToDocBook opts item = inTagsIndented "listitem" <$> blocksToDocBook opts (map plainToPara item) imageToDocBook :: WriterOptions -> Attr -> Text -> Doc Text imageToDocBook _ attr src = selfClosingTag "imagedata" $ ("fileref", src) : idAndRole attr <> dims where dims = go Width "width" <> go Height "depth" go dir dstr = case dimension dir attr of Just a -> [(dstr, tshow a)] Nothing -> [] -- | Convert a Pandoc block element to DocBook. blockToDocBook :: PandocMonad m => WriterOptions -> Block -> DB m (Doc Text) -- Add ids to paragraphs in divs with ids - this is needed for -- pandoc-citeproc to get link anchors in bibliographies: blockToDocBook opts (Div (id',"section":_,_) (Header lvl (_,classes,attrs) ils : xs)) = do version <- ask -- DocBook doesn't allow sections with no content, so insert some if needed let bs = if null xs then [Para []] else xs tag = case lvl of -1 -> "part" 0 -> "chapter" n | n >= 1 && n <= 5 -> if version == DocBook5 then "section" else "sect" <> tshow n _ -> "simplesect" idAttr = [(idName version, writerIdentifierPrefix opts <> id') | not (T.null id')] -- We want to add namespaces to the root (top-level) element. nsAttr = if version == DocBook5 && lvl == getStartLvl opts && isNothing (writerTemplate opts) -- Though, DocBook 4 does not support namespaces and -- standalone documents will include them in the template. then [("xmlns", "http://docbook.org/ns/docbook") ,("xmlns:xlink", "http://www.w3.org/1999/xlink")] else [] -- Populate miscAttr with Header.Attr.attributes, filtering out non-valid DocBook section attributes, id, and xml:id -- Also enrich the role attribute with certain class tokens miscAttr = enrichRole (filter (isSectionAttr version) attrs) classes attribs = nsAttr <> idAttr <> miscAttr title' <- inlinesToDocBook opts ils contents <- blocksToDocBook opts bs return $ inTags True tag attribs $ inTagsSimple "title" title' $$ contents blockToDocBook opts (Div (ident,classes,_) bs) = do version <- ask let identAttribs = [(idName version, ident) | not (T.null ident)] admonitions = ["caution","danger","important","note","tip","warning"] case classes of (l:_) | l `elem` admonitions -> do let (mTitleBs, bodyBs) = case bs of -- Matches AST produced by the DocBook reader → Markdown writer → Markdown reader chain. (Div (_,["title"],_) [Para ts] : rest) -> (Just (inlinesToDocBook opts ts), rest) -- Matches AST produced by the DocBook reader. (Div (_,["title"],_) ts : rest) -> (Just (blocksToDocBook opts ts), rest) _ -> (Nothing, bs) admonitionTitle <- case mTitleBs of Nothing -> return mempty -- id will be attached to the admonition so let’s pass empty identAttrs. Just titleBs -> inTagsSimple "title" <$> titleBs admonitionBody <- handleDivBody [] bodyBs return (inTags True l identAttribs (admonitionTitle $$ admonitionBody)) _ -> handleDivBody identAttribs bs where handleDivBody identAttribs [Para lst] = if hasLineBreaks lst then flush . nowrap . inTags False "literallayout" identAttribs <$> inlinesToDocBook opts lst else inTags True "para" identAttribs <$> inlinesToDocBook opts lst handleDivBody identAttribs bodyBs = do contents <- blocksToDocBook opts (map plainToPara bodyBs) return $ (if null identAttribs then mempty else selfClosingTag "anchor" identAttribs) $$ contents blockToDocBook _ h@Header{} = do -- should be handled by Div section above, except inside lists/blockquotes report $ BlockNotRendered h return empty blockToDocBook opts (Plain lst) = inlinesToDocBook opts lst blockToDocBook opts (Para lst) | hasLineBreaks lst = flush . nowrap . inTagsSimple "literallayout" <$> inlinesToDocBook opts lst | otherwise = inTagsIndented "para" <$> inlinesToDocBook opts lst blockToDocBook opts (LineBlock lns) = blockToDocBook opts $ linesToPara lns blockToDocBook opts (BlockQuote blocks) = inTagsIndented "blockquote" <$> blocksToDocBook opts blocks blockToDocBook opts (CodeBlock (_,classes,_) str) = return $ literal (" lang <> ">") <> cr <> flush (literal (escapeStringForXML str) <> cr <> literal "") where lang = if null langs then "" else " language=\"" <> escapeStringForXML (head langs) <> "\"" syntaxMap = writerSyntaxMap opts isLang l = T.toLower l `elem` map T.toLower (languages syntaxMap) langsFrom s = if isLang s then [s] else (languagesByExtension syntaxMap) . T.toLower $ s langs = concatMap langsFrom classes blockToDocBook opts (BulletList lst) = do let attribs = [("spacing", "compact") | isTightList lst] inTags True "itemizedlist" attribs <$> listItemsToDocBook opts lst blockToDocBook _ (OrderedList _ []) = return empty blockToDocBook opts (OrderedList (start, numstyle, _) (first:rest)) = do let numeration = case numstyle of DefaultStyle -> [] Decimal -> [("numeration", "arabic")] Example -> [("numeration", "arabic")] UpperAlpha -> [("numeration", "upperalpha")] LowerAlpha -> [("numeration", "loweralpha")] UpperRoman -> [("numeration", "upperroman")] LowerRoman -> [("numeration", "lowerroman")] spacing = [("spacing", "compact") | isTightList (first:rest)] attribs = numeration <> spacing items <- if start == 1 then listItemsToDocBook opts (first:rest) else do first' <- blocksToDocBook opts (map plainToPara first) rest' <- listItemsToDocBook opts rest return $ inTags True "listitem" [("override",tshow start)] first' $$ rest' return $ inTags True "orderedlist" attribs items blockToDocBook opts (DefinitionList lst) = do let attribs = [("spacing", "compact") | isTightList $ concatMap snd lst] inTags True "variablelist" attribs <$> deflistItemsToDocBook opts lst blockToDocBook _ b@(RawBlock f str) | f == "docbook" = return $ literal str -- raw XML block | f == "html" = do version <- ask if version == DocBook5 then return empty -- No html in DocBook5 else return $ literal str -- allow html for backwards -- compatibility | otherwise = do report $ BlockNotRendered b return empty blockToDocBook _ HorizontalRule = return empty -- not semantic blockToDocBook opts (Table _ blkCapt specs thead tbody tfoot) = do let (caption, aligns, widths, headers, rows) = toLegacyTable blkCapt specs thead tbody tfoot captionDoc <- if null caption then return empty else inTagsSimple "title" <$> inlinesToDocBook opts caption let tableType = if isEmpty captionDoc then "informaltable" else "table" percent w = tshow (truncate (100*w) :: Integer) <> "*" coltags = vcat $ zipWith (\w al -> selfClosingTag "colspec" ([("colwidth", percent w) | w > 0] <> [("align", alignmentToString al)])) widths aligns head' <- if all null headers then return empty else inTagsIndented "thead" <$> tableRowToDocBook opts headers body' <- inTagsIndented "tbody" . vcat <$> mapM (tableRowToDocBook opts) rows return $ inTagsIndented tableType $ captionDoc $$ inTags True "tgroup" [("cols", tshow (length aligns))] ( coltags $$ head' $$ body') blockToDocBook opts (Figure attr capt@(Caption _ caption) body) = do -- TODO: probably better to handle nested figures as mediaobject let isAcceptable = \case Table {} -> All False Figure {} -> All False _ -> All True if not . getAll $ query isAcceptable body -- Fallback to a div if the content cannot be included in a figure then blockToDocBook opts $ figureDiv attr capt body else do title <- inlinesToDocBook opts (blocksToInlines caption) let toMediaobject = \case Plain [Image imgAttr inlns (src, _)] -> do alt <- inlinesToDocBook opts inlns pure $ inTagsIndented "mediaobject" ( inTagsIndented "imageobject" (imageToDocBook opts imgAttr src) $$ if isEmpty alt then empty else inTagsSimple "textobject" (inTagsSimple "phrase" alt)) _ -> ask >>= \case DocBook4 -> pure mempty -- docbook4 requires media DocBook5 -> blocksToDocBook opts body mediaobjects <- mapM toMediaobject body return $ if isEmpty $ mconcat mediaobjects then mempty -- figures must have at least some content else inTagsIndented "figure" $ inTagsSimple "title" title $$ mconcat mediaobjects hasLineBreaks :: [Inline] -> Bool hasLineBreaks = getAny . query isLineBreak . walk removeNote where removeNote :: Inline -> Inline removeNote (Note _) = Str "" removeNote x = x isLineBreak :: Inline -> Any isLineBreak LineBreak = Any True isLineBreak _ = Any False alignmentToString :: Alignment -> Text alignmentToString alignment = case alignment of AlignLeft -> "left" AlignRight -> "right" AlignCenter -> "center" AlignDefault -> "left" tableRowToDocBook :: PandocMonad m => WriterOptions -> [[Block]] -> DB m (Doc Text) tableRowToDocBook opts cols = inTagsIndented "row" . vcat <$> mapM (tableItemToDocBook opts) cols tableItemToDocBook :: PandocMonad m => WriterOptions -> [Block] -> DB m (Doc Text) tableItemToDocBook opts item = inTags True "entry" [] . vcat <$> mapM (blockToDocBook opts) item -- | Convert a list of inline elements to DocBook. inlinesToDocBook :: PandocMonad m => WriterOptions -> [Inline] -> DB m (Doc Text) inlinesToDocBook opts lst = hcat <$> mapM (inlineToDocBook opts) lst -- | Convert an inline element to DocBook. inlineToDocBook :: PandocMonad m => WriterOptions -> Inline -> DB m (Doc Text) inlineToDocBook _ (Str str) = return $ literal $ escapeStringForXML str inlineToDocBook opts (Emph lst) = inTagsSimple "emphasis" <$> inlinesToDocBook opts lst inlineToDocBook opts (Underline lst) = inTags False "emphasis" [("role", "underline")] <$> inlinesToDocBook opts lst inlineToDocBook opts (Strong lst) = inTags False "emphasis" [("role", "strong")] <$> inlinesToDocBook opts lst inlineToDocBook opts (Strikeout lst) = inTags False "emphasis" [("role", "strikethrough")] <$> inlinesToDocBook opts lst inlineToDocBook opts (Superscript lst) = inTagsSimple "superscript" <$> inlinesToDocBook opts lst inlineToDocBook opts (Subscript lst) = inTagsSimple "subscript" <$> inlinesToDocBook opts lst inlineToDocBook opts (SmallCaps lst) = inTags False "emphasis" [("role", "smallcaps")] <$> inlinesToDocBook opts lst inlineToDocBook opts (Quoted _ lst) = inTagsSimple "quote" <$> inlinesToDocBook opts lst inlineToDocBook opts (Cite _ lst) = inlinesToDocBook opts lst inlineToDocBook opts (Span (ident,_,_) ils) = do version <- ask ((if T.null ident then mempty else selfClosingTag "anchor" [(idName version, ident)]) <>) <$> inlinesToDocBook opts ils inlineToDocBook _ (Code _ str) = return $ inTagsSimple "literal" $ literal (escapeStringForXML str) inlineToDocBook opts (Math t str) | isMathML (writerHTMLMathMethod opts) = do res <- convertMath writeMathML t str case res of Right r -> return $ inTagsSimple tagtype $ literal $ T.pack $ Xml.ppcElement conf $ fixNS $ removeAttr r Left il -> inlineToDocBook opts il | otherwise = texMathToInlines t str >>= inlinesToDocBook opts where tagtype = case t of InlineMath -> "inlineequation" DisplayMath -> "informalequation" conf = Xml.useShortEmptyTags (const False) Xml.defaultConfigPP removeAttr e = e{ Xml.elAttribs = [] } fixNS' qname = qname{ Xml.qPrefix = Just "mml" } fixNS = everywhere (mkT fixNS') inlineToDocBook _ il@(RawInline f x) | f == "html" || f == "docbook" = return $ literal x | otherwise = do report $ InlineNotRendered il return empty inlineToDocBook _ LineBreak = return $ literal "\n" -- currently ignore, would require the option to add custom -- styles to the document inlineToDocBook _ Space = return space -- because we use \n for LineBreak, we can't do soft breaks: inlineToDocBook _ SoftBreak = return space inlineToDocBook opts (Link attr txt (src, _)) | Just email <- T.stripPrefix "mailto:" src = let emailLink = inTagsSimple "email" $ literal $ escapeStringForXML email in case txt of [Str s] | escapeURI s == email -> return emailLink _ -> do contents <- inlinesToDocBook opts txt return $ contents <+> char '(' <> emailLink <> char ')' | otherwise = do version <- ask (if "#" `T.isPrefixOf` src then let tag = if null txt then "xref" else "link" in inTags False tag $ ("linkend", writerIdentifierPrefix opts <> T.drop 1 src) : idAndRole attr else if version == DocBook5 then inTags False "link" $ ("xlink:href", src) : idAndRole attr else inTags False "ulink" $ ("url", src) : idAndRole attr ) <$> inlinesToDocBook opts txt inlineToDocBook opts (Image attr ils (src, tit)) = return $ let titleDoc = if T.null tit then empty else inTagsIndented "objectinfo" $ inTagsSimple "title" (literal $ escapeStringForXML tit) alt = if null ils then mempty else inTagsIndented "textobject" $ inTagsSimple "phrase" $ literal (stringify ils) in inTagsIndented "inlinemediaobject" $ inTagsIndented "imageobject" (titleDoc $$ imageToDocBook opts attr src) $$ alt inlineToDocBook opts (Note contents) = inTagsIndented "footnote" <$> blocksToDocBook opts contents isMathML :: HTMLMathMethod -> Bool isMathML MathML = True isMathML _ = False idAndRole :: Attr -> [(Text, Text)] idAndRole (id',cls,_) = ident <> role where ident = [("id", id') | not (T.null id')] role = [("role", T.unwords cls) | not (null cls)] -- Used in blockToDocBook for Header (section) to create or extend -- the role attribute with candidate class tokens enrichRole :: [(Text, Text)] -> [Text] -> [(Text, Text)] enrichRole mattrs cls = [("role", T.unwords roles) | roles /= []] <> nonRole where (roleAttr, nonRole) = partition (\(key, _v) -> key == "role") mattrs roles = nub $ filter (`elem` cand) cls <> map snd roleAttr cand = ["unnumbered"] isSectionAttr :: DocBookVersion -> (Text, Text) -> Bool isSectionAttr _ ("label",_) = True isSectionAttr _ ("status",_) = True isSectionAttr DocBook5 ("annotations",_) = True isSectionAttr DocBook5 ("dir","ltr") = True isSectionAttr DocBook5 ("dir","rtl") = True isSectionAttr DocBook5 ("dir","lro") = True isSectionAttr DocBook5 ("dir","rlo") = True isSectionAttr _ ("remap",_) = True isSectionAttr _ ("revisionflag","changed") = True isSectionAttr _ ("revisionflag","added") = True isSectionAttr _ ("revisionflag","deleted") = True isSectionAttr _ ("revisionflag","off") = True isSectionAttr _ ("role",_) = True isSectionAttr DocBook5 ("version",_) = True isSectionAttr DocBook5 ("xml:base",_) = True isSectionAttr DocBook5 ("xml:lang",_) = True isSectionAttr _ ("xreflabel",_) = True isSectionAttr DocBook5 ("linkend",_) = True isSectionAttr DocBook5 ("linkends",_) = True isSectionAttr DocBook5 ("xlink:actuate",_) = True isSectionAttr DocBook5 ("xlink:arcrole",_) = True isSectionAttr DocBook5 ("xlink:from",_) = True isSectionAttr DocBook5 ("xlink:href",_) = True isSectionAttr DocBook5 ("xlink:label",_) = True isSectionAttr DocBook5 ("xlink:role",_) = True isSectionAttr DocBook5 ("xlink:show",_) = True isSectionAttr DocBook5 ("xlink:title",_) = True isSectionAttr DocBook5 ("xlink:to",_) = True isSectionAttr DocBook5 ("xlink:type",_) = True isSectionAttr DocBook4 ("arch",_) = True isSectionAttr DocBook4 ("condition",_) = True isSectionAttr DocBook4 ("conformance",_) = True isSectionAttr DocBook4 ("lang",_) = True isSectionAttr DocBook4 ("os",_) = True isSectionAttr DocBook4 ("revision",_) = True isSectionAttr DocBook4 ("security",_) = True isSectionAttr DocBook4 ("vendor",_) = True isSectionAttr _ (_,_) = False pandoc-3.1.3/src/Text/Pandoc/Writers/Docx.hs0000644000000000000000000021117607346545000016772 0ustar0000000000000000{-# LANGUAGE PatternGuards #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE ViewPatterns #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TypeApplications #-} {- | Module : Text.Pandoc.Writers.Docx Copyright : Copyright (C) 2012-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Conversion of 'Pandoc' documents to docx. -} module Text.Pandoc.Writers.Docx ( writeDocx ) where import Codec.Archive.Zip ( Archive(zEntries), addEntryToArchive, emptyArchive, findEntryByPath, fromArchive, toArchive, toEntry, Entry(eRelativePath) ) import Control.Applicative ((<|>)) import Control.Monad (MonadPlus(mplus), unless, when) import Control.Monad.Except (catchError, throwError) import Control.Monad.Reader ( asks, MonadReader(local), MonadTrans(lift), ReaderT(runReaderT) ) import Control.Monad.State.Strict ( StateT(runStateT), gets, modify ) import qualified Data.ByteString.Lazy as BL import Data.Containers.ListUtils (nubOrd) import Data.Char (isSpace, isLetter) import Data.List (intercalate, isPrefixOf, isSuffixOf) import Data.String (fromString) import qualified Data.Map as M import Data.Maybe (fromMaybe, isNothing, mapMaybe, maybeToList, isJust) import qualified Data.Set as Set import qualified Data.Text as T import Data.Text (Text) import qualified Data.Text.Lazy as TL import Data.Time.Clock.POSIX import Data.Digest.Pure.SHA (sha1, showDigest) import Skylighting import Text.Pandoc.Class (PandocMonad, report, toLang, getMediaBag) import Text.Pandoc.Translations (Term(Abstract), translateTerm) import Text.Pandoc.MediaBag (lookupMedia, MediaItem(..)) import qualified Text.Pandoc.Translations as Term import qualified Text.Pandoc.Class.PandocMonad as P import Text.Pandoc.Data (readDataFile, readDefaultDataFile) import Data.Time import Text.Pandoc.UTF8 (fromTextLazy) import Text.Pandoc.Definition import Text.Pandoc.Generic import Text.Pandoc.Highlighting (highlight) import Text.Pandoc.Error import Text.Pandoc.ImageSize import Text.Pandoc.Logging import Text.Pandoc.MIME (extensionFromMimeType, getMimeType, getMimeTypeDef) import Text.Pandoc.Options import Text.Pandoc.Writers.Docx.StyleMap import Text.Pandoc.Writers.Docx.Table as Table import Text.Pandoc.Writers.Docx.Types import Text.Pandoc.Shared import Text.Pandoc.Walk import qualified Text.Pandoc.Writers.GridTable as Grid import Text.Pandoc.Writers.Math import Text.Pandoc.Writers.Shared import Text.TeXMath import Text.Pandoc.Writers.OOXML import Text.Pandoc.XML.Light as XML import Data.Generics (mkT, everywhere) import Text.Collate.Lang (renderLang, Lang(..)) squashProps :: EnvProps -> [Element] squashProps (EnvProps Nothing es) = es squashProps (EnvProps (Just e) es) = e : es renumIdMap :: Int -> [Element] -> M.Map Text Text renumIdMap _ [] = M.empty renumIdMap n (e:es) | Just oldId <- findAttr (QName "Id" Nothing Nothing) e = M.insert oldId ("rId" <> tshow n) (renumIdMap (n+1) es) | otherwise = renumIdMap n es replaceAttr :: (QName -> Bool) -> Text -> [XML.Attr] -> [XML.Attr] replaceAttr f val = map $ \a -> if f (attrKey a) then XML.Attr (attrKey a) val else a renumId :: (QName -> Bool) -> M.Map Text Text -> Element -> Element renumId f renumMap e | Just oldId <- findAttrBy f e , Just newId <- M.lookup oldId renumMap = let attrs' = replaceAttr f newId (elAttribs e) in e { elAttribs = attrs' } | otherwise = e renumIds :: (QName -> Bool) -> M.Map Text Text -> [Element] -> [Element] renumIds f renumMap = map (renumId f renumMap) -- | Certain characters are invalid in XML even if escaped. -- See #1992 stripInvalidChars :: Text -> Text stripInvalidChars = T.filter isValidChar -- | See XML reference isValidChar :: Char -> Bool isValidChar '\t' = True isValidChar '\n' = True isValidChar '\r' = True isValidChar '\xFFFE' = False isValidChar '\xFFFF' = False isValidChar c = (' ' <= c && c <= '\xD7FF') || ('\xE000' <= c) writeDocx :: (PandocMonad m) => WriterOptions -- ^ Writer options -> Pandoc -- ^ Document to convert -> m BL.ByteString writeDocx opts doc = do let Pandoc meta blocks = walk fixDisplayMath doc let blocks' = makeSections True Nothing blocks let doc' = Pandoc meta blocks' username <- P.lookupEnv "USERNAME" utctime <- P.getTimestamp oldUserDataDir <- P.getUserDataDir P.setUserDataDir Nothing res <- readDefaultDataFile "reference.docx" P.setUserDataDir oldUserDataDir let distArchive = toArchive $ BL.fromStrict res refArchive <- case writerReferenceDoc opts of Just f -> toArchive . BL.fromStrict . fst <$> P.fetchItem (T.pack f) Nothing -> toArchive . BL.fromStrict <$> readDataFile "reference.docx" parsedDoc <- parseXml refArchive distArchive "word/document.xml" let wname f qn = qPrefix qn == Just "w" && f (qName qn) let mbsectpr = filterElementName (wname (=="sectPr")) parsedDoc -- Gets the template size let mbpgsz = mbsectpr >>= filterElementName (wname (=="pgSz")) let mbAttrSzWidth = mbpgsz >>= lookupAttrBy ((=="w") . qName) . elAttribs let mbpgmar = mbsectpr >>= filterElementName (wname (=="pgMar")) let mbAttrMarLeft = mbpgmar >>= lookupAttrBy ((=="left") . qName) . elAttribs let mbAttrMarRight = mbpgmar >>= lookupAttrBy ((=="right") . qName) . elAttribs -- Get the available area (converting the size and the margins to int and -- doing the difference let pgContentWidth = do w <- mbAttrSzWidth >>= safeRead r <- mbAttrMarRight >>= safeRead l <- mbAttrMarLeft >>= safeRead pure $ w - r - l -- styles mblang <- toLang $ getLang opts meta -- TODO FIXME avoid this generic traversal! -- lang is in w:docDefaults / w:rPr / w:lang let addLang :: Element -> Element addLang = case mblang of Nothing -> id Just l -> everywhere (mkT (go l)) where go :: Lang -> Element -> Element go lang e' | qName (elName e') == "lang" = if isEastAsianLang lang then e'{ elAttribs = map (setattr "eastAsia" (renderLang lang)) $ elAttribs e' } else if isBidiLang lang then e'{ elAttribs = map (setattr "bidi" (renderLang lang)) $ elAttribs e' } else e'{ elAttribs = map (setattr "val" (renderLang lang)) $ elAttribs e' } | otherwise = e' setattr attrname l (XML.Attr qn@(QName s _ _) _) | s == attrname = XML.Attr qn l setattr _ _ x = x isEastAsianLang Lang{ langLanguage = lang } = lang == "zh" || lang == "jp" || lang == "ko" isBidiLang Lang{ langLanguage = lang } = lang == "he" || lang == "ar" let stylepath = "word/styles.xml" styledoc <- addLang <$> parseXml refArchive distArchive stylepath -- parse styledoc for heading styles let styleMaps = getStyleMaps refArchive let tocTitle = case lookupMetaInlines "toc-title" meta of [] -> stTocTitle defaultWriterState ls -> ls let initialSt = defaultWriterState { stStyleMaps = styleMaps , stTocTitle = tocTitle , stCurId = 20 } let isRTLmeta = case lookupMeta "dir" meta of Just (MetaString "rtl") -> True Just (MetaInlines [Str "rtl"]) -> True _ -> False let env = defaultWriterEnv { envRTL = isRTLmeta , envChangesAuthor = fromMaybe "unknown" username , envChangesDate = T.pack $ formatTime defaultTimeLocale "%FT%XZ" utctime , envPrintWidth = maybe 420 (`quot` 20) pgContentWidth } ((contents, footnotes, comments), st) <- runStateT (runReaderT (writeOpenXML opts{writerWrapText = WrapNone} doc') env) initialSt let epochtime = floor $ utcTimeToPOSIXSeconds utctime let imgs = M.elems $ stImages st -- create entries for images in word/media/... let toImageEntry (_,path,_,img) = toEntry ("word/" ++ path) epochtime $ toLazy img let imageEntries = map toImageEntry imgs let stdAttributes = [("xmlns:w","http://schemas.openxmlformats.org/wordprocessingml/2006/main") ,("xmlns:m","http://schemas.openxmlformats.org/officeDocument/2006/math") ,("xmlns:r","http://schemas.openxmlformats.org/officeDocument/2006/relationships") ,("xmlns:o","urn:schemas-microsoft-com:office:office") ,("xmlns:v","urn:schemas-microsoft-com:vml") ,("xmlns:w10","urn:schemas-microsoft-com:office:word") ,("xmlns:a","http://schemas.openxmlformats.org/drawingml/2006/main") ,("xmlns:pic","http://schemas.openxmlformats.org/drawingml/2006/picture") ,("xmlns:wp","http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing")] parsedRels <- parseXml refArchive distArchive "word/_rels/document.xml.rels" let isHeaderNode e = findAttr (QName "Type" Nothing Nothing) e == Just "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header" let isFooterNode e = findAttr (QName "Type" Nothing Nothing) e == Just "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer" let headers = filterElements isHeaderNode parsedRels let footers = filterElements isFooterNode parsedRels let extractTarget = findAttr (QName "Target" Nothing Nothing) -- we create [Content_Types].xml and word/_rels/document.xml.rels -- from scratch rather than reading from reference.docx, -- because Word sometimes changes these files when a reference.docx is modified, -- e.g. deleting the reference to footnotes.xml or removing default entries -- for image content types. -- [Content_Types].xml let mkOverrideNode (part', contentType') = mknode "Override" [("PartName", T.pack part') ,("ContentType", contentType')] () let mkImageOverride (_, imgpath, mbMimeType, _) = mkOverrideNode ("/word/" <> imgpath, fromMaybe "application/octet-stream" mbMimeType) let mkMediaOverride imgpath = mkOverrideNode ("/" <> imgpath, getMimeTypeDef imgpath) let overrides = map mkOverrideNode ( [("/word/webSettings.xml", "application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml") ,("/word/numbering.xml", "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml") ,("/word/settings.xml", "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml") ,("/word/theme/theme1.xml", "application/vnd.openxmlformats-officedocument.theme+xml") ,("/word/fontTable.xml", "application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml") ,("/docProps/app.xml", "application/vnd.openxmlformats-officedocument.extended-properties+xml") ,("/docProps/core.xml", "application/vnd.openxmlformats-package.core-properties+xml") ,("/docProps/custom.xml", "application/vnd.openxmlformats-officedocument.custom-properties+xml") ,("/word/styles.xml", "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml") ,("/word/document.xml", "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml") ,("/word/comments.xml", "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml") ,("/word/footnotes.xml", "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml") ] ++ map (\x -> (maybe "" (T.unpack . ("/word/" <>)) (extractTarget x), "application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml")) headers ++ map (\x -> (maybe "" (T.unpack . ("/word/" <>)) (extractTarget x), "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml")) footers) ++ map mkImageOverride imgs ++ [ mkMediaOverride (eRelativePath e) | e <- zEntries refArchive , "word/media/" `isPrefixOf` eRelativePath e ] let defaultnodes = [mknode "Default" [("Extension","xml"),("ContentType","application/xml")] (), mknode "Default" [("Extension","rels"),("ContentType","application/vnd.openxmlformats-package.relationships+xml")] ()] let contentTypesDoc = mknode "Types" [("xmlns","http://schemas.openxmlformats.org/package/2006/content-types")] $ defaultnodes ++ overrides let contentTypesEntry = toEntry "[Content_Types].xml" epochtime $ renderXml contentTypesDoc -- word/_rels/document.xml.rels let toBaseRel (url', id', target') = mknode "Relationship" [("Type",url') ,("Id",id') ,("Target",target')] () let baserels' = map toBaseRel [("http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering", "rId1", "numbering.xml") ,("http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles", "rId2", "styles.xml") ,("http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings", "rId3", "settings.xml") ,("http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings", "rId4", "webSettings.xml") ,("http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable", "rId5", "fontTable.xml") ,("http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme", "rId6", "theme/theme1.xml") ,("http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes", "rId7", "footnotes.xml") ,("http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments", "rId8", "comments.xml") ] let idMap = renumIdMap (length baserels' + 1) (headers ++ footers) let renumHeaders = renumIds (\q -> qName q == "Id") idMap headers let renumFooters = renumIds (\q -> qName q == "Id") idMap footers let baserels = baserels' ++ renumHeaders ++ renumFooters let toImgRel (ident,path,_,_) = mknode "Relationship" [("Type","http://schemas.openxmlformats.org/officeDocument/2006/relationships/image"),("Id",T.pack ident),("Target",T.pack path)] () let imgrels = map toImgRel imgs let toLinkRel (src,ident) = mknode "Relationship" [("Type","http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink"),("Id",ident),("Target",src),("TargetMode","External") ] () let linkrels = map toLinkRel $ M.toList $ stExternalLinks st let reldoc = mknode "Relationships" [("xmlns","http://schemas.openxmlformats.org/package/2006/relationships")] $ baserels ++ imgrels ++ linkrels let relEntry = toEntry "word/_rels/document.xml.rels" epochtime $ renderXml reldoc -- adjust contents to add sectPr from reference.docx let sectpr = case mbsectpr of Just sectpr' -> let cs = renumIds (\q -> qName q == "id" && qPrefix q == Just "r") idMap (elChildren sectpr') in add_attrs (elAttribs sectpr') $ mknode "w:sectPr" [] cs Nothing -> mknode "w:sectPr" [] () -- let sectpr = fromMaybe (mknode "w:sectPr" [] ()) mbsectpr' let contents' = contents ++ [Elem sectpr] let docContents = mknode "w:document" stdAttributes $ mknode "w:body" [] contents' -- word/document.xml let contentEntry = toEntry "word/document.xml" epochtime $ renderXml docContents -- footnotes let notes = mknode "w:footnotes" stdAttributes footnotes let footnotesEntry = toEntry "word/footnotes.xml" epochtime $ renderXml notes -- footnote rels let footnoteRelEntry = toEntry "word/_rels/footnotes.xml.rels" epochtime $ renderXml $ mknode "Relationships" [("xmlns","http://schemas.openxmlformats.org/package/2006/relationships")] linkrels -- comments let commentsEntry = toEntry "word/comments.xml" epochtime $ renderXml $ mknode "w:comments" stdAttributes comments -- styles -- We only want to inject paragraph and text properties that -- are not already in the style map. Note that keys in the stylemap -- are normalized as lowercase. let newDynamicParaProps = filter (\sty -> not $ hasStyleName sty $ smParaStyle styleMaps) (Set.toList $ stDynamicParaProps st) newDynamicTextProps = filter (\sty -> not $ hasStyleName sty $ smCharStyle styleMaps) (Set.toList $ stDynamicTextProps st) let newstyles = map newParaPropToOpenXml newDynamicParaProps ++ map newTextPropToOpenXml newDynamicTextProps ++ maybe [] (styleToOpenXml styleMaps) (writerHighlightStyle opts) let styledoc' = styledoc{ elContent = elContent styledoc ++ map Elem newstyles } let styleEntry = toEntry stylepath epochtime $ renderXml styledoc' -- construct word/numbering.xml let numpath = "word/numbering.xml" numbering <- parseXml refArchive distArchive numpath let newNumElts = mkNumbering (stLists st) let pandocAdded e = case findAttrBy ((== "abstractNumId") . qName) e >>= safeRead of Just numid -> numid >= (990 :: Int) Nothing -> case findAttrBy ((== "numId") . qName) e >>= safeRead of Just numid -> numid >= (1000 :: Int) Nothing -> False let oldElts = filter (not . pandocAdded) $ onlyElems (elContent numbering) let allElts = oldElts ++ newNumElts let numEntry = toEntry numpath epochtime $ renderXml numbering{ elContent = -- we want all the abstractNums first, then the nums, -- otherwise things break: [Elem e | e <- allElts , qName (elName e) == "abstractNum" ] ++ [Elem e | e <- allElts , qName (elName e) == "num" ] } let keywords = case lookupMeta "keywords" meta of Just (MetaList xs) -> map stringify xs _ -> [] -- docProps/core.xml let docPropsPath = "docProps/core.xml" let extraCoreProps = ["subject","lang","category","description"] let extraCorePropsMap = M.fromList $ zip extraCoreProps ["dc:subject","dc:language","cp:category","dc:description"] let lookupMetaString' :: Text -> Meta -> Text lookupMetaString' key' meta' = case key' of "description" -> T.intercalate "_x000d_\n" (map stringify $ lookupMetaBlocks "description" meta') key'' -> lookupMetaString key'' meta' let docProps = mknode "cp:coreProperties" [("xmlns:cp","http://schemas.openxmlformats.org/package/2006/metadata/core-properties") ,("xmlns:dc","http://purl.org/dc/elements/1.1/") ,("xmlns:dcterms","http://purl.org/dc/terms/") ,("xmlns:dcmitype","http://purl.org/dc/dcmitype/") ,("xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance")] $ mktnode "dc:title" [] (stringify $ docTitle meta) : mktnode "dc:creator" [] (T.intercalate "; " (map stringify $ docAuthors meta)) : [ mktnode (M.findWithDefault "" k extraCorePropsMap) [] (lookupMetaString' k meta) | k <- M.keys (unMeta meta), k `elem` extraCoreProps] ++ mknode "cp:keywords" [] (T.intercalate ", " keywords) : (\x -> [ mknode "dcterms:created" [("xsi:type","dcterms:W3CDTF")] x , mknode "dcterms:modified" [("xsi:type","dcterms:W3CDTF")] x ]) (T.pack $ formatTime defaultTimeLocale "%FT%XZ" utctime) let docPropsEntry = toEntry docPropsPath epochtime $ renderXml docProps -- docProps/custom.xml let customProperties :: [(Text, Text)] customProperties = [ (k, lookupMetaString k meta) | k <- M.keys (unMeta meta) , k `notElem` (["title", "author", "keywords"] ++ extraCoreProps)] let mkCustomProp (k, v) pid = mknode "property" [("fmtid","{D5CDD505-2E9C-101B-9397-08002B2CF9AE}") ,("pid", tshow pid) ,("name", k)] $ mknode "vt:lpwstr" [] v let customPropsPath = "docProps/custom.xml" let customProps = mknode "Properties" [("xmlns","http://schemas.openxmlformats.org/officeDocument/2006/custom-properties") ,("xmlns:vt","http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes") ] $ zipWith mkCustomProp customProperties [(2 :: Int)..] let customPropsEntry = toEntry customPropsPath epochtime $ renderXml customProps let relsPath = "_rels/.rels" let rels = mknode "Relationships" [("xmlns", "http://schemas.openxmlformats.org/package/2006/relationships")] $ map (\attrs -> mknode "Relationship" attrs ()) [ [("Id","rId1") ,("Type","http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument") ,("Target","word/document.xml")] , [("Id","rId4") ,("Type","http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties") ,("Target","docProps/app.xml")] , [("Id","rId3") ,("Type","http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties") ,("Target","docProps/core.xml")] , [("Id","rId5") ,("Type","http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties") ,("Target","docProps/custom.xml")] ] let relsEntry = toEntry relsPath epochtime $ renderXml rels -- we use dist archive for settings.xml, because Word sometimes -- adds references to footnotes or endnotes we don't have... -- we do, however, copy some settings over from reference let settingsPath = "word/settings.xml" settingsList = [ "zoom" , "embedSystemFonts" , "doNotTrackMoves" , "defaultTabStop" , "drawingGridHorizontalSpacing" , "drawingGridVerticalSpacing" , "displayHorizontalDrawingGridEvery" , "displayVerticalDrawingGridEvery" , "characterSpacingControl" , "savePreviewPicture" , "mathPr" , "themeFontLang" , "decimalSymbol" , "listSeparator" , "autoHyphenation" , "consecutiveHyphenLimit" , "hyphenationZone" , "doNotHyphenateCap" , "evenAndOddHeaders" , "proofState" , "compat" ] settingsEntry <- copyChildren refArchive distArchive settingsPath epochtime settingsList let entryFromArchive arch path = maybe (throwError $ PandocSomeError $ T.pack $ path ++ " missing in reference docx") return (findEntryByPath path arch `mplus` findEntryByPath path distArchive) docPropsAppEntry <- entryFromArchive refArchive "docProps/app.xml" themeEntry <- entryFromArchive refArchive "word/theme/theme1.xml" fontTableEntry <- entryFromArchive refArchive "word/fontTable.xml" webSettingsEntry <- entryFromArchive refArchive "word/webSettings.xml" headerFooterEntries <- mapM (entryFromArchive refArchive . ("word/" ++)) $ mapMaybe (fmap T.unpack . extractTarget) (headers ++ footers) let miscRelEntries = [ e | e <- zEntries refArchive , "word/_rels/" `isPrefixOf` eRelativePath e , ".xml.rels" `isSuffixOf` eRelativePath e , eRelativePath e /= "word/_rels/document.xml.rels" , eRelativePath e /= "word/_rels/footnotes.xml.rels" ] let otherMediaEntries = [ e | e <- zEntries refArchive , "word/media/" `isPrefixOf` eRelativePath e ] -- Create archive let archive = foldr addEntryToArchive emptyArchive $ contentTypesEntry : relsEntry : contentEntry : relEntry : footnoteRelEntry : numEntry : styleEntry : footnotesEntry : commentsEntry : docPropsEntry : docPropsAppEntry : customPropsEntry : themeEntry : fontTableEntry : settingsEntry : webSettingsEntry : imageEntries ++ headerFooterEntries ++ miscRelEntries ++ otherMediaEntries return $ fromArchive archive newParaPropToOpenXml :: ParaStyleName -> Element newParaPropToOpenXml (fromStyleName -> s) = let styleId = T.filter (not . isSpace) s in mknode "w:style" [ ("w:type", "paragraph") , ("w:customStyle", "1") , ("w:styleId", styleId)] [ mknode "w:name" [("w:val", s)] () , mknode "w:basedOn" [("w:val","BodyText")] () , mknode "w:qFormat" [] () ] newTextPropToOpenXml :: CharStyleName -> Element newTextPropToOpenXml (fromStyleName -> s) = let styleId = T.filter (not . isSpace) s in mknode "w:style" [ ("w:type", "character") , ("w:customStyle", "1") , ("w:styleId", styleId)] [ mknode "w:name" [("w:val", s)] () , mknode "w:basedOn" [("w:val","BodyTextChar")] () ] styleToOpenXml :: StyleMaps -> Style -> [Element] styleToOpenXml sm style = maybeToList parStyle ++ mapMaybe toStyle alltoktypes where alltoktypes = enumFromTo KeywordTok NormalTok toStyle toktype | hasStyleName (fromString $ show toktype) (smCharStyle sm) = Nothing | otherwise = Just $ mknode "w:style" [("w:type","character"), ("w:customStyle","1"),("w:styleId", tshow toktype)] [ mknode "w:name" [("w:val", tshow toktype)] () , mknode "w:basedOn" [("w:val","VerbatimChar")] () , mknode "w:rPr" [] $ [ mknode "w:color" [("w:val", tokCol toktype)] () | tokCol toktype /= "auto" ] ++ [ mknode "w:shd" [("w:val","clear") ,("w:fill",tokBg toktype)] () | tokBg toktype /= "auto" ] ++ [ mknode "w:b" [] () | tokFeature tokenBold toktype ] ++ [ mknode "w:i" [] () | tokFeature tokenItalic toktype ] ++ [ mknode "w:u" [] () | tokFeature tokenUnderline toktype ] ] tokStyles = tokenStyles style tokFeature f toktype = maybe False f $ M.lookup toktype tokStyles tokCol toktype = maybe "auto" (T.pack . drop 1 . fromColor) $ (tokenColor =<< M.lookup toktype tokStyles) `mplus` defaultColor style tokBg toktype = maybe "auto" (T.pack . drop 1 . fromColor) $ (tokenBackground =<< M.lookup toktype tokStyles) `mplus` backgroundColor style parStyle | hasStyleName "Source Code" (smParaStyle sm) = Nothing | otherwise = Just $ mknode "w:style" [("w:type","paragraph"), ("w:customStyle","1"),("w:styleId","SourceCode")] [ mknode "w:name" [("w:val","Source Code")] () , mknode "w:basedOn" [("w:val","Normal")] () , mknode "w:link" [("w:val","VerbatimChar")] () , mknode "w:pPr" [] $ mknode "w:wordWrap" [("w:val","off")] () : maybe [] (\col -> [mknode "w:shd" [("w:val","clear"),("w:fill", T.pack $ drop 1 $ fromColor col)] ()]) (backgroundColor style) ] copyChildren :: (PandocMonad m) => Archive -> Archive -> String -> Integer -> [Text] -> m Entry copyChildren refArchive distArchive path timestamp elNames = do ref <- parseXml refArchive distArchive path dist <- parseXml distArchive distArchive path let elsToCopy = map cleanElem $ filterChildrenName (\e -> qName e `elem` elNames) ref let elsToKeep = [e | Elem e <- elContent dist, not (any (hasSameNameAs e) elsToCopy)] return $ toEntry path timestamp $ renderXml dist{ elContent = map Elem elsToKeep ++ map Elem elsToCopy } where hasSameNameAs (Element {elName = n1}) (Element {elName = n2}) = qName n1 == qName n2 cleanElem el@Element{elName=name} = el{elName=name{qURI=Nothing}} -- this is the lowest number used for a list numId baseListId :: Int baseListId = 1000 mkNumbering :: [ListMarker] -> [Element] mkNumbering lists = elts ++ zipWith mkNum lists [baseListId..(baseListId + length lists - 1)] where elts = map mkAbstractNum (nubOrd lists) maxListLevel :: Int maxListLevel = 8 mkNum :: ListMarker -> Int -> Element mkNum marker numid = mknode "w:num" [("w:numId",tshow numid)] $ mknode "w:abstractNumId" [("w:val",listMarkerToId marker)] () : case marker of NoMarker -> [] BulletMarker -> [] NumberMarker _ _ start -> map (\lvl -> mknode "w:lvlOverride" [("w:ilvl",tshow (lvl :: Int))] $ mknode "w:startOverride" [("w:val",tshow start)] ()) [0..maxListLevel] mkAbstractNum :: ListMarker -> Element mkAbstractNum marker = mknode "w:abstractNum" [("w:abstractNumId",listMarkerToId marker)] $ mknode "w:nsid" [("w:val", "A" <> listMarkerToId marker)] () : mknode "w:multiLevelType" [("w:val","multilevel")] () : map (mkLvl marker) [0..maxListLevel] mkLvl :: ListMarker -> Int -> Element mkLvl marker lvl = mknode "w:lvl" [("w:ilvl",tshow lvl)] $ [ mknode "w:start" [("w:val",start)] () | marker /= NoMarker && marker /= BulletMarker ] ++ [ mknode "w:numFmt" [("w:val",fmt)] () , mknode "w:lvlText" [("w:val", lvltxt)] () , mknode "w:lvlJc" [("w:val","left")] () , mknode "w:pPr" [] [ mknode "w:ind" [ ("w:left",tshow $ lvl * step + step) , ("w:hanging",tshow (hang :: Int)) ] () ] ] where (fmt, lvltxt, start) = case marker of NoMarker -> ("bullet"," ","1") BulletMarker -> ("bullet",bulletFor lvl,"1") NumberMarker st de n -> (styleFor st lvl ,patternFor de ("%" <> tshow (lvl + 1)) ,tshow n) step = 720 hang = 480 bulletFor 0 = "\x2022" -- filled circle bulletFor 1 = "\x2013" -- en dash bulletFor 2 = "\x2022" -- hyphen bullet bulletFor 3 = "\x2013" bulletFor 4 = "\x2022" bulletFor 5 = "\x2013" bulletFor x = bulletFor (x `mod` 6) styleFor UpperAlpha _ = "upperLetter" styleFor LowerAlpha _ = "lowerLetter" styleFor UpperRoman _ = "upperRoman" styleFor LowerRoman _ = "lowerRoman" styleFor Decimal _ = "decimal" styleFor DefaultStyle 0 = "decimal" styleFor DefaultStyle 1 = "lowerLetter" styleFor DefaultStyle 2 = "lowerRoman" styleFor DefaultStyle 3 = "decimal" styleFor DefaultStyle 4 = "lowerLetter" styleFor DefaultStyle 5 = "lowerRoman" styleFor DefaultStyle x = styleFor DefaultStyle (x `mod` 6) styleFor _ _ = "decimal" patternFor OneParen s = s <> ")" patternFor TwoParens s = "(" <> s <> ")" patternFor _ s = s <> "." getNumId :: (PandocMonad m) => WS m Int getNumId = (((baseListId - 1) +) . length) `fmap` gets stLists makeTOC :: (PandocMonad m) => WriterOptions -> WS m [Element] makeTOC opts = do let depth = "1-" <> tshow (writerTOCDepth opts) let tocCmd = "TOC \\o \"" <> depth <> "\" \\h \\z \\u" tocTitle <- gets stTocTitle title <- withParaPropM (pStyleM "TOC Heading") (blocksToOpenXML opts [Para tocTitle]) return [mknode "w:sdt" [] [ mknode "w:sdtPr" [] ( mknode "w:docPartObj" [] [mknode "w:docPartGallery" [("w:val","Table of Contents")] (), mknode "w:docPartUnique" [] ()] -- w:docPartObj ), -- w:sdtPr mknode "w:sdtContent" [] (title ++ [ Elem $ mknode "w:p" [] ( mknode "w:r" [] [ mknode "w:fldChar" [("w:fldCharType","begin"),("w:dirty","true")] (), mknode "w:instrText" [("xml:space","preserve")] tocCmd, mknode "w:fldChar" [("w:fldCharType","separate")] (), mknode "w:fldChar" [("w:fldCharType","end")] () ] -- w:r ) -- w:p ]) ]] -- w:sdt -- | Convert Pandoc document to two lists of -- OpenXML elements (the main document and footnotes). writeOpenXML :: (PandocMonad m) => WriterOptions -> Pandoc -> WS m ([Content], [Element], [Element]) writeOpenXML opts (Pandoc meta blocks) = do let tit = docTitle meta let auths = docAuthors meta let dat = docDate meta let abstract' = lookupMetaBlocks "abstract" meta let subtitle' = lookupMetaInlines "subtitle" meta let includeTOC = writerTableOfContents opts || lookupMetaBool "toc" meta title <- withParaPropM (pStyleM "Title") $ blocksToOpenXML opts [Para tit | not (null tit)] subtitle <- withParaPropM (pStyleM "Subtitle") $ blocksToOpenXML opts [Para subtitle' | not (null subtitle')] authors <- withParaPropM (pStyleM "Author") $ blocksToOpenXML opts $ map Para auths date <- withParaPropM (pStyleM "Date") $ blocksToOpenXML opts [Para dat | not (null dat)] abstract <- if null abstract' then return [] else do abstractTitle <- translateTerm Abstract abstractTit <- withParaPropM (pStyleM "AbstractTitle") $ blocksToOpenXML opts [Para [Str abstractTitle]] abstractContents <- withParaPropM (pStyleM "Abstract") $ blocksToOpenXML opts abstract' return $ abstractTit <> abstractContents let convertSpace (Str x : Space : Str y : xs) = Str (x <> " " <> y) : xs convertSpace (Str x : Str y : xs) = Str (x <> y) : xs convertSpace xs = xs let blocks' = bottomUp convertSpace blocks doc' <- setFirstPara >> blocksToOpenXML opts blocks' notes' <- reverse <$> gets stFootnotes comments <- reverse <$> gets stComments let toComment (kvs, ils) = do annotation <- inlinesToOpenXML opts ils return $ mknode "w:comment" [("w:" <> k, v) | (k,v) <- kvs] [ mknode "w:p" [] $ map Elem [ mknode "w:pPr" [] [ mknode "w:pStyle" [("w:val", "CommentText")] () ] , mknode "w:r" [] [ mknode "w:rPr" [] [ mknode "w:rStyle" [("w:val", "CommentReference")] () , mknode "w:annotationRef" [] () ] ] ] ++ annotation ] comments' <- mapM toComment comments toc <- if includeTOC then makeTOC opts else return [] let meta' = title ++ subtitle ++ authors ++ date ++ abstract ++ map Elem toc return (meta' ++ doc', notes', comments') -- | Convert a list of Pandoc blocks to OpenXML. blocksToOpenXML :: (PandocMonad m) => WriterOptions -> [Block] -> WS m [Content] blocksToOpenXML opts = fmap concat . mapM (blockToOpenXML opts) . separateTables . filter (not . isForeignRawBlock) isForeignRawBlock :: Block -> Bool isForeignRawBlock (RawBlock format _) = format /= "openxml" isForeignRawBlock _ = False -- Word combines adjacent tables unless you put an empty paragraph between -- them. See #4315. separateTables :: [Block] -> [Block] separateTables [] = [] separateTables (x@Table{}:xs@(Table{}:_)) = x : RawBlock (Format "openxml") "" : separateTables xs separateTables (x:xs) = x : separateTables xs rStyleM :: (PandocMonad m) => CharStyleName -> WS m XML.Element rStyleM styleName = do cStyleMap <- gets (smCharStyle . stStyleMaps) let sty' = getStyleIdFromName styleName cStyleMap return $ mknode "w:rStyle" [("w:val", fromStyleId sty')] () getUniqueId :: (PandocMonad m) => WS m Text getUniqueId = do n <- gets stCurId modify $ \st -> st{stCurId = n + 1} return $ tshow n -- | Key for specifying user-defined docx styles. dynamicStyleKey :: Text dynamicStyleKey = "custom-style" -- | Convert a Pandoc block element to OpenXML. blockToOpenXML :: (PandocMonad m) => WriterOptions -> Block -> WS m [Content] blockToOpenXML opts blk = withDirection $ blockToOpenXML' opts blk blockToOpenXML' :: (PandocMonad m) => WriterOptions -> Block -> WS m [Content] blockToOpenXML' opts (Div (ident,_classes,kvs) bs) = do stylemod <- case lookup dynamicStyleKey kvs of Just (fromString . T.unpack -> sty) -> do modify $ \s -> s{stDynamicParaProps = Set.insert sty (stDynamicParaProps s)} return $ withParaPropM (pStyleM sty) _ -> return id dirmod <- case lookup "dir" kvs of Just "rtl" -> return $ local (\env -> env { envRTL = True }) Just "ltr" -> return $ local (\env -> env { envRTL = False }) _ -> return id let (hs, bs') = if ident == "refs" then span isHeaderBlock bs else ([], bs) let bibmod = if ident == "refs" then withParaPropM (pStyleM "Bibliography") else id let langmod = case lookup "lang" kvs of Nothing -> id Just lang -> local (\env -> env{envLang = Just lang}) header <- dirmod $ stylemod $ blocksToOpenXML opts hs contents <- dirmod $ bibmod $ stylemod $ langmod $ blocksToOpenXML opts bs' wrapBookmark ident $ header <> contents blockToOpenXML' opts (Header lev (ident,_,kvs) lst) = do setFirstPara paraProps <- withParaPropM (pStyleM (fromString $ "Heading "++show lev)) $ getParaProps False number <- if writerNumberSections opts then case lookup "number" kvs of Just n -> do num <- withTextPropM (rStyleM "SectionNumber") (inlineToOpenXML opts (Str n)) return $ num ++ [Elem $ mknode "w:r" [] [mknode "w:tab" [] ()]] Nothing -> return [] else return [] contents <- (number ++) <$> inlinesToOpenXML opts lst if T.null ident then return [Elem $ mknode "w:p" [] (map Elem paraProps ++ contents)] else do let bookmarkName = ident modify $ \s -> s{ stSectionIds = Set.insert bookmarkName $ stSectionIds s } bookmarkedContents <- wrapBookmark bookmarkName contents return [Elem $ mknode "w:p" [] (map Elem paraProps ++ bookmarkedContents)] blockToOpenXML' opts (Plain lst) = do isInTable <- gets stInTable isInList <- gets stInList let block = blockToOpenXML opts (Para lst) prop <- pStyleM "Compact" if isInTable || isInList then withParaProp prop block else block blockToOpenXML' opts (Para lst) | null lst && not (isEnabled Ext_empty_paragraphs opts) = return [] | otherwise = do isFirstPara <- gets stFirstPara let displayMathPara = case lst of [x] -> isDisplayMath x _ -> False paraProps <- getParaProps displayMathPara bodyTextStyle <- pStyleM $ if isFirstPara then "First Paragraph" else "Body Text" let paraProps' = case paraProps of [] -> [mknode "w:pPr" [] [bodyTextStyle]] ps -> ps modify $ \s -> s { stFirstPara = False } contents <- inlinesToOpenXML opts lst return [Elem $ mknode "w:p" [] (map Elem paraProps' ++ contents)] blockToOpenXML' opts (LineBlock lns) = blockToOpenXML opts $ linesToPara lns blockToOpenXML' _ b@(RawBlock format str) | format == Format "openxml" = return [ Text (CData CDataRaw str Nothing) ] | otherwise = do report $ BlockNotRendered b return [] blockToOpenXML' opts (BlockQuote blocks) = do p <- withParaPropM (pStyleM "Block Text") $ blocksToOpenXML opts blocks setFirstPara return p blockToOpenXML' opts (CodeBlock attrs@(ident, _, _) str) = do p <- withParaPropM (pStyleM "Source Code") (blockToOpenXML opts $ Para [Code attrs str]) setFirstPara wrapBookmark ident p blockToOpenXML' _ HorizontalRule = do setFirstPara return [ Elem $ mknode "w:p" [] $ mknode "w:r" [] $ mknode "w:pict" [] $ mknode "v:rect" [("style","width:0;height:1.5pt"), ("o:hralign","center"), ("o:hrstd","t"),("o:hr","t")] () ] blockToOpenXML' opts (Table attr caption colspecs thead tbodies tfoot) = do -- Remove extra paragraph indentation due to list items (#5947). -- This means that tables in lists will not be indented, but it -- avoids unwanted indentation in each cell. content <- tableToOpenXML opts (local (\env -> env{ envListLevel = -1 }) . blocksToOpenXML opts) (Grid.toTable attr caption colspecs thead tbodies tfoot) let (tableId, _, _) = attr wrapBookmark tableId content blockToOpenXML' opts el | BulletList lst <- el = addOpenXMLList BulletMarker lst | OrderedList (start, numstyle, numdelim) lst <- el = addOpenXMLList (NumberMarker numstyle numdelim start) lst where addOpenXMLList marker lst = do addList marker numid <- getNumId exampleid <- case marker of NumberMarker Example _ _ -> gets stExampleId _ -> return Nothing l <- asList $ concat `fmap` mapM (listItemToOpenXML opts $ fromMaybe numid exampleid) lst setFirstPara return l blockToOpenXML' opts (DefinitionList items) = do l <- concat `fmap` mapM (definitionListItemToOpenXML opts) items setFirstPara return l blockToOpenXML' opts (Figure (ident, _, _) (Caption _ longcapt) body) = do setFirstPara fignum <- gets stNextFigureNum unless (null longcapt) $ modify $ \st -> st{ stNextFigureNum = fignum + 1 } let refid = if T.null ident then "ref_fig" <> tshow fignum else "ref_" <> ident figname <- translateTerm Term.Figure prop <- pStyleM $ if null longcapt then "Figure" else "Captioned Figure" paraProps <- local (\env -> env { envParaProperties = EnvProps (Just prop) [] <> envParaProperties env }) (getParaProps False) -- Figure contents let simpleImage x = do imgXML <- inlineToOpenXML opts x pure $ Elem (mknode "w:p" [] (map Elem paraProps ++ imgXML)) contentsNode <- case body of [Plain [img@Image {}]] -> simpleImage img [Para [img@Image {}]] -> simpleImage img _ -> toFigureTable opts body -- Caption let imageCaption = withParaPropM (pStyleM "Image Caption") . blocksToOpenXML opts let fstCaptionPara inlns = Para $ if not $ isEnabled Ext_native_numbering opts then inlns else let rawfld = RawInline (Format "openxml") $ mconcat [ "" , tshow fignum , "" ] in Span (refid,[],[]) [Str (figname <> "\160") , rawfld] : Str ": " : inlns captionNode <- case longcapt of [] -> return [] (Para xs : bs) -> imageCaption (fstCaptionPara xs : bs) (Plain xs : bs) -> imageCaption (fstCaptionPara xs : bs) _ -> imageCaption longcapt return $ contentsNode : captionNode toFigureTable :: PandocMonad m => WriterOptions -> [Block] -> WS m Content toFigureTable opts blks = do modify $ \s -> s { stInTable = True } let ncols = length blks let textwidth = 7920 -- 5.5 in in twips (1 twip == 1/20 pt) let cellfrac = 1 / fromIntegral ncols let colwidth = tshow @Integer $ floor (textwidth * cellfrac) -- twips let gridCols = replicate ncols $ mknode "w:gridCol" [("w:w", colwidth)] () let scaleImage = \case Image attr@(ident, classes, attribs) alt tgt -> let dimWidth = case dimension Width attr of Nothing -> Percent (cellfrac * 100) Just d -> scaleDimension cellfrac d dimHeight = scaleDimension cellfrac <$> dimension Height attr attribs' = (tshow Width, tshow dimWidth) : (case dimHeight of Nothing -> id Just h -> ((tshow Height, tshow h) :)) [ (k, v) | (k, v) <- attribs , k `notElem` ["width", "height"] ] in Image (ident, classes, attribs') alt tgt x -> x let blockToCell = Table.OOXMLCell nullAttr AlignCenter 1 1 . (:[]) . walk scaleImage tblBody <- Table.rowToOpenXML (blocksToOpenXML opts) . Table.OOXMLRow Table.BodyRow nullAttr $ map blockToCell blks let tbl = mknode "w:tbl" [] ( mknode "w:tblPr" [] ( mknode "w:tblStyle" [("w:val","FigureTable")] () : mknode "w:tblW" [ ("w:type", "auto"), ("w:w", "0") ] () : mknode "w:tblLook" [ ("w:firstRow", "0") , ("w:lastRow", "0") , ("w:firstColumn", "0") , ("w:lastColumn", "0") ] () : mknode "w:jc" [("w:val","center")] () : [] ) : mknode "w:tblGrid" [] gridCols : [tblBody] ) modify $ \s -> s { stInTable = False } return $ Elem tbl definitionListItemToOpenXML :: (PandocMonad m) => WriterOptions -> ([Inline],[[Block]]) -> WS m [Content] definitionListItemToOpenXML opts (term,defs) = do term' <- withParaPropM (pStyleM "Definition Term") $ blockToOpenXML opts (Para term) defs' <- withParaPropM (pStyleM "Definition") $ concat `fmap` mapM (blocksToOpenXML opts) defs return $ term' ++ defs' addList :: (PandocMonad m) => ListMarker -> WS m () addList marker = do lists <- gets stLists lastExampleId <- gets stExampleId modify $ \st -> st{ stLists = lists ++ case marker of -- Use only first occurrence of Example for list declaration to avoid overhead NumberMarker Example _ _ | isJust lastExampleId -> [] _ -> [marker] , stExampleId = case marker of -- Reuse the same identifier for all other occurrences of Example NumberMarker Example _ _ -> lastExampleId <|> Just (baseListId + length lists) _ -> lastExampleId } listItemToOpenXML :: (PandocMonad m) => WriterOptions -> Int -> [Block] -> WS m [Content] listItemToOpenXML opts numid bs = do oldInList <- gets stInList modify $ \st -> st{ stInList = True } let isListBlock = \case BulletList{} -> True OrderedList{} -> True _ -> False -- Prepend an empty string if the first entry is another -- list. Otherwise the outer bullet will disappear. let bs' = case bs of [] -> [] first:rest -> if isListBlock first then Plain [Str ""]:first:rest else first:rest modify $ \st -> st{ stNumIdUsed = False } contents <- withNumId numid $ blocksToOpenXML opts bs' modify $ \st -> st{ stInList = oldInList } return contents -- | Convert a list of inline elements to OpenXML. inlinesToOpenXML :: PandocMonad m => WriterOptions -> [Inline] -> WS m [Content] inlinesToOpenXML opts lst = concat `fmap` mapM (inlineToOpenXML opts) lst withNumId :: (PandocMonad m) => Int -> WS m a -> WS m a withNumId numid = local $ \env -> env{ envListNumId = numid } asList :: (PandocMonad m) => WS m a -> WS m a asList = local $ \env -> env{ envListLevel = envListLevel env + 1 } getTextProps :: (PandocMonad m) => WS m [Element] getTextProps = do props <- asks envTextProperties mblang <- asks envLang let langnode = case mblang of Nothing -> mempty Just l -> EnvProps Nothing [mknode "w:lang" [("w:val", l)] ()] let squashed = squashProps (props <> langnode) return [mknode "w:rPr" [] squashed | (not . null) squashed] withTextProp :: PandocMonad m => Element -> WS m a -> WS m a withTextProp d p = local (\env -> env {envTextProperties = ep <> envTextProperties env}) p where ep = if isStyle d then EnvProps (Just d) [] else EnvProps Nothing [d] withTextPropM :: PandocMonad m => WS m Element -> WS m a -> WS m a withTextPropM md p = do d <- md withTextProp d p getParaProps :: PandocMonad m => Bool -> WS m [Element] getParaProps displayMathPara = do props <- asks envParaProperties listLevel <- asks envListLevel numid <- asks envListNumId numIdUsed <- gets stNumIdUsed -- clear numId after first use to support multiple paragraphs in the same bullet -- baseListId is the code for no list marker let numid' = if numIdUsed then baseListId else numid modify $ \st -> st{ stNumIdUsed = True } let listPr = [mknode "w:numPr" [] [ mknode "w:ilvl" [("w:val",tshow listLevel)] () , mknode "w:numId" [("w:val",tshow numid')] () ] | listLevel >= 0 && not displayMathPara] return $ case listPr ++ squashProps props of [] -> [] ps -> [mknode "w:pPr" [] ps] formattedString :: PandocMonad m => Text -> WS m [Element] formattedString str = -- properly handle soft hyphens case splitTextBy (=='\173') str of [w] -> formattedString' w ws -> do sh <- formattedRun [mknode "w:softHyphen" [] ()] intercalate sh <$> mapM formattedString' ws formattedString' :: PandocMonad m => Text -> WS m [Element] formattedString' str = do inDel <- asks envInDel formattedRun [ mktnode (if inDel then "w:delText" else "w:t") [("xml:space","preserve")] (stripInvalidChars str) ] formattedRun :: PandocMonad m => [Element] -> WS m [Element] formattedRun els = do props <- getTextProps return [ mknode "w:r" [] $ props ++ els ] -- | Convert an inline element to OpenXML. inlineToOpenXML :: PandocMonad m => WriterOptions -> Inline -> WS m [Content] inlineToOpenXML opts il = withDirection $ inlineToOpenXML' opts il inlineToOpenXML' :: PandocMonad m => WriterOptions -> Inline -> WS m [Content] inlineToOpenXML' _ (Str str) = map Elem <$> formattedString str inlineToOpenXML' opts Space = inlineToOpenXML opts (Str " ") inlineToOpenXML' opts SoftBreak = inlineToOpenXML opts (Str " ") inlineToOpenXML' opts (Span ("",["mark"],[]) ils) = withTextProp (mknode "w:highlight" [("w:val","yellow")] ()) $ inlinesToOpenXML opts ils inlineToOpenXML' opts (Span ("",["csl-block"],[]) ils) = inlinesToOpenXML opts ils inlineToOpenXML' opts (Span ("",["csl-left-margin"],[]) ils) = inlinesToOpenXML opts ils inlineToOpenXML' opts (Span ("",["csl-right-inline"],[]) ils) = ([Elem $ mknode "w:r" [] (mknode "w:t" [("xml:space","preserve")] ("\t" :: Text))] ++) <$> inlinesToOpenXML opts ils inlineToOpenXML' opts (Span ("",["csl-indent"],[]) ils) = inlinesToOpenXML opts ils inlineToOpenXML' _ (Span (ident,["comment-start"],kvs) ils) = do -- prefer the "id" in kvs, since that is the one produced by the docx -- reader. let ident' = fromMaybe ident (lookup "id" kvs) kvs' = filter (("id" /=) . fst) kvs modify $ \st -> st{ stComments = (("id",ident'):kvs', ils) : stComments st } return [ Elem $ mknode "w:commentRangeStart" [("w:id", ident')] () ] inlineToOpenXML' _ (Span (ident,["comment-end"],kvs) _) = -- prefer the "id" in kvs, since that is the one produced by the docx -- reader. let ident' = fromMaybe ident (lookup "id" kvs) in return . map Elem $ [ mknode "w:commentRangeEnd" [("w:id", ident')] () , mknode "w:r" [] [ mknode "w:rPr" [] [ mknode "w:rStyle" [("w:val", "CommentReference")] () ] , mknode "w:commentReference" [("w:id", ident')] () ] ] inlineToOpenXML' opts (Span (ident,classes,kvs) ils) = do stylemod <- case lookup dynamicStyleKey kvs of Just (fromString . T.unpack -> sty) -> do modify $ \s -> s{stDynamicTextProps = Set.insert sty (stDynamicTextProps s)} return $ withTextPropM (rStyleM sty) _ -> return id let dirmod = case lookup "dir" kvs of Just "rtl" -> local (\env -> env { envRTL = True }) Just "ltr" -> local (\env -> env { envRTL = False }) _ -> id off x = withTextProp (mknode x [("w:val","0")] ()) pmod = (if "csl-no-emph" `elem` classes then off "w:i" else id) . (if "csl-no-strong" `elem` classes then off "w:b" else id) . (if "csl-no-smallcaps" `elem` classes then off "w:smallCaps" else id) getChangeAuthorDate = do defaultAuthor <- asks envChangesAuthor let author = fromMaybe defaultAuthor (lookup "author" kvs) let mdate = lookup "date" kvs return $ ("w:author", author) : maybe [] (\date -> [("w:date", date)]) mdate insmod <- if "insertion" `elem` classes then do changeAuthorDate <- getChangeAuthorDate insId <- gets stInsId modify $ \s -> s{stInsId = insId + 1} return $ \f -> do x <- f return [Elem $ mknode "w:ins" (("w:id", tshow insId) : changeAuthorDate) x] else return id delmod <- if "deletion" `elem` classes then do changeAuthorDate <- getChangeAuthorDate delId <- gets stDelId modify $ \s -> s{stDelId = delId + 1} return $ \f -> local (\env->env{envInDel=True}) $ do x <- f return [Elem $ mknode "w:del" (("w:id", tshow delId) : changeAuthorDate) x] else return id let langmod = case lookup "lang" kvs of Nothing -> id Just lang -> local (\env -> env{envLang = Just lang}) contents <- insmod $ delmod $ dirmod $ stylemod $ pmod $ langmod $ inlinesToOpenXML opts ils wrapBookmark ident contents inlineToOpenXML' opts (Strong lst) = withTextProp (mknode "w:b" [] ()) $ withTextProp (mknode "w:bCs" [] ()) $ -- needed for LTR, #6911 inlinesToOpenXML opts lst inlineToOpenXML' opts (Emph lst) = withTextProp (mknode "w:i" [] ()) $ withTextProp (mknode "w:iCs" [] ()) $ -- needed for LTR, #6911 inlinesToOpenXML opts lst inlineToOpenXML' opts (Underline lst) = withTextProp (mknode "w:u" [("w:val","single")] ()) $ inlinesToOpenXML opts lst inlineToOpenXML' opts (Subscript lst) = withTextProp (mknode "w:vertAlign" [("w:val","subscript")] ()) $ inlinesToOpenXML opts lst inlineToOpenXML' opts (Superscript lst) = withTextProp (mknode "w:vertAlign" [("w:val","superscript")] ()) $ inlinesToOpenXML opts lst inlineToOpenXML' opts (SmallCaps lst) = withTextProp (mknode "w:smallCaps" [] ()) $ inlinesToOpenXML opts lst inlineToOpenXML' opts (Strikeout lst) = withTextProp (mknode "w:strike" [] ()) $ inlinesToOpenXML opts lst inlineToOpenXML' _ LineBreak = return [Elem br] inlineToOpenXML' _ il@(RawInline f str) | f == Format "openxml" = return [Text (CData CDataRaw str Nothing)] | otherwise = do report $ InlineNotRendered il return [] inlineToOpenXML' opts (Quoted quoteType lst) = inlinesToOpenXML opts $ [Str open] ++ lst ++ [Str close] where (open, close) = case quoteType of SingleQuote -> ("\x2018", "\x2019") DoubleQuote -> ("\x201C", "\x201D") inlineToOpenXML' opts (Math mathType str) = do when (mathType == DisplayMath) setFirstPara res <- (lift . lift) (convertMath writeOMML mathType str) case res of Right r -> return [Elem $ fromXLElement r] Left il -> inlineToOpenXML' opts il inlineToOpenXML' opts (Cite _ lst) = inlinesToOpenXML opts lst inlineToOpenXML' opts (Code attrs str) = do let alltoktypes = [KeywordTok ..] tokTypesMap <- mapM (\tt -> (,) tt <$> rStyleM (fromString $ show tt)) alltoktypes let unhighlighted = (map Elem . intercalate [br]) `fmap` mapM formattedString (T.lines str) formatOpenXML _fmtOpts = intercalate [br] . map (map toHlTok) toHlTok (toktype,tok) = mknode "w:r" [] [ mknode "w:rPr" [] $ maybeToList (lookup toktype tokTypesMap) , mknode "w:t" [("xml:space","preserve")] tok ] withTextPropM (rStyleM "Verbatim Char") $ if isNothing (writerHighlightStyle opts) then unhighlighted else case highlight (writerSyntaxMap opts) formatOpenXML attrs str of Right h -> return (map Elem h) Left msg -> do unless (T.null msg) $ report $ CouldNotHighlight msg unhighlighted inlineToOpenXML' opts (Note bs) = do notes <- gets stFootnotes notenum <- getUniqueId footnoteStyle <- rStyleM "Footnote Reference" let notemarker = mknode "w:r" [] [ mknode "w:rPr" [] footnoteStyle , mknode "w:footnoteRef" [] () ] let notemarkerXml = RawInline (Format "openxml") $ ppElement notemarker let insertNoteRef (Plain ils : xs) = Plain (notemarkerXml : Space : ils) : xs insertNoteRef (Para ils : xs) = Para (notemarkerXml : Space : ils) : xs insertNoteRef xs = Para [notemarkerXml] : xs contents <- local (\env -> env{ envListLevel = -1 , envParaProperties = mempty , envTextProperties = mempty }) (withParaPropM (pStyleM "Footnote Text") $ blocksToOpenXML opts $ insertNoteRef bs) let newnote = mknode "w:footnote" [("w:id", notenum)] contents modify $ \s -> s{ stFootnotes = newnote : notes } return [ Elem $ mknode "w:r" [] [ mknode "w:rPr" [] footnoteStyle , mknode "w:footnoteReference" [("w:id", notenum)] () ] ] -- internal link: inlineToOpenXML' opts (Link _ txt (T.uncons -> Just ('#', xs),_)) = do contents <- withTextPropM (rStyleM "Hyperlink") $ inlinesToOpenXML opts txt return [ Elem $ mknode "w:hyperlink" [("w:anchor", toBookmarkName xs)] contents ] -- external link: inlineToOpenXML' opts (Link _ txt (src,_)) = do contents <- withTextPropM (rStyleM "Hyperlink") $ inlinesToOpenXML opts txt extlinks <- gets stExternalLinks id' <- case M.lookup src extlinks of Just i -> return i Nothing -> do i <- ("rId" <>) <$> getUniqueId modify $ \st -> st{ stExternalLinks = M.insert src i extlinks } return i return [ Elem $ mknode "w:hyperlink" [("r:id",id')] contents ] inlineToOpenXML' opts (Image attr@(imgident, _, _) alt (src, title)) = do pageWidth <- asks envPrintWidth imgs <- gets stImages let stImage = M.lookup (T.unpack src) imgs generateImgElt (ident, _fp, mt, img) = do docprid <- getUniqueId nvpicprid <- getUniqueId (blipAttrs, blipContents) <- case T.takeWhile (/=';') <$> mt of Just "image/svg+xml" -> do -- get fallback png mediabag <- getMediaBag mbFallback <- case lookupMedia (T.unpack (src <> ".png")) mediabag of Just item -> do id' <- T.unpack . ("rId" <>) <$> getUniqueId let fp' = "media/" <> id' <> ".png" let imgdata = (id', fp', Just (mediaMimeType item), BL.toStrict $ mediaContents item) modify $ \st -> st { stImages = M.insert fp' imgdata $ stImages st } return $ Just id' Nothing -> return Nothing let extLst = mknode "a:extLst" [] [ mknode "a:ext" [("uri","{28A0092B-C50C-407E-A947-70E740481C1C}")] [ mknode "a14:useLocalDpi" [("xmlns:a14","http://schemas.microsoft.com/office/drawing/2010/main"), ("val","0")] () ] , mknode "a:ext" [("uri","{96DAC541-7B7A-43D3-8B79-37D633B846F1}")] [ mknode "asvg:svgBlip" [("xmlns:asvg", "http://schemas.microsoft.com/office/drawing/2016/SVG/main"), ("r:embed",T.pack ident)] () ] ] return (maybe [] (\id'' -> [("r:embed", T.pack id'')]) mbFallback, [extLst]) _ -> return ([("r:embed", T.pack ident)], []) let (xpt,ypt) = desiredSizeInPoints opts attr (either (const def) id (imageSize opts img)) -- 12700 emu = 1 pt pageWidthPt = case dimension Width attr of Just (Percent a) -> pageWidth * (floor $ a * 127) _ -> pageWidth * 12700 (xemu,yemu) = fitToPage (xpt * 12700, ypt * 12700) pageWidthPt cNvPicPr = mknode "pic:cNvPicPr" [] $ mknode "a:picLocks" [("noChangeArrowheads","1") ,("noChangeAspect","1")] () nvPicPr = mknode "pic:nvPicPr" [] [ mknode "pic:cNvPr" [("descr",src) ,("id", nvpicprid) ,("name","Picture")] () , cNvPicPr ] blipFill = mknode "pic:blipFill" [] [ mknode "a:blip" blipAttrs blipContents , mknode "a:stretch" [] $ mknode "a:fillRect" [] () ] xfrm = mknode "a:xfrm" [] [ mknode "a:off" [("x","0"),("y","0")] () , mknode "a:ext" [("cx",tshow xemu) ,("cy",tshow yemu)] () ] prstGeom = mknode "a:prstGeom" [("prst","rect")] $ mknode "a:avLst" [] () ln = mknode "a:ln" [("w","9525")] [ mknode "a:noFill" [] () , mknode "a:headEnd" [] () , mknode "a:tailEnd" [] () ] spPr = mknode "pic:spPr" [("bwMode","auto")] [xfrm, prstGeom, mknode "a:noFill" [] (), ln] graphic = mknode "a:graphic" [] $ mknode "a:graphicData" [("uri","http://schemas.openxmlformats.org/drawingml/2006/picture")] [ mknode "pic:pic" [] [ nvPicPr , blipFill , spPr ] ] imgElt = mknode "w:r" [] $ mknode "w:drawing" [] $ mknode "wp:inline" [] [ mknode "wp:extent" [("cx",tshow xemu),("cy",tshow yemu)] () , mknode "wp:effectExtent" [("b","0"),("l","0"),("r","0"),("t","0")] () , mknode "wp:docPr" [ ("descr", stringify alt) , ("title", title) , ("id", docprid) , ("name","Picture") ] () , graphic ] return [Elem imgElt] wrapBookmark imgident =<< case stImage of Just imgData -> generateImgElt imgData Nothing -> ( do --try (img, mt) <- P.fetchItem src ident <- ("rId" <>) <$> getUniqueId let imgext = case mt >>= extensionFromMimeType of Just x -> "." <> x Nothing -> case imageType img of Just Png -> ".png" Just Jpeg -> ".jpeg" Just Gif -> ".gif" Just Pdf -> ".pdf" Just Eps -> ".eps" Just Svg -> ".svg" Just Emf -> ".emf" Just Tiff -> ".tiff" Nothing -> "" imgpath = "media/" <> ident <> imgext mbMimeType = mt <|> getMimeType (T.unpack imgpath) imgData = (T.unpack ident, T.unpack imgpath, mbMimeType, img) if T.null imgext then -- without an extension there is no rule for content type inlinesToOpenXML opts alt -- return alt to avoid corrupted docx else do -- insert mime type to use in constructing [Content_Types].xml modify $ \st -> st { stImages = M.insert (T.unpack src) imgData $ stImages st } generateImgElt imgData ) `catchError` ( \e -> do report $ CouldNotFetchResource src $ T.pack (show e) -- emit alt text inlinesToOpenXML opts alt ) br :: Element br = mknode "w:r" [] [mknode "w:br" [] ()] withDirection :: PandocMonad m => WS m a -> WS m a withDirection x = do isRTL <- asks envRTL paraProps <- asks envParaProperties textProps <- asks envTextProperties -- We want to clean all bidirection (bidi) and right-to-left (rtl) -- properties from the props first. This is because we don't want -- them to stack up. let paraProps' = filter (\e -> (qName . elName) e /= "bidi") (otherElements paraProps) textProps' = filter (\e -> (qName . elName) e /= "rtl") (otherElements textProps) paraStyle = styleElement paraProps textStyle = styleElement textProps if isRTL -- if we are going right-to-left, we (re?)add the properties. then flip local x $ \env -> env { envParaProperties = EnvProps paraStyle $ mknode "w:bidi" [] () : paraProps' , envTextProperties = EnvProps textStyle $ mknode "w:rtl" [] () : textProps' } else flip local x $ \env -> env { envParaProperties = EnvProps paraStyle paraProps' , envTextProperties = EnvProps textStyle textProps' } wrapBookmark :: (PandocMonad m) => Text -> [Content] -> WS m [Content] wrapBookmark "" contents = return contents wrapBookmark ident contents = do id' <- getUniqueId let bookmarkStart = mknode "w:bookmarkStart" [("w:id", id') ,("w:name", toBookmarkName ident)] () bookmarkEnd = mknode "w:bookmarkEnd" [("w:id", id')] () return $ Elem bookmarkStart : contents ++ [Elem bookmarkEnd] -- Word imposes a 40 character limit on bookmark names and requires -- that they begin with a letter. So we just use a hash of the -- identifier when otherwise we'd have an illegal bookmark name. toBookmarkName :: Text -> Text toBookmarkName s | Just (c, _) <- T.uncons s , isLetter c , T.length s <= 40 = s | otherwise = T.pack $ 'X' : drop 1 (showDigest (sha1 (fromTextLazy $ TL.fromStrict s))) pandoc-3.1.3/src/Text/Pandoc/Writers/Docx/0000755000000000000000000000000007346545000016426 5ustar0000000000000000pandoc-3.1.3/src/Text/Pandoc/Writers/Docx/StyleMap.hs0000644000000000000000000000360207346545000020521 0ustar0000000000000000{-# LANGUAGE FlexibleContexts #-} {- | Module : Text.Pandoc.Writers.Docx.StyleMap Copyright : © 2014-2020 Jesse Rosenthal , 2014-2023 John MacFarlane , 2015-2019 Nikolay Yakimov License : GNU GPL, version 2 or above Maintainer : Jesse Rosenthal Stability : alpha Portability : portable Mappings of element styles (word to pandoc-internal). -} module Text.Pandoc.Writers.Docx.StyleMap ( StyleMaps(..) , ParaStyleName , CharStyleName , getStyleMaps , getStyleIdFromName , hasStyleName , fromStyleId , fromStyleName ) where import Text.Pandoc.Readers.Docx.Parse.Styles import Codec.Archive.Zip import qualified Data.Map as M import qualified Data.Text as T import Data.String import Data.Char (isSpace) data StyleMaps = StyleMaps { smCharStyle :: CharStyleNameMap, smParaStyle :: ParaStyleNameMap } type ParaStyleNameMap = M.Map ParaStyleName ParStyle type CharStyleNameMap = M.Map CharStyleName CharStyle getStyleIdFromName :: (Ord sn, FromStyleName sn, IsString (StyleId sty), HasStyleId sty) => sn -> M.Map sn sty -> StyleId sty getStyleIdFromName s = maybe (fallback s) getStyleId . M.lookup s where fallback = fromString . T.unpack . T.filter (not . isSpace) . fromStyleName hasStyleName :: (Ord sn, HasStyleId sty) => sn -> M.Map sn sty -> Bool hasStyleName styleName = M.member styleName getStyleMaps :: Archive -> StyleMaps getStyleMaps = uncurry StyleMaps . archiveToStyles' getStyleName getStyleName pandoc-3.1.3/src/Text/Pandoc/Writers/Docx/Table.hs0000644000000000000000000002525507346545000020022 0ustar0000000000000000{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {- | Module : Text.Pandoc.Writers.Docx.Table Copyright : Copyright (C) 2012-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Conversion of table blocks to docx. -} module Text.Pandoc.Writers.Docx.Table ( tableToOpenXML , rowToOpenXML , OOXMLRow (..) , OOXMLCell (..) , RowType (..) ) where import Control.Monad.State.Strict ( modify, gets ) import Control.Monad ( unless , zipWithM ) import Control.Monad.Except ( throwError ) import Data.Array ( elems, (!), assocs, indices ) import Data.Text (Text) import Text.Pandoc.Definition ( ColSpec, Caption(Caption), Format(Format), Attr, Block(Para, Plain), Inline(Str, Span, RawInline), Alignment(..), RowSpan(..), ColSpan(..), ColWidth(ColWidth) ) import Text.Pandoc.Class.PandocMonad (PandocMonad) import Text.Pandoc.Translations (translateTerm) import Text.Pandoc.Writers.Docx.Types ( WS, WriterState(stNextTableNum, stInTable), WriterEnv(..), setFirstPara, pStyleM, withParaProp, withParaPropM ) import Control.Monad.Reader (asks) import Text.Pandoc.Shared ( tshow, stringify ) import Text.Pandoc.Options (WriterOptions, isEnabled) import Text.Pandoc.Extensions (Extension(Ext_native_numbering)) import Text.Pandoc.Error (PandocError(PandocSomeError)) import Text.Printf (printf) import Text.Pandoc.Writers.GridTable ( rowArray, ColIndex, GridCell(..), Part(Part, partCellArray, partRowAttrs), RowIndex ) import Text.Pandoc.Writers.OOXML ( mknode ) import Text.Pandoc.XML.Light.Proc ( onlyElems ) import Text.Pandoc.XML.Light.Types ( Content(Elem), Element(elName), QName(qName) ) import qualified Data.Text as T import qualified Text.Pandoc.Translations as Term import qualified Text.Pandoc.Writers.GridTable as Grid tableToOpenXML :: PandocMonad m => WriterOptions -> ([Block] -> WS m [Content]) -> Grid.Table -> WS m [Content] tableToOpenXML opts blocksToOpenXML gridTable = do setFirstPara let (Grid.Table (ident,_,_) caption colspecs _rowheads thead tbodies tfoot) = gridTable let (Caption _maybeShortCaption captionBlocks) = caption tablenum <- gets stNextTableNum unless (null captionBlocks) $ modify $ \st -> st{ stNextTableNum = tablenum + 1 } let tableid = if T.null ident then "table" <> tshow tablenum else ident tablename <- translateTerm Term.Table let captionStr = stringify captionBlocks let aligns = map fst $ elems colspecs captionXml <- if null captionBlocks then return [] else withParaPropM (pStyleM "Table Caption") $ blocksToOpenXML $ if isEnabled Ext_native_numbering opts then addLabel tableid tablename tablenum captionBlocks else captionBlocks -- We set "in table" after processing the caption, because we don't -- want the "Table Caption" style to be overwritten with "Compact". modify $ \s -> s { stInTable = True } head' <- cellGridToOpenXML blocksToOpenXML HeadRow aligns thead bodies <- mapM (cellGridToOpenXML blocksToOpenXML BodyRow aligns) tbodies foot' <- cellGridToOpenXML blocksToOpenXML FootRow aligns tfoot let hasHeader = not . null . indices . partRowAttrs $ thead let hasFooter = not . null . indices . partRowAttrs $ tfoot -- for compatibility with Word <= 2007, we include a val with a bitmask -- 0×0020 Apply first row conditional formatting -- 0×0040 Apply last row conditional formatting -- 0×0080 Apply first column conditional formatting -- 0×0100 Apply last column conditional formatting -- 0×0200 Do not apply row banding conditional formatting -- 0×0400 Do not apply column banding conditional formattin let tblLookVal = if hasHeader then (0x20 :: Int) else 0 let (gridCols, tblWattr) = tableLayout (elems colspecs) listLevel <- asks envListLevel let indent = (listLevel + 1) * 720 let tbl = mknode "w:tbl" [] ( mknode "w:tblPr" [] ( mknode "w:tblStyle" [("w:val","Table")] () : mknode "w:tblW" tblWattr () : mknode "w:tblLook" [("w:firstRow",if hasHeader then "1" else "0") ,("w:lastRow",if hasFooter then "1" else "0") ,("w:firstColumn","0") ,("w:lastColumn","0") ,("w:noHBand","0") ,("w:noVBand","0") ,("w:val", T.pack $ printf "%04x" tblLookVal) ] () : mknode "w:jc" [("w:val","start")] () : [ mknode "w:tblInd" [("w:w", tshow indent),("w:type","dxa")] () | indent > 0 ] ++ [ mknode "w:tblCaption" [("w:val", captionStr)] () | not (T.null captionStr) ] ) : mknode "w:tblGrid" [] gridCols : head' ++ mconcat bodies ++ foot' ) modify $ \s -> s { stInTable = False } return $ captionXml ++ [Elem tbl] addLabel :: Text -> Text -> Int -> [Block] -> [Block] addLabel tableid tablename tablenum bs = case bs of (Para ils : rest) -> Para (label : Str ": " : ils) : rest (Plain ils : rest) -> Plain (label : Str ": " : ils) : rest _ -> Para [label] : bs where label = Span (tableid,[],[]) [Str (tablename <> "\160"), RawInline (Format "openxml") (" " \\* ARABIC \">" <> tshow tablenum <> "")] -- | Parts of a table data RowType = HeadRow | BodyRow | FootRow alignmentToString :: Alignment -> Text alignmentToString = \case AlignLeft -> "left" AlignRight -> "right" AlignCenter -> "center" AlignDefault -> "left" tableLayout :: [ColSpec] -> ([Element], [(Text, Text)]) tableLayout specs = let textwidth = 7920 -- 5.5 in in twips (1 twip == 1/20 pt) fullrow = 5000 -- 100% specified in pct (1 pct == 1/50th of a percent) ncols = length specs getWidth = \case ColWidth n -> n _ -> 0 widths = map (getWidth . snd) specs rowwidth = round (fullrow * sum widths) :: Int widthToTwips w = floor (textwidth * w) :: Int mkGridCol w = mknode "w:gridCol" [("w:w", tshow (widthToTwips w))] () in if all (== 0) widths then ( replicate ncols $ mkGridCol (1.0 / fromIntegral ncols) , [ ("w:type", "auto"), ("w:w", "0")]) else ( map mkGridCol widths , [ ("w:type", "pct"), ("w:w", tshow rowwidth) ]) cellGridToOpenXML :: PandocMonad m => ([Block] -> WS m [Content]) -> RowType -> [Alignment] -> Part -> WS m [Element] cellGridToOpenXML blocksToOpenXML rowType aligns part@(Part _ cellArray _) = if null (elems cellArray) then return mempty else partToRows rowType aligns part >>= mapM (rowToOpenXML blocksToOpenXML) data OOXMLCell = OOXMLCell Attr Alignment RowSpan ColSpan [Block] | OOXMLCellMerge ColSpan data OOXMLRow = OOXMLRow RowType Attr [OOXMLCell] partToRows :: PandocMonad m => RowType -> [Alignment] -> Part -> WS m [OOXMLRow] partToRows rowType aligns part = do let toOOXMLCell :: PandocMonad m => Alignment -> RowIndex -> ColIndex -> GridCell -> WS m [OOXMLCell] toOOXMLCell columnAlign ridx cidx = \case UnassignedCell -> throwError $ PandocSomeError "Encountered unassigned table cell" ContentCell attr align rowspan colspan blocks -> do -- Respect non-default, cell specific alignment. let align' = case align of AlignDefault -> columnAlign _ -> align return [OOXMLCell attr align' rowspan colspan blocks] ContinuationCell idx'@(ridx',cidx') | ridx /= ridx', cidx == cidx' -> do case (partCellArray part)!idx' of (ContentCell _ _ _ colspan _) -> return [OOXMLCellMerge colspan] x -> error $ "Content cell expected, got, " ++ show x ++ " at index " ++ show idx' _ -> return mempty let mkRow :: PandocMonad m => (RowIndex, Attr) -> WS m OOXMLRow mkRow (ridx, attr) = do cs <- zipWithM (\align -> uncurry $ toOOXMLCell align ridx) aligns (assocs . rowArray ridx $ partCellArray part) return $ OOXMLRow rowType attr . mconcat $ cs mapM mkRow $ assocs (partRowAttrs part) rowToOpenXML :: PandocMonad m => ([Block] -> WS m [Content]) -> OOXMLRow -> WS m Element rowToOpenXML blocksToOpenXML (OOXMLRow rowType _attr cells) = do xmlcells <- mapM (ooxmlCellToOpenXML blocksToOpenXML) cells let addTrPr = case rowType of HeadRow -> (mknode "w:trPr" [] [mknode "w:tblHeader" [("w:val", "true")] ()] :) BodyRow -> id FootRow -> id return $ mknode "w:tr" [] (addTrPr xmlcells) ooxmlCellToOpenXML :: PandocMonad m => ([Block] -> WS m [Content]) -> OOXMLCell -> WS m Element ooxmlCellToOpenXML blocksToOpenXML = \case OOXMLCellMerge (ColSpan colspan) -> do return $ mknode "w:tc" [] [ mknode "w:tcPr" [] [ mknode "w:gridSpan" [("w:val", tshow colspan)] () , mknode "w:vMerge" [("w:val", "continue")] () ] , mknode "w:p" [] [mknode "w:pPr" [] ()]] OOXMLCell _attr align rowspan (ColSpan colspan) contents -> do compactStyle <- pStyleM "Compact" es <- withParaProp (alignmentFor align) $ blocksToOpenXML contents -- Table cells require a element, even an empty one! -- Not in the spec but in Word 2007, 2010. See #4953. And -- apparently the last element must be a , see #6983. return . mknode "w:tc" [] $ Elem (mknode "w:tcPr" [] ([ mknode "w:gridSpan" [("w:val", tshow colspan)] () | colspan > 1] ++ [ mknode "w:vMerge" [("w:val", "restart")] () | rowspan > RowSpan 1 ])) : if null contents then [Elem $ mknode "w:p" [] [mknode "w:pPr" [] [compactStyle]]] else case reverse (onlyElems es) of b:e:_ | qName (elName b) == "bookmarkEnd" -- y tho? , qName (elName e) == "p" -> es e:_ | qName (elName e) == "p" -> es _ -> es ++ [Elem $ mknode "w:p" [] ()] alignmentFor :: Alignment -> Element alignmentFor al = mknode "w:jc" [("w:val",alignmentToString al)] () pandoc-3.1.3/src/Text/Pandoc/Writers/Docx/Types.hs0000644000000000000000000001443007346545000020070 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Writers.Docx Copyright : Copyright (C) 2012-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Conversion of table blocks to docx. -} module Text.Pandoc.Writers.Docx.Types ( EnvProps (..) , WriterEnv (..) , defaultWriterEnv , WriterState (..) , defaultWriterState , WS , ListMarker (..) , listMarkerToId , pStyleM , isStyle , setFirstPara , withParaProp , withParaPropM ) where import Control.Applicative ((<|>)) import Control.Monad.Reader import Control.Monad.State.Strict import Data.Text (Text) import Text.Pandoc.Class.PandocMonad (PandocMonad) import Text.Pandoc.Definition import Text.Pandoc.MIME (MimeType) import Text.Pandoc.Writers.Docx.StyleMap import Text.Pandoc.Writers.OOXML import Text.Pandoc.XML.Light as XML import qualified Data.ByteString as B import qualified Data.Map as M import qualified Data.Set as Set import qualified Data.Text as T data ListMarker = NoMarker | BulletMarker | NumberMarker ListNumberStyle ListNumberDelim Int deriving (Show, Read, Eq, Ord) listMarkerToId :: ListMarker -> Text listMarkerToId NoMarker = "990" listMarkerToId BulletMarker = "991" listMarkerToId (NumberMarker sty delim n) = T.pack $ '9' : '9' : styNum : delimNum : show n where styNum = case sty of DefaultStyle -> '2' Example -> '3' Decimal -> '4' LowerRoman -> '5' UpperRoman -> '6' LowerAlpha -> '7' UpperAlpha -> '8' delimNum = case delim of DefaultDelim -> '0' Period -> '1' OneParen -> '2' TwoParens -> '3' data EnvProps = EnvProps{ styleElement :: Maybe Element , otherElements :: [Element] } instance Semigroup EnvProps where EnvProps s es <> EnvProps s' es' = EnvProps (s <|> s') (es ++ es') instance Monoid EnvProps where mempty = EnvProps Nothing [] mappend = (<>) data WriterEnv = WriterEnv { envTextProperties :: EnvProps , envParaProperties :: EnvProps , envRTL :: Bool , envListLevel :: Int , envListNumId :: Int , envInDel :: Bool , envChangesAuthor :: Text , envChangesDate :: Text , envPrintWidth :: Integer , envLang :: Maybe Text } defaultWriterEnv :: WriterEnv defaultWriterEnv = WriterEnv { envTextProperties = mempty , envParaProperties = mempty , envRTL = False , envListLevel = -1 , envListNumId = 1 , envInDel = False , envChangesAuthor = "unknown" , envChangesDate = "1969-12-31T19:00:00Z" , envPrintWidth = 1 , envLang = Nothing } data WriterState = WriterState{ stFootnotes :: [Element] , stComments :: [([(Text, Text)], [Inline])] , stSectionIds :: Set.Set Text , stExternalLinks :: M.Map Text Text , stImages :: M.Map FilePath (String, String, Maybe MimeType, B.ByteString) , stLists :: [ListMarker] , stExampleId :: Maybe Int , stInsId :: Int , stDelId :: Int , stStyleMaps :: StyleMaps , stFirstPara :: Bool , stNumIdUsed :: Bool -- ^ True if the current numId (envListNumId) has been used. -- Should only be used once, for the first paragraph. , stInTable :: Bool , stInList :: Bool , stTocTitle :: [Inline] , stDynamicParaProps :: Set.Set ParaStyleName , stDynamicTextProps :: Set.Set CharStyleName , stCurId :: Int , stNextFigureNum :: Int , stNextTableNum :: Int } defaultWriterState :: WriterState defaultWriterState = WriterState{ stFootnotes = defaultFootnotes , stComments = [] , stSectionIds = Set.empty , stExternalLinks = M.empty , stImages = M.empty , stLists = [NoMarker] , stExampleId = Nothing , stInsId = 1 , stDelId = 1 , stStyleMaps = StyleMaps M.empty M.empty , stFirstPara = False , stNumIdUsed = False , stInTable = False , stInList = False , stTocTitle = [Str "Table of Contents"] , stDynamicParaProps = Set.empty , stDynamicTextProps = Set.empty , stCurId = 20 , stNextFigureNum = 1 , stNextTableNum = 1 } setFirstPara :: PandocMonad m => WS m () setFirstPara = modify $ \s -> s { stFirstPara = True } type WS m = ReaderT WriterEnv (StateT WriterState m) -- Word will insert these footnotes into the settings.xml file -- (whether or not they're visible in the document). If they're in the -- file, but not in the footnotes.xml file, it will produce -- problems. So we want to make sure we insert them into our document. defaultFootnotes :: [Element] defaultFootnotes = [ mknode "w:footnote" [("w:type", "separator"), ("w:id", "-1")] [ mknode "w:p" [] [mknode "w:r" [] [ mknode "w:separator" [] ()]]] , mknode "w:footnote" [("w:type", "continuationSeparator"), ("w:id", "0")] [ mknode "w:p" [] [ mknode "w:r" [] [ mknode "w:continuationSeparator" [] ()]]]] pStyleM :: (PandocMonad m) => ParaStyleName -> WS m XML.Element pStyleM styleName = do pStyleMap <- gets (smParaStyle . stStyleMaps) let sty' = getStyleIdFromName styleName pStyleMap return $ mknode "w:pStyle" [("w:val", fromStyleId sty')] () withParaProp :: PandocMonad m => Element -> WS m a -> WS m a withParaProp d p = local (\env -> env {envParaProperties = ep <> envParaProperties env}) p where ep = if isStyle d then EnvProps (Just d) [] else EnvProps Nothing [d] withParaPropM :: PandocMonad m => WS m Element -> WS m a -> WS m a withParaPropM md p = do d <- md withParaProp d p isStyle :: Element -> Bool isStyle e = isElem [] "w" "rStyle" e || isElem [] "w" "pStyle" e pandoc-3.1.3/src/Text/Pandoc/Writers/DokuWiki.hs0000644000000000000000000004751207346545000017624 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Writers.DokuWiki Copyright : Copyright (C) 2008-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : Clare Macrae Stability : alpha Portability : portable Conversion of 'Pandoc' documents to DokuWiki markup. DokuWiki: -} {- [ ] Implement nested blockquotes (currently only ever does one level) [x] Implement alignment of text in tables [ ] Implement comments [ ] Work through the Dokuwiki spec, and check I've not missed anything out [ ] Remove dud/duplicate code -} module Text.Pandoc.Writers.DokuWiki ( writeDokuWiki ) where import Control.Monad (zipWithM) import Control.Monad.Reader (ReaderT, asks, local, runReaderT) import Control.Monad.State.Strict (StateT, evalStateT) import Data.Default (Default (..)) import Data.List (transpose) import Data.List.NonEmpty (nonEmpty) import Data.Text (Text) import qualified Data.Text as T import Text.Pandoc.Class.PandocMonad (PandocMonad, report) import Text.Pandoc.Definition import Text.Pandoc.ImageSize import Text.Pandoc.Logging import Text.Pandoc.Options (WrapOption (..), WriterOptions (writerTableOfContents, writerTemplate, writerWrapText)) import Text.Pandoc.Shared (camelCaseToHyphenated, figureDiv, linesToPara, removeFormatting, trimr, tshow) import Text.Pandoc.URI (escapeURI, isURI) import Text.Pandoc.Templates (renderTemplate) import Text.DocLayout (render, literal) import Text.Pandoc.Writers.Shared (defField, metaToContext, toLegacyTable) import Data.Maybe (fromMaybe) import qualified Data.Map as M data WriterState = WriterState { } data WriterEnvironment = WriterEnvironment { stIndent :: Text -- Indent after the marker at the beginning of list items , stUseTags :: Bool -- True if we should use HTML tags because we're in a complex list , stBackSlashLB :: Bool -- True if we should produce formatted strings with newlines (as in a table cell) } instance Default WriterState where def = WriterState {} instance Default WriterEnvironment where def = WriterEnvironment { stIndent = "" , stUseTags = False , stBackSlashLB = False } type DokuWiki m = ReaderT WriterEnvironment (StateT WriterState m) -- | Convert Pandoc to DokuWiki. writeDokuWiki :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeDokuWiki opts document = runDokuWiki (pandocToDokuWiki opts document) runDokuWiki :: PandocMonad m => DokuWiki m a -> m a runDokuWiki = flip evalStateT def . flip runReaderT def -- | Return DokuWiki representation of document. pandocToDokuWiki :: PandocMonad m => WriterOptions -> Pandoc -> DokuWiki m Text pandocToDokuWiki opts (Pandoc meta blocks) = do metadata <- metaToContext opts (fmap (literal . trimr) . blockListToDokuWiki opts) (fmap (literal . trimr) . inlineListToDokuWiki opts) meta body <- blockListToDokuWiki opts blocks let context = defField "body" body $ defField "toc" (writerTableOfContents opts) metadata return $ case writerTemplate opts of Nothing -> body Just tpl -> render Nothing $ renderTemplate tpl context -- | Escape special characters for DokuWiki. escapeString :: Text -> Text escapeString = T.replace "__" "%%__%%" . T.replace "**" "%%**%%" . T.replace "//" "%%//%%" -- | Convert Pandoc block element to DokuWiki. blockToDokuWiki :: PandocMonad m => WriterOptions -- ^ Options -> Block -- ^ Block element -> DokuWiki m Text blockToDokuWiki opts (Div _attrs bs) = do contents <- blockListToDokuWiki opts bs return $ contents <> "\n" blockToDokuWiki opts (Plain inlines) = inlineListToDokuWiki opts inlines blockToDokuWiki opts (Para inlines) = do indent <- asks stIndent useTags <- asks stUseTags contents <- inlineListToDokuWiki opts inlines return $ if useTags then "

" <> contents <> "

" else contents <> if T.null indent then "\n" else "" blockToDokuWiki opts (LineBlock lns) = blockToDokuWiki opts $ linesToPara lns blockToDokuWiki _ b@(RawBlock f str) | f == Format "dokuwiki" = return str -- See https://www.dokuwiki.org/wiki:syntax -- use uppercase HTML tag for block-level content: | f == Format "html" = return $ "\n" <> str <> "\n" | otherwise = "" <$ report (BlockNotRendered b) blockToDokuWiki _ HorizontalRule = return "\n----\n" blockToDokuWiki opts (Header level _ inlines) = do -- emphasis, links etc. not allowed in headers, apparently, -- so we remove formatting: contents <- inlineListToDokuWiki opts $ removeFormatting inlines let eqs = T.replicate ( 7 - level ) "=" return $ eqs <> " " <> contents <> " " <> eqs <> "\n" blockToDokuWiki _ (CodeBlock (_,classes,_) str) = return $ " (case classes of [] -> "" (x:_) -> " " <> fromMaybe x (M.lookup x languageNames)) <> ">\n" <> str <> (if "\n" `T.isSuffixOf` str then "" else "\n") <> "
\n" blockToDokuWiki opts (BlockQuote blocks) = do contents <- blockListToDokuWiki opts blocks if isSimpleBlockQuote blocks then return $ T.unlines $ map ("> " <>) $ T.lines contents else return $ "
\n" <> contents <> "
" blockToDokuWiki opts (Table _ blkCapt specs thead tbody tfoot) = do let (capt, aligns, _, headers, rows) = toLegacyTable blkCapt specs thead tbody tfoot captionDoc <- if null capt then return "" else do c <- inlineListToDokuWiki opts capt return $ "" <> c <> "\n" headers' <- if all null headers then return [] else zipWithM (tableItemToDokuWiki opts) aligns headers rows' <- mapM (zipWithM (tableItemToDokuWiki opts) aligns) rows let widths = map (maybe 0 maximum . nonEmpty . map T.length) $ transpose (headers':rows') let padTo (width, al) s = case width - T.length s of x | x > 0 -> if al == AlignLeft || al == AlignDefault then s <> T.replicate x " " else if al == AlignRight then T.replicate x " " <> s else T.replicate (x `div` 2) " " <> s <> T.replicate (x - x `div` 2) " " | otherwise -> s let renderRow sep cells = sep <> T.intercalate sep (zipWith padTo (zip widths aligns) cells) <> sep return $ captionDoc <> (if null headers' then "" else renderRow "^" headers' <> "\n") <> T.unlines (map (renderRow "|") rows') blockToDokuWiki opts x@(BulletList items) = do oldUseTags <- asks stUseTags indent <- asks stIndent backSlash <- asks stBackSlashLB let useTags = oldUseTags || not (isSimpleList x) if useTags then do contents <- local (\s -> s { stUseTags = True }) (mapM (listItemToDokuWiki opts) items) return $ "
    \n" <> vcat contents <> "
\n" else do contents <- local (\s -> s { stIndent = stIndent s <> " " , stBackSlashLB = backSlash}) (mapM (listItemToDokuWiki opts) items) return $ vcat contents <> if T.null indent then "\n" else "" blockToDokuWiki opts x@(OrderedList attribs items) = do oldUseTags <- asks stUseTags indent <- asks stIndent backSlash <- asks stBackSlashLB let useTags = oldUseTags || not (isSimpleList x) if useTags then do contents <- local (\s -> s { stUseTags = True }) (mapM (orderedListItemToDokuWiki opts) items) return $ " listAttribsToString attribs <> ">\n" <> vcat contents <> "\n" else do contents <- local (\s -> s { stIndent = stIndent s <> " " , stBackSlashLB = backSlash}) (mapM (orderedListItemToDokuWiki opts) items) return $ vcat contents <> if T.null indent then "\n" else "" blockToDokuWiki opts (Figure attr capt body) = blockToDokuWiki opts $ figureDiv attr capt body -- TODO Need to decide how to make definition lists work on dokuwiki - I don't think there -- is a specific representation of them. -- TODO This creates double '; ; ' if there is a bullet or ordered list inside a definition list blockToDokuWiki opts x@(DefinitionList items) = do oldUseTags <- asks stUseTags indent <- asks stIndent backSlash <- asks stBackSlashLB let useTags = oldUseTags || not (isSimpleList x) if useTags then do contents <- local (\s -> s { stUseTags = True }) (mapM (definitionListItemToDokuWiki opts) items) return $ "
\n" <> vcat contents <> "
\n" else do contents <- local (\s -> s { stIndent = stIndent s <> " " , stBackSlashLB = backSlash}) (mapM (definitionListItemToDokuWiki opts) items) return $ vcat contents <> if T.null indent then "\n" else "" -- Auxiliary functions for lists: -- | Convert ordered list attributes to HTML attribute string listAttribsToString :: ListAttributes -> Text listAttribsToString (startnum, numstyle, _) = let numstyle' = camelCaseToHyphenated $ tshow numstyle in (if startnum /= 1 then " start=\"" <> tshow startnum <> "\"" else "") <> (if numstyle /= DefaultStyle then " style=\"list-style-type: " <> numstyle' <> ";\"" else "") -- | Convert bullet list item (list of blocks) to DokuWiki. listItemToDokuWiki :: PandocMonad m => WriterOptions -> [Block] -> DokuWiki m Text listItemToDokuWiki opts items = do useTags <- asks stUseTags if useTags then do contents <- blockListToDokuWiki opts items return $ "
  • " <> contents <> "
  • " else do bs <- mapM (blockToDokuWiki opts) items let contents = case items of [_, CodeBlock _ _] -> T.concat bs _ -> vcat bs indent <- asks stIndent backSlash <- asks stBackSlashLB let indent' = if backSlash then T.drop 2 indent else indent return $ indent' <> "* " <> contents -- | Convert ordered list item (list of blocks) to DokuWiki. -- | TODO Emiminate dreadful duplication of text from listItemToDokuWiki orderedListItemToDokuWiki :: PandocMonad m => WriterOptions -> [Block] -> DokuWiki m Text orderedListItemToDokuWiki opts items = do contents <- blockListToDokuWiki opts items useTags <- asks stUseTags if useTags then return $ "
  • " <> contents <> "
  • " else do indent <- asks stIndent backSlash <- asks stBackSlashLB let indent' = if backSlash then T.drop 2 indent else indent return $ indent' <> "- " <> contents -- | Convert definition list item (label, list of blocks) to DokuWiki. definitionListItemToDokuWiki :: PandocMonad m => WriterOptions -> ([Inline],[[Block]]) -> DokuWiki m Text definitionListItemToDokuWiki opts (label, items) = do labelText <- inlineListToDokuWiki opts label contents <- mapM (blockListToDokuWiki opts) items useTags <- asks stUseTags if useTags then return $ "
    " <> labelText <> "
    \n" <> T.intercalate "\n" (map (\d -> "
    " <> d <> "
    ") contents) else do indent <- asks stIndent backSlash <- asks stBackSlashLB let indent' = if backSlash then T.drop 2 indent else indent return $ indent' <> "* **" <> labelText <> "** " <> T.concat contents -- | True if the list can be handled by simple wiki markup, False if HTML tags will be needed. isSimpleList :: Block -> Bool isSimpleList x = case x of BulletList items -> all isSimpleListItem items OrderedList (1, _, _) items -> all isSimpleListItem items DefinitionList items -> all (all isSimpleListItem . snd) items _ -> False -- | True if list item can be handled with the simple wiki syntax. False if -- HTML tags will be needed. isSimpleListItem :: [Block] -> Bool isSimpleListItem [] = True isSimpleListItem [x, CodeBlock{}] | isPlainOrPara x = True isSimpleListItem (x:ys) | isPlainOrPara x = all isSimpleList ys isSimpleListItem _ = False isPlainOrPara :: Block -> Bool isPlainOrPara (Plain _) = True isPlainOrPara (Para _) = True isPlainOrPara _ = False isSimpleBlockQuote :: [Block] -> Bool isSimpleBlockQuote bs = all isPlainOrPara bs -- | Concatenates strings with line breaks between them. vcat :: [Text] -> Text vcat = T.intercalate "\n" -- | For each string in the input list, convert all newlines to -- dokuwiki escaped newlines. Then concat the list using double linebreaks. backSlashLineBreaks :: [Text] -> Text backSlashLineBreaks ls = vcatBackSlash $ map (T.pack . escape . T.unpack) ls where vcatBackSlash = T.intercalate "\\\\ \\\\ " -- simulate paragraphs. escape ['\n'] = "" -- remove trailing newlines escape ('\n':cs) = "\\\\ " <> escape cs escape (c:cs) = c : escape cs escape [] = [] -- Auxiliary functions for tables: tableItemToDokuWiki :: PandocMonad m => WriterOptions -> Alignment -> [Block] -> DokuWiki m Text tableItemToDokuWiki opts align' item = do let mkcell x = (if align' == AlignRight || align' == AlignCenter then " " else "") <> x <> (if align' == AlignLeft || align' == AlignCenter then " " else "") contents <- local (\s -> s { stBackSlashLB = True }) $ blockListToDokuWiki opts item return $ mkcell contents -- | Convert list of Pandoc block elements to DokuWiki. blockListToDokuWiki :: PandocMonad m => WriterOptions -- ^ Options -> [Block] -- ^ List of block elements -> DokuWiki m Text blockListToDokuWiki opts blocks = do backSlash <- asks stBackSlashLB let blocks' = consolidateRawBlocks blocks if backSlash then backSlashLineBreaks <$> mapM (blockToDokuWiki opts) blocks' else vcat <$> mapM (blockToDokuWiki opts) blocks' consolidateRawBlocks :: [Block] -> [Block] consolidateRawBlocks [] = [] consolidateRawBlocks (RawBlock f1 b1 : RawBlock f2 b2 : xs) | f1 == f2 = consolidateRawBlocks (RawBlock f1 (b1 <> "\n" <> b2) : xs) consolidateRawBlocks (x:xs) = x : consolidateRawBlocks xs -- | Convert list of Pandoc inline elements to DokuWiki. inlineListToDokuWiki :: PandocMonad m => WriterOptions -> [Inline] -> DokuWiki m Text inlineListToDokuWiki opts lst = T.concat <$> mapM (inlineToDokuWiki opts) lst -- | Convert Pandoc inline element to DokuWiki. inlineToDokuWiki :: PandocMonad m => WriterOptions -> Inline -> DokuWiki m Text inlineToDokuWiki opts (Span _attrs ils) = inlineListToDokuWiki opts ils inlineToDokuWiki opts (Emph lst) = do contents <- inlineListToDokuWiki opts lst return $ "//" <> contents <> "//" inlineToDokuWiki opts (Underline lst) = do contents <- inlineListToDokuWiki opts lst return $ "__" <> contents <> "__" inlineToDokuWiki opts (Strong lst) = do contents <- inlineListToDokuWiki opts lst return $ "**" <> contents <> "**" inlineToDokuWiki opts (Strikeout lst) = do contents <- inlineListToDokuWiki opts lst return $ "" <> contents <> "" inlineToDokuWiki opts (Superscript lst) = do contents <- inlineListToDokuWiki opts lst return $ "" <> contents <> "" inlineToDokuWiki opts (Subscript lst) = do contents <- inlineListToDokuWiki opts lst return $ "" <> contents <> "" inlineToDokuWiki opts (SmallCaps lst) = inlineListToDokuWiki opts lst inlineToDokuWiki opts (Quoted SingleQuote lst) = do contents <- inlineListToDokuWiki opts lst return $ "\8216" <> contents <> "\8217" inlineToDokuWiki opts (Quoted DoubleQuote lst) = do contents <- inlineListToDokuWiki opts lst return $ "\8220" <> contents <> "\8221" inlineToDokuWiki opts (Cite _ lst) = inlineListToDokuWiki opts lst inlineToDokuWiki _ (Code _ str) = -- In dokuwiki, text surrounded by '' is really just a font statement, i.e. , -- and so other formatting can be present inside. -- However, in pandoc, and markdown, inlined code doesn't contain formatting. -- So I have opted for using %% to disable all formatting inside inline code blocks. -- This gives the best results when converting from other formats to dokuwiki, even if -- the resultand code is a little ugly, for short strings that don't contain formatting -- characters. -- It does mean that if pandoc could ever read dokuwiki, and so round-trip the format, -- any formatting inside inlined code blocks would be lost, or presented incorrectly. return $ "''%%" <> str <> "%%''" inlineToDokuWiki _ (Str str) = return $ escapeString str inlineToDokuWiki _ (Math mathType str) = return $ delim <> str <> delim -- note: str should NOT be escaped where delim = case mathType of DisplayMath -> "$$" InlineMath -> "$" inlineToDokuWiki _ il@(RawInline f str) | f == Format "dokuwiki" = return str | f == Format "html" = return $ "" <> str <> "" | otherwise = "" <$ report (InlineNotRendered il) inlineToDokuWiki _ LineBreak = do backSlash <- asks stBackSlashLB return $ if backSlash then "\n" else "\\\\\n" inlineToDokuWiki opts SoftBreak = case writerWrapText opts of WrapNone -> return " " WrapAuto -> return " " WrapPreserve -> return "\n" inlineToDokuWiki _ Space = return " " inlineToDokuWiki opts (Link _ txt (src, _)) = do label <- inlineListToDokuWiki opts txt case txt of [Str s] | "mailto:" `T.isPrefixOf` src -> return $ "<" <> s <> ">" | escapeURI s == src -> return src _ -> if isURI src then return $ "[[" <> src <> "|" <> label <> "]]" else return $ "[[" <> src' <> "|" <> label <> "]]" where src' = case T.uncons src of Just ('/',xs) -> xs -- with leading / it's a _ -> src -- link to a help page inlineToDokuWiki opts (Image attr alt (source, tit)) = do alt' <- inlineListToDokuWiki opts alt let txt = case (tit, alt) of ("", []) -> "" ("", _ ) -> "|" <> alt' (_ , _ ) -> "|" <> tit return $ "{{" <> source <> imageDims opts attr <> txt <> "}}" inlineToDokuWiki opts (Note contents) = do contents' <- blockListToDokuWiki opts contents return $ "((" <> contents' <> "))" -- note - may not work for notes with multiple blocks imageDims :: WriterOptions -> Attr -> Text imageDims opts attr = go (toPx $ dimension Width attr) (toPx $ dimension Height attr) where toPx = fmap (showInPixel opts) . checkPct checkPct (Just (Percent _)) = Nothing checkPct maybeDim = maybeDim go (Just w) Nothing = "?" <> w go (Just w) (Just h) = "?" <> w <> "x" <> h go Nothing (Just h) = "?0x" <> h go Nothing Nothing = "" languageNames :: M.Map Text Text languageNames = M.fromList [("cs", "csharp") ,("coffee", "cofeescript") ,("commonlisp", "lisp") ,("gcc", "c") ,("html", "html5") ,("makefile", "make") ,("objectivec", "objc") ,("r", "rsplus") ,("sqlmysql", "mysql") ,("sqlpostgresql", "postgresql") ,("sci", "scilab") ,("xorg", "xorgconf") ] pandoc-3.1.3/src/Text/Pandoc/Writers/EPUB.hs0000644000000000000000000020133007346545000016617 0ustar0000000000000000{-# LANGUAGE CPP #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE PatternGuards #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {- | Module : Text.Pandoc.Writers.EPUB Copyright : Copyright (C) 2010-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Conversion of 'Pandoc' documents to EPUB. -} module Text.Pandoc.Writers.EPUB ( writeEPUB2, writeEPUB3 ) where import Codec.Archive.Zip (Entry, addEntryToArchive, eRelativePath, emptyArchive, fromArchive, fromEntry, toEntry) import Control.Applicative ( (<|>) ) import Control.Monad (mplus, unless, when, zipWithM) import Control.Monad.Except (catchError, throwError) import Control.Monad.State.Strict (State, StateT, evalState, evalStateT, get, gets, lift, modify) import qualified Data.ByteString.Lazy as B import qualified Data.ByteString.Lazy.Char8 as B8 import Data.Char (isAlphaNum, isAscii, isDigit) import Data.List (isInfixOf, isPrefixOf) import qualified Data.Map as M import Data.Maybe (fromMaybe, isNothing, mapMaybe, isJust, catMaybes) import qualified Data.Set as Set import qualified Data.Text as T import Data.Text (Text) import qualified Data.Text.Lazy as TL import System.FilePath (takeExtension, takeFileName, makeRelative) import Text.HTML.TagSoup (Tag (TagOpen), fromAttrib, parseTags) import Text.Pandoc.Builder (fromList, setMeta) import Text.Pandoc.Writers.Shared (ensureValidXmlIdentifiers) import Data.Tree (Tree(..)) import Text.Pandoc.Class (PandocMonad, report) import qualified Text.Pandoc.Class.PandocPure as P import Text.Pandoc.Data (readDataFile) import qualified Text.Pandoc.Class.PandocMonad as P import Data.Time import Text.Pandoc.Definition import Text.Pandoc.Error import Text.Pandoc.ImageSize import Text.Pandoc.Logging import Text.Pandoc.MIME (MimeType, extensionFromMimeType, getMimeType) import Text.Pandoc.URI (urlEncode) import Text.Pandoc.Options (EPUBVersion (..), HTMLMathMethod (..), ObfuscationMethod (NoObfuscation), WrapOption (..), WriterOptions (..)) import Text.Pandoc.Shared (normalizeDate, renderTags', stringify, uniqueIdent, tshow) import qualified Text.Pandoc.UTF8 as UTF8 import Text.Pandoc.UUID (getRandomUUID) import Text.Pandoc.Walk (walk, walkM) import Text.Pandoc.Writers.HTML (writeHtmlStringForEPUB) import Text.Printf (printf) import Text.Pandoc.XML.Light import Text.Pandoc.XML (escapeStringForXML) import Text.DocTemplates (FromContext(lookupContext), Context(..), ToContext(toVal), Val(..)) import Text.Pandoc.Chunks (splitIntoChunks, Chunk(..), ChunkedDoc(..), SecInfo(..)) -- A Chapter includes a list of blocks. newtype Chapter = Chapter [Block] deriving (Show) data EPUBState = EPUBState { stMediaPaths :: [(FilePath, (FilePath, Maybe Entry))] , stMediaNextId :: Int , stEpubSubdir :: FilePath } type E m = StateT EPUBState m data EPUBMetadata = EPUBMetadata{ epubIdentifier :: [Identifier] , epubTitle :: [Title] , epubDate :: [Date] , epubLanguage :: Text , epubCreator :: [Creator] , epubContributor :: [Creator] , epubSubject :: [Subject] , epubDescription :: Maybe Text , epubType :: Maybe Text , epubFormat :: Maybe Text , epubPublisher :: Maybe Text , epubSource :: Maybe Text , epubRelation :: Maybe Text , epubCoverage :: Maybe Text , epubRights :: Maybe Text , epubBelongsToCollection :: Maybe Text , epubGroupPosition :: Maybe Text , epubCoverImage :: Maybe FilePath , epubStylesheets :: [FilePath] , epubPageDirection :: Maybe ProgressionDirection , epubIbooksFields :: [(Text, Text)] , epubCalibreFields :: [(Text, Text)] } deriving Show data Date = Date{ dateText :: Text , dateEvent :: Maybe Text } deriving Show data Creator = Creator{ creatorText :: Text , creatorRole :: Maybe Text , creatorFileAs :: Maybe Text } deriving Show data Identifier = Identifier{ identifierText :: Text , identifierScheme :: Maybe Text } deriving Show data Title = Title{ titleText :: Text , titleFileAs :: Maybe Text , titleType :: Maybe Text } deriving Show data ProgressionDirection = LTR | RTL deriving Show data Subject = Subject{ subjectText :: Text , subjectAuthority :: Maybe Text , subjectTerm :: Maybe Text } deriving Show dcName :: Text -> QName dcName n = QName n Nothing (Just "dc") dcNode :: Node t => Text -> t -> Element dcNode = node . dcName opfName :: Text -> QName opfName n = QName n Nothing (Just "opf") toId :: FilePath -> Text toId = T.pack . map (\x -> if isAlphaNum x || x == '-' || x == '_' then x else '_') . takeFileName removeNote :: Inline -> Inline removeNote (Note _) = Str "" removeNote x = x toVal' :: Text -> Val T.Text toVal' = toVal mkEntry :: PandocMonad m => FilePath -> B.ByteString -> E m Entry mkEntry path content = do epubSubdir <- gets stEpubSubdir let addEpubSubdir :: Entry -> Entry addEpubSubdir e = e{ eRelativePath = (if null epubSubdir then "" else epubSubdir ++ "/") ++ eRelativePath e } epochtime <- floor <$> lift P.getPOSIXTime return $ (if path == "mimetype" || "META-INF" `isPrefixOf` path then id else addEpubSubdir) $ toEntry path epochtime content getEPUBMetadata :: PandocMonad m => WriterOptions -> Meta -> E m EPUBMetadata getEPUBMetadata opts meta = do let md = metadataFromMeta opts meta elts <- case writerEpubMetadata opts of Nothing -> return [] Just t -> case parseXMLContents (TL.fromStrict t) of Left msg -> throwError $ PandocXMLError "epub metadata" msg Right ns -> return (onlyElems ns) let md' = foldr addMetadataFromXML md elts let addIdentifier m = if null (epubIdentifier m) then do randomId <- getRandomUUID return $ m{ epubIdentifier = [Identifier (tshow randomId) Nothing] } else return m let addLanguage m = if T.null (epubLanguage m) then case lookupContext "lang" (writerVariables opts) of Just x -> return m{ epubLanguage = x } Nothing -> do mLang <- lift $ P.lookupEnv "LANG" let localeLang = case mLang of Just lang -> T.map (\c -> if c == '_' then '-' else c) $ T.takeWhile (/='.') lang Nothing -> "en-US" return m{ epubLanguage = localeLang } else return m let fixDate m = if null (epubDate m) then do currentTime <- lift P.getTimestamp return $ m{ epubDate = [ Date{ dateText = showDateTimeISO8601 currentTime , dateEvent = Nothing } ] } else return m let addAuthor m = if any (\c -> creatorRole c == Just "aut") $ epubCreator m then return m else do let authors' = map stringify $ docAuthors meta let toAuthor name = Creator{ creatorText = name , creatorRole = Just "aut" , creatorFileAs = Nothing } return $ m{ epubCreator = map toAuthor authors' ++ epubCreator m } addIdentifier md' >>= fixDate >>= addAuthor >>= addLanguage addMetadataFromXML :: Element -> EPUBMetadata -> EPUBMetadata addMetadataFromXML e@(Element (QName name _ (Just "dc")) attrs _ _) md | name == "identifier" = md{ epubIdentifier = Identifier{ identifierText = strContent e , identifierScheme = lookupAttr (opfName "scheme") attrs } : epubIdentifier md } | name == "title" = md{ epubTitle = Title{ titleText = strContent e , titleFileAs = getAttr "file-as" , titleType = getAttr "type" } : epubTitle md } | name == "date" = md{ epubDate = Date{ dateText = fromMaybe "" $ normalizeDate' $ strContent e , dateEvent = getAttr "event" } : epubDate md } | name == "language" = md{ epubLanguage = strContent e } | name == "creator" = md{ epubCreator = Creator{ creatorText = strContent e , creatorRole = getAttr "role" , creatorFileAs = getAttr "file-as" } : epubCreator md } | name == "contributor" = md{ epubContributor = Creator { creatorText = strContent e , creatorRole = getAttr "role" , creatorFileAs = getAttr "file-as" } : epubContributor md } | name == "subject" = md{ epubSubject = Subject { subjectText = strContent e , subjectAuthority = getAttr "authority" , subjectTerm = getAttr "term" } : epubSubject md } | name == "description" = md { epubDescription = Just $ strContent e } | name == "type" = md { epubType = Just $ strContent e } | name == "format" = md { epubFormat = Just $ strContent e } | name == "publisher" = md { epubPublisher = Just $ strContent e } | name == "source" = md { epubSource = Just $ strContent e } | name == "relation" = md { epubRelation = Just $ strContent e } | name == "coverage" = md { epubCoverage = Just $ strContent e } | name == "rights" = md { epubRights = Just $ strContent e } | name == "belongs-to-collection" = md { epubBelongsToCollection = Just $ strContent e } | name == "group-position" = md { epubGroupPosition = Just $ strContent e } | otherwise = md where getAttr n = lookupAttr (opfName n) attrs addMetadataFromXML e@(Element (QName "meta" _ _) attrs _ _) md = case getAttr "property" of Just s | "ibooks:" `T.isPrefixOf` s -> md{ epubIbooksFields = (T.drop 7 s, strContent e) : epubIbooksFields md } _ -> case getAttr "name" of Just s | "calibre:" `T.isPrefixOf` s -> md{ epubCalibreFields = (T.drop 8 s, fromMaybe "" $ getAttr "content") : epubCalibreFields md } _ -> md where getAttr n = lookupAttr (unqual n) attrs addMetadataFromXML _ md = md metaValueToString :: MetaValue -> Text metaValueToString (MetaString s) = s metaValueToString (MetaInlines ils) = stringify ils metaValueToString (MetaBlocks bs) = stringify bs metaValueToString (MetaBool True) = "true" metaValueToString (MetaBool False) = "false" metaValueToString _ = "" metaValueToPaths :: MetaValue -> [FilePath] metaValueToPaths (MetaList xs) = map (T.unpack . metaValueToString) xs metaValueToPaths x = [T.unpack $ metaValueToString x] getList :: T.Text -> Meta -> (MetaValue -> a) -> [a] getList s meta handleMetaValue = case lookupMeta s meta of Just (MetaList xs) -> map handleMetaValue xs Just mv -> [handleMetaValue mv] Nothing -> [] getIdentifier :: Meta -> [Identifier] getIdentifier meta = getList "identifier" meta handleMetaValue where handleMetaValue (MetaMap m) = Identifier{ identifierText = maybe "" metaValueToString $ M.lookup "text" m , identifierScheme = metaValueToString <$> M.lookup "scheme" m } handleMetaValue mv = Identifier (metaValueToString mv) Nothing getTitle :: Meta -> [Title] getTitle meta = getList "title" meta handleMetaValue where handleMetaValue (MetaMap m) = Title{ titleText = maybe "" metaValueToString $ M.lookup "text" m , titleFileAs = metaValueToString <$> M.lookup "file-as" m , titleType = metaValueToString <$> M.lookup "type" m } handleMetaValue mv = Title (metaValueToString mv) Nothing Nothing getCreator :: T.Text -> Meta -> [Creator] getCreator s meta = getList s meta handleMetaValue where handleMetaValue (MetaMap m) = Creator{ creatorText = maybe "" metaValueToString $ M.lookup "text" m , creatorFileAs = metaValueToString <$> M.lookup "file-as" m , creatorRole = metaValueToString <$> M.lookup "role" m } handleMetaValue mv = Creator (metaValueToString mv) Nothing Nothing getDate :: T.Text -> Meta -> [Date] getDate s meta = getList s meta handleMetaValue where handleMetaValue (MetaMap m) = Date{ dateText = fromMaybe "" $ M.lookup "text" m >>= normalizeDate' . metaValueToString , dateEvent = metaValueToString <$> M.lookup "event" m } handleMetaValue mv = Date { dateText = fromMaybe "" $ normalizeDate' $ metaValueToString mv , dateEvent = Nothing } getSubject :: T.Text -> Meta -> [Subject] getSubject s meta = getList s meta handleMetaValue where handleMetaValue (MetaMap m) = Subject{ subjectText = maybe "" metaValueToString $ M.lookup "text" m , subjectAuthority = metaValueToString <$> M.lookup "authority" m , subjectTerm = metaValueToString <$> M.lookup "term" m } handleMetaValue mv = Subject (metaValueToString mv) Nothing Nothing metadataFromMeta :: WriterOptions -> Meta -> EPUBMetadata metadataFromMeta opts meta = EPUBMetadata{ epubIdentifier = identifiers , epubTitle = titles , epubDate = date , epubLanguage = language , epubCreator = creators , epubContributor = contributors , epubSubject = subjects , epubDescription = description , epubType = epubtype , epubFormat = format , epubPublisher = publisher , epubSource = source , epubRelation = relation , epubCoverage = coverage , epubRights = rights , epubBelongsToCollection = belongsToCollection , epubGroupPosition = groupPosition , epubCoverImage = coverImage , epubStylesheets = stylesheets , epubPageDirection = pageDirection , epubIbooksFields = ibooksFields , epubCalibreFields = calibreFields } where identifiers = getIdentifier meta titles = getTitle meta date = getDate "date" meta language = maybe "" metaValueToString $ lookupMeta "language" meta `mplus` lookupMeta "lang" meta creators = getCreator "creator" meta contributors = getCreator "contributor" meta subjects = getSubject "subject" meta description = metaValueToString <$> lookupMeta "description" meta epubtype = metaValueToString <$> lookupMeta "type" meta format = metaValueToString <$> lookupMeta "format" meta publisher = metaValueToString <$> lookupMeta "publisher" meta source = metaValueToString <$> lookupMeta "source" meta relation = metaValueToString <$> lookupMeta "relation" meta coverage = metaValueToString <$> lookupMeta "coverage" meta rights = metaValueToString <$> lookupMeta "rights" meta belongsToCollection = metaValueToString <$> lookupMeta "belongs-to-collection" meta groupPosition = metaValueToString <$> lookupMeta "group-position" meta coverImage = T.unpack <$> lookupContext "epub-cover-image" (writerVariables opts) `mplus` (metaValueToString <$> lookupMeta "cover-image" meta) mCss = lookupMeta "css" meta <|> lookupMeta "stylesheet" meta stylesheets = maybe [] metaValueToPaths mCss ++ case lookupContext "css" (writerVariables opts) of Just xs -> map T.unpack xs Nothing -> case lookupContext "css" (writerVariables opts) of Just x -> [T.unpack x] Nothing -> [] pageDirection = case T.toLower . metaValueToString <$> lookupMeta "page-progression-direction" meta of Just "ltr" -> Just LTR Just "rtl" -> Just RTL _ -> Nothing ibooksFields = case lookupMeta "ibooks" meta of Just (MetaMap mp) -> M.toList $ M.map metaValueToString mp _ -> [] calibreFields = case lookupMeta "calibre" meta of Just (MetaMap mp) -> M.toList $ M.map metaValueToString mp _ -> [] -- | Produce an EPUB2 file from a Pandoc document. writeEPUB2 :: PandocMonad m => WriterOptions -- ^ Writer options -> Pandoc -- ^ Document to convert -> m B.ByteString writeEPUB2 = writeEPUB EPUB2 -- | Produce an EPUB3 file from a Pandoc document. writeEPUB3 :: PandocMonad m => WriterOptions -- ^ Writer options -> Pandoc -- ^ Document to convert -> m B.ByteString writeEPUB3 = writeEPUB EPUB3 -- | Produce an EPUB file from a Pandoc document. writeEPUB :: PandocMonad m => EPUBVersion -> WriterOptions -- ^ Writer options -> Pandoc -- ^ Document to convert -> m B.ByteString writeEPUB epubVersion opts doc = do let epubSubdir = writerEpubSubdirectory opts -- sanity check on epubSubdir unless (T.all (\c -> isAscii c && isAlphaNum c) epubSubdir) $ throwError $ PandocEpubSubdirectoryError epubSubdir let initState = EPUBState { stMediaPaths = [] , stMediaNextId = 0 , stEpubSubdir = T.unpack epubSubdir } evalStateT (pandocToEPUB epubVersion opts doc) initState pandocToEPUB :: PandocMonad m => EPUBVersion -> WriterOptions -> Pandoc -> E m B.ByteString pandocToEPUB version opts doc = do let doc' = ensureValidXmlIdentifiers doc -- handle pictures Pandoc meta blocks <- walkM (transformInline opts) doc' >>= walkM transformBlock picEntries <- mapMaybe (snd . snd) <$> gets stMediaPaths epubSubdir <- gets stEpubSubdir let epub3 = version == EPUB3 let writeHtml o = fmap (UTF8.fromTextLazy . TL.fromStrict) . writeHtmlStringForEPUB version o metadata <- getEPUBMetadata opts meta -- retrieve title of document let plainTitle :: Text plainTitle = case docTitle' meta of [] -> case epubTitle metadata of [] -> "UNTITLED" (x:_) -> titleText x x -> stringify x -- stylesheet stylesheets <- case epubStylesheets metadata of [] -> (\x -> [B.fromChunks [x]]) <$> readDataFile "epub.css" fs -> mapM P.readFileLazy fs stylesheetEntries <- zipWithM (\bs n -> mkEntry ("styles/stylesheet" ++ show n ++ ".css") bs) stylesheets [(1 :: Int)..] -- writer variables let vars :: Context Text vars = Context $ M.delete "css" . M.insert "epub3" (toVal' $ if epub3 then "true" else "false") . M.insert "lang" (toVal' $ epubLanguage metadata) $ unContext $ writerVariables opts -- If True create paths relative to parent folder let cssvars :: Bool -> Context Text cssvars useprefix = Context $ M.insert "css" (ListVal $ map (\e -> toVal' $ (if useprefix then "../" else "") <> T.pack (makeRelative epubSubdir (eRelativePath e))) stylesheetEntries) mempty -- Add additional options for the writer let opts' :: WriterOptions opts' = opts{ writerEmailObfuscation = NoObfuscation , writerSectionDivs = True , writerVariables = vars , writerWrapText = WrapAuto } -- cover page (cpgEntry, cpicEntry) <- createCoverPage meta metadata opts' vars cssvars writeHtml plainTitle -- title page tpContent <- lift $ writeHtml opts'{ writerVariables = Context (M.fromList [ ("titlepage", toVal' "true"), ("body-type", toVal' "frontmatter"), ("pagetitle", toVal $ escapeStringForXML plainTitle)]) <> cssvars True <> vars } (Pandoc meta []) tpEntry <- mkEntry "text/title_page.xhtml" tpContent -- handle fonts let matchingGlob f = do xs <- lift $ P.glob f when (null xs) $ report $ CouldNotFetchResource (T.pack f) "glob did not match any font files" return xs let mkFontEntry :: PandocMonad m => FilePath -> StateT EPUBState m Entry mkFontEntry f = mkEntry ("fonts/" ++ takeFileName f) =<< lift (P.readFileLazy f) fontFiles <- concat <$> mapM matchingGlob (writerEpubFonts opts') fontEntries <- mapM mkFontEntry fontFiles -- body pages -- add level 1 header to beginning if none there let blocks' = addIdentifiers opts $ case blocks of (Div _ (Header{}:_) : _) -> blocks (Header 1 _ _ : _) -> blocks _ -> Header 1 ("",["unnumbered"],[]) (docTitle' meta) : blocks -- create the chapters let chunkedDoc = splitIntoChunks "ch%n.xhtml" (writerNumberSections opts) Nothing (writerSplitLevel opts) (Pandoc meta blocks') -- Create the chapter entries from the chapters. -- Also requires access to the extended writer options and context -- as well as the css Context and html writer chapterEntries <- createChapterEntries opts' vars cssvars writeHtml (chunkedChunks chunkedDoc) -- contents.opf -- set page progression direction attribution let progressionDirection :: [(Text, Text)] progressionDirection = case epubPageDirection metadata of Just LTR | epub3 -> [("page-progression-direction", "ltr")] Just RTL | epub3 -> [("page-progression-direction", "rtl")] _ -> [] -- incredibly inefficient (TODO): let containsMathML ent = epub3 && " [] xs -> [("properties", T.unwords xs)]) $ () let chapterRefNode ent = unode "itemref" ! [("idref", toId $ makeRelative epubSubdir $ eRelativePath ent)] $ () let pictureNode ent = unode "item" ! [("id", toId $ makeRelative epubSubdir $ eRelativePath ent), ("href", T.pack $ makeRelative epubSubdir $ eRelativePath ent), ("media-type", fromMaybe "application/octet-stream" $ mediaTypeOf $ eRelativePath ent)] $ () let fontNode ent = unode "item" ! [("id", toId $ makeRelative epubSubdir $ eRelativePath ent), ("href", T.pack $ makeRelative epubSubdir $ eRelativePath ent), ("media-type", fromMaybe "" $ getMimeType $ eRelativePath ent)] $ () -- The tocTitle is either the normal title or a specially configured title. let tocTitle = maybe plainTitle metaValueToString $ lookupMeta "toc-title" meta currentTime <- lift P.getTimestamp -- Construct the contentsData let contentsData = UTF8.fromTextLazy $ TL.fromStrict $ ppTopElement $ unode "package" ! ([("version", case version of EPUB2 -> "2.0" EPUB3 -> "3.0") ,("xmlns","http://www.idpf.org/2007/opf") ,("unique-identifier","epub-id-1") ] ++ [("prefix","ibooks: http://vocabulary.itunes.apple.com/rdf/ibooks/vocabulary-extensions-1.0/") | version == EPUB3]) $ [ metadataElement version metadata currentTime , unode "manifest" $ [ unode "item" ! [("id","ncx"), ("href","toc.ncx") ,("media-type","application/x-dtbncx+xml")] $ () , unode "item" ! ([("id","nav") ,("href","nav.xhtml") ,("media-type","application/xhtml+xml")] ++ [("properties","nav") | epub3 ]) $ () ] ++ [ unode "item" ! [("id","stylesheet" <> tshow n) , ("href", T.pack fp) ,("media-type","text/css")] $ () | (n :: Int, fp) <- zip [1..] (map (makeRelative epubSubdir . eRelativePath) stylesheetEntries) ] ++ map chapterNode (cpgEntry ++ [tpEntry | writerEpubTitlePage opts] ++ chapterEntries) ++ (case cpicEntry of [] -> [] (x:_) -> [add_attrs [Attr (unqual "properties") "cover-image" | epub3] (pictureNode x)]) ++ map pictureNode picEntries ++ map fontNode fontEntries , unode "spine" ! ( ("toc","ncx") : progressionDirection) $ case epubCoverImage metadata of Nothing -> [] Just _ -> [ unode "itemref" ! [("idref", "cover_xhtml")] $ () ] ++ ([unode "itemref" ! [("idref", "title_page_xhtml") ,("linear", case lookupMeta "title" meta of Just _ -> "yes" Nothing -> "no")] $ () | writerEpubTitlePage opts] ++ [unode "itemref" ! [("idref", "nav")] $ () | writerTableOfContents opts ] ++ map chapterRefNode chapterEntries) , unode "guide" $ (unode "reference" ! [("type","toc"),("title", tocTitle), ("href","nav.xhtml")] $ () ) : [ unode "reference" ! [("type","cover") ,("title","Cover") ,("href","text/cover.xhtml")] $ () | isJust (epubCoverImage metadata) ] ] -- Content should be stored in content.opf contentsEntry <- mkEntry "content.opf" contentsData -- toc.ncx -- Create the tocEntry from the metadata together with the sections and title. tocEntry <- createTocEntry opts' meta metadata plainTitle (chunkedTOC chunkedDoc) -- Create the navEntry using the metadata, all of the various writer options, -- the CSS and HTML helpers, the document and toc title as well as the epub version and all of the sections navEntry <- createNavEntry opts' meta metadata vars cssvars writeHtml tocTitle version (chunkedTOC chunkedDoc) -- mimetype mimetypeEntry <- mkEntry "mimetype" $ UTF8.fromStringLazy "application/epub+zip" -- container.xml let containerData = B.fromStrict $ UTF8.fromText $ ppTopElement $ unode "container" ! [("version","1.0") ,("xmlns","urn:oasis:names:tc:opendocument:xmlns:container")] $ unode "rootfiles" $ unode "rootfile" ! [("full-path", (if null epubSubdir then "" else T.pack epubSubdir <> "/") <> "content.opf") ,("media-type","application/oebps-package+xml")] $ () containerEntry <- mkEntry "META-INF/container.xml" containerData -- com.apple.ibooks.display-options.xml let apple = B.fromStrict $ UTF8.fromText $ ppTopElement $ unode "display_options" $ unode "platform" ! [("name","*")] $ unode "option" ! [("name","specified-fonts")] $ ("true" :: Text) appleEntry <- mkEntry "META-INF/com.apple.ibooks.display-options.xml" apple -- construct archive let archive = foldr addEntryToArchive emptyArchive $ [mimetypeEntry, containerEntry, appleEntry, contentsEntry, tocEntry, navEntry] ++ [tpEntry | writerEpubTitlePage opts] ++ stylesheetEntries ++ picEntries ++ cpicEntry ++ cpgEntry ++ chapterEntries ++ fontEntries return $ fromArchive archive -- | Function used during conversion from pandoc to EPUB to create the cover page. -- The first Entry list is for the cover while the second one is for the cover image. -- If no cover images are specified, empty lists will be returned. createCoverPage :: PandocMonad m => Meta -> EPUBMetadata -> WriterOptions -> Context Text -> (Bool -> Context Text) -> (WriterOptions -> Pandoc -> m B8.ByteString) -> Text -> StateT EPUBState m ([Entry], [Entry]) createCoverPage meta metadata opts' vars cssvars writeHtml plainTitle = case epubCoverImage metadata of Nothing -> return ([],[]) Just img -> do let fp = takeFileName img -- retrieve cover image file mediaPaths <- gets (map (fst . snd) . stMediaPaths) coverImageName <- -- see #4206 if ("media/" <> fp) `elem` mediaPaths then getMediaNextNewName (takeExtension fp) else return fp -- image dimensions imgContent <- lift $ P.readFileLazy img (coverImageWidth, coverImageHeight) <- case imageSize opts' (B.toStrict imgContent) of Right sz -> return $ sizeInPixels sz Left err' -> (0, 0) <$ report (CouldNotDetermineImageSize (T.pack img) err') -- write the HTML. Use the cssvars, vars and additional writer options. cpContent <- lift $ writeHtml opts'{ writerVariables = Context (M.fromList [ ("coverpage", toVal' "true"), ("pagetitle", toVal $ escapeStringForXML plainTitle), ("cover-image", toVal' $ T.pack coverImageName), ("cover-image-width", toVal' $ tshow coverImageWidth), ("cover-image-height", toVal' $ tshow coverImageHeight)]) <> cssvars True <> vars } (Pandoc meta []) coverEntry <- mkEntry "text/cover.xhtml" cpContent coverImageEntry <- mkEntry ("media/" ++ coverImageName) imgContent return ( [ coverEntry ], [ coverImageEntry ] ) -- | Converts the given chapters to entries using the writeHtml function -- and the various provided options createChapterEntries :: PandocMonad m => WriterOptions -> Context Text -> (Bool -> Context Text) -> (WriterOptions -> Pandoc -> StateT EPUBState m B8.ByteString) -> [Chunk] -> StateT EPUBState m [Entry] createChapterEntries opts' vars cssvars writeHtml chapters = do -- Create an entry from the chapter with the provided number. -- chapToEntry :: Int -> Chapter -> StateT EPUBState m Entry let chapToEntry num chunk = mkEntry ("text/" ++ chunkPath chunk) =<< -- Combine all provided options writeHtml opts'{ writerVariables = Context (M.fromList [("body-type", toVal' bodyType), ("pagetitle", toVal' $ showChapter num)]) <> cssvars True <> vars } pdoc where bs = chunkContents chunk meta' = setMeta "title" (fromList (walk removeNote (chunkHeading chunk))) nullMeta (pdoc, bodyType) = case bs of (Div (_,"section":_,kvs) _ : _) -> -- remove notes or we get doubled footnotes (Pandoc meta' bs, -- Check if the chapters belongs to the frontmatter, -- backmatter of bodymatter defaulting to the body case lookup "epub:type" kvs of Nothing -> "bodymatter" Just x | x `elem` frontMatterTypes -> "frontmatter" | x `elem` backMatterTypes -> "backmatter" | otherwise -> "bodymatter") _ -> (Pandoc meta' bs, "bodymatter") frontMatterTypes = ["prologue", "abstract", "acknowledgments", "copyright-page", "dedication", "credits", "keywords", "imprint", "contributors", "other-credits", "errata", "revision-history", "titlepage", "halftitlepage", "seriespage", "foreword", "preface", "frontispiece", "seriespage", "titlepage"] backMatterTypes = ["appendix", "colophon", "bibliography", "index"] zipWithM chapToEntry [1..] chapters createTocEntry :: PandocMonad m => WriterOptions -> Meta -> EPUBMetadata -> Text -> Tree SecInfo -> StateT EPUBState m Entry createTocEntry opts meta metadata plainTitle (Node _ secs) = do let mkNavPoint :: Tree SecInfo -> State Int (Maybe Element) mkNavPoint (Node secinfo subsecs) | secLevel secinfo > writerTOCDepth opts = return Nothing | otherwise = do n <- get modify (+ 1) subs <- catMaybes <$> mapM mkNavPoint subsecs let secnum' = case secNumber secinfo of Just t -> t <> " " Nothing -> "" let title' = secnum' <> stringify (secTitle secinfo) return $ Just $ unode "navPoint" ! [("id", "navPoint-" <> tshow n)] $ [ unode "navLabel" $ unode "text" title' , unode "content" ! [("src", "text/" <> secPath secinfo)] $ () ] ++ subs let tpNode = unode "navPoint" ! [("id", "navPoint-0")] $ [ unode "navLabel" $ unode "text" (stringify $ docTitle' meta) , unode "content" ! [("src", "text/title_page.xhtml")] $ () ] let navMap = evalState (catMaybes <$> mapM mkNavPoint secs) 1 uuid <- case epubIdentifier metadata of (x:_) -> return $ identifierText x -- use first identifier as UUID [] -> throwError $ PandocShouldNeverHappenError "epubIdentifier is null" -- shouldn't happen let tocData = B.fromStrict $ UTF8.fromText $ ppTopElement $ unode "ncx" ! [("version","2005-1") ,("xmlns","http://www.daisy.org/z3986/2005/ncx/")] $ [ unode "head" $ [ unode "meta" ! [("name","dtb:uid") ,("content", uuid)] $ () , unode "meta" ! [("name","dtb:depth") ,("content", "1")] $ () , unode "meta" ! [("name","dtb:totalPageCount") ,("content", "0")] $ () , unode "meta" ! [("name","dtb:maxPageNumber") ,("content", "0")] $ () ] ++ case epubCoverImage metadata of Nothing -> [] Just img -> [unode "meta" ! [("name","cover"), ("content", toId img)] $ ()] , unode "docTitle" $ unode "text" plainTitle , unode "navMap" $ [tpNode | writerEpubTitlePage opts] ++ navMap ] mkEntry "toc.ncx" tocData createNavEntry :: PandocMonad m => WriterOptions -> Meta -> EPUBMetadata -> Context Text -> (Bool -> Context Text) -> (WriterOptions -> Pandoc -> m B8.ByteString) -> Text -> EPUBVersion -> Tree SecInfo -> StateT EPUBState m Entry createNavEntry opts meta metadata vars cssvars writeHtml tocTitle version (Node _ secs) = do let mkItem :: Tree SecInfo -> State Int (Maybe Element) mkItem (Node secinfo subsecs) | secLevel secinfo > writerTOCDepth opts = return Nothing | otherwise = do n <- get modify (+ 1) subs <- catMaybes <$> mapM mkItem subsecs let secnum' = case secNumber secinfo of Just num -> [Span ("", ["section-header-number"], []) [Str num] , Space] Nothing -> [] let title' = secnum' <> secTitle secinfo -- can't have elements inside generated links... let clean (Link _ ils _) = Span ("", [], []) ils clean (Note _) = Str "" clean x = x let titRendered = case P.runPure (writeHtmlStringForEPUB version opts{ writerTemplate = Nothing } (Pandoc nullMeta [Plain $ walk clean title'])) of Left _ -> stringify title' Right x -> x let titElements = either (const []) id $ parseXMLContents (TL.fromStrict titRendered) return $ Just $ unode "li" ! [("id", "toc-li-" <> tshow n)] $ (unode "a" ! [("href", "text/" <> secPath secinfo)] $ titElements) : case subs of [] -> [] (_:_) -> [unode "ol" ! [("class","toc")] $ subs] let navtag = if version == EPUB3 then "nav" else "div" let tocBlocks = evalState (catMaybes <$> mapM mkItem secs) 1 let navBlocks = [RawBlock (Format "html") $ showElement $ -- prettyprinting introduces bad spaces unode navtag ! ([("epub:type","toc") | version == EPUB3] ++ [("id","toc")]) $ [ unode "h1" ! [("id","toc-title")] $ tocTitle , unode "ol" ! [("class","toc")] $ tocBlocks ]] let landmarkItems = if version == EPUB3 then [ unode "li" [ unode "a" ! [("href", "text/title_page.xhtml") ,("epub:type", "titlepage")] $ ("Title Page" :: Text) ] | writerEpubTitlePage opts ] ++ [ unode "li" [ unode "a" ! [("href", "text/cover.xhtml") ,("epub:type", "cover")] $ ("Cover" :: Text)] | isJust (epubCoverImage metadata) ] ++ [ unode "li" [ unode "a" ! [("href", "#toc") ,("epub:type", "toc")] $ ("Table of Contents" :: Text) ] | writerTableOfContents opts ] else [] let landmarks = [RawBlock (Format "html") $ ppElement $ unode "nav" ! [("epub:type","landmarks") ,("id","landmarks") ,("hidden","hidden")] $ [ unode "ol" landmarkItems ] | not (null landmarkItems)] navData <- lift $ writeHtml opts{ writerVariables = Context (M.fromList [("navpage", toVal' "true") ,("body-type", toVal' "frontmatter") ]) <> cssvars False <> vars } (Pandoc (setMeta "title" (walk removeNote $ fromList $ docTitle' meta) nullMeta) (navBlocks ++ landmarks)) -- Return mkEntry "nav.xhtml" navData metadataElement :: EPUBVersion -> EPUBMetadata -> UTCTime -> Element metadataElement version md currentTime = unode "metadata" ! [("xmlns:dc","http://purl.org/dc/elements/1.1/") ,("xmlns:opf","http://www.idpf.org/2007/opf")] $ mdNodes where mdNodes = identifierNodes ++ titleNodes ++ dateNodes ++ languageNodes ++ ibooksNodes ++ calibreNodes ++ creatorNodes ++ contributorNodes ++ subjectNodes ++ descriptionNodes ++ typeNodes ++ formatNodes ++ publisherNodes ++ sourceNodes ++ relationNodes ++ coverageNodes ++ rightsNodes ++ coverImageNodes ++ modifiedNodes ++ belongsToCollectionNodes withIds base f = concat . zipWith f (map (\x -> base <> T.cons '-' (tshow x)) ([1..] :: [Int])) identifierNodes = withIds "epub-id" toIdentifierNode $ epubIdentifier md titleNodes = withIds "epub-title" toTitleNode $ epubTitle md dateNodes = if version == EPUB2 then withIds "epub-date" toDateNode $ epubDate md else -- epub3 allows only one dc:date -- http://www.idpf.org/epub/30/spec/epub30-publications.html#sec-opf-dcdate case epubDate md of [] -> [] (x:_) -> [dcNode "date" ! [("id","epub-date")] $ dateText x] ibooksNodes = map ibooksNode (epubIbooksFields md) ibooksNode (k, v) = unode "meta" ! [("property", "ibooks:" <> k)] $ v calibreNodes = map calibreNode (epubCalibreFields md) calibreNode (k, v) = unode "meta" ! [("name", "calibre:" <> k), ("content", v)] $ () languageNodes = [dcTag "language" $ epubLanguage md] creatorNodes = withIds "epub-creator" (toCreatorNode "creator") $ epubCreator md contributorNodes = withIds "epub-contributor" (toCreatorNode "contributor") $ epubContributor md subjectNodes = withIds "subject" toSubjectNode $ epubSubject md descriptionNodes = maybe [] (dcTag' "description") $ epubDescription md typeNodes = maybe [] (dcTag' "type") $ epubType md formatNodes = maybe [] (dcTag' "format") $ epubFormat md publisherNodes = maybe [] (dcTag' "publisher") $ epubPublisher md sourceNodes = maybe [] (dcTag' "source") $ epubSource md relationNodes = maybe [] (dcTag' "relation") $ epubRelation md coverageNodes = maybe [] (dcTag' "coverage") $ epubCoverage md rightsNodes = maybe [] (dcTag' "rights") $ epubRights md coverImageNodes = maybe [] (\img -> [unode "meta" ! [("name","cover"), ("content",toId img)] $ ()]) $ epubCoverImage md modifiedNodes = [ unode "meta" ! [("property", "dcterms:modified")] $ showDateTimeISO8601 currentTime | version == EPUB3 ] belongsToCollectionNodes = maybe [] (\belongsToCollection -> (unode "meta" ! [("property", "belongs-to-collection"), ("id", "epub-collection-1")] $ belongsToCollection ) : [unode "meta" ! [("refines", "#epub-collection-1"), ("property", "collection-type")] $ ("series" :: Text) ]) (epubBelongsToCollection md)++ maybe [] (\groupPosition -> [unode "meta" ! [("refines", "#epub-collection-1"), ("property", "group-position")] $ groupPosition ]) (epubGroupPosition md) dcTag n s = unode ("dc:" <> n) s dcTag' n s = [dcTag n s] toIdentifierNode id' (Identifier txt scheme) | version == EPUB2 = [dcNode "identifier" ! (("id",id') : maybe [] (\x -> [("opf:scheme", x)]) scheme) $ txt] | otherwise = (dcNode "identifier" ! [("id",id')] $ txt) : maybe [] ((\x -> [unode "meta" ! [ ("refines","#" <> id') , ("property","identifier-type") , ("scheme","onix:codelist5") ] $ x ]) . schemeToOnix) scheme toCreatorNode s id' creator | version == EPUB2 = [dcNode s ! (("id",id') : maybe [] (\x -> [("opf:file-as",x)]) (creatorFileAs creator) ++ maybe [] (\x -> [("opf:role",x)]) (creatorRole creator >>= toRelator)) $ creatorText creator] | otherwise = [dcNode s ! [("id",id')] $ creatorText creator] ++ maybe [] (\x -> [unode "meta" ! [("refines","#" <> id'),("property","file-as")] $ x]) (creatorFileAs creator) ++ maybe [] (\x -> [unode "meta" ! [("refines","#" <> id'),("property","role"), ("scheme","marc:relators")] $ x]) (creatorRole creator >>= toRelator) toTitleNode id' title | version == EPUB2 = [dcNode "title" ! (("id",id') : -- note: EPUB2 doesn't accept opf:title-type maybe [] (\x -> [("opf:file-as",x)]) (titleFileAs title)) $ titleText title] | otherwise = [dcNode "title" ! [("id",id')] $ titleText title] ++ maybe [] (\x -> [unode "meta" ! [("refines","#" <> id'),("property","file-as")] $ x]) (titleFileAs title) ++ maybe [] (\x -> [unode "meta" ! [("refines","#" <> id'),("property","title-type")] $ x]) (titleType title) toDateNode id' date = [dcNode "date" ! (("id",id') : maybe [] (\x -> [("opf:event",x)]) (dateEvent date)) $ dateText date] toSubjectNode id' subject | version == EPUB2 = [dcNode "subject" ! [("id",id')] $ subjectText subject] | otherwise = (dcNode "subject" ! [("id",id')] $ subjectText subject) : maybe [] (\x -> (unode "meta" ! [("refines", "#" <> id'),("property","authority")] $ x) : maybe [] (\y -> [unode "meta" ! [("refines", "#" <> id'),("property","term")] $ y]) (subjectTerm subject)) (subjectAuthority subject) schemeToOnix :: Text -> Text schemeToOnix "ISBN-10" = "02" schemeToOnix "GTIN-13" = "03" schemeToOnix "UPC" = "04" schemeToOnix "ISMN-10" = "05" schemeToOnix "DOI" = "06" schemeToOnix "LCCN" = "13" schemeToOnix "GTIN-14" = "14" schemeToOnix "ISBN-13" = "15" schemeToOnix "Legal deposit number" = "17" schemeToOnix "URN" = "22" schemeToOnix "OCLC" = "23" schemeToOnix "ISMN-13" = "25" schemeToOnix "ISBN-A" = "26" schemeToOnix "JP" = "27" schemeToOnix "OLCC" = "28" schemeToOnix _ = "01" showDateTimeISO8601 :: UTCTime -> Text showDateTimeISO8601 = T.pack . formatTime defaultTimeLocale "%FT%TZ" transformTag :: PandocMonad m => Tag T.Text -> E m (Tag T.Text) transformTag tag@(TagOpen name attr) | name `elem` ["video", "source", "img", "audio"] && isNothing (lookup "data-external" attr) = do let src = fromAttrib "src" tag let poster = fromAttrib "poster" tag newsrc <- modifyMediaRef $ T.unpack src newposter <- modifyMediaRef $ T.unpack poster let attr' = filter (\(x,_) -> x /= "src" && x /= "poster") attr ++ [("src", "../" <> newsrc) | not (T.null newsrc)] ++ [("poster", "../" <> newposter) | not (T.null newposter)] return $ TagOpen name attr' transformTag tag = return tag modifyMediaRef :: PandocMonad m => FilePath -> E m T.Text modifyMediaRef "" = return "" modifyMediaRef oldsrc = do media <- gets stMediaPaths case lookup oldsrc media of Just (n,_) -> return $ T.pack n Nothing -> catchError (do (img, mbMime) <- P.fetchItem $ T.pack oldsrc let ext = maybe (takeExtension (takeWhile (/='?') oldsrc)) (T.unpack . ("." <>)) (mbMime >>= extensionFromMimeType) newName <- getMediaNextNewName ext let newPath = "media/" ++ newName entry <- mkEntry newPath (B.fromChunks . (:[]) $ img) modify $ \st -> st{ stMediaPaths = (oldsrc, (newPath, Just entry)):media} return $ T.pack newPath) (\e -> do report $ CouldNotFetchResource (T.pack oldsrc) (tshow e) return $ T.pack oldsrc) getMediaNextNewName :: PandocMonad m => FilePath -> E m FilePath getMediaNextNewName ext = do nextId <- gets stMediaNextId modify $ \st -> st { stMediaNextId = nextId + 1 } return $ "file" ++ show nextId ++ ext isHtmlFormat :: Format -> Bool isHtmlFormat (Format "html") = True isHtmlFormat (Format "html4") = True isHtmlFormat (Format "html5") = True isHtmlFormat _ = False transformBlock :: PandocMonad m => Block -> E m Block transformBlock (RawBlock fmt raw) | isHtmlFormat fmt = do let tags = parseTags raw tags' <- mapM transformTag tags return $ RawBlock fmt (renderTags' tags') transformBlock b = return b transformInline :: PandocMonad m => WriterOptions -> Inline -> E m Inline transformInline _opts (Image attr@(_,_,kvs) lab (src,tit)) | isNothing (lookup "external" kvs) = do newsrc <- modifyMediaRef $ T.unpack src return $ Image attr lab ("../" <> newsrc, tit) transformInline opts x@(Math t m) | WebTeX url <- writerHTMLMathMethod opts = do newsrc <- modifyMediaRef (T.unpack (url <> urlEncode m)) let mathclass = if t == DisplayMath then "display" else "inline" return $ Span ("",["math",mathclass],[]) [Image nullAttr [x] ("../" <> newsrc, "")] transformInline _opts (RawInline fmt raw) | isHtmlFormat fmt = do let tags = parseTags raw tags' <- mapM transformTag tags return $ RawInline fmt (renderTags' tags') transformInline _ x = return x (!) :: (t -> Element) -> [(Text, Text)] -> t -> Element (!) f attrs n = add_attrs (map (\(k,v) -> Attr (unqual k) v) attrs) (f n) mediaTypeOf :: FilePath -> Maybe MimeType mediaTypeOf x = let mediaPrefixes = ["image", "video", "audio"] in case getMimeType x of Just y | any (`T.isPrefixOf` y) mediaPrefixes -> Just y _ -> Nothing -- Returns filename for chapter number. showChapter :: Int -> Text showChapter = T.pack . printf "ch%03d.xhtml" -- Add identifiers to any headers without them. addIdentifiers :: WriterOptions -> [Block] -> [Block] addIdentifiers opts bs = evalState (mapM go bs) Set.empty where go (Header n (ident,classes,kvs) ils) = do ids <- get let ident' = if T.null ident then uniqueIdent (writerExtensions opts) ils ids else ident modify $ Set.insert ident' return $ Header n (ident',classes,kvs) ils go x = return x -- Variant of normalizeDate that allows partial dates: YYYY, YYYY-MM normalizeDate' :: Text -> Maybe Text normalizeDate' = go . T.strip where go xs | T.length xs == 4 -- YYY , T.all isDigit xs = Just xs | (y, s) <- T.splitAt 4 xs -- YYY-MM , Just ('-', m) <- T.uncons s , T.length m == 2 , T.all isDigit y && T.all isDigit m = Just xs | otherwise = normalizeDate xs toRelator :: Text -> Maybe Text toRelator x | x `elem` relators = Just x | otherwise = lookup (T.toLower x) relatorMap relators :: [Text] relators = map snd relatorMap relatorMap :: [(Text, Text)] relatorMap = [("abridger", "abr") ,("actor", "act") ,("adapter", "adp") ,("addressee", "rcp") ,("analyst", "anl") ,("animator", "anm") ,("annotator", "ann") ,("appellant", "apl") ,("appellee", "ape") ,("applicant", "app") ,("architect", "arc") ,("arranger", "arr") ,("art copyist", "acp") ,("art director", "adi") ,("artist", "art") ,("artistic director", "ard") ,("assignee", "asg") ,("associated name", "asn") ,("attributed name", "att") ,("auctioneer", "auc") ,("author", "aut") ,("author in quotations or text abstracts", "aqt") ,("author of afterword, colophon, etc.", "aft") ,("author of dialog", "aud") ,("author of introduction, etc.", "aui") ,("autographer", "ato") ,("bibliographic antecedent", "ant") ,("binder", "bnd") ,("binding designer", "bdd") ,("blurb writer", "blw") ,("book designer", "bkd") ,("book producer", "bkp") ,("bookjacket designer", "bjd") ,("bookplate designer", "bpd") ,("bookseller", "bsl") ,("braille embosser", "brl") ,("broadcaster", "brd") ,("calligrapher", "cll") ,("cartographer", "ctg") ,("caster", "cas") ,("censor", "cns") ,("choreographer", "chr") ,("cinematographer", "cng") ,("client", "cli") ,("collection registrar", "cor") ,("collector", "col") ,("collotyper", "clt") ,("colorist", "clr") ,("commentator", "cmm") ,("commentator for written text", "cwt") ,("compiler", "com") ,("complainant", "cpl") ,("complainant-appellant", "cpt") ,("complainant-appellee", "cpe") ,("composer", "cmp") ,("compositor", "cmt") ,("conceptor", "ccp") ,("conductor", "cnd") ,("conservator", "con") ,("consultant", "csl") ,("consultant to a project", "csp") ,("contestant", "cos") ,("contestant-appellant", "cot") ,("contestant-appellee", "coe") ,("contestee", "cts") ,("contestee-appellant", "ctt") ,("contestee-appellee", "cte") ,("contractor", "ctr") ,("contributor", "ctb") ,("copyright claimant", "cpc") ,("copyright holder", "cph") ,("corrector", "crr") ,("correspondent", "crp") ,("costume designer", "cst") ,("court governed", "cou") ,("court reporter", "crt") ,("cover designer", "cov") ,("creator", "cre") ,("curator", "cur") ,("dancer", "dnc") ,("data contributor", "dtc") ,("data manager", "dtm") ,("dedicatee", "dte") ,("dedicator", "dto") ,("defendant", "dfd") ,("defendant-appellant", "dft") ,("defendant-appellee", "dfe") ,("degree granting institution", "dgg") ,("delineator", "dln") ,("depicted", "dpc") ,("depositor", "dpt") ,("designer", "dsr") ,("director", "drt") ,("dissertant", "dis") ,("distribution place", "dbp") ,("distributor", "dst") ,("donor", "dnr") ,("draftsman", "drm") ,("dubious author", "dub") ,("editor", "edt") ,("editor of compilation", "edc") ,("editor of moving image work", "edm") ,("electrician", "elg") ,("electrotyper", "elt") ,("enacting jurisdiction", "enj") ,("engineer", "eng") ,("engraver", "egr") ,("etcher", "etr") ,("event place", "evp") ,("expert", "exp") ,("facsimilist", "fac") ,("field director", "fld") ,("film director", "fmd") ,("film distributor", "fds") ,("film editor", "flm") ,("film producer", "fmp") ,("filmmaker", "fmk") ,("first party", "fpy") ,("forger", "frg") ,("former owner", "fmo") ,("funder", "fnd") ,("geographic information specialist", "gis") ,("honoree", "hnr") ,("host", "hst") ,("host institution", "his") ,("illuminator", "ilu") ,("illustrator", "ill") ,("inscriber", "ins") ,("instrumentalist", "itr") ,("interviewee", "ive") ,("interviewer", "ivr") ,("inventor", "inv") ,("issuing body", "isb") ,("judge", "jud") ,("jurisdiction governed", "jug") ,("laboratory", "lbr") ,("laboratory director", "ldr") ,("landscape architect", "lsa") ,("lead", "led") ,("lender", "len") ,("libelant", "lil") ,("libelant-appellant", "lit") ,("libelant-appellee", "lie") ,("libelee", "lel") ,("libelee-appellant", "let") ,("libelee-appellee", "lee") ,("librettist", "lbt") ,("licensee", "lse") ,("licensor", "lso") ,("lighting designer", "lgd") ,("lithographer", "ltg") ,("lyricist", "lyr") ,("manufacture place", "mfp") ,("manufacturer", "mfr") ,("marbler", "mrb") ,("markup editor", "mrk") ,("metadata contact", "mdc") ,("metal-engraver", "mte") ,("moderator", "mod") ,("monitor", "mon") ,("music copyist", "mcp") ,("musical director", "msd") ,("musician", "mus") ,("narrator", "nrt") ,("onscreen presenter", "osp") ,("opponent", "opn") ,("organizer of meeting", "orm") ,("originator", "org") ,("other", "oth") ,("owner", "own") ,("panelist", "pan") ,("papermaker", "ppm") ,("patent applicant", "pta") ,("patent holder", "pth") ,("patron", "pat") ,("performer", "prf") ,("permitting agency", "pma") ,("photographer", "pht") ,("plaintiff", "ptf") ,("plaintiff-appellant", "ptt") ,("plaintiff-appellee", "pte") ,("platemaker", "plt") ,("praeses", "pra") ,("presenter", "pre") ,("printer", "prt") ,("printer of plates", "pop") ,("printmaker", "prm") ,("process contact", "prc") ,("producer", "pro") ,("production company", "prn") ,("production designer", "prs") ,("production manager", "pmn") ,("production personnel", "prd") ,("production place", "prp") ,("programmer", "prg") ,("project director", "pdr") ,("proofreader", "pfr") ,("provider", "prv") ,("publication place", "pup") ,("publisher", "pbl") ,("publishing director", "pbd") ,("puppeteer", "ppt") ,("radio director", "rdd") ,("radio producer", "rpc") ,("recording engineer", "rce") ,("recordist", "rcd") ,("redaktor", "red") ,("renderer", "ren") ,("reporter", "rpt") ,("repository", "rps") ,("research team head", "rth") ,("research team member", "rtm") ,("researcher", "res") ,("respondent", "rsp") ,("respondent-appellant", "rst") ,("respondent-appellee", "rse") ,("responsible party", "rpy") ,("restager", "rsg") ,("restorationist", "rsr") ,("reviewer", "rev") ,("rubricator", "rbr") ,("scenarist", "sce") ,("scientific advisor", "sad") ,("screenwriter", "aus") ,("scribe", "scr") ,("sculptor", "scl") ,("second party", "spy") ,("secretary", "sec") ,("seller", "sll") ,("set designer", "std") ,("setting", "stg") ,("signer", "sgn") ,("singer", "sng") ,("sound designer", "sds") ,("speaker", "spk") ,("sponsor", "spn") ,("stage director", "sgd") ,("stage manager", "stm") ,("standards body", "stn") ,("stereotyper", "str") ,("storyteller", "stl") ,("supporting host", "sht") ,("surveyor", "srv") ,("teacher", "tch") ,("technical director", "tcd") ,("television director", "tld") ,("television producer", "tlp") ,("thesis advisor", "ths") ,("transcriber", "trc") ,("translator", "trl") ,("type designer", "tyd") ,("typographer", "tyg") ,("university place", "uvp") ,("videographer", "vdg") ,("witness", "wit") ,("wood engraver", "wde") ,("woodcutter", "wdc") ,("writer of accompanying material", "wam") ,("writer of added commentary", "wac") ,("writer of added lyrics", "wal") ,("writer of added text", "wat") ] docTitle' :: Meta -> [Inline] docTitle' meta = maybe [] go $ lookupMeta "title" meta where go (MetaString s) = [Str s] go (MetaInlines xs) = xs go (MetaBlocks [Para xs]) = xs go (MetaBlocks [Plain xs]) = xs go (MetaMap m) = case M.lookup "type" m of Just x | stringify x == "main" -> maybe [] go $ M.lookup "text" m _ -> [] go (MetaList xs) = concatMap go xs go _ = [] pandoc-3.1.3/src/Text/Pandoc/Writers/FB2.hs0000644000000000000000000005452107346545000016445 0ustar0000000000000000{-# LANGUAGE PatternGuards #-} {-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Writers.FB2 Copyright : Copyright (C) 2011-2012 Sergey Astanin 2012-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Conversion of 'Pandoc' documents to FB2 (FictionBook2) format. FictionBook is an XML-based e-book format. For more information see: -} module Text.Pandoc.Writers.FB2 (writeFB2) where import Control.Monad (zipWithM, liftM) import Control.Monad.Except (catchError, throwError) import Control.Monad.State.Strict (StateT, evalStateT, get, gets, lift, modify) import Data.ByteString.Base64 (encodeBase64) import Data.Char (isAscii, isControl, isSpace) import Data.Either (lefts, rights) import Data.List (intercalate) import Data.Text (Text) import qualified Data.Text as T import qualified Data.Text.Lazy as TL import Text.Pandoc.URI (urlEncode, isURI) import Text.Pandoc.XML.Light as X import Text.Pandoc.Class.PandocMonad (PandocMonad, report) import qualified Text.Pandoc.Class.PandocMonad as P import Text.Pandoc.Definition import Text.Pandoc.Error (PandocError(..)) import Text.Pandoc.Logging import Text.Pandoc.Options (HTMLMathMethod (..), WriterOptions (..), def) import Text.Pandoc.Shared (blocksToInlines, capitalize, orderedListMarkers, makeSections, tshow, stringify) import Text.Pandoc.Walk (walk) import Text.Pandoc.Writers.Shared (lookupMetaString, toLegacyTable, ensureValidXmlIdentifiers) import Data.Generics (everywhere, mkT) -- | Data to be written at the end of the document: -- (foot)notes, URLs, references, images. data FbRenderState = FbRenderState { footnotes :: [ (Int, Text, [Content]) ] -- ^ #, ID, text , imagesToFetch :: [ (Text, Text) ] -- ^ filename, URL or path , parentListMarker :: Text -- ^ list marker of the parent ordered list , writerOptions :: WriterOptions } deriving (Show) -- | FictionBook building monad. type FBM m = StateT FbRenderState m newFB :: FbRenderState newFB = FbRenderState { footnotes = [], imagesToFetch = [] , parentListMarker = "" , writerOptions = def } data ImageMode = NormalImage | InlineImage deriving (Eq) instance Show ImageMode where show NormalImage = "imageType" show InlineImage = "inlineImageType" -- | Produce an FB2 document from a 'Pandoc' document. writeFB2 :: PandocMonad m => WriterOptions -- ^ conversion options -> Pandoc -- ^ document to convert -> m Text -- ^ FictionBook2 document (not encoded yet) writeFB2 opts doc = flip evalStateT newFB $ pandocToFB2 opts doc pandocToFB2 :: PandocMonad m => WriterOptions -> Pandoc -> FBM m Text pandocToFB2 opts doc = do let Pandoc meta blocks = ensureValidXmlIdentifiers doc modify (\s -> s { writerOptions = opts }) desc <- description meta title <- cMapM toXml . docTitle $ meta secs <- renderSections 1 blocks let body = el "body" $ el "title" (el "p" title) : secs notes <- renderFootnotes (imgs,missing) <- get >>= (lift . fetchImages . imagesToFetch) let body' = replaceImagesWithAlt missing body let fb2_xml = el "FictionBook" (fb2_attrs, [desc, body'] ++ notes ++ imgs) return $ xml_head <> showContent fb2_xml <> "\n" where xml_head = "\n" fb2_attrs = let xmlns = "http://www.gribuser.ru/xml/fictionbook/2.0" xlink = "http://www.w3.org/1999/xlink" in [ uattr "xmlns" xmlns , attr ("xmlns", "l") xlink ] description :: PandocMonad m => Meta -> FBM m Content description meta' = do let genre = case lookupMetaString "genre" meta' of "" -> el "genre" ("unrecognised" :: Text) s -> el "genre" s bt <- booktitle meta' let as = authors meta' dd <- docdate meta' annotation <- case lookupMeta "abstract" meta' of Just (MetaBlocks bs) -> list . el "annotation" <$> cMapM blockToXml (map unPlain bs) _ -> pure mempty let lang = case lookupMeta "lang" meta' of Just (MetaInlines [Str s]) -> [el "lang" $ iso639 s] Just (MetaString s) -> [el "lang" $ iso639 s] _ -> [] where iso639 = T.takeWhile (/= '-') -- Convert BCP 47 to ISO 639 let coverimage url = do let img = Image nullAttr mempty (url, "") im <- insertImage InlineImage img return [el "coverpage" im] coverpage <- case lookupMeta "cover-image" meta' of Just (MetaInlines ils) -> coverimage (stringify ils) Just (MetaString s) -> coverimage s _ -> return [] return $ el "description" [ el "title-info" (genre : (as ++ bt ++ annotation ++ dd ++ coverpage ++ lang)) , el "document-info" [el "program-used" ("pandoc" :: Text)] ] booktitle :: PandocMonad m => Meta -> FBM m [Content] booktitle meta' = do t <- cMapM toXml . docTitle $ meta' return $ [el "book-title" t | not (null t)] authors :: Meta -> [Content] authors meta' = cMap author (docAuthors meta') author :: [Inline] -> [Content] author ss = let ws = T.words $ mconcat $ map plain ss email = el "email" <$> take 1 (filter (T.any (=='@')) ws) ws' = filter (not . T.any (== '@')) ws names = case ws' of [nickname] -> [ el "nickname" nickname ] [fname, lname] -> [ el "first-name" fname , el "last-name" lname ] (fname:rest) -> [ el "first-name" fname , el "middle-name" (T.concat . init $ rest) , el "last-name" (last rest) ] [] -> [] in list $ el "author" (names ++ email) docdate :: PandocMonad m => Meta -> FBM m [Content] docdate meta' = do let ss = docDate meta' d <- cMapM toXml ss return $ [el "date" d | not (null d)] -- | Divide the stream of blocks into sections and convert to XML -- representation. renderSections :: PandocMonad m => Int -> [Block] -> FBM m [Content] renderSections level blocks = do let blocks' = makeSections False Nothing blocks let isSection (Div (_,"section":_,_) (Header{}:_)) = True isSection _ = False let (initialBlocks, secs) = break isSection blocks' let blocks'' = if null initialBlocks then blocks' else Div ("",["section"],[]) (Header 1 nullAttr mempty : initialBlocks) : secs cMapM (renderSection level) blocks'' renderSection :: PandocMonad m => Int -> Block -> FBM m [Content] renderSection lvl (Div (id',"section":_,_) (Header _ _ title : xs)) = do title' <- if null title then return [] else list . el "title" <$> formatTitle title content <- cMapM (renderSection (lvl + 1)) xs let sectionContent = if T.null id' then el "section" (title' ++ content) else el "section" ([uattr "id" id'], title' ++ content) return [sectionContent] renderSection lvl (Div _attr bs) = cMapM (renderSection lvl) bs renderSection _ b = blockToXml b -- | Only

    and are allowed within in FB2. formatTitle :: PandocMonad m => [Inline] -> FBM m [Content] formatTitle inlines = cMapM (blockToXml . Para) $ split (== LineBreak) inlines split :: (a -> Bool) -> [a] -> [[a]] split _ [] = [] split cond xs = let (b,a) = break cond xs in (b:split cond (drop 1 a)) isLineBreak :: Inline -> Bool isLineBreak LineBreak = True isLineBreak _ = False -- | Make another FictionBook body with footnotes. renderFootnotes :: PandocMonad m => FBM m [Content] renderFootnotes = do fns <- footnotes `liftM` get if null fns then return [] -- no footnotes else return . list $ el "body" ([uattr "name" "notes"], map renderFN (reverse fns)) where renderFN (n, idstr, cs) = let fn_texts = el "title" (el "p" (tshow n)) : cs in el "section" ([uattr "id" idstr], fn_texts) -- | Fetch images and encode them for the FictionBook XML. -- Return image data and a list of hrefs of the missing images. fetchImages :: PandocMonad m => [(Text,Text)] -> m ([Content],[Text]) fetchImages links = do imgs <- mapM (uncurry fetchImage) links return (rights imgs, lefts imgs) -- | Fetch image data from disk or from network and make a <binary> XML section. -- Return either (Left hrefOfMissingImage) or (Right xmlContent). fetchImage :: PandocMonad m => Text -> Text -> m (Either Text Content) fetchImage href link = do mbimg <- case (isURI link, readDataURI link) of (True, Just (mime,_,True,base64)) -> let mime' = T.toLower mime in if mime' == "image/png" || mime' == "image/jpeg" then return (Just (mime',base64)) else return Nothing (True, Just _) -> return Nothing -- not base64-encoded _ -> catchError (do (bs, mbmime) <- P.fetchItem link case mbmime of Nothing -> do report $ CouldNotDetermineMimeType link return Nothing Just mime -> return $ Just (mime, encodeBase64 bs)) (\e -> do report $ CouldNotFetchResource link (tshow e) return Nothing) case mbimg of Just (imgtype, imgdata) -> return . Right $ el "binary" ( [uattr "id" href , uattr "content-type" imgtype] , txt imgdata ) _ -> return (Left ("#" <> href)) -- | Extract mime type and encoded data from the Data URI. readDataURI :: Text -- ^ URI -> Maybe (Text,Text,Bool,Text) -- ^ Maybe (mime,charset,isBase64,data) readDataURI uri = case T.stripPrefix "data:" uri of Nothing -> Nothing Just rest -> let meta = T.takeWhile (/= ',') rest -- without trailing ',' uridata = T.drop (T.length meta + 1) rest parts = T.split (== ';') meta (mime,cs,enc)=foldr upd ("text/plain","US-ASCII",False) parts in Just (mime,cs,enc,uridata) where upd str m@(mime,cs,enc) | isMimeType str = (str,cs,enc) | Just str' <- T.stripPrefix "charset=" str = (mime,str',enc) | str == "base64" = (mime,cs,True) | otherwise = m -- Without parameters like ;charset=...; see RFC 2045, 5.1 isMimeType :: Text -> Bool isMimeType s = case T.split (=='/') s of [mtype,msubtype] -> (T.toLower mtype `elem` types || "x-" `T.isPrefixOf` T.toLower mtype) && T.all valid mtype && T.all valid msubtype _ -> False where types = ["text","image","audio","video","application","message","multipart"] valid c = isAscii c && not (isControl c) && not (isSpace c) && c `notElem` ("()<>@,;:\\\"/[]?=" :: [Char]) footnoteID :: Int -> Text footnoteID i = "n" <> tshow i mkitem :: PandocMonad m => Text -> [Block] -> FBM m [Content] mkitem mrk bs = do pmrk <- gets parentListMarker let nmrk = pmrk <> mrk <> " " modify (\s -> s { parentListMarker = nmrk}) item <- cMapM blockToXml $ plainToPara $ indentBlocks nmrk bs modify (\s -> s { parentListMarker = pmrk }) -- old parent marker return item -- | Convert a block-level Pandoc's element to FictionBook XML representation. blockToXml :: PandocMonad m => Block -> FBM m [Content] blockToXml (Plain [img@Image {}]) = insertImage NormalImage img blockToXml (Plain ss) = cMapM toXml ss -- FIXME: can lead to malformed FB2 -- Special handling for singular images and display math elements blockToXml (Para [Math DisplayMath formula]) = insertMath NormalImage formula blockToXml (Para [img@(Image {})]) = insertImage NormalImage img blockToXml (Para ss) = list . el "p" <$> cMapM toXml ss blockToXml (CodeBlock _ s) = return . spaceBeforeAfter . map (el "p" . el "code") . T.lines $ s blockToXml (RawBlock f str) = if f == Format "fb2" then case parseXMLContents (TL.fromStrict str) of Left msg -> throwError $ PandocXMLError "" msg Right nds -> return nds else return [] blockToXml (Div _ bs) = cMapM blockToXml bs blockToXml (BlockQuote bs) = list . el "cite" <$> cMapM blockToXml bs blockToXml (LineBlock lns) = list . el "poem" <$> mapM stanza (split null lns) where v xs = el "v" <$> cMapM toXml xs stanza xs = el "stanza" <$> mapM v xs blockToXml (OrderedList a bss) = concat <$> zipWithM mkitem markers bss where markers = orderedListMarkers a blockToXml (BulletList bss) = cMapM (mkitem "•") bss blockToXml (DefinitionList defs) = cMapM mkdef defs where mkdef (term, bss) = do items <- cMapM (cMapM blockToXml . plainToPara . indentBlocks (T.replicate 4 " ")) bss t <- wrap "strong" term return (el "p" t : items) blockToXml h@Header{} = do -- should not occur after makeSections, except inside lists/blockquotes report $ BlockNotRendered h return [] blockToXml HorizontalRule = return [ el "empty-line" () ] blockToXml (Table _ blkCapt specs thead tbody tfoot) = do let (caption, aligns, _, headers, rows) = toLegacyTable blkCapt specs thead tbody tfoot hd <- if null headers then pure [] else (:[]) <$> mkrow "th" headers aligns bd <- mapM (\r -> mkrow "td" r aligns) rows c <- el "emphasis" <$> cMapM toXml caption return [el "table" (hd <> bd), el "p" c] where mkrow :: PandocMonad m => Text -> [[Block]] -> [Alignment] -> FBM m Content mkrow tag cells aligns' = el "tr" <$> mapM (mkcell tag) (zip cells aligns') -- mkcell :: PandocMonad m => Text -> ([Block], Alignment) -> FBM m Content mkcell tag (cell, align) = do cblocks <- cMapM blockToXml cell return $ el tag ([align_attr align], cblocks) -- align_attr a = Attr (QName "align" Nothing Nothing) (align_str a) align_str AlignLeft = "left" align_str AlignCenter = "center" align_str AlignRight = "right" align_str AlignDefault = "left" blockToXml (Figure _attr (Caption _ longcapt) body) = let alt = blocksToInlines longcapt addAlt (Image imgattr [] tgt) = Image imgattr alt tgt addAlt inln = inln in cMapM blockToXml (walk addAlt body) -- Replace plain text with paragraphs and add line break after paragraphs. -- It is used to convert plain text from tight list items to paragraphs. plainToPara :: [Block] -> [Block] plainToPara [] = [] plainToPara (Plain inlines : rest) = Para inlines : plainToPara rest plainToPara (Para inlines : rest) = Para inlines : HorizontalRule : plainToPara rest -- HorizontalRule will be converted to <empty-line /> plainToPara (p:rest) = p : plainToPara rest -- Replace plain text with paragraphs unPlain :: Block -> Block unPlain (Plain inlines) = Para inlines unPlain x = x -- Simulate increased indentation level. Will not really work -- for multi-line paragraphs. indentPrefix :: Text -> Block -> Block indentPrefix spacer = indentBlock where indentBlock (Plain ins) = Plain (Str spacer:ins) indentBlock (Para ins) = Para (Str spacer:ins) indentBlock (CodeBlock a s) = let s' = T.unlines . map (spacer<>) . T.lines $ s in CodeBlock a s' indentBlock (BlockQuote bs) = BlockQuote (map indent bs) indentBlock (Header l attr' ins) = Header l attr' (indentLines ins) indentBlock everythingElse = everythingElse -- indent every (explicit) line indentLines :: [Inline] -> [Inline] indentLines ins = let lns = split isLineBreak ins :: [[Inline]] in intercalate [LineBreak] $ map (Str spacer:) lns indent :: Block -> Block indent = indentPrefix spacer where -- indentation space spacer :: Text spacer = T.replicate 4 " " indentBlocks :: Text -> [Block] -> [Block] indentBlocks _ [] = [] indentBlocks prefix (x:xs) = indentPrefix prefix x : map (indentPrefix $ T.replicate (T.length prefix) " ") xs -- | Convert a Pandoc's Inline element to FictionBook XML representation. toXml :: PandocMonad m => Inline -> FBM m [Content] toXml (Str s) = return [txt s] toXml (Span _ ils) = cMapM toXml ils toXml (Emph ss) = list `liftM` wrap "emphasis" ss toXml (Underline ss) = list `liftM` wrap "underline" ss toXml (Strong ss) = list `liftM` wrap "strong" ss toXml (Strikeout ss) = list `liftM` wrap "strikethrough" ss toXml (Superscript ss) = list `liftM` wrap "sup" ss toXml (Subscript ss) = list `liftM` wrap "sub" ss toXml (SmallCaps ss) = cMapM toXml $ capitalize ss toXml (Quoted SingleQuote ss) = do -- FIXME: should be language-specific inner <- cMapM toXml ss return $ [txt "‘"] ++ inner ++ [txt "’"] toXml (Quoted DoubleQuote ss) = do inner <- cMapM toXml ss return $ [txt "“"] ++ inner ++ [txt "”"] toXml (Cite _ ss) = cMapM toXml ss -- FIXME: support citation styles toXml (Code _ s) = return [el "code" s] toXml Space = return [txt " "] toXml SoftBreak = return [txt "\n"] toXml LineBreak = return [txt "\n"] toXml (Math _ formula) = insertMath InlineImage formula toXml il@(RawInline _ _) = do report $ InlineNotRendered il return [] -- raw TeX and raw HTML are suppressed toXml (Link _ text (url,_)) = do ln_text <- cMapM toXml text return [ el "a" ( [ attr ("l","href") url ], ln_text) ] toXml img@Image{} = insertImage InlineImage img toXml (Note bs) = do fns <- footnotes `liftM` get let n = 1 + length fns let fn_id = footnoteID n fn_desc <- cMapM blockToXml bs modify (\s -> s { footnotes = (n, fn_id, fn_desc) : fns }) let fn_ref = txt $ "[" <> tshow n <> "]" return . list $ el "a" ( [ attr ("l","href") ("#" <> fn_id) , uattr "type" "note" ] , fn_ref ) insertMath :: PandocMonad m => ImageMode -> Text -> FBM m [Content] insertMath immode formula = do htmlMath <- fmap (writerHTMLMathMethod . writerOptions) get case htmlMath of WebTeX url -> do let alt = [Code nullAttr formula] let imgurl = url <> urlEncode formula let img = Image nullAttr alt (imgurl, "") insertImage immode img _ -> return [el "code" formula] insertImage :: PandocMonad m => ImageMode -> Inline -> FBM m [Content] insertImage immode (Image _ alt (url,ttl)) = do images <- imagesToFetch `liftM` get let n = 1 + length images let fname = "image" <> tshow n modify (\s -> s { imagesToFetch = (fname, url) : images }) let ttlattr = case (immode, T.null ttl) of (NormalImage, False) -> [ uattr "title" ttl ] _ -> [] return . list $ el "image" $ [ attr ("l","href") ("#" <> fname) , attr ("l","type") (tshow immode) , uattr "alt" (mconcat $ map plain alt) ] ++ ttlattr insertImage _ _ = error "unexpected inline instead of image" replaceImagesWithAlt :: [Text] -> Content -> Content replaceImagesWithAlt missingHrefs = everywhere (mkT go) where go c = if isMissing c then replaceNode c else c isMissing (Elem img@Element{}) = let imgAttrs = elAttribs img badAttrs = map (attr ("l","href")) missingHrefs in any (`elem` imgAttrs) badAttrs isMissing _ = False -- replaceNode :: Content -> Content replaceNode n@(Elem img@Element{}) = let attrs = elAttribs img alt = getAttrVal attrs (unqual "alt") imtype = getAttrVal attrs (qname "l" "type") in case (alt, imtype) of (Just alt', Just imtype') -> if imtype' == tshow NormalImage then el "p" alt' else txt alt' (Just alt', Nothing) -> txt alt' -- no type attribute _ -> n -- don't replace if alt text is not found replaceNode n = n -- getAttrVal :: [X.Attr] -> QName -> Maybe Text getAttrVal attrs name = case filter ((name ==) . attrKey) attrs of (a:_) -> Just (attrVal a) _ -> Nothing -- | Wrap all inlines with an XML tag (given its unqualified name). wrap :: PandocMonad m => Text -> [Inline] -> FBM m Content wrap tagname inlines = el tagname `liftM` cMapM toXml inlines -- " Create a singleton list. list :: a -> [a] list = (:[]) -- | Convert an 'Inline' to plaintext. plain :: Inline -> Text plain (Str s) = s plain (Emph ss) = mconcat $ map plain ss plain (Underline ss) = mconcat $ map plain ss plain (Span _ ss) = mconcat $ map plain ss plain (Strong ss) = mconcat $ map plain ss plain (Strikeout ss) = mconcat $ map plain ss plain (Superscript ss) = mconcat $ map plain ss plain (Subscript ss) = mconcat $ map plain ss plain (SmallCaps ss) = mconcat $ map plain ss plain (Quoted _ ss) = mconcat $ map plain ss plain (Cite _ ss) = mconcat $ map plain ss -- FIXME plain (Code _ s) = s plain Space = " " plain SoftBreak = " " plain LineBreak = "\n" plain (Math _ s) = s plain (RawInline _ _) = "" plain (Link _ text (url,_)) = mconcat (map plain text ++ [" <", url, ">"]) plain (Image _ alt _) = mconcat $ map plain alt plain (Note _) = "" -- FIXME -- | Create an XML element. el :: (Node t) => Text -- ^ unqualified element name -> t -- ^ node contents -> Content -- ^ XML content el name cs = Elem $ unode name cs -- | Put empty lines around content spaceBeforeAfter :: [Content] -> [Content] spaceBeforeAfter cs = let emptyline = el "empty-line" () in [emptyline] ++ cs ++ [emptyline] -- | Create a plain-text XML content. txt :: Text -> Content txt s = Text $ CData CDataText s Nothing -- | Create an XML attribute with an unqualified name. uattr :: Text -> Text -> X.Attr uattr name = Attr (unqual name) -- | Create an XML attribute with a qualified name from given namespace. attr :: (Text, Text) -> Text -> X.Attr attr (ns, name) = Attr (qname ns name) -- | Qualified name qname :: Text -> Text -> QName qname ns name = QName name Nothing (Just ns) -- | Abbreviation for 'concatMap'. cMap :: (a -> [b]) -> [a] -> [b] cMap = concatMap -- | Monadic equivalent of 'concatMap'. cMapM :: (Monad m) => (a -> m [b]) -> [a] -> m [b] cMapM f xs = concat `liftM` mapM f xs �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/GridTable.hs���������������������������������������������������0000644�0000000�0000000�00000014407�07346545000�017730� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE TupleSections #-} {- | Module : Text.Pandoc.Writers.GridTable Copyright : © 2020-2023 Albert Krewinkel License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel <albert@zeitkraut.de> Grid representation of pandoc tables. The structures in this module allow to describe 'Text.Pandoc.Definition.Table' elements without loss of information. However, they are simpler to use when the grid layout of a table must be known. The "grid tables" handled here are conceptually similar to grid tables in reStructuredText and Markdown, but are more general. -} module Text.Pandoc.Writers.GridTable ( Table (..) , GridCell (..) , RowIndex (..) , ColIndex (..) , CellIndex , Part (..) , toTable , rowArray ) where import Control.Monad (forM_) import Control.Monad.ST import Data.Array import Data.Array.MArray import Data.Array.ST import Data.Maybe (listToMaybe) import Data.STRef import Text.Pandoc.Definition hiding (Table) import qualified Text.Pandoc.Builder as B -- | A grid cell contains either a real table cell, or is the -- continuation of a column or row-spanning cell. In the latter case, -- the index of the continued cell is provided. data GridCell = ContentCell Attr Alignment RowSpan ColSpan [Block] | ContinuationCell CellIndex | UnassignedCell deriving (Show) -- | Row index in a table part. newtype RowIndex = RowIndex Int deriving (Enum, Eq, Ix, Ord, Show) -- | Column index in a table part. newtype ColIndex = ColIndex Int deriving (Enum, Eq, Ix, Ord, Show) -- | Index to a cell in a table part. type CellIndex = (RowIndex, ColIndex) -- | Cells are placed on a grid. Row attributes are stored in a separate -- array. data Part = Part { partAttr :: Attr , partCellArray :: Array (RowIndex,ColIndex) GridCell , partRowAttrs :: Array RowIndex Attr } data Table = Table { tableAttr :: Attr , tableCaption :: Caption , tableColSpecs :: Array ColIndex ColSpec , tableRowHeads :: RowHeadColumns , tableHead :: Part , tableBodies :: [Part] , tableFoot :: Part } toTable :: B.Attr -> B.Caption -> [B.ColSpec] -> B.TableHead -> [B.TableBody] -> B.TableFoot -> Table toTable attr caption colSpecs thead tbodies tfoot = Table attr caption colSpecs' rowHeads thGrid tbGrids tfGrid where colSpecs' = listArray (ColIndex 1, ColIndex $ length colSpecs) colSpecs rowHeads = case listToMaybe tbodies of Nothing -> RowHeadColumns 0 Just (TableBody _attr rowHeadCols _headerRows _rows) -> rowHeadCols thGrid = let (TableHead headAttr rows) = thead in rowsToPart headAttr rows tbGrids = map bodyToGrid tbodies tfGrid = let (TableFoot footAttr rows) = tfoot in rowsToPart footAttr rows bodyToGrid (TableBody bodyAttr _rowHeadCols headRows rows) = rowsToPart bodyAttr (headRows ++ rows) data BuilderCell = FilledCell GridCell | FreeCell fromBuilderCell :: BuilderCell -> GridCell fromBuilderCell = \case FilledCell c -> c FreeCell -> UnassignedCell rowsToPart :: Attr -> [B.Row] -> Part rowsToPart attr = \case [] -> Part attr (listArray ((RowIndex 1, ColIndex 1), (RowIndex 0, ColIndex 0)) []) (listArray (RowIndex 1, RowIndex 0) []) rows@(Row _attr firstRow:_) -> let nrows = length rows ncols = sum $ map (\(Cell _ _ _ (ColSpan cs) _) -> cs) firstRow gbounds = ((RowIndex 1, ColIndex 1), (RowIndex nrows, ColIndex ncols)) mutableGrid :: ST s (STArray s CellIndex GridCell) mutableGrid = do grid <- newArray gbounds FreeCell ridx <- newSTRef (RowIndex 1) forM_ rows $ \(Row _attr cells) -> do cidx <- newSTRef (ColIndex 1) forM_ cells $ \(Cell cellAttr align rs cs blks) -> do ridx' <- readSTRef ridx let nextFreeInRow colindex@(ColIndex c) = do let idx = (ridx', colindex) if gbounds `inRange` idx then readArray grid idx >>= \case FreeCell -> pure (Just colindex) _ -> nextFreeInRow $ ColIndex (c + 1) else pure Nothing -- invalid table mcidx' <- readSTRef cidx >>= nextFreeInRow -- If there is a FreeCell in the current row, then fill it -- with the current cell and mark cells in this and the -- following rows as continuation cells if necessary. -- -- Just skip the current table cell if no FreeCell was -- found; this can only happen with invalid tables. case mcidx' of Nothing -> pure () -- no FreeCell left in row -- skip cell Just cidx' -> do writeArray grid (ridx', cidx') . FilledCell $ ContentCell cellAttr align rs cs blks forM_ (continuationIndices ridx' cidx' rs cs) $ \idx -> do writeArray grid idx . FilledCell $ ContinuationCell (ridx', cidx') -- go to new column writeSTRef cidx cidx' -- go to next row modifySTRef ridx (incrRowIndex 1) -- Swap BuilderCells with normal GridCells. mapArray fromBuilderCell grid in Part { partCellArray = runSTArray mutableGrid , partRowAttrs = listArray (RowIndex 1, RowIndex nrows) $ map (\(Row rowAttr _) -> rowAttr) rows , partAttr = attr } continuationIndices :: RowIndex -> ColIndex -> RowSpan -> ColSpan -> [CellIndex] continuationIndices (RowIndex ridx) (ColIndex cidx) rowspan colspan = let (RowSpan rs) = rowspan (ColSpan cs) = colspan in [ (RowIndex r, ColIndex c) | r <- [ridx..(ridx + rs - 1)] , c <- [cidx..(cidx + cs - 1)] , (r, c) /= (ridx, cidx)] rowArray :: RowIndex -> Array CellIndex GridCell -> Array ColIndex GridCell rowArray ridx grid = let ((_minRidx, minCidx), (_maxRidx, maxCidx)) = bounds grid in ixmap (minCidx, maxCidx) (ridx,) grid incrRowIndex :: RowSpan -> RowIndex -> RowIndex incrRowIndex (RowSpan n) (RowIndex r) = RowIndex $ r + n ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/HTML.hs��������������������������������������������������������0000644�0000000�0000000�00000227220�07346545000�016636� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE BangPatterns #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE MultiWayIf #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE ViewPatterns #-} {- | Module : Text.Pandoc.Writers.HTML Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable Conversion of 'Pandoc' documents to HTML. -} module Text.Pandoc.Writers.HTML ( writeHtml4, writeHtml4String, writeHtml5, writeHtml5String, writeHtmlStringForEPUB, writeS5, writeSlidy, writeSlideous, writeDZSlides, writeRevealJs, tagWithAttributes ) where import Control.Monad.State.Strict ( StateT, MonadState(get), gets, modify, evalStateT ) import Control.Monad ( liftM, when, foldM, unless ) import Control.Monad.Trans ( MonadTrans(lift) ) import Data.Char (ord) import Data.List (intercalate, intersperse, partition, delete, (\\), foldl') import Data.List.NonEmpty (NonEmpty((:|))) import Data.Containers.ListUtils (nubOrd) import Data.Maybe (fromMaybe, isJust, isNothing) import qualified Data.Set as Set import Data.Text (Text) import qualified Data.Text as T import qualified Data.Text.Lazy as TL import Network.URI (URI (..), parseURIReference) import Numeric (showHex) import Text.DocLayout (render, literal, Doc) import Text.Blaze.Internal (MarkupM (Empty), customLeaf, customParent) import Text.DocTemplates (FromContext (lookupContext), Context (..)) import Text.Blaze.Html hiding (contents) import Text.Pandoc.Definition import Text.Pandoc.Highlighting (formatHtmlBlock, formatHtml4Block, formatHtmlInline, highlight, styleToCss) import Text.Pandoc.ImageSize import Text.Pandoc.Options import Text.Pandoc.Shared import Text.Pandoc.Slides import Text.Pandoc.Templates (renderTemplate) import Text.Pandoc.Walk import Text.Pandoc.Writers.Math import Text.Pandoc.Writers.Shared import qualified Text.Pandoc.Writers.AnnotatedTable as Ann import Text.Pandoc.URI (urlEncode) import Text.Pandoc.XML (escapeStringForXML, fromEntities, toEntities, html5Attributes, html4Attributes, rdfaAttributes) import qualified Text.Blaze.XHtml5 as H5 import qualified Text.Blaze.XHtml5.Attributes as A5 import Control.Monad.Except (throwError) import System.FilePath (takeBaseName) import Text.Blaze.Html.Renderer.Text (renderHtml) import qualified Text.Blaze.XHtml1.Transitional as H import qualified Text.Blaze.XHtml1.Transitional.Attributes as A import Text.Pandoc.Class.PandocMonad (PandocMonad, report) import Text.Pandoc.Translations (Term(Abstract), translateTerm) import Text.Pandoc.Class.PandocPure (runPure) import Text.Pandoc.Error import Text.Pandoc.Logging import Text.Pandoc.MIME (mediaCategory) import Text.Pandoc.Writers.Blaze (layoutMarkup) import Text.TeXMath import Text.XML.Light (elChildren, unode, unqual) import qualified Text.XML.Light as XML import Text.XML.Light.Output import Data.String (fromString) data WriterState = WriterState { stNotes :: [Html] -- ^ List of notes , stEmittedNotes :: Int -- ^ How many notes we've already pushed out to the HTML , stMath :: Bool -- ^ Math is used in document , stQuotes :: Bool -- ^ <q> tag is used , stHighlighting :: Bool -- ^ Syntax highlighting is used , stHtml5 :: Bool -- ^ Use HTML5 , stEPUBVersion :: Maybe EPUBVersion -- ^ EPUB version if for epub , stSlideVariant :: HTMLSlideVariant , stSlideLevel :: Int -- ^ Slide level , stInSection :: Bool -- ^ Content is in a section (revealjs) , stCodeBlockNum :: Int -- ^ Number of code block , stCsl :: Bool -- ^ Has CSL references , stCslEntrySpacing :: Maybe Int -- ^ CSL entry spacing , stBlockLevel :: Int -- ^ Current block depth, excluding section divs } defaultWriterState :: WriterState defaultWriterState = WriterState {stNotes= [], stEmittedNotes = 0, stMath = False, stQuotes = False, stHighlighting = False, stHtml5 = False, stEPUBVersion = Nothing, stSlideVariant = NoSlides, stSlideLevel = 1, stInSection = False, stCodeBlockNum = 0, stCsl = False, stCslEntrySpacing = Nothing, stBlockLevel = 0} -- Helpers to render HTML with the appropriate function. strToHtml :: Text -> Html strToHtml t | T.any isSpecial t = let !x = foldl' go mempty $ T.groupBy samegroup t in x | otherwise = toHtml t where samegroup c d = d == '\xFE0E' || not (isSpecial c || isSpecial d) isSpecial '\'' = True isSpecial '"' = True isSpecial c = needsVariationSelector c go h "\'" = h <> preEscapedString "\'" go h "\"" = h <> preEscapedString "\"" go h txt | T.length txt == 1 && T.all needsVariationSelector txt = h <> preEscapedString (T.unpack txt <> "\xFE0E") go h txt = h <> toHtml txt -- See #5469: this prevents iOS from substituting emojis. needsVariationSelector :: Char -> Bool needsVariationSelector '↩' = True needsVariationSelector '↔' = True needsVariationSelector _ = False -- | Hard linebreak. nl :: Html nl = preEscapedString "\n" -- | Convert Pandoc document to Html 5 string. writeHtml5String :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeHtml5String = writeHtmlString' defaultWriterState{ stHtml5 = True } -- | Convert Pandoc document to Html 5 structure. writeHtml5 :: PandocMonad m => WriterOptions -> Pandoc -> m Html writeHtml5 = writeHtml' defaultWriterState{ stHtml5 = True } -- | Convert Pandoc document to Html 4 string. writeHtml4String :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeHtml4String opts = writeHtmlString' defaultWriterState{ stHtml5 = False } opts . ensureValidXmlIdentifiers -- | Convert Pandoc document to Html 4 structure. writeHtml4 :: PandocMonad m => WriterOptions -> Pandoc -> m Html writeHtml4 opts = writeHtml' defaultWriterState{ stHtml5 = False } opts . ensureValidXmlIdentifiers -- | Convert Pandoc document to Html appropriate for an epub version. writeHtmlStringForEPUB :: PandocMonad m => EPUBVersion -> WriterOptions -> Pandoc -> m Text writeHtmlStringForEPUB version o = writeHtmlString' defaultWriterState{ stHtml5 = version == EPUB3, stEPUBVersion = Just version } o{ writerWrapText = WrapNone } -- we don't use ensureValidXmlIdentifiers here because we -- do that in the EPUB writer -- | Convert Pandoc document to Reveal JS HTML slide show. writeRevealJs :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeRevealJs = writeHtmlSlideShow' RevealJsSlides -- | Convert Pandoc document to S5 HTML slide show. writeS5 :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeS5 opts = writeHtmlSlideShow' S5Slides opts . ensureValidXmlIdentifiers -- | Convert Pandoc document to Slidy HTML slide show. writeSlidy :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeSlidy opts = writeHtmlSlideShow' SlidySlides opts . ensureValidXmlIdentifiers -- | Convert Pandoc document to Slideous HTML slide show. writeSlideous :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeSlideous opts = writeHtmlSlideShow' SlideousSlides opts . ensureValidXmlIdentifiers -- | Convert Pandoc document to DZSlides HTML slide show. writeDZSlides :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeDZSlides opts = writeHtmlSlideShow' DZSlides opts writeHtmlSlideShow' :: PandocMonad m => HTMLSlideVariant -> WriterOptions -> Pandoc -> m Text writeHtmlSlideShow' variant = writeHtmlString' defaultWriterState{ stSlideVariant = variant , stHtml5 = case variant of RevealJsSlides -> True S5Slides -> False SlidySlides -> False DZSlides -> True SlideousSlides -> False NoSlides -> False } renderHtml' :: Html -> Text renderHtml' = TL.toStrict . renderHtml writeHtmlString' :: PandocMonad m => WriterState -> WriterOptions -> Pandoc -> m Text writeHtmlString' st opts d = do (body, context) <- evalStateT (pandocToHtml opts d) st let colwidth = case writerWrapText opts of WrapAuto -> Just (writerColumns opts) _ -> Nothing (if writerPreferAscii opts then toEntities else id) <$> case writerTemplate opts of Nothing -> return $ case colwidth of Nothing -> renderHtml' body -- optimization, skip layout Just cols -> render (Just cols) $ layoutMarkup body Just tpl -> do -- warn if empty lang when (isNothing (getField "lang" context :: Maybe Text)) $ report NoLangSpecified -- check for empty pagetitle (context' :: Context Text) <- case getField "pagetitle" context of Just (s :: Text) | not (T.null s) -> return context _ -> do let fallback = T.pack $ case lookupContext "sourcefile" (writerVariables opts) of Nothing -> "Untitled" Just [] -> "Untitled" Just (x:_) -> takeBaseName $ T.unpack x report $ NoTitleElement fallback return $ resetField "pagetitle" (literal fallback) context return $ render colwidth $ renderTemplate tpl (defField "body" (layoutMarkup body) context') writeHtml' :: PandocMonad m => WriterState -> WriterOptions -> Pandoc -> m Html writeHtml' st opts d = case writerTemplate opts of Just _ -> preEscapedText <$> writeHtmlString' st opts d Nothing | writerPreferAscii opts -> preEscapedText <$> writeHtmlString' st opts d | otherwise -> do (body, _) <- evalStateT (pandocToHtml opts d) st return body -- result is (title, authors, date, toc, body, new variables) pandocToHtml :: PandocMonad m => WriterOptions -> Pandoc -> StateT WriterState m (Html, Context Text) pandocToHtml opts (Pandoc meta blocks) = do lift $ setupTranslations meta let slideLevel = fromMaybe (getSlideLevel blocks) $ writerSlideLevel opts modify $ \st -> st{ stSlideLevel = slideLevel } metadata <- metaToContext opts (fmap layoutMarkup . blockListToHtml opts) (fmap layoutMarkup . inlineListToHtml opts) meta let stringifyHTML = escapeStringForXML . stringify let authsMeta = map (literal . stringifyHTML) $ docAuthors meta let dateMeta = stringifyHTML $ docDate meta let descriptionMeta = literal $ escapeStringForXML $ lookupMetaString "description" meta slideVariant <- gets stSlideVariant abstractTitle <- translateTerm Abstract let sects = adjustNumbers opts $ makeSections (writerNumberSections opts) Nothing $ if slideVariant == NoSlides then blocks else prepSlides slideLevel blocks toc <- if writerTableOfContents opts && slideVariant /= S5Slides then fmap layoutMarkup <$> tableOfContents opts sects else return Nothing blocks' <- blockListToHtml opts sects notes <- do -- make the st private just to be safe, since we modify it right afterwards st <- get if null (stNotes st) then return mempty else do notes <- footnoteSection EndOfDocument (stEmittedNotes st + 1) (reverse (stNotes st)) modify (\st' -> st'{ stNotes = mempty, stEmittedNotes = stEmittedNotes st' + length (stNotes st') }) return notes st <- get let thebody = blocks' >> notes let math = layoutMarkup $ case writerHTMLMathMethod opts of MathJax url | slideVariant /= RevealJsSlides -> -- mathjax is handled via a special plugin in revealjs H.script ! A.src (toValue url) ! A.type_ "text/javascript" $ case slideVariant of SlideousSlides -> preEscapedString "MathJax.Hub.Queue([\"Typeset\",MathJax.Hub]);" _ -> mempty KaTeX url -> do H.script ! A.defer mempty ! A.src (toValue $ url <> "katex.min.js") $ mempty nl let katexFlushLeft = case lookupContext "classoption" metadata of Just clsops | "fleqn" `elem` (clsops :: [Doc Text]) -> "true" _ -> "false" H.script $ text $ T.unlines [ "document.addEventListener(\"DOMContentLoaded\", function () {" , " var mathElements = document.getElementsByClassName(\"math\");" , " var macros = [];" , " for (var i = 0; i < mathElements.length; i++) {" , " var texText = mathElements[i].firstChild;" , " if (mathElements[i].tagName == \"SPAN\") {" , " katex.render(texText.data, mathElements[i], {" , " displayMode: mathElements[i].classList.contains('display')," , " throwOnError: false," , " macros: macros," , " fleqn: " <> katexFlushLeft , " });" , "}}});" ] nl H.link ! A.rel "stylesheet" ! A.href (toValue $ url <> "katex.min.css") _ -> mempty let mCss :: Maybe [Text] = lookupContext "css" metadata let context :: Context Text context = (if stHighlighting st then case writerHighlightStyle opts of Just sty -> defField "highlighting-css" (literal $ T.pack $ styleToCss sty) Nothing -> id else id) . (if stCsl st then defField "csl-css" True . (case stCslEntrySpacing st of Nothing -> id Just 0 -> id Just n -> defField "csl-entry-spacing" (literal $ tshow n <> "em")) else id) . (if stMath st then defField "math" math else id) . defField "abstract-title" abstractTitle . (case writerHTMLMathMethod opts of MathJax u -> defField "mathjax" True . defField "mathjaxurl" (literal $ T.takeWhile (/='?') u) _ -> defField "mathjax" False) . (case writerHTMLMathMethod opts of PlainMath -> defField "displaymath-css" True WebTeX _ -> defField "displaymath-css" True _ -> id) . (if slideVariant == RevealJsSlides then -- set boolean options explicitly, since -- template can't distinguish False/undefined defField "controls" True . defField "controlsTutorial" True . defField "controlsLayout" ("bottom-right" :: Doc Text) . defField "controlsBackArrows" ("faded" :: Doc Text) . defField "progress" True . defField "slideNumber" False . defField "showSlideNumber" ("all" :: Doc Text) . defField "hashOneBasedIndex" False . defField "hash" True . defField "respondToHashChanges" True . defField "history" False . defField "keyboard" True . defField "overview" True . defField "disableLayout" False . defField "center" True . defField "touch" True . defField "loop" False . defField "rtl" False . defField "navigationMode" ("default" :: Doc Text) . defField "shuffle" False . defField "fragments" True . defField "fragmentInURL" True . defField "embedded" False . defField "help" True . defField "pause" True . defField "showNotes" False . defField "autoPlayMedia" ("null" :: Doc Text) . defField "preloadIframes" ("null" :: Doc Text) . defField "autoSlide" ("0" :: Doc Text) . defField "autoSlideStoppable" True . defField "autoSlideMethod" ("null" :: Doc Text) . defField "defaultTiming" ("null" :: Doc Text) . defField "mouseWheel" False . defField "display" ("block" :: Doc Text) . defField "hideInactiveCursor" True . defField "hideCursorTime" ("5000" :: Doc Text) . defField "previewLinks" False . defField "transition" ("slide" :: Doc Text) . defField "transitionSpeed" ("default" :: Doc Text) . defField "backgroundTransition" ("fade" :: Doc Text) . defField "viewDistance" ("3" :: Doc Text) . defField "mobileViewDistance" ("2" :: Doc Text) else id) . defField "document-css" (isNothing mCss && slideVariant == NoSlides) . defField "quotes" (stQuotes st) . -- for backwards compatibility we populate toc -- with the contents of the toc, rather than a -- boolean: maybe id (defField "toc") toc . maybe id (defField "table-of-contents") toc . defField "author-meta" authsMeta . maybe id (defField "date-meta" . literal) (normalizeDate dateMeta) . defField "description-meta" descriptionMeta . defField "pagetitle" (literal . stringifyHTML . docTitle $ meta) . defField "idprefix" (literal $ writerIdentifierPrefix opts) . -- these should maybe be set in pandoc.hs defField "slidy-url" ("https://www.w3.org/Talks/Tools/Slidy2" :: Doc Text) . defField "slideous-url" ("slideous" :: Doc Text) . defField "revealjs-url" ("https://unpkg.com/reveal.js@^4/" :: Doc Text) $ defField "s5-url" ("s5/default" :: Doc Text) . defField "html5" (stHtml5 st) $ metadata return (thebody, context) -- | Like Text.XHtml's identifier, but adds the writerIdentifierPrefix prefixedId :: WriterOptions -> Text -> Attribute prefixedId opts s = case s of "" -> mempty _ -> A.id $ toValue $ writerIdentifierPrefix opts <> s toList :: PandocMonad m => (Html -> Html) -> WriterOptions -> [Html] -> StateT WriterState m Html toList listop opts items = do slideVariant <- gets stSlideVariant return $ if writerIncremental opts then if slideVariant /= RevealJsSlides then listop (mconcat items) ! A.class_ "incremental" else listop $ mconcat $ map (! A.class_ "fragment") items else listop $ mconcat items unordList :: PandocMonad m => WriterOptions -> [Html] -> StateT WriterState m Html unordList opts = toList H.ul opts . toListItems ordList :: PandocMonad m => WriterOptions -> [Html] -> StateT WriterState m Html ordList opts = toList H.ol opts . toListItems defList :: PandocMonad m => WriterOptions -> [Html] -> StateT WriterState m Html defList opts items = toList H.dl opts (items ++ [nl]) isTaskListItem :: [Block] -> Bool isTaskListItem (Plain (Str "☐":Space:_):_) = True isTaskListItem (Plain (Str "☒":Space:_):_) = True isTaskListItem (Para (Str "☐":Space:_):_) = True isTaskListItem (Para (Str "☒":Space:_):_) = True isTaskListItem _ = False listItemToHtml :: PandocMonad m => WriterOptions -> [Block] -> StateT WriterState m Html listItemToHtml opts bls | Plain (Str "☐":Space:is) : bs <- bls = taskListItem False id is bs | Plain (Str "☒":Space:is) : bs <- bls = taskListItem True id is bs | Para (Str "☐":Space:is) : bs <- bls = taskListItem False H.p is bs | Para (Str "☒":Space:is) : bs <- bls = taskListItem True H.p is bs | otherwise = blockListToHtml opts bls where taskListItem checked constr is bs = do let checkbox = if checked then checkbox' ! A.checked "" else checkbox' checkbox' = H.input ! A.type_ "checkbox" isContents <- inlineListToHtml opts is bsContents <- blockListToHtml opts bs return $ constr (H.label (checkbox >> isContents)) >> (if null bs then mempty else nl) >> bsContents -- | Construct table of contents from list of elements. tableOfContents :: PandocMonad m => WriterOptions -> [Block] -> StateT WriterState m (Maybe Html) tableOfContents _ [] = return Nothing tableOfContents opts sects = do -- in reveal.js, we need #/apples, not #apples: slideVariant <- gets stSlideVariant let opts' = case slideVariant of RevealJsSlides -> opts{ writerIdentifierPrefix = "/" <> writerIdentifierPrefix opts } _ -> opts case toTableOfContents opts sects of bl@(BulletList (_:_)) -> Just <$> blockToHtml opts' bl _ -> return Nothing -- | Convert list of Note blocks to a footnote <div>. -- Assumes notes are sorted. footnoteSection :: PandocMonad m => ReferenceLocation -> Int -> [Html] -> StateT WriterState m Html footnoteSection refLocation startCounter notes = do html5 <- gets stHtml5 slideVariant <- gets stSlideVariant let hrtag = if refLocation /= EndOfBlock then (if html5 then H5.hr else H.hr) <> nl else mempty let additionalClassName = case refLocation of EndOfBlock -> "footnotes-end-of-block" EndOfDocument -> "footnotes-end-of-document" EndOfSection -> "footnotes-end-of-section" let className = "footnotes " <> additionalClassName epubVersion <- gets stEPUBVersion let container x | html5 , epubVersion == Just EPUB3 = H5.section ! A.id "footnotes" ! A.class_ className ! customAttribute "epub:type" "footnotes" $ x | html5 , refLocation == EndOfDocument , slideVariant == RevealJsSlides -- need a section for a new slide: = H5.section ! A5.id "footnotes" ! A5.class_ className ! A5.role "doc-endnotes" $ x | html5 = H5.aside ! A5.id "footnotes" ! A5.class_ className ! A5.role "doc-endnotes" $ x | slideVariant /= NoSlides = H.div ! A.class_ "footnotes slide" $ x | otherwise = H.div ! A.class_ className $ x return $ if null notes then mempty else do nl container $ do nl hrtag -- Keep the previous output exactly the same if we don't -- have multiple notes sections case epubVersion of Just _ -> mconcat notes Nothing | startCounter == 1 -> (H.ol (nl >> mconcat notes)) >> nl Nothing -> (H.ol ! A.start (fromString (show startCounter)) $ nl >> mconcat notes) >> nl -- | Parse a mailto link; return Just (name, domain) or Nothing. parseMailto :: Text -> Maybe (Text, Text) parseMailto s = case T.break (==':') s of (xs,T.uncons -> Just (':',addr)) | T.toLower xs == "mailto" -> do let (name', rest) = T.span (/='@') addr let domain = T.drop 1 rest return (name', domain) _ -> Prelude.fail "not a mailto: URL" -- | Obfuscate a "mailto:" link. obfuscateLink :: PandocMonad m => WriterOptions -> Attr -> Html -> Text -> StateT WriterState m Html obfuscateLink opts attr txt s | writerEmailObfuscation opts == NoObfuscation = addAttrs opts attr $ H.a ! A.href (toValue s) $ txt obfuscateLink opts attr (TL.toStrict . renderHtml -> txt) s = let meth = writerEmailObfuscation opts s' = T.toLower (T.take 7 s) <> T.drop 7 s in case parseMailto s' of (Just (name', domain)) -> let domain' = T.replace "." " dot " domain at' = obfuscateChar '@' (linkText, altText) = if txt == T.drop 7 s' -- autolink then ("e", name' <> " at " <> domain') else ("'" <> obfuscateString txt <> "'", txt <> " (" <> name' <> " at " <> domain' <> ")") (_, classNames, _) = attr classNamesStr = T.concat $ map (" "<>) classNames in case meth of ReferenceObfuscation -> -- need to use preEscapedString or &'s are escaped to & in URL return $ preEscapedText $ "<a href=\"" <> obfuscateString s' <> "\" class=\"email\">" <> obfuscateString txt <> "</a>" JavascriptObfuscation -> return $ (H.script ! A.type_ "text/javascript" $ preEscapedText ("\n<!--\nh='" <> obfuscateString domain <> "';a='" <> at' <> "';n='" <> obfuscateString name' <> "';e=n+a+h;\n" <> "document.write('<a h'+'ref'+'=\"ma'+'ilto'+':'+e+'\" clas'+'s=\"em' + 'ail" <> classNamesStr <> "\">'+" <> linkText <> "+'<\\/'+'a'+'>');\n// -->\n")) >> H.noscript (preEscapedText $ obfuscateString altText) _ -> throwError $ PandocSomeError $ "Unknown obfuscation method: " <> tshow meth _ -> addAttrs opts attr $ H.a ! A.href (toValue s) $ toHtml txt -- malformed email -- | Obfuscate character as entity. obfuscateChar :: Char -> Text obfuscateChar char = let num = ord char numstr = if even num then show num else "x" <> showHex num "" in "&#" <> T.pack numstr <> ";" -- | Obfuscate string using entities. obfuscateString :: Text -> Text obfuscateString = T.concatMap obfuscateChar . fromEntities -- | Create HTML tag with attributes. tagWithAttributes :: WriterOptions -> Bool -- ^ True for HTML5 -> Bool -- ^ True if self-closing tag -> Text -- ^ Tag text -> Attr -- ^ Pandoc style tag attributes -> Text tagWithAttributes opts html5 selfClosing tagname attr = let mktag = (TL.toStrict . renderHtml <$> evalStateT (addAttrs opts attr (customLeaf (textTag tagname) selfClosing)) defaultWriterState{ stHtml5 = html5 }) in case runPure mktag of Left _ -> mempty Right t -> t addAttrs :: PandocMonad m => WriterOptions -> Attr -> Html -> StateT WriterState m Html addAttrs opts attr h = foldl' (!) h <$> attrsToHtml opts attr toAttrs :: PandocMonad m => [(Text, Text)] -> StateT WriterState m [Attribute] toAttrs kvs = do html5 <- gets stHtml5 mbEpubVersion <- gets stEPUBVersion reverse . snd <$> foldM (go html5 mbEpubVersion) (Set.empty, []) kvs where go html5 mbEpubVersion (keys, attrs) (k,v) = do if k `Set.member` keys then do report $ DuplicateAttribute k v return (keys, attrs) else return (Set.insert k keys, addAttr html5 mbEpubVersion k v attrs) addAttr html5 mbEpubVersion x y | T.null x = id -- see #7546 | html5 = if x `Set.member` (html5Attributes <> rdfaAttributes) || T.any (== ':') x -- e.g. epub: namespace || "data-" `T.isPrefixOf` x || "aria-" `T.isPrefixOf` x then (customAttribute (textTag x) (toValue y) :) else (customAttribute (textTag ("data-" <> x)) (toValue y) :) | mbEpubVersion == Just EPUB2 , not (x `Set.member` (html4Attributes <> rdfaAttributes) || "xml:" `T.isPrefixOf` x) = id | otherwise = (customAttribute (textTag x) (toValue y) :) attrsToHtml :: PandocMonad m => WriterOptions -> Attr -> StateT WriterState m [Attribute] attrsToHtml opts (id',classes',keyvals) = do attrs <- toAttrs keyvals let classes'' = nubOrd $ filter (not . T.null) classes' return $ [prefixedId opts id' | not (T.null id')] ++ [A.class_ (toValue $ T.unwords classes'') | not (null classes'')] ++ attrs imgAttrsToHtml :: PandocMonad m => WriterOptions -> Attr -> StateT WriterState m [Attribute] imgAttrsToHtml opts attr = do attrsToHtml opts (ident,cls, consolidateStyles (kvs' ++ dimensionsToAttrList attr)) where (ident,cls,kvs) = attr kvs' = filter isNotDim kvs isNotDim ("width", _) = False isNotDim ("height", _) = False isNotDim _ = True consolidateStyles :: [(Text, Text)] -> [(Text, Text)] consolidateStyles xs = case partition isStyle xs of ([], _) -> xs (ss, rest) -> ("style", T.intercalate ";" $ map snd ss) : rest isStyle ("style", _) = True isStyle _ = False dimensionsToAttrList :: Attr -> [(Text, Text)] dimensionsToAttrList attr = go Width ++ go Height where go dir = case dimension dir attr of (Just (Pixel a)) -> [(tshow dir, tshow a)] (Just x) -> [("style", tshow dir <> ":" <> tshow x)] Nothing -> [] adjustNumbers :: WriterOptions -> [Block] -> [Block] adjustNumbers opts doc = if all (==0) (writerNumberOffset opts) then doc else walk go doc where go (Div (ident,"section":classes,kvs) lst) = Div (ident,"section":classes,map fixnum kvs) lst go (Header level (ident,classes,kvs) lst) = Header level (ident,classes,map fixnum kvs) lst go x = x fixnum ("number",num) = ("number", showSecNum $ zipWith (+) (writerNumberOffset opts ++ repeat 0) (map (fromMaybe 0 . safeRead) $ T.split (=='.') num)) fixnum x = x showSecNum = T.intercalate "." . map tshow blockToHtmlInner :: PandocMonad m => WriterOptions -> Block -> StateT WriterState m Html blockToHtmlInner opts (Plain lst) = inlineListToHtml opts lst blockToHtmlInner opts (Para lst) = do slideVariant <- gets stSlideVariant case (slideVariant, lst) of (RevealJsSlides, [Image attr@(_,classes,_) txt (src,tit)]) | "r-stretch" `elem` classes -> do -- a "stretched" image in reveal.js must be a direct child -- of the slide container inlineToHtml opts (Image attr txt (src, tit)) _ -> do contents <- inlineListToHtml opts lst case contents of Empty _ | not (isEnabled Ext_empty_paragraphs opts) -> return mempty _ -> return $ H.p contents blockToHtmlInner opts (LineBlock lns) = if writerWrapText opts == WrapNone then blockToHtml opts $ linesToPara lns else do htmlLines <- inlineListToHtml opts $ intercalate [LineBreak] lns return $ H.div ! A.class_ "line-block" $ htmlLines blockToHtmlInner opts (Div (ident, "section":dclasses, dkvs) (Header level hattr@(hident,hclasses,hkvs) ils : xs)) = do slideVariant <- gets stSlideVariant slideLevel <- gets stSlideLevel let slide = slideVariant /= NoSlides && level <= slideLevel {- DROPPED old fix for #5168 here -} html5 <- gets stHtml5 let titleSlide = slide && level < slideLevel let level' = if level <= slideLevel && slideVariant == SlidySlides then 1 -- see #3566 else level header' <- if ils == [Str "\0"] -- marker for hrule then return mempty else blockToHtml opts (Header level' hattr ils) let isSec (Div (_,"section":_,_) _) = True isSec (Div _ zs) = any isSec zs isSec _ = False let isPause (Para [Str ".",Space,Str ".",Space,Str "."]) = True isPause _ = False let fragmentClass = case slideVariant of RevealJsSlides -> "fragment" _ -> "incremental" let inDiv' zs = RawBlock (Format "html") ("<div class=\"" <> fragmentClass <> "\">") : (zs ++ [RawBlock (Format "html") "</div>"]) let breakOnPauses zs | slide = case splitBy isPause zs of [] -> [] y:ys -> y ++ concatMap inDiv' ys | otherwise = zs let (titleBlocks, innerSecs) = if titleSlide -- title slides have no content of their own then let (as, bs) = break isSec xs in (breakOnPauses as, bs) else ([], breakOnPauses xs) let secttag = if html5 then H5.section else H.div titleContents <- blockListToHtml opts titleBlocks inSection <- gets stInSection innerContents <- do modify $ \st -> st{ stInSection = True } res <- blockListToHtml opts innerSecs modify $ \st -> st{ stInSection = inSection } notes <- gets stNotes let emitNotes = writerReferenceLocation opts == EndOfSection && not (null notes) if emitNotes then do st <- get renderedNotes <- footnoteSection (writerReferenceLocation opts) (stEmittedNotes st + 1) (reverse notes) modify (\st' -> st'{ stNotes = mempty, stEmittedNotes = stEmittedNotes st' + length notes }) return (res <> renderedNotes) else return res let classes' = ["title-slide" | titleSlide] ++ ["slide" | slide] ++ ["section" | (slide || writerSectionDivs opts) && not html5 ] ++ ["level" <> tshow level | slide || writerSectionDivs opts ] <> [d | d <- dclasses, slideVariant /= RevealJsSlides || d /= "r-fit-text"] -- see #5965 let attr = (ident, classes', dkvs) if titleSlide then do t <- addAttrs opts attr $ secttag $ nl <> header' <> nl <> titleContents <> nl -- ensure 2D nesting for revealjs, but only for one level; -- revealjs doesn't like more than one level of nesting return $ if slideVariant == RevealJsSlides && not inSection && not (null innerSecs) then H5.section (nl <> t <> nl <> innerContents) else t <> nl <> if null innerSecs then mempty else innerContents <> nl else if writerSectionDivs opts || slide || (hident /= ident && not (T.null hident || T.null ident)) || (hclasses /= dclasses) || (hkvs /= dkvs) then addAttrs opts attr $ secttag $ nl <> header' <> nl <> if null innerSecs then mempty else innerContents <> nl else do let attr' = (ident, classes' \\ hclasses, dkvs \\ hkvs) t <- addAttrs opts attr' header' return $ t <> if null innerSecs then mempty else nl <> innerContents blockToHtmlInner opts (Div attr@(ident, classes, kvs') bs) = do html5 <- gets stHtml5 slideVariant <- gets stSlideVariant let isCslBibBody = ident == "refs" || "csl-bib-body" `elem` classes when isCslBibBody $ modify $ \st -> st{ stCsl = True , stCslEntrySpacing = lookup "entry-spacing" kvs' >>= safeRead } let isCslBibEntry = "csl-entry" `elem` classes let kvs = [(k,v) | (k,v) <- kvs' , k /= "width" || "column" `notElem` classes] ++ [("style", "width:" <> w <> ";") | "column" `elem` classes , ("width", w) <- kvs'] ++ [("role", "list") | isCslBibBody && html5] ++ [("role", "listitem") | isCslBibEntry && html5] let speakerNotes = "notes" `elem` classes -- we don't want incremental output inside speaker notes, see #1394 let opts' = if | speakerNotes -> opts{ writerIncremental = False } | "incremental" `elem` classes -> opts{ writerIncremental = True } | "nonincremental" `elem` classes -> opts{ writerIncremental = False } | otherwise -> opts -- we remove "incremental" and "nonincremental" if we're in a -- slide presentaiton format. classes' = case slideVariant of NoSlides -> classes _ -> filter (\k -> k /= "incremental" && k /= "nonincremental") classes let paraToPlain (Para ils) = Plain ils paraToPlain x = x let bs' = if "csl-entry" `elem` classes' then walk paraToPlain bs else bs contents <- if "columns" `elem` classes' then -- we don't use blockListToHtml because it inserts -- a newline between the column divs, which throws -- off widths! see #4028 mconcat <$> mapM (blockToHtml opts) bs' else blockListToHtml opts' bs' let contents' = nl >> contents >> nl let (divtag, classes'') = if html5 && "section" `elem` classes' then (H5.section, filter (/= "section") classes') else (H.div, classes') if speakerNotes then case slideVariant of RevealJsSlides -> addAttrs opts' attr $ H5.aside contents' DZSlides -> do t <- addAttrs opts' attr $ H5.div contents' return $ t ! A5.role "note" NoSlides -> addAttrs opts' attr $ H.div contents' _ -> return mempty else addAttrs opts (ident, classes'', kvs) $ divtag contents' blockToHtmlInner opts (RawBlock f str) = do ishtml <- isRawHtml f if ishtml then return $ preEscapedText str else if (f == Format "latex" || f == Format "tex") && allowsMathEnvironments (writerHTMLMathMethod opts) && isMathEnvironment str then do modify (\st -> st {stMath = True}) blockToHtml opts $ Plain [Math DisplayMath str] else do report $ BlockNotRendered (RawBlock f str) return mempty blockToHtmlInner _ HorizontalRule = do html5 <- gets stHtml5 return $ if html5 then H5.hr else H.hr blockToHtmlInner opts (CodeBlock (id',classes,keyvals) rawCode) = do html5 <- gets stHtml5 id'' <- if T.null id' then do modify $ \st -> st{ stCodeBlockNum = stCodeBlockNum st + 1 } codeblocknum <- gets stCodeBlockNum return (writerIdentifierPrefix opts <> "cb" <> tshow codeblocknum) else return (writerIdentifierPrefix opts <> id') let tolhs = isEnabled Ext_literate_haskell opts && any (\c -> T.toLower c == "haskell") classes && any (\c -> T.toLower c == "literate") classes classes' = if tolhs then map (\c -> if T.toLower c == "haskell" then "literatehaskell" else c) classes else classes adjCode = if tolhs then T.unlines . map ("> " <>) . T.lines $ rawCode else rawCode hlCode = if isJust (writerHighlightStyle opts) then highlight (writerSyntaxMap opts) (if html5 then formatHtmlBlock else formatHtml4Block) (id'',classes',keyvals) adjCode else Left "" case hlCode of Left msg -> do unless (T.null msg) $ report $ CouldNotHighlight msg addAttrs opts (id',classes,keyvals) $ H.pre $ H.code $ toHtml adjCode Right h -> modify (\st -> st{ stHighlighting = True }) >> -- we set writerIdentifierPrefix to "" since id'' already -- includes it: addAttrs opts{writerIdentifierPrefix = ""} (id'',[],keyvals) h blockToHtmlInner opts (BlockQuote blocks) = do -- in S5, treat list in blockquote specially -- if default is incremental, make it nonincremental; -- otherwise incremental slideVariant <- gets stSlideVariant if slideVariant /= NoSlides then let inc = not (writerIncremental opts) in case blocks of [BulletList lst] -> blockToHtml (opts {writerIncremental = inc}) (BulletList lst) [OrderedList attribs lst] -> blockToHtml (opts {writerIncremental = inc}) (OrderedList attribs lst) [DefinitionList lst] -> blockToHtml (opts {writerIncremental = inc}) (DefinitionList lst) _ -> do contents <- blockListToHtml opts blocks return $ H.blockquote $ nl >> contents >> nl else do contents <- blockListToHtml opts blocks return $ H.blockquote $ nl >> contents >> nl blockToHtmlInner opts (Header level (ident,classes,kvs) lst) = do contents <- inlineListToHtml opts lst let secnum = fromMaybe mempty $ lookup "number" kvs let contents' = if writerNumberSections opts && not (T.null secnum) && "unnumbered" `notElem` classes then (H.span ! A.class_ "header-section-number" $ toHtml secnum) >> toHtml ' ' >> contents else contents html5 <- gets stHtml5 let kvs' = if html5 then kvs else [ (k, v) | (k, v) <- kvs , k `elem` (["lang", "dir", "title", "style" , "align"] ++ intrinsicEventsHTML4)] let classes' = if level > 6 then "heading":classes else classes addAttrs opts (ident,classes',kvs') $ case level of 1 -> H.h1 contents' 2 -> H.h2 contents' 3 -> H.h3 contents' 4 -> H.h4 contents' 5 -> H.h5 contents' 6 -> H.h6 contents' _ -> H.p contents' blockToHtmlInner opts (BulletList lst) = do contents <- mapM (listItemToHtml opts) lst let isTaskList = not (null lst) && all isTaskListItem lst (if isTaskList then (! A.class_ "task-list") else id) <$> unordList opts contents blockToHtmlInner opts (OrderedList (startnum, numstyle, _) lst) = do contents <- mapM (listItemToHtml opts) lst html5 <- gets stHtml5 let numstyle' = case numstyle of Example -> "decimal" _ -> camelCaseToHyphenated $ tshow numstyle let attribs = [A.start $ toValue startnum | startnum /= 1] ++ [A.class_ "example" | numstyle == Example] ++ (if numstyle /= DefaultStyle then if html5 then [A.type_ $ case numstyle of Decimal -> "1" LowerAlpha -> "a" UpperAlpha -> "A" LowerRoman -> "i" UpperRoman -> "I" _ -> "1"] else [A.style $ toValue $ "list-style-type: " <> numstyle'] else []) l <- ordList opts contents return $ foldl' (!) l attribs blockToHtmlInner opts (DefinitionList lst) = do contents <- mapM (\(term, defs) -> do term' <- liftM H.dt $ inlineListToHtml opts term defs' <- mapM (liftM (\x -> H.dd (nl >> x >> nl)) . blockListToHtml opts) defs return $ mconcat $ nl : term' : nl : intersperse (nl) defs') lst defList opts contents blockToHtmlInner opts (Table attr caption colspecs thead tbody tfoot) = tableToHtml opts (Ann.toTable attr caption colspecs thead tbody tfoot) blockToHtmlInner opts (Figure attrs (Caption _ captBody) body) = do html5 <- gets stHtml5 figAttrs <- attrsToHtml opts attrs contents <- blockListToHtml opts body figCaption <- if null captBody then return mempty else do captCont <- blockListToHtml opts captBody return . mconcat $ if html5 then let fcattr = if captionIsAlt captBody body then H5.customAttribute (textTag "aria-hidden") (toValue @Text "true") else mempty in [ H5.figcaption ! fcattr $ captCont, nl ] else [ (H.div ! A.class_ "figcaption") captCont, nl ] return $ if html5 then foldl (!) H5.figure figAttrs $ mconcat [nl, contents, nl, figCaption] else foldl (!) H.div (A.class_ "float" : figAttrs) $ mconcat [nl, contents, nl, figCaption] where captionIsAlt capt [Plain [Image (_, _, kv) desc _]] = let alt = fromMaybe (stringify desc) $ lookup "alt" kv in stringify capt == alt captionIsAlt _ _ = False -- | Convert Pandoc block element to HTML. All the legwork is done by -- 'blockToHtmlInner', this just takes care of emitting the notes after -- the block if necessary. blockToHtml :: PandocMonad m => WriterOptions -> Block -> StateT WriterState m Html blockToHtml opts block = do let isSection = case block of Div (_, classes, _) _ | "section" `elem` classes -> True _ -> False let increaseLevel = not isSection when increaseLevel $ modify (\st -> st{ stBlockLevel = stBlockLevel st + 1 }) doc <- blockToHtmlInner opts block st <- get let emitNotes = writerReferenceLocation opts == EndOfBlock && stBlockLevel st == 1 res <- if emitNotes then do notes <- if null (stNotes st) then return mempty else footnoteSection (writerReferenceLocation opts) (stEmittedNotes st + 1) (reverse (stNotes st)) modify (\st' -> st'{ stNotes = mempty, stEmittedNotes = stEmittedNotes st' + length (stNotes st') }) return (doc <> notes) else return doc when increaseLevel $ modify (\st' -> st'{ stBlockLevel = stBlockLevel st' - 1 }) return res tableToHtml :: PandocMonad m => WriterOptions -> Ann.Table -> StateT WriterState m Html tableToHtml opts (Ann.Table attr caption colspecs thead tbodies tfoot) = do captionDoc <- case caption of Caption _ [] -> return mempty Caption _ longCapt -> do cs <- blockListToHtml opts longCapt return $ do H.caption cs nl coltags <- colSpecListToHtml colspecs head' <- tableHeadToHtml opts thead bodies <- intersperse (nl) <$> mapM (tableBodyToHtml opts) tbodies foot' <- tableFootToHtml opts tfoot let (ident,classes,kvs) = attr -- When widths of columns are < 100%, we need to set width for the whole -- table, or some browsers give us skinny columns with lots of space -- between: let colWidth = \case ColWidth d -> d ColWidthDefault -> 0 let totalWidth = sum . map (colWidth . snd) $ colspecs let attr' = case lookup "style" kvs of Nothing | totalWidth < 1 && totalWidth > 0 -> (ident,classes, ("style","width:" <> T.pack (show (round (totalWidth * 100) :: Int)) <> "%;"):kvs) _ -> attr addAttrs opts attr' $ H.table $ do nl captionDoc coltags head' mconcat bodies foot' nl tableBodyToHtml :: PandocMonad m => WriterOptions -> Ann.TableBody -> StateT WriterState m Html tableBodyToHtml opts (Ann.TableBody attr _rowHeadCols inthead rows) = addAttrs opts attr . H.tbody =<< do intermediateHead <- if null inthead then return mempty else headerRowsToHtml opts Thead inthead bodyRows <- bodyRowsToHtml opts rows return $ intermediateHead <> bodyRows tableHeadToHtml :: PandocMonad m => WriterOptions -> Ann.TableHead -> StateT WriterState m Html tableHeadToHtml opts (Ann.TableHead attr rows) = tablePartToHtml opts Thead attr rows tableFootToHtml :: PandocMonad m => WriterOptions -> Ann.TableFoot -> StateT WriterState m Html tableFootToHtml opts (Ann.TableFoot attr rows) = tablePartToHtml opts Tfoot attr rows tablePartToHtml :: PandocMonad m => WriterOptions -> TablePart -> Attr -> [Ann.HeaderRow] -> StateT WriterState m Html tablePartToHtml opts tblpart attr rows = if null rows || all isEmptyRow rows then return mempty else do let tag' = case tblpart of Thead -> H.thead Tfoot -> H.tfoot Tbody -> H.tbody -- this would be unexpected contents <- headerRowsToHtml opts tblpart rows tablePartElement <- addAttrs opts attr $ tag' contents return $ do tablePartElement nl where isEmptyRow (Ann.HeaderRow _attr _rownum cells) = all isEmptyCell cells isEmptyCell (Ann.Cell _colspecs _colnum cell) = cell == Cell nullAttr AlignDefault (RowSpan 1) (ColSpan 1) [] -- | The part of a table; header, footer, or body. data TablePart = Thead | Tfoot | Tbody deriving (Eq) data CellType = HeaderCell | BodyCell data TableRow = TableRow TablePart Attr Ann.RowNumber Ann.RowHead Ann.RowBody headerRowsToHtml :: PandocMonad m => WriterOptions -> TablePart -> [Ann.HeaderRow] -> StateT WriterState m Html headerRowsToHtml opts tablepart = rowListToHtml opts . map toTableRow where toTableRow (Ann.HeaderRow attr rownum rowbody) = TableRow tablepart attr rownum [] rowbody bodyRowsToHtml :: PandocMonad m => WriterOptions -> [Ann.BodyRow] -> StateT WriterState m Html bodyRowsToHtml opts = rowListToHtml opts . zipWith toTableRow [1..] where toTableRow rownum (Ann.BodyRow attr _rownum rowhead rowbody) = TableRow Tbody attr rownum rowhead rowbody rowListToHtml :: PandocMonad m => WriterOptions -> [TableRow] -> StateT WriterState m Html rowListToHtml opts rows = (\x -> nl *> mconcat x) <$> mapM (tableRowToHtml opts) rows colSpecListToHtml :: PandocMonad m => [ColSpec] -> StateT WriterState m Html colSpecListToHtml colspecs = do html5 <- gets stHtml5 let hasDefaultWidth (_, ColWidthDefault) = True hasDefaultWidth _ = False let percent w = show (truncate (100*w) :: Integer) <> "%" let col :: ColWidth -> Html col cw = do H.col ! case cw of ColWidthDefault -> mempty ColWidth w -> if html5 then A.style (toValue $ "width: " <> percent w) else A.width (toValue $ percent w) nl return $ if all hasDefaultWidth colspecs then mempty else do H.colgroup $ do nl mapM_ (col . snd) colspecs nl tableRowToHtml :: PandocMonad m => WriterOptions -> TableRow -> StateT WriterState m Html tableRowToHtml opts (TableRow tblpart attr rownum rowhead rowbody) = do let rowclass = case rownum of Ann.RowNumber x | x `rem` 2 == 1 -> "odd" _ | tblpart /= Thead -> "even" _ -> "header" let attr' = case attr of (id', classes, rest) -> (id', rowclass:classes, rest) let celltype = case tblpart of Thead -> HeaderCell _ -> BodyCell headcells <- mapM (cellToHtml opts HeaderCell) rowhead bodycells <- mapM (cellToHtml opts celltype) rowbody rowHtml <- addAttrs opts attr' $ H.tr $ do nl mconcat headcells mconcat bodycells return $ do rowHtml nl colspanAttrib :: ColSpan -> Attribute colspanAttrib = \case ColSpan 1 -> mempty ColSpan n -> A.colspan (toValue n) rowspanAttrib :: RowSpan -> Attribute rowspanAttrib = \case RowSpan 1 -> mempty RowSpan n -> A.rowspan (toValue n) cellToHtml :: PandocMonad m => WriterOptions -> CellType -> Ann.Cell -> StateT WriterState m Html cellToHtml opts celltype (Ann.Cell (colspec :| _) _colNum cell) = let align = fst colspec in tableCellToHtml opts celltype align cell tableCellToHtml :: PandocMonad m => WriterOptions -> CellType -> Alignment -> Cell -> StateT WriterState m Html tableCellToHtml opts ctype colAlign (Cell attr align rowspan colspan item) = do contents <- blockListToHtml opts item html5 <- gets stHtml5 let (ident, cls, kvs) = attr let tag' = case ctype of BodyCell -> H.td HeaderCell -> H.th let align' = case align of AlignDefault -> colAlign _ -> align let kvs' = case htmlAlignmentToString align' of Nothing -> kvs Just alignStr -> if html5 then htmlAddStyle ("text-align", alignStr) kvs else case break ((== "align") . fst) kvs of (_, []) -> ("align", alignStr) : kvs (xs, _:rest) -> xs ++ ("align", alignStr) : rest otherAttribs <- attrsToHtml opts (ident, cls, kvs') let attribs = mconcat $ colspanAttrib colspan : rowspanAttrib rowspan : otherAttribs return $ do tag' ! attribs $ contents nl toListItems :: [Html] -> [Html] toListItems items = map toListItem items ++ [nl] toListItem :: Html -> Html toListItem item = nl *> H.li item blockListToHtml :: PandocMonad m => WriterOptions -> [Block] -> StateT WriterState m Html blockListToHtml opts lst = mconcat . intersperse (nl) . filter nonempty <$> mapM (blockToHtml opts) lst where nonempty (Empty _) = False nonempty _ = True -- | Convert list of Pandoc inline elements to HTML. inlineListToHtml :: PandocMonad m => WriterOptions -> [Inline] -> StateT WriterState m Html inlineListToHtml opts lst = mconcat <$> mapM (inlineToHtml opts) lst -- | Annotates a MathML expression with the tex source annotateMML :: XML.Element -> Text -> XML.Element annotateMML e tex = math (unode "semantics" [cs, unode "annotation" (annotAttrs, T.unpack tex)]) where cs = case elChildren e of [] -> unode "mrow" () [x] -> x xs -> unode "mrow" xs math childs = XML.Element q as [XML.Elem childs] l where (XML.Element q as _ l) = e annotAttrs = [XML.Attr (unqual "encoding") "application/x-tex"] -- | Convert Pandoc inline element to HTML. inlineToHtml :: PandocMonad m => WriterOptions -> Inline -> StateT WriterState m Html inlineToHtml opts inline = do html5 <- gets stHtml5 case inline of (Str str) -> return $ strToHtml str Space -> return $ toHtml ' ' SoftBreak -> return $ case writerWrapText opts of WrapNone -> toHtml ' ' WrapAuto -> toHtml ' ' WrapPreserve -> toHtml '\n' LineBreak -> return $ do if html5 then H5.br else H.br toHtml '\n' (Span ("",[cls],[]) ils) | cls == "csl-block" || cls == "csl-left-margin" || cls == "csl-right-inline" || cls == "csl-indent" -> inlineListToHtml opts ils >>= inDiv cls (Span (id',classes,kvs) ils) -> let go Nothing c | c `Set.member` htmlSpanLikeElements = Just (customParent (textTag c), []) | c == "smallcaps" = Just (H.span ! A.class_ "smallcaps", []) | c == "underline" = Just (H.u, []) | otherwise = Nothing go (Just (t,cs)) c | c `Set.member` htmlSpanLikeElements = Just (t . customParent (textTag c), cs) | c == "smallcaps" = Just (t . (H.span ! A.class_ "smallcaps"), cs) | c == "underline" = Just (t . H.u, cs) | otherwise = Just (t, c:cs) spanLikeTags = foldl' go Nothing in case spanLikeTags classes of Just (tag, cs) -> do h <- inlineListToHtml opts ils addAttrs opts (id',cs,kvs') $ tag h Nothing -> do h <- inlineListToHtml opts ils addAttrs opts (id',classes',kvs') (H.span h) where styles = ["font-style:normal;" | "csl-no-emph" `elem` classes] ++ ["font-weight:normal;" | "csl-no-strong" `elem` classes] ++ ["font-variant:normal;" | "csl-no-smallcaps" `elem` classes] kvs' = if null styles then kvs else ("style", T.concat styles) : kvs classes' = [ c | c <- classes , c `notElem` [ "csl-no-emph" , "csl-no-strong" , "csl-no-smallcaps" ] ] (Emph lst) -> H.em <$> inlineListToHtml opts lst (Underline lst) -> H.u <$> inlineListToHtml opts lst (Strong lst) -> H.strong <$> inlineListToHtml opts lst (Code attr@(ids,cs,kvs) str) -> case hlCode of Left msg -> do unless (T.null msg) $ report $ CouldNotHighlight msg addAttrs opts (ids,cs',kvs) $ fromMaybe H.code sampOrVar $ strToHtml str Right h -> do modify $ \st -> st{ stHighlighting = True } addAttrs opts (ids,[],kvs) $ fromMaybe id sampOrVar h where hlCode = if isJust (writerHighlightStyle opts) then highlight (writerSyntaxMap opts) formatHtmlInline attr str else Left "" (sampOrVar,cs') | "sample" `elem` cs = (Just H.samp,"sample" `delete` cs) | "variable" `elem` cs = (Just H.var,"variable" `delete` cs) | otherwise = (Nothing,cs) (Strikeout lst) -> H.del <$> inlineListToHtml opts lst (SmallCaps lst) -> (H.span ! A.class_ "smallcaps") <$> inlineListToHtml opts lst (Superscript lst) -> H.sup <$> inlineListToHtml opts lst (Subscript lst) -> H.sub <$> inlineListToHtml opts lst (Quoted quoteType lst) -> let (leftQuote, rightQuote) = case quoteType of SingleQuote -> (toHtml '‘', toHtml '’') DoubleQuote -> (toHtml '“', toHtml '”') in if writerHtmlQTags opts then do modify $ \st -> st{ stQuotes = True } let (maybeAttr, lst') = case lst of [Span attr@(_, _, kvs) cs] | any ((=="cite") . fst) kvs -> (Just attr, cs) cs -> (Nothing, cs) let addAttrsMb = maybe return (addAttrs opts) inlineListToHtml opts lst' >>= addAttrsMb maybeAttr . H.q else (\x -> leftQuote >> x >> rightQuote) `fmap` inlineListToHtml opts lst (Math t str) -> do modify (\st -> st {stMath = True}) let mathClass = toValue $ ("math " :: Text) <> if t == InlineMath then "inline" else "display" case writerHTMLMathMethod opts of WebTeX url -> do let imtag = if html5 then H5.img else H.img let str' = T.strip str let s = case t of InlineMath -> "\\textstyle " DisplayMath -> "\\displaystyle " return $ imtag ! A.style "vertical-align:middle" ! A.src (toValue . (url <>) . urlEncode $ s <> str') ! A.alt (toValue str') ! A.title (toValue str') ! A.class_ mathClass GladTeX -> return $ customParent (textTag "eq") ! customAttribute "env" (toValue $ if t == InlineMath then ("math" :: Text) else "displaymath") $ strToHtml str MathML -> do let conf = useShortEmptyTags (const False) defaultConfigPP res <- lift $ convertMath writeMathML t str case res of Right r -> return $ preEscapedString $ ppcElement conf (annotateMML r str) Left il -> (H.span ! A.class_ mathClass) <$> inlineToHtml opts il MathJax _ -> return $ H.span ! A.class_ mathClass $ toHtml $ case t of InlineMath -> "\\(" <> str <> "\\)" DisplayMath -> "\\[" <> str <> "\\]" KaTeX _ -> return $ H.span ! A.class_ mathClass $ toHtml $ case t of InlineMath -> str DisplayMath -> str PlainMath -> do x <- lift (texMathToInlines t str) >>= inlineListToHtml opts return $ H.span ! A.class_ mathClass $ x (RawInline f str) -> do ishtml <- isRawHtml f if ishtml then return $ preEscapedText str else do let istex = f == Format "latex" || f == Format "tex" let mm = writerHTMLMathMethod opts case istex of True | allowsMathEnvironments mm && isMathEnvironment str -> do modify (\st -> st {stMath = True}) inlineToHtml opts $ Math DisplayMath str | allowsRef mm && isRef str -> do modify (\st -> st {stMath = True}) inlineToHtml opts $ Math InlineMath str _ -> do report $ InlineNotRendered inline return mempty (Link attr txt (s,_)) | "mailto:" `T.isPrefixOf` s -> do linkText <- inlineListToHtml opts (removeLinks txt) obfuscateLink opts attr linkText s (Link (ident,classes,kvs) txt (s,tit)) -> do linkText <- inlineListToHtml opts (removeLinks txt) slideVariant <- gets stSlideVariant let s' = case T.uncons s of Just ('#',xs) -> let prefix = if slideVariant == RevealJsSlides then "/" else writerIdentifierPrefix opts in "#" <> prefix <> xs _ -> s let link = H.a ! A.href (toValue s') $ linkText link' <- addAttrs opts (ident, classes, kvs) link return $ if T.null tit then link' else link' ! A.title (toValue tit) (Image attr@(_, _, attrList) txt (s, tit)) -> do let alternate = stringify txt slideVariant <- gets stSlideVariant let isReveal = slideVariant == RevealJsSlides attrs <- imgAttrsToHtml opts attr let attributes = -- reveal.js uses data-src for lazy loading (if isReveal then customAttribute "data-src" $ toValue s else A.src $ toValue s) : [A.title $ toValue tit | not (T.null tit)] ++ attrs imageTag = (if html5 then H5.img else H.img , [A.alt $ toValue alternate | not (null txt) && isNothing (lookup "alt" attrList)] ) mediaTag tg fallbackTxt = let linkTxt = if null txt then fallbackTxt else alternate in (tg $ H.a ! A.href (toValue s) $ toHtml linkTxt , [A5.controls ""] ) s' = fromMaybe s $ T.stripSuffix ".gz" s normSrc = maybe (T.unpack s) uriPath (parseURIReference $ T.unpack s') (tag, specAttrs) = case mediaCategory normSrc of Just "image" -> imageTag Just "video" -> mediaTag H5.video "Video" Just "audio" -> mediaTag H5.audio "Audio" Just _ -> (H5.embed, []) _ -> imageTag return $ foldl' (!) tag $ attributes ++ specAttrs -- note: null title included, as in Markdown.pl (Note contents) -> do notes <- gets stNotes emittedNotes <- gets stEmittedNotes let number = emittedNotes + length notes + 1 let ref = tshow number htmlContents <- blockListToNote opts ref contents epubVersion <- gets stEPUBVersion -- push contents onto front of notes modify $ \st -> st {stNotes = htmlContents:notes} slideVariant <- gets stSlideVariant let revealSlash = T.pack ['/' | slideVariant == RevealJsSlides] let link = H.a ! A.href (toValue $ "#" <> revealSlash <> writerIdentifierPrefix opts <> "fn" <> ref) ! A.class_ "footnote-ref" ! prefixedId opts ("fnref" <> ref) $ (if isJust epubVersion then id else H.sup) $ toHtml ref return $ case epubVersion of Just EPUB3 -> link ! customAttribute "epub:type" "noteref" _ | html5 -> link ! A5.role "doc-noteref" _ -> link (Cite cits il)-> do contents <- inlineListToHtml opts (if html5 then walk addRoleToLink il else il) let citationIds = T.unwords $ map citationId cits let result = H.span ! A.class_ "citation" $ contents return $ if html5 then result ! customAttribute "data-cites" (toValue citationIds) else result addRoleToLink :: Inline -> Inline addRoleToLink (Link (id',classes,kvs) ils (src,tit)) = Link (id',classes,("role","doc-biblioref"):kvs) ils (src,tit) addRoleToLink x = x blockListToNote :: PandocMonad m => WriterOptions -> Text -> [Block] -> StateT WriterState m Html blockListToNote opts ref blocks = do epubVersion <- gets stEPUBVersion html5 <- gets stHtml5 case epubVersion of Nothing -> do -- web page -- If last block is Para or Plain, include the backlink at the end of -- that block. Otherwise, insert a new Plain block with the backlink. let kvs = [("role","doc-backlink") | html5] let backlink = [Link ("",["footnote-back"],kvs) [Str "↩"] ("#" <> "fnref" <> ref,"")] let blocks' = if null blocks then [] else let lastBlock = last blocks otherBlocks = init blocks in case lastBlock of Para [Image (_,cls,_) _ (_,tit)] | "fig:" `T.isPrefixOf` tit || "r-stretch" `elem` cls -> otherBlocks ++ [lastBlock, Plain backlink] Para lst -> otherBlocks ++ [Para (lst ++ backlink)] Plain lst -> otherBlocks ++ [Plain (lst ++ backlink)] _ -> otherBlocks ++ [lastBlock, Plain backlink] contents <- blockListToHtml opts blocks' let noteItem = H.li ! prefixedId opts ("fn" <> ref) $ contents return $ noteItem >> nl Just epubv -> do let kvs = [("role","doc-backlink") | html5] let backlink = Link ("",["footnote-back"],kvs) [Str ref] ("#" <> "fnref" <> ref,"") let blocks' = case blocks of (Para ils : rest) -> Para (backlink : Str "." : Space : ils) : rest (Plain ils : rest) -> Plain (backlink : Str "." : Space : ils) : rest _ -> Para [backlink , Str "."] : blocks contents <- blockListToHtml opts blocks' let noteItem = (if epubv == EPUB3 then H5.aside ! customAttribute "epub:type" "footnote" else H.div) ! prefixedId opts ("fn" <> ref) $ nl >> contents >> nl return $ noteItem >> nl inDiv :: PandocMonad m=> Text -> Html -> StateT WriterState m Html inDiv cls x = do html5 <- gets stHtml5 return $ (if html5 then H5.div else H.div) x ! A.class_ (toValue cls) isRef :: Text -> Bool isRef t = "\\ref{" `T.isPrefixOf` t || "\\eqref{" `T.isPrefixOf` t isMathEnvironment :: Text -> Bool isMathEnvironment s = "\\begin{" `T.isPrefixOf` s && envName `elem` mathmlenvs where envName = T.takeWhile (/= '}') (T.drop 7 s) mathmlenvs = [ "align" , "align*" , "alignat" , "alignat*" , "aligned" , "alignedat" , "array" , "Bmatrix" , "bmatrix" , "cases" , "CD" , "eqnarray" , "eqnarray*" , "equation" , "equation*" , "gather" , "gather*" , "gathered" , "matrix" , "multline" , "multline*" , "pmatrix" , "prooftree" -- bussproofs , "smallmatrix" , "split" , "subarray" , "Vmatrix" , "vmatrix" ] allowsMathEnvironments :: HTMLMathMethod -> Bool allowsMathEnvironments (MathJax _) = True allowsMathEnvironments (KaTeX _) = True allowsMathEnvironments MathML = True allowsMathEnvironments (WebTeX _) = True allowsMathEnvironments _ = False allowsRef :: HTMLMathMethod -> Bool allowsRef (MathJax _) = True allowsRef _ = False -- | List of intrinsic event attributes allowed on all elements in HTML4. intrinsicEventsHTML4 :: [Text] intrinsicEventsHTML4 = [ "onclick", "ondblclick", "onmousedown", "onmouseup", "onmouseover" , "onmouseout", "onmouseout", "onkeypress", "onkeydown", "onkeyup"] isRawHtml :: PandocMonad m => Format -> StateT WriterState m Bool isRawHtml f = do html5 <- gets stHtml5 return $ f == Format "html" || ((html5 && f == Format "html5") || f == Format "html4") -- We need to remove links from link text, because an <a> element is -- not allowed inside another <a> element. removeLinks :: [Inline] -> [Inline] removeLinks = walk go where go (Link attr ils _) = Span attr ils go x = x ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/Haddock.hs�����������������������������������������������������0000644�0000000�0000000�00000026633�07346545000�017434� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {- | Module : Text.Pandoc.Writers.Haddock Copyright : Copyright (C) 2014-2015,2017 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable Conversion of 'Pandoc' documents to haddock markup. Haddock: <http://www.haskell.org/haddock/doc/html/> -} module Text.Pandoc.Writers.Haddock (writeHaddock) where import Control.Monad (zipWithM) import Control.Monad.State.Strict ( StateT, MonadState(get), modify, evalStateT ) import Data.Char (isAlphaNum) import Data.Default import Data.Text (Text) import qualified Data.Text as T import Text.Pandoc.Class.PandocMonad (PandocMonad, report) import Text.Pandoc.Definition import Text.Pandoc.Logging import Text.Pandoc.Options import Text.DocLayout import Text.Pandoc.Shared import Text.Pandoc.URI import Text.Pandoc.Templates (renderTemplate) import Text.Pandoc.Writers.Shared type Notes = [[Block]] newtype WriterState = WriterState { stNotes :: Notes } instance Default WriterState where def = WriterState{ stNotes = [] } -- | Convert Pandoc to Haddock. writeHaddock :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeHaddock opts document = evalStateT (pandocToHaddock opts{ writerWrapText = writerWrapText opts } document) def -- | Return haddock representation of document. pandocToHaddock :: PandocMonad m => WriterOptions -> Pandoc -> StateT WriterState m Text pandocToHaddock opts (Pandoc meta blocks) = do let colwidth = if writerWrapText opts == WrapAuto then Just $ writerColumns opts else Nothing body <- blockListToHaddock opts blocks st <- get notes' <- notesToHaddock opts (reverse $ stNotes st) let main = body <> (if isEmpty notes' then empty else blankline <> notes') metadata <- metaToContext opts (blockListToHaddock opts) (fmap chomp . inlineListToHaddock opts) meta let context = defField "body" main metadata return $ render colwidth $ case writerTemplate opts of Nothing -> main Just tpl -> renderTemplate tpl context -- | Return haddock representation of notes. notesToHaddock :: PandocMonad m => WriterOptions -> [[Block]] -> StateT WriterState m (Doc Text) notesToHaddock opts notes = if null notes then return empty else do contents <- blockToHaddock opts $ OrderedList (1,DefaultStyle,DefaultDelim) notes return $ text "#notes#" <> blankline <> contents -- | Escape special characters for Haddock. escapeString :: Text -> Text escapeString t | T.all isAlphaNum t = t | otherwise = T.concatMap escChar t where escChar '\\' = "\\\\" escChar '/' = "\\/" escChar '\'' = "\\'" escChar '`' = "\\`" escChar '"' = "\\\"" escChar '@' = "\\@" escChar '<' = "\\<" escChar c = T.singleton c -- | Convert Pandoc block element to haddock. blockToHaddock :: PandocMonad m => WriterOptions -- ^ Options -> Block -- ^ Block element -> StateT WriterState m (Doc Text) blockToHaddock opts (Div _ ils) = do contents <- blockListToHaddock opts ils return $ contents <> blankline blockToHaddock opts (Plain inlines) = do contents <- inlineListToHaddock opts inlines return $ contents <> cr blockToHaddock opts (Para inlines) = -- TODO: if it contains linebreaks, we need to use a @...@ block (<> blankline) `fmap` blockToHaddock opts (Plain inlines) blockToHaddock opts (LineBlock lns) = blockToHaddock opts $ linesToPara lns blockToHaddock _ b@(RawBlock f str) | f == "haddock" = return $ literal str <> text "\n" | otherwise = do report $ BlockNotRendered b return empty blockToHaddock opts HorizontalRule = return $ blankline <> text (replicate (writerColumns opts) '_') <> blankline blockToHaddock opts (Header level (ident,_,_) inlines) = do contents <- inlineListToHaddock opts inlines let attr' = if T.null ident then empty else cr <> text "#" <> literal ident <> text "#" return $ nowrap (text (replicate level '=') <> space <> contents) <> attr' <> blankline blockToHaddock _ (CodeBlock (_,_,_) str) = return $ prefixed "> " (literal str) <> blankline -- Nothing in haddock corresponds to block quotes: blockToHaddock opts (BlockQuote blocks) = blockListToHaddock opts blocks blockToHaddock opts (Table _ blkCapt specs thead tbody tfoot) = do let (caption, aligns, widths, headers, rows) = toLegacyTable blkCapt specs thead tbody tfoot caption' <- inlineListToHaddock opts caption let caption'' = if null caption then empty else blankline <> caption' <> blankline tbl <- gridTable opts blockListToHaddock (all null headers) (map (const AlignDefault) aligns) widths headers rows return $ (tbl $$ blankline $$ caption'') $$ blankline blockToHaddock opts (BulletList items) = do contents <- mapM (bulletListItemToHaddock opts) items return $ (if isTightList items then vcat else vsep) contents <> blankline blockToHaddock opts (OrderedList (start,_,delim) items) = do let attribs = (start, Decimal, delim) let markers = orderedListMarkers attribs let markers' = map (\m -> if T.length m < 3 then m <> T.replicate (3 - T.length m) " " else m) markers contents <- zipWithM (orderedListItemToHaddock opts) markers' items return $ (if isTightList items then vcat else vsep) contents <> blankline blockToHaddock opts (DefinitionList items) = do contents <- mapM (definitionListItemToHaddock opts) items return $ vcat contents <> blankline blockToHaddock opts (Figure _ (Caption _ longcapt) body) = -- Haddock has no concept of figures, floats, or captions. fmap (<> blankline) (blockListToHaddock opts (body ++ longcapt)) -- | Convert bullet list item (list of blocks) to haddock bulletListItemToHaddock :: PandocMonad m => WriterOptions -> [Block] -> StateT WriterState m (Doc Text) bulletListItemToHaddock opts items = do contents <- blockListToHaddock opts items let sps = replicate (writerTabStop opts - 2) ' ' let start = text ('-' : ' ' : sps) return $ hang (writerTabStop opts) start contents $$ if endsWithPlain items then cr else blankline -- | Convert ordered list item (a list of blocks) to haddock orderedListItemToHaddock :: PandocMonad m => WriterOptions -- ^ options -> Text -- ^ list item marker -> [Block] -- ^ list item (list of blocks) -> StateT WriterState m (Doc Text) orderedListItemToHaddock opts marker items = do contents <- blockListToHaddock opts items let sps = case T.length marker - writerTabStop opts of n | n > 0 -> text $ replicate n ' ' _ -> text " " let start = literal marker <> sps return $ hang (writerTabStop opts) start contents $$ if endsWithPlain items then cr else blankline -- | Convert definition list item (label, list of blocks) to haddock definitionListItemToHaddock :: PandocMonad m => WriterOptions -> ([Inline],[[Block]]) -> StateT WriterState m (Doc Text) definitionListItemToHaddock opts (label, defs) = do labelText <- inlineListToHaddock opts label defs' <- mapM (mapM (blockToHaddock opts)) defs let contents = (if isTightList defs then vcat else vsep) $ map (\d -> hang 4 empty $ vcat d <> cr) defs' return $ nowrap (brackets labelText) $$ contents $$ if isTightList defs then cr else blankline -- | Convert list of Pandoc block elements to haddock blockListToHaddock :: PandocMonad m => WriterOptions -- ^ Options -> [Block] -- ^ List of block elements -> StateT WriterState m (Doc Text) blockListToHaddock opts blocks = mconcat <$> mapM (blockToHaddock opts) blocks -- | Convert list of Pandoc inline elements to haddock. inlineListToHaddock :: PandocMonad m => WriterOptions -> [Inline] -> StateT WriterState m (Doc Text) inlineListToHaddock opts lst = mconcat <$> mapM (inlineToHaddock opts) lst -- | Convert Pandoc inline element to haddock. inlineToHaddock :: PandocMonad m => WriterOptions -> Inline -> StateT WriterState m (Doc Text) inlineToHaddock opts (Span (ident,_,_) ils) = do contents <- inlineListToHaddock opts ils if not (T.null ident) && null ils then return $ "#" <> literal ident <> "#" else return contents inlineToHaddock opts (Emph lst) = do contents <- inlineListToHaddock opts lst return $ "/" <> contents <> "/" -- Underline is not supported, treat the same as Emph inlineToHaddock opts (Underline lst) = inlineToHaddock opts (Emph lst) inlineToHaddock opts (Strong lst) = do contents <- inlineListToHaddock opts lst return $ "__" <> contents <> "__" inlineToHaddock opts (Strikeout lst) = do contents <- inlineListToHaddock opts lst -- not supported in haddock, but we fake it: return $ "~~" <> contents <> "~~" -- not supported in haddock: inlineToHaddock opts (Superscript lst) = inlineListToHaddock opts lst -- not supported in haddock: inlineToHaddock opts (Subscript lst) = inlineListToHaddock opts lst -- not supported in haddock: inlineToHaddock opts (SmallCaps lst) = inlineListToHaddock opts lst inlineToHaddock opts (Quoted SingleQuote lst) = do contents <- inlineListToHaddock opts lst return $ "‘" <> contents <> "’" inlineToHaddock opts (Quoted DoubleQuote lst) = do contents <- inlineListToHaddock opts lst return $ "“" <> contents <> "”" inlineToHaddock _ (Code _ str) = return $ "@" <> literal (escapeString str) <> "@" inlineToHaddock _ (Str str) = return $ literal $ escapeString str inlineToHaddock _ (Math mt str) = return $ case mt of DisplayMath -> cr <> "\\[" <> literal str <> "\\]" <> cr InlineMath -> "\\(" <> literal str <> "\\)" inlineToHaddock _ il@(RawInline f str) | f == "haddock" = return $ literal str | otherwise = do report $ InlineNotRendered il return empty -- no line break in haddock (see above on CodeBlock) inlineToHaddock _ LineBreak = return cr inlineToHaddock opts SoftBreak = case writerWrapText opts of WrapAuto -> return space WrapNone -> return space WrapPreserve -> return cr inlineToHaddock _ Space = return space inlineToHaddock opts (Cite _ lst) = inlineListToHaddock opts lst inlineToHaddock _ (Link _ txt (src, _)) = do let linktext = literal $ escapeString $ stringify txt let useAuto = isURI src && case txt of [Str s] | escapeURI s == src -> True _ -> False return $ nowrap $ "<" <> literal src <> (if useAuto then empty else space <> linktext) <> ">" inlineToHaddock opts (Image attr alternate (source, tit)) = do linkhaddock <- inlineToHaddock opts (Link attr alternate (source, tit)) return $ "<" <> linkhaddock <> ">" -- haddock doesn't have notes, but we can fake it: inlineToHaddock opts (Note contents) = do modify (\st -> st{ stNotes = contents : stNotes st }) st <- get let ref = literal $ writerIdentifierPrefix opts <> tshow (length $ stNotes st) return $ "<#notes [" <> ref <> "]>" �����������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/ICML.hs��������������������������������������������������������0000644�0000000�0000000�00000074306�07346545000�016623� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {- | Module : Text.Pandoc.Writers.ICML Copyright : Copyright (C) 2013-2020 github.com/mb21 License : GNU GPL, version 2 or above Stability : alpha Conversion of 'Pandoc' documents to Adobe InCopy ICML, a stand-alone XML format which is a subset of the zipped IDML format for which the documentation is available here: http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/indesign/sdk/cs6/idml/idml-specification.pdf InCopy is the companion word-processor to Adobe InDesign and ICML documents can be integrated into InDesign with File -> Place. -} module Text.Pandoc.Writers.ICML (writeICML) where import Control.Monad.Except (catchError) import Control.Monad (liftM2) import Control.Monad.State.Strict ( MonadTrans(lift), StateT(runStateT), MonadState(state, get, put) ) import Data.List (intersperse) import Data.Maybe (fromMaybe, maybeToList) import qualified Data.Set as Set import qualified Data.Text as Text import Data.Text (Text) import Text.Pandoc.Class.PandocMonad (PandocMonad, fetchItem, report) import Text.Pandoc.Definition import Text.Pandoc.ImageSize import Text.Pandoc.Logging import Text.Pandoc.Options import Text.DocLayout import Text.Pandoc.Shared import Text.Pandoc.URI (isURI) import Text.Pandoc.Templates (renderTemplate) import Text.Pandoc.Writers.Math (texMathToInlines) import Text.Pandoc.Writers.Shared import Text.Pandoc.XML type Style = [Text] type Hyperlink = [(Int, Text)] data WriterState = WriterState{ blockStyles :: Set.Set Text , inlineStyles :: Set.Set Text , links :: Hyperlink , listDepth :: Int , maxListDepth :: Int } type WS m = StateT WriterState m defaultWriterState :: WriterState defaultWriterState = WriterState{ blockStyles = Set.empty , inlineStyles = Set.empty , links = [] , listDepth = 1 , maxListDepth = 0 } -- inline names (appear in InDesign's character styles pane) emphName :: Text underlineName :: Text strongName :: Text strikeoutName :: Text superscriptName :: Text subscriptName :: Text smallCapsName :: Text codeName :: Text linkName :: Text emphName = "Italic" underlineName = "Underline" strongName = "Bold" strikeoutName = "Strikeout" superscriptName = "Superscript" subscriptName = "Subscript" smallCapsName = "SmallCaps" codeName = "Code" linkName = "Link" -- block element names (appear in InDesign's paragraph styles pane) paragraphName :: Text figureName :: Text imgCaptionName :: Text codeBlockName :: Text blockQuoteName :: Text orderedListName :: Text bulletListName :: Text defListTermName :: Text defListDefName :: Text headerName :: Text tableName :: Text tableHeaderName :: Text tableCaptionName :: Text alignLeftName :: Text alignRightName :: Text alignCenterName :: Text firstListItemName :: Text beginsWithName :: Text lowerRomanName :: Text upperRomanName :: Text lowerAlphaName :: Text upperAlphaName :: Text subListParName :: Text footnoteName :: Text citeName :: Text paragraphName = "Paragraph" figureName = "Figure" imgCaptionName = "Caption" codeBlockName = "CodeBlock" blockQuoteName = "Blockquote" orderedListName = "NumList" bulletListName = "BulList" defListTermName = "DefListTerm" defListDefName = "DefListDef" headerName = "Header" tableName = "TablePar" tableHeaderName = "TableHeader" tableCaptionName = "TableCaption" alignLeftName = "LeftAlign" alignRightName = "RightAlign" alignCenterName = "CenterAlign" firstListItemName = "first" beginsWithName = "beginsWith-" lowerRomanName = "lowerRoman" upperRomanName = "upperRoman" lowerAlphaName = "lowerAlpha" upperAlphaName = "upperAlpha" subListParName = "subParagraph" footnoteName = "Footnote" citeName = "Cite" -- | Convert Pandoc document to string in ICML format. writeICML :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeICML opts doc = do let Pandoc meta blocks = ensureValidXmlIdentifiers doc let colwidth = if writerWrapText opts == WrapAuto then Just $ writerColumns opts else Nothing renderBlockMeta f s = fst <$> runStateT (f opts [] s) defaultWriterState renderInlineMeta f s = fst <$> runStateT (f opts [] "" s) defaultWriterState metadata <- metaToContext opts (renderBlockMeta blocksToICML) (renderInlineMeta inlinesToICML) meta (main, st) <- runStateT (blocksToICML opts [] blocks) defaultWriterState let context = defField "body" main $ defField "charStyles" (charStylesToDoc st) $ defField "parStyles" (parStylesToDoc st) $ defField "hyperlinks" (hyperlinksToDoc $ links st) metadata return $ render colwidth $ (if writerPreferAscii opts then fmap toEntities else id) $ case writerTemplate opts of Nothing -> main Just tpl -> renderTemplate tpl context -- | Auxiliary functions for parStylesToDoc and charStylesToDoc. contains :: Text -> (Text, (Text, Text)) -> [(Text, Text)] contains s rule = [snd rule | fst rule `Text.isInfixOf` s] -- | The monospaced font to use as default. monospacedFont :: Doc Text monospacedFont = inTags False "AppliedFont" [("type", "string")] $ text "Courier New" -- | How much to indent blockquotes etc. defaultIndent :: Int defaultIndent = 20 -- | How much to indent numbered lists before the number. defaultListIndent :: Int defaultListIndent = 10 -- other constants lineSeparator :: Text lineSeparator = "
" -- | Convert a WriterState with its block styles to the ICML listing of Paragraph Styles. parStylesToDoc :: WriterState -> Doc Text parStylesToDoc st = vcat $ map makeStyle $ Set.toAscList $ blockStyles st where makeStyle s = let countSubStrs sub str = length $ Text.breakOnAll sub str attrs = concatMap (contains s) [ (defListTermName, ("BulletsAndNumberingListType", "BulletList")) , (defListTermName, ("FontStyle", "Bold")) , (tableHeaderName, ("FontStyle", "Bold")) , (alignLeftName, ("Justification", "LeftAlign")) , (alignRightName, ("Justification", "RightAlign")) , (alignCenterName, ("Justification", "CenterAlign")) , (headerName<>"1", ("PointSize", "36")) , (headerName<>"2", ("PointSize", "30")) , (headerName<>"3", ("PointSize", "24")) , (headerName<>"4", ("PointSize", "18")) , (headerName<>"5", ("PointSize", "14")) ] -- what is the most nested list type, if any? (isBulletList, isOrderedList) = findList $ reverse $ splitTextBy (==' ') s where findList [] = (False, False) findList (x:xs) | x == bulletListName = (True, False) | x == orderedListName = (False, True) | otherwise = findList xs nBuls = countSubStrs bulletListName s nOrds = countSubStrs orderedListName s attrs' = numbering <> listType <> indent <> attrs where numbering | isOrderedList = [("NumberingExpression", "^#.^t"), ("NumberingLevel", tshow nOrds)] | otherwise = [] listType | isOrderedList && not (subListParName `Text.isInfixOf` s) = [("BulletsAndNumberingListType", "NumberedList")] | isBulletList && not (subListParName `Text.isInfixOf` s) = [("BulletsAndNumberingListType", "BulletList")] | otherwise = [] indent = [("LeftIndent", tshow indt)] where nBlockQuotes = countSubStrs blockQuoteName s nDefLists = countSubStrs defListDefName s indt = max 0 $ defaultListIndent*(nBuls + nOrds - 1) + defaultIndent*(nBlockQuotes + nDefLists) props = inTags True "Properties" [] (basedOn $$ tabList $$ numbForm) where font = if codeBlockName `Text.isInfixOf` s then monospacedFont else empty basedOn = inTags False "BasedOn" [("type", "object")] (text "$ID/NormalParagraphStyle") $$ font tabList = if isBulletList then inTags True "TabList" [("type","list")] $ inTags True "ListItem" [("type","record")] $ vcat [ inTags False "Alignment" [("type","enumeration")] $ text "LeftAlign" , inTags False "AlignmentCharacter" [("type","string")] $ text "." , selfClosingTag "Leader" [("type","string")] , inTags False "Position" [("type","unit")] $ text $ show $ defaultListIndent * (nBuls + nOrds) ] else empty makeNumb name = inTags False "NumberingFormat" [("type", "string")] (text name) numbForm | Text.isInfixOf lowerRomanName s = makeNumb "i, ii, iii, iv..." | Text.isInfixOf upperRomanName s = makeNumb "I, II, III, IV..." | Text.isInfixOf lowerAlphaName s = makeNumb "a, b, c, d..." | Text.isInfixOf upperAlphaName s = makeNumb "A, B, C, D..." | otherwise = empty in inTags True "ParagraphStyle" ([("Self", "ParagraphStyle/"<>s), ("Name", s)] ++ attrs') props -- | Convert a WriterState with its inline styles to the ICML listing of Character Styles. charStylesToDoc :: WriterState -> Doc Text charStylesToDoc st = vcat $ map makeStyle $ Set.toAscList $ inlineStyles st where makeStyle s = let attrs = concatMap (contains s) [ (strikeoutName, ("StrikeThru", "true")) , (superscriptName, ("Position", "Superscript")) , (subscriptName, ("Position", "Subscript")) , (smallCapsName, ("Capitalization", "SmallCaps")) ] attrs' | Text.isInfixOf emphName s && Text.isInfixOf strongName s = ("FontStyle", "Bold Italic") : attrs | Text.isInfixOf strongName s = ("FontStyle", "Bold") : attrs | Text.isInfixOf emphName s = ("FontStyle", "Italic") : attrs | otherwise = attrs props = inTags True "Properties" [] $ inTags False "BasedOn" [("type", "object")] (text "$ID/NormalCharacterStyle") $$ font where font = if codeName `Text.isInfixOf` s then monospacedFont else empty in inTags True "CharacterStyle" ([("Self", "CharacterStyle/"<>s), ("Name", s)] ++ attrs') props -- | Escape colon characters as %3a escapeColons :: Text -> Text escapeColons txt = Text.replace ":" "%3a" txt -- | figure out the link destination for a given URL -- | HyperlinkURLDestination with more than one colon crashes CS6 makeDest :: Text -> Doc Text makeDest txt = literal $ if "#" `Text.isPrefixOf` txt then "HyperlinkTextDestination/" <> escTxt else "HyperlinkURLDestination/" <> escTxt where escTxt = escapeColons $ escapeStringForXML txt -- | Convert a list of (identifier, url) pairs to the ICML listing of hyperlinks. hyperlinksToDoc :: Hyperlink -> Doc Text hyperlinksToDoc [] = empty hyperlinksToDoc (x:xs) = hyp x $$ hyperlinksToDoc xs where hyp (ident, url) = hdest $$ hlink where hdest = if "#" `Text.isPrefixOf` url then empty else selfClosingTag "HyperlinkURLDestination" [("Self", "HyperlinkURLDestination/"<>escapeColons url), ("Name","link"), ("DestinationURL",url), ("DestinationUniqueKey","1")] -- HyperlinkURLDestination with more than one colon crashes CS6 hlink = inTags True "Hyperlink" [("Self","uf-"<>tshow ident), ("Name",url), ("Source","htss-"<>tshow ident), ("Visible","false"), ("DestinationUniqueKey","1")] $ inTags True "Properties" [] $ inTags False "BorderColor" [("type","enumeration")] (text "Black") $$ inTags False "Destination" [("type","object")] (makeDest url) -- | Key for specifying user-defined styles dynamicStyleKey :: Text dynamicStyleKey = "custom-style" -- | Convert a list of Pandoc blocks to ICML. blocksToICML :: PandocMonad m => WriterOptions -> Style -> [Block] -> WS m (Doc Text) blocksToICML opts style lst = do docs <- mapM (blockToICML opts style) lst return $ intersperseBrs docs -- | Convert a Pandoc block element to ICML. blockToICML :: PandocMonad m => WriterOptions -> Style -> Block -> WS m (Doc Text) blockToICML opts style (Plain lst) = parStyle opts style "" lst blockToICML opts style (Para lst) = parStyle opts (paragraphName:style) "" lst blockToICML opts style (LineBlock lns) = blockToICML opts style $ linesToPara lns blockToICML opts style (CodeBlock _ str) = parStyle opts (codeBlockName:style) "" [Str str] blockToICML _ _ b@(RawBlock f str) | f == Format "icml" = return $ literal str | otherwise = do report $ BlockNotRendered b return empty blockToICML opts style (BlockQuote blocks) = blocksToICML opts (blockQuoteName:style) blocks blockToICML opts style (OrderedList attribs lst) = listItemsToICML opts orderedListName style (Just attribs) lst blockToICML opts style (BulletList lst) = listItemsToICML opts bulletListName style Nothing lst blockToICML opts style (DefinitionList lst) = intersperseBrs `fmap` mapM (definitionListItemToICML opts style) lst blockToICML opts style (Header lvl (ident, cls, _) lst) = let stl = (headerName <> tshow lvl <> unnumbered):style unnumbered = if "unnumbered" `elem` cls then " (unnumbered)" else "" in parStyle opts stl ident lst blockToICML _ _ HorizontalRule = return empty -- we could insert a page break instead blockToICML opts style (Table attr blkCapt specs thead tbody tfoot) = let (caption, aligns, widths, headers, rows) = toLegacyTable blkCapt specs thead tbody tfoot style' = tableName : style noHeader = all null headers nrHeaders = if noHeader then "0" else "1" nrRows = length rows nrCols = if null rows then 0 else length $ head rows rowsToICML [] _ = return empty rowsToICML (col:rest) rowNr = liftM2 ($$) (colsToICML col aligns rowNr (0::Int)) $ rowsToICML rest (rowNr+1) colsToICML [] _ _ _ = return empty colsToICML _ [] _ _ = return empty colsToICML (cell:rest) (alig:restAligns) rowNr colNr = do let stl = if rowNr == 0 && not noHeader then tableHeaderName:style' else style' stl' | alig == AlignLeft = alignLeftName : stl | alig == AlignRight = alignRightName : stl | alig == AlignCenter = alignCenterName : stl | otherwise = stl c <- blocksToICML opts stl' cell let cl = return $ inTags True "Cell" [("Name", tshow colNr <>":"<> tshow rowNr), ("AppliedCellStyle","CellStyle/Cell")] c liftM2 ($$) cl $ colsToICML rest restAligns rowNr (colNr+1) in do let tabl = if noHeader then rows else headers:rows cells <- rowsToICML tabl (0::Int) let colWidths w = [("SingleColumnWidth",tshow $ 500 * w) | w > 0] let tupToDoc tup = selfClosingTag "Column" $ ("Name",tshow $ fst tup) : colWidths (snd tup) let colDescs = vcat $ zipWith (curry tupToDoc) [0..nrCols-1] widths let (_,_,kvs) = attr let dynamicStyle = fromMaybe "Table" (lookup dynamicStyleKey kvs) let tableDoc = return $ inTags True "Table" [ ("AppliedTableStyle","TableStyle/" <> dynamicStyle) , ("HeaderRowCount", nrHeaders) , ("BodyRowCount", tshow nrRows) , ("ColumnCount", tshow nrCols) ] (colDescs $$ cells) liftM2 ($$) tableDoc $ parStyle opts (tableCaptionName:style) "" caption blockToICML opts style (Div (_ident, _, kvs) lst) = let dynamicStyle = maybeToList $ lookup dynamicStyleKey kvs in blocksToICML opts (dynamicStyle <> style) lst blockToICML opts style (Figure attr capt@(Caption _ longcapt) body) = case body of [Plain [img@(Image {})]] -> do figure <- parStyle opts (figureName:style) "" [img] caption <- parStyle opts (imgCaptionName:style) "" $ blocksToInlines longcapt return $ intersperseBrs [figure, caption] _ -> -- fallback to rendering the figure as a Div blockToICML opts style $ figureDiv attr capt body -- | Convert a list of lists of blocks to ICML list items. listItemsToICML :: PandocMonad m => WriterOptions -> Text -> Style -> Maybe ListAttributes -> [[Block]] -> WS m (Doc Text) listItemsToICML _ _ _ _ [] = return empty listItemsToICML opts listType style attribs (first:rest) = do st <- get put st{ listDepth = 1 + listDepth st} let stl = listType:style let f = listItemToICML opts stl True attribs first let r = map (listItemToICML opts stl False attribs) rest docs <- sequence $ f:r s <- get let maxD = max (maxListDepth s) (listDepth s) put s{ listDepth = 1, maxListDepth = maxD } return $ intersperseBrs docs -- | Convert a list of blocks to ICML list items. listItemToICML :: PandocMonad m => WriterOptions -> Style -> Bool-> Maybe ListAttributes -> [Block] -> WS m (Doc Text) listItemToICML opts style isFirst attribs item = let makeNumbStart (Just (beginsWith, numbStl, _)) = let doN DefaultStyle = [] doN LowerRoman = [lowerRomanName] doN UpperRoman = [upperRomanName] doN LowerAlpha = [lowerAlphaName] doN UpperAlpha = [upperAlphaName] doN _ = [] bw = [beginsWithName <> tshow beginsWith | beginsWith > 1] in doN numbStl ++ bw makeNumbStart Nothing = [] stl = if isFirst then firstListItemName:style else style stl' = makeNumbStart attribs ++ stl in if length item > 1 then do let insertTab (Para lst) = blockToICML opts (subListParName:style) $ Para $ Str "\t":lst insertTab block = blockToICML opts style block f <- blockToICML opts stl' $ head item r <- mapM insertTab $ tail item return $ intersperseBrs (f : r) else blocksToICML opts stl' item definitionListItemToICML :: PandocMonad m => WriterOptions -> Style -> ([Inline],[[Block]]) -> WS m (Doc Text) definitionListItemToICML opts style (term,defs) = do term' <- parStyle opts (defListTermName:style) "" term defs' <- mapM (blocksToICML opts (defListDefName:style)) defs return $ intersperseBrs (term' : defs') -- | Convert a list of inline elements to ICML. inlinesToICML :: PandocMonad m => WriterOptions -> Style -> Text -> [Inline] -> WS m (Doc Text) inlinesToICML opts style ident lst = vcat `fmap` mapM (inlineToICML opts style ident) (mergeStrings opts lst) -- | Convert an inline element to ICML. inlineToICML :: PandocMonad m => WriterOptions -> Style -> Text -> Inline -> WS m (Doc Text) inlineToICML _ style ident (Str str) = charStyle style ident $ literal $ escapeStringForXML str inlineToICML opts style ident (Emph lst) = inlinesToICML opts (emphName:style) ident lst inlineToICML opts style ident (Underline lst) = inlinesToICML opts (underlineName:style) ident lst inlineToICML opts style ident (Strong lst) = inlinesToICML opts (strongName:style) ident lst inlineToICML opts style ident (Strikeout lst) = inlinesToICML opts (strikeoutName:style) ident lst inlineToICML opts style ident (Superscript lst) = inlinesToICML opts (superscriptName:style) ident lst inlineToICML opts style ident (Subscript lst) = inlinesToICML opts (subscriptName:style) ident lst inlineToICML opts style ident (SmallCaps lst) = inlinesToICML opts (smallCapsName:style) ident lst inlineToICML opts style ident (Quoted SingleQuote lst) = inlinesToICML opts style ident $ mergeStrings opts $ [Str "‘"] ++ lst ++ [Str "’"] inlineToICML opts style ident (Quoted DoubleQuote lst) = inlinesToICML opts style ident $ mergeStrings opts $ [Str "“"] ++ lst ++ [Str "”"] inlineToICML opts style ident (Cite _ lst) = inlinesToICML opts (citeName:style) ident lst inlineToICML _ style ident (Code _ str) = charStyle (codeName:style) ident $ literal $ escapeStringForXML str inlineToICML _ style ident Space = charStyle style ident space inlineToICML opts style ident SoftBreak = case writerWrapText opts of WrapAuto -> charStyle style ident space WrapNone -> charStyle style ident space WrapPreserve -> charStyle style ident cr inlineToICML _ style ident LineBreak = charStyle style ident $ literal lineSeparator inlineToICML opts style ident (Math mt str) = lift (texMathToInlines mt str) >>= (fmap mconcat . mapM (inlineToICML opts style ident)) inlineToICML _ _ _ il@(RawInline f str) | f == Format "icml" = return $ literal str | otherwise = do report $ InlineNotRendered il return empty inlineToICML opts style ident (Link _ lst (url, title)) = do content <- inlinesToICML opts (linkName:style) ident lst state $ \st -> let link_id = if null $ links st then 1::Int else 1 + fst (head $ links st) newst = st{ links = (link_id, url):links st } cont = inTags True "HyperlinkTextSource" [("Self","htss-"<>tshow link_id), ("Name",title), ("Hidden","false")] content in (cont, newst) inlineToICML opts style _ident (Image attr _ target) = imageICML opts style attr target inlineToICML opts style _ (Note lst) = footnoteToICML opts style lst inlineToICML opts style _ (Span (ident, _, kvs) lst) = let dynamicStyle = maybeToList $ lookup dynamicStyleKey kvs in inlinesToICML opts (dynamicStyle <> style) ident lst -- ident will be the id of the span, that we need to use down in the hyperlink setter -- if T.null ident -- then -- else do -- | Convert a list of block elements to an ICML footnote. footnoteToICML :: PandocMonad m => WriterOptions -> Style -> [Block] -> WS m (Doc Text) footnoteToICML opts style lst = let insertTab (Para ls) = blockToICML opts (footnoteName:style) $ Para $ Str "\t":ls insertTab block = blockToICML opts (footnoteName:style) block in do contents <- mapM insertTab lst let number = inTags True "ParagraphStyleRange" [] $ inTags True "CharacterStyleRange" [] $ inTagsSimple "Content" "<?ACE 4?>" return $ inTags True "CharacterStyleRange" [("AppliedCharacterStyle","$ID/NormalCharacterStyle"), ("Position","Superscript")] $ inTags True "Footnote" [] $ number $$ intersperseBrs contents -- | Auxiliary function to merge Space elements into the adjacent Strs. mergeStrings :: WriterOptions -> [Inline] -> [Inline] mergeStrings opts = mergeStrings' . map spaceToStr where spaceToStr Space = Str " " spaceToStr SoftBreak = case writerWrapText opts of WrapPreserve -> Str "\n" _ -> Str " " spaceToStr x = x mergeStrings' (Str x : Str y : zs) = mergeStrings' (Str (x <> y) : zs) mergeStrings' (x : xs) = x : mergeStrings' xs mergeStrings' [] = [] -- | Intersperse line breaks intersperseBrs :: [Doc Text] -> Doc Text intersperseBrs = vcat . intersperse (selfClosingTag "Br" []) . filter (not . isEmpty) -- | Wrap a list of inline elements in an ICML Paragraph Style parStyle :: PandocMonad m => WriterOptions -> Style -> Text -> [Inline] -> WS m (Doc Text) parStyle opts style ident lst = let slipIn x y = if Text.null y then x else x <> " > " <> y stlStr = foldr slipIn "" $ reverse style stl = if Text.null stlStr then "" else "ParagraphStyle/" <> stlStr attrs = ("AppliedParagraphStyle", stl) attrs' = if firstListItemName `elem` style then let ats = attrs : [("NumberingContinue", "false")] begins = filter (Text.isPrefixOf beginsWithName) style in if null begins then ats else let i = fromMaybe "" $ Text.stripPrefix beginsWithName $ head begins in ("NumberingStartAt", i) : ats else [attrs] in do content <- inlinesToICML opts [] ident lst let cont = inTags True "ParagraphStyleRange" attrs' content state $ \st -> (cont, st{ blockStyles = Set.insert stlStr $ blockStyles st }) -- | Create the destination name makeDestName :: Text -> Text makeDestName name = "#" <> Text.replace " " "-" name -- | Create a HyperlinkTextDestination for a given identifier makeLinkDest :: Text -> Doc Text -> Doc Text makeLinkDest ident cont = vcat [ selfClosingTag "HyperlinkTextDestination" [("Self", "HyperlinkTextDestination/"<>makeDestName ident), ("Name","Destination"), ("DestinationUniqueKey","1")] , inTagsSimple "Content" $ flush cont ] -- | Create the markup for the content (incl. named destinations) -- | NOTE: since we have no easy way to get actual named dests, we just create them for any short content blocks makeContent :: Text -> Doc Text -> Doc Text makeContent ident cont | isEmpty cont = empty | not (Text.null ident) = makeLinkDest ident cont | otherwise = inTagsSimple "Content" $ flush cont -- | Wrap a Doc in an ICML Character Style. charStyle :: PandocMonad m => Style -> Text -> Doc Text -> WS m (Doc Text) charStyle style ident content = let (stlStr, attrs) = styleToStrAttr style doc = inTags True "CharacterStyleRange" attrs $ makeContent ident content in state $ \st -> let styles = if Text.null stlStr then st else st{ inlineStyles = Set.insert stlStr $ inlineStyles st } in (doc, styles) -- | Transform a Style to a tuple of String (eliminating duplicates and ordered) and corresponding attribute. styleToStrAttr :: Style -> (Text, [(Text, Text)]) styleToStrAttr style = let stlStr = Text.unwords $ Set.toAscList $ Set.fromList style stl = if null style then "$ID/NormalCharacterStyle" else "CharacterStyle/" <> stlStr attrs = [("AppliedCharacterStyle", stl)] in (stlStr, attrs) -- | Assemble an ICML Image. imageICML :: PandocMonad m => WriterOptions -> Style -> Attr -> Target -> WS m (Doc Text) imageICML opts style attr (src, _) = do imgS <- catchError (do (img, _) <- fetchItem src case imageSize opts img of Right size -> return size Left msg -> do report $ CouldNotDetermineImageSize src msg return def) (\e -> do report $ CouldNotFetchResource src $ tshow e return def) let (ow, oh) = sizeInPoints imgS (imgWidth, imgHeight) = desiredSizeInPoints opts attr imgS hw = showFl $ ow / 2 hh = showFl $ oh / 2 scale = showFl (imgWidth / ow) <> " 0 0 " <> showFl (imgHeight / oh) src' = if isURI src then src else "file:" <> src (stlStr, attrs) = styleToStrAttr style props = inTags True "Properties" [] $ inTags True "PathGeometry" [] $ inTags True "GeometryPathType" [("PathOpen","false")] $ inTags True "PathPointArray" [] $ vcat [ selfClosingTag "PathPointType" [("Anchor", "-"<>hw<>" -"<>hh), ("LeftDirection", "-"<>hw<>" -"<>hh), ("RightDirection", "-"<>hw<>" -"<>hh)] , selfClosingTag "PathPointType" [("Anchor", "-"<>hw<>" "<>hh), ("LeftDirection", "-"<>hw<>" "<>hh), ("RightDirection", "-"<>hw<>" "<>hh)] , selfClosingTag "PathPointType" [("Anchor", hw<>" "<>hh), ("LeftDirection", hw<>" "<>hh), ("RightDirection", hw<>" "<>hh)] , selfClosingTag "PathPointType" [("Anchor", hw<>" -"<>hh), ("LeftDirection", hw<>" -"<>hh), ("RightDirection", hw<>" -"<>hh)] ] isdata = "data:" `Text.isPrefixOf` src' && "base64," `Text.isInfixOf` src' contents = if isdata then -- see #8398 inTags True "Contents" [] $ literal ("<![CDATA[" <> Text.replace "%20" "" (Text.drop 1 (Text.dropWhile (/=',') src')) <> "]]>") else mempty link = if isdata then mempty else selfClosingTag "Link" [("Self", "ueb"), ("LinkResourceURI", src')] image = inTags True "Image" [("Self","ue6"), ("ItemTransform", scale<>" -"<>hw<>" -"<>hh)] $ vcat [ inTags True "Properties" [] $ vcat [ inTags True "Profile" [("type","string")] $ text "$ID/Embedded" , selfClosingTag "GraphicBounds" [("Left","0"), ("Top","0") , ("Right", showFl $ ow*ow / imgWidth) , ("Bottom", showFl $ oh*oh / imgHeight)] , contents ] , link ] doc = inTags True "CharacterStyleRange" attrs $ inTags True "Rectangle" [("Self","uec"), ("StrokeWeight", "0"), ("ItemTransform", scale<>" "<>hw<>" -"<>hh)] (props $$ image) state $ \st -> (doc, st{ inlineStyles = Set.insert stlStr $ inlineStyles st } ) ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/Ipynb.hs�������������������������������������������������������0000644�0000000�0000000�00000026642�07346545000�017160� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {- | Module : Text.Pandoc.Writers.Ipynb Copyright : Copyright (C) 2019-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable Ipynb (Jupyter notebook JSON format) writer for pandoc. -} module Text.Pandoc.Writers.Ipynb ( writeIpynb ) where import Control.Monad (foldM) import Control.Monad.State ( StateT(runStateT), modify ) import qualified Data.Map as M import Data.Maybe (catMaybes, fromMaybe) import Text.Pandoc.Options import Text.Pandoc.Definition import Data.Ipynb as Ipynb import Text.Pandoc.Walk (walkM) import qualified Text.Pandoc.Builder as B import Text.Pandoc.Class.PandocMonad import Text.Pandoc.Logging import Data.Text (Text) import qualified Data.Text as T import qualified Data.Text.Lazy as TL import Data.Aeson as Aeson import qualified Text.Pandoc.UTF8 as UTF8 import Text.Pandoc.Shared (safeRead) import Text.Pandoc.URI (isURI) import Text.Pandoc.Writers.Shared (metaToContext') import Text.Pandoc.Writers.Markdown (writePlain, writeMarkdown) import qualified Data.Text.Encoding as TE import qualified Data.ByteString.Lazy as BL import Data.Aeson.Encode.Pretty (Config(..), defConfig, encodePretty', keyOrder, Indent(Spaces)) import Text.DocLayout (literal) import Text.Pandoc.UUID (getRandomUUID) import Data.Char (isAscii, isAlphaNum) writeIpynb :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeIpynb opts d = do notebook <- pandocToNotebook opts d return $ TE.decodeUtf8 . BL.toStrict . encodePretty' defConfig{ confIndent = Spaces 1, confTrailingNewline = True, confCompare = keyOrder [ "cells", "nbformat", "nbformat_minor", "cell_type", "output_type", "execution_count", "metadata", "outputs", "source", "data", "name", "text" ] <> compare } $ notebook pandocToNotebook :: PandocMonad m => WriterOptions -> Pandoc -> m (Notebook NbV4) pandocToNotebook opts (Pandoc meta blocks) = do -- we use writePlain w/ default options because e.g. we don't want -- to add backslash escapes or convert en dashes, see #7928 let blockWriter bs = literal <$> writePlain def (Pandoc nullMeta bs) let inlineWriter ils = literal . T.stripEnd <$> writePlain def (Pandoc nullMeta [Plain ils]) let jupyterMeta = case lookupMeta "jupyter" meta of Just (MetaMap m) -> Meta m _ -> mempty let nbformat = case (lookupMeta "nbformat" jupyterMeta, lookupMeta "nbformat_minor" jupyterMeta) of (Just (MetaInlines [Str "4"]), Just (MetaInlines [Str y])) -> case safeRead y of Just z -> (4, z) Nothing -> (4, 5) _ -> (4, 5) -- write as v4.5 metadata' <- toJSON <$> metaToContext' blockWriter inlineWriter (B.deleteMeta "nbformat" . B.deleteMeta "nbformat_minor" $ jupyterMeta) -- convert from a Value (JSON object) to a M.Map Text Value: let metadata = case fromJSON metadata' of Error _ -> mempty -- TODO warning here? shouldn't happen Success x -> x cells <- extractCells nbformat opts blocks return $ Notebook{ notebookMetadata = metadata , notebookFormat = nbformat , notebookCells = cells } addAttachment :: PandocMonad m => Inline -> StateT (M.Map Text MimeBundle) m Inline addAttachment (Image attr lab (src,tit)) | not (isURI src) = do (img, mbmt) <- fetchItem src let mt = fromMaybe "application/octet-stream" mbmt modify $ M.insert src (MimeBundle (M.insert mt (BinaryData img) mempty)) return $ Image attr lab ("attachment:" <> src, tit) addAttachment x = return x extractCells :: PandocMonad m => (Int, Int) -> WriterOptions -> [Block] -> m [Ipynb.Cell a] extractCells _ _ [] = return [] extractCells nbformat opts (Div (ident,classes,kvs) xs : bs) | "cell" `elem` classes , "markdown" `elem` classes = do let meta = pairsToJSONMeta kvs (newdoc, attachments) <- runStateT (walkM addAttachment (Pandoc nullMeta xs)) mempty source <- writeMarkdown opts{ writerTemplate = Nothing } newdoc uuid <- uuidFrom nbformat ident (Ipynb.Cell{ cellType = Markdown , cellId = uuid , cellSource = Source $ breakLines $ T.stripEnd source , cellMetadata = meta , cellAttachments = if M.null attachments then Nothing else Just $ MimeAttachments attachments } :) <$> extractCells nbformat opts bs | "cell" `elem` classes , "code" `elem` classes = do let (codeContent, rest) = case xs of (CodeBlock _ t : ys) -> (t, ys) ys -> (mempty, ys) let meta = pairsToJSONMeta kvs outputs <- catMaybes <$> mapM blockToOutput rest let exeCount = lookup "execution_count" kvs >>= safeRead uuid <- uuidFrom nbformat ident (Ipynb.Cell{ cellType = Ipynb.Code { codeExecutionCount = exeCount , codeOutputs = outputs } , cellId = uuid , cellSource = Source $ breakLines codeContent , cellMetadata = meta , cellAttachments = Nothing } :) <$> extractCells nbformat opts bs | "cell" `elem` classes , "raw" `elem` classes = case consolidateAdjacentRawBlocks xs of [RawBlock (Format f) raw] -> do let format' = case T.toLower f of "html" -> "text/html" "html4" -> "text/html" "html5" -> "text/html" "s5" -> "text/html" "slidy" -> "text/html" "slideous" -> "text/html" "dzslides" -> "text/html" "revealjs" -> "text/html" "latex" -> "text/latex" "markdown" -> "text/markdown" "rst" -> "text/restructuredtext" "asciidoc" -> "text/asciidoc" _ -> f uuid <- uuidFrom nbformat ident (Ipynb.Cell{ cellType = Raw , cellId = uuid , cellSource = Source $ breakLines raw , cellMetadata = if format' == "ipynb" -- means no format given then mempty else JSONMeta $ M.insert "raw_mimetype" (Aeson.String format') mempty , cellAttachments = Nothing } :) <$> extractCells nbformat opts bs _ -> extractCells nbformat opts bs extractCells nbformat opts (CodeBlock (ident,classes,kvs) raw : bs) | "code" `elem` classes = do let meta = pairsToJSONMeta kvs let exeCount = lookup "execution_count" kvs >>= safeRead uuid <- uuidFrom nbformat ident (Ipynb.Cell{ cellType = Ipynb.Code { codeExecutionCount = exeCount , codeOutputs = [] } , cellId = uuid , cellSource = Source $ breakLines raw , cellMetadata = meta , cellAttachments = Nothing } :) <$> extractCells nbformat opts bs extractCells nbformat opts (b:bs) = do let isCodeOrDiv (CodeBlock (_,cl,_) _) = "code" `elem` cl isCodeOrDiv (Div (_,cl,_) _) = "cell" `elem` cl isCodeOrDiv _ = False let (mds, rest) = break isCodeOrDiv bs extractCells nbformat opts (Div ("",["cell","markdown"],[]) (b:mds) : rest) -- Return Nothing if nbformat < 4.5. -- Otherwise construct a UUID, using the existing identifier -- if it is a valid UUID, otherwise constructing a new one. uuidFrom :: PandocMonad m => (Int, Int) -> Text -> m (Maybe Text) uuidFrom nbformat ident = if nbformat >= (4,5) then if isValidUUID ident then return $ Just ident else Just . T.pack . drop 9 . show <$> getRandomUUID else return Nothing where isValidUUID t = not (T.null t) && T.length t <= 64 && T.all isValidUUIDChar t isValidUUIDChar c = isAscii c && (isAlphaNum c || c == '-' || c == '_') blockToOutput :: PandocMonad m => Block -> m (Maybe (Output a)) blockToOutput (Div (_,["output","stream",sname],_) (CodeBlock _ t:_)) = return $ Just $ Stream{ streamName = sname , streamText = Source (breakLines t) } blockToOutput (Div (_,["output","error"],kvs) (CodeBlock _ t:_)) = return $ Just $ Err{ errName = fromMaybe mempty (lookup "ename" kvs) , errValue = fromMaybe mempty (lookup "evalue" kvs) , errTraceback = breakLines t } blockToOutput (Div (_,["output","execute_result"],kvs) bs) = do (data', metadata') <- extractData bs return $ Just $ ExecuteResult{ executeCount = fromMaybe 0 $ lookup "execution_count" kvs >>= safeRead , executeData = data' , executeMetadata = pairsToJSONMeta kvs <> metadata'} blockToOutput (Div (_,["output","display_data"],kvs) bs) = do (data', metadata') <- extractData bs return $ Just $ DisplayData { displayData = data' , displayMetadata = pairsToJSONMeta kvs <> metadata'} blockToOutput _ = return Nothing extractData :: PandocMonad m => [Block] -> m (MimeBundle, JSONMeta) extractData bs = do (mmap, meta) <- foldM go mempty $ consolidateAdjacentRawBlocks bs return (MimeBundle mmap, meta) where go (mmap, meta) b@(Para [Image (_,_,kvs) _ (src,_)]) = do (img, mbmt) <- fetchItem src case mbmt of Just mt -> return (M.insert mt (BinaryData img) mmap, meta <> pairsToJSONMeta kvs) Nothing -> (mmap, meta) <$ report (BlockNotRendered b) go (mmap, meta) b@(CodeBlock (_,["json"],_) code) = case decode (UTF8.fromTextLazy $ TL.fromStrict code) of Just v -> return (M.insert "application/json" (JsonData v) mmap, meta) Nothing -> (mmap, meta) <$ report (BlockNotRendered b) go (mmap, meta) (CodeBlock ("",[],[]) code) = return (M.insert "text/plain" (TextualData code) mmap, meta) go (mmap, meta) (RawBlock (Format "html") raw) = return (M.insert "text/html" (TextualData raw) mmap, meta) go (mmap, meta) (RawBlock (Format "latex") raw) = return (M.insert "text/latex" (TextualData raw) mmap, meta) go (mmap, meta) (RawBlock (Format "markdown") raw) = return (M.insert "text/markdown" (TextualData raw) mmap, meta) go (mmap, meta) (Div _ bs') = foldM go (mmap, meta) bs' go (mmap, meta) b = (mmap, meta) <$ report (BlockNotRendered b) pairsToJSONMeta :: [(Text, Text)] -> JSONMeta pairsToJSONMeta kvs = JSONMeta $ M.fromList [(k, case Aeson.decode (UTF8.fromTextLazy $ TL.fromStrict v) of Just val -> val Nothing -> String v) | (k,v) <- kvs , k /= "execution_count" ] consolidateAdjacentRawBlocks :: [Block] -> [Block] consolidateAdjacentRawBlocks [] = [] consolidateAdjacentRawBlocks (RawBlock f1 x : RawBlock f2 y : xs) | f1 == f2 = consolidateAdjacentRawBlocks (RawBlock f1 (x <> "\n" <> y) : xs) consolidateAdjacentRawBlocks (x : xs) = x : consolidateAdjacentRawBlocks xs ����������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/JATS.hs��������������������������������������������������������0000644�0000000�0000000�00000061567�07346545000�016645� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE ViewPatterns #-} {- | Module : Text.Pandoc.Writers.JATS Copyright : 2017-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable Conversion of 'Pandoc' documents to JATS XML. Reference: https://jats.nlm.nih.gov/publishing/tag-library -} module Text.Pandoc.Writers.JATS ( writeJATS , writeJatsArchiving , writeJatsPublishing , writeJatsArticleAuthoring ) where import Control.Applicative ((<|>)) import Control.Monad import Control.Monad.Reader import Control.Monad.State import Data.Generics (everywhere, mkT) import Data.List (partition) import qualified Data.Map as M import Data.Maybe (fromMaybe, listToMaybe) import Data.Time (toGregorian, Day, parseTimeM, defaultTimeLocale, formatTime) import qualified Data.Text as T import Data.Text (Text) import Text.Pandoc.Citeproc (getReferences) import Text.Pandoc.Class.PandocMonad (PandocMonad, report) import Text.Pandoc.Definition import Text.Pandoc.Highlighting (languages, languagesByExtension) import Text.Pandoc.Logging import Text.Pandoc.MIME (getMimeType) import Text.Pandoc.Walk (walk) import Text.Pandoc.Options import Text.DocLayout import Text.Pandoc.Shared import Text.Pandoc.URI import Text.Pandoc.Templates (renderTemplate) import Text.DocTemplates (Context(..), Val(..)) import Text.Pandoc.Writers.JATS.References (referencesToJATS) import Text.Pandoc.Writers.JATS.Table (tableToJATS) import Text.Pandoc.Writers.JATS.Types import Text.Pandoc.Writers.Math import Text.Pandoc.Writers.Shared import Text.Pandoc.XML import Text.TeXMath import qualified Text.Pandoc.Writers.AnnotatedTable as Ann import qualified Text.XML.Light as Xml -- | Convert a @'Pandoc'@ document to JATS (Archiving and Interchange -- Tag Set.) writeJatsArchiving :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeJatsArchiving = writeJats TagSetArchiving -- | Convert a @'Pandoc'@ document to JATS (Journal Publishing Tag Set.) writeJatsPublishing :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeJatsPublishing = writeJats TagSetPublishing -- | Convert a @'Pandoc'@ document to JATS (Archiving and Interchange -- Tag Set.) writeJatsArticleAuthoring :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeJatsArticleAuthoring = writeJats TagSetArticleAuthoring -- | Alias for @'writeJatsArchiving'@. This function exists for backwards -- compatibility, but will be deprecated in the future. Use -- @'writeJatsArchiving'@ instead. {-# DEPRECATED writeJATS "Use writeJatsArchiving instead" #-} writeJATS :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeJATS = writeJatsArchiving -- | Convert a @'Pandoc'@ document to JATS. writeJats :: PandocMonad m => JATSTagSet -> WriterOptions -> Pandoc -> m Text writeJats tagSet opts d = do refs <- if extensionEnabled Ext_element_citations $ writerExtensions opts then getReferences Nothing d else pure [] let environment = JATSEnv { jatsTagSet = tagSet , jatsInlinesWriter = inlinesToJATS , jatsBlockWriter = wrappedBlocksToJATS , jatsReferences = refs } let initialState = JATSState { jatsNotes = [] } runReaderT (evalStateT (docToJATS opts d) initialState) environment -- | Convert Pandoc document to string in JATS format. docToJATS :: PandocMonad m => WriterOptions -> Pandoc -> JATS m Text docToJATS opts (Pandoc meta blocks) = do let isBackBlock (Div ("refs",_,_) _) = True isBackBlock _ = False let (backblocks, bodyblocks) = partition isBackBlock blocks -- The numbering here follows LaTeX's internal numbering let startLvl = case writerTopLevelDivision opts of TopLevelPart -> -1 TopLevelChapter -> 0 TopLevelSection -> 1 TopLevelDefault -> 1 let fromBlocks = blocksToJATS opts . makeSections False (Just startLvl) let colwidth = if writerWrapText opts == WrapAuto then Just $ writerColumns opts else Nothing metadata <- metaToContext opts fromBlocks (fmap chomp . inlinesToJATS opts) meta main <- fromBlocks bodyblocks notes <- gets (reverse . map snd . jatsNotes) backs <- fromBlocks backblocks tagSet <- asks jatsTagSet -- In the "Article Authoring" tag set, occurrence of fn-group elements -- is restricted to table footers. Footnotes have to be placed inline. let fns = if null notes || tagSet == TagSetArticleAuthoring then mempty else inTagsIndented "fn-group" $ vcat notes let back = backs $$ fns let date = case getField "date" metadata of Nothing -> NullVal Just (SimpleVal (x :: Doc Text)) -> case parseDate (render Nothing x) of Nothing -> NullVal Just day -> let (y,m,d) = toGregorian day in MapVal . Context $ M.fromList [("year" :: Text, SimpleVal $ text $ show y) ,("month", SimpleVal $ text $ show m) ,("day", SimpleVal $ text $ show d) ,("iso-8601", SimpleVal $ text $ formatTime defaultTimeLocale "%F" day) ] Just x -> x title' <- inlinesToJATS opts $ map fixLineBreak (lookupMetaInlines "title" meta) let context = defField "body" main $ defField "back" back $ resetField "title" title' $ resetField "date" date $ defField "mathml" (case writerHTMLMathMethod opts of MathML -> True _ -> False) metadata return $ render colwidth $ (if writerPreferAscii opts then fmap toEntities else id) $ case writerTemplate opts of Nothing -> main Just tpl -> renderTemplate tpl context -- | Convert a list of Pandoc blocks to JATS. blocksToJATS :: PandocMonad m => WriterOptions -> [Block] -> JATS m (Doc Text) blocksToJATS = wrappedBlocksToJATS (const False) -- | Like @'blocksToJATS'@, but wraps top-level blocks into a @<p>@ -- element if the @needsWrap@ predicate evaluates to @True@. wrappedBlocksToJATS :: PandocMonad m => (Block -> Bool) -> WriterOptions -> [Block] -> JATS m (Doc Text) wrappedBlocksToJATS needsWrap opts = fmap vcat . mapM wrappedBlockToJATS where wrappedBlockToJATS b = do inner <- blockToJATS opts b return $ if needsWrap b then inTags True "p" [("specific-use","wrapper")] inner else inner -- | Auxiliary function to convert Plain block to Para. plainToPara :: Block -> Block plainToPara (Plain x) = Para x plainToPara x = x -- | Convert a list of pairs of terms and definitions into a list of -- JATS varlistentrys. deflistItemsToJATS :: PandocMonad m => WriterOptions -> [([Inline],[[Block]])] -> JATS m (Doc Text) deflistItemsToJATS opts items = vcat <$> mapM (uncurry (deflistItemToJATS opts)) items -- | Convert a term and a list of blocks into a JATS varlistentry. deflistItemToJATS :: PandocMonad m => WriterOptions -> [Inline] -> [[Block]] -> JATS m (Doc Text) deflistItemToJATS opts term defs = do term' <- inlinesToJATS opts term def' <- wrappedBlocksToJATS (not . isPara) opts $ concatMap (walk demoteHeaderAndRefs . map plainToPara) defs return $ inTagsIndented "def-item" $ inTagsSimple "term" term' $$ inTagsIndented "def" def' -- | Convert a list of lists of blocks to a list of JATS list items. listItemsToJATS :: PandocMonad m => WriterOptions -> Maybe [Text] -> [[Block]] -> JATS m (Doc Text) listItemsToJATS opts markers items = case markers of Nothing -> vcat <$> mapM (listItemToJATS opts Nothing) items Just ms -> vcat <$> zipWithM (listItemToJATS opts) (map Just ms) items -- | Convert a list of blocks into a JATS list item. listItemToJATS :: PandocMonad m => WriterOptions -> Maybe Text -> [Block] -> JATS m (Doc Text) listItemToJATS opts mbmarker item = do contents <- wrappedBlocksToJATS (not . isParaOrList) opts (walk demoteHeaderAndRefs item) return $ inTagsIndented "list-item" $ maybe empty (inTagsSimple "label" . text . T.unpack) mbmarker $$ contents languageFor :: WriterOptions -> [Text] -> Text languageFor opts classes = case langs of (l:_) -> escapeStringForXML l [] -> "" where syntaxMap = writerSyntaxMap opts isLang l = T.toLower l `elem` map T.toLower (languages syntaxMap) langsFrom s = if isLang s then [s] else (languagesByExtension syntaxMap) . T.toLower $ s langs = concatMap langsFrom classes codeAttr :: WriterOptions -> Attr -> (Text, [(Text, Text)]) codeAttr opts (ident,classes,kvs) = (lang, attr) where attr = [("id", escapeNCName ident) | not (T.null ident)] ++ [("language",lang) | not (T.null lang)] ++ [(k,v) | (k,v) <- kvs, k `elem` ["code-type", "code-version", "executable", "language-version", "orientation", "platforms", "position", "specific-use"]] lang = languageFor opts classes -- <break/> is only allowed as a direct child of <td> or <title> or -- <article-title> fixLineBreak :: Inline -> Inline fixLineBreak LineBreak = RawInline (Format "jats") "<break/>" fixLineBreak x = x -- | Convert a Pandoc block element to JATS. blockToJATS :: PandocMonad m => WriterOptions -> Block -> JATS m (Doc Text) blockToJATS opts (Div (id',"section":_,kvs) (Header _lvl _ ils : xs)) = do let idAttr = [ ("id", writerIdentifierPrefix opts <> escapeNCName id') | not (T.null id')] let otherAttrs = ["sec-type", "specific-use"] let attribs = idAttr ++ [(k,v) | (k,v) <- kvs, k `elem` otherAttrs] title' <- inlinesToJATS opts (map fixLineBreak ils) contents <- blocksToJATS opts xs return $ inTags True "sec" attribs $ inTagsSimple "title" title' $$ contents -- Bibliography reference: blockToJATS opts (Div (ident,_,_) [Para lst]) | "ref-" `T.isPrefixOf` ident = inTags True "ref" [("id", escapeNCName ident)] . inTagsSimple "mixed-citation" <$> inlinesToJATS opts lst blockToJATS opts (Div ("refs",_,_) xs) = do refs <- asks jatsReferences contents <- if null refs then blocksToJATS opts xs else referencesToJATS opts refs return $ inTagsIndented "ref-list" contents blockToJATS opts (Div (ident,[cls],kvs) bs) | cls `elem` ["fig", "caption", "table-wrap"] = do contents <- blocksToJATS opts bs let attr = [("id", escapeNCName ident) | not (T.null ident)] ++ [("xml:lang",l) | ("lang",l) <- kvs] ++ [(k,v) | (k,v) <- kvs, k `elem` ["specific-use", "content-type", "orientation", "position"]] return $ inTags True cls attr contents blockToJATS opts (Div (ident,_,kvs) bs) = do contents <- blocksToJATS opts bs let attr = [("id", escapeNCName ident) | not (T.null ident)] ++ [("xml:lang",l) | ("lang",l) <- kvs] ++ [(k,v) | (k,v) <- kvs, k `elem` ["specific-use", "content-type", "orientation", "position"]] return $ inTags True "boxed-text" attr contents blockToJATS opts (Header _ _ title) = do title' <- inlinesToJATS opts (map fixLineBreak title) return $ inTagsSimple "title" title' -- Special cases for bare images, which are rendered as graphics blockToJATS _opts (Plain [Image attr alt tgt]) = return $ graphic attr alt tgt blockToJATS _opts (Para [Image attr alt tgt]) = return $ graphic attr alt tgt -- No Plain, everything needs to be in a block-level tag blockToJATS opts (Plain lst) = blockToJATS opts (Para lst) blockToJATS opts (Para lst) = inTagsSimple "p" <$> inlinesToJATS opts lst blockToJATS opts (LineBlock lns) = blockToJATS opts $ linesToPara lns blockToJATS opts (BlockQuote blocks) = do tagSet <- asks jatsTagSet let needsWrap = if tagSet == TagSetArticleAuthoring then not . isPara else \case Header{} -> True HorizontalRule -> True _ -> False inTagsIndented "disp-quote" <$> wrappedBlocksToJATS needsWrap opts blocks blockToJATS opts (CodeBlock a str) = return $ inTags False tag attr (flush (text (T.unpack $ escapeStringForXML str))) where (lang, attr) = codeAttr opts a tag = if T.null lang then "preformat" else "code" blockToJATS _ (BulletList []) = return empty blockToJATS opts (BulletList lst) = inTags True "list" [("list-type", "bullet")] <$> listItemsToJATS opts Nothing lst blockToJATS _ (OrderedList _ []) = return empty blockToJATS opts (OrderedList (start, numstyle, delimstyle) items) = do tagSet <- asks jatsTagSet let listType = -- The Article Authoring tag set doesn't allow a more specific -- @list-type@ attribute than "order". if tagSet == TagSetArticleAuthoring then "order" else case numstyle of DefaultStyle -> "order" Decimal -> "order" Example -> "order" UpperAlpha -> "alpha-upper" LowerAlpha -> "alpha-lower" UpperRoman -> "roman-upper" LowerRoman -> "roman-lower" let simpleList = start == 1 && (delimstyle == DefaultDelim || delimstyle == Period) let markers = if simpleList then Nothing else Just $ orderedListMarkers (start, numstyle, delimstyle) inTags True "list" [("list-type", listType)] <$> listItemsToJATS opts markers items blockToJATS opts (DefinitionList lst) = inTags True "def-list" [] <$> deflistItemsToJATS opts lst blockToJATS _ b@(RawBlock f str) | f == "jats" = return $ text $ T.unpack str -- raw XML block | otherwise = do report $ BlockNotRendered b return empty blockToJATS _ HorizontalRule = return empty -- not semantic blockToJATS opts (Table attr caption colspecs thead tbody tfoot) = tableToJATS opts (Ann.toTable attr caption colspecs thead tbody tfoot) blockToJATS opts (Figure (ident, _, kvs) (Caption _short longcapt) body) = do -- Remove the alt text from images if it's the same as the caption text. let unsetAltIfDupl = \case Image attr alt tgt | stringify alt == stringify longcapt -> Image attr [] tgt inline -> inline capt <- if null longcapt then pure empty else inTagsSimple "caption" <$> blocksToJATS opts longcapt figbod <- blocksToJATS opts $ walk unsetAltIfDupl body let figattr = [("id", escapeNCName ident) | not (T.null ident)] ++ [(k,v) | (k,v) <- kvs , k `elem` [ "fig-type", "orientation" , "position", "specific-use"]] return $ inTags True "fig" figattr $ capt $$ figbod -- | Convert a list of inline elements to JATS. inlinesToJATS :: PandocMonad m => WriterOptions -> [Inline] -> JATS m (Doc Text) inlinesToJATS opts lst = hcat <$> mapM (inlineToJATS opts) (fixCitations lst) where fixCitations [] = [] fixCitations (x:xs) | needsFixing x = x : Str (stringify ys) : fixCitations zs where needsFixing (RawInline (Format "jats") z) = "<pub-id pub-id-type=" `T.isPrefixOf` z needsFixing _ = False isRawInline RawInline{} = True isRawInline _ = False (ys,zs) = break isRawInline xs fixCitations (x:xs) = x : fixCitations xs -- | Convert an inline element to JATS. inlineToJATS :: PandocMonad m => WriterOptions -> Inline -> JATS m (Doc Text) inlineToJATS _ (Str str) = return $ text $ T.unpack $ escapeStringForXML str inlineToJATS opts (Emph lst) = inTagsSimple "italic" <$> inlinesToJATS opts lst inlineToJATS opts (Underline lst) = inTagsSimple "underline" <$> inlinesToJATS opts lst inlineToJATS opts (Strong lst) = inTagsSimple "bold" <$> inlinesToJATS opts lst inlineToJATS opts (Strikeout lst) = inTagsSimple "strike" <$> inlinesToJATS opts lst inlineToJATS opts (Superscript lst) = inTagsSimple "sup" <$> inlinesToJATS opts lst inlineToJATS opts (Subscript lst) = inTagsSimple "sub" <$> inlinesToJATS opts lst inlineToJATS opts (SmallCaps lst) = inTagsSimple "sc" <$> inlinesToJATS opts lst inlineToJATS opts (Quoted SingleQuote lst) = do contents <- inlinesToJATS opts lst return $ char '‘' <> contents <> char '’' inlineToJATS opts (Quoted DoubleQuote lst) = do contents <- inlinesToJATS opts lst return $ char '“' <> contents <> char '”' inlineToJATS opts (Code a str) = return $ inTags False tag attr $ literal (escapeStringForXML str) where (lang, attr) = codeAttr opts a tag = if T.null lang then "monospace" else "code" inlineToJATS _ il@(RawInline f x) | f == "jats" = return $ literal x | otherwise = do report $ InlineNotRendered il return empty inlineToJATS _ LineBreak = return cr -- not allowed as child of p -- see https://jats.nlm.nih.gov/publishing/tag-library/1.2/element/break.html inlineToJATS _ Space = return space inlineToJATS opts SoftBreak | writerWrapText opts == WrapPreserve = return cr | otherwise = return space inlineToJATS opts (Note contents) = do tagSet <- asks jatsTagSet -- Footnotes must occur inline when using the Article Authoring tag set. if tagSet == TagSetArticleAuthoring then inTagsIndented "fn" <$> wrappedBlocksToJATS (not . isPara) opts contents else do notes <- gets jatsNotes let notenum = case notes of (n, _):_ -> n + 1 [] -> 1 thenote <- inTags True "fn" [("id", "fn" <> tshow notenum)] . (inTagsSimple "label" (literal $ tshow notenum) <>) <$> wrappedBlocksToJATS (not . isPara) opts (walk demoteHeaderAndRefs contents) modify $ \st -> st{ jatsNotes = (notenum, thenote) : notes } return $ inTags False "xref" [("ref-type", "fn"), ("rid", "fn" <> tshow notenum)] $ text (show notenum) inlineToJATS opts (Cite _ lst) = inlinesToJATS opts lst inlineToJATS opts (Span (ident,classes,kvs) ils) = do contents <- inlinesToJATS opts ils let commonAttr = [("id", escapeNCName ident) | not (T.null ident)] ++ [("xml:lang",l) | ("lang",l) <- kvs] ++ [(k,v) | (k,v) <- kvs, k `elem` ["alt", "specific-use"]] -- A named-content element is a good fit for spans, but requires a -- content-type attribute to be present. We use either the explicit -- attribute or the first class as content type. If neither is -- available, then we fall back to using a @styled-content@ element. let (tag, specificAttr) = case lookup "content-type" kvs <|> listToMaybe classes of Just ct -> ( "named-content" , ("content-type", ct) : [(k, v) | (k, v) <- kvs , k `elem` ["rid", "vocab", "vocab-identifier", "vocab-term", "vocab-term-identifier"]]) -- Fall back to styled-content Nothing -> ("styled-content" , [(k, v) | (k,v) <- kvs , k `elem` ["style", "style-type", "style-detail", "toggle"]]) let attr = commonAttr ++ specificAttr -- unwrap if wrapping element would have no attributes return $ if null attr then contents else inTags False tag attr contents inlineToJATS _ (Math t str) = do let addPref (Xml.Attr q v) | Xml.qName q == "xmlns" = Xml.Attr q{ Xml.qName = "xmlns:mml" } v | otherwise = Xml.Attr q v let fixNS' e = e{ Xml.elName = (Xml.elName e){ Xml.qPrefix = Just "mml" } } let fixNS = everywhere (mkT fixNS') . (\e -> e{ Xml.elAttribs = map addPref (Xml.elAttribs e) }) let conf = Xml.useShortEmptyTags (const False) Xml.defaultConfigPP res <- convertMath writeMathML t str let tagtype = case t of DisplayMath -> "disp-formula" InlineMath -> "inline-formula" let rawtex = text "<![CDATA[" <> literal str <> text "]]>" let texMath = inTagsSimple "tex-math" rawtex tagSet <- asks jatsTagSet return . inTagsSimple tagtype $ case res of Right r -> let mathMl = text (Xml.ppcElement conf $ fixNS r) -- tex-math is unsupported in Article Authoring tag set in if tagSet == TagSetArticleAuthoring then mathMl else inTagsSimple "alternatives" $ cr <> texMath $$ mathMl Left _ -> if tagSet /= TagSetArticleAuthoring then texMath else rawtex inlineToJATS _ (Link _attr [Str t] (T.stripPrefix "mailto:" -> Just email, _)) | escapeURI t == email = return $ inTagsSimple "email" $ literal (escapeStringForXML email) inlineToJATS opts (Link (ident,_,kvs) txt (T.uncons -> Just ('#', src), _)) = do let attr = mconcat [ [("id", escapeNCName ident) | not (T.null ident)] , [("alt", stringify txt) | not (null txt)] , [("rid", escapeNCName src)] , [(k,v) | (k,v) <- kvs, k `elem` ["ref-type", "specific-use"]] , [("ref-type", "bibr") | "ref-" `T.isPrefixOf` src] ] if null txt then return $ selfClosingTag "xref" attr else do contents <- inlinesToJATS opts txt return $ inTags False "xref" attr contents inlineToJATS opts (Link (ident,_,kvs) txt (src, tit)) = do let attr = [("id", escapeNCName ident) | not (T.null ident)] ++ [("ext-link-type", "uri"), ("xlink:href", src)] ++ [("xlink:title", tit) | not (T.null tit)] ++ [(k,v) | (k,v) <- kvs, k `elem` ["assigning-authority", "specific-use", "xlink:actuate", "xlink:role", "xlink:show", "xlink:type"]] contents <- inlinesToJATS opts txt return $ inTags False "ext-link" attr contents inlineToJATS _ (Image attr alt tgt) = do let elattr = graphicAttr attr alt tgt return $ case altToJATS alt of Nothing -> selfClosingTag "inline-graphic" elattr Just altTag -> inTags True "inline-graphic" elattr altTag graphic :: Attr -> [Inline] -> Target -> (Doc Text) graphic attr alt tgt = let elattr = graphicAttr attr alt tgt in case altToJATS alt of Nothing -> selfClosingTag "graphic" elattr Just altTag -> inTags True "graphic" elattr altTag graphicAttr :: Attr -> [Inline] -> Target -> [(Text, Text)] graphicAttr (ident, _, kvs) _alt (src, tit) = let (maintype, subtype) = imageMimeType src kvs in [("id", escapeNCName ident) | not (T.null ident)] ++ [ ("mimetype", maintype) , ("mime-subtype", subtype) , ("xlink:href", src) ] ++ [("xlink:title", tit) | not (T.null tit)] ++ [(k,v) | (k,v) <- kvs , k `elem` [ "baseline-shift", "content-type", "specific-use" , "xlink:actuate", "xlink:href", "xlink:role" , "xlink:show", "xlink:type"] ] altToJATS :: [Inline] -> Maybe (Doc Text) altToJATS alt = if null alt then Nothing else Just . inTagsSimple "alt-text" . hsep . map literal . T.words $ stringify alt imageMimeType :: Text -> [(Text, Text)] -> (Text, Text) imageMimeType src kvs = let mbMT = getMimeType (T.unpack src) maintype = fromMaybe "image" $ lookup "mimetype" kvs `mplus` (T.takeWhile (/='/') <$> mbMT) subtype = fromMaybe "" $ lookup "mime-subtype" kvs `mplus` (T.drop 1 . T.dropWhile (/='/') <$> mbMT) in (maintype, subtype) isParaOrList :: Block -> Bool isParaOrList Para{} = True isParaOrList Plain{} = True isParaOrList BulletList{} = True isParaOrList OrderedList{} = True isParaOrList DefinitionList{} = True isParaOrList _ = False isPara :: Block -> Bool isPara Para{} = True isPara Plain{} = True isPara _ = False demoteHeaderAndRefs :: Block -> Block demoteHeaderAndRefs (Header _ _ ils) = Para ils demoteHeaderAndRefs (Div ("refs",cls,kvs) bs) = Div ("",cls,kvs) bs demoteHeaderAndRefs x = x parseDate :: Text -> Maybe Day parseDate s = msum (map (`parsetimeWith` T.unpack s) formats) where parsetimeWith = parseTimeM True defaultTimeLocale formats = ["%x","%m/%d/%Y", "%D","%F", "%d %b %Y", "%e %B %Y", "%b. %e, %Y", "%B %e, %Y", "%Y%m%d", "%Y%m", "%Y"] �����������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/JATS/����������������������������������������������������������0000755�0000000�0000000�00000000000�07346545000�016272� 5����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/JATS/References.hs���������������������������������������������0000644�0000000�0000000�00000013743�07346545000�020717� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Writers.JATS.References Copyright : © 2021-2023 Albert Krewinkel License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel <tarleb@zeitkraut.de> Stability : alpha Portability : portable Creation of a bibliography list using @<element-citation>@ elements in reference items. -} module Text.Pandoc.Writers.JATS.References ( referencesToJATS , referenceToJATS ) where import Citeproc.Pandoc () import Citeproc.Types ( Date (..), DateParts (..), ItemId (..), Name (..), Reference (..) , Val (..) , lookupVariable, valToText ) import Data.Text (Text) import Text.DocLayout (Doc, empty, isEmpty, literal, vcat) import Text.Pandoc.Class.PandocMonad (PandocMonad) import Text.Pandoc.Builder (Inlines) import Text.Pandoc.Options (WriterOptions) import Text.Pandoc.Shared (tshow) import Text.Pandoc.Writers.JATS.Types import Text.Pandoc.XML (escapeNCName, escapeStringForXML, inTags) import qualified Data.Text as T referencesToJATS :: PandocMonad m => WriterOptions -> [Reference Inlines] -> JATS m (Doc Text) referencesToJATS opts = fmap vcat . mapM (referenceToJATS opts) referenceToJATS :: PandocMonad m => WriterOptions -> Reference Inlines -> JATS m (Doc Text) referenceToJATS _opts ref = do let refType = referenceType ref let pubType = [("publication-type", refType) | not (T.null refType)] let ident = escapeNCName $ "ref-" <> unItemId (referenceId ref) let wrap = inTags True "ref" [("id", ident)] . inTags True "element-citation" pubType return . wrap . vcat $ [ authors , "title" `varInTag` if refType == "book" then "source" else "article-title" , if refType == "book" then empty else "container-title" `varInTag` "source" , editors , "publisher" `varInTag` "publisher-name" , "publisher-place" `varInTag` "publisher-loc" , yearTag , accessed , "volume" `varInTag` "volume" , "issue" `varInTag` "issue" , "edition" `varInTag` "edition" , "page-first" `varInTag` "fpage" , "ISBN" `varInTag` "isbn" , "ISSN" `varInTag` "issn" , "URL" `varInTag` "uri" , varInTagWith "doi" "pub-id" [("pub-id-type", "doi")] , varInTagWith "pmid" "pub-id" [("pub-id-type", "pmid")] ] ++ case lookupVariable "page" ref >>= valToText of Nothing -> [] Just val -> let isdash c = c == '-' || c == '\x2013' (fpage, lpage) = T.dropWhile isdash <$> T.break isdash val in [ inTags' "fpage" [] $ literal $ escapeStringForXML fpage, inTags' "lpage" [] $ literal $ escapeStringForXML lpage ] where varInTag var tagName = varInTagWith var tagName [] varInTagWith var tagName tagAttribs = case lookupVariable var ref >>= valToText of Nothing -> mempty Just val -> inTags' tagName tagAttribs . literal $ escapeStringForXML val authors = case lookupVariable "author" ref of Just (NamesVal names) -> inTags True "person-group" [("person-group-type", "author")] . vcat $ map toNameElements names _ -> empty editors = case lookupVariable "editor" ref of Just (NamesVal names) -> inTags True "person-group" [("person-group-type", "editor")] . vcat $ map toNameElements names _ -> empty yearTag = case lookupVariable "issued" ref of Just (DateVal date) -> toDateElements date _ -> empty accessed = case lookupVariable "accessed" ref of Just (DateVal d) -> inTags' "date-in-citation" [("content-type", "access-date")] (toDateElements d) _ -> empty toDateElements :: Date -> Doc Text toDateElements date = case dateParts date of dp@(DateParts (y:m:d:_)):_ -> yearElement y dp <> monthElement m <> dayElement d dp@(DateParts (y:m:_)):_ -> yearElement y dp <> monthElement m dp@(DateParts (y:_)):_ -> yearElement y dp _ -> empty yearElement :: Int -> DateParts -> Doc Text yearElement year dp = inTags' "year" [("iso-8601-date", iso8601 dp)] $ literal (fourDigits year) monthElement :: Int -> Doc Text monthElement month = inTags' "month" [] . literal $ twoDigits month dayElement :: Int -> Doc Text dayElement day = inTags' "day" [] . literal $ twoDigits day iso8601 :: DateParts -> Text iso8601 = T.intercalate "-" . \case DateParts (y:m:d:_) -> [fourDigits y, twoDigits m, twoDigits d] DateParts (y:m:_) -> [fourDigits y, twoDigits m] DateParts (y:_) -> [fourDigits y] _ -> [] twoDigits :: Int -> Text twoDigits n = T.takeEnd 2 $ '0' `T.cons` tshow n fourDigits :: Int -> Text fourDigits n = T.takeEnd 4 $ "000" <> tshow n toNameElements :: Name -> Doc Text toNameElements name | not (isEmpty nameTags) = inTags' "name" [] nameTags | nameLiteral name == Just "others" = "<etal/>" | otherwise = nameLiteral name `inNameTag` "string-name" where inNameTag mVal tag = case mVal of Nothing -> empty Just val -> inTags' tag [] . literal $ escapeStringForXML val surnamePrefix = maybe mempty (`T.snoc` ' ') $ nameNonDroppingParticle name givenSuffix = maybe mempty (T.cons ' ') $ nameDroppingParticle name nameTags = mconcat [ ((surnamePrefix <>) <$> nameFamily name) `inNameTag` "surname" , ((<> givenSuffix) <$> nameGiven name) `inNameTag` "given-names" , nameSuffix name `inNameTag` "suffix" ] -- | Put the supplied contents between start and end tags of tagType, -- with specified attributes. inTags' :: Text -> [(Text, Text)] -> Doc Text -> Doc Text inTags' = inTags False �����������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/JATS/Table.hs��������������������������������������������������0000644�0000000�0000000�00000022701�07346545000�017657� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TupleSections #-} {- | Module : Text.Pandoc.Writers.JATS.Table Copyright : © 2020-2023 Albert Krewinkel License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel <tarleb@zeitkraut.de> Stability : alpha Portability : portable Conversion of 'Pandoc' tables to JATS XML. -} module Text.Pandoc.Writers.JATS.Table ( tableToJATS ) where import Control.Monad.Reader (asks) import Data.List.NonEmpty (NonEmpty ((:|))) import Data.Text (Text) import Text.DocLayout (Doc, empty, vcat, ($$)) import Text.Pandoc.Class.PandocMonad (PandocMonad) import Text.Pandoc.Definition import Text.Pandoc.Options (WriterOptions) import Text.Pandoc.Shared (tshow) import Text.Pandoc.Writers.JATS.Types import Text.Pandoc.XML (escapeNCName, inTags, inTagsIndented, selfClosingTag) import qualified Data.Text as T import qualified Text.Pandoc.Writers.AnnotatedTable as Ann tableToJATS :: PandocMonad m => WriterOptions -> Ann.Table -> JATS m (Doc Text) tableToJATS opts (Ann.Table attr caption colspecs thead tbodies tfoot) = do let (Caption _maybeShortCaption captionBlocks) = caption -- Only paragraphs are allowed in captions, all other blocks must be -- wrapped in @<p>@ elements. let needsWrapping = \case Plain{} -> False Para{} -> False _ -> True tbl <- captionlessTable opts attr colspecs thead tbodies tfoot captionDoc <- if null captionBlocks then return empty else do blockToJATS <- asks jatsBlockWriter inTagsIndented "caption" <$> blockToJATS needsWrapping opts captionBlocks return $ inTags True "table-wrap" [] $ captionDoc $$ tbl captionlessTable :: PandocMonad m => WriterOptions -> Attr -> [ColSpec] -> Ann.TableHead -> [Ann.TableBody] -> Ann.TableFoot -> JATS m (Doc Text) captionlessTable opts attr colspecs thead tbodies tfoot = do head' <- tableHeadToJats opts thead bodies <- mapM (tableBodyToJats opts) tbodies foot' <- tableFootToJats opts tfoot let validAttribs = [ "border", "cellpadding", "cellspacing", "content-type" , "frame", "rules", "specific-use", "style", "summary" , "width" ] let attribs = toAttribs attr validAttribs return $ inTags True "table" attribs $ vcat [ colSpecListToJATS colspecs , head' , foot' , vcat bodies ] validTablePartAttribs :: [Text] validTablePartAttribs = [ "align", "char", "charoff", "content-type", "style", "valign" ] tableBodyToJats :: PandocMonad m => WriterOptions -> Ann.TableBody -> JATS m (Doc Text) tableBodyToJats opts (Ann.TableBody attr _rowHeadCols inthead rows) = do let attribs = toAttribs attr validTablePartAttribs intermediateHead <- if null inthead then return mempty else headerRowsToJats opts Thead inthead bodyRows <- bodyRowsToJats opts rows return $ inTags True "tbody" attribs $ intermediateHead $$ bodyRows tableHeadToJats :: PandocMonad m => WriterOptions -> Ann.TableHead -> JATS m (Doc Text) tableHeadToJats opts (Ann.TableHead attr rows) = tablePartToJats opts Thead attr rows tableFootToJats :: PandocMonad m => WriterOptions -> Ann.TableFoot -> JATS m (Doc Text) tableFootToJats opts (Ann.TableFoot attr rows) = tablePartToJats opts Tfoot attr rows tablePartToJats :: PandocMonad m => WriterOptions -> TablePart -> Attr -> [Ann.HeaderRow] -> JATS m (Doc Text) tablePartToJats opts tblpart attr rows = if null rows || all isEmptyRow rows then return mempty else do let tag' = case tblpart of Thead -> "thead" Tfoot -> "tfoot" Tbody -> "tbody" -- this would be unexpected let attribs = toAttribs attr validTablePartAttribs inTags True tag' attribs <$> headerRowsToJats opts tblpart rows where isEmptyRow (Ann.HeaderRow _attr _rownum cells) = all isEmptyCell cells isEmptyCell (Ann.Cell _colspecs _colnum cell) = cell == Cell nullAttr AlignDefault (RowSpan 1) (ColSpan 1) [] -- | The part of a table; header, footer, or body. data TablePart = Thead | Tfoot | Tbody deriving (Eq) data CellType = HeaderCell | BodyCell data TableRow = TableRow TablePart Attr Ann.RowNumber Ann.RowHead Ann.RowBody headerRowsToJats :: PandocMonad m => WriterOptions -> TablePart -> [Ann.HeaderRow] -> JATS m (Doc Text) headerRowsToJats opts tablepart = rowListToJats opts . map toTableRow where toTableRow (Ann.HeaderRow attr rownum rowbody) = TableRow tablepart attr rownum [] rowbody bodyRowsToJats :: PandocMonad m => WriterOptions -> [Ann.BodyRow] -> JATS m (Doc Text) bodyRowsToJats opts = rowListToJats opts . zipWith toTableRow [1..] where toTableRow rownum (Ann.BodyRow attr _rownum rowhead rowbody) = TableRow Tbody attr rownum rowhead rowbody rowListToJats :: PandocMonad m => WriterOptions -> [TableRow] -> JATS m (Doc Text) rowListToJats opts = fmap vcat . mapM (tableRowToJats opts) colSpecListToJATS :: [ColSpec] -> Doc Text colSpecListToJATS colspecs = let hasDefaultWidth (_, ColWidthDefault) = True hasDefaultWidth _ = False percent w = tshow (round (100*w) :: Integer) <> "%" col :: ColWidth -> Doc Text col = selfClosingTag "col" . \case ColWidthDefault -> mempty ColWidth w -> [("width", percent w)] in if all hasDefaultWidth colspecs then mempty else inTags True "colgroup" [] $ vcat $ map (col . snd) colspecs tableRowToJats :: PandocMonad m => WriterOptions -> TableRow -> JATS m (Doc Text) tableRowToJats opts (TableRow tblpart attr _rownum rowhead rowbody) = do let validAttribs = [ "align", "char", "charoff", "content-type" , "style", "valign" ] let attr' = toAttribs attr validAttribs let celltype = case tblpart of Thead -> HeaderCell _ -> BodyCell headcells <- mapM (cellToJats opts HeaderCell) rowhead bodycells <- mapM (cellToJats opts celltype) rowbody return $ inTags True "tr" attr' $ mconcat [ vcat headcells , vcat bodycells ] alignmentAttrib :: Alignment -> Maybe (Text, Text) alignmentAttrib = fmap ("align",) . \case AlignLeft -> Just "left" AlignRight -> Just "right" AlignCenter -> Just "center" AlignDefault -> Nothing colspanAttrib :: ColSpan -> Maybe (Text, Text) colspanAttrib = \case ColSpan 1 -> Nothing ColSpan n -> Just ("colspan", tshow n) rowspanAttrib :: RowSpan -> Maybe (Text, Text) rowspanAttrib = \case RowSpan 1 -> Nothing RowSpan n -> Just ("rowspan", tshow n) cellToJats :: PandocMonad m => WriterOptions -> CellType -> Ann.Cell -> JATS m (Doc Text) cellToJats opts celltype (Ann.Cell (colspec :| _) _colNum cell) = let align = fst colspec in tableCellToJats opts celltype align cell toAttribs :: Attr -> [Text] -> [(Text, Text)] toAttribs (ident, _classes, kvs) knownAttribs = (if T.null ident then id else (("id", escapeNCName ident) :)) $ filter ((`elem` knownAttribs) . fst) kvs tableCellToJats :: PandocMonad m => WriterOptions -> CellType -> Alignment -> Cell -> JATS m (Doc Text) tableCellToJats opts ctype colAlign (Cell attr align rowspan colspan item) = do blockToJats <- asks jatsBlockWriter inlinesToJats <- asks jatsInlinesWriter let fixBreak LineBreak = RawInline (Format "jats") "<break/>" fixBreak x = x let cellContents = \case [Plain inlines] -> inlinesToJats opts (map fixBreak inlines) -- Note: <break/> is allowed only as a direct -- child of <td>, so we don't use walk. blocks -> blockToJats needsWrapInCell opts blocks let tag' = case ctype of BodyCell -> "td" HeaderCell -> "th" let align' = case align of AlignDefault -> colAlign _ -> align let maybeCons = maybe id (:) let validAttribs = [ "abbr", "align", "axis", "char", "charoff" , "content-type", "headers", "scope", "style", "valign" ] let attribs = maybeCons (alignmentAttrib align') . maybeCons (rowspanAttrib rowspan) . maybeCons (colspanAttrib colspan) $ toAttribs attr validAttribs inTags False tag' attribs <$> cellContents item -- | Whether the JATS produced from this block should be wrapped in a -- @<p>@ element when put directly below a @<td>@ element. needsWrapInCell :: Block -> Bool needsWrapInCell = \case Plain{} -> False -- should be unwrapped anyway Para{} -> False BulletList{} -> False OrderedList{} -> False DefinitionList{} -> False HorizontalRule -> False CodeBlock{} -> False RawBlock{} -> False -- responsibility of the user _ -> True ���������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/JATS/Types.hs��������������������������������������������������0000644�0000000�0000000�00000003254�07346545000�017736� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{- | Module : Text.Pandoc.Writers.JATS.Types Copyright : Copyright (C) 2017-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable Types for pandoc's JATS writer. -} module Text.Pandoc.Writers.JATS.Types ( JATS , JATSEnv (..) , JATSState (..) , JATSTagSet (..) ) where import Citeproc.Types (Reference) import Control.Monad.Reader (ReaderT) import Control.Monad.State (StateT) import Data.Text (Text) import Text.DocLayout (Doc) import Text.Pandoc.Builder (Block, Inline, Inlines) import Text.Pandoc.Options (WriterOptions) -- | JATS tag set variant data JATSTagSet = TagSetArchiving -- ^ Archiving and Interchange Tag Set | TagSetPublishing -- ^ Journal Publishing Tag Set | TagSetArticleAuthoring -- ^ Article Authoring Tag Set deriving (Eq) -- | Internal state used by the writer. newtype JATSState = JATSState { jatsNotes :: [(Int, Doc Text)] } -- | Environment containing all information relevant for rendering. data JATSEnv m = JATSEnv { jatsTagSet :: JATSTagSet -- ^ The tag set that's being output , jatsBlockWriter :: (Block -> Bool) -> WriterOptions -> [Block] -> JATS m (Doc Text) -- ^ Converts a block list to JATS, wrapping top-level blocks into a -- @<p>@ element if the property evaluates to @True@. -- See #7227. , jatsInlinesWriter :: WriterOptions -> [Inline] -> JATS m (Doc Text) -- ^ Converts an inline list to JATS. , jatsReferences :: [Reference Inlines] -- ^ List of references } -- | JATS writer type type JATS m = StateT JATSState (ReaderT (JATSEnv m) m) ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/Jira.hs��������������������������������������������������������0000644�0000000�0000000�00000031171�07346545000�016755� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE PatternGuards #-} {- | Module : Text.Pandoc.Writers.Jira Copyright : © 2010-2023 Albert Krewinkel, John MacFarlane License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel <tarleb+pandoc@moltkeplatz.de> Stability : alpha Portability : portable Conversion of 'Pandoc' documents to Jira markup. JIRA: <https://jira.atlassian.com/secure/WikiRendererHelpAction.jspa?section=all> -} module Text.Pandoc.Writers.Jira ( writeJira ) where import Control.Monad.Reader (ReaderT, ask, asks, runReaderT) import Control.Monad.State.Strict (StateT, evalStateT, gets, modify) import Data.Text (Text) import Text.Jira.Parser (plainText) import Text.Jira.Printer (prettyBlocks, prettyInlines) import Text.Pandoc.Class.PandocMonad (PandocMonad) import Text.Pandoc.Definition import Text.Pandoc.Options (WriterOptions (writerTemplate, writerWrapText), WrapOption (..)) import Text.Pandoc.Shared (linesToPara, stringify) import Text.Pandoc.Templates (renderTemplate) import Text.Pandoc.Writers.Math (texMathToInlines) import Text.Pandoc.Writers.Shared (defField, metaToContext, toLegacyTable) import Text.DocLayout (literal, render) import qualified Data.Text as T import qualified Text.Jira.Markup as Jira -- | Convert Pandoc to Jira. writeJira :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeJira opts = runDefaultConverter (writerWrapText opts) (pandocToJira opts) -- | State to keep track of footnotes. data ConverterState = ConverterState { stNotes :: [Text] -- ^ Footnotes to be appended to the end of the text , stInPanel :: Bool -- ^ whether we are in a @{panel}@ block } -- | Initial converter state. startState :: ConverterState startState = ConverterState { stNotes = [] , stInPanel = False } -- | Converter monad type JiraConverter m = ReaderT WrapOption (StateT ConverterState m) -- | Run a converter using the default state runDefaultConverter :: PandocMonad m => WrapOption -> (a -> JiraConverter m Text) -> a -> m Text runDefaultConverter wrap c x = evalStateT (runReaderT (c x) wrap) startState -- | Return Jira representation of document. pandocToJira :: PandocMonad m => WriterOptions -> Pandoc -> JiraConverter m Text pandocToJira opts (Pandoc meta blocks) = do wrap <- ask metadata <- metaToContext opts (fmap literal . runDefaultConverter wrap blockListToJira) (fmap literal . runDefaultConverter wrap inlineListToJira) meta body <- blockListToJira blocks notes <- gets $ T.intercalate "\n" . reverse . stNotes let main = body <> if T.null notes then mempty else "\n\n" <> notes let context = defField "body" main metadata return $ case writerTemplate opts of Nothing -> main Just tpl -> render Nothing $ renderTemplate tpl context blockListToJira :: PandocMonad m => [Block] -> JiraConverter m Text blockListToJira = fmap prettyBlocks . toJiraBlocks inlineListToJira :: PandocMonad m => [Inline] -> JiraConverter m Text inlineListToJira = fmap prettyInlines . toJiraInlines toJiraBlocks :: PandocMonad m => [Block] -> JiraConverter m [Jira.Block] toJiraBlocks blocks = do let convert = \case BlockQuote bs -> singleton . Jira.BlockQuote <$> toJiraBlocks bs BulletList items -> singleton . Jira.List Jira.CircleBullets <$> toJiraItems items CodeBlock attr cs -> toJiraCode attr cs DefinitionList items -> toJiraDefinitionList items Div attr bs -> toJiraPanel attr bs Header lvl attr xs -> toJiraHeader lvl attr xs HorizontalRule -> return . singleton $ Jira.HorizontalRule LineBlock xs -> toJiraBlocks [linesToPara xs] OrderedList _ items -> singleton . Jira.List Jira.Enumeration <$> toJiraItems items Para xs -> singleton . Jira.Para <$> toJiraInlines xs Plain xs -> singleton . Jira.Para <$> toJiraInlines xs RawBlock fmt cs -> rawBlockToJira fmt cs Table _ blkCapt specs thead tbody tfoot -> singleton <$> do let (_, _, _, hd, body) = toLegacyTable blkCapt specs thead tbody tfoot headerRow <- if all null hd then pure Nothing else Just <$> toRow Jira.HeaderCell hd bodyRows <- mapM (toRow Jira.BodyCell) body let rows = case headerRow of Just header -> header : bodyRows Nothing -> bodyRows return $ Jira.Table rows Figure attr _ body -> toJiraPanel attr body jiraBlocks <- mapM convert blocks return $ mconcat jiraBlocks toRow :: PandocMonad m => ([Jira.Block] -> Jira.Cell) -> [[Block]] -> JiraConverter m Jira.Row toRow mkCell cells = Jira.Row <$> mapM (fmap mkCell . toJiraBlocks) cells toJiraItems :: PandocMonad m => [[Block]] -> JiraConverter m [[Jira.Block]] toJiraItems = mapM toJiraBlocks toJiraCode :: PandocMonad m => Attr -> Text -> JiraConverter m [Jira.Block] toJiraCode (ident, classes, _attribs) code = do return . addAnchor ident . singleton $ case classes of [] -> Jira.NoFormat mempty code l:_ -> Jira.Code (Jira.Language l) mempty code -- | Prepends an anchor with the given identifier. addAnchor :: Text -> [Jira.Block] -> [Jira.Block] addAnchor ident = if T.null ident then id else \case Jira.Para xs : bs -> (Jira.Para (Jira.Anchor ident : xs) : bs) bs -> (Jira.Para (singleton (Jira.Anchor ident)) : bs) -- | Creates a Jira definition list toJiraDefinitionList :: PandocMonad m => [([Inline], [[Block]])] -> JiraConverter m [Jira.Block] toJiraDefinitionList defItems = do let convertDefItem (term, defs) = do jiraTerm <- Jira.Para <$> styled Jira.Strong term jiraDefs <- mconcat <$> mapM toJiraBlocks defs return $ jiraTerm : jiraDefs singleton . Jira.List Jira.CircleBullets <$> mapM convertDefItem defItems -- | Creates a Jira panel toJiraPanel :: PandocMonad m => Attr -> [Block] -> JiraConverter m [Jira.Block] toJiraPanel (ident, classes, attribs) blocks = do inPanel <- gets stInPanel if inPanel || ("panel" `notElem` classes && null attribs) then addAnchor ident <$> toJiraBlocks blocks else do modify $ \st -> st{ stInPanel = True } jiraBlocks <- toJiraBlocks blocks modify $ \st -> st{ stInPanel = inPanel } let params = map (uncurry Jira.Parameter) attribs return $ singleton (Jira.Panel params $ addAnchor ident jiraBlocks) -- | Creates a Jira header toJiraHeader :: PandocMonad m => Int -> Attr -> [Inline] -> JiraConverter m [Jira.Block] toJiraHeader lvl (ident, _, _) inlines = let anchor = Jira.Anchor ident in singleton . Jira.Header lvl . (anchor :) <$> toJiraInlines inlines -- | Handles raw block. Jira is included verbatim, everything else is -- discarded. rawBlockToJira :: PandocMonad m => Format -> Text -> JiraConverter m [Jira.Block] rawBlockToJira fmt cs = do rawInlines <- toJiraRaw fmt cs return $ if null rawInlines then mempty else singleton (Jira.Para rawInlines) toJiraRaw :: PandocMonad m => Format -> Text -> JiraConverter m [Jira.Inline] toJiraRaw fmt cs = case fmt of Format "jira" -> return . singleton $ Jira.Str cs _ -> return mempty -- -- Inlines -- toJiraInlines :: PandocMonad m => [Inline] -> JiraConverter m [Jira.Inline] toJiraInlines inlines = do let convert = \case Cite _ xs -> toJiraInlines xs Code _ cs -> return . singleton $ Jira.Monospaced (escapeSpecialChars cs) Emph xs -> styled Jira.Emphasis xs Underline xs -> styled Jira.Insert xs Image attr cap tgt -> uncurry (imageToJira attr cap) tgt LineBreak -> pure . singleton $ Jira.Linebreak Link attr xs tgt -> toJiraLink attr tgt xs Math mtype cs -> mathToJira mtype cs Note bs -> registerNotes bs Quoted qt xs -> quotedToJira qt xs RawInline fmt cs -> toJiraRaw fmt cs SmallCaps xs -> styled Jira.Strong xs SoftBreak -> do preserveBreak <- asks (== WrapPreserve) pure . singleton $ if preserveBreak then Jira.Linebreak else Jira.Space Space -> pure . singleton $ Jira.Space Span attr xs -> spanToJira attr xs Str s -> pure $ escapeSpecialChars s Strikeout xs -> styled Jira.Strikeout xs Strong xs -> styled Jira.Strong xs Subscript xs -> styled Jira.Subscript xs Superscript xs -> styled Jira.Superscript xs jiraInlines <- mapM convert inlines return $ mconcat jiraInlines singleton :: a -> [a] singleton = (:[]) styled :: PandocMonad m => Jira.InlineStyle -> [Inline] -> JiraConverter m [Jira.Inline] styled s = fmap (singleton . Jira.Styled s) . toJiraInlines -- | Converts a plain text value to Jira inlines, ensuring that all -- special characters will be handled appropriately. escapeSpecialChars :: Text -> [Jira.Inline] escapeSpecialChars t = case plainText t of Right xs -> xs Left _ -> singleton $ Jira.Str t imageToJira :: PandocMonad m => Attr -> [Inline] -> Text -> Text -> JiraConverter m [Jira.Inline] imageToJira (_, classes, kvs) caption src title = let imageWithParams ps = Jira.Image ps (Jira.URL src) alt = stringify caption in pure . singleton . imageWithParams $ if "thumbnail" `elem` classes then [Jira.Parameter "thumbnail" ""] else map (uncurry Jira.Parameter) . (if T.null title then id else (("title", title):)) . (if T.null alt then id else (("alt", alt):)) $ kvs -- | Creates a Jira Link element. toJiraLink :: PandocMonad m => Attr -> Target -> [Inline] -> JiraConverter m [Jira.Inline] toJiraLink (_, classes, _) (url, _) alias = do let (linkType, url') = toLinkType url description <- if url `elem` [stringify alias, "mailto:" <> stringify alias] then pure mempty else toJiraInlines alias pure . singleton $ Jira.Link linkType description (Jira.URL url') where toLinkType url' | Just email <- T.stripPrefix "mailto:" url' = (Jira.Email, email) | "user-account" `elem` classes = (Jira.User, dropTilde url) | "attachment" `elem` classes = (Jira.Attachment, url) | "smart-card" `elem` classes = (Jira.SmartCard, url) | "smart-link" `elem` classes = (Jira.SmartLink, url) | otherwise = (Jira.External, url) dropTilde txt = case T.uncons txt of Just ('~', username) -> username _ -> txt mathToJira :: PandocMonad m => MathType -> Text -> JiraConverter m [Jira.Inline] mathToJira mtype cs = do mathInlines <- toJiraInlines =<< texMathToInlines mtype cs return $ case mtype of InlineMath -> mathInlines DisplayMath -> Jira.Linebreak : mathInlines ++ [Jira.Linebreak] quotedToJira :: PandocMonad m => QuoteType -> [Inline] -> JiraConverter m [Jira.Inline] quotedToJira qtype xs = do let quoteChar = case qtype of DoubleQuote -> "\"" SingleQuote -> "'" let surroundWithQuotes = (Jira.Str quoteChar :) . (++ [Jira.Str quoteChar]) surroundWithQuotes <$> toJiraInlines xs spanToJira :: PandocMonad m => Attr -> [Inline] -> JiraConverter m [Jira.Inline] spanToJira (ident, _classes, attribs) inls = let wrap = case lookup "color" attribs of Nothing -> id Just color -> singleton . Jira.ColorInline (Jira.ColorName color) in wrap <$> case ident of "" -> toJiraInlines inls _ -> (Jira.Anchor ident :) <$> toJiraInlines inls registerNotes :: PandocMonad m => [Block] -> JiraConverter m [Jira.Inline] registerNotes contents = do curNotes <- gets stNotes let newnum = length curNotes + 1 contents' <- blockListToJira contents let thisnote = "\\[" <> T.pack (show newnum) <> "] " <> contents' <> "\n" modify $ \s -> s { stNotes = thisnote : curNotes } return . singleton . Jira.Str $ "[" <> T.pack (show newnum) <> "]" �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/LaTeX.hs�������������������������������������������������������0000644�0000000�0000000�00000136626�07346545000�017060� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE TupleSections #-} {-# LANGUAGE PatternGuards #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE ViewPatterns #-} {- | Module : Text.Pandoc.Writers.LaTeX Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable Conversion of 'Pandoc' format into LaTeX. -} module Text.Pandoc.Writers.LaTeX ( writeLaTeX , writeBeamer ) where import Control.Monad.State.Strict ( MonadState(get, put), gets, modify, evalStateT ) import Control.Monad ( MonadPlus(mplus), liftM, when, unless ) import Data.Containers.ListUtils (nubOrd) import Data.Char (isDigit) import Data.List (intersperse, (\\)) import Data.Maybe (catMaybes, fromMaybe, isJust, mapMaybe, isNothing) import Data.Monoid (Any (..)) import Data.Text (Text) import qualified Data.Text as T import Network.URI (unEscapeString) import Text.DocTemplates (FromContext(lookupContext), renderTemplate) import Text.Collate.Lang (renderLang) import Text.Pandoc.Class.PandocMonad (PandocMonad, report, toLang) import Text.Pandoc.Definition import Text.Pandoc.Highlighting (formatLaTeXBlock, formatLaTeXInline, highlight, styleToLaTeX) import Text.Pandoc.ImageSize import Text.Pandoc.Logging import Text.Pandoc.Options import Text.DocLayout import Text.Pandoc.Shared import Text.Pandoc.URI import Text.Pandoc.Slides import Text.Pandoc.Walk (query, walk, walkM) import Text.Pandoc.Writers.LaTeX.Caption (getCaption) import Text.Pandoc.Writers.LaTeX.Table (tableToLaTeX) import Text.Pandoc.Writers.LaTeX.Citation (citationsToNatbib, citationsToBiblatex) import Text.Pandoc.Writers.LaTeX.Types (LW, WriterState (..), startingState) import Text.Pandoc.Writers.LaTeX.Lang (toBabel) import Text.Pandoc.Writers.LaTeX.Util (stringToLaTeX, StringContext(..), toLabel, inCmd, wrapDiv, hypertarget, labelFor, getListingsLanguage, mbBraced) import Text.Pandoc.Writers.Shared import qualified Text.Pandoc.Writers.AnnotatedTable as Ann -- | Convert Pandoc to LaTeX. writeLaTeX :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeLaTeX options document = evalStateT (pandocToLaTeX options document) $ startingState options -- | Convert Pandoc to LaTeX Beamer. writeBeamer :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeBeamer options document = evalStateT (pandocToLaTeX options document) $ (startingState options){ stBeamer = True } pandocToLaTeX :: PandocMonad m => WriterOptions -> Pandoc -> LW m Text pandocToLaTeX options (Pandoc meta blocks) = do -- Strip off 'references' header if --natbib or --biblatex let method = writerCiteMethod options let isRefsDiv (Div ("refs",_,_) _) = True isRefsDiv _ = False let blocks' = if method == Biblatex || method == Natbib then filter (not . isRefsDiv) blocks else blocks -- see if there are internal links let isInternalLink (Link _ _ (s,_)) | Just ('#', xs) <- T.uncons s = [xs] isInternalLink _ = [] modify $ \s -> s{ stInternalLinks = query isInternalLink blocks' } let colwidth = if writerWrapText options == WrapAuto then Just $ writerColumns options else Nothing metadata <- metaToContext options blockListToLaTeX (fmap chomp . inlineListToLaTeX) meta let chaptersClasses = ["memoir","book","report","scrreprt","scrreport", "scrbook","extreport","extbook","tufte-book", "ctexrep","ctexbook","elegantbook"] let frontmatterClasses = ["memoir","book","scrbook","extbook","tufte-book", "ctexbook","elegantbook"] -- these have \frontmatter etc. beamer <- gets stBeamer let documentClass = case lookupContext "documentclass" (writerVariables options) `mplus` (stringify <$> lookupMeta "documentclass" meta) of Just x -> x Nothing | beamer -> "beamer" | otherwise -> case writerTopLevelDivision options of TopLevelPart -> "book" TopLevelChapter -> "book" _ -> "article" when (documentClass `elem` chaptersClasses) $ modify $ \s -> s{ stHasChapters = True } case lookupContext "csquotes" (writerVariables options) `mplus` (stringify <$> lookupMeta "csquotes" meta) of Nothing -> return () Just "false" -> return () Just _ -> modify $ \s -> s{stCsquotes = True} let (blocks'', lastHeader) = if writerCiteMethod options == Citeproc then (blocks', []) else case reverse blocks' of Header 1 _ il : _ -> (init blocks', il) _ -> (blocks', []) blocks''' <- if beamer then toSlides blocks'' else return $ makeSections False Nothing blocks'' main <- blockListToLaTeX blocks''' biblioTitle <- inlineListToLaTeX lastHeader st <- get titleMeta <- stringToLaTeX TextString $ stringify $ docTitle meta authorsMeta <- mapM (stringToLaTeX TextString . stringify) $ docAuthors meta docLangs <- catMaybes <$> mapM (toLang . Just) (nubOrd (query (extract "lang") blocks)) let hasStringValue x = isJust (getField x metadata :: Maybe (Doc Text)) let geometryFromMargins = mconcat $ intersperse ("," :: Doc Text) $ mapMaybe (\(x,y) -> ((x <> "=") <>) <$> getField y metadata) [("lmargin","margin-left") ,("rmargin","margin-right") ,("tmargin","margin-top") ,("bmargin","margin-bottom") ] mblang <- toLang $ case getLang options meta of Just l -> Just l Nothing | null docLangs -> Nothing | otherwise -> Just "en" -- we need a default here since lang is used in template conditionals let dirs = query (extract "dir") blocks let nociteIds = query (\case Cite cs _ -> map citationId cs _ -> []) $ lookupMetaInlines "nocite" meta let context = defField "toc" (writerTableOfContents options) $ defField "toc-depth" (tshow (writerTOCDepth options - if stHasChapters st then 1 else 0)) $ defField "body" main $ defField "title-meta" titleMeta $ defField "author-meta" (T.intercalate "; " authorsMeta) $ defField "documentclass" documentClass $ defField "verbatim-in-note" (stVerbInNote st) $ defField "tables" (stTable st) $ defField "multirow" (stMultiRow st) $ defField "strikeout" (stStrikeout st) $ defField "url" (stUrl st) $ defField "numbersections" (writerNumberSections options) $ defField "lhs" (stLHS st) $ defField "graphics" (stGraphics st) $ defField "subfigure" (stSubfigure st) $ defField "svg" (stSVG st) $ defField "has-chapters" (stHasChapters st) $ defField "has-frontmatter" (documentClass `elem` frontmatterClasses) $ defField "listings" (writerListings options || stLHS st) $ defField "zero-width-non-joiner" (stZwnj st) $ defField "beamer" beamer $ (if stHighlighting st then case writerHighlightStyle options of Just sty -> defField "highlighting-macros" (T.stripEnd $ styleToLaTeX sty) Nothing -> id else id) $ (case writerCiteMethod options of Natbib -> defField "biblio-title" biblioTitle . defField "natbib" True . defField "nocite-ids" nociteIds Biblatex -> defField "biblio-title" biblioTitle . defField "biblatex" True . defField "nocite-ids" nociteIds _ -> id) $ defField "colorlinks" (any hasStringValue ["citecolor", "urlcolor", "linkcolor", "toccolor", "filecolor"]) $ (if null dirs then id else defField "dir" ("ltr" :: Text)) $ defField "section-titles" True $ defField "csl-refs" (stHasCslRefs st) $ defField "geometry" geometryFromMargins $ (case T.uncons . render Nothing <$> getField "papersize" metadata of -- uppercase a4, a5, etc. Just (Just ('A', ds)) | not (T.null ds) && T.all isDigit ds -> resetField "papersize" ("a" <> ds) _ -> id) metadata let context' = -- note: lang is used in some conditionals in the template, -- so we need to set it if we have any babel/polyglossia: maybe id (\l -> defField "lang" (literal $ renderLang l)) mblang $ maybe id (\l -> defField "babel-lang" (literal l)) (mblang >>= toBabel) $ defField "babel-otherlangs" (map literal $ mapMaybe toBabel docLangs) $ defField "latex-dir-rtl" ((render Nothing <$> getField "dir" context) == Just ("rtl" :: Text)) context return $ render colwidth $ case writerTemplate options of Nothing -> main Just tpl -> renderTemplate tpl context' toSlides :: PandocMonad m => [Block] -> LW m [Block] toSlides bs = do opts <- gets stOptions let slideLevel = fromMaybe (getSlideLevel bs) $ writerSlideLevel opts let bs' = prepSlides slideLevel bs walkM (elementToBeamer slideLevel) $ makeSections False Nothing bs' -- this creates section slides and marks slides with class "slide","block" elementToBeamer :: PandocMonad m => Int -> Block -> LW m Block elementToBeamer slideLevel (Div (ident,"section":dclasses,dkvs) xs@(h@(Header lvl _ _) : ys)) | lvl > slideLevel = return $ Div (ident,"block":dclasses,dkvs) xs | lvl < slideLevel = do let isSlide (Div (_,"slide":_,_) _) = True isSlide (Div (_,"section":_,_) _) = True isSlide _ = False let (titleBs, slideBs) = break isSlide ys return $ case titleBs of [] -> Div (ident,"section":dclasses,dkvs) xs [Div (_,"notes":_,_) _] -> -- see #7857, don't create frame -- just for speaker notes after section heading Div (ident,"section":dclasses,dkvs) xs _ -> Div (ident,"section":dclasses,dkvs) (h : Div ("","slide":dclasses,dkvs) (h:titleBs) : slideBs) | otherwise = return $ Div (ident,"slide":dclasses,dkvs) xs elementToBeamer _ x = return x isListBlock :: Block -> Bool isListBlock (BulletList _) = True isListBlock (OrderedList _ _) = True isListBlock (DefinitionList _) = True isListBlock _ = False -- | Convert Pandoc block element to LaTeX. blockToLaTeX :: PandocMonad m => Block -- ^ Block to convert -> LW m (Doc Text) blockToLaTeX (Div attr@(identifier,"block":dclasses,_) (Header _ _ ils : bs)) = do let blockname | "example" `elem` dclasses = "exampleblock" | "alert" `elem` dclasses = "alertblock" | otherwise = "block" ref <- toLabel identifier let anchor = if T.null identifier then empty else cr <> "\\protect\\hypertarget" <> braces (literal ref) <> braces empty title' <- inlineListToLaTeX ils contents <- blockListToLaTeX bs wrapDiv attr $ ("\\begin" <> braces blockname <> braces title' <> anchor) $$ contents $$ "\\end" <> braces blockname blockToLaTeX (Div (identifier,"slide":dclasses,dkvs) (Header _ (_,hclasses,hkvs) ils : bs)) = do -- note: [fragile] is required or verbatim breaks let hasCodeBlock (CodeBlock _ _) = [True] hasCodeBlock _ = [] let hasCode (Code _ _) = [True] hasCode _ = [] let classes = nubOrd $ dclasses ++ hclasses let kvs = nubOrd $ dkvs ++ hkvs let fragile = "fragile" `elem` classes || not (null $ query hasCodeBlock bs ++ query hasCode bs) let frameoptions = ["allowdisplaybreaks", "allowframebreaks", "fragile", "b", "c", "t", "environment", "s", "squeeze", "label", "plain", "shrink", "standout", "noframenumbering", "containsverbatim"] let optionslist = ["fragile" | fragile , isNothing (lookup "fragile" kvs) , "fragile" `notElem` classes , "containsverbatim" `notElem` classes] ++ [k | k <- classes, k `elem` frameoptions] ++ [k <> "=" <> v | (k,v) <- kvs, k `elem` frameoptions] ++ [v | ("frameoptions", v) <- kvs] let options = if null optionslist then empty else brackets (literal (T.intercalate "," optionslist)) slideTitle <- if ils == [Str "\0"] -- marker for hrule then return empty else braces <$> inlineListToLaTeX ils ref <- toLabel identifier let slideAnchor = if T.null identifier then empty else cr <> "\\protect\\hypertarget" <> braces (literal ref) <> braces empty contents <- blockListToLaTeX bs >>= wrapDiv (identifier,classes,kvs) return $ ("\\begin{frame}" <> options <> slideTitle <> slideAnchor) $$ contents $$ "\\end{frame}" blockToLaTeX (Div (identifier@(T.uncons -> Just (_,_)),dclasses,dkvs) (Header lvl ("",hclasses,hkvs) ils : bs)) = -- move identifier from div to header blockToLaTeX (Div ("",dclasses,dkvs) (Header lvl (identifier,hclasses,hkvs) ils : bs)) blockToLaTeX (Div (identifier,classes,kvs) bs) = do beamer <- gets stBeamer oldIncremental <- gets stIncremental if beamer && "incremental" `elem` classes then modify $ \st -> st{ stIncremental = True } else when (beamer && "nonincremental" `elem` classes) $ modify $ \st -> st { stIncremental = False } result <- if identifier == "refs" || -- <- for backwards compatibility "csl-bib-body" `elem` classes then do modify $ \st -> st{ stHasCslRefs = True } inner <- blockListToLaTeX bs return $ "\\begin{CSLReferences}" <> (if "hanging-indent" `elem` classes then braces "1" else braces "0") <> (case lookup "entry-spacing" kvs of Nothing -> braces "0" Just s -> braces (literal s)) $$ inner $+$ "\\end{CSLReferences}" else blockListToLaTeX bs modify $ \st -> st{ stIncremental = oldIncremental } linkAnchor' <- hypertarget True identifier empty -- see #2704 for the motivation for adding \leavevmode -- and #7078 for \vadjust pre let linkAnchor = case bs of Para _ : _ | not (isEmpty linkAnchor') -> "\\leavevmode\\vadjust pre{" <> linkAnchor' <> "}%" _ -> linkAnchor' wrapNotes txt = if beamer && "notes" `elem` classes then "\\note" <> braces txt -- speaker notes else linkAnchor $$ txt wrapNotes <$> wrapDiv (identifier,classes,kvs) result blockToLaTeX (Plain lst) = inlineListToLaTeX lst -- . . . indicates pause in beamer slides blockToLaTeX (Para [Str ".",Space,Str ".",Space,Str "."]) = do beamer <- gets stBeamer if beamer then blockToLaTeX (RawBlock "latex" "\\pause") else inlineListToLaTeX [Str ".",Space,Str ".",Space,Str "."] blockToLaTeX (Para lst) = inlineListToLaTeX lst blockToLaTeX (LineBlock lns) = blockToLaTeX $ linesToPara lns blockToLaTeX (BlockQuote lst) = do beamer <- gets stBeamer case lst of [b] | beamer && isListBlock b -> do oldIncremental <- gets stIncremental modify $ \s -> s{ stIncremental = not oldIncremental } result <- blockToLaTeX b modify $ \s -> s{ stIncremental = oldIncremental } return result _ -> do oldInQuote <- gets stInQuote modify (\s -> s{stInQuote = True}) contents <- blockListToLaTeX lst modify (\s -> s{stInQuote = oldInQuote}) return $ "\\begin{quote}" $$ contents $$ "\\end{quote}" blockToLaTeX (CodeBlock (identifier,classes,keyvalAttr) str) = do opts <- gets stOptions lab <- labelFor identifier inNote <- stInNote <$> get linkAnchor' <- hypertarget True identifier lab let linkAnchor = if isEmpty linkAnchor' then empty else linkAnchor' <> "%" let lhsCodeBlock = do modify $ \s -> s{ stLHS = True } return $ flush (linkAnchor $$ "\\begin{code}" $$ literal str $$ "\\end{code}") $$ cr let rawCodeBlock = do env <- if inNote then modify (\s -> s{ stVerbInNote = True }) >> return "Verbatim" else return "verbatim" return $ flush (linkAnchor $$ literal ("\\begin{" <> env <> "}") $$ literal str $$ literal ("\\end{" <> env <> "}")) <> cr let listingsCodeBlock = do st <- get ref <- toLabel identifier kvs <- mapM (\(k,v) -> (k,) <$> stringToLaTeX TextString v) keyvalAttr let params = if writerListings (stOptions st) then (case getListingsLanguage classes of Just l -> [ "language=" <> mbBraced l ] Nothing -> []) ++ [ "numbers=left" | "numberLines" `elem` classes || "number" `elem` classes || "number-lines" `elem` classes ] ++ [ (if key == "startFrom" then "firstnumber" else key) <> "=" <> mbBraced attr | (key,attr) <- kvs, key `notElem` ["exports", "tangle", "results"] -- see #4889 ] ++ ["label=" <> ref | not (T.null identifier)] else [] printParams | null params = empty | otherwise = brackets $ hcat (intersperse ", " (map literal params)) return $ flush ("\\begin{lstlisting}" <> printParams $$ literal str $$ "\\end{lstlisting}") $$ cr let highlightedCodeBlock = case highlight (writerSyntaxMap opts) formatLaTeXBlock ("",classes ++ ["default"],keyvalAttr) str of Left msg -> do unless (T.null msg) $ report $ CouldNotHighlight msg rawCodeBlock Right h -> do when inNote $ modify (\s -> s{ stVerbInNote = True }) modify (\s -> s{ stHighlighting = True }) return (flush $ linkAnchor $$ text (T.unpack h)) case () of _ | isEnabled Ext_literate_haskell opts && "haskell" `elem` classes && "literate" `elem` classes -> lhsCodeBlock | writerListings opts -> listingsCodeBlock | not (null classes) && isJust (writerHighlightStyle opts) -> highlightedCodeBlock -- we don't want to use \begin{verbatim} if our code -- contains \end{verbatim}: | inNote , "\\end{Verbatim}" `T.isInfixOf` str -> highlightedCodeBlock | not inNote , "\\end{verbatim}" `T.isInfixOf` str -> highlightedCodeBlock | otherwise -> rawCodeBlock blockToLaTeX b@(RawBlock f x) = do beamer <- gets stBeamer if f == Format "latex" || f == Format "tex" || (f == Format "beamer" && beamer) then return $ literal x else do report $ BlockNotRendered b return empty blockToLaTeX (BulletList []) = return empty -- otherwise latex error blockToLaTeX (BulletList lst) = do incremental <- gets stIncremental isFirstInDefinition <- gets stIsFirstInDefinition beamer <- gets stBeamer let inc = if beamer && incremental then "[<+->]" else "" items <- mapM listItemToLaTeX lst let spacing = if isTightList lst then text "\\tightlist" else empty return $ text ("\\begin{itemize}" <> inc) $$ spacing $$ -- force list at beginning of definition to start on new line (if isFirstInDefinition then "\\item[]" else mempty) $$ vcat items $$ "\\end{itemize}" blockToLaTeX (OrderedList _ []) = return empty -- otherwise latex error blockToLaTeX (OrderedList (start, numstyle, numdelim) lst) = do st <- get let inc = if stBeamer st && stIncremental st then "[<+->]" else "" let oldlevel = stOLLevel st isFirstInDefinition <- gets stIsFirstInDefinition put $ st {stOLLevel = oldlevel + 1} items <- mapM listItemToLaTeX lst modify (\s -> s {stOLLevel = oldlevel}) let beamer = stBeamer st let tostyle x = case numstyle of Decimal -> "\\arabic" <> braces x UpperRoman -> "\\Roman" <> braces x LowerRoman -> "\\roman" <> braces x UpperAlpha -> "\\Alph" <> braces x LowerAlpha -> "\\alph" <> braces x Example -> "\\arabic" <> braces x DefaultStyle -> "\\arabic" <> braces x let todelim x = case numdelim of OneParen -> x <> ")" TwoParens -> parens x Period -> x <> "." _ -> x <> "." let exemplar = case numstyle of Decimal -> "1" UpperRoman -> "I" LowerRoman -> "i" UpperAlpha -> "A" LowerAlpha -> "a" Example -> "1" DefaultStyle -> "1" let enum = literal $ "enum" <> T.toLower (toRomanNumeral oldlevel) let stylecommand | numstyle == DefaultStyle && numdelim == DefaultDelim = empty | beamer && numstyle == Decimal && numdelim == Period = empty | beamer = brackets (todelim exemplar) | otherwise = "\\def" <> "\\label" <> enum <> braces (todelim $ tostyle enum) let resetcounter = if start == 1 || oldlevel > 4 then empty else "\\setcounter" <> braces enum <> braces (text $ show $ start - 1) let spacing = if isTightList lst then text "\\tightlist" else empty return $ text ("\\begin{enumerate}" <> inc) $$ stylecommand $$ resetcounter $$ spacing -- force list at beginning of definition to start on new line $$ (if isFirstInDefinition then "\\item[]" else mempty) $$ vcat items $$ "\\end{enumerate}" blockToLaTeX (DefinitionList []) = return empty blockToLaTeX (DefinitionList lst) = do incremental <- gets stIncremental beamer <- gets stBeamer let inc = if beamer && incremental then "[<+->]" else "" items <- mapM defListItemToLaTeX lst let spacing = if all (isTightList . snd) lst then text "\\tightlist" else empty return $ text ("\\begin{description}" <> inc) $$ spacing $$ vcat items $$ "\\end{description}" blockToLaTeX HorizontalRule = return "\\begin{center}\\rule{0.5\\linewidth}{0.5pt}\\end{center}" blockToLaTeX (Header level (id',classes,_) lst) = do modify $ \s -> s{stInHeading = True} hdr <- sectionHeader classes id' level lst modify $ \s -> s{stInHeading = False} return hdr blockToLaTeX (Table attr blkCapt specs thead tbodies tfoot) = tableToLaTeX inlineListToLaTeX blockListToLaTeX (Ann.toTable attr blkCapt specs thead tbodies tfoot) blockToLaTeX (Figure (ident, _, _) captnode body) = do (capt, captForLof, footnotes) <- getCaption inlineListToLaTeX True captnode lab <- labelFor ident let caption = "\\caption" <> captForLof <> braces capt <> lab isSubfigure <- gets stInFigure modify $ \st -> st{ stInFigure = True } contents <- case body of [b] -> blockToLaTeX b bs -> mconcat . intersperse (cr <> "\\hfill") <$> mapM (toSubfigure (length bs)) bs innards <- hypertarget True ident $ "\\centering" $$ contents $$ caption <> cr modify $ \st -> st{ stInFigure = isSubfigure , stSubfigure = stSubfigure st || isSubfigure } let containsTable = getAny . (query $ \case Table {} -> Any True _ -> Any False) st <- get return $ (case () of _ | containsTable body -> -- placing a longtable in a figure or center environment does -- not make sense. cr <> contents _ | stInMinipage st -> -- can't have figures in notes or minipage (here, table cell) -- http://www.tex.ac.uk/FAQ-ouparmd.html cr <> "\\begin{center}" $$ contents $+$ capt $$ "\\end{center}" _ | isSubfigure -> innards _ -> cr <> "\\begin{figure}" $$ innards $$ "\\end{figure}") $$ footnotes toSubfigure :: PandocMonad m => Int -> Block -> LW m (Doc Text) toSubfigure nsubfigs blk = do contents <- blockToLaTeX blk let linewidth = tshow @Double (0.9 / fromIntegral nsubfigs) <> "\\linewidth" return $ cr <> case blk of Figure {} -> vcat [ "\\begin{subfigure}[t]" <> braces (literal linewidth) , contents , "\\end{subfigure}" ] _ -> vcat [ "\\begin{minipage}[t]" <> braces (literal linewidth) , contents , "\\end{minipage}" ] blockListToLaTeX :: PandocMonad m => [Block] -> LW m (Doc Text) blockListToLaTeX lst = vsep `fmap` mapM (\b -> setEmptyLine True >> blockToLaTeX b) lst listItemToLaTeX :: PandocMonad m => [Block] -> LW m (Doc Text) listItemToLaTeX lst -- we need to put some text before a header if it's the first -- element in an item. This will look ugly in LaTeX regardless, but -- this will keep the typesetter from throwing an error. | (Header{} :_) <- lst = (text "\\item ~" $$) . nest 2 <$> blockListToLaTeX lst | Plain (Str "☐":Space:is) : bs <- lst = taskListItem False is bs | Plain (Str "☒":Space:is) : bs <- lst = taskListItem True is bs | Para (Str "☐":Space:is) : bs <- lst = taskListItem False is bs | Para (Str "☒":Space:is) : bs <- lst = taskListItem True is bs | otherwise = (text "\\item" $$) . nest 2 <$> blockListToLaTeX lst where taskListItem checked is bs = do let checkbox = if checked then "$\\boxtimes$" else "$\\square$" isContents <- inlineListToLaTeX is bsContents <- blockListToLaTeX bs return $ "\\item" <> brackets checkbox $$ nest 2 (isContents $+$ bsContents) defListItemToLaTeX :: PandocMonad m => ([Inline], [[Block]]) -> LW m (Doc Text) defListItemToLaTeX (term, defs) = do -- needed to turn off 'listings' because it breaks inside \item[...]: modify $ \s -> s{stInItem = True} term' <- inlineListToLaTeX term modify $ \s -> s{stInItem = False} -- put braces around term if it contains an internal link, -- since otherwise we get bad bracket interactions: \item[\hyperref[..] let isInternalLink (Link _ _ (src,_)) | Just ('#', _) <- T.uncons src = True isInternalLink _ = False let term'' = if any isInternalLink term then braces term' else term' def' <- case concat defs of [] -> return mempty (x:xs) -> do modify $ \s -> s{stIsFirstInDefinition = True } firstitem <- blockToLaTeX x modify $ \s -> s{stIsFirstInDefinition = False } rest <- blockListToLaTeX xs return $ firstitem $+$ rest return $ case defs of ((Header{} : _) : _) -> "\\item" <> brackets term'' <> " ~ " $$ def' ((CodeBlock{} : _) : _) -> -- see #4662 "\\item" <> brackets term'' <> " ~ " $$ def' _ -> "\\item" <> brackets term'' $$ def' -- | Craft the section header, inserting the section reference, if supplied. sectionHeader :: PandocMonad m => [Text] -- classes -> Text -> Int -> [Inline] -> LW m (Doc Text) sectionHeader classes ident level lst = do let unnumbered = "unnumbered" `elem` classes let unlisted = "unlisted" `elem` classes txt <- inlineListToLaTeX lst plain <- stringToLaTeX TextString $ T.concat $ map stringify lst let removeInvalidInline (Note _) = [] removeInvalidInline (Span (id', _, _) _) | not (T.null id') = [] removeInvalidInline Image{} = [] removeInvalidInline x = [x] let lstNoNotes = foldr (mappend . (\x -> walkM removeInvalidInline x)) mempty lst txtNoNotes <- inlineListToLaTeX lstNoNotes -- footnotes in sections don't work (except for starred variants) -- unless you specify an optional argument: -- \section[mysec]{mysec\footnote{blah}} optional <- if unnumbered || lstNoNotes == lst || null lstNoNotes then return empty else return $ brackets txtNoNotes let contents = if render Nothing txt == plain then braces txt else braces (text "\\texorpdfstring" <> braces txt <> braces (literal plain)) book <- gets stHasChapters opts <- gets stOptions let topLevelDivision = if book && writerTopLevelDivision opts == TopLevelDefault then TopLevelChapter else writerTopLevelDivision opts beamer <- gets stBeamer let level' = if beamer && topLevelDivision `elem` [TopLevelPart, TopLevelChapter] -- beamer has parts but no chapters then if level == 1 then -1 else level - 1 else case topLevelDivision of TopLevelPart -> level - 2 TopLevelChapter -> level - 1 TopLevelSection -> level TopLevelDefault -> level let sectionType = case level' of -1 -> "part" 0 -> "chapter" 1 -> "section" 2 -> "subsection" 3 -> "subsubsection" 4 -> "paragraph" 5 -> "subparagraph" _ -> "" inQuote <- gets stInQuote let prefix = if inQuote && level' >= 4 then text "\\mbox{}%" -- needed for \paragraph, \subparagraph in quote environment -- see http://tex.stackexchange.com/questions/169830/ else empty lab <- labelFor ident let star = if unnumbered then text "*" else empty let stuffing = star <> optional <> contents stuffing' <- hypertarget True ident $ text ('\\':sectionType) <> stuffing <> lab return $ if level' > 5 then txt else prefix $$ stuffing' $$ if unnumbered && not unlisted then "\\addcontentsline{toc}" <> braces (text sectionType) <> braces txtNoNotes else empty -- | Convert list of inline elements to LaTeX. inlineListToLaTeX :: PandocMonad m => [Inline] -- ^ Inlines to convert -> LW m (Doc Text) inlineListToLaTeX lst = hcat <$> mapM inlineToLaTeX (fixLineInitialSpaces . fixInitialLineBreaks $ lst) -- nonbreaking spaces (~) in LaTeX don't work after line breaks, -- so we turn nbsps after hard breaks to \hspace commands. -- this is mostly used in verse. where fixLineInitialSpaces [] = [] fixLineInitialSpaces (LineBreak : Str s : xs) | Just ('\160', _) <- T.uncons s = LineBreak : fixNbsps s <> fixLineInitialSpaces xs fixLineInitialSpaces (x:xs) = x : fixLineInitialSpaces xs fixNbsps s = let (ys,zs) = T.span (=='\160') s in replicate (T.length ys) hspace <> [Str zs] hspace = RawInline "latex" "\\hspace*{0.333em}" -- We need \hfill\break for a line break at the start -- of a paragraph. See #5591. fixInitialLineBreaks (LineBreak:xs) = RawInline (Format "latex") "\\hfill\\break\n" : fixInitialLineBreaks xs fixInitialLineBreaks xs = xs -- | Convert inline element to LaTeX inlineToLaTeX :: PandocMonad m => Inline -- ^ Inline to convert -> LW m (Doc Text) inlineToLaTeX (Span ("",["mark"],[]) lst) = do modify $ \st -> st{ stStrikeout = True } -- this gives us the soul package inCmd "hl" <$> inlineListToLaTeX lst inlineToLaTeX (Span (id',classes,kvs) ils) = do linkAnchor <- hypertarget False id' empty lang <- toLang $ lookup "lang" kvs let classToCmd "csl-no-emph" = Just "textup" classToCmd "csl-no-strong" = Just "textnormal" classToCmd "csl-no-smallcaps" = Just "textnormal" classToCmd "csl-block" = Just "CSLBlock" classToCmd "csl-left-margin" = Just "CSLLeftMargin" classToCmd "csl-right-inline" = Just "CSLRightInline" classToCmd "csl-indent" = Just "CSLIndent" classToCmd _ = Nothing kvToCmd ("dir","rtl") = Just "RL" kvToCmd ("dir","ltr") = Just "LR" kvToCmd _ = Nothing langCmds = case lang >>= toBabel of Just l -> ["foreignlanguage{" <> l <> "}"] Nothing -> [] let cmds = mapMaybe classToCmd classes ++ mapMaybe kvToCmd kvs ++ langCmds contents <- inlineListToLaTeX ils return $ (if "csl-right-inline" `elem` classes then ("%" <>) -- see #7932 else id) $ (if any (`elem` classes) ["csl-block","csl-left-margin","csl-right-inline","csl-indent"] then (cr <>) else id) $ (if T.null id' then empty else "\\protect" <> linkAnchor) <> (if null cmds then braces contents else foldr inCmd contents cmds) inlineToLaTeX (Emph lst) = inCmd "emph" <$> inlineListToLaTeX lst inlineToLaTeX (Underline lst) = do modify $ \st -> st{ stStrikeout = True } -- this gives us the soul package inCmd "ul" <$> inlineListToLaTeX lst inlineToLaTeX (Strong lst) = inCmd "textbf" <$> inlineListToLaTeX lst inlineToLaTeX (Strikeout lst) = do -- we need to protect VERB in an mbox or we get an error -- see #1294 -- with regular texttt we don't get an error, but we get -- incorrect results if there is a space, see #5529 contents <- inlineListToLaTeX $ walk (concatMap protectCode) lst modify $ \s -> s{ stStrikeout = True } return $ inCmd "st" contents inlineToLaTeX (Superscript lst) = inCmd "textsuperscript" <$> inlineListToLaTeX lst inlineToLaTeX (Subscript lst) = inCmd "textsubscript" <$> inlineListToLaTeX lst inlineToLaTeX (SmallCaps lst) = inCmd "textsc"<$> inlineListToLaTeX lst inlineToLaTeX (Cite cits lst) = do st <- get let opts = stOptions st case writerCiteMethod opts of Natbib -> citationsToNatbib inlineListToLaTeX cits Biblatex -> citationsToBiblatex inlineListToLaTeX cits _ -> inlineListToLaTeX lst inlineToLaTeX (Code (_,classes,kvs) str) = do opts <- gets stOptions inHeading <- gets stInHeading inItem <- gets stInItem let listingsCode = do let listingsopts = (case getListingsLanguage classes of Just l -> (("language", mbBraced l):) Nothing -> id) [(k,v) | (k,v) <- kvs , k `notElem` ["exports","tangle","results"]] let listingsopt = if null listingsopts then "" else "[" <> T.intercalate ", " (map (\(k,v) -> k <> "=" <> v) listingsopts) <> "]" inNote <- gets stInNote when inNote $ modify $ \s -> s{ stVerbInNote = True } let chr = case "!\"'()*,-./:;?@" \\ T.unpack str of (c:_) -> c [] -> '!' let isEscapable '\\' = True isEscapable '{' = True isEscapable '}' = True isEscapable '%' = True isEscapable '~' = True isEscapable '_' = True isEscapable '&' = True isEscapable '#' = True isEscapable '^' = True isEscapable _ = False let escChar c | isEscapable c = T.pack ['\\',c] | otherwise = T.singleton c let str' = T.concatMap escChar str -- we always put lstinline in a dummy 'passthrough' command -- (defined in the default template) so that we don't have -- to change the way we escape characters depending on whether -- the lstinline is inside another command. See #1629: return $ literal $ "\\passthrough{\\lstinline" <> listingsopt <> T.singleton chr <> str' <> T.singleton chr <> "}" let rawCode = liftM (literal . (\s -> "\\texttt{" <> escapeSpaces s <> "}")) $ stringToLaTeX CodeString str where escapeSpaces = T.concatMap (\c -> if c == ' ' then "\\ " else T.singleton c) let highlightCode = case highlight (writerSyntaxMap opts) formatLaTeXInline ("",classes,[]) str of Left msg -> do unless (T.null msg) $ report $ CouldNotHighlight msg rawCode Right h -> modify (\st -> st{ stHighlighting = True }) >> return (text (T.unpack h)) case () of _ | inHeading || inItem -> rawCode -- see #5574 | writerListings opts -> listingsCode | isJust (writerHighlightStyle opts) && not (null classes) -> highlightCode | otherwise -> rawCode inlineToLaTeX (Quoted qt lst) = do contents <- inlineListToLaTeX lst csquotes <- liftM stCsquotes get opts <- gets stOptions if csquotes then return $ case qt of DoubleQuote -> "\\enquote" <> braces contents SingleQuote -> "\\enquote*" <> braces contents else do let s1 = if not (null lst) && isQuoted (head lst) then "\\," else empty let s2 = if not (null lst) && isQuoted (last lst) then "\\," else empty let inner = s1 <> contents <> s2 return $ case qt of DoubleQuote -> if isEnabled Ext_smart opts then text "``" <> inner <> text "''" else char '\x201C' <> inner <> char '\x201D' SingleQuote -> if isEnabled Ext_smart opts then char '`' <> inner <> char '\'' else char '\x2018' <> inner <> char '\x2019' where isQuoted (Span _ (x:_)) = isQuoted x isQuoted (Quoted _ _) = True isQuoted _ = False inlineToLaTeX (Str str) = do setEmptyLine False liftM literal $ stringToLaTeX TextString str inlineToLaTeX (Math InlineMath str) = do setEmptyLine False return $ "\\(" <> literal (handleMathComment str) <> "\\)" inlineToLaTeX (Math DisplayMath str) = do setEmptyLine False return $ "\\[" <> literal (handleMathComment str) <> "\\]" inlineToLaTeX il@(RawInline f str) = do beamer <- gets stBeamer if f == Format "latex" || f == Format "tex" || (f == Format "beamer" && beamer) then do setEmptyLine False return $ literal str else do report $ InlineNotRendered il return empty inlineToLaTeX LineBreak = do emptyLine <- gets stEmptyLine setEmptyLine True return $ (if emptyLine then "\\strut " else "") <> "\\\\" <> cr inlineToLaTeX SoftBreak = do wrapText <- gets (writerWrapText . stOptions) case wrapText of WrapAuto -> return space WrapNone -> return space WrapPreserve -> return cr inlineToLaTeX Space = return space inlineToLaTeX (Link (id',_,_) txt (src,_)) = (case T.uncons src of Just ('#', ident) -> do contents <- inlineListToLaTeX txt lab <- toLabel ident return $ text "\\protect\\hyperlink" <> braces (literal lab) <> braces contents _ -> case txt of [Str x] | unEscapeString (T.unpack x) == unEscapeString (T.unpack src) -> -- autolink do modify $ \s -> s{ stUrl = True } src' <- stringToLaTeX URLString (escapeURI src) return $ literal $ "\\url{" <> src' <> "}" [Str x] | Just rest <- T.stripPrefix "mailto:" src, unEscapeString (T.unpack x) == unEscapeString (T.unpack rest) -> -- email autolink do modify $ \s -> s{ stUrl = True } src' <- stringToLaTeX URLString (escapeURI src) contents <- inlineListToLaTeX txt return $ "\\href" <> braces (literal src') <> braces ("\\nolinkurl" <> braces contents) _ -> do contents <- inlineListToLaTeX txt src' <- stringToLaTeX URLString (escapeURI src) return $ literal ("\\href{" <> src' <> "}{") <> contents <> char '}') >>= (if T.null id' then return else \x -> do linkAnchor <- hypertarget False id' x return ("\\protect" <> linkAnchor)) inlineToLaTeX il@(Image _ _ (src, _)) | Just _ <- T.stripPrefix "data:" src = do report $ InlineNotRendered il return empty inlineToLaTeX (Image attr@(_,_,kvs) _ (source, _)) = do setEmptyLine False let isSVG = ".svg" `T.isSuffixOf` source || ".SVG" `T.isSuffixOf` source modify $ \s -> s{ stGraphics = True , stSVG = stSVG s || isSVG } opts <- gets stOptions let showDim dir = let d = text (show dir) <> "=" in case dimension dir attr of Just (Pixel a) -> [d <> literal (showInInch opts (Pixel a)) <> "in"] Just (Percent a) -> [d <> literal (showFl (a / 100)) <> case dir of Width -> "\\textwidth" Height -> "\\textheight" ] Just dim -> [d <> text (show dim)] Nothing -> case dir of Width | isJust (dimension Height attr) -> [d <> "\\textwidth"] Height | isJust (dimension Width attr) -> [d <> "\\textheight"] _ -> [] optList = showDim Width <> showDim Height <> maybe [] (\x -> ["page=" <> literal x]) (lookup "page" kvs) <> maybe [] (\x -> ["trim=" <> literal x]) (lookup "trim" kvs) <> maybe [] (const ["clip"]) (lookup "clip" kvs) options = if null optList then empty else brackets $ mconcat (intersperse "," optList) source' = if isURI source then source else T.pack $ unEscapeString $ T.unpack source source'' <- stringToLaTeX URLString source' inHeading <- gets stInHeading return $ (if inHeading then "\\protect" else "") <> (if isSVG then "\\includesvg" else "\\includegraphics") <> options <> braces (literal source'') inlineToLaTeX (Note contents) = do setEmptyLine False externalNotes <- gets stExternalNotes modify (\s -> s{stInNote = True, stExternalNotes = True}) contents' <- blockListToLaTeX contents modify (\s -> s {stInNote = False, stExternalNotes = externalNotes}) let optnl = case reverse contents of (CodeBlock _ _ : _) -> cr _ -> empty let noteContents = nest 2 contents' <> optnl beamer <- gets stBeamer -- in beamer slides, display footnote from current overlay forward let beamerMark = if beamer then text "<.->" else empty if externalNotes then do modify $ \st -> st{ stNotes = noteContents : stNotes st } return "\\footnotemark{}" -- note: a \n before } needed when note ends with a Verbatim environment else return $ "\\footnote" <> beamerMark <> braces noteContents -- A comment at the end of math needs to be followed by a newline, -- or the closing delimiter gets swallowed. handleMathComment :: Text -> Text handleMathComment s = let (_, ys) = T.break (\c -> c == '\n' || c == '%') $ T.reverse s -- no T.breakEnd in case T.uncons ys of Just ('%', ys') -> case T.uncons ys' of Just ('\\', _) -> s _ -> s <> "\n" _ -> s protectCode :: Inline -> [Inline] protectCode x@(Code _ _) = [ltx "\\mbox{" , x , ltx "}"] where ltx = RawInline (Format "latex") protectCode x = [x] setEmptyLine :: PandocMonad m => Bool -> LW m () setEmptyLine b = modify $ \st -> st{ stEmptyLine = b } -- Extract a key from divs and spans extract :: Text -> Block -> [Text] extract key (Div attr _) = lookKey key attr extract key (Plain ils) = query (extractInline key) ils extract key (Para ils) = query (extractInline key) ils extract key (Header _ _ ils) = query (extractInline key) ils extract _ _ = [] -- Extract a key from spans extractInline :: Text -> Inline -> [Text] extractInline key (Span attr _) = lookKey key attr extractInline _ _ = [] -- Look up a key in an attribute and give a list of its values lookKey :: Text -> Attr -> [Text] lookKey key (_,_,kvs) = maybe [] T.words $ lookup key kvs ����������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/LaTeX/���������������������������������������������������������0000755�0000000�0000000�00000000000�07346545000�016506� 5����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/LaTeX/Caption.hs�����������������������������������������������0000644�0000000�0000000�00000004210�07346545000�020434� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{- | Module : Text.Pandoc.Writers.LaTeX.Caption Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable Write figure or table captions as LaTeX. -} module Text.Pandoc.Writers.LaTeX.Caption ( getCaption ) where import Control.Monad.State.Strict import Data.Monoid (Any(..)) import Data.Text (Text) import Text.Pandoc.Class.PandocMonad (PandocMonad) import Text.Pandoc.Definition import Text.DocLayout (Doc, brackets, empty) import Text.Pandoc.Shared import Text.Pandoc.Walk import Text.Pandoc.Writers.LaTeX.Notes (notesToLaTeX) import Text.Pandoc.Writers.LaTeX.Types ( LW, WriterState (stExternalNotes, stNotes) ) -- | Produces the components of a LaTeX 'caption' command. Returns a triple -- containing the caption text, the short caption for the list of -- figures/tables, and the footnote definitions. getCaption :: PandocMonad m => ([Inline] -> LW m (Doc Text)) -- ^ inlines converter -> Bool -- ^ whether to extract notes -> Caption -> LW m (Doc Text, Doc Text, Doc Text) getCaption inlineListToLaTeX externalNotes (Caption maybeShort long) = do let long' = blocksToInlines long oldExternalNotes <- gets stExternalNotes modify $ \st -> st{ stExternalNotes = externalNotes, stNotes = [] } capt <- inlineListToLaTeX long' footnotes <- if externalNotes then notesToLaTeX <$> gets stNotes else return empty modify $ \st -> st{ stExternalNotes = oldExternalNotes, stNotes = [] } -- We can't have footnotes in the list of figures/tables, so remove them: let getNote (Note _) = Any True getNote _ = Any False let hasNotes = getAny . query getNote let toShortCapt = fmap brackets . inlineListToLaTeX . walk deNote captForLof <- case maybeShort of Nothing -> if hasNotes long' then toShortCapt long' else return empty Just short -> toShortCapt short return (capt, captForLof, footnotes) ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/LaTeX/Citation.hs����������������������������������������������0000644�0000000�0000000�00000014634�07346545000�020624� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Writers.LaTeX.Citation Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable -} module Text.Pandoc.Writers.LaTeX.Citation ( citationsToNatbib, citationsToBiblatex ) where import Data.Text (Text) import Data.Char (isPunctuation) import qualified Data.Text as T import Text.Pandoc.Class.PandocMonad (PandocMonad) import Text.Pandoc.Definition import Data.List (foldl') import Text.DocLayout (Doc, brackets, empty, (<+>), text, isEmpty, literal, braces) import Text.Pandoc.Walk import Text.Pandoc.Writers.LaTeX.Types ( LW ) citationsToNatbib :: PandocMonad m => ([Inline] -> LW m (Doc Text)) -> [Citation] -> LW m (Doc Text) citationsToNatbib inlineListToLaTeX [one] = citeCommand inlineListToLaTeX c p s k where Citation { citationId = k , citationPrefix = p , citationSuffix = s , citationMode = m } = one c = case m of AuthorInText -> "citet" SuppressAuthor -> "citeyearpar" NormalCitation -> "citep" citationsToNatbib inlineListToLaTeX cits | noPrefix (tail cits) && noSuffix (init cits) && ismode NormalCitation cits = citeCommand inlineListToLaTeX "citep" p s ks where noPrefix = all (null . citationPrefix) noSuffix = all (null . citationSuffix) ismode m = all ((==) m . citationMode) p = citationPrefix $ head cits s = citationSuffix $ last cits ks = T.intercalate ", " $ map citationId cits citationsToNatbib inlineListToLaTeX (c:cs) | citationMode c == AuthorInText = do author <- citeCommand inlineListToLaTeX "citeauthor" [] [] (citationId c) cits <- citationsToNatbib inlineListToLaTeX (c { citationMode = SuppressAuthor } : cs) return $ author <+> cits citationsToNatbib inlineListToLaTeX cits = do cits' <- mapM convertOne cits return $ text "\\citetext{" <> foldl' combineTwo empty cits' <> text "}" where citeCommand' = citeCommand inlineListToLaTeX combineTwo a b | isEmpty a = b | otherwise = a <> text "; " <> b convertOne Citation { citationId = k , citationPrefix = p , citationSuffix = s , citationMode = m } = case m of AuthorInText -> citeCommand' "citealt" p s k SuppressAuthor -> citeCommand' "citeyear" p s k NormalCitation -> citeCommand' "citealp" p s k citeCommand :: PandocMonad m => ([Inline] -> LW m (Doc Text)) -> Text -> [Inline] -> [Inline] -> Text -> LW m (Doc Text) citeCommand inlineListToLaTeX c p s k = do args <- citeArguments inlineListToLaTeX p s k return $ literal ("\\" <> c) <> args type Prefix = [Inline] type Suffix = [Inline] type CiteId = Text data CiteGroup = CiteGroup Prefix Suffix [CiteId] citeArgumentsList :: PandocMonad m => ([Inline] -> LW m (Doc Text)) -> CiteGroup -> LW m (Doc Text) citeArgumentsList _inlineListToLaTeX (CiteGroup _ _ []) = return empty citeArgumentsList inlineListToLaTeX (CiteGroup pfxs sfxs ids) = do pdoc <- inlineListToLaTeX pfxs sdoc <- inlineListToLaTeX sfxs' return $ optargs pdoc sdoc <> braces (literal (T.intercalate "," (reverse ids))) where sfxs' = stripLocatorBraces $ case sfxs of (Str t : r) -> case T.uncons t of Just (x, xs) | T.null xs , isPunctuation x -> dropWhile (== Space) r | isPunctuation x -> Str xs : r _ -> sfxs _ -> sfxs optargs pdoc sdoc = case (isEmpty pdoc, isEmpty sdoc) of (True, True ) -> empty (True, False) -> brackets sdoc (_ , _ ) -> brackets pdoc <> brackets sdoc citeArguments :: PandocMonad m => ([Inline] -> LW m (Doc Text)) -> [Inline] -> [Inline] -> Text -> LW m (Doc Text) citeArguments inlineListToLaTeX p s k = citeArgumentsList inlineListToLaTeX (CiteGroup p s [k]) -- strip off {} used to define locator in pandoc-citeproc; see #5722 stripLocatorBraces :: [Inline] -> [Inline] stripLocatorBraces = walk go where go (Str xs) = Str $ T.filter (\c -> c /= '{' && c /= '}') xs go x = x citationsToBiblatex :: PandocMonad m => ([Inline] -> LW m (Doc Text)) -> [Citation] -> LW m (Doc Text) citationsToBiblatex inlineListToLaTeX [one] = citeCommand inlineListToLaTeX cmd p s k where Citation { citationId = k , citationPrefix = p , citationSuffix = s , citationMode = m } = one cmd = case m of SuppressAuthor -> "autocite*" AuthorInText -> "textcite" NormalCitation -> "autocite" citationsToBiblatex inlineListToLaTeX (c:cs) | all (\cit -> null (citationPrefix cit) && null (citationSuffix cit)) (c:cs) = do let cmd = case citationMode c of SuppressAuthor -> "\\autocite*" AuthorInText -> "\\textcite" NormalCitation -> "\\autocite" return $ text cmd <> braces (literal (T.intercalate "," (map citationId (c:cs)))) | otherwise = do let cmd = case citationMode c of SuppressAuthor -> "\\autocites*" AuthorInText -> "\\textcites" NormalCitation -> "\\autocites" groups <- mapM (citeArgumentsList inlineListToLaTeX) (reverse (foldl' grouper [] (c:cs))) return $ text cmd <> mconcat groups where grouper prev cit = case prev of ((CiteGroup oPfx [] ids):rest) | null pfx && null sfx -> CiteGroup oPfx sfx (cid:ids) : rest _ -> CiteGroup pfx sfx [cid] : prev where pfx = citationPrefix cit sfx = citationSuffix cit cid = citationId cit citationsToBiblatex _ _ = return empty ����������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/LaTeX/Lang.hs��������������������������������������������������0000644�0000000�0000000�00000014043�07346545000�017725� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {- | Module : Text.Pandoc.Writers.LaTeX.Lang Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable -} module Text.Pandoc.Writers.LaTeX.Lang ( toBabel ) where import Data.Text (Text) import Text.Collate.Lang (Lang(..)) -- Takes a list of the constituents of a BCP47 language code and -- converts it to a Babel language string. -- http://mirrors.ctan.org/macros/latex/required/babel/base/babel.pdf -- List of supported languages (slightly outdated): -- http://tug.ctan.org/language/hyph-utf8/doc/generic/hyph-utf8/hyphenation.pdf toBabel :: Lang -> Maybe Text toBabel (Lang "de" _ (Just "AT") vars _ _) | "1901" `elem` vars = Just "austrian" | otherwise = Just "naustrian" toBabel (Lang "de" _ (Just "CH") vars _ _) | "1901" `elem` vars = Just "swissgerman" | otherwise = Just "nswissgerman" toBabel (Lang "de" _ _ vars _ _) | "1901" `elem` vars = Just "german" | otherwise = Just "ngerman" toBabel (Lang "dsb" _ _ _ _ _) = Just "lowersorbian" toBabel (Lang "el" _ _ vars _ _) | "polyton" `elem` vars = Just "polutonikogreek" toBabel (Lang "en" _ (Just "AU") _ _ _) = Just "australian" toBabel (Lang "en" _ (Just "CA") _ _ _) = Just "canadian" toBabel (Lang "en" _ (Just "GB") _ _ _) = Just "british" toBabel (Lang "en" _ (Just "NZ") _ _ _) = Just "newzealand" toBabel (Lang "en" _ (Just "UK") _ _ _) = Just "british" toBabel (Lang "en" _ (Just "US") _ _ _) = Just "american" toBabel (Lang "fr" _ (Just "CA") _ _ _) = Just "canadien" toBabel (Lang "fra" _ _ vars _ _) | "aca" `elem` vars = Just "acadian" toBabel (Lang "grc" _ _ _ _ _) = Just "ancientgreek" toBabel (Lang "hsb" _ _ _ _ _) = Just "uppersorbian" toBabel (Lang "la" _ _ vars _ _) | "x-classic" `elem` vars = Just "classiclatin" toBabel (Lang "pt" _ (Just "BR") _ _ _) = Just "brazilian" toBabel (Lang "sl" _ _ _ _ _) = Just "slovene" toBabel (Lang "zh" (Just "Hant") (Just "HK") _ _ _) = Just "chinese-hant-hk" toBabel (Lang "zh" (Just "Hant") (Just "MO") _ _ _) = Just "chinese-hant-mo" toBabel (Lang "zh" (Just "Hans") (Just "HK") _ _ _) = Just "chinese-hans-hk" toBabel (Lang "zh" (Just "Hans") (Just "MO") _ _ _) = Just "chinese-hans-mo" toBabel (Lang "zh" (Just "Hans") _ _ _ _) = Just "chinese-hans" toBabel (Lang "zh" (Just "Hant") _ _ _ _) = Just "chinese-hant" toBabel (Lang "zh" _ _ _ _ _) = Just "chinese" toBabel x = commonFromBcp47 x -- Takes a list of the constituents of a BCP47 language code -- and converts it to a string shared by Babel and Polyglossia. -- https://tools.ietf.org/html/bcp47#section-2.1 commonFromBcp47 :: Lang -> Maybe Text commonFromBcp47 (Lang "sr" (Just "Cyrl") _ _ _ _) = Just "serbianc" commonFromBcp47 (Lang "zh" (Just "Latn") _ vars _ _) | "pinyin" `elem` vars = Just "pinyin" commonFromBcp47 (Lang l _ _ _ _ _) = fromIso l where fromIso "af" = Just "afrikaans" fromIso "am" = Just "amharic" fromIso "ar" = Just "arabic" fromIso "as" = Just "assamese" fromIso "ast" = Just "asturian" fromIso "bg" = Just "bulgarian" fromIso "bn" = Just "bengali" fromIso "bo" = Just "tibetan" fromIso "br" = Just "breton" fromIso "ca" = Just "catalan" fromIso "cy" = Just "welsh" fromIso "cs" = Just "czech" fromIso "cop" = Just "coptic" fromIso "da" = Just "danish" fromIso "dv" = Just "divehi" fromIso "el" = Just "greek" fromIso "en" = Just "english" fromIso "eo" = Just "esperanto" fromIso "es" = Just "spanish" fromIso "et" = Just "estonian" fromIso "eu" = Just "basque" fromIso "fa" = Just "farsi" fromIso "fi" = Just "finnish" fromIso "fr" = Just "french" fromIso "fur" = Just "friulan" fromIso "ga" = Just "irish" fromIso "gd" = Just "scottish" fromIso "gez" = Just "ethiopic" fromIso "gl" = Just "galician" fromIso "gu" = Just "gujarati" fromIso "he" = Just "hebrew" fromIso "hi" = Just "hindi" fromIso "hr" = Just "croatian" fromIso "hu" = Just "magyar" fromIso "hy" = Just "armenian" fromIso "ia" = Just "interlingua" fromIso "id" = Just "indonesian" fromIso "ie" = Just "interlingua" fromIso "is" = Just "icelandic" fromIso "it" = Just "italian" fromIso "ja" = Just "japanese" fromIso "km" = Just "khmer" fromIso "kmr" = Just "kurmanji" fromIso "kn" = Just "kannada" fromIso "ko" = Just "korean" fromIso "la" = Just "latin" fromIso "lo" = Just "lao" fromIso "lt" = Just "lithuanian" fromIso "lv" = Just "latvian" fromIso "ml" = Just "malayalam" fromIso "mn" = Just "mongolian" fromIso "mr" = Just "marathi" fromIso "nb" = Just "norsk" fromIso "nl" = Just "dutch" fromIso "nn" = Just "nynorsk" fromIso "no" = Just "norsk" fromIso "nqo" = Just "nko" fromIso "oc" = Just "occitan" fromIso "or" = Just "oriya" fromIso "pa" = Just "punjabi" fromIso "pl" = Just "polish" fromIso "pms" = Just "piedmontese" fromIso "pt" = Just "portuguese" fromIso "rm" = Just "romansh" fromIso "ro" = Just "romanian" fromIso "ru" = Just "russian" fromIso "sa" = Just "sanskrit" fromIso "se" = Just "samin" fromIso "sk" = Just "slovak" fromIso "sq" = Just "albanian" fromIso "sr" = Just "serbian" fromIso "sv" = Just "swedish" fromIso "syr" = Just "syriac" fromIso "ta" = Just "tamil" fromIso "te" = Just "telugu" fromIso "th" = Just "thai" fromIso "ti" = Just "ethiopic" fromIso "tk" = Just "turkmen" fromIso "tr" = Just "turkish" fromIso "uk" = Just "ukrainian" fromIso "ur" = Just "urdu" fromIso "vi" = Just "vietnamese" fromIso _ = Nothing ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/LaTeX/Notes.hs�������������������������������������������������0000644�0000000�0000000�00000001770�07346545000�020137� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Writers.LaTeX.Notes Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable Output tables as LaTeX. -} module Text.Pandoc.Writers.LaTeX.Notes ( notesToLaTeX ) where import Data.List (intersperse) import Text.DocLayout ( Doc, braces, empty, text, vcat, ($$)) import Data.Text (Text) notesToLaTeX :: [Doc Text] -> Doc Text notesToLaTeX = \case [] -> empty ns -> (case length ns of n | n > 1 -> "\\addtocounter" <> braces "footnote" <> braces (text $ show $ 1 - n) | otherwise -> empty) $$ vcat (intersperse ("\\addtocounter" <> braces "footnote" <> braces "1") $ map (\x -> "\\footnotetext" <> braces x) $ reverse ns) ��������pandoc-3.1.3/src/Text/Pandoc/Writers/LaTeX/Table.hs�������������������������������������������������0000644�0000000�0000000�00000036013�07346545000�020074� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Writers.LaTeX.Table Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable Output LaTeX formatted tables. -} module Text.Pandoc.Writers.LaTeX.Table ( tableToLaTeX ) where import Control.Monad.State.Strict ( gets, modify ) import Control.Monad (when) import Data.List (intersperse) import qualified Data.List.NonEmpty as NonEmpty import Data.List.NonEmpty (NonEmpty ((:|))) import Data.Text (Text) import qualified Data.Text as T import Text.Pandoc.Class.PandocMonad (PandocMonad) import Text.Pandoc.Definition import Text.DocLayout ( Doc, braces, cr, empty, hcat, hsep, isEmpty, literal, nest , text, vcat, ($$) ) import Text.Pandoc.Shared (splitBy, tshow) import Text.Pandoc.Walk (walk, query) import Data.Monoid (Any(..)) import Text.Pandoc.Writers.LaTeX.Caption (getCaption) import Text.Pandoc.Writers.LaTeX.Notes (notesToLaTeX) import Text.Pandoc.Writers.LaTeX.Types ( LW, WriterState (stBeamer, stExternalNotes, stInMinipage, stMultiRow , stNotes, stTable) ) import Text.Pandoc.Writers.LaTeX.Util (labelFor) import Text.Printf (printf) import qualified Text.Pandoc.Builder as B import qualified Text.Pandoc.Writers.AnnotatedTable as Ann tableToLaTeX :: PandocMonad m => ([Inline] -> LW m (Doc Text)) -> ([Block] -> LW m (Doc Text)) -> Ann.Table -> LW m (Doc Text) tableToLaTeX inlnsToLaTeX blksToLaTeX tbl = do let (Ann.Table (ident, _, _) caption specs thead tbodies tfoot) = tbl CaptionDocs capt captNotes <- captionToLaTeX inlnsToLaTeX caption ident let isSimpleTable = all (all isSimpleCell) $ mconcat [ headRows thead , concatMap bodyRows tbodies , footRows tfoot ] let removeNote (Note _) = Span ("", [], []) [] removeNote x = x let colCount = ColumnCount $ length specs -- The first head is not repeated on the following pages. If we were to just -- use a single head, without a separate first head, then the caption would be -- repeated on all pages that contain a part of the table. We avoid this by -- making the caption part of the first head. The downside is that we must -- duplicate the header rows for this. head' <- do let mkHead = headToLaTeX blksToLaTeX isSimpleTable colCount case (not $ isEmpty capt, not $ isEmptyHead thead) of (False, False) -> return "\\toprule\\noalign{}" (False, True) -> mkHead thead (True, False) -> return (capt $$ "\\toprule\\noalign{}" $$ "\\endfirsthead") (True, True) -> do -- avoid duplicate notes in head and firsthead: firsthead <- mkHead thead repeated <- mkHead (walk removeNote thead) return $ capt $$ firsthead $$ "\\endfirsthead" $$ repeated rows' <- mapM (rowToLaTeX blksToLaTeX isSimpleTable colCount BodyCell) $ mconcat (map bodyRows tbodies) foot' <- if isEmptyFoot tfoot then pure empty else do lastfoot <- mapM (rowToLaTeX blksToLaTeX isSimpleTable colCount BodyCell) $ footRows tfoot pure $ "\\midrule\\noalign{}" $$ vcat lastfoot modify $ \s -> s{ stTable = True } notes <- notesToLaTeX <$> gets stNotes beamer <- gets stBeamer return $ "\\begin{longtable}[]" <> braces ("@{}" <> colDescriptors isSimpleTable tbl <> "@{}") -- the @{} removes extra space at beginning and end $$ head' $$ "\\endhead" $$ vcat -- Longtable is not able to detect pagebreaks in Beamer; this -- causes problems with the placement of the footer, so make -- footer and bottom rule part of the body when targeting Beamer. -- See issue #8638. (if beamer then [ vcat rows' , foot' , "\\bottomrule\\noalign{}" ] else [ foot' , "\\bottomrule\\noalign{}" , "\\endlastfoot" , vcat rows' ]) $$ "\\end{longtable}" $$ captNotes $$ notes isSimpleCell :: Ann.Cell -> Bool isSimpleCell (Ann.Cell _ _ (Cell _attr _align _rowspan _colspan blocks)) = case blocks of [Para _] -> True [Plain _] -> True [] -> True _ -> False -- | Total number of columns in a table. newtype ColumnCount = ColumnCount Int -- | Creates column descriptors for the table. colDescriptors :: Bool -> Ann.Table -> Doc Text colDescriptors isSimpleTable (Ann.Table _attr _caption specs _thead _tbodies _tfoot) = let (aligns, widths) = unzip specs defaultWidthsOnly = all (== ColWidthDefault) widths relativeWidths = if defaultWidthsOnly then replicate (length specs) (1 / fromIntegral (length specs)) else map toRelWidth widths in if defaultWidthsOnly && isSimpleTable then hcat $ map (literal . colAlign) aligns else (cr <>) . nest 2 . vcat . map literal $ zipWith (toColDescriptor (length specs)) aligns relativeWidths where toColDescriptor :: Int -> Alignment -> Double -> Text toColDescriptor numcols align width = T.pack $ printf ">{%s\\arraybackslash}p{(\\columnwidth - %d\\tabcolsep) * \\real{%0.4f}}" (T.unpack (alignCommand align)) ((numcols - 1) * 2) width toRelWidth ColWidthDefault = 0 toRelWidth (ColWidth w) = w alignCommand :: Alignment -> Text alignCommand = \case AlignLeft -> "\\raggedright" AlignRight -> "\\raggedleft" AlignCenter -> "\\centering" AlignDefault -> "\\raggedright" colAlign :: Alignment -> Text colAlign = \case AlignLeft -> "l" AlignRight -> "r" AlignCenter -> "c" AlignDefault -> "l" data CaptionDocs = CaptionDocs { captionCommand :: Doc Text , captionNotes :: Doc Text } captionToLaTeX :: PandocMonad m => ([Inline] -> LW m (Doc Text)) -> Caption -> Text -- ^ table identifier (label) -> LW m CaptionDocs captionToLaTeX inlnsToLaTeX caption ident = do (captionText, captForLot, captNotes) <- getCaption inlnsToLaTeX False caption label <- labelFor ident return $ CaptionDocs { captionNotes = captNotes , captionCommand = if isEmpty captionText && isEmpty label then empty else "\\caption" <> captForLot <> braces captionText <> label <> "\\tabularnewline" } type BlocksWriter m = [Block] -> LW m (Doc Text) headToLaTeX :: PandocMonad m => BlocksWriter m -> Bool -> ColumnCount -> Ann.TableHead -> LW m (Doc Text) headToLaTeX blocksWriter isSimpleTable colCount (Ann.TableHead _attr headerRows) = do rowsContents <- mapM (rowToLaTeX blocksWriter isSimpleTable colCount HeaderCell . headerRowCells) headerRows return ("\\toprule\\noalign{}" $$ vcat rowsContents $$ "\\midrule\\noalign{}") -- | Converts a row of table cells into a LaTeX row. rowToLaTeX :: PandocMonad m => BlocksWriter m -> Bool -> ColumnCount -> CellType -> [Ann.Cell] -> LW m (Doc Text) rowToLaTeX blocksWriter isSimpleTable colCount celltype row = do cellsDocs <- mapM (cellToLaTeX blocksWriter isSimpleTable colCount celltype) (fillRow row) return $ hsep (intersperse "&" cellsDocs) <> " \\\\" -- | Pads row with empty cells to adjust for rowspans above this row. fillRow :: [Ann.Cell] -> [Ann.Cell] fillRow = go 0 where go _ [] = [] go n (acell@(Ann.Cell _spec (Ann.ColNumber colnum) cell):cells) = let (Cell _ _ _ (ColSpan colspan) _) = cell in map mkEmptyCell [n .. colnum - 1] ++ acell : go (colnum + colspan) cells mkEmptyCell :: Int -> Ann.Cell mkEmptyCell colnum = Ann.Cell ((AlignDefault, ColWidthDefault):|[]) (Ann.ColNumber colnum) B.emptyCell isEmptyHead :: Ann.TableHead -> Bool isEmptyHead (Ann.TableHead _attr []) = True isEmptyHead (Ann.TableHead _attr rows) = all (null . headerRowCells) rows isEmptyFoot :: Ann.TableFoot -> Bool isEmptyFoot (Ann.TableFoot _attr []) = True isEmptyFoot (Ann.TableFoot _attr rows) = all (null . headerRowCells) rows -- | Gets all cells in a header row. headerRowCells :: Ann.HeaderRow -> [Ann.Cell] headerRowCells (Ann.HeaderRow _attr _rownum cells) = cells -- | Gets all cells in a body row. bodyRowCells :: Ann.BodyRow -> [Ann.Cell] bodyRowCells (Ann.BodyRow _attr _rownum rowhead cells) = rowhead <> cells -- | Gets a list of rows of the table body, where a row is a simple -- list of cells. bodyRows :: Ann.TableBody -> [[Ann.Cell]] bodyRows (Ann.TableBody _attr _rowheads headerRows rows) = map headerRowCells headerRows <> map bodyRowCells rows -- | Gets a list of rows of the table head, where a row is a simple -- list of cells. headRows :: Ann.TableHead -> [[Ann.Cell]] headRows (Ann.TableHead _attr rows) = map headerRowCells rows -- | Gets a list of rows from the foot, where a row is a simple list -- of cells. footRows :: Ann.TableFoot -> [[Ann.Cell]] footRows (Ann.TableFoot _attr rows) = map headerRowCells rows -- For simple latex tables (without minipages or parboxes), -- we need to go to some lengths to get line breaks working: -- as LineBreak bs = \vtop{\hbox{\strut as}\hbox{\strut bs}}. fixLineBreaks :: Block -> Block fixLineBreaks = walk fixLineBreaks' fixLineBreaks' :: [Inline] -> [Inline] fixLineBreaks' ils = case splitBy (== LineBreak) ils of [] -> [] [xs] -> xs chunks -> RawInline "tex" "\\vtop{" : concatMap tohbox chunks <> [RawInline "tex" "}"] where tohbox ys = RawInline "tex" "\\hbox{\\strut " : ys <> [RawInline "tex" "}"] -- We also change display math to inline math, since display -- math breaks in simple tables. displayMathToInline :: Inline -> Inline displayMathToInline (Math DisplayMath x) = Math InlineMath x displayMathToInline x = x cellToLaTeX :: PandocMonad m => BlocksWriter m -> Bool -> ColumnCount -> CellType -> Ann.Cell -> LW m (Doc Text) cellToLaTeX blockListToLaTeX isSimpleTable colCount celltype annotatedCell = do let (Ann.Cell specs colnum cell) = annotatedCell let colWidths = NonEmpty.map snd specs let hasWidths = NonEmpty.head colWidths /= ColWidthDefault let specAlign = fst (NonEmpty.head specs) let (Cell _attr align' rowspan colspan blocks) = cell let align = case align' of AlignDefault -> specAlign _ -> align' beamer <- gets stBeamer externalNotes <- gets stExternalNotes -- See #5367 -- footnotehyper/footnote don't work in beamer, -- so we need to produce the notes outside the table... modify $ \st -> st{ stExternalNotes = beamer } let isPlainOrPara = \case Para{} -> True Plain{} -> True _ -> False let hasLineBreak LineBreak = Any True hasLineBreak _ = Any False let hasLineBreaks = getAny $ query hasLineBreak blocks result <- if not hasWidths || (celltype /= HeaderCell && all isPlainOrPara blocks && not hasLineBreaks) then blockListToLaTeX $ walk fixLineBreaks $ walk displayMathToInline blocks else do cellContents <- inMinipage $ blockListToLaTeX blocks let valign = text $ case celltype of HeaderCell -> "[b]" BodyCell -> "[t]" let halign = literal $ alignCommand align return $ "\\begin{minipage}" <> valign <> braces "\\linewidth" <> halign <> cr <> cellContents <> (if hasLineBreaks then "\\strut" else mempty) <> cr <> "\\end{minipage}" modify $ \st -> st{ stExternalNotes = externalNotes } when (rowspan /= RowSpan 1) $ modify (\st -> st{ stMultiRow = True }) let inMultiColumn x = case colspan of (ColSpan 1) -> x (ColSpan n) -> let colDescr = multicolumnDescriptor isSimpleTable align colWidths colCount colnum in "\\multicolumn" <> braces (literal (tshow n)) <> braces (literal colDescr) <> braces ("%\n" <> x) -- linebreak for readability let inMultiRow x = case rowspan of (RowSpan 1) -> x (RowSpan n) -> let nrows = literal (tshow n) in "\\multirow" <> braces nrows <> braces "*" <> braces x return . inMultiColumn . inMultiRow $ result -- | Returns the width of a cell spanning @n@ columns. multicolumnDescriptor :: Bool -> Alignment -> NonEmpty ColWidth -> ColumnCount -> Ann.ColNumber -> Text multicolumnDescriptor isSimpleTable align colWidths (ColumnCount numcols) (Ann.ColNumber colnum) = let toWidth = \case ColWidthDefault -> (1 / fromIntegral numcols) ColWidth x -> x colspan = length colWidths width = sum $ NonEmpty.map toWidth colWidths -- no column separators at beginning of first and end of last column. skipColSep = "@{}" :: String in T.pack $ if isSimpleTable then printf "%s%s%s" (if colnum == 0 then skipColSep else "") (T.unpack (colAlign align)) (if colnum + colspan >= numcols then skipColSep else "") else printf "%s>{%s\\arraybackslash}p{(\\columnwidth - %d\\tabcolsep) * \\real{%0.4f} + %d\\tabcolsep}%s" (if colnum == 0 then skipColSep else "") (T.unpack (alignCommand align)) (2 * (numcols - 1)) width (2 * (colspan - 1)) (if colnum + colspan >= numcols then skipColSep else "") -- | Perform a conversion, assuming that the context is a minipage. inMinipage :: Monad m => LW m a -> LW m a inMinipage action = do isInMinipage <- gets stInMinipage modify $ \st -> st{ stInMinipage = True } result <- action modify $ \st -> st{ stInMinipage = isInMinipage } return result data CellType = HeaderCell | BodyCell deriving Eq ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/LaTeX/Types.hs�������������������������������������������������0000644�0000000�0000000�00000007066�07346545000�020157� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������module Text.Pandoc.Writers.LaTeX.Types ( LW , WriterState (..) , startingState ) where import Control.Monad.State.Strict (StateT) import Data.Text (Text) import Text.DocLayout (Doc) import Text.Pandoc.Options ( WriterOptions (writerIncremental, writerTopLevelDivision) , TopLevelDivision (..) ) -- | LaTeX writer type. The type constructor @m@ will typically be an -- instance of PandocMonad. type LW m = StateT WriterState m data WriterState = WriterState { stInNote :: Bool -- ^ true if we're in a note , stInQuote :: Bool -- ^ true if in a blockquote , stExternalNotes :: Bool -- ^ true if in context where -- we need to store footnotes , stInMinipage :: Bool -- ^ true if in minipage , stInHeading :: Bool -- ^ true if in a section heading , stInItem :: Bool -- ^ true if in \item[..] , stInFigure :: Bool -- ^ true if in figure environment , stNotes :: [Doc Text] -- ^ notes in a minipage , stOLLevel :: Int -- ^ level of ordered list nesting , stOptions :: WriterOptions -- ^ writer options, so they don't have to -- be parameter , stVerbInNote :: Bool -- ^ true if document has verbatim text in note , stTable :: Bool -- ^ true if document has a table , stSubfigure :: Bool -- ^ true if document has subfigures , stMultiRow :: Bool -- ^ true if document has multirow cells , stStrikeout :: Bool -- ^ true if document has strikeout , stUrl :: Bool -- ^ true if document has visible URL link , stGraphics :: Bool -- ^ true if document contains images , stSVG :: Bool -- ^ true if document contains SVGs , stLHS :: Bool -- ^ true if document has literate haskell code , stHasChapters :: Bool -- ^ true if document has chapters , stCsquotes :: Bool -- ^ true if document uses csquotes , stHighlighting :: Bool -- ^ true if document has highlighted code , stIncremental :: Bool -- ^ true if beamer lists should be , stZwnj :: Bool -- ^ true if document has a ZWNJ character , stInternalLinks :: [Text] -- ^ list of internal link targets , stBeamer :: Bool -- ^ produce beamer , stEmptyLine :: Bool -- ^ true if no content on line , stHasCslRefs :: Bool -- ^ has a Div with class refs , stIsFirstInDefinition :: Bool -- ^ first block in a defn list } startingState :: WriterOptions -> WriterState startingState options = WriterState { stInNote = False , stInQuote = False , stExternalNotes = False , stInHeading = False , stInMinipage = False , stInItem = False , stInFigure = False , stNotes = [] , stOLLevel = 1 , stOptions = options , stVerbInNote = False , stTable = False , stSubfigure = False , stMultiRow = False , stStrikeout = False , stUrl = False , stGraphics = False , stSVG = False , stLHS = False , stHasChapters = case writerTopLevelDivision options of TopLevelPart -> True TopLevelChapter -> True _ -> False , stCsquotes = False , stHighlighting = False , stIncremental = writerIncremental options , stZwnj = False , stInternalLinks = [] , stBeamer = False , stEmptyLine = True , stHasCslRefs = False , stIsFirstInDefinition = False } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/LaTeX/Util.hs��������������������������������������������������0000644�0000000�0000000�00000024342�07346545000�017764� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Writers.LaTeX.Util Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable -} module Text.Pandoc.Writers.LaTeX.Util ( stringToLaTeX , StringContext(..) , toLabel , inCmd , wrapDiv , hypertarget , labelFor , getListingsLanguage , mbBraced ) where import Control.Applicative ((<|>)) import Control.Monad (when) import Text.Pandoc.Class (PandocMonad, toLang) import Text.Pandoc.Options (WriterOptions(..), isEnabled) import Text.Pandoc.Writers.LaTeX.Types (LW, WriterState(..)) import Text.Pandoc.Writers.LaTeX.Lang (toBabel) import Text.Pandoc.Highlighting (toListingsLanguage) import Text.DocLayout import Text.Pandoc.Definition import Text.Pandoc.ImageSize (showFl) import Control.Monad.State.Strict (gets, modify) import Data.Text (Text) import qualified Data.Text as T import Text.Pandoc.Extensions (Extension(Ext_smart)) import Data.Char (isLetter, isSpace, isDigit, isAscii, ord, isAlphaNum) import Text.Printf (printf) import Text.Pandoc.Shared (safeRead) import qualified Data.Text.Normalize as Normalize import Data.List (uncons) data StringContext = TextString | URLString | CodeString deriving (Eq) -- escape things as needed for LaTeX stringToLaTeX :: PandocMonad m => StringContext -> Text -> LW m Text stringToLaTeX context zs = do opts <- gets stOptions when (T.any (== '\x200c') zs) $ modify (\s -> s { stZwnj = True }) return $ T.pack $ foldr (go opts context) mempty $ T.unpack $ if writerPreferAscii opts then Normalize.normalize Normalize.NFD zs else zs where go :: WriterOptions -> StringContext -> Char -> String -> String go opts ctx x xs = let ligatures = isEnabled Ext_smart opts && ctx == TextString isUrl = ctx == URLString mbAccentCmd = if writerPreferAscii opts && ctx == TextString then uncons xs >>= \(c,_) -> lookupAccent c else Nothing emits s = case mbAccentCmd of Just cmd -> cmd <> "{" <> s <> "}" <> drop 1 xs -- drop combining accent Nothing -> s <> xs emitc c = case mbAccentCmd of Just cmd -> cmd <> "{" <> [c] <> "}" <> drop 1 xs -- drop combining accent Nothing -> c : xs emitcseq cs = case xs of c:_ | isLetter c , ctx == TextString -> cs <> " " <> xs | isSpace c -> cs <> "{}" <> xs | ctx == TextString -> cs <> xs _ -> cs <> "{}" <> xs emitquote cs = case xs of '`':_ -> cs <> "\\," <> xs -- add thin space '\'':_ -> cs <> "\\," <> xs -- add thin space _ -> cs <> xs in case x of '?' | ligatures -> -- avoid ?` ligature case xs of '`':_ -> emits "?{}" _ -> emitc x '!' | ligatures -> -- avoid !` ligature case xs of '`':_ -> emits "!{}" _ -> emitc x '{' -> emits "\\{" '}' -> emits "\\}" '`' | ctx == CodeString -> emitcseq "\\textasciigrave" '$' | not isUrl -> emits "\\$" '%' -> emits "\\%" '&' -> emits "\\&" '_' | not isUrl -> emits "\\_" '#' -> emits "\\#" '-' | not isUrl -> case xs of -- prevent adjacent hyphens from forming ligatures ('-':_) -> emits "-\\/" _ -> emitc '-' '~' | not isUrl -> emitcseq "\\textasciitilde" '^' -> emits "\\^{}" '\\'| isUrl -> emitc '/' -- NB. / works as path sep even on Windows | otherwise -> emitcseq "\\textbackslash" '|' | not isUrl -> emitcseq "\\textbar" '<' -> emitcseq "\\textless" '>' -> emitcseq "\\textgreater" '[' -> emits "{[}" -- to avoid interpretation as ']' -> emits "{]}" -- optional arguments '\'' -> emitcseq "\\textquotesingle" '\160' -> emits "~" '\x200B' -> emits "\\hspace{0pt}" -- zero-width space '\x202F' -> emits "\\," '\x2026' | ligatures -> emitcseq "\\ldots" '\x2018' | ligatures -> emitquote "`" '\x2019' | ligatures -> emitquote "'" '\x201C' | ligatures -> emitquote "``" '\x201D' | ligatures -> emitquote "''" '\x2014' | ligatures -> emits "---" '\x2013' | ligatures -> emits "--" _ | writerPreferAscii opts -> case x of 'ı' -> emitcseq "\\i" 'ȷ' -> emitcseq "\\j" 'å' -> emitcseq "\\aa" 'Å' -> emitcseq "\\AA" 'ß' -> emitcseq "\\ss" 'ø' -> emitcseq "\\o" 'Ø' -> emitcseq "\\O" 'Ł' -> emitcseq "\\L" 'ł' -> emitcseq "\\l" 'æ' -> emitcseq "\\ae" 'Æ' -> emitcseq "\\AE" 'œ' -> emitcseq "\\oe" 'Œ' -> emitcseq "\\OE" '£' -> emitcseq "\\pounds" '€' -> emitcseq "\\euro" '©' -> emitcseq "\\copyright" _ -> emitc x | otherwise -> emitc x lookupAccent :: Char -> Maybe String lookupAccent '\779' = Just "\\H" lookupAccent '\768' = Just "\\`" lookupAccent '\769' = Just "\\'" lookupAccent '\770' = Just "\\^" lookupAccent '\771' = Just "\\~" lookupAccent '\776' = Just "\\\"" lookupAccent '\775' = Just "\\." lookupAccent '\772' = Just "\\=" lookupAccent '\781' = Just "\\|" lookupAccent '\817' = Just "\\b" lookupAccent '\807' = Just "\\c" lookupAccent '\783' = Just "\\G" lookupAccent '\777' = Just "\\h" lookupAccent '\803' = Just "\\d" lookupAccent '\785' = Just "\\f" lookupAccent '\778' = Just "\\r" lookupAccent '\865' = Just "\\t" lookupAccent '\782' = Just "\\U" lookupAccent '\780' = Just "\\v" lookupAccent '\774' = Just "\\u" lookupAccent '\808' = Just "\\k" lookupAccent '\8413' = Just "\\textcircled" lookupAccent _ = Nothing toLabel :: PandocMonad m => Text -> LW m Text toLabel z = go `fmap` stringToLaTeX URLString z where go = T.concatMap $ \x -> case x of _ | (isLetter x || isDigit x) && isAscii x -> T.singleton x | T.any (== x) "_-+=:;." -> T.singleton x | otherwise -> T.pack $ "ux" <> printf "%x" (ord x) -- | Puts contents into LaTeX command. inCmd :: Text -> Doc Text -> Doc Text inCmd cmd contents = char '\\' <> literal cmd <> braces contents mapAlignment :: Text -> Text mapAlignment a = case a of "top" -> "T" "top-baseline" -> "t" "bottom" -> "b" "center" -> "c" _ -> a wrapDiv :: PandocMonad m => Attr -> Doc Text -> LW m (Doc Text) wrapDiv (_,classes,kvs) t = do beamer <- gets stBeamer let align dir txt = inCmd "begin" dir $$ txt $$ inCmd "end" dir lang <- toLang $ lookup "lang" kvs let wrapColumns = if beamer && "columns" `elem` classes then \contents -> let valign = maybe "T" mapAlignment (lookup "align" kvs) totalwidth = maybe [] (\x -> ["totalwidth=" <> x]) (lookup "totalwidth" kvs) onlytextwidth = filter ("onlytextwidth" ==) classes options = text $ T.unpack $ T.intercalate "," $ valign : totalwidth ++ onlytextwidth in inCmd "begin" "columns" <> brackets options $$ contents $$ inCmd "end" "columns" else id wrapColumn = if beamer && "column" `elem` classes then \contents -> let valign = maybe "" (brackets . text . T.unpack . mapAlignment) (lookup "align" kvs) w = maybe "0.48" fromPct (lookup "width" kvs) in inCmd "begin" "column" <> valign <> braces (literal w <> "\\textwidth") $$ contents $$ inCmd "end" "column" else id fromPct xs = case T.unsnoc xs of Just (ds, '%') -> case safeRead ds of Just digits -> showFl (digits / 100 :: Double) Nothing -> xs _ -> xs wrapDir = case lookup "dir" kvs of Just "rtl" -> align "RTL" Just "ltr" -> align "LTR" _ -> id wrapLang txt = case lang >>= toBabel of Just l -> inCmd "begin" "otherlanguage" <> (braces (literal l)) $$ blankline <> txt <> blankline $$ inCmd "end" "otherlanguage" Nothing -> txt return $ wrapColumns . wrapColumn . wrapDir . wrapLang $ t hypertarget :: PandocMonad m => Bool -> Text -> Doc Text -> LW m (Doc Text) hypertarget _ "" x = return x hypertarget addnewline ident x = do ref <- literal `fmap` toLabel ident return $ text "\\hypertarget" <> braces ref <> braces ((if addnewline && not (isEmpty x) then "%" <> cr else empty) <> x) labelFor :: PandocMonad m => Text -> LW m (Doc Text) labelFor "" = return empty labelFor ident = do ref <- literal `fmap` toLabel ident return $ text "\\label" <> braces ref -- Determine listings language from list of class attributes. getListingsLanguage :: [Text] -> Maybe Text getListingsLanguage xs = foldr ((<|>) . toListingsLanguage) Nothing xs mbBraced :: Text -> Text mbBraced x = if not (T.all isAlphaNum x) then "{" <> x <> "}" else x ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/Man.hs���������������������������������������������������������0000644�0000000�0000000�00000034533�07346545000�016610� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ViewPatterns #-} {- | Module : Text.Pandoc.Writers.Man Copyright : Copyright (C) 2007-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable Conversion of 'Pandoc' documents to roff man page format. -} module Text.Pandoc.Writers.Man ( writeMan ) where import Control.Monad ( liftM, zipWithM, forM ) import Control.Monad.State.Strict ( StateT, gets, modify, evalStateT ) import Control.Monad.Trans (MonadTrans(lift)) import Data.List (intersperse) import Data.List.NonEmpty (nonEmpty) import Data.Maybe (fromMaybe) import Data.Text (Text) import qualified Data.Text as T import Text.Pandoc.Builder (deleteMeta) import Text.Pandoc.Class.PandocMonad (PandocMonad, report) import Text.Pandoc.Definition import Text.Pandoc.Logging import Text.Pandoc.Options import Text.DocLayout import Text.Pandoc.Shared import Text.Pandoc.URI import Text.Pandoc.Templates (renderTemplate) import Text.Pandoc.Writers.Math import Text.Pandoc.Writers.Shared import Text.Pandoc.Writers.Roff import Text.Printf (printf) -- | Convert Pandoc to Man. writeMan :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeMan opts document = evalStateT (pandocToMan opts document) defaultWriterState -- | Return roff man representation of document. pandocToMan :: PandocMonad m => WriterOptions -> Pandoc -> StateT WriterState m Text pandocToMan opts (Pandoc meta blocks) = do let colwidth = if writerWrapText opts == WrapAuto then Just $ writerColumns opts else Nothing titleText <- inlineListToMan opts $ docTitle meta let title' = render Nothing titleText let setFieldsFromTitle = case T.break (== ' ') title' of (cmdName, rest) -> case T.break (=='(') cmdName of (xs, ys) | "(" `T.isPrefixOf` ys && ")" `T.isSuffixOf` ys -> defField "title" xs . defField "section" (T.init $ T.drop 1 ys) . case T.splitOn "|" rest of (ft:hds) -> defField "footer" (T.strip ft) . defField "header" (T.strip $ mconcat hds) [] -> id _ -> defField "title" title' metadata <- metaToContext opts (blockListToMan opts) (fmap chomp . inlineListToMan opts) $ deleteMeta "title" meta body <- blockListToMan opts blocks notes <- gets stNotes notes' <- notesToMan opts (reverse notes) let main = body $$ notes' $$ text "" hasTables <- gets stHasTables let context = defField "body" main $ setFieldsFromTitle $ defField "has-tables" hasTables $ defField "hyphenate" True metadata return $ render colwidth $ case writerTemplate opts of Nothing -> main Just tpl -> renderTemplate tpl context escString :: WriterOptions -> Text -> Text escString opts = escapeString (if writerPreferAscii opts then AsciiOnly else AllowUTF8) -- | Return man representation of notes. notesToMan :: PandocMonad m => WriterOptions -> [[Block]] -> StateT WriterState m (Doc Text) notesToMan opts notes = if null notes then return empty else (text ".SH NOTES" $$) . vcat <$> zipWithM (noteToMan opts) [1..] notes -- | Return man representation of a note. noteToMan :: PandocMonad m => WriterOptions -> Int -> [Block] -> StateT WriterState m (Doc Text) noteToMan opts num note = do contents <- blockListToMan opts note let marker = cr <> text ".SS " <> brackets (text (show num)) return $ marker $$ contents -- We split inline lists into sentences, and print one sentence per -- line. roff treats the line-ending period differently. -- See http://code.google.com/p/pandoc/issues/detail?id=148. -- | Convert Pandoc block element to man. blockToMan :: PandocMonad m => WriterOptions -- ^ Options -> Block -- ^ Block element -> StateT WriterState m (Doc Text) blockToMan opts (Div _ bs) = blockListToMan opts bs blockToMan opts (Plain inlines) = splitSentences <$> inlineListToMan opts inlines blockToMan opts (Para inlines) = do contents <- inlineListToMan opts inlines return $ text ".PP" $$ splitSentences contents blockToMan opts (LineBlock lns) = blockToMan opts $ linesToPara lns blockToMan _ b@(RawBlock f str) | f == Format "man" = return $ literal str | otherwise = do report $ BlockNotRendered b return empty blockToMan _ HorizontalRule = return $ literal ".PP" $$ literal " * * * * *" blockToMan opts (Header level _ inlines) = do contents <- inlineListToMan opts inlines let heading = case level of 1 -> ".SH " _ -> ".SS " return $ nowrap $ literal heading <> contents blockToMan opts (CodeBlock _ str) = return $ literal ".IP" $$ literal ".nf" $$ literal "\\f[C]" $$ ((case T.uncons str of Just ('.',_) -> literal "\\&" _ -> mempty) <> literal (escString opts str)) $$ literal "\\f[R]" $$ literal ".fi" blockToMan opts (BlockQuote blocks) = do contents <- blockListToMan opts blocks return $ literal ".RS" $$ contents $$ literal ".RE" blockToMan opts (Table _ blkCapt specs thead tbody tfoot) = let (caption, alignments, widths, headers, rows) = toLegacyTable blkCapt specs thead tbody tfoot aligncode AlignLeft = "l" aligncode AlignRight = "r" aligncode AlignCenter = "c" aligncode AlignDefault = "l" in do caption' <- inlineListToMan opts caption modify $ \st -> st{ stHasTables = True } let iwidths = if all (== 0) widths then repeat "" else map (T.pack . printf "w(%0.1fn)" . (70 *)) widths -- 78n default width - 8n indent = 70n let coldescriptions = literal $ T.unwords (zipWith (\align width -> aligncode align <> width) alignments iwidths) <> "." colheadings <- mapM (blockListToMan opts) headers let makeRow cols = literal "T{" $$ vcat (intersperse (literal "T}@T{") cols) $$ literal "T}" let colheadings' = if all null headers then empty else makeRow colheadings $$ char '_' body <- mapM (\row -> do cols <- mapM (blockListToMan opts) row return $ makeRow cols) rows return $ literal ".PP" $$ caption' $$ literal ".TS" $$ literal "tab(@);" $$ coldescriptions $$ colheadings' $$ vcat body $$ literal ".TE" blockToMan opts (BulletList items) = do contents <- mapM (bulletListItemToMan opts) items return (vcat contents) blockToMan opts (OrderedList attribs items) = do let markers = take (length items) $ orderedListMarkers attribs let indent = 1 + maybe 0 maximum (nonEmpty (map T.length markers)) contents <- mapM (\(num, item) -> orderedListItemToMan opts num indent item) $ zip markers items return (vcat contents) blockToMan opts (DefinitionList items) = do contents <- mapM (definitionListItemToMan opts) items return (vcat contents) blockToMan opts (Figure attr capt body) = do blockToMan opts (figureDiv attr capt body) -- | Convert bullet list item (list of blocks) to man. bulletListItemToMan :: PandocMonad m => WriterOptions -> [Block] -> StateT WriterState m (Doc Text) bulletListItemToMan _ [] = return empty bulletListItemToMan opts (Para first:rest) = bulletListItemToMan opts (Plain first:rest) bulletListItemToMan opts (Plain first:rest) = do first' <- blockToMan opts (Plain first) rest' <- blockListToMan opts rest let first'' = literal ".IP \\[bu] 2" $$ first' let rest'' = if null rest then empty else literal ".RS 2" $$ rest' $$ literal ".RE" return (first'' $$ rest'') bulletListItemToMan opts (first:rest) = do first' <- blockToMan opts first rest' <- blockListToMan opts rest return $ literal "\\[bu] .RS 2" $$ first' $$ rest' $$ literal ".RE" -- | Convert ordered list item (a list of blocks) to man. orderedListItemToMan :: PandocMonad m => WriterOptions -- ^ options -> Text -- ^ order marker for list item -> Int -- ^ number of spaces to indent -> [Block] -- ^ list item (list of blocks) -> StateT WriterState m (Doc Text) orderedListItemToMan _ _ _ [] = return empty orderedListItemToMan opts num indent (Para first:rest) = orderedListItemToMan opts num indent (Plain first:rest) orderedListItemToMan opts num indent (first:rest) = do first' <- blockToMan opts first rest' <- blockListToMan opts rest let num' = printf ("%" ++ show (indent - 1) ++ "s") num let first'' = literal (".IP \"" <> T.pack num' <> "\" " <> tshow indent) $$ first' let rest'' = if null rest then empty else literal ".RS 4" $$ rest' $$ literal ".RE" return $ first'' $$ rest'' -- | Convert definition list item (label, list of blocks) to man. definitionListItemToMan :: PandocMonad m => WriterOptions -> ([Inline],[[Block]]) -> StateT WriterState m (Doc Text) definitionListItemToMan opts (label, defs) = do -- in most man pages, option and other code in option lists is boldface, -- but not other things, so we try to reproduce this style: labelText <- inlineListToMan opts label contents <- if null defs then return empty else liftM vcat $ forM defs $ \case (x:xs) -> do first' <- blockToMan opts $ case x of Para y -> Plain y _ -> x rest' <- liftM vcat $ mapM (\item -> blockToMan opts item) xs return $ first' $$ if null xs then empty else literal ".RS" $$ rest' $$ literal ".RE" [] -> return empty return $ literal ".TP" $$ nowrap labelText $$ contents -- | Convert list of Pandoc block elements to man. blockListToMan :: PandocMonad m => WriterOptions -- ^ Options -> [Block] -- ^ List of block elements -> StateT WriterState m (Doc Text) blockListToMan opts blocks = vcat <$> mapM (blockToMan opts) blocks -- | Convert list of Pandoc inline elements to man. inlineListToMan :: PandocMonad m => WriterOptions -> [Inline] -> StateT WriterState m (Doc Text) inlineListToMan opts lst = hcat <$> mapM (inlineToMan opts) lst -- | Convert Pandoc inline element to man. inlineToMan :: PandocMonad m => WriterOptions -> Inline -> StateT WriterState m (Doc Text) inlineToMan opts (Span _ ils) = inlineListToMan opts ils inlineToMan opts (Emph lst) = withFontFeature 'I' (inlineListToMan opts lst) -- Underline is not supported, so treat the same as Emph inlineToMan opts (Underline lst) = withFontFeature 'I' (inlineListToMan opts lst) inlineToMan opts (Strong lst) = withFontFeature 'B' (inlineListToMan opts lst) inlineToMan opts (Strikeout lst) = do contents <- inlineListToMan opts lst return $ literal "[STRIKEOUT:" <> contents <> char ']' inlineToMan opts (Superscript lst) = do contents <- inlineListToMan opts lst return $ char '^' <> contents <> char '^' inlineToMan opts (Subscript lst) = do contents <- inlineListToMan opts lst return $ char '~' <> contents <> char '~' inlineToMan opts (SmallCaps lst) = inlineListToMan opts lst -- not supported inlineToMan opts (Quoted SingleQuote lst) = do contents <- inlineListToMan opts lst return $ char '`' <> contents <> char '\'' inlineToMan opts (Quoted DoubleQuote lst) = do contents <- inlineListToMan opts lst return $ literal "\\[lq]" <> contents <> literal "\\[rq]" inlineToMan opts (Cite _ lst) = inlineListToMan opts lst inlineToMan opts (Code _ str) = -- note that the V font is specially defined in the default man template withFontFeature 'V' (return (literal $ escString opts str)) inlineToMan opts (Str str@(T.uncons -> Just ('.',_))) = return $ afterBreak "\\&" <> literal (escString opts str) inlineToMan opts (Str str) = return $ literal $ escString opts str inlineToMan opts (Math InlineMath str) = lift (texMathToInlines InlineMath str) >>= inlineListToMan opts inlineToMan opts (Math DisplayMath str) = do contents <- lift (texMathToInlines DisplayMath str) >>= inlineListToMan opts return $ cr <> literal ".RS" $$ contents $$ literal ".RE" inlineToMan _ il@(RawInline f str) | f == Format "man" = return $ literal str | otherwise = do report $ InlineNotRendered il return empty inlineToMan _ LineBreak = return $ cr <> literal ".PD 0" $$ literal ".P" $$ literal ".PD" <> cr inlineToMan _ SoftBreak = return space inlineToMan _ Space = return space inlineToMan opts (Link _ txt (src, _)) | not (isURI src) = inlineListToMan opts txt -- skip relative links | otherwise = do linktext <- inlineListToMan opts txt let srcSuffix = fromMaybe src (T.stripPrefix "mailto:" src) return $ case txt of [Str s] | escapeURI s == srcSuffix -> char '<' <> literal srcSuffix <> char '>' _ -> linktext <> literal " (" <> literal src <> char ')' inlineToMan opts (Image attr alternate (source, tit)) = do let txt = if null alternate || (alternate == [Str ""]) || (alternate == [Str source]) -- to prevent autolinks then [Str "image"] else alternate linkPart <- inlineToMan opts (Link attr txt (source, tit)) return $ char '[' <> literal "IMAGE: " <> linkPart <> char ']' inlineToMan _ (Note contents) = do -- add to notes in state modify $ \st -> st{ stNotes = contents : stNotes st } notes <- gets stNotes let ref = tshow (length notes) return $ char '[' <> literal ref <> char ']' ���������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/Markdown.hs����������������������������������������������������0000644�0000000�0000000�00000115503�07346545000�017654� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE MultiWayIf #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TupleSections #-} {-# LANGUAGE BangPatterns #-} {- | Module : Text.Pandoc.Writers.Markdown Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable Conversion of 'Pandoc' documents to markdown-formatted plain text. Markdown: <https://daringfireball.net/projects/markdown/> -} module Text.Pandoc.Writers.Markdown ( writeMarkdown, writeCommonMark, writeMarkua, writePlain) where import Control.Monad (foldM, zipWithM, MonadPlus(..), when) import Control.Monad.Reader ( asks, MonadReader(local) ) import Control.Monad.State.Strict ( gets, modify ) import Data.Default import Data.List (intersperse, sortOn, union) import Data.List.NonEmpty (nonEmpty, NonEmpty(..)) import qualified Data.Map as M import Data.Maybe (fromMaybe, mapMaybe, isNothing) import qualified Data.Set as Set import Data.Text (Text) import Data.Char (isSpace) import qualified Data.Text as T import Text.HTML.TagSoup (Tag (..), isTagText, parseTags) import Text.Pandoc.Class.PandocMonad (PandocMonad, report) import Text.Pandoc.Definition import Text.Pandoc.Logging import Text.Pandoc.Options import Text.Pandoc.Parsing hiding (blankline, blanklines, char, space) import Text.DocLayout import Text.Pandoc.Shared import Text.Pandoc.Writers.Shared import Text.Pandoc.Templates (renderTemplate) import Text.DocTemplates (Val(..), Context(..), FromContext(..)) import Text.Pandoc.Walk import Text.Pandoc.Writers.HTML (writeHtml5String) import Text.Pandoc.Writers.Markdown.Inline (inlineListToMarkdown, linkAttributes, attrsToMarkdown, attrsToMarkua) import Text.Pandoc.Writers.Markdown.Table (pipeTable, pandocTable) import Text.Pandoc.Writers.Markdown.Types (MarkdownVariant(..), WriterState(..), WriterEnv(..), Ref, Refs, MD, evalMD) -- | Convert Pandoc to Markdown. writeMarkdown :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeMarkdown opts document = evalMD (pandocToMarkdown opts{ writerWrapText = if isEnabled Ext_hard_line_breaks opts then WrapNone else writerWrapText opts } document) def def -- | Convert Pandoc to plain text (like markdown, but without links, -- pictures, or inline formatting). writePlain :: PandocMonad m => WriterOptions -> Pandoc -> m Text writePlain opts document = evalMD (pandocToMarkdown opts document) def{ envVariant = PlainText } def -- | Convert Pandoc to Commonmark. writeCommonMark :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeCommonMark opts document = evalMD (pandocToMarkdown opts' document) def{ envVariant = Commonmark } def where opts' = opts{ writerExtensions = -- These extensions can't be enabled or disabled -- for commonmark because they're part of the core; -- we set them here so that escapeText will behave -- properly. enableExtension Ext_all_symbols_escapable $ enableExtension Ext_intraword_underscores $ writerExtensions opts , writerWrapText = if isEnabled Ext_hard_line_breaks opts then WrapNone else writerWrapText opts } -- | Convert Pandoc to Markua. writeMarkua :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeMarkua opts document = evalMD (pandocToMarkdown opts' document) def{ envVariant = Markua } def where opts' = opts{ writerExtensions = enableExtension Ext_hard_line_breaks $ enableExtension Ext_pipe_tables $ -- required for fancy list enumerators enableExtension Ext_fancy_lists $ enableExtension Ext_startnum $ enableExtension Ext_strikeout $ enableExtension Ext_subscript $ enableExtension Ext_superscript $ enableExtension Ext_definition_lists $ enableExtension Ext_smart $ enableExtension Ext_footnotes mempty , writerWrapText = if isEnabled Ext_hard_line_breaks opts then WrapNone else writerWrapText opts } pandocTitleBlock :: Doc Text -> [Doc Text] -> Doc Text -> Doc Text pandocTitleBlock tit auths dat = hang 2 (text "% ") tit <> cr <> hang 2 (text "% ") (vcat $ map nowrap auths) <> cr <> hang 2 (text "% ") dat <> cr mmdTitleBlock :: Context Text -> Doc Text mmdTitleBlock (Context hashmap) = vcat $ map go $ sortOn (T.toCaseFold . fst) $ M.toList hashmap where go (k,v) = case (text (T.unpack k), v) of (k', ListVal xs) | null xs -> empty | otherwise -> k' <> ":" <> space <> hcat (intersperse "; " $ mapMaybe fromVal xs) (k', SimpleVal x) | isEmpty x -> empty | otherwise -> k' <> ":" <> space <> nest 2 (removeBlankLines (chomp x)) _ -> empty removeBlankLines BlankLines{} = cr <> text "." <> cr removeBlankLines (Concat x y) = removeBlankLines x <> removeBlankLines y removeBlankLines x = x plainTitleBlock :: Doc Text -> [Doc Text] -> Doc Text -> Doc Text plainTitleBlock tit auths dat = tit <> cr <> hcat (intersperse (text "; ") auths) <> cr <> dat <> cr yamlMetadataBlock :: Context Text -> Doc Text yamlMetadataBlock v = "---" $$ contextToYaml v $$ "---" contextToYaml :: Context Text -> Doc Text contextToYaml (Context o) = vcat $ map keyvalToYaml $ sortOn (T.toCaseFold . fst) $ M.toList o where keyvalToYaml (k,v) = case (text (T.unpack k), v) of (k', ListVal vs) | null vs -> empty | otherwise -> (k' <> ":") $$ valToYaml v (k', MapVal (Context m)) | M.null m -> k' <> ": {}" | otherwise -> (k' <> ":") $$ nest 2 (valToYaml v) (_, SimpleVal x) | isEmpty x -> empty (_, NullVal) -> empty (k', _) -> k' <> ":" <+> hang 2 "" (valToYaml v) valToYaml :: Val Text -> Doc Text valToYaml (ListVal xs) = vcat $ map (\v -> hang 2 "- " (valToYaml v)) xs valToYaml (MapVal c) = contextToYaml c valToYaml (BoolVal True) = "true" valToYaml (BoolVal False) = "false" valToYaml (SimpleVal x) | isEmpty x = empty | otherwise = if hasNewlines x then hang 0 ("|" <> cr) x else case x of Text _ t | isSpecialString t -> "\"" <> fmap escapeInDoubleQuotes x <> "\"" _ | isNothing (foldM needsDoubleQuotes True x) -> "\"" <> fmap escapeInDoubleQuotes x <> "\"" | otherwise -> x where isSpecialString t = Set.member t specialStrings specialStrings = Set.fromList ["y", "Y", "yes", "Yes", "YES", "n", "N", "no", "No", "NO", "true", "True", "TRUE", "false", "False", "FALSE", "on", "On", "ON", "off", "Off", "OFF", "null", "Null", "NULL", "~", "*"] needsDoubleQuotes isFirst t = if T.any isBadAnywhere t || (isFirst && T.any isYamlPunct (T.take 1 t)) then Nothing else Just False isBadAnywhere '#' = True isBadAnywhere ':' = True isBadAnywhere _ = False hasNewlines NewLine = True hasNewlines BlankLines{} = True hasNewlines CarriageReturn = True hasNewlines (Concat w z) = hasNewlines w || hasNewlines z hasNewlines _ = False isYamlPunct = (`elem` ['-','?',':',',','[',']','{','}', '#','&','*','!','|','>','\'','"', '%','@','`']) escapeInDoubleQuotes = T.replace "\"" "\\\"" . T.replace "\\" "\\\\" valToYaml _ = empty -- | Return markdown representation of document. pandocToMarkdown :: PandocMonad m => WriterOptions -> Pandoc -> MD m Text pandocToMarkdown opts (Pandoc meta blocks) = do let colwidth = if writerWrapText opts == WrapAuto then Just $ writerColumns opts else Nothing variant <- asks envVariant metadata <- metaToContext' (blockListToMarkdown opts) (inlineListToMarkdown opts) meta let title' = fromMaybe empty $ getField "title" metadata let authors' = fromMaybe [] $ getField "author" metadata let date' = fromMaybe empty $ getField "date" metadata let titleblock = case writerTemplate opts of Just _ | variant == PlainText -> plainTitleBlock title' authors' date' | isEnabled Ext_yaml_metadata_block opts -> yamlMetadataBlock metadata | isEnabled Ext_pandoc_title_block opts -> pandocTitleBlock title' authors' date' | isEnabled Ext_mmd_title_block opts -> mmdTitleBlock metadata | otherwise -> empty Nothing -> empty let modifyTOC = if isEnabled Ext_link_attributes opts || isEnabled Ext_attributes opts then id else walk $ \inln -> case inln of Link _attr contents tgt -> Link nullAttr contents tgt _ -> inln toc <- if writerTableOfContents opts then blockToMarkdown opts . modifyTOC $ toTableOfContents opts blocks else return mempty -- Strip off final 'references' header if markdown citations enabled let blocks' = if isEnabled Ext_citations opts then case reverse blocks of (Div ("refs",_,_) _):xs -> reverse xs _ -> blocks else blocks body <- blockListToMarkdown opts blocks' notesAndRefs' <- notesAndRefs opts let main = body <> notesAndRefs' let context = -- for backwards compatibility we populate toc -- with the contents of the toc, rather than a -- boolean: defField "toc" toc $ defField "table-of-contents" toc $ defField "body" main $ (if isNullMeta meta then id else defField "titleblock" titleblock) $ addVariablesToContext opts metadata return $ render colwidth $ case writerTemplate opts of Nothing -> main Just tpl -> renderTemplate tpl context -- | Return markdown representation of reference key table. refsToMarkdown :: PandocMonad m => WriterOptions -> Refs -> MD m (Doc Text) refsToMarkdown opts refs = vcat <$> mapM (keyToMarkdown opts) refs -- | Return markdown representation of a reference key. keyToMarkdown :: PandocMonad m => WriterOptions -> Ref -> MD m (Doc Text) keyToMarkdown opts (label', (src, tit), attr) = do let tit' = if T.null tit then empty else space <> "\"" <> literal tit <> "\"" return $ nest 2 $ hang 2 ("[" <> literal label' <> "]:" <> space) (literal src <> tit') <+> linkAttributes opts attr -- | Return markdown representation of notes. notesToMarkdown :: PandocMonad m => WriterOptions -> [[Block]] -> MD m (Doc Text) notesToMarkdown opts notes = do n <- gets stNoteNum notes' <- zipWithM (noteToMarkdown opts) [n..] notes modify $ \st -> st { stNoteNum = stNoteNum st + length notes } return $ vsep notes' -- | Return markdown representation of a note. noteToMarkdown :: PandocMonad m => WriterOptions -> Int -> [Block] -> MD m (Doc Text) noteToMarkdown opts num blocks = do contents <- blockListToMarkdown opts blocks let num' = literal $ writerIdentifierPrefix opts <> tshow num let marker = if isEnabled Ext_footnotes opts then literal "[^" <> num' <> literal "]:" else literal "[" <> num' <> literal "]" let markerSize = 4 + offset num' let hspacer = case writerTabStop opts - markerSize of n | n > 0 -> literal $ T.replicate n " " _ -> literal " " let spacer = case blocks of Para{}:_ -> hspacer Plain{}:_ -> hspacer _ -> cr return $ if isEnabled Ext_footnotes opts then hang (writerTabStop opts) (marker <> spacer) contents else marker <> spacer <> contents -- | (Code) blocks with a single class and no attributes can just use it -- standalone, no need to bother with curly braces. classOrAttrsToMarkdown :: Attr -> Doc Text classOrAttrsToMarkdown ("",[cls],[]) = literal cls classOrAttrsToMarkdown attrs = attrsToMarkdown attrs -- | Ordered list start parser for use in Para below. olMarker :: Parsec Text ParserState () olMarker = do (start, style', delim) <- anyOrderedListMarker if delim == Period && (style' == UpperAlpha || (style' == UpperRoman && start `elem` [1, 5, 10, 50, 100, 500, 1000])) then mzero -- it needs 2 spaces anyway else eof -- | True if string begins with an ordered list marker beginsWithOrderedListMarker :: Text -> Bool beginsWithOrderedListMarker str = case runParser olMarker defaultParserState "para start" (T.take 10 str) of Left _ -> False Right _ -> True notesAndRefs :: PandocMonad m => WriterOptions -> MD m (Doc Text) notesAndRefs opts = do notes' <- gets stNotes >>= notesToMarkdown opts . reverse modify $ \s -> s { stNotes = [] } refs' <- gets stRefs >>= refsToMarkdown opts . reverse modify $ \s -> s { stPrevRefs = stPrevRefs s ++ stRefs s , stRefs = []} let endSpacing = if | writerReferenceLocation opts == EndOfDocument -> empty | isEmpty notes' && isEmpty refs' -> empty | otherwise -> blankline return $ (if isEmpty notes' then empty else blankline <> notes') <> (if isEmpty refs' then empty else blankline <> refs') <> endSpacing -- | Convert Pandoc block element to markdown. blockToMarkdown :: PandocMonad m => WriterOptions -- ^ Options -> Block -- ^ Block element -> MD m (Doc Text) blockToMarkdown opts blk = local (\env -> env {envBlockLevel = envBlockLevel env + 1}) $ do doc <- blockToMarkdown' opts blk blkLevel <- asks envBlockLevel if writerReferenceLocation opts == EndOfBlock && blkLevel == 1 then notesAndRefs opts >>= (\d -> return $ doc <> d) else return doc blockToMarkdown' :: PandocMonad m => WriterOptions -- ^ Options -> Block -- ^ Block element -> MD m (Doc Text) blockToMarkdown' opts (Div attrs ils) = do contents <- blockListToMarkdown opts ils variant <- asks envVariant return $ case () of _ | variant == Markua -> case () of () | "blurb" `elem` classes' -> prefixed "B> " contents <> blankline | "aside" `elem` classes' -> prefixed "A> " contents <> blankline -- necessary to enable option to create a bibliography | (take 3 (T.unpack id')) == "ref" -> contents <> blankline | otherwise -> contents <> blankline | isEnabled Ext_fenced_divs opts && attrs /= nullAttr -> let attrsToMd = if variant == Commonmark then attrsToMarkdown else classOrAttrsToMarkdown in nowrap (literal ":::" <+> attrsToMd attrs) $$ chomp contents $$ literal ":::" <> blankline | isEnabled Ext_native_divs opts || (isEnabled Ext_raw_html opts && (variant == Commonmark || isEnabled Ext_markdown_in_html_blocks opts)) -> tagWithAttrs "div" attrs <> blankline <> contents <> blankline <> "</div>" <> blankline | isEnabled Ext_raw_html opts && isEnabled Ext_markdown_attribute opts -> tagWithAttrs "div" attrs' <> blankline <> contents <> blankline <> "</div>" <> blankline | otherwise -> contents <> blankline where (id',classes',kvs') = attrs attrs' = (id',classes',("markdown","1"):kvs') blockToMarkdown' opts (Plain inlines) = do -- escape if para starts with ordered list marker variant <- asks envVariant let escapeMarker = T.concatMap $ \x -> if T.any (== x) ".()" then T.pack ['\\', x] else T.singleton x let startsWithSpace (Space:_) = True startsWithSpace (SoftBreak:_) = True startsWithSpace _ = False let inlines' = if variant == PlainText then inlines else case inlines of (Str t:ys) | null ys || startsWithSpace ys , beginsWithOrderedListMarker t -> RawInline (Format "markdown") (escapeMarker t):ys (Str t:_) | t == "+" || t == "-" || (t == "%" && isEnabled Ext_pandoc_title_block opts && isEnabled Ext_all_symbols_escapable opts) -> RawInline (Format "markdown") "\\" : inlines _ -> inlines contents <- inlineListToMarkdown opts inlines' return $ contents <> cr blockToMarkdown' opts (Para inlines) = (<> blankline) `fmap` blockToMarkdown opts (Plain inlines) blockToMarkdown' opts (LineBlock lns) = if isEnabled Ext_line_blocks opts then do mdLines <- mapM (inlineListToMarkdown opts) lns return $ vcat (map (hang 2 (literal "| ")) mdLines) <> blankline else blockToMarkdown opts $ linesToPara lns blockToMarkdown' opts b@(RawBlock f str) = do variant <- asks envVariant let Format fmt = f let rawAttribBlock = return $ (literal "```{=" <> literal fmt <> "}") $$ literal str $$ (literal "```" <> literal "\n") let renderEmpty = mempty <$ report (BlockNotRendered b) case variant of PlainText | f == "plain" -> return $ literal str <> literal "\n" Commonmark | f `elem` ["gfm", "commonmark", "commonmark_x", "markdown"] -> return $ literal str <> literal "\n" | f `elem` ["html", "html5", "html4"] -> return $ literal (removeBlankLinesInHTML str) <> literal "\n" Markdown | f `elem` ["markdown", "markdown_github", "markdown_phpextra", "markdown_mmd", "markdown_strict"] -> return $ literal str <> literal "\n" Markua -> renderEmpty _ | isEnabled Ext_raw_attribute opts -> rawAttribBlock | f `elem` ["html", "html5", "html4"] , isEnabled Ext_markdown_attribute opts -> return $ literal (addMarkdownAttribute str) <> literal "\n" | f `elem` ["html", "html5", "html4"] , isEnabled Ext_raw_html opts -> return $ literal str <> literal "\n" | f `elem` ["latex", "tex"] , isEnabled Ext_raw_tex opts -> return $ literal str <> literal "\n" _ -> renderEmpty blockToMarkdown' opts HorizontalRule = do variant <- asks envVariant let indicator = case variant of Markua -> "* * *" _ -> T.replicate (writerColumns opts) "-" return $ blankline <> literal indicator <> blankline blockToMarkdown' opts (Header level attr inlines) = do -- first, if we're putting references at the end of a section, we -- put them here. blkLevel <- asks envBlockLevel refs <- if writerReferenceLocation opts == EndOfSection && blkLevel == 1 then notesAndRefs opts else return empty variant <- asks envVariant -- we calculate the id that would be used by auto_identifiers -- or gfm_auto_identifiers -- so we know whether to print an explicit identifier ids <- gets stIds let autoId = uniqueIdent (writerExtensions opts) inlines ids modify $ \st -> st{ stIds = Set.insert autoId ids } let attr' = case attr of ("",[],[]) -> empty (id',[],[]) | (isEnabled Ext_auto_identifiers opts || isEnabled Ext_gfm_auto_identifiers opts) && id' == autoId -> empty (id',_,_) | isEnabled Ext_mmd_header_identifiers opts -> space <> brackets (literal id') _ | variant == Markua -> attrsToMarkua attr | isEnabled Ext_header_attributes opts || isEnabled Ext_attributes opts -> space <> attrsToMarkdown attr | otherwise -> empty contents <- inlineListToMarkdown opts $ -- ensure no newlines; see #3736 walk lineBreakToSpace $ if level == 1 && variant == PlainText && isEnabled Ext_gutenberg opts then capitalize inlines else inlines let setext = writerSetextHeaders opts when (not setext && isEnabled Ext_literate_haskell opts) $ report $ ATXHeadingInLHS level (render Nothing contents) let hdr = nowrap $ case level of 1 | variant == PlainText -> if isEnabled Ext_gutenberg opts then blanklines 3 <> contents <> blanklines 2 else contents <> blankline | setext -> contents <> attr' <> cr <> literal (T.replicate (offset contents) "=") <> blankline 2 | variant == PlainText -> if isEnabled Ext_gutenberg opts then blanklines 2 <> contents <> blankline else contents <> blankline | setext -> contents <> attr' <> cr <> literal (T.replicate (offset contents) "-") <> blankline -- ghc interprets '#' characters in column 1 as linenum specifiers. _ | variant == PlainText || isEnabled Ext_literate_haskell opts -> contents <> blankline _ | variant == Markua -> attr' <> cr <> literal (T.replicate level "#") <> space <> contents <> blankline _ -> literal (T.replicate level "#") <> space <> contents <> attr' <> blankline return $ refs <> hdr blockToMarkdown' opts (CodeBlock (_,classes,_) str) | "haskell" `elem` classes && "literate" `elem` classes && isEnabled Ext_literate_haskell opts = return $ prefixed "> " (literal str) <> blankline blockToMarkdown' opts (CodeBlock attribs str) = do variant <- asks envVariant return $ case attribs == nullAttr of False | variant == Commonmark || isEnabled Ext_backtick_code_blocks opts -> backticks <> attrs <> cr <> literal str <> cr <> backticks <> blankline | isEnabled Ext_fenced_code_blocks opts -> tildes <> attrs <> cr <> literal str <> cr <> tildes <> blankline _ | variant == Markua -> blankline <> attrsToMarkua attribs <> cr <> backticks <> cr <> literal str <> cr <> backticks <> cr <> blankline | otherwise -> nest (writerTabStop opts) (literal str) <> blankline where endlineLen c = maybe 3 ((+1) . maximum) $ nonEmpty [T.length ln | ln <- map trim (T.lines str) , T.pack [c,c,c] `T.isPrefixOf` ln , T.all (== c) ln] endline c = literal $ T.replicate (endlineLen c) $ T.singleton c backticks = endline '`' tildes = endline '~' attrs = if isEnabled Ext_fenced_code_attributes opts || isEnabled Ext_attributes opts then nowrap $ " " <> classOrAttrsToMarkdown attribs else case attribs of (_,cls:_,_) -> " " <> literal cls _ -> empty blockToMarkdown' opts (BlockQuote blocks) = do variant <- asks envVariant -- if we're writing literate haskell, put a space before the bird tracks -- so they won't be interpreted as lhs... let leader | isEnabled Ext_literate_haskell opts = " > " | variant == PlainText = " " | otherwise = "> " contents <- blockListToMarkdown opts blocks return $ prefixed leader contents <> blankline blockToMarkdown' opts t@(Table _ blkCapt specs thead tbody tfoot) = do let (caption, aligns, widths, headers, rows) = toLegacyTable blkCapt specs thead tbody tfoot let numcols = maximum (length aligns :| length widths : map length (headers:rows)) caption' <- inlineListToMarkdown opts caption let caption'' | null caption = blankline | isEnabled Ext_table_captions opts = blankline $$ (": " <> caption') $$ blankline | otherwise = blankline $$ caption' $$ blankline let hasSimpleCells = onlySimpleTableCells $ headers : rows let isSimple = hasSimpleCells && all (==0) widths let isPlainBlock (Plain _) = True isPlainBlock _ = False let hasBlocks = not (all isPlainBlock $ concat . concat $ headers:rows) let padRow r = case numcols - length r of x | x > 0 -> r ++ replicate x empty | otherwise -> r let aligns' = case numcols - length aligns of x | x > 0 -> aligns ++ replicate x AlignDefault | otherwise -> aligns let widths' = case numcols - length widths of x | x > 0 -> widths ++ replicate x 0.0 | otherwise -> widths (nst,tbl) <- case True of _ | isSimple && isEnabled Ext_simple_tables opts -> do rawHeaders <- padRow <$> mapM (blockListToMarkdown opts) headers rawRows <- mapM (fmap padRow . mapM (blockListToMarkdown opts)) rows (nest 2,) <$> pandocTable opts False (all null headers) aligns' widths' rawHeaders rawRows | isSimple && isEnabled Ext_pipe_tables opts -> do rawHeaders <- padRow <$> mapM (blockListToMarkdown opts) headers rawRows <- mapM (fmap padRow . mapM (blockListToMarkdown opts)) rows (id,) <$> pipeTable opts (all null headers) aligns' widths' rawHeaders rawRows | not hasBlocks && isEnabled Ext_multiline_tables opts -> do rawHeaders <- padRow <$> mapM (blockListToMarkdown opts) headers rawRows <- mapM (fmap padRow . mapM (blockListToMarkdown opts)) rows (nest 2,) <$> pandocTable opts True (all null headers) aligns' widths' rawHeaders rawRows | isEnabled Ext_grid_tables opts && writerColumns opts >= 8 * numcols -> (id,) <$> gridTable opts blockListToMarkdown (all null headers) aligns' widths' headers rows | hasSimpleCells && isEnabled Ext_pipe_tables opts -> do rawHeaders <- padRow <$> mapM (blockListToMarkdown opts) headers rawRows <- mapM (fmap padRow . mapM (blockListToMarkdown opts)) rows (id,) <$> pipeTable opts (all null headers) aligns' widths' rawHeaders rawRows | isEnabled Ext_raw_html opts -> fmap (id,) $ literal . removeBlankLinesInHTML <$> writeHtml5String opts{ writerTemplate = Nothing } (Pandoc nullMeta [t]) | otherwise -> return (id, literal "[TABLE]") return $ nst (tbl $$ caption'') $$ blankline blockToMarkdown' opts (BulletList items) = do contents <- inList $ mapM (bulletListItemToMarkdown opts) items return $ (if isTightList items then vcat else vsep) contents <> blankline blockToMarkdown' opts (OrderedList (start,sty,delim) items) = do variant <- asks envVariant let start' = if variant == Commonmark || isEnabled Ext_startnum opts then start else 1 let sty' = if isEnabled Ext_fancy_lists opts then sty else DefaultStyle let delim' | isEnabled Ext_fancy_lists opts = case variant of -- Markua supports 'fancy' enumerators, but no TwoParens Markua -> if delim == TwoParens then OneParen else delim _ -> delim | variant == Commonmark && --commonmark only supports one paren (delim == OneParen || delim == TwoParens) = OneParen | otherwise = DefaultDelim let attribs = (start', sty', delim') let markers = orderedListMarkers attribs let markers' = case variant of Markua -> markers _ -> map (\m -> if T.length m < 3 then m <> T.replicate (3 - T.length m) " " else m) markers contents <- inList $ zipWithM (orderedListItemToMarkdown opts) markers' items return $ (if isTightList items then vcat else vsep) contents <> blankline blockToMarkdown' opts (DefinitionList items) = do contents <- inList $ mapM (definitionListItemToMarkdown opts) items return $ mconcat contents <> blankline blockToMarkdown' opts (Figure figattr capt body) = do let combinedAttr imgattr = case imgattr of ("", cls, kv) | (figid, [], []) <- figattr -> Just (figid, cls, kv) _ -> Nothing let combinedAlt alt = case capt of Caption Nothing [] -> if null alt then Just [Str "image"] else Just alt Caption Nothing [Plain captInlines] | captInlines == alt || null alt -> Just captInlines _ -> Nothing case body of [Plain [Image imgAttr alt (src, ttl)]] | isEnabled Ext_implicit_figures opts , Just descr <- combinedAlt alt , Just imgAttr' <- combinedAttr imgAttr , isEnabled Ext_link_attributes opts || imgAttr' == nullAttr -> do -- use implicit figures if possible let tgt' = (src, fromMaybe ttl $ T.stripPrefix "fig:" ttl) contents <- inlineListToMarkdown opts [Image imgAttr' descr tgt'] return $ contents <> blankline _ -> -- fallback to raw html if possible or div otherwise if isEnabled Ext_raw_html opts then figureToMarkdown opts figattr capt body else blockToMarkdown' opts $ figureDiv figattr capt body inList :: Monad m => MD m a -> MD m a inList p = local (\env -> env {envInList = True}) p addMarkdownAttribute :: Text -> Text addMarkdownAttribute s = case span isTagText $ reverse $ parseTags s of (xs, TagOpen t attrs:rest) -> renderTags' $ reverse rest ++ (TagOpen t attrs' : reverse xs) where attrs' = ("markdown","1"):[(x,y) | (x,y) <- attrs, x /= "markdown"] _ -> s -- | Converts a figure to Markdown by wrapping it in a div named `figure`. figureToMarkdown :: PandocMonad m => WriterOptions -> Attr -> Caption -> [Block] -> MD m (Doc Text) figureToMarkdown opts attr@(ident, classes, kvs) capt body | isEnabled Ext_raw_html opts = (<> blankline) . literal . T.strip <$> writeHtml5String opts{ writerTemplate = Nothing } (Pandoc nullMeta [Figure attr capt body]) | otherwise = let attr' = (ident, ["figure"] `union` classes, kvs) in blockToMarkdown' opts (Div attr' body) itemEndsWithTightList :: [Block] -> Bool itemEndsWithTightList bs = case bs of [Plain _, BulletList xs] -> isTightList xs [Plain _, OrderedList _ xs] -> isTightList xs _ -> False -- | Convert bullet list item (list of blocks) to markdown. bulletListItemToMarkdown :: PandocMonad m => WriterOptions -> [Block] -> MD m (Doc Text) bulletListItemToMarkdown opts bs = do variant <- asks envVariant let exts = writerExtensions opts contents <- blockListToMarkdown opts $ taskListItemToAscii exts bs let start = case variant of Markua -> "* " Commonmark -> "- " _ -> "- " <> T.replicate (writerTabStop opts - 2) " " -- remove trailing blank line if item ends with a tight list let contents' = if itemEndsWithTightList bs then chomp contents <> cr else contents return $ hang (T.length start) (literal start) contents' -- | Convert ordered list item (a list of blocks) to markdown. orderedListItemToMarkdown :: PandocMonad m => WriterOptions -- ^ options -> Text -- ^ list item marker -> [Block] -- ^ list item (list of blocks) -> MD m (Doc Text) orderedListItemToMarkdown opts marker bs = do let exts = writerExtensions opts contents <- blockListToMarkdown opts $ taskListItemToAscii exts bs variant <- asks envVariant let sps = case writerTabStop opts - T.length marker of n | n > 0 -> literal $ T.replicate n " " _ -> literal " " let ind = if isEnabled Ext_four_space_rule opts then writerTabStop opts else max (writerTabStop opts) (T.length marker + 1) let start = case variant of Markua -> literal marker <> " " _ -> literal marker <> sps -- remove trailing blank line if item ends with a tight list let contents' = if itemEndsWithTightList bs then chomp contents <> cr else contents return $ hang ind start contents' -- | Convert definition list item (label, list of blocks) to markdown. definitionListItemToMarkdown :: PandocMonad m => WriterOptions -> ([Inline],[[Block]]) -> MD m (Doc Text) definitionListItemToMarkdown opts (label, defs) = do labelText <- blockToMarkdown opts (Plain label) defs' <- mapM (mapM (blockToMarkdown opts)) defs if isEnabled Ext_definition_lists opts then do let tabStop = writerTabStop opts variant <- asks envVariant let leader = case variant of PlainText -> " " Markua -> ":" _ -> ": " let sps = case writerTabStop opts - 3 of n | n > 0 -> literal $ T.replicate n " " _ -> literal " " let isTight = case defs of ((Plain _ : _): _) -> True _ -> False if isEnabled Ext_compact_definition_lists opts then do let contents = vcat $ map (\d -> hang tabStop (leader <> sps) $ vcat d <> cr) defs' return $ nowrap labelText <> cr <> contents <> cr else do let contents = (if isTight then vcat else vsep) $ map (\d -> hang tabStop (leader <> sps) $ vcat d) defs' return $ blankline <> nowrap labelText $$ (if isTight then empty else blankline) <> contents <> blankline else return $ nowrap (chomp labelText <> literal " " <> cr) <> vsep (map vsep defs') <> blankline -- | Convert list of Pandoc block elements to markdown. blockListToMarkdown :: PandocMonad m => WriterOptions -- ^ Options -> [Block] -- ^ List of block elements -> MD m (Doc Text) blockListToMarkdown opts blocks = do inlist <- asks envInList variant <- asks envVariant -- a) insert comment between list and indented code block, or the -- code block will be treated as a list continuation paragraph -- b) change Plain to Para unless it's followed by a RawBlock -- or has a list as its parent (#3487) let fixBlocks (b : CodeBlock attr x : rest) | (not (variant == Commonmark || isEnabled Ext_backtick_code_blocks opts || isEnabled Ext_fenced_code_blocks opts) || attr == nullAttr) && isListBlock b = b : commentSep : CodeBlock attr x : fixBlocks rest fixBlocks (b1@(BulletList _) : b2@(BulletList _) : bs) = b1 : commentSep : fixBlocks (b2:bs) fixBlocks (b1@(OrderedList _ _) : b2@(OrderedList _ _) : bs) = b1 : commentSep : fixBlocks (b2:bs) fixBlocks (b1@(DefinitionList _) : b2@(DefinitionList _) : bs) = b1 : commentSep : fixBlocks (b2:bs) fixBlocks (Plain ils : bs@(RawBlock{}:_)) = Plain ils : fixBlocks bs fixBlocks (Plain ils : bs@(Div{}:_)) | isEnabled Ext_fenced_divs opts = Para ils : fixBlocks bs fixBlocks (Plain ils : bs) | inlist = Plain ils : fixBlocks bs fixBlocks (Plain ils : bs) = Para ils : fixBlocks bs fixBlocks (r@(RawBlock f raw) : b : bs) | not (T.null raw) , T.last raw /= '\n' = case b of Plain{} -> r : fixBlocks (b:bs) RawBlock{} -> r : fixBlocks (b:bs) _ -> RawBlock f (raw <> "\n") : fixBlocks (b:bs) -- #4629 fixBlocks (x : xs) = x : fixBlocks xs fixBlocks [] = [] isListBlock (BulletList _) = True isListBlock (OrderedList _ _) = True isListBlock (DefinitionList _) = True isListBlock _ = False commentSep | variant == PlainText = Plain [] | variant == Markua = Plain [] | isEnabled Ext_raw_html opts = RawBlock "html" "<!-- -->\n" | otherwise = RawBlock "markdown" " \n" mconcat <$> mapM (blockToMarkdown opts) (fixBlocks blocks) lineBreakToSpace :: Inline -> Inline lineBreakToSpace LineBreak = Space lineBreakToSpace SoftBreak = Space lineBreakToSpace x = x removeBlankLinesInHTML :: Text -> Text removeBlankLinesInHTML = T.pack . go False . T.unpack where go _ [] = [] go True ('\n':cs) = " " <> go False cs go False ('\n':cs) = '\n' : go True cs go !afternewline (!c:cs) | isSpace c = c : go afternewline cs | otherwise = c : go False cs ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/Markdown/������������������������������������������������������0000755�0000000�0000000�00000000000�07346545000�017313� 5����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/Markdown/Inline.hs���������������������������������������������0000644�0000000�0000000�00000101264�07346545000�021071� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE ViewPatterns #-} {- | Module : Text.Pandoc.Writers.Markdown.Inline Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable -} module Text.Pandoc.Writers.Markdown.Inline ( inlineListToMarkdown, linkAttributes, attrsToMarkdown, attrsToMarkua ) where import Control.Monad (when, liftM2) import Control.Monad.Reader ( asks, MonadReader(local) ) import Control.Monad.State.Strict ( MonadState(get), gets, modify ) import Data.Char (isAlphaNum, isDigit) import Data.List (find, intersperse) import Data.List.NonEmpty (nonEmpty) import qualified Data.Map as M import Data.Maybe (fromMaybe) import Data.Text (Text) import qualified Data.Text as T import Text.Pandoc.Class.PandocMonad (PandocMonad, report) import Text.Pandoc.Definition import Text.Pandoc.Logging import Text.Pandoc.Options import Text.Pandoc.Parsing hiding (blankline, blanklines, char, space) import Text.DocLayout import Text.Pandoc.Shared import Text.Pandoc.URI (urlEncode, escapeURI, isURI) import Text.Pandoc.Writers.Shared import Text.Pandoc.Walk import Text.Pandoc.Writers.HTML (writeHtml5String) import Text.Pandoc.Writers.Math (texMathToInlines) import Text.Pandoc.XML (toHtml5Entities) import Data.Coerce (coerce) import Text.Pandoc.Writers.Markdown.Types (MarkdownVariant(..), WriterState(..), WriterEnv(..), MD) -- | Escape special characters for Markdown. escapeText :: WriterOptions -> Text -> Text escapeText opts = T.pack . go' . T.unpack where startsWithSpace (' ':_) = True startsWithSpace ('\t':_) = True startsWithSpace [] = True startsWithSpace _ = False go' ('#':cs) | isEnabled Ext_space_in_atx_header opts = if startsWithSpace (dropWhile (=='#') cs) then '\\':'#':go cs else '#':go cs | otherwise = '\\':'#':go cs go' ('@':cs) | isEnabled Ext_citations opts = case cs of (d:_) | isAlphaNum d || d == '_' || d == '{' -> '\\':'@':go cs _ -> '@':go cs go' cs = go cs go [] = [] go ['\\'] = ['\\','\\'] go ('-':'-':cs) | isEnabled Ext_smart opts = '\\':'-':go('-':cs) go ('.':'.':'.':cs) | isEnabled Ext_smart opts = '\\':'.':'.':'.':go cs go (c:'_':d:cs) | isAlphaNum c , isAlphaNum d = if isEnabled Ext_intraword_underscores opts then c:'_':go (d:cs) else c:'\\':'_':go (d:cs) go ('\\':c:cs) | isEnabled Ext_raw_tex opts = '\\':'\\':go (c:cs) | isAlphaNum c = '\\' : go (c:cs) | otherwise = '\\':'\\': go cs go ('!':'[':cs) = '\\':'!':'[': go cs go ('=':'=':cs) | isEnabled Ext_mark opts = '\\':'=':go ('=':cs) go ('~':'~':cs) | isEnabled Ext_strikeout opts = '\\':'~':go ('~':cs) go (c:cs) = case c of '[' -> '\\':c:go cs ']' -> '\\':c:go cs '`' -> '\\':c:go cs '*' -> '\\':c:go cs '_' -> '\\':c:go cs '>' | isEnabled Ext_all_symbols_escapable opts -> '\\':'>':go cs | otherwise -> ">" ++ go cs '<' | isEnabled Ext_all_symbols_escapable opts -> '\\':'<':go cs | otherwise -> "<" ++ go cs '|' | isEnabled Ext_pipe_tables opts -> '\\':'|':go cs '^' | isEnabled Ext_superscript opts -> '\\':'^':go cs '~' | isEnabled Ext_subscript opts -> '\\':'~':go cs '$' | isEnabled Ext_tex_math_dollars opts -> '\\':'$':go cs '\'' | isEnabled Ext_smart opts -> '\\':'\'':go cs '"' | isEnabled Ext_smart opts -> '\\':'"':go cs _ -> c : go cs -- Escape the escape character, as well as formatting pairs escapeMarkuaString :: Text -> Text escapeMarkuaString s = foldr (uncurry T.replace) s [("--","~-~-"), ("**","~*~*"),("//","~/~/"),("^^","~^~^"),(",,","~,~,")] attrsToMarkdown :: Attr -> Doc Text attrsToMarkdown attribs = braces $ hsep [attribId, attribClasses, attribKeys] where attribId = case attribs of ("",_,_) -> empty (i,_,_) -> "#" <> escAttr i attribClasses = case attribs of (_,[],_) -> empty (_,cs,_) -> hsep $ map (escAttr . ("."<>)) $ filter (not . T.null) cs attribKeys = case attribs of (_,_,[]) -> empty (_,_,ks) -> hsep $ map (\(k,v) -> escAttr k <> "=\"" <> escAttr v <> "\"") ks escAttr = mconcat . map escAttrChar . T.unpack escAttrChar '"' = literal "\\\"" escAttrChar '\\' = literal "\\\\" escAttrChar c = literal $ T.singleton c attrsToMarkua:: Attr -> Doc Text attrsToMarkua attributes | null list = empty | otherwise = braces $ intercalateDocText list where attrId = case attributes of ("",_,_) -> [] (i,_,_) -> [literal $ "id: " <> i] -- all non explicit (key,value) attributes besides id are getting -- a default class key to be Markua conform attrClasses = case attributes of (_,[],_) -> [] (_,classes,_) -> map (escAttr . ("class: " <>)) classes attrKeyValues = case attributes of (_,_,[]) -> [] (_,_,keyvalues) -> map ((\(k,v) -> escAttr k <> ": " <> escAttr v) . preprocessKeyValues) keyvalues escAttr = mconcat . map escAttrChar . T.unpack escAttrChar '"' = literal "\"" escAttrChar c = literal $ T.singleton c list = concat [attrId, attrClasses, attrKeyValues] -- if attribute key is alt, caption, title then content -- gets wrapped inside quotes -- attribute gets removed preprocessKeyValues :: (Text, Text) -> (Text, Text) preprocessKeyValues (key,value) | key == "alt" || key == "caption" || key == "title" = (key, inquotes value) | otherwise = (key,value) intercalateDocText :: [Doc Text] -> Doc Text intercalateDocText [] = empty intercalateDocText [x] = x intercalateDocText (x:xs) = x <> ", " <> (intercalateDocText xs) -- | Add a (key, value) pair to Pandoc attr type addKeyValueToAttr :: Attr -> (Text,Text) -> Attr addKeyValueToAttr (ident,classes,kvs) (key,value) | not (T.null key) && not (T.null value) = (ident, classes, (key,value): kvs) | otherwise = (ident,classes,kvs) linkAttributes :: WriterOptions -> Attr -> Doc Text linkAttributes opts attr = if (isEnabled Ext_link_attributes opts || isEnabled Ext_attributes opts) && attr /= nullAttr then attrsToMarkdown attr else empty getKey :: Doc Text -> Key getKey = toKey . render Nothing findUsableIndex :: [Text] -> Int -> Int findUsableIndex lbls i = if tshow i `elem` lbls then findUsableIndex lbls (i + 1) else i getNextIndex :: PandocMonad m => MD m Int getNextIndex = do prevRefs <- gets stPrevRefs refs <- gets stRefs i <- (+ 1) <$> gets stLastIdx modify $ \s -> s{ stLastIdx = i } let refLbls = map (\(r,_,_) -> r) $ prevRefs ++ refs return $ findUsableIndex refLbls i -- | Get reference for target; if none exists, create unique one and return. -- Prefer label if possible; otherwise, generate a unique key. getReference :: PandocMonad m => Attr -> Doc Text -> Target -> MD m Text getReference attr label target = do refs <- gets stRefs case find (\(_,t,a) -> t == target && a == attr) refs of Just (ref, _, _) -> return ref Nothing -> do keys <- gets stKeys let key = getKey label let rawkey = coerce key case M.lookup key keys of Nothing -> do -- no other refs with this label (lab', idx) <- if T.null rawkey || T.length rawkey > 999 || T.any (\c -> c == '[' || c == ']') rawkey then do i <- getNextIndex return (tshow i, i) else return (render Nothing label, 0) modify (\s -> s{ stRefs = (lab', target, attr) : refs, stKeys = M.insert (getKey label) (M.insert (target, attr) idx mempty) (stKeys s) }) return lab' Just km -> -- we have refs with this label case M.lookup (target, attr) km of Just i -> do let lab' = render Nothing $ label <> if i == 0 then mempty else literal (tshow i) -- make sure it's in stRefs; it may be -- a duplicate that was printed in a previous -- block: when ((lab', target, attr) `notElem` refs) $ modify (\s -> s{ stRefs = (lab', target, attr) : refs }) return lab' Nothing -> do -- but this one is to a new target i <- getNextIndex let lab' = tshow i modify (\s -> s{ stRefs = (lab', target, attr) : refs, stKeys = M.insert key (M.insert (target, attr) i km) (stKeys s) }) return lab' -- | Convert list of Pandoc inline elements to markdown. inlineListToMarkdown :: PandocMonad m => WriterOptions -> [Inline] -> MD m (Doc Text) inlineListToMarkdown opts ils = do inlist <- asks envInList avoidBadWraps inlist <$> go ils where go [] = return empty go (x@Math{}:y@(Str t):zs) | T.all isDigit (T.take 1 t) -- starts with digit -- see #7058 = liftM2 (<>) (inlineToMarkdown opts x) (go (RawInline (Format "html") "<!-- -->" : y : zs)) go (Str t : i : is) | isLinkOrSpan i , T.takeEnd 1 t == "!" = do x <- inlineToMarkdown opts (Str (T.dropEnd 1 t)) ((x <> "\\!") <>) <$> go (i:is) go (i:is) = case i of Link {} -> case is of -- If a link is followed by another link, or '[', '(' or ':' -- then we don't shortcut Link {}:_ -> unshortcutable Space:Link {}:_ -> unshortcutable Space:(Str(thead -> Just '[')):_ -> unshortcutable Space:(RawInline _ (thead -> Just '[')):_ -> unshortcutable Space:(Cite _ _):_ -> unshortcutable SoftBreak:Link {}:_ -> unshortcutable SoftBreak:(Str(thead -> Just '[')):_ -> unshortcutable SoftBreak:(RawInline _ (thead -> Just '[')):_ -> unshortcutable SoftBreak:(Cite _ _):_ -> unshortcutable LineBreak:Link {}:_ -> unshortcutable LineBreak:(Str(thead -> Just '[')):_ -> unshortcutable LineBreak:(RawInline _ (thead -> Just '[')):_ -> unshortcutable LineBreak:(Cite _ _):_ -> unshortcutable (Cite _ _):_ -> unshortcutable Str (thead -> Just '['):_ -> unshortcutable Str (thead -> Just '('):_ -> unshortcutable Str (thead -> Just ':'):_ -> unshortcutable (RawInline _ (thead -> Just '[')):_ -> unshortcutable (RawInline _ (thead -> Just '(')):_ -> unshortcutable (RawInline _ (thead -> Just ':')):_ -> unshortcutable (RawInline _ (T.stripPrefix " [" -> Just _ )):_ -> unshortcutable _ -> shortcutable _ -> shortcutable where shortcutable = liftM2 (<>) (inlineToMarkdown opts i) (go is) unshortcutable = do iMark <- local (\env -> env { envRefShortcutable = False }) (inlineToMarkdown opts i) fmap (iMark <>) (go is) thead = fmap fst . T.uncons isLinkOrSpan Link{} = True isLinkOrSpan Span{} = True isLinkOrSpan _ = False -- Remove breaking spaces that might cause bad wraps. avoidBadWraps :: Bool -> Doc Text -> Doc Text avoidBadWraps inListItem = go . toList where go [] = mempty go (BreakingSpace : Text len t : BreakingSpace : xs) = case T.uncons t of Just (c,t') | c == '>' || ((c == '-' || c == '*' || c == '+') && T.null t') || (inListItem && isOrderedListMarker t) || (t == "1." || t == "1)") -> Text (len + 1) (" " <> t) <> go (BreakingSpace : xs) _ -> BreakingSpace <> Text len t <> go (BreakingSpace : xs) go (x:xs) = x <> go xs toList (Concat (Concat a b) c) = toList (Concat a (Concat b c)) toList (Concat a b) = a : toList b toList x = [x] isOrderedListMarker :: Text -> Bool isOrderedListMarker xs = not (T.null xs) && (T.last xs `elem` ['.',')']) && isRight (runParser (anyOrderedListMarker >> eof) defaultParserState "" xs) where isRight (Right _) = True isRight (Left _) = False -- | Convert Pandoc inline element to markdown. inlineToMarkdown :: PandocMonad m => WriterOptions -> Inline -> MD m (Doc Text) inlineToMarkdown opts (Span ("",["emoji"],kvs) [Str s]) = case lookup "data-emoji" kvs of Just emojiname | isEnabled Ext_emoji opts -> return $ ":" <> literal emojiname <> ":" _ -> inlineToMarkdown opts (Str s) inlineToMarkdown opts (Span ("",["mark"],[]) ils) | isEnabled Ext_mark opts = do contents <- inlineListToMarkdown opts ils return $ "==" <> contents <> "==" inlineToMarkdown opts (Span attrs ils) = do variant <- asks envVariant contents <- inlineListToMarkdown opts ils return $ case attrs of (_,["csl-block"],_) -> (cr <>) (_,["csl-left-margin"],_) -> (cr <>) (_,["csl-indent"],_) -> (cr <>) _ -> id $ case variant of PlainText -> contents Markua -> "`" <> contents <> "`" <> attrsToMarkua attrs _ | attrs == nullAttr -> contents | isEnabled Ext_bracketed_spans opts -> let attrs' = if attrs /= nullAttr then attrsToMarkdown attrs else empty in "[" <> contents <> "]" <> attrs' | isEnabled Ext_raw_html opts || isEnabled Ext_native_spans opts -> tagWithAttrs "span" attrs <> contents <> literal "</span>" | otherwise -> contents inlineToMarkdown _ (Emph []) = return empty inlineToMarkdown opts (Emph lst) = do variant <- asks envVariant contents <- inlineListToMarkdown opts lst return $ case variant of PlainText | isEnabled Ext_gutenberg opts -> "_" <> contents <> "_" | otherwise -> contents _ -> "*" <> contents <> "*" inlineToMarkdown _ (Underline []) = return empty inlineToMarkdown opts (Underline lst) = do variant <- asks envVariant contents <- inlineListToMarkdown opts lst case variant of PlainText -> return contents _ | isEnabled Ext_bracketed_spans opts -> return $ "[" <> contents <> "]" <> "{.underline}" | isEnabled Ext_native_spans opts -> return $ tagWithAttrs "span" ("", ["underline"], []) <> contents <> literal "</span>" | isEnabled Ext_raw_html opts -> return $ "<u>" <> contents <> "</u>" | otherwise -> inlineToMarkdown opts (Emph lst) inlineToMarkdown _ (Strong []) = return empty inlineToMarkdown opts (Strong lst) = do variant <- asks envVariant case variant of PlainText -> inlineListToMarkdown opts $ if isEnabled Ext_gutenberg opts then capitalize lst else lst _ -> do contents <- inlineListToMarkdown opts lst return $ "**" <> contents <> "**" inlineToMarkdown _ (Strikeout []) = return empty inlineToMarkdown opts (Strikeout lst) = do contents <- inlineListToMarkdown opts lst return $ if isEnabled Ext_strikeout opts then "~~" <> contents <> "~~" else if isEnabled Ext_raw_html opts then "<s>" <> contents <> "</s>" else contents inlineToMarkdown _ (Superscript []) = return empty inlineToMarkdown opts (Superscript lst) = local (\env -> env {envEscapeSpaces = envVariant env == Markdown}) $ do contents <- inlineListToMarkdown opts lst if isEnabled Ext_superscript opts then return $ "^" <> contents <> "^" else if isEnabled Ext_raw_html opts then return $ "<sup>" <> contents <> "</sup>" else case traverse toSuperscriptInline lst of Just xs' | not (writerPreferAscii opts) -> inlineListToMarkdown opts xs' _ -> do let rendered = render Nothing contents return $ case mapM toSuperscript (T.unpack rendered) of Just r -> literal $ T.pack r Nothing -> literal $ "^(" <> rendered <> ")" inlineToMarkdown _ (Subscript []) = return empty inlineToMarkdown opts (Subscript lst) = local (\env -> env {envEscapeSpaces = envVariant env == Markdown}) $ do contents <- inlineListToMarkdown opts lst if isEnabled Ext_subscript opts then return $ "~" <> contents <> "~" else if isEnabled Ext_raw_html opts then return $ "<sub>" <> contents <> "</sub>" else case traverse toSubscriptInline lst of Just xs' | not (writerPreferAscii opts) -> inlineListToMarkdown opts xs' _ -> do let rendered = render Nothing contents return $ case mapM toSuperscript (T.unpack rendered) of Just r -> literal $ T.pack r Nothing -> literal $ "_(" <> rendered <> ")" inlineToMarkdown opts (SmallCaps lst) = do variant <- asks envVariant if variant /= PlainText && (isEnabled Ext_raw_html opts || isEnabled Ext_native_spans opts) then inlineToMarkdown opts (Span ("",["smallcaps"],[]) lst) else inlineListToMarkdown opts $ capitalize lst inlineToMarkdown opts (Quoted SingleQuote lst) = do contents <- inlineListToMarkdown opts lst return $ if isEnabled Ext_smart opts then "'" <> contents <> "'" else if writerPreferAscii opts then "‘" <> contents <> "’" else "‘" <> contents <> "’" inlineToMarkdown opts (Quoted DoubleQuote lst) = do contents <- inlineListToMarkdown opts lst return $ if isEnabled Ext_smart opts then "\"" <> contents <> "\"" else if writerPreferAscii opts then "“" <> contents <> "”" else "“" <> contents <> "”" inlineToMarkdown opts (Code attr str) = do variant <- asks envVariant let tickGroups = filter (T.any (== '`')) $ T.group str let longest = maybe 0 maximum $ nonEmpty $ map T.length tickGroups let marker = T.replicate (longest + 1) "`" let spacer = if longest == 0 then "" else " " let attrsEnabled = isEnabled Ext_inline_code_attributes opts || isEnabled Ext_attributes opts let attrs = case variant of Markua -> attrsToMarkua attr _ -> if attrsEnabled && attr /= nullAttr then attrsToMarkdown attr else empty case variant of PlainText -> return $ literal str _ -> return $ literal (marker <> spacer <> str <> spacer <> marker) <> attrs inlineToMarkdown opts (Str str) = do variant <- asks envVariant let str' = case variant of Markua -> escapeMarkuaString str _ -> (if writerPreferAscii opts then toHtml5Entities else id) . (if isEnabled Ext_smart opts then unsmartify opts else id) . (if variant == PlainText then id else escapeText opts) $ str return $ literal str' inlineToMarkdown opts (Math InlineMath str) = do variant <- asks envVariant case () of _ | variant == Markua -> return $ "`" <> literal str <> "`" <> "$" | otherwise -> case writerHTMLMathMethod opts of WebTeX url -> let str' = T.strip str in inlineToMarkdown opts (Image nullAttr [Str str'] (url <> urlEncode str', str')) _ | isEnabled Ext_tex_math_dollars opts -> return $ "$" <> literal str <> "$" | isEnabled Ext_tex_math_single_backslash opts -> return $ "\\(" <> literal str <> "\\)" | isEnabled Ext_tex_math_double_backslash opts -> return $ "\\\\(" <> literal str <> "\\\\)" | otherwise -> texMathToInlines InlineMath str >>= inlineListToMarkdown opts . (if variant == PlainText then makeMathPlainer else id) inlineToMarkdown opts (Math DisplayMath str) = do variant <- asks envVariant case () of _ | variant == Markua -> do let attributes = attrsToMarkua (addKeyValueToAttr ("",[],[]) ("format", "latex")) return $ blankline <> attributes <> cr <> literal "```" <> cr <> literal str <> cr <> literal "```" <> blankline | otherwise -> case writerHTMLMathMethod opts of WebTeX url -> let str' = T.strip str in (\x -> blankline <> x <> blankline) `fmap` inlineToMarkdown opts (Image nullAttr [Str str'] (url <> urlEncode str', str')) _ | isEnabled Ext_tex_math_dollars opts -> return $ "$$" <> literal str <> "$$" | isEnabled Ext_tex_math_single_backslash opts -> return $ "\\[" <> literal str <> "\\]" | isEnabled Ext_tex_math_double_backslash opts -> return $ "\\\\[" <> literal str <> "\\\\]" | otherwise -> (\x -> cr <> x <> cr) `fmap` (texMathToInlines DisplayMath str >>= inlineListToMarkdown opts) inlineToMarkdown opts il@(RawInline f str) = do let tickGroups = filter (T.any (== '`')) $ T.group str let numticks = 1 + maybe 0 maximum (nonEmpty (map T.length tickGroups)) variant <- asks envVariant let Format fmt = f let rawAttribInline = return $ literal (T.replicate numticks "`") <> literal str <> literal (T.replicate numticks "`") <> literal "{=" <> literal fmt <> literal "}" let renderEmpty = mempty <$ report (InlineNotRendered il) case variant of PlainText | f == "plain" -> return $ literal str Commonmark | f `elem` ["gfm", "commonmark", "commonmark_x", "markdown"] -> return $ literal str Markdown | f `elem` ["markdown", "markdown_github", "markdown_phpextra", "markdown_mmd", "markdown_strict"] -> return $ literal str Markua -> renderEmpty _ | isEnabled Ext_raw_attribute opts -> rawAttribInline | f `elem` ["html", "html5", "html4"] , isEnabled Ext_raw_html opts -> return $ literal str | f `elem` ["latex", "tex"] , isEnabled Ext_raw_tex opts -> return $ literal str _ -> renderEmpty inlineToMarkdown opts LineBreak = do variant <- asks envVariant if variant == PlainText || isEnabled Ext_hard_line_breaks opts then return cr else return $ if isEnabled Ext_escaped_line_breaks opts then "\\" <> cr else " " <> cr inlineToMarkdown _ Space = do escapeSpaces <- asks envEscapeSpaces return $ if escapeSpaces then "\\ " else space inlineToMarkdown opts SoftBreak = do escapeSpaces <- asks envEscapeSpaces let space' = if escapeSpaces then "\\ " else space return $ case writerWrapText opts of WrapNone -> space' WrapAuto -> space' WrapPreserve -> cr inlineToMarkdown opts (Cite [] lst) = inlineListToMarkdown opts lst inlineToMarkdown opts (Cite (c:cs) lst) | not (isEnabled Ext_citations opts) = inlineListToMarkdown opts lst | otherwise = if citationMode c == AuthorInText then do suffs <- inlineListToMarkdown opts $ citationSuffix c rest <- mapM convertOne cs let inbr = suffs <> (if not (null (citationSuffix c)) && not (null rest) then text ";" else mempty) <+> joincits rest br = if isEmpty inbr then empty else char '[' <> inbr <> char ']' return $ literal ("@" <> maybeInBraces (citationId c)) <+> br else do cits <- mapM convertOne (c:cs) return $ literal "[" <> joincits cits <> literal "]" where maybeInBraces key = case readWith (citeKey False >> spaces >> eof) defaultParserState ("@" <> key) of Left _ -> "{" <> key <> "}" Right _ -> key joincits = hcat . intersperse (literal "; ") . filter (not . isEmpty) convertOne Citation { citationId = k , citationPrefix = pinlines , citationSuffix = sinlines , citationMode = m } = do pdoc <- inlineListToMarkdown opts pinlines sdoc <- inlineListToMarkdown opts sinlines let k' = literal (modekey m <> "@" <> maybeInBraces k) r = case sinlines of Str (T.uncons -> Just (y,_)):_ | y `elem` (",;]@" :: String) -> k' <> sdoc Space:_ -> k' <> sdoc _ -> k' <+> sdoc return $ pdoc <+> r modekey SuppressAuthor = "-" modekey _ = "" inlineToMarkdown opts lnk@(Link attr@(ident,classes,kvs) txt (src, tit)) = do variant <- asks envVariant linktext <- inlineListToMarkdown opts txt let linktitle = if T.null tit then empty else literal $ " \"" <> tit <> "\"" let srcSuffix = fromMaybe src (T.stripPrefix "mailto:" src) let useAuto = isURI src && T.null ident && null kvs && (null classes || classes == ["uri"] || classes == ["email"]) && case txt of [Str s] | escapeURI s == srcSuffix -> True _ -> False let useWikilink = tit == "wikilink" && (isEnabled Ext_wikilinks_title_after_pipe opts || isEnabled Ext_wikilinks_title_before_pipe opts) let useRefLinks = writerReferenceLinks opts && not useAuto shortcutable <- asks envRefShortcutable let useShortcutRefLinks = shortcutable && (variant == Commonmark || isEnabled Ext_shortcut_reference_links opts) reftext <- if useRefLinks then literal <$> getReference attr linktext (src, tit) else return mempty case variant of PlainText | useAuto -> return $ literal srcSuffix | otherwise -> return linktext Markua | T.null tit -> return $ result <> attrsToMarkua attr | otherwise -> return $ result <> attrsToMarkua attributes where result = "[" <> linktext <> "](" <> (literal src) <> ")" attributes = addKeyValueToAttr attr ("title", tit) -- Use wikilinks where possible _ | src == stringify txt && useWikilink -> return $ "[[" <> literal (stringify txt) <> "]]" | useAuto -> return $ "<" <> literal srcSuffix <> ">" | useWikilink && isEnabled Ext_wikilinks_title_after_pipe opts -> return $ "[[" <> literal src <> "|" <> literal (stringify txt) <> "]]" | useWikilink && isEnabled Ext_wikilinks_title_before_pipe opts -> return $ "[[" <> literal (stringify txt) <> "|" <> literal src <> "]]" | useRefLinks -> let first = "[" <> linktext <> "]" second = if getKey linktext == getKey reftext then if useShortcutRefLinks then "" else "[]" else "[" <> reftext <> "]" in return $ first <> second | isEnabled Ext_raw_html opts , not (isEnabled Ext_link_attributes opts || isEnabled Ext_attributes opts) , attr /= nullAttr -> -- use raw HTML to render attributes literal . T.strip <$> writeHtml5String opts{ writerTemplate = Nothing } (Pandoc nullMeta [Plain [lnk]]) | otherwise -> return $ "[" <> linktext <> "](" <> literal src <> linktitle <> ")" <> linkAttributes opts attr inlineToMarkdown opts img@(Image attr alternate (source, tit)) | isEnabled Ext_raw_html opts && not (isEnabled Ext_link_attributes opts || isEnabled Ext_attributes opts) && attr /= nullAttr = -- use raw HTML literal . T.strip <$> writeHtml5String opts{ writerTemplate = Nothing } (Pandoc nullMeta [Plain [img]]) | otherwise = do variant <- asks envVariant let txt = if null alternate || alternate == [Str source] -- to prevent autolinks then [Str ""] else alternate linkPart <- inlineToMarkdown opts (Link attr txt (source, tit)) alt <- inlineListToMarkdown opts alternate let attributes | variant == Markua = attrsToMarkua $ addKeyValueToAttr (addKeyValueToAttr attr ("title", tit)) ("alt", render (Just (writerColumns opts)) alt) | otherwise = empty return $ case variant of PlainText -> "[" <> linkPart <> "]" Markua -> cr <> attributes <> cr <> literal "![](" <> literal source <> ")" <> cr _ -> "!" <> linkPart inlineToMarkdown opts (Note contents) = do modify (\st -> st{ stNotes = contents : stNotes st }) st <- get let ref = literal $ writerIdentifierPrefix opts <> tshow (stNoteNum st + length (stNotes st) - 1) if isEnabled Ext_footnotes opts then return $ "[^" <> ref <> "]" else return $ "[" <> ref <> "]" makeMathPlainer :: [Inline] -> [Inline] makeMathPlainer = walk go where go (Emph xs) = Span nullAttr xs go x = x toSubscriptInline :: Inline -> Maybe Inline toSubscriptInline Space = Just Space toSubscriptInline (Span attr ils) = Span attr <$> traverse toSubscriptInline ils toSubscriptInline (Str s) = Str . T.pack <$> traverse toSubscript (T.unpack s) toSubscriptInline LineBreak = Just LineBreak toSubscriptInline SoftBreak = Just SoftBreak toSubscriptInline _ = Nothing toSuperscriptInline :: Inline -> Maybe Inline toSuperscriptInline Space = Just Space toSuperscriptInline (Span attr ils) = Span attr <$> traverse toSuperscriptInline ils toSuperscriptInline (Str s) = Str . T.pack <$> traverse toSuperscript (T.unpack s) toSuperscriptInline LineBreak = Just LineBreak toSuperscriptInline SoftBreak = Just SoftBreak toSuperscriptInline _ = Nothing ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/Markdown/Table.hs����������������������������������������������0000644�0000000�0000000�00000013646�07346545000�020710� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Writers.Markdown Copyright : © 2006-2023 John MacFarlane License : GPL-2.0-or-later Maintainer : John MacFarlane <jgm@berkeley.edu> Create Markdown pipe-tables and pandoc-style tables. -} module Text.Pandoc.Writers.Markdown.Table ( pipeTable , pandocTable ) where import Control.Monad.Reader (asks) import Data.List (intersperse, transpose) import Data.List.NonEmpty (nonEmpty) import Data.Text (Text) import qualified Data.Text as T import Text.DocLayout import Text.Pandoc.Class.PandocMonad (PandocMonad) import Text.Pandoc.Definition (Alignment (..)) import Text.Pandoc.Options (WriterOptions (writerColumns, writerWrapText), WrapOption(WrapAuto)) import Text.Pandoc.Writers.Markdown.Types (MarkdownVariant(Markdown), WriterEnv(..), MD) -- | Creates a Markdown pipe table. pipeTable :: PandocMonad m => WriterOptions -> Bool -- ^ headless? -> [Alignment] -- ^ column alignments -> [Double] -- ^ column widhts -> [Doc Text] -- ^ table header cells -> [[Doc Text]] -- ^ table body rows -> MD m (Doc Text) pipeTable opts headless aligns widths rawHeaders rawRows = do let sp = literal " " let blockFor AlignLeft x y = lblock (x + 2) (sp <> y) <> lblock 0 empty blockFor AlignCenter x y = cblock (x + 2) (sp <> y <> sp) <> lblock 0 empty blockFor AlignRight x y = rblock (x + 2) (y <> sp) <> lblock 0 empty blockFor _ x y = lblock (x + 2) (sp <> y) <> lblock 0 empty let contentWidths = map (max 3 . maybe 3 maximum . nonEmpty . map offset) $ transpose (rawHeaders : rawRows) let colwidth = writerColumns opts let numcols = length contentWidths let maxwidth = sum contentWidths variant <- asks envVariant let pipeWidths = if variant == Markdown && not (all (== 0) widths) && maxwidth + (numcols + 1) > colwidth then map (floor . (* fromIntegral (colwidth - (numcols +1)))) widths else contentWidths let torow cs = nowrap $ literal "|" <> hcat (intersperse (literal "|") $ zipWith3 blockFor aligns contentWidths (map chomp cs)) <> literal "|" let toborder a w = literal $ case a of AlignLeft -> ":" <> T.replicate (w + 1) "-" AlignCenter -> ":" <> T.replicate w "-" <> ":" AlignRight -> T.replicate (w + 1) "-" <> ":" AlignDefault -> T.replicate (w + 2) "-" -- note: pipe tables can't completely lack a -- header; for a headerless table, we need a header of empty cells. -- see jgm/pandoc#1996. let header = if headless then torow (replicate (length aligns) empty) else torow rawHeaders let border = nowrap $ literal "|" <> hcat (intersperse (literal "|") $ zipWith toborder aligns pipeWidths) <> literal "|" let body = vcat $ map torow rawRows return $ header $$ border $$ body -- | Write a pandoc-style Markdown table. pandocTable :: PandocMonad m => WriterOptions -> Bool -- ^ whether this is a multiline table -> Bool -- ^ whether the table has a header -> [Alignment] -- ^ column alignments -> [Double] -- ^ column widths -> [Doc Text] -- ^ table header cells -> [[Doc Text]] -- ^ table body rows -> MD m (Doc Text) pandocTable opts multiline headless aligns widths rawHeaders rawRows = do let isSimple = all (==0) widths let alignHeader alignment = case alignment of AlignLeft -> lblock AlignCenter -> cblock AlignRight -> rblock AlignDefault -> lblock -- Number of characters per column necessary to output every cell -- without requiring a line break. -- The @+2@ is needed for specifying the alignment. let numChars = (+ 2) . maybe 0 maximum . nonEmpty . map offset -- Number of characters per column necessary to output every cell -- without requiring a line break *inside a word*. -- The @+2@ is needed for specifying the alignment. let minNumChars = (+ 2) . maybe 0 maximum . nonEmpty . map minOffset let columns = transpose (rawHeaders : rawRows) -- minimal column width without wrapping a single word let relWidth w col = max (floor $ fromIntegral (writerColumns opts - 1) * w) (if writerWrapText opts == WrapAuto then minNumChars col else numChars col) let widthsInChars | isSimple = map numChars columns | otherwise = zipWith relWidth widths columns let makeRow = hcat . intersperse (lblock 1 (literal " ")) . zipWith3 alignHeader aligns widthsInChars let rows' = map makeRow rawRows let head' = makeRow rawHeaders let underline = mconcat $ intersperse (literal " ") $ map (\width -> literal (T.replicate width "-")) widthsInChars let border | multiline = literal (T.replicate (sum widthsInChars + length widthsInChars - 1) "-") | headless = underline | otherwise = empty let head'' = if headless then empty else border <> cr <> head' let body = if multiline then vsep rows' $$ if length rows' < 2 then blankline -- #4578 else empty else vcat rows' let bottom = if headless then underline else border return $ head'' $$ underline $$ body $$ bottom ������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/Markdown/Types.hs����������������������������������������������0000644�0000000�0000000�00000004742�07346545000�020762� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{- | Module : Text.Pandoc.Writers.Markdown.Types Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable -} module Text.Pandoc.Writers.Markdown.Types ( MarkdownVariant(..), WriterState(..), WriterEnv(..), Notes, Ref, Refs, MD, evalMD ) where import Control.Monad.Reader import Control.Monad.State.Strict import Data.Default import qualified Data.Map as M import qualified Data.Set as Set import Data.Text (Text) import Text.Pandoc.Parsing (Key) import Text.Pandoc.Class.PandocMonad (PandocMonad) import Text.Pandoc.Definition type Notes = [[Block]] type Ref = (Text, Target, Attr) type Refs = [Ref] type MD m = ReaderT WriterEnv (StateT WriterState m) evalMD :: PandocMonad m => MD m a -> WriterEnv -> WriterState -> m a evalMD md env st = evalStateT (runReaderT md env) st data WriterEnv = WriterEnv { envInList :: Bool , envVariant :: MarkdownVariant , envRefShortcutable :: Bool , envBlockLevel :: Int , envEscapeSpaces :: Bool } data MarkdownVariant = Markua | PlainText | Commonmark | Markdown deriving (Show, Eq) instance Default WriterEnv where def = WriterEnv { envInList = False , envVariant = Markdown , envRefShortcutable = True , envBlockLevel = 0 , envEscapeSpaces = False } data WriterState = WriterState { stNotes :: Notes , stPrevRefs :: Refs , stRefs :: Refs , stKeys :: M.Map Key (M.Map (Target, Attr) Int) , stLastIdx :: Int , stIds :: Set.Set Text , stNoteNum :: Int } instance Default WriterState where def = WriterState{ stNotes = [] , stPrevRefs = [] , stRefs = [] , stKeys = M.empty , stLastIdx = 0 , stIds = Set.empty , stNoteNum = 1 } ������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/Math.hs��������������������������������������������������������0000644�0000000�0000000�00000003457�07346545000�016767� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} module Text.Pandoc.Writers.Math ( texMathToInlines , convertMath , defaultMathJaxURL , defaultKaTeXURL ) where import qualified Data.Text as T import Text.Pandoc.Class.PandocMonad import Text.Pandoc.Definition import Text.Pandoc.Logging import Text.TeXMath (DisplayType (..), Exp, readTeX, writePandoc) import Text.Pandoc.Options (defaultMathJaxURL, defaultKaTeXURL) -- | Converts a raw TeX math formula to a list of 'Pandoc' inlines. -- Defaults to raw formula between @$@ or @$$@ characters if entire formula -- can't be converted. texMathToInlines :: PandocMonad m => MathType -> T.Text -- ^ String to parse (assumes @'\n'@ line endings) -> m [Inline] texMathToInlines mt inp = do res <- convertMath writePandoc mt inp case res of Right (Just ils) -> return ils Right Nothing -> do report $ CouldNotConvertTeXMath inp "" return [mkFallback mt inp] Left il -> return [il] mkFallback :: MathType -> T.Text -> Inline mkFallback mt str = Str (delim <> str <> delim) where delim = case mt of DisplayMath -> "$$" InlineMath -> "$" -- | Converts a raw TeX math formula using a writer function, -- issuing a warning and producing a fallback (a raw string) -- on failure. convertMath :: PandocMonad m => (DisplayType -> [Exp] -> a) -> MathType -> T.Text -> m (Either Inline a) convertMath writer mt str = case writer dt <$> readTeX str of Right r -> return (Right r) Left e -> do report $ CouldNotConvertTeXMath str e return (Left $ mkFallback mt str) where dt = case mt of DisplayMath -> DisplayBlock InlineMath -> DisplayInline �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/MediaWiki.hs���������������������������������������������������0000644�0000000�0000000�00000065013�07346545000�017735� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Writers.MediaWiki Copyright : Copyright (C) 2008-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable Conversion of 'Pandoc' documents to MediaWiki markup. MediaWiki: <http://www.mediawiki.org/wiki/MediaWiki> -} module Text.Pandoc.Writers.MediaWiki ( writeMediaWiki, highlightingLangs ) where import Control.Monad.Reader import Control.Monad.State.Strict import Data.Maybe (fromMaybe) import qualified Data.List as DL import qualified Data.Set as Set import Data.Text (Text) import qualified Data.Text as T import Data.List.NonEmpty (NonEmpty((:|))) import Text.Pandoc.Class.PandocMonad (PandocMonad, report) import Text.Pandoc.Definition import Text.Pandoc.ImageSize import Text.Pandoc.Logging import Text.Pandoc.Options import Text.Pandoc.Walk import Text.DocLayout (render, literal) import Text.Pandoc.Shared import Text.Pandoc.URI import Text.Pandoc.Templates (renderTemplate) import qualified Text.Pandoc.Writers.AnnotatedTable as Ann import Text.Pandoc.Writers.Shared import Text.Pandoc.XML (escapeStringForXML) data WriterState = WriterState { stNotes :: Bool -- True if there are notes , stOptions :: WriterOptions -- writer options } data WriterReader = WriterReader { options :: WriterOptions -- Writer options , listLevel :: [Char] -- String at beginning of list items, e.g. "**" , useTags :: Bool -- True if we should use HTML tags because we're in a complex list } type MediaWikiWriter m = ReaderT WriterReader (StateT WriterState m) -- | Convert Pandoc to MediaWiki. writeMediaWiki :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeMediaWiki opts document = let initialState = WriterState { stNotes = False, stOptions = opts } env = WriterReader { options = opts, listLevel = [], useTags = False } in evalStateT (runReaderT (pandocToMediaWiki document) env) initialState -- | Return MediaWiki representation of document. pandocToMediaWiki :: PandocMonad m => Pandoc -> MediaWikiWriter m Text pandocToMediaWiki (Pandoc meta blocks) = do opts <- asks options metadata <- metaToContext opts (fmap (literal . trimr) . blockListToMediaWiki) (fmap (literal . trimr) . inlineListToMediaWiki) meta body <- blockListToMediaWiki blocks notesExist <- gets stNotes let notes = if notesExist then "\n<references />" else "" let main = body <> notes let context = defField "body" main $ defField "toc" (writerTableOfContents opts) metadata return $ case writerTemplate opts of Nothing -> main Just tpl -> render Nothing $ renderTemplate tpl context -- | Escape special characters for MediaWiki. escapeText :: Text -> Text escapeText = escapeStringForXML -- | Convert Pandoc block element to MediaWiki. blockToMediaWiki :: PandocMonad m => Block -- ^ Block element -> MediaWikiWriter m Text blockToMediaWiki (Div attrs bs) = do contents <- blockListToMediaWiki bs return $ render Nothing (tagWithAttrs "div" attrs) <> "\n\n" <> contents <> "\n\n" <> "</div>" blockToMediaWiki (Plain inlines) = inlineListToMediaWiki inlines blockToMediaWiki (SimpleFigure attr txt (src, tit)) = do capt <- inlineListToMediaWiki txt img <- imageToMediaWiki attr let opt = if T.null tit then if T.null capt then "" else "alt=" <> capt else "alt=" <> tit return $ "[[" <> T.intercalate "|" (filter (not . T.null) ["File:" <> src , "thumb" , "none" , img , opt , capt ]) <> "]]\n" blockToMediaWiki (Para inlines) = do tags <- asks useTags lev <- asks listLevel contents <- inlineListToMediaWiki inlines return $ if tags then "<p>" <> contents <> "</p>" else contents <> if null lev then "\n" else "" blockToMediaWiki (LineBlock lns) = blockToMediaWiki $ linesToPara lns blockToMediaWiki b@(RawBlock f str) | f == Format "mediawiki" = return str | f == Format "html" = return str | otherwise = "" <$ report (BlockNotRendered b) blockToMediaWiki HorizontalRule = return "\n-----\n" blockToMediaWiki (Header level (ident,_,_) inlines) = do let autoId = T.replace " " "_" $ stringify inlines contents <- inlineListToMediaWiki inlines let eqs = T.replicate level "=" return $ (if T.null ident || autoId == ident then "" else "<span id=\"" <> ident <> "\"></span>\n") <> eqs <> " " <> contents <> " " <> eqs <> "\n" blockToMediaWiki (CodeBlock (_,classes,keyvals) str) = do let at = Set.fromList classes `Set.intersection` highlightingLangs let numberLines = any (`elem` ["number","numberLines", "number-lines"]) classes let start = lookup "startFrom" keyvals return $ case Set.toList at of [] -> "<pre" <> (if null classes then ">" else " class=\"" <> T.unwords classes <> "\">") <> escapeText str <> "</pre>" (l:_) -> "<syntaxhighlight lang=\"" <> l <> "\"" <> (if numberLines then " line" else "") <> maybe "" (\x -> " start=\"" <> x <> "\"") start <> ">" <> str <> "</syntaxhighlight>" -- note: no escape! even for <! blockToMediaWiki (BlockQuote blocks) = do contents <- blockListToMediaWiki blocks return $ "<blockquote>" <> contents <> "</blockquote>" blockToMediaWiki (Table attr capt colSpecs thead tbody tfoot) = do tableToMediaWiki (Ann.toTable attr capt colSpecs thead tbody tfoot) blockToMediaWiki x@(BulletList items) = do tags <- (|| not (isSimpleList x)) <$> asks useTags if tags then do contents <- local (\ s -> s { useTags = True }) $ mapM listItemToMediaWiki items return $ "<ul>\n" <> vcat contents <> "</ul>\n" else do lev <- asks listLevel contents <- local (\s -> s { listLevel = listLevel s <> "*" }) $ mapM listItemToMediaWiki items return $ vcat contents <> if null lev then "\n" else "" blockToMediaWiki x@(OrderedList attribs items) = do tags <- (|| not (isSimpleList x)) <$> asks useTags if tags then do contents <- local (\s -> s { useTags = True }) $ mapM listItemToMediaWiki items return $ "<ol" <> listAttribsToText attribs <> ">\n" <> vcat contents <> "</ol>\n" else do lev <- asks listLevel contents <- local (\s -> s { listLevel = listLevel s <> "#" }) $ mapM listItemToMediaWiki items return $ vcat contents <> if null lev then "\n" else "" blockToMediaWiki x@(DefinitionList items) = do tags <- (|| not (isSimpleList x)) <$> asks useTags if tags then do contents <- local (\s -> s { useTags = True }) $ mapM definitionListItemToMediaWiki items return $ "<dl>\n" <> vcat contents <> "</dl>\n" else do lev <- asks listLevel contents <- local (\s -> s { listLevel = listLevel s <> ";" }) $ mapM definitionListItemToMediaWiki items return $ vcat contents <> if null lev then "\n" else "" blockToMediaWiki (Figure (ident, classes, kvs) _ body) = blockToMediaWiki (Div (ident, ["figure"] `DL.union` classes, kvs) body) -- Auxiliary functions for lists: -- | Convert ordered list attributes to HTML attribute string listAttribsToText :: ListAttributes -> Text listAttribsToText (startnum, numstyle, _) = let numstyle' = camelCaseToHyphenated $ tshow numstyle in (if startnum /= 1 then " start=\"" <> tshow startnum <> "\"" else "") <> (if numstyle /= DefaultStyle then " style=\"list-style-type: " <> numstyle' <> ";\"" else "") -- | Convert bullet or ordered list item (list of blocks) to MediaWiki. listItemToMediaWiki :: PandocMonad m => [Block] -> MediaWikiWriter m Text listItemToMediaWiki items = do contents <- blockListToMediaWiki items tags <- asks useTags if tags then return $ "<li>" <> contents <> "</li>" else do marker <- asks listLevel return $ T.pack marker <> " " <> contents -- | Convert definition list item (label, list of blocks) to MediaWiki. definitionListItemToMediaWiki :: PandocMonad m => ([Inline],[[Block]]) -> MediaWikiWriter m Text definitionListItemToMediaWiki (label, items) = do labelText <- inlineListToMediaWiki label contents <- mapM blockListToMediaWiki items tags <- asks useTags if tags then return $ "<dt>" <> labelText <> "</dt>\n" <> T.intercalate "\n" (map (\d -> "<dd>" <> d <> "</dd>") contents) else do marker <- asks listLevel return $ T.pack marker <> " " <> labelText <> "\n" <> T.intercalate "\n" (map (\d -> T.pack (init marker) <> ": " <> d) contents) -- | True if the list can be handled by simple wiki markup, False if HTML tags will be needed. isSimpleList :: Block -> Bool isSimpleList x = case x of BulletList items -> all isSimpleListItem items OrderedList (num, sty, _) items -> all isSimpleListItem items && num == 1 && sty `elem` [DefaultStyle, Decimal] DefinitionList items -> all isSimpleListItem $ concatMap snd items _ -> False -- | True if list item can be handled with the simple wiki syntax. False if -- HTML tags will be needed. isSimpleListItem :: [Block] -> Bool isSimpleListItem [] = True isSimpleListItem [x] = case x of Plain _ -> True Para _ -> True BulletList _ -> isSimpleList x OrderedList _ _ -> isSimpleList x DefinitionList _ -> isSimpleList x _ -> False isSimpleListItem [x, y] | isPlainOrPara x = case y of BulletList _ -> isSimpleList y OrderedList _ _ -> isSimpleList y DefinitionList _ -> isSimpleList y _ -> False isSimpleListItem _ = False isPlainOrPara :: Block -> Bool isPlainOrPara (Plain _) = True isPlainOrPara (Para _) = True isPlainOrPara _ = False -- | Concatenates strings with line breaks between them. vcat :: [Text] -> Text vcat = T.intercalate "\n" -- Auxiliary functions for tables: tableToMediaWiki :: PandocMonad m => Ann.Table -> MediaWikiWriter m Text tableToMediaWiki (Ann.Table attr capt _ thead tbodies tfoot) = do let (ident,classes,kvs) = attr caption <- case capt of Caption _ [] -> return mempty Caption _ longCapt -> do c <- blockListToMediaWiki longCapt return [ "|+ " <> trimr c ] head' <- tableHeadToMW thead bodies' <- concat <$> mapM tableBodyToMW tbodies foot' <- tableFootToMW tfoot return $ T.unlines $ [ "{|" <> (render Nothing (htmlAttrs (ident, "wikitable":classes, kvs))) ] <> caption <> head' <> bodies' <> foot' <> [ "|}" ] tableHeadToMW :: PandocMonad m => Ann.TableHead -> MediaWikiWriter m [Text] tableHeadToMW (Ann.TableHead _ rows) = headerRowsToMW rows tableFootToMW :: PandocMonad m => Ann.TableFoot -> MediaWikiWriter m [Text] tableFootToMW (Ann.TableFoot _ rows) = headerRowsToMW rows tableBodyToMW :: PandocMonad m => Ann.TableBody -> MediaWikiWriter m [Text] tableBodyToMW (Ann.TableBody _ _ headerRows bodyRows) = do headerRows' <- headerRowsToMW headerRows bodyRows' <- bodyRowsToMW bodyRows return $ headerRows' <> bodyRows' headerRowsToMW :: PandocMonad m => [Ann.HeaderRow] -> MediaWikiWriter m [Text] headerRowsToMW rows = (\x -> mconcat x) <$> mapM headerRowToMW rows headerRowToMW :: PandocMonad m => Ann.HeaderRow -> MediaWikiWriter m [Text] headerRowToMW (Ann.HeaderRow attr _ cells) = do cells' <- (\x -> mconcat x) <$> mapM (cellToMW "!") cells return $ ["|-" <> (render Nothing (htmlAttrs attr))] <> cells' bodyRowsToMW :: PandocMonad m => [Ann.BodyRow] -> MediaWikiWriter m [Text] bodyRowsToMW rows = (\x -> mconcat x) <$> mapM bodyRowToMW rows bodyRowToMW :: PandocMonad m => Ann.BodyRow -> MediaWikiWriter m [Text] bodyRowToMW (Ann.BodyRow attr _ headCells bodyCells) = do headCells' <- (\x -> mconcat x) <$> mapM (cellToMW "!") headCells bodyCells' <- (\x -> mconcat x) <$> mapM (cellToMW "|") bodyCells return $ ["|-" <> (render Nothing (htmlAttrs attr))] <> headCells' <> bodyCells' cellToMW :: PandocMonad m => Text -> Ann.Cell -> MediaWikiWriter m [Text] cellToMW marker (Ann.Cell (colSpec :| _) _ (Cell attr align rowspan colspan content)) = do content' <- blockListToMediaWiki content let (ident,classes,keyVals) = attr let align' = case align of AlignDefault -> fst colSpec _ -> align let keyVals' = case (htmlAlignmentToString align') of Nothing -> keyVals Just alignStr -> htmlAddStyle ("text-align", alignStr) keyVals let rowspan' = case rowspan of RowSpan 1 -> mempty RowSpan n -> [("rowspan", T.pack(show n))] let colspan' = case colspan of ColSpan 1 -> mempty ColSpan n -> [("colspan", T.pack(show n))] let attrs' = addPipeIfNotEmpty (render Nothing (htmlAttrs (ident, classes, rowspan' <> colspan' <> keyVals'))) return [marker <> attrs' <> addSpaceIfNotEmpty(content')] addPipeIfNotEmpty :: Text -> Text addPipeIfNotEmpty f = if T.null f then f else f <> "|" addSpaceIfNotEmpty :: Text -> Text addSpaceIfNotEmpty f = if T.null f then f else " " <> f imageToMediaWiki :: PandocMonad m => Attr -> MediaWikiWriter m Text imageToMediaWiki attr = do opts <- gets stOptions let (_, cls, _) = attr toPx = fmap (showInPixel opts) . checkPct checkPct (Just (Percent _)) = Nothing checkPct maybeDim = maybeDim go (Just w) Nothing = w <> "px" go (Just w) (Just h) = w <> "x" <> h <> "px" go Nothing (Just h) = "x" <> h <> "px" go Nothing Nothing = "" dims = go (toPx $ dimension Width attr) (toPx $ dimension Height attr) classes = if null cls then "" else "class=" <> T.unwords cls return $ T.intercalate "|" $ filter (not . T.null) [dims, classes] -- | Convert list of Pandoc block elements to MediaWiki. blockListToMediaWiki :: PandocMonad m => [Block] -- ^ List of block elements -> MediaWikiWriter m Text blockListToMediaWiki blocks = vcat <$> mapM blockToMediaWiki blocks -- | Convert list of Pandoc inline elements to MediaWiki. inlineListToMediaWiki :: PandocMonad m => [Inline] -> MediaWikiWriter m Text inlineListToMediaWiki lst = fmap T.concat $ mapM inlineToMediaWiki $ fixup lst where fixup [] = [] fixup (Str t : x : xs) | not (T.null t) && T.last t == '[' , isLinkOrImage x = Str t : RawInline (Format "mediawiki") "<nowiki/>" : x : fixup xs fixup (x:xs) = x : fixup xs isLinkOrImage Link{} = True isLinkOrImage Image{} = True isLinkOrImage _ = False -- | Convert Pandoc inline element to MediaWiki. inlineToMediaWiki :: PandocMonad m => Inline -> MediaWikiWriter m Text inlineToMediaWiki (Span attrs ils) = do contents <- inlineListToMediaWiki ils return $ render Nothing (tagWithAttrs "span" attrs) <> contents <> "</span>" inlineToMediaWiki (Emph lst) = do contents <- inlineListToMediaWiki lst return $ "''" <> contents <> "''" inlineToMediaWiki (Underline lst) = do contents <- inlineListToMediaWiki lst return $ "<u>" <> contents <> "</u>" inlineToMediaWiki (Strong lst) = do contents <- inlineListToMediaWiki lst return $ "'''" <> contents <> "'''" inlineToMediaWiki (Strikeout lst) = do contents <- inlineListToMediaWiki lst return $ "<s>" <> contents <> "</s>" inlineToMediaWiki (Superscript lst) = do contents <- inlineListToMediaWiki lst return $ "<sup>" <> contents <> "</sup>" inlineToMediaWiki (Subscript lst) = do contents <- inlineListToMediaWiki lst return $ "<sub>" <> contents <> "</sub>" inlineToMediaWiki (SmallCaps lst) = inlineListToMediaWiki lst inlineToMediaWiki (Quoted SingleQuote lst) = do contents <- inlineListToMediaWiki lst return $ "\8216" <> contents <> "\8217" inlineToMediaWiki (Quoted DoubleQuote lst) = do contents <- inlineListToMediaWiki lst return $ "\8220" <> contents <> "\8221" inlineToMediaWiki (Cite _ lst) = inlineListToMediaWiki lst inlineToMediaWiki (Code _ str) = return $ "<code>" <> escapeText str <> "</code>" inlineToMediaWiki (Str str) = return $ escapeText str inlineToMediaWiki (Math mt str) = return $ "<math display=\"" <> (if mt == DisplayMath then "block" else "inline") <> "\">" <> str <> "</math>" -- note: str should NOT be escaped inlineToMediaWiki il@(RawInline f str) | f == Format "mediawiki" = return str | f == Format "html" = return str | otherwise = "" <$ report (InlineNotRendered il) inlineToMediaWiki LineBreak = return "<br />\n" inlineToMediaWiki SoftBreak = do wrapText <- gets (writerWrapText . stOptions) listlevel <- asks listLevel case wrapText of WrapAuto -> return " " WrapNone -> return " " WrapPreserve -> if null listlevel then return "\n" else return " " inlineToMediaWiki Space = return " " inlineToMediaWiki (Link _ txt (src, _)) = do label <- inlineListToMediaWiki (removeLinks txt) case txt of [Str s] | isURI src && escapeURI s == src -> return src _ -> return $ if isURI src then "[" <> src <> " " <> label <> "]" else if src == label then "[[" <> src' <> "]]" else "[[" <> src' <> "|" <> label <> "]]" -- with leading / it's a link to a help page where src' = fromMaybe src $ T.stripPrefix "/" src inlineToMediaWiki (Image attr alt (source, tit)) = do img <- imageToMediaWiki attr alt' <- inlineListToMediaWiki alt let txt = if T.null alt' then if T.null tit then "" else tit else alt' return $ "[[" <> T.intercalate "|" (filter (not . T.null) [ "File:" <> source , img , txt ]) <> "]]" inlineToMediaWiki (Note contents) = do contents' <- blockListToMediaWiki contents modify (\s -> s { stNotes = True }) return $ "<ref>" <> stripTrailingNewlines contents' <> "</ref>" -- note - does not work for notes with multiple blocks -- We need to remove links from link text, because an <a> element is -- not allowed inside another <a> element. removeLinks :: [Inline] -> [Inline] removeLinks = walk go where go (Link _ ils _) = SmallCaps ils go x = x highlightingLangs :: Set.Set Text highlightingLangs = Set.fromList [ "abap", "abl", "abnf", "aconf", "actionscript", "actionscript3", "ada", "ada2005", "ada95", "adl", "agda", "ahk", "alloy", "ambienttalk", "ambienttalk/2", "antlr", "antlr-actionscript", "antlr-as", "antlr-c#", "antlr-cpp", "antlr-csharp", "antlr-java", "antlr-objc", "antlr-perl", "antlr-python", "antlr-rb", "antlr-ruby", "apache", "apacheconf", "apl", "applescript", "arduino", "arexx", "as", "as3", "asm", "aspectj", "aspx-cs", "aspx-vb", "asy", "asymptote", "at", "autohotkey", "autoit", "awk", "b3d", "basemake", "bash", "basic", "bat", "batch", "bbcode", "because", "befunge", "bf", "blitzbasic", "blitzmax", "bmax", "bnf", "boo", "boogie", "bplus", "brainfuck", "bro", "bsdmake", "bugs", "c", "c#", "c++", "c++-objdumb", "c-objdump", "ca65", "cadl", "camkes", "cbmbas", "ceylon", "cf3", "cfc", "cfengine3", "cfg", "cfm", "cfs", "chai", "chaiscript", "chapel", "cheetah", "chpl", "cirru", "cl", "clay", "clipper", "clj", "cljs", "clojure", "clojurescript", "cmake", "cobol", "cobolfree", "coffee", "coffee-script", "coffeescript", "common-lisp", "componentpascal", "console", "control", "coq", "cp", "cpp", "cpp-objdump", "cpsa", "crmsh", "croc", "cry", "cryptol", "csh", "csharp", "csound", "csound-csd", "csound-document", "csound-orc", "csound-sco", "csound-score", "css", "css+django", "css+erb", "css+genshi", "css+genshitext", "css+jinja", "css+lasso", "css+mako", "css+mozpreproc", "css+myghty", "css+php", "css+ruby", "css+smarty", "cu", "cucumber", "cuda", "cxx-objdump", "cypher", "cython", "d", "d-objdump", "dart", "debcontrol", "debsources", "delphi", "dg", "diff", "django", "docker", "dockerfile", "dosbatch", "doscon", "dosini", "dpatch", "dtd", "duby", "duel", "dylan", "dylan-console", "dylan-lid", "dylan-repl", "earl-grey", "earlgrey", "easytrieve", "ebnf", "ec", "ecl", "eg", "eiffel", "elisp", "elixir", "elm", "emacs", "erb", "erl", "erlang", "evoque", "ex", "exs", "ezhil", "factor", "fan", "fancy", "felix", "fish", "fishshell", "flx", "fortran", "fortranfixed", "foxpro", "fsharp", "fy", "gap", "gas", "gawk", "genshi", "genshitext", "gherkin", "glsl", "gnuplot", "go", "golo", "gooddata-cl", "gosu", "groff", "groovy", "gst", "haml", "handlebars", "haskell", "haxe", "haxeml", "hexdump", "hs", "html", "html+cheetah", "html+django", "html+erb", "html+evoque", "html+genshi", "html+handlebars", "html+jinja", "html+kid", "html+lasso", "html+mako", "html+myghty", "html+php", "html+ruby", "html+smarty", "html+spitfire", "html+twig", "html+velocity", "htmlcheetah", "htmldjango", "http", "hx", "hxml", "hxsl", "hy", "hybris", "hylang", "i6", "i6t", "i7", "idl", "idl4", "idr", "idris", "iex", "igor", "igorpro", "ik", "inform6", "inform7", "ini", "io", "ioke", "irb", "irc", "isabelle", "j", "jade", "jags", "jasmin", "jasminxt", "java", "javascript", "javascript+cheetah", "javascript+django", "javascript+erb", "javascript+genshi", "javascript+genshitext", "javascript+jinja", "javascript+lasso", "javascript+mako", "javascript+mozpreproc", "javascript+myghty", "javascript+php", "javascript+ruby", "javascript+smarty", "javascript+spitfire", "jbst", "jcl", "jinja", "jl", "jlcon", "jproperties", "js", "js+cheetah", "js+django", "js+erb", "js+genshi", "js+genshitext", "js+jinja", "js+lasso", "js+mako", "js+myghty", "js+php", "js+ruby", "js+smarty", "js+spitfire", "json", "json-ld", "jsonld", "jsonml+bst", "jsp", "julia", "kal", "kconfig", "kernel-config", "kid", "koka", "kotlin", "ksh", "lagda", "lasso", "lassoscript", "latex", "lcry", "lcryptol", "lean", "less", "lhaskell", "lhs", "lid", "lidr", "lidris", "lighttpd", "lighty", "limbo", "linux-config", "liquid", "lisp", "literate-agda", "literate-cryptol", "literate-haskell", "literate-idris", "live-script", "livescript", "llvm", "logos", "logtalk", "lsl", "lua", "m2", "make", "makefile", "mako", "man", "maql", "mask", "mason", "mathematica", "matlab", "matlabsession", "mawk", "menuconfig", "mf", "minid", "mma", "modelica", "modula2", "moin", "monkey", "moo", "moocode", "moon", "moonscript", "mozhashpreproc", "mozpercentpreproc", "mq4", "mq5", "mql", "mql4", "mql5", "msc", "mscgen", "mupad", "mxml", "myghty", "mysql", "nasm", "nawk", "nb", "nemerle", "nesc", "newlisp", "newspeak", "nginx", "nim", "nimrod", "nit", "nix", "nixos", "nroff", "nsh", "nsi", "nsis", "numpy", "obj-c", "obj-c++", "obj-j", "objc", "objc++", "objdump", "objdump-nasm", "objective-c", "objective-c++", "objective-j", "objectivec", "objectivec++", "objectivej", "objectpascal", "objj", "ocaml", "octave", "odin", "ooc", "opa", "openbugs", "openedge", "pacmanconf", "pan", "parasail", "pas", "pascal", "pawn", "pcmk", "perl", "perl6", "php", "php3", "php4", "php5", "pig", "pike", "pkgconfig", "pl", "pl6", "plpgsql", "po", "posh", "postgres", "postgres-console", "postgresql", "postgresql-console", "postscr", "postscript", "pot", "pov", "powershell", "praat", "progress", "prolog", "properties", "proto", "protobuf", "ps1", "ps1con", "psm1", "psql", "puppet", "py", "py3", "py3tb", "pycon", "pypy", "pypylog", "pyrex", "pytb", "python", "python3", "pyx", "qbasic", "qbs", "qml", "qvt", "qvto", "r", "racket", "ragel", "ragel-c", "ragel-cpp", "ragel-d", "ragel-em", "ragel-java", "ragel-objc", "ragel-rb", "ragel-ruby", "raw", "rb", "rbcon", "rconsole", "rd", "rebol", "red", "red/system", "redcode", "registry", "resource", "resourcebundle", "rest", "restructuredtext", "rexx", "rhtml", "rkt", "roboconf-graph", "roboconf-instances", "robotframework", "rout", "rql", "rsl", "rst", "rts", "ruby", "rust", "s", "sage", "salt", "sass", "sc", "scala", "scaml", "scheme", "scilab", "scm", "scss", "sh", "shell", "shell-session", "shen", "slim", "sls", "smali", "smalltalk", "smarty", "sml", "snobol", "sources.list", "sourceslist", "sp", "sparql", "spec", "spitfire", "splus", "sql", "sqlite3", "squeak", "squid", "squid.conf", "squidconf", "ssp", "st", "stan", "supercollider", "sv", "swift", "swig", "systemverilog", "tads3", "tap", "tcl", "tcsh", "tcshcon", "tea", "termcap", "terminfo", "terraform", "tex", "text", "tf", "thrift", "todotxt", "trac-wiki", "trafficscript", "treetop", "ts", "turtle", "twig", "typescript", "udiff", "urbiscript", "v", "vala", "vapi", "vb.net", "vbnet", "vctreestatus", "velocity", "verilog", "vfp", "vgl", "vhdl", "vim", "winbatch", "winbugs", "x10", "xbase", "xml", "xml+cheetah", "xml+django", "xml+erb", "xml+evoque", "xml+genshi", "xml+jinja", "xml+kid", "xml+lasso", "xml+mako", "xml+myghty", "xml+php", "xml+ruby", "xml+smarty", "xml+spitfire", "xml+velocity", "xq", "xql", "xqm", "xquery", "xqy", "xslt", "xten", "xtend", "xul+mozpreproc", "yaml", "yaml+jinja", "zephir" ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/Ms.hs����������������������������������������������������������0000644�0000000�0000000�00000063746�07346545000�016464� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ViewPatterns #-} {- | Module : Text.Pandoc.Writers.Ms Copyright : Copyright (C) 2007-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable Conversion of 'Pandoc' documents to roff ms format. TODO: [ ] use base URL to construct absolute URLs from relative ones for external links [ ] is there a better way to do strikeout? [ ] tight/loose list distinction -} module Text.Pandoc.Writers.Ms ( writeMs ) where import Control.Monad.State.Strict ( gets, modify, evalStateT ) import Control.Monad ( MonadPlus(mplus), liftM, unless, forM ) import Data.Containers.ListUtils (nubOrd) import Data.Char (isAscii, isLower, isUpper, ord) import Data.List (intercalate, intersperse) import Data.List.NonEmpty (nonEmpty) import qualified Data.Map as Map import Data.Maybe (catMaybes) import Data.Text (Text) import qualified Data.Text as T import Network.URI (escapeURIString, isAllowedInURI) import Skylighting import System.FilePath (takeExtension) import Text.Pandoc.Asciify (toAsciiChar) import Text.Pandoc.Class.PandocMonad (PandocMonad, report) import Text.Pandoc.Definition import Text.Pandoc.Highlighting import Text.Pandoc.ImageSize import Text.Pandoc.Logging import Text.Pandoc.Options import Text.DocLayout import Text.Pandoc.Shared import Text.Pandoc.Templates (renderTemplate) import Text.Pandoc.Writers.Math import Text.Pandoc.Writers.Shared import Text.Pandoc.Writers.Roff import Text.Printf (printf) import Text.TeXMath (writeEqn) import qualified Data.Text.Encoding as TE import qualified Data.ByteString as B -- | Convert Pandoc to Ms. writeMs :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeMs opts document = evalStateT (pandocToMs opts document) defaultWriterState -- | Return roff ms representation of document. pandocToMs :: PandocMonad m => WriterOptions -> Pandoc -> MS m Text pandocToMs opts (Pandoc meta blocks) = do let colwidth = if writerWrapText opts == WrapAuto then Just $ writerColumns opts else Nothing title <- chomp <$> inlineListToMs' opts (lookupMetaInlines "title" meta) metadata <- metaToContext opts (blockListToMs opts) (fmap chomp . inlineListToMs' opts) meta main <- blockListToMs opts blocks hasInlineMath <- gets stHasInlineMath let titleMeta = (escapeStr opts . stringify) $ docTitle meta let authorsMeta = map (escapeStr opts . stringify) $ docAuthors meta hasHighlighting <- gets stHighlighting let highlightingMacros = if hasHighlighting then maybe mempty styleToMs $ writerHighlightStyle opts else mempty let context = defField "body" main $ defField "has-inline-math" hasInlineMath $ defField "hyphenate" True $ defField "toc" (writerTableOfContents opts) $ defField "title-meta" titleMeta $ defField "author-meta" (T.intercalate "; " authorsMeta) $ defField "highlighting-macros" highlightingMacros $ resetField "title" title metadata return $ render colwidth $ case writerTemplate opts of Nothing -> main Just tpl -> renderTemplate tpl context escapeStr :: WriterOptions -> Text -> Text escapeStr opts = escapeString (if writerPreferAscii opts then AsciiOnly else AllowUTF8) -- In PDFs we need to escape parentheses and backslash. -- In PDF we need to encode as UTF-16 BE. escapePDFString :: Text -> Text escapePDFString t | T.all isAscii t = T.replace "(" "\\(" . T.replace ")" "\\)" . T.replace "\\" "\\\\" $ t | otherwise = ("\\376\\377" <>) . -- add bom mconcat . map encodeChar . T.unpack $ t where encodeChar c = if isAscii c && c /= '\\' && c /= '(' && c /= ')' then "\\000" <> T.singleton c else mconcat . map toOctal . B.unpack . TE.encodeUtf16BE $ T.singleton c toOctal n = "\\" <> T.pack (printf "%03o" n) escapeUri :: Text -> Text escapeUri = T.pack . escapeURIString (\c -> c /= '@' && isAllowedInURI c) . T.unpack toSmallCaps :: WriterOptions -> Text -> Text toSmallCaps opts s = case T.uncons s of Nothing -> "" Just (c, cs) | isLower c -> let (lowers,rest) = T.span isLower s in "\\s-2" <> escapeStr opts (T.toUpper lowers) <> "\\s0" <> toSmallCaps opts rest | isUpper c -> let (uppers,rest) = T.span isUpper s in escapeStr opts uppers <> toSmallCaps opts rest | otherwise -> escapeStr opts (T.singleton c) <> toSmallCaps opts cs -- We split inline lists into sentences, and print one sentence per -- line. roff treats the line-ending period differently. -- See http://code.google.com/p/pandoc/issues/detail?id=148. blockToMs :: PandocMonad m => WriterOptions -- ^ Options -> Block -- ^ Block element -> MS m (Doc Text) blockToMs opts (Div (ident,cls,kvs) bs) = do let anchor = if T.null ident then empty else nowrap $ literal ".pdfhref M " <> doubleQuotes (literal (toAscii ident)) case cls of _ | "csl-entry" `elem` cls -> (".CSLENTRY" $$) . vcat <$> mapM (cslEntryToMs True opts) bs | "csl-bib-body" `elem` cls -> do res <- blockListToMs opts bs return $ anchor $$ -- so that XP paragraphs are indented: ".nr PI 3n" $$ -- space between entries ".de CSLENTRY" $$ (case lookup "entry-spacing" kvs >>= safeRead of Just n | n > (0 :: Int) -> ".sp" _ -> mempty) $$ ".." $$ ".de CSLP" $$ (if "hanging-indent" `elem` cls then ".XP" else ".LP") $$ ".." $$ res _ -> do setFirstPara res <- blockListToMs opts bs setFirstPara return $ anchor $$ res blockToMs opts (Plain inlines) = splitSentences <$> inlineListToMs' opts inlines blockToMs opts (Para inlines) = do firstPara <- gets stFirstPara resetFirstPara contents <- inlineListToMs' opts inlines return $ literal (if firstPara then ".LP" else ".PP") $$ splitSentences contents blockToMs _ b@(RawBlock f str) | f == Format "ms" = return $ literal str | otherwise = do report $ BlockNotRendered b return empty blockToMs _ HorizontalRule = do resetFirstPara return $ literal ".HLINE" blockToMs opts (Header level (ident,classes,_) inlines) = do setFirstPara modify $ \st -> st{ stInHeader = True } contents <- inlineListToMs' opts $ map breakToSpace inlines modify $ \st -> st{ stInHeader = False } let (heading, secnum) = if writerNumberSections opts && "unnumbered" `notElem` classes then (".NH", "\\*[SN]") else (".SH", "") let anchor = if T.null ident then empty else nowrap $ literal ".pdfhref M " <> doubleQuotes (literal (toAscii ident)) let bookmark = literal ".pdfhref O " <> literal (tshow level <> " ") <> doubleQuotes (literal $ secnum <> (if T.null secnum then "" else " ") <> escapePDFString (stringify inlines)) let backlink = nowrap (literal ".pdfhref L -D " <> doubleQuotes (literal (toAscii ident)) <> space <> literal "\\") <> cr <> literal " -- " let tocEntry = if writerTableOfContents opts && level <= writerTOCDepth opts then literal ".XS" $$ backlink <> doubleQuotes ( nowrap (literal (T.replicate level "\t") <> (if T.null secnum then empty else literal secnum <> literal "\\~\\~") <> contents)) $$ literal ".XE" else empty modify $ \st -> st{ stFirstPara = True } return $ (literal heading <> space <> literal (tshow level)) $$ contents $$ bookmark $$ anchor $$ tocEntry blockToMs opts (CodeBlock attr str) = do hlCode <- highlightCode opts attr str setFirstPara return $ literal ".IP" $$ literal ".nf" $$ literal "\\f[C]" $$ ((case T.uncons str of Just ('.',_) -> literal "\\&" _ -> mempty) <> hlCode) $$ literal "\\f[]" $$ literal ".fi" blockToMs opts (LineBlock ls) = do setFirstPara -- use .LP, see #5588 blockToMs opts $ Para $ intercalate [LineBreak] ls blockToMs opts (BlockQuote blocks) = do setFirstPara contents <- blockListToMs opts blocks setFirstPara return $ literal ".QS" $$ contents $$ literal ".QE" blockToMs opts (Table _ blkCapt specs thead tbody tfoot) = let (caption, alignments, widths, headers, rows) = toLegacyTable blkCapt specs thead tbody tfoot aligncode AlignLeft = "l" aligncode AlignRight = "r" aligncode AlignCenter = "c" aligncode AlignDefault = "l" in do caption' <- inlineListToMs' opts caption let isSimple = all (== 0) widths let totalWidth = 70 -- 78n default width - 8n indent = 70n let coldescriptions = literal $ T.unwords (zipWith (\align width -> aligncode align <> if width == 0 then "" else T.pack $ printf "w(%0.1fn)" (totalWidth * width)) alignments widths) <> "." colheadings <- mapM (blockListToMs opts) headers let makeRow cols = literal "T{" $$ vcat (intersperse (literal "T}\tT{") cols) $$ literal "T}" let colheadings' = if all null headers then empty else makeRow colheadings $$ char '_' body <- mapM (\row -> do cols <- mapM (\(cell, w) -> (if isSimple then id else (literal (".nr LL " <> T.pack (printf "%0.1fn" (w * totalWidth))) $$)) <$> blockListToMs opts cell) (zip row widths) return $ makeRow cols) rows setFirstPara return $ literal ".PP" $$ caption' $$ literal ".na" $$ -- we don't want justification in table cells (if isSimple then "" else ".nr LLold \\n[LL]") $$ literal ".TS" $$ literal "delim(@@) tab(\t);" $$ coldescriptions $$ colheadings' $$ vcat body $$ literal ".TE" $$ (if isSimple then "" else ".nr LL \\n[LLold]") $$ literal ".ad" blockToMs opts (BulletList items) = do contents <- mapM (bulletListItemToMs opts) items setFirstPara return (vcat contents) blockToMs opts (OrderedList attribs items) = do let markers = take (length items) $ orderedListMarkers attribs let indent = 2 + maybe 0 maximum (nonEmpty (map T.length markers)) contents <- mapM (\(num, item) -> orderedListItemToMs opts num indent item) $ zip markers items setFirstPara return (vcat contents) blockToMs opts (DefinitionList items) = do contents <- mapM (definitionListItemToMs opts) items setFirstPara return (vcat contents) blockToMs opts (Figure figattr (Caption _ caption) body) = case body of [Plain [ Image attr _alt (src, _tit) ]] | let ext = takeExtension (T.unpack src) in (ext == ".ps" || ext == ".eps") -> do let (mbW,mbH) = (inPoints opts <$> dimension Width attr, inPoints opts <$> dimension Height attr) let sizeAttrs = case (mbW, mbH) of (Just wp, Nothing) -> space <> doubleQuotes (literal (tshow (floor wp :: Int) <> "p")) (Just wp, Just hp) -> space <> doubleQuotes (literal (tshow (floor wp :: Int) <> "p")) <> space <> doubleQuotes (literal (tshow (floor hp :: Int))) _ -> empty capt <- blockToMs opts (Div figattr caption) let captlines = height capt return $ nowrap (literal ".PSPIC " <> doubleQuotes (literal (escapeStr opts src)) <> sizeAttrs) $$ literal (".ce " <> tshow captlines) $$ capt $$ literal ".sp 1" _ -> blockToMs opts $ Div figattr body -- | Convert bullet list item (list of blocks) to ms. bulletListItemToMs :: PandocMonad m => WriterOptions -> [Block] -> MS m (Doc Text) bulletListItemToMs _ [] = return empty bulletListItemToMs opts (Para first:rest) = bulletListItemToMs opts (Plain first:rest) bulletListItemToMs opts (Plain first:rest) = do first' <- blockToMs opts (Plain first) rest' <- blockListToMs opts rest let first'' = literal ".IP \\[bu] 3" $$ first' let rest'' = if null rest then empty else literal ".RS 3" $$ rest' $$ literal ".RE" return (first'' $$ rest'') bulletListItemToMs opts (first:rest) = do first' <- blockToMs opts first rest' <- blockListToMs opts rest return $ literal "\\[bu] .RS 3" $$ first' $$ rest' $$ literal ".RE" -- | Convert ordered list item (a list of blocks) to ms. orderedListItemToMs :: PandocMonad m => WriterOptions -- ^ options -> Text -- ^ order marker for list item -> Int -- ^ number of spaces to indent -> [Block] -- ^ list item (list of blocks) -> MS m (Doc Text) orderedListItemToMs _ _ _ [] = return empty orderedListItemToMs opts num indent (Para first:rest) = orderedListItemToMs opts num indent (Plain first:rest) orderedListItemToMs opts num indent (first:rest) = do first' <- blockToMs opts first rest' <- blockListToMs opts rest let num' = T.pack $ printf ("%" <> show (indent - 1) <> "s") num let first'' = literal (".IP \"" <> num' <> "\" " <> tshow indent) $$ first' let rest'' = if null rest then empty else literal ".RS " <> literal (tshow indent) $$ rest' $$ literal ".RE" return $ first'' $$ rest'' -- | Convert definition list item (label, list of blocks) to ms. definitionListItemToMs :: PandocMonad m => WriterOptions -> ([Inline],[[Block]]) -> MS m (Doc Text) definitionListItemToMs opts (label, defs) = do labelText <- withFontFeature 'B' $ inlineListToMs' opts $ map breakToSpace label contents <- if null defs then return empty else liftM vcat $ forM defs $ \blocks -> do let (first, rest) = case blocks of (Para x:y) -> (Plain x,y) (x:y) -> (x,y) [] -> (Plain [], []) -- should not happen rest' <- liftM vcat $ mapM (\item -> blockToMs opts item) rest first' <- blockToMs opts first return $ first' $$ literal ".RS 3" $$ rest' $$ literal ".RE" return $ nowrap (literal ".IP " <> doubleQuotes labelText <> " 3") $$ contents -- | Convert list of Pandoc block elements to ms. blockListToMs :: PandocMonad m => WriterOptions -- ^ Options -> [Block] -- ^ List of block elements -> MS m (Doc Text) blockListToMs opts blocks = vcat <$> mapM (blockToMs opts) blocks -- | Convert list of Pandoc inline elements to ms. inlineListToMs :: PandocMonad m => WriterOptions -> [Inline] -> MS m (Doc Text) -- if list starts with ., insert a zero-width character \& so it -- won't be interpreted as markup if it falls at the beginning of a line. inlineListToMs opts lst = hcat <$> mapM (inlineToMs opts) lst -- This version to be used when there is no further inline content; -- forces a note at the end. inlineListToMs' :: PandocMonad m => WriterOptions -> [Inline] -> MS m (Doc Text) inlineListToMs' opts lst = do x <- hcat <$> mapM (inlineToMs opts) lst y <- handleNotes opts empty return $ x <> y -- | Convert Pandoc inline element to ms. inlineToMs :: PandocMonad m => WriterOptions -> Inline -> MS m (Doc Text) inlineToMs opts (Span _ ils) = inlineListToMs opts ils inlineToMs opts (Emph lst) = withFontFeature 'I' (inlineListToMs opts lst) inlineToMs opts (Underline lst) = inlineToMs opts (Emph lst) inlineToMs opts (Strong lst) = withFontFeature 'B' (inlineListToMs opts lst) inlineToMs opts (Strikeout lst) = do contents <- inlineListToMs opts lst -- we use grey color instead of strikeout, which seems quite -- hard to do in roff for arbitrary bits of text return $ literal "\\m[strikecolor]" <> contents <> literal "\\m[]" inlineToMs opts (Superscript lst) = do contents <- inlineListToMs opts lst return $ literal "\\*{" <> contents <> literal "\\*}" inlineToMs opts (Subscript lst) = do contents <- inlineListToMs opts lst return $ literal "\\*<" <> contents <> literal "\\*>" inlineToMs opts (SmallCaps lst) = do -- see https://lists.gnu.org/archive/html/groff/2015-01/msg00016.html modify $ \st -> st{ stSmallCaps = not (stSmallCaps st) } res <- inlineListToMs opts lst modify $ \st -> st{ stSmallCaps = not (stSmallCaps st) } return res inlineToMs opts (Quoted SingleQuote lst) = do contents <- inlineListToMs opts lst return $ char '`' <> contents <> char '\'' inlineToMs opts (Quoted DoubleQuote lst) = do contents <- inlineListToMs opts lst return $ literal "\\[lq]" <> contents <> literal "\\[rq]" inlineToMs opts (Cite _ lst) = inlineListToMs opts lst inlineToMs opts (Code attr str) = do hlCode <- highlightCode opts attr str withFontFeature 'C' (return hlCode) inlineToMs opts (Str str) = do let shim = case T.uncons str of Just ('.',_) -> afterBreak "\\&" _ -> empty smallcaps <- gets stSmallCaps if smallcaps then return $ shim <> literal (toSmallCaps opts str) else return $ shim <> literal (escapeStr opts str) inlineToMs opts (Math InlineMath str) = do modify $ \st -> st{ stHasInlineMath = True } res <- convertMath writeEqn InlineMath str case res of Left il -> inlineToMs opts il Right r -> return $ literal "@" <> literal r <> literal "@" inlineToMs opts (Math DisplayMath str) = do res <- convertMath writeEqn DisplayMath str case res of Left il -> do contents <- inlineToMs opts il return $ cr <> literal ".RS 3" $$ contents $$ literal ".RE" Right r -> return $ cr <> literal ".EQ" $$ literal r $$ literal ".EN" <> cr inlineToMs _ il@(RawInline f str) | f == Format "ms" = return $ literal str | otherwise = do report $ InlineNotRendered il return empty inlineToMs _ LineBreak = return $ cr <> literal ".br" <> cr inlineToMs opts SoftBreak = handleNotes opts $ case writerWrapText opts of WrapAuto -> space WrapNone -> space WrapPreserve -> cr inlineToMs opts Space = handleNotes opts space inlineToMs opts (Link _ txt (T.uncons -> Just ('#',ident), _)) = do -- internal link contents <- inlineListToMs' opts $ map breakToSpace txt return $ literal "\\c" <> cr <> nowrap (literal ".pdfhref L -D " <> doubleQuotes (literal (toAscii ident)) <> literal " -A " <> doubleQuotes (literal "\\c") <> space <> literal "\\") <> cr <> literal " -- " <> doubleQuotes (nowrap contents) <> cr <> literal "\\&" inlineToMs opts (Link _ txt (src, _)) = do -- external link contents <- inlineListToMs' opts $ map breakToSpace txt return $ literal "\\c" <> cr <> nowrap (literal ".pdfhref W -D " <> doubleQuotes (literal (escapeUri src)) <> literal " -A " <> doubleQuotes (literal "\\c") <> space <> literal "\\") <> cr <> literal " -- " <> doubleQuotes (nowrap contents) <> cr <> literal "\\&" inlineToMs opts (Image _ alternate (_, _)) = return $ char '[' <> literal "IMAGE: " <> literal (escapeStr opts (stringify alternate)) <> char ']' inlineToMs _ (Note contents) = do modify $ \st -> st{ stNotes = contents : stNotes st } return $ literal "\\**" cslEntryToMs :: PandocMonad m => Bool -> WriterOptions -> Block -> MS m (Doc Text) cslEntryToMs atStart opts (Para xs) = case xs of (Span ("",["csl-left-margin"],[]) lils : rest@(Span ("",["csl-right-inline"],[]) _ : _)) -> do lils' <- inlineListToMs' opts lils ((cr <> literal ".IP " <> doubleQuotes (nowrap lils') <> literal " 5") $$) <$> cslEntryToMs False opts (Para rest) (Span ("",["csl-block"],[]) ils : rest) -> ((cr <> literal ".LP") $$) <$> cslEntryToMs False opts (Para (ils ++ rest)) (Span ("",["csl-left-margin"],[]) ils : rest) -> ((cr <> literal ".LP") $$) <$> cslEntryToMs False opts (Para (ils ++ rest)) (Span ("",["csl-indented"],[]) ils : rest) -> ((cr <> literal ".LP") $$) <$> cslEntryToMs False opts (Para (ils ++ rest)) _ | atStart -> (".CSLP" $$) <$> cslEntryToMs False opts (Para xs) | otherwise -> case xs of [] -> return mempty (x:rest) -> (<>) <$> inlineToMs opts x <*> cslEntryToMs False opts (Para rest) cslEntryToMs _ opts x = blockToMs opts x handleNotes :: PandocMonad m => WriterOptions -> Doc Text -> MS m (Doc Text) handleNotes opts fallback = do notes <- gets stNotes if null notes then return fallback else do modify $ \st -> st{ stNotes = [] } vcat <$> mapM (handleNote opts) notes handleNote :: PandocMonad m => WriterOptions -> Note -> MS m (Doc Text) handleNote opts bs = do -- don't start with Paragraph or we'll get a spurious blank -- line after the note ref: let bs' = case bs of (Para ils : rest) -> Plain ils : rest _ -> bs contents <- blockListToMs opts bs' return $ cr <> literal ".FS" $$ contents $$ literal ".FE" <> cr setFirstPara :: PandocMonad m => MS m () setFirstPara = modify $ \st -> st{ stFirstPara = True } resetFirstPara :: PandocMonad m => MS m () resetFirstPara = modify $ \st -> st{ stFirstPara = False } breakToSpace :: Inline -> Inline breakToSpace SoftBreak = Space breakToSpace LineBreak = Space breakToSpace x = x -- Highlighting styleToMs :: Style -> Doc Text styleToMs sty = vcat $ colordefs <> map (toMacro sty) alltoktypes where alltoktypes = enumFromTo KeywordTok NormalTok colordefs = map toColorDef allcolors toColorDef c = literal (".defcolor " <> hexColor c <> " rgb #" <> hexColor c) allcolors = catMaybes $ nubOrd $ [defaultColor sty, backgroundColor sty, lineNumberColor sty, lineNumberBackgroundColor sty] <> concatMap (colorsForToken. snd) (Map.toList (tokenStyles sty)) colorsForToken ts = [tokenColor ts, tokenBackground ts] hexColor :: Color -> Text hexColor (RGB r g b) = T.pack $ printf "%02x%02x%02x" r g b toMacro :: Style -> TokenType -> Doc Text toMacro sty toktype = nowrap (literal ".ds " <> literal (tshow toktype) <> literal " \\&" <> setbg <> setcolor <> setfont <> literal "\\\\$1" <> resetfont <> resetcolor <> resetbg) where setcolor = maybe empty fgcol tokCol resetcolor = maybe empty (const $ literal "\\\\m[]") tokCol setbg = empty -- maybe empty bgcol tokBg resetbg = empty -- maybe empty (const $ text "\\\\M[]") tokBg fgcol c = literal $ "\\\\m[" <> hexColor c <> "]" -- bgcol c = literal $ "\\\\M[" <> hexColor c <> "]" setfont = if tokBold || tokItalic then literal $ T.pack $ "\\\\f[C" <> ['B' | tokBold] <> ['I' | tokItalic] <> "]" else empty resetfont = if tokBold || tokItalic then literal "\\\\f[C]" else empty tokSty = Map.lookup toktype (tokenStyles sty) tokCol = (tokSty >>= tokenColor) `mplus` defaultColor sty -- tokBg = (tokSty >>= tokenBackground) `mplus` backgroundColor sty tokBold = maybe False tokenBold tokSty tokItalic = maybe False tokenItalic tokSty -- tokUnderline = fromMaybe False (tokSty >>= tokUnderline) -- lnColor = lineNumberColor sty -- lnBkgColor = lineNumberBackgroundColor sty msFormatter :: WriterOptions -> FormatOptions -> [SourceLine] -> Doc Text msFormatter opts _fmtopts = literal . T.intercalate "\n" . map fmtLine where fmtLine = mconcat . map fmtToken fmtToken (toktype, tok) = "\\*[" <> tshow toktype <> " \"" <> escapeStr opts tok <> "\"]" highlightCode :: PandocMonad m => WriterOptions -> Attr -> Text -> MS m (Doc Text) highlightCode opts attr str = case highlight (writerSyntaxMap opts) (msFormatter opts) attr str of Left msg -> do unless (T.null msg) $ report $ CouldNotHighlight msg return $ literal (escapeStr opts str) Right h -> do modify (\st -> st{ stHighlighting = True }) return h -- This is used for PDF anchors. toAscii :: Text -> Text toAscii = T.concatMap (\c -> case toAsciiChar c of Nothing -> "_u" <> tshow (ord c) <> "_" Just '/' -> "_u" <> tshow (ord c) <> "_" -- see #4515 Just c' -> T.singleton c') ��������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/Muse.hs��������������������������������������������������������0000644�0000000�0000000�00000073264�07346545000�017012� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ViewPatterns #-} {- | Module : Text.Pandoc.Writers.Muse Copyright : Copyright (C) 2017-2020 Alexander Krotov License : GNU GPL, version 2 or above Maintainer : Alexander Krotov <ilabdsf@gmail.com> Stability : stable Portability : portable Conversion of 'Pandoc' documents to Muse. This module is mostly intended for <https://amusewiki.org/ Amusewiki> markup support, as described by <https://amusewiki.org/library/manual Text::Amuse markup manual>. Original <https://www.gnu.org/software/emacs-muse/ Emacs Muse> markup support is a secondary goal. Where Text::Amuse markup <https://metacpan.org/pod/Text::Amuse#DIFFERENCES-WITH-THE-ORIGINAL-EMACS-MUSE-MARKUP differs> from <https://www.gnu.org/software/emacs-muse/manual/ Emacs Muse markup>, Text::Amuse markup is supported. For example, native tables are always used instead of Org Mode tables. However, @\<literal style="html">@ tag is used for HTML raw blocks even though it is supported only in Emacs Muse. -} module Text.Pandoc.Writers.Muse (writeMuse) where import Control.Monad (zipWithM) import Control.Monad.Except (throwError) import Control.Monad.Reader ( asks, MonadReader(local), ReaderT(runReaderT) ) import Control.Monad.State.Strict ( StateT, gets, modify, evalStateT ) import Data.Char (isAlphaNum, isAsciiLower, isAsciiUpper, isDigit, isSpace) import Data.Default import Data.List (intersperse, transpose) import Data.List.NonEmpty (nonEmpty, NonEmpty(..)) import qualified Data.Set as Set import qualified Data.Text as T import Data.Text (Text) import System.FilePath (takeExtension) import Text.Pandoc.Class.PandocMonad (PandocMonad) import Text.Pandoc.Definition import Text.Pandoc.Error import Text.Pandoc.ImageSize import Text.Pandoc.Options import Text.DocLayout import Text.Pandoc.Shared import Text.Pandoc.URI import Text.Pandoc.Templates (renderTemplate) import Text.Pandoc.Writers.Math import Text.Pandoc.Writers.Shared type Notes = [[Block]] type Muse m = ReaderT WriterEnv (StateT WriterState m) data WriterEnv = WriterEnv { envOptions :: WriterOptions , envTopLevel :: Bool , envInsideBlock :: Bool , envInlineStart :: Bool -- ^ True if there is only whitespace since last newline , envInsideLinkDescription :: Bool -- ^ Escape ] if True , envAfterSpace :: Bool -- ^ There is whitespace (not just newline) before , envOneLine :: Bool -- ^ True if newlines are not allowed , envInsideAsterisks :: Bool -- ^ True if outer element is emphasis with asterisks , envNearAsterisks :: Bool -- ^ Rendering inline near asterisks } data WriterState = WriterState { stNotes :: Notes , stNoteNum :: Int , stIds :: Set.Set Text , stUseTags :: Bool -- ^ Use tags for emphasis, for example because previous character is a letter } instance Default WriterState where def = WriterState { stNotes = [] , stNoteNum = 1 , stIds = Set.empty , stUseTags = False } evalMuse :: PandocMonad m => Muse m a -> WriterEnv -> WriterState -> m a evalMuse document env = evalStateT $ runReaderT document env -- | Convert Pandoc to Muse. writeMuse :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeMuse opts document = evalMuse (pandocToMuse document) env def where env = WriterEnv { envOptions = opts , envTopLevel = True , envInsideBlock = False , envInlineStart = True , envInsideLinkDescription = False , envAfterSpace = False , envOneLine = False , envInsideAsterisks = False , envNearAsterisks = False } -- | Return Muse representation of document. pandocToMuse :: PandocMonad m => Pandoc -> Muse m Text pandocToMuse (Pandoc meta blocks) = do opts <- asks envOptions let colwidth = if writerWrapText opts == WrapAuto then Just $ writerColumns opts else Nothing metadata <- metaToContext opts blockListToMuse (fmap chomp . inlineListToMuse) meta body <- blockListToMuse blocks notes <- currentNotesToMuse let main = body $+$ notes let context = defField "body" main metadata return $ render colwidth $ case writerTemplate opts of Nothing -> main Just tpl -> renderTemplate tpl context -- | Helper function for flatBlockListToMuse -- | Render all blocks and insert blank lines between the first two catWithBlankLines :: PandocMonad m => [Block] -- ^ List of block elements -> Int -- ^ Number of blank lines -> Muse m (Doc Text) catWithBlankLines (b : bs) n = do b' <- blockToMuseWithNotes b bs' <- flatBlockListToMuse bs return $ b' <> blanklines n <> bs' catWithBlankLines _ _ = error "Expected at least one block" -- | Convert list of Pandoc block elements to Muse -- | without setting envTopLevel. flatBlockListToMuse :: PandocMonad m => [Block] -- ^ List of block elements -> Muse m (Doc Text) flatBlockListToMuse bs@(BulletList _ : BulletList _ : _) = catWithBlankLines bs 2 flatBlockListToMuse bs@(OrderedList (_, style1, _) _ : OrderedList (_, style2, _) _ : _) = catWithBlankLines bs (if style1' == style2' then 2 else 0) where style1' = normalizeStyle style1 style2' = normalizeStyle style2 normalizeStyle DefaultStyle = Decimal normalizeStyle s = s flatBlockListToMuse bs@(DefinitionList _ : DefinitionList _ : _) = catWithBlankLines bs 2 flatBlockListToMuse bs@(_ : _) = catWithBlankLines bs 0 flatBlockListToMuse [] = return mempty simpleTable :: PandocMonad m => [Inline] -> [[Block]] -> [[[Block]]] -> Muse m (Doc Text) simpleTable caption headers rows = do topLevel <- asks envTopLevel caption' <- inlineListToMuse caption headers' <- mapM blockListToMuse headers rows' <- mapM (mapM blockListToMuse) rows let widthsInChars = maybe 0 maximum . nonEmpty . map offset <$> transpose (headers' : rows') let hpipeBlocks sep blocks = hcat $ intersperse sep' blocks where sep' = lblock (T.length sep) $ literal sep let makeRow sep = hpipeBlocks sep . zipWith lblock widthsInChars let head' = makeRow " || " headers' rows'' <- mapM (\row -> makeRow rowSeparator <$> mapM blockListToMuse row) rows let body = vcat rows'' return $ (if topLevel then nest 1 else id) ((if noHeaders then empty else head') $$ body $$ (if null caption then empty else "|+ " <> caption' <> " +|")) $$ blankline where noHeaders = all null headers rowSeparator = if noHeaders then " | " else " | " -- | Convert list of Pandoc block elements to Muse. blockListToMuse :: PandocMonad m => [Block] -- ^ List of block elements -> Muse m (Doc Text) blockListToMuse = local (\env -> env { envTopLevel = not (envInsideBlock env) , envInsideBlock = True }) . flatBlockListToMuse -- | Convert Pandoc block element to Muse. blockToMuse :: PandocMonad m => Block -- ^ Block element -> Muse m (Doc Text) blockToMuse (Plain inlines) = inlineListToMuse' inlines blockToMuse (Para inlines) = do contents <- inlineListToMuse' inlines return $ contents <> blankline blockToMuse (LineBlock lns) = do lns' <- local (\env -> env { envOneLine = True }) $ mapM inlineListToMuse lns return $ nowrap $ vcat (map (literal "> " <>) lns') <> blankline blockToMuse (CodeBlock (_,_,_) str) = return $ "<example>" $$ literal str $$ "</example>" $$ blankline blockToMuse (RawBlock (Format format) str) = return $ blankline $$ "<literal style=\"" <> literal format <> "\">" $$ literal str $$ "</literal>" $$ blankline blockToMuse (BlockQuote blocks) = do contents <- flatBlockListToMuse blocks return $ blankline <> "<quote>" $$ nest 0 contents -- nest 0 to remove trailing blank lines $$ "</quote>" <> blankline blockToMuse (OrderedList (start, style, _) items) = do let markers = take (length items) $ orderedListMarkers (start, style, Period) contents <- zipWithM orderedListItemToMuse markers items topLevel <- asks envTopLevel return $ (if topLevel then nest 1 else id) (vcat contents) $$ blankline where orderedListItemToMuse :: PandocMonad m => Text -- marker for list item -> [Block] -- list item (list of blocks) -> Muse m (Doc Text) orderedListItemToMuse marker item = hang (T.length marker + 1) (literal marker <> space) <$> blockListToMuse item blockToMuse (BulletList items) = do contents <- mapM bulletListItemToMuse items topLevel <- asks envTopLevel return $ (if topLevel then nest 1 else id) (vcat contents) $$ blankline where bulletListItemToMuse :: PandocMonad m => [Block] -> Muse m (Doc Text) bulletListItemToMuse item = do modify $ \st -> st { stUseTags = False } hang 2 "- " <$> blockListToMuse item blockToMuse (DefinitionList items) = do contents <- mapM definitionListItemToMuse items topLevel <- asks envTopLevel return $ (if topLevel then nest 1 else id) (vcat contents) $$ blankline where definitionListItemToMuse :: PandocMonad m => ([Inline], [[Block]]) -> Muse m (Doc Text) definitionListItemToMuse (label, defs) = do modify $ \st -> st { stUseTags = False } label' <- local (\env -> env { envOneLine = True, envAfterSpace = True }) $ inlineListToMuse' label let ind = offset' label' -- using Text.DocLayout.offset results in round trip failures hang ind (nowrap label') . vcat <$> mapM descriptionToMuse defs where offset' d = maximum (0 :| map T.length (T.lines $ render Nothing d)) descriptionToMuse :: PandocMonad m => [Block] -> Muse m (Doc Text) descriptionToMuse desc = hang 4 " :: " <$> blockListToMuse desc blockToMuse (Header level (ident,_,_) inlines) = do opts <- asks envOptions topLevel <- asks envTopLevel contents <- local (\env -> env { envOneLine = True }) $ inlineListToMuse' inlines ids <- gets stIds let autoId = uniqueIdent (writerExtensions opts) inlines ids modify $ \st -> st{ stIds = Set.insert autoId ids } let attr' = if T.null ident || (isEnabled Ext_auto_identifiers opts && ident == autoId) then empty else "#" <> literal ident <> cr let header' = if topLevel then literal (T.replicate level "*") <> space else mempty return $ blankline <> attr' $$ nowrap (header' <> contents) <> blankline -- https://www.gnu.org/software/emacs-muse/manual/muse.html#Horizontal-Rules-and-Anchors blockToMuse HorizontalRule = return $ blankline $$ "----" $$ blankline blockToMuse (Table _ blkCapt specs thead tbody tfoot) = if isSimple && numcols > 1 then simpleTable caption headers rows else do opts <- asks envOptions gridTable opts blocksToDoc True (map (const AlignDefault) aligns) widths headers rows where (caption, aligns, widths, headers, rows) = toLegacyTable blkCapt specs thead tbody tfoot blocksToDoc opts blocks = local (\env -> env { envOptions = opts }) $ blockListToMuse blocks numcols = maximum (length aligns :| length widths : map length (headers:rows)) isSimple = onlySimpleTableCells (headers : rows) && all (== 0) widths blockToMuse (Div _ bs) = flatBlockListToMuse bs blockToMuse (Figure attr capt body) = do blockToMuse (figureDiv attr capt body) -- | Return Muse representation of notes collected so far. currentNotesToMuse :: PandocMonad m => Muse m (Doc Text) currentNotesToMuse = do notes <- reverse <$> gets stNotes modify $ \st -> st { stNotes = mempty } notesToMuse notes -- | Return Muse representation of notes. notesToMuse :: PandocMonad m => Notes -> Muse m (Doc Text) notesToMuse notes = do n <- gets stNoteNum modify $ \st -> st { stNoteNum = stNoteNum st + length notes } vsep <$> zipWithM noteToMuse [n ..] notes -- | Return Muse representation of a note. noteToMuse :: PandocMonad m => Int -> [Block] -> Muse m (Doc Text) noteToMuse num note = do res <- hang (T.length marker) (literal marker) <$> local (\env -> env { envInsideBlock = True , envInlineStart = True , envAfterSpace = True }) (blockListToMuse note) return $ res <> blankline where marker = "[" <> tshow num <> "] " -- | Return Muse representation of block and accumulated notes. blockToMuseWithNotes :: PandocMonad m => Block -> Muse m (Doc Text) blockToMuseWithNotes blk = do topLevel <- asks envTopLevel opts <- asks envOptions let hdrToMuse hdr@Header{} = do b <- blockToMuse hdr if topLevel && writerReferenceLocation opts == EndOfSection then do notes <- currentNotesToMuse return $ notes $+$ b else return b hdrToMuse b = blockToMuse b b <- hdrToMuse blk if topLevel && writerReferenceLocation opts == EndOfBlock then do notes <- currentNotesToMuse return $ b $+$ notes <> blankline else return b -- | Escape special characters for Muse. escapeText :: Text -> Text escapeText s = "<verbatim>" <> T.replace "</verbatim>" "<</verbatim><verbatim>/verbatim>" s <> "</verbatim>" -- | Replace newlines with spaces replaceNewlines :: Text -> Text replaceNewlines = T.map $ \c -> if c == '\n' then ' ' else c startsWithMarker :: (Char -> Bool) -> Text -> Bool startsWithMarker f t = case T.uncons $ T.dropWhile f' t of Just ('.', xs) -> T.null xs || isSpace (T.head xs) _ -> False where f' c = c == ' ' || f c containsNotes :: Char -> Char -> Text -> Bool containsNotes left right = p . T.unpack -- This ought to be a parser where p (left':xs) | left' == left = q xs || p xs | otherwise = p xs p "" = False q (x:xs) | x `elem` ("123456789"::String) = r xs || p xs | otherwise = p xs q [] = False r ('0':xs) = r xs || p xs r xs = s xs || q xs || p xs s (right':xs) | right' == right = True | otherwise = p xs s [] = False -- | Return True if string should be escaped with <verbatim> tags shouldEscapeText :: PandocMonad m => Text -> Muse m Bool shouldEscapeText s = do insideLink <- asks envInsideLinkDescription return $ T.null s || T.any (`elem` ("#*<=|" :: String)) s || "::" `T.isInfixOf` s || "~~" `T.isInfixOf` s || "[[" `T.isInfixOf` s || ">>>" `T.isInfixOf` s || ("]" `T.isInfixOf` s && insideLink) || containsNotes '[' ']' s || containsNotes '{' '}' s -- | Escape special characters for Muse if needed. conditionalEscapeText :: PandocMonad m => Text -> Muse m Text conditionalEscapeText s = do shouldEscape <- shouldEscapeText s return $ if shouldEscape then escapeText s else s -- Expand Math and Cite before normalizing inline list preprocessInlineList :: PandocMonad m => [Inline] -> m [Inline] preprocessInlineList (Math t str:xs) = (++) <$> texMathToInlines t str <*> preprocessInlineList xs -- Amusewiki does not support <cite> tag, -- and Emacs Muse citation support is limited -- (https://www.gnu.org/software/emacs-muse/manual/html_node/Citations.html#Citation) -- so just fallback to expanding inlines. preprocessInlineList (Cite _ lst:xs) = (lst ++) <$> preprocessInlineList xs preprocessInlineList (x:xs) = (x:) <$> preprocessInlineList xs preprocessInlineList [] = return [] replaceSmallCaps :: Inline -> Inline replaceSmallCaps (SmallCaps lst) = Emph lst replaceSmallCaps x = x removeKeyValues :: Inline -> Inline removeKeyValues (Code (i, cls, _) xs) = Code (i, cls, []) xs -- Do not remove attributes from Link -- Do not remove attributes, such as "width", from Image -- Do not remove attributes, such as "dir", from Span removeKeyValues x = x normalizeInlineList :: [Inline] -> [Inline] normalizeInlineList (Str "" : xs) = normalizeInlineList xs normalizeInlineList (x : Str "" : xs) = normalizeInlineList (x:xs) normalizeInlineList (Str x1 : Str x2 : xs) = normalizeInlineList $ Str (x1 <> x2) : xs normalizeInlineList (Emph x1 : Emph x2 : ils) = normalizeInlineList $ Emph (x1 <> x2) : ils normalizeInlineList (Strong x1 : Strong x2 : ils) = normalizeInlineList $ Strong (x1 <> x2) : ils normalizeInlineList (Strikeout x1 : Strikeout x2 : ils) = normalizeInlineList $ Strikeout (x1 <> x2) : ils normalizeInlineList (Superscript x1 : Superscript x2 : ils) = normalizeInlineList $ Superscript (x1 <> x2) : ils normalizeInlineList (Subscript x1 : Subscript x2 : ils) = normalizeInlineList $ Subscript (x1 <> x2) : ils normalizeInlineList (SmallCaps x1 : SmallCaps x2 : ils) = normalizeInlineList $ SmallCaps (x1 <> x2) : ils normalizeInlineList (Code _ x1 : Code _ x2 : ils) = normalizeInlineList $ Code nullAttr (x1 <> x2) : ils normalizeInlineList (RawInline f1 x1 : RawInline f2 x2 : ils) | f1 == f2 = normalizeInlineList $ RawInline f1 (x1 <> x2) : ils -- Do not join Span's during normalization normalizeInlineList (x:xs) = x : normalizeInlineList xs normalizeInlineList [] = [] fixNotes :: [Inline] -> [Inline] fixNotes [] = [] fixNotes (Space : n@Note{} : rest) = Str " " : n : fixNotes rest fixNotes (SoftBreak : n@Note{} : rest) = Str " " : n : fixNotes rest fixNotes (x:xs) = x : fixNotes xs startsWithSpace :: [Inline] -> Bool startsWithSpace (Space:_) = True startsWithSpace (SoftBreak:_) = True startsWithSpace (Str s:_) = stringStartsWithSpace s startsWithSpace _ = False endsWithSpace :: [Inline] -> Bool endsWithSpace [Space] = True endsWithSpace [SoftBreak] = True endsWithSpace [Str s] = stringEndsWithSpace s endsWithSpace (_:xs) = endsWithSpace xs endsWithSpace [] = False urlEscapeBrackets :: Text -> Text urlEscapeBrackets = T.concatMap $ \c -> case c of ']' -> "%5D" _ -> T.singleton c isHorizontalRule :: Text -> Bool isHorizontalRule s = T.length s >= 4 && T.all (== '-') s stringStartsWithSpace :: Text -> Bool stringStartsWithSpace = maybe False (isSpace . fst) . T.uncons stringEndsWithSpace :: Text -> Bool stringEndsWithSpace = maybe False (isSpace . snd) . T.unsnoc fixOrEscape :: Bool -> Inline -> Bool fixOrEscape b (Str s) = fixOrEscapeStr b s where fixOrEscapeStr sp t = case T.uncons t of Just ('-', xs) | T.null xs -> sp | otherwise -> (sp && isSpace (T.head xs)) || isHorizontalRule t Just (';', xs) | T.null xs -> not sp | otherwise -> not sp && isSpace (T.head xs) Just ('>', xs) | T.null xs -> True | otherwise -> isSpace (T.head xs) _ -> (sp && (startsWithMarker isDigit s || startsWithMarker isAsciiLower s || startsWithMarker isAsciiUpper s)) || stringStartsWithSpace s fixOrEscape _ Space = True fixOrEscape _ SoftBreak = True fixOrEscape _ _ = False inlineListStartsWithAlnum :: PandocMonad m => [Inline] -> Muse m Bool inlineListStartsWithAlnum (Str s:_) = do esc <- shouldEscapeText s return $ esc || isAlphaNum (T.head s) inlineListStartsWithAlnum _ = return False -- | Convert list of Pandoc inline elements to Muse renderInlineList :: PandocMonad m => [Inline] -> Muse m (Doc Text) renderInlineList [] = pure "" renderInlineList (x:xs) = do start <- asks envInlineStart afterSpace <- asks envAfterSpace topLevel <- asks envTopLevel insideAsterisks <- asks envInsideAsterisks nearAsterisks <- asks envNearAsterisks useTags <- gets stUseTags alnumNext <- inlineListStartsWithAlnum xs let newUseTags = useTags || alnumNext modify $ \st -> st { stUseTags = newUseTags } r <- local (\env -> env { envInlineStart = False , envInsideAsterisks = False , envNearAsterisks = nearAsterisks || (null xs && insideAsterisks) }) $ inlineToMuse x opts <- asks envOptions let isNewline = (x == SoftBreak && writerWrapText opts == WrapPreserve) || x == LineBreak lst' <- local (\env -> env { envInlineStart = isNewline , envAfterSpace = x == Space || (not topLevel && isNewline) , envNearAsterisks = False }) $ renderInlineList xs if start && fixOrEscape afterSpace x then pure (literal "<verbatim></verbatim>" <> r <> lst') else pure (r <> lst') -- | Normalize and convert list of Pandoc inline elements to Muse. inlineListToMuse :: PandocMonad m => [Inline] -> Muse m (Doc Text) inlineListToMuse lst = do lst' <- normalizeInlineList . fixNotes <$> preprocessInlineList (map (removeKeyValues . replaceSmallCaps) lst) insideAsterisks <- asks envInsideAsterisks start <- asks envInlineStart modify $ \st -> st { stUseTags = False } -- Previous character is likely a '>' or some other markup if start && null lst' then pure "<verbatim></verbatim>" else local (\env -> env { envNearAsterisks = insideAsterisks }) $ renderInlineList lst' inlineListToMuse' :: PandocMonad m => [Inline] -> Muse m (Doc Text) inlineListToMuse' lst = do topLevel <- asks envTopLevel afterSpace <- asks envAfterSpace local (\env -> env { envInlineStart = True , envAfterSpace = afterSpace || not topLevel }) $ inlineListToMuse lst emphasis :: PandocMonad m => Text -> Text -> [Inline] -> Muse m (Doc Text) emphasis b e lst = do contents <- local (\env -> env { envInsideAsterisks = inAsterisks }) $ inlineListToMuse lst modify $ \st -> st { stUseTags = useTags } return $ literal b <> contents <> literal e where inAsterisks = T.last b == '*' || T.head e == '*' useTags = T.last e /= '>' -- | Convert Pandoc inline element to Muse. inlineToMuse :: PandocMonad m => Inline -> Muse m (Doc Text) inlineToMuse (Str str) = do escapedStr <- conditionalEscapeText $ replaceNewlines str let useTags = isAlphaNum $ T.last escapedStr -- escapedStr is never empty because empty strings are escaped modify $ \st -> st { stUseTags = useTags } return $ literal escapedStr inlineToMuse (Emph [Strong lst]) = do useTags <- gets stUseTags let lst' = normalizeInlineList lst if useTags then emphasis "<em>**" "**</em>" lst' else if null lst' || startsWithSpace lst' || endsWithSpace lst' then emphasis "*<strong>" "</strong>*" lst' else emphasis "***" "***" lst' inlineToMuse (Emph lst) = do useTags <- gets stUseTags let lst' = normalizeInlineList lst if useTags || null lst' || startsWithSpace lst' || endsWithSpace lst' then emphasis "<em>" "</em>" lst' else emphasis "*" "*" lst' inlineToMuse (Strong [Emph lst]) = do useTags <- gets stUseTags let lst' = normalizeInlineList lst if useTags then emphasis "<strong>*" "*</strong>" lst' else if null lst' || startsWithSpace lst' || endsWithSpace lst' then emphasis "**<em>" "</em>**" lst' else emphasis "***" "***" lst' -- Underline is only supported in Emacs Muse mode. inlineToMuse (Underline lst) = do opts <- asks envOptions contents <- inlineListToMuse lst if isEnabled Ext_amuse opts then return $ "_" <> contents <> "_" else inlineToMuse (Emph lst) inlineToMuse (Strong lst) = do useTags <- gets stUseTags let lst' = normalizeInlineList lst if useTags || null lst' || startsWithSpace lst' || endsWithSpace lst' then emphasis "<strong>" "</strong>" lst' else emphasis "**" "**" lst' inlineToMuse (Strikeout lst) = do contents <- inlineListToMuse lst modify $ \st -> st { stUseTags = False } return $ "<del>" <> contents <> "</del>" inlineToMuse (Superscript lst) = do contents <- inlineListToMuse lst modify $ \st -> st { stUseTags = False } return $ "<sup>" <> contents <> "</sup>" inlineToMuse (Subscript lst) = do contents <- inlineListToMuse lst modify $ \st -> st { stUseTags = False } return $ "<sub>" <> contents <> "</sub>" inlineToMuse SmallCaps {} = throwError $ PandocShouldNeverHappenError "SmallCaps should be expanded before normalization" inlineToMuse (Quoted SingleQuote lst) = do contents <- inlineListToMuse lst modify $ \st -> st { stUseTags = False } return $ "‘" <> contents <> "’" inlineToMuse (Quoted DoubleQuote lst) = do contents <- inlineListToMuse lst modify $ \st -> st { stUseTags = False } return $ "“" <> contents <> "”" inlineToMuse Cite {} = throwError $ PandocShouldNeverHappenError "Citations should be expanded before normalization" inlineToMuse (Code _ str) = do useTags <- gets stUseTags modify $ \st -> st { stUseTags = False } return $ if useTags || T.null str || T.any (== '=') str || isSpace (T.head str) || isSpace (T.last str) then "<code>" <> literal (T.replace "</code>" "<</code><code>/code>" str) <> "</code>" else "=" <> literal str <> "=" inlineToMuse Math{} = throwError $ PandocShouldNeverHappenError "Math should be expanded before normalization" inlineToMuse (RawInline (Format f) str) = do modify $ \st -> st { stUseTags = False } return $ "<literal style=\"" <> literal f <> "\">" <> literal str <> "</literal>" inlineToMuse LineBreak = do oneline <- asks envOneLine modify $ \st -> st { stUseTags = False } return $ if oneline then "<br>" else "<br>" <> cr inlineToMuse Space = do modify $ \st -> st { stUseTags = False } return space inlineToMuse SoftBreak = do oneline <- asks envOneLine wrapText <- asks $ writerWrapText . envOptions modify $ \st -> st { stUseTags = False } return $ if not oneline && wrapText == WrapPreserve then cr else space inlineToMuse (Link _ txt (src, _)) = case txt of [Str x] | escapeURI x == src -> do modify $ \st -> st { stUseTags = False } return $ "[[" <> literal (escapeLink x) <> "]]" _ -> do contents <- local (\env -> env { envInsideLinkDescription = True }) $ inlineListToMuse txt modify $ \st -> st { stUseTags = False } return $ "[[" <> literal (escapeLink src) <> "][" <> contents <> "]]" where escapeLink lnk = if isImageUrl lnk then "URL:" <> urlEscapeBrackets lnk else urlEscapeBrackets lnk -- Taken from muse-image-regexp defined in Emacs Muse file lisp/muse-regexps.el imageExtensions = [".eps", ".gif", ".jpg", ".jpeg", ".pbm", ".png", ".tiff", ".xbm", ".xpm"] isImageUrl = (`elem` imageExtensions) . takeExtension . T.unpack inlineToMuse (Image attr alt (source,T.stripPrefix "fig:" -> Just title)) = inlineToMuse (Image attr alt (source,title)) inlineToMuse (Image attr@(_, classes, _) inlines (source, title)) = do opts <- asks envOptions alt <- local (\env -> env { envInsideLinkDescription = True }) $ inlineListToMuse inlines title' <- if T.null title then if null inlines then return "" else return $ "[" <> alt <> "]" else do s <- local (\env -> env { envInsideLinkDescription = True }) $ conditionalEscapeText title return $ "[" <> literal s <> "]" let width = case dimension Width attr of Just (Percent x) | isEnabled Ext_amuse opts -> " " <> tshow (round x :: Integer) _ -> "" let leftalign = if "align-left" `elem` classes then " l" else "" let rightalign = if "align-right" `elem` classes then " r" else "" modify $ \st -> st { stUseTags = False } return $ "[[" <> literal (urlEscapeBrackets source <> width <> leftalign <> rightalign) <> "]" <> title' <> "]" inlineToMuse (Note contents) = do -- add to notes in state notes <- gets stNotes modify $ \st -> st { stNotes = contents:notes , stUseTags = False } n <- gets stNoteNum let ref = tshow $ n + length notes return $ "[" <> literal ref <> "]" inlineToMuse (Span (anchor,names,kvs) inlines) = do contents <- inlineListToMuse inlines let (contents', hasDir) = case lookup "dir" kvs of Just "rtl" -> ("<<<" <> contents <> ">>>", True) Just "ltr" -> (">>>" <> contents <> "<<<", True) _ -> (contents, False) let anchorDoc = if T.null anchor then mempty else literal ("#" <> anchor) <> space modify $ \st -> st { stUseTags = False } return $ anchorDoc <> (if null inlines && not (T.null anchor) then mempty else (if null names then (if hasDir then contents' else "<class>" <> contents' <> "</class>") else "<class name=\"" <> literal (head names) <> "\">" <> contents' <> "</class>")) ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/Native.hs������������������������������������������������������0000644�0000000�0000000�00000002042�07346545000�017311� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{- | Module : Text.Pandoc.Writers.Native Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable Conversion of a 'Pandoc' document to a string representation. -} module Text.Pandoc.Writers.Native ( writeNative ) where import Data.Text (Text) import qualified Data.Text as T import Text.Pandoc.Class.PandocMonad (PandocMonad) import Text.Pandoc.Definition import Text.Pandoc.Options (WriterOptions (..)) import Text.Show.Pretty (ppDoc) import Text.PrettyPrint (renderStyle, Style(..), style, char) -- | Prettyprint Pandoc document. writeNative :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeNative opts (Pandoc meta blocks) = do let style' = style{ lineLength = writerColumns opts, ribbonsPerLine = 1.2 } return $ T.pack $ renderStyle style' $ case writerTemplate opts of Just _ -> ppDoc (Pandoc meta blocks) <> char '\n' Nothing -> ppDoc blocks ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/ODT.hs���������������������������������������������������������0000644�0000000�0000000�00000035231�07346545000�016517� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Writers.ODT Copyright : Copyright (C) 2008-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable Conversion of 'Pandoc' documents to ODT. -} module Text.Pandoc.Writers.ODT ( writeODT ) where import Codec.Archive.Zip import Control.Monad.Except (catchError, throwError) import Control.Monad.State.Strict import qualified Data.ByteString.Lazy as B import Data.Maybe (fromMaybe) import Data.Generics (everywhere', mkT) import Data.List (isPrefixOf) import qualified Data.Map as Map import qualified Data.Text as T import qualified Data.Text.Lazy as TL import Data.Time import System.FilePath (takeDirectory, takeExtension, (<.>)) import Text.Collate.Lang (Lang (..), renderLang) import Text.Pandoc.Class.PandocMonad (PandocMonad, report, toLang) import qualified Text.Pandoc.Class.PandocMonad as P import Text.Pandoc.Data (readDataFile) import Text.Pandoc.Definition import Text.Pandoc.Error (PandocError(..)) import Text.Pandoc.ImageSize import Text.Pandoc.Logging import Text.Pandoc.MIME (extensionFromMimeType, getMimeType) import Text.Pandoc.Options (WrapOption (..), WriterOptions (..)) import Text.DocLayout import Text.Pandoc.Shared (stringify, tshow) import Text.Pandoc.Version (pandocVersionText) import Text.Pandoc.Writers.Shared (lookupMetaString, lookupMetaBlocks, fixDisplayMath, getLang, ensureValidXmlIdentifiers) import Text.Pandoc.UTF8 (fromStringLazy, fromTextLazy, toTextLazy) import Text.Pandoc.Walk import Text.Pandoc.Writers.OpenDocument (writeOpenDocument) import Text.Pandoc.XML import Text.Pandoc.XML.Light import Text.TeXMath import qualified Text.XML.Light as XL import Network.URI (parseRelativeReference, URI(uriPath)) newtype ODTState = ODTState { stEntries :: [Entry] } type O m = StateT ODTState m -- | Produce an ODT file from a Pandoc document. writeODT :: PandocMonad m => WriterOptions -- ^ Writer options -> Pandoc -- ^ Document to convert -> m B.ByteString writeODT opts doc = let initState = ODTState{ stEntries = [] } doc' = fixInternalLinks . ensureValidXmlIdentifiers $ doc in evalStateT (pandocToODT opts doc') initState -- | ODT internal links are evaluated relative to an imaginary folder -- structure that mirrors the zip structure. The result is that relative -- links in the document need to start with `..`. See #3524. fixInternalLinks :: Pandoc -> Pandoc fixInternalLinks = walk go where go (Link attr ils (src,tit)) = Link attr ils (fixRel src,tit) go x = x fixRel uri = case parseRelativeReference (T.unpack uri) of Just u | not (null (uriPath u)) -> tshow $ u{ uriPath = "../" <> uriPath u } _ -> uri -- | Produce an ODT file from a Pandoc document. pandocToODT :: PandocMonad m => WriterOptions -- ^ Writer options -> Pandoc -- ^ Document to convert -> O m B.ByteString pandocToODT opts doc@(Pandoc meta _) = do let title = docTitle meta let authors = docAuthors meta utctime <- P.getTimestamp lang <- toLang (getLang opts meta) refArchive <- case writerReferenceDoc opts of Just f -> lift $ toArchive . B.fromStrict . fst <$> (P.fetchItem (T.pack f)) Nothing -> lift $ toArchive . B.fromStrict <$> readDataFile "reference.odt" -- handle formulas and pictures -- picEntriesRef <- P.newIORef ([] :: [Entry]) doc' <- walkM (transformPicMath opts) $ walk fixDisplayMath doc newContents <- lift $ writeOpenDocument opts{writerWrapText = WrapNone} doc' epochtime <- floor `fmap` lift P.getPOSIXTime let contentEntry = toEntry "content.xml" epochtime $ fromTextLazy $ TL.fromStrict newContents picEntries <- gets stEntries let archive = foldr addEntryToArchive refArchive $ contentEntry : picEntries -- construct META-INF/manifest.xml based on archive let toFileEntry fp = case getMimeType fp of Nothing -> empty Just m -> selfClosingTag "manifest:file-entry" [("manifest:media-type", m) ,("manifest:full-path", T.pack fp) ] let files = [ ent | ent <- filesInArchive archive, not ("META-INF" `isPrefixOf` ent) ] let formulas = [ takeDirectory ent ++ "/" | ent <- filesInArchive archive, "Formula-" `isPrefixOf` ent, takeExtension ent == ".xml" ] let manifestEntry = toEntry "META-INF/manifest.xml" epochtime $ fromStringLazy $ render Nothing $ text "<?xml version=\"1.0\" encoding=\"utf-8\"?>" $$ inTags True "manifest:manifest" [("xmlns:manifest","urn:oasis:names:tc:opendocument:xmlns:manifest:1.0") ,("manifest:version","1.3")] ( selfClosingTag "manifest:file-entry" [("manifest:media-type","application/vnd.oasis.opendocument.text") ,("manifest:full-path","/") ,("manifest:version", "1.3")] $$ vcat ( map toFileEntry files ) $$ vcat ( map toFileEntry formulas ) ) let archive' = addEntryToArchive manifestEntry archive -- create meta.xml let userDefinedMetaFields = [k | k <- Map.keys (unMeta meta) , k `notElem` ["title", "lang", "author" , "description", "subject", "keywords"]] let escapedText = text . T.unpack . escapeStringForXML let keywords = case lookupMeta "keywords" meta of Just (MetaList xs) -> map stringify xs _ -> [] let userDefinedMeta = map (\k -> inTags False "meta:user-defined" [ ("meta:name", escapeStringForXML k) ,("meta:value-type", "string") ] (escapedText $ lookupMetaString k meta)) userDefinedMetaFields let metaTag metafield = inTagsSimple metafield . escapedText let metaEntry = toEntry "meta.xml" epochtime $ fromStringLazy $ render Nothing $ text "<?xml version=\"1.0\" encoding=\"utf-8\"?>" $$ inTags True "office:document-meta" [("xmlns:office","urn:oasis:names:tc:opendocument:xmlns:office:1.0") ,("xmlns:xlink","http://www.w3.org/1999/xlink") ,("xmlns:dc","http://purl.org/dc/elements/1.1/") ,("xmlns:meta","urn:oasis:names:tc:opendocument:xmlns:meta:1.0") ,("xmlns:ooo","http://openoffice.org/2004/office") ,("xmlns:grddl","http://www.w3.org/2003/g/data-view#") ,("office:version","1.3")] ( inTags True "office:meta" [] ( metaTag "meta:generator" ("Pandoc/" <> pandocVersionText) $$ metaTag "dc:title" (stringify title) $$ metaTag "dc:description" (T.intercalate "\n" (map stringify $ lookupMetaBlocks "description" meta)) $$ metaTag "dc:subject" (lookupMetaString "subject" meta) $$ metaTag "meta:keyword" (T.intercalate ", " keywords) $$ case lang of Just l -> metaTag "dc:language" (renderLang l) Nothing -> empty $$ (\d a -> metaTag "meta:initial-creator" a $$ metaTag "dc:creator" a $$ metaTag "meta:creation-date" d $$ metaTag "dc:date" d ) (T.pack $ formatTime defaultTimeLocale "%FT%XZ" utctime) (T.intercalate "; " (map stringify authors)) $$ vcat userDefinedMeta ) ) -- make sure mimetype is first let mimetypeEntry = toEntry "mimetype" epochtime $ fromStringLazy "application/vnd.oasis.opendocument.text" archive'' <- updateStyleWithLang lang $ addEntryToArchive mimetypeEntry $ addEntryToArchive metaEntry archive' return $ fromArchive archive'' updateStyleWithLang :: PandocMonad m => Maybe Lang -> Archive -> O m Archive updateStyleWithLang Nothing arch = return arch updateStyleWithLang (Just lang) arch = do epochtime <- floor `fmap` lift P.getPOSIXTime entries <- mapM (\e -> if eRelativePath e == "styles.xml" then case parseXMLElement (toTextLazy (fromEntry e)) of Left msg -> throwError $ PandocXMLError "styles.xml" msg Right d -> return $ toEntry "styles.xml" epochtime ( fromTextLazy . TL.fromStrict . ppTopElement . addLang lang $ d ) else return e) (zEntries arch) return arch{ zEntries = entries } -- TODO FIXME avoid this generic traversal! addLang :: Lang -> Element -> Element addLang lang = everywhere' (mkT updateLangAttr) where updateLangAttr (Attr n@(QName "language" _ (Just "fo")) _) = Attr n (langLanguage lang) updateLangAttr (Attr n@(QName "country" _ (Just "fo")) _) = Attr n (fromMaybe "" $ langRegion lang) updateLangAttr x = x -- | transform both Image and Math elements transformPicMath :: PandocMonad m => WriterOptions ->Inline -> O m Inline transformPicMath opts (Image attr@(id', cls, _) lab (src,t)) = catchError (do (img, mbMimeType) <- P.fetchItem src (ptX, ptY) <- case imageSize opts img of Right s -> return $ sizeInPoints s Left msg -> do report $ CouldNotDetermineImageSize src msg return (100, 100) let dims = case (getDim Width, getDim Height) of (Just w, Just h) -> [("width", tshow w), ("height", tshow h)] (Just w@(Percent _), Nothing) -> [("rel-width", tshow w),("rel-height", "scale"),("width", tshow ptX <> "pt"),("height", tshow ptY <> "pt")] (Nothing, Just h@(Percent _)) -> [("rel-width", "scale"),("rel-height", tshow h),("width", tshow ptX <> "pt"),("height", tshow ptY <> "pt")] (Just w@(Inch i), Nothing) -> [("width", tshow w), ("height", tshow (i / ratio) <> "in")] (Nothing, Just h@(Inch i)) -> [("width", tshow (i * ratio) <> "in"), ("height", tshow h)] _ -> [("width", tshow ptX <> "pt"), ("height", tshow ptY <> "pt")] where ratio = ptX / ptY getDim dir = case dimension dir attr of Just (Percent i) -> Just $ Percent i Just dim -> Just $ Inch $ inInch opts dim Nothing -> Nothing let newattr = (id', cls, dims) entries <- gets stEntries let extension = maybe (takeExtension $ takeWhile (/='?') $ T.unpack src) T.unpack (mbMimeType >>= extensionFromMimeType) let newsrc = "Pictures/" ++ show (length entries) <.> extension let toLazy = B.fromChunks . (:[]) epochtime <- floor `fmap` lift P.getPOSIXTime let entry = toEntry newsrc epochtime $ toLazy img modify $ \st -> st{ stEntries = entry : entries } return $ Image newattr lab (T.pack newsrc, t)) (\e -> do report $ CouldNotFetchResource src $ T.pack (show e) return $ Emph lab) transformPicMath _ (Math t math) = do entries <- gets stEntries let dt = if t == InlineMath then DisplayInline else DisplayBlock case writeMathML dt <$> readTeX math of Left _ -> return $ Math t math Right r -> do let conf = XL.useShortEmptyTags (const False) XL.defaultConfigPP let mathml = XL.ppcTopElement conf r epochtime <- floor `fmap` lift P.getPOSIXTime let dirname = "Formula-" ++ show (length entries) ++ "/" let fname = dirname ++ "content.xml" let entry = toEntry fname epochtime (fromStringLazy mathml) let fname' = dirname ++ "settings.xml" let entry' = toEntry fname' epochtime $ documentSettings (t == InlineMath) modify $ \st -> st{ stEntries = entry' : (entry : entries) } return $ RawInline (Format "opendocument") $ render Nothing $ inTags False "draw:frame" (if t == DisplayMath then [("draw:style-name","fr2") -- `draw:frame` does not support either -- `style:vertical-pos` or `style:vertical-rel`, -- therefore those attributes must go into the -- `style:style` element ,("text:anchor-type","paragraph")] else [("draw:style-name","fr1") ,("text:anchor-type","as-char")]) $ selfClosingTag "draw:object" [("xlink:href", T.pack dirname) , ("xlink:type", "simple") , ("xlink:show", "embed") , ("xlink:actuate", "onLoad")] transformPicMath _ x = return x documentSettings :: Bool -> B.ByteString documentSettings isTextMode = fromStringLazy $ render Nothing $ text "<?xml version=\"1.0\" encoding=\"utf-8\"?>" $$ inTags True "office:document-settings" [("xmlns:office","urn:oasis:names:tc:opendocument:xmlns:office:1.0") ,("xmlns:xlink","http://www.w3.org/1999/xlink") ,("xmlns:config","urn:oasis:names:tc:opendocument:xmlns:config:1.0") ,("xmlns:ooo","http://openoffice.org/2004/office") ,("office:version","1.3")] ( inTagsSimple "office:settings" $ inTags False "config:config-item-set" [("config:name", "ooo:configuration-settings")] $ inTags False "config:config-item" [("config:name", "IsTextMode") ,("config:type", "boolean")] $ text $ if isTextMode then "true" else "false") �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/OOXML.hs�������������������������������������������������������0000644�0000000�0000000�00000007106�07346545000�016767� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Writers.OOXML Copyright : Copyright (C) 2012-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable Functions common to OOXML writers (Docx and Powerpoint) -} module Text.Pandoc.Writers.OOXML ( mknode , mktnode , nodename , toLazy , renderXml , parseXml , elemToNameSpaces , elemName , isElem , NameSpaces , fitToPage ) where import Codec.Archive.Zip import Control.Monad (mplus) import Control.Monad.Except (throwError) import Text.Pandoc.Error import qualified Data.ByteString as B import qualified Data.ByteString.Lazy as BL import Data.Maybe (mapMaybe) import qualified Data.Text as T import Data.Text (Text) import Text.Pandoc.Class.PandocMonad (PandocMonad) import qualified Text.Pandoc.UTF8 as UTF8 import Text.Pandoc.XML.Light mknode :: Node t => Text -> [(Text,Text)] -> t -> Element mknode s attrs = add_attrs (map (\(k,v) -> Attr (nodename k) v) attrs) . node (nodename s) mktnode :: Text -> [(Text,Text)] -> T.Text -> Element mktnode s attrs = mknode s attrs nodename :: Text -> QName nodename s = QName{ qName = name, qURI = Nothing, qPrefix = prefix } where (name, prefix) = case T.break (==':') s of (xs,ys) -> case T.uncons ys of Nothing -> (xs, Nothing) Just (_,zs) -> (zs, Just xs) toLazy :: B.ByteString -> BL.ByteString toLazy = BL.fromChunks . (:[]) renderXml :: Element -> BL.ByteString renderXml elt = BL.fromStrict (UTF8.fromText (showTopElement elt)) parseXml :: PandocMonad m => Archive -> Archive -> String -> m Element parseXml refArchive distArchive relpath = case findEntryByPath relpath refArchive `mplus` findEntryByPath relpath distArchive of Nothing -> throwError $ PandocSomeError $ T.pack relpath <> " missing in reference file" Just e -> case parseXMLElement . UTF8.toTextLazy . fromEntry $ e of Left msg -> throwError $ PandocXMLError (T.pack relpath) msg Right d -> return d -- Copied from Util attrToNSPair :: Attr -> Maybe (Text, Text) attrToNSPair (Attr (QName s _ (Just "xmlns")) val) = Just (s, val) attrToNSPair _ = Nothing elemToNameSpaces :: Element -> NameSpaces elemToNameSpaces = mapMaybe attrToNSPair . elAttribs elemName :: NameSpaces -> Text -> Text -> QName elemName ns prefix name = QName name (lookup prefix ns) (if T.null prefix then Nothing else Just prefix) isElem :: NameSpaces -> Text -> Text -> Element -> Bool isElem ns prefix name element = let ns' = ns ++ elemToNameSpaces element in qName (elName element) == name && qURI (elName element) == lookup prefix ns' type NameSpaces = [(Text, Text)] -- | Scales the image to fit the page -- sizes are passed in emu fitToPage :: (Double, Double) -> Integer -> (Integer, Integer) fitToPage (x, y) pageWidth -- Fixes width to the page width and scales the height | x > fromIntegral pageWidth = (pageWidth, floor $ (fromIntegral pageWidth / x) * y) | otherwise = (floor x, floor y) ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/OPML.hs��������������������������������������������������������0000644�0000000�0000000�00000005702�07346545000�016640� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE CPP #-} {- | Module : Text.Pandoc.Writers.OPML Copyright : Copyright (C) 2013-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable Conversion of 'Pandoc' documents to OPML XML. -} module Text.Pandoc.Writers.OPML ( writeOPML) where import Data.Text (Text) import qualified Data.Text as T import qualified Text.Pandoc.Builder as B import Text.Pandoc.Class.PandocMonad (PandocMonad) import Data.Time import Text.Pandoc.Definition import Text.Pandoc.Options import Text.DocLayout import Text.Pandoc.Shared import Text.Pandoc.Templates (renderTemplate) import Text.Pandoc.Writers.HTML (writeHtml5String) import Text.Pandoc.Writers.Markdown (writeMarkdown) import Text.Pandoc.Writers.Shared import Text.Pandoc.XML -- | Convert Pandoc document to string in OPML format. writeOPML :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeOPML opts (Pandoc meta blocks) = do let colwidth = if writerWrapText opts == WrapAuto then Just $ writerColumns opts else Nothing meta' = B.setMeta "date" (B.str $ convertDate $ docDate meta) meta metadata <- metaToContext opts (fmap literal . writeMarkdown def . Pandoc nullMeta) (\ils -> literal . T.stripEnd <$> writeMarkdown def (Pandoc nullMeta [Plain ils])) meta' let blocks' = makeSections False (Just 1) blocks main <- render colwidth . vcat <$> mapM (blockToOPML opts) blocks' let context = defField "body" main metadata return $ (if writerPreferAscii opts then toEntities else id) $ case writerTemplate opts of Nothing -> main Just tpl -> render colwidth $ renderTemplate tpl context writeHtmlInlines :: PandocMonad m => [Inline] -> m Text writeHtmlInlines ils = T.strip <$> writeHtml5String def (Pandoc nullMeta [Plain ils]) -- date format: RFC 822: Thu, 14 Jul 2005 23:41:05 GMT showDateTimeRFC822 :: UTCTime -> Text showDateTimeRFC822 = T.pack . formatTime defaultTimeLocale "%a, %d %b %Y %X %Z" convertDate :: [Inline] -> Text convertDate ils = maybe "" showDateTimeRFC822 $ parseTimeM True defaultTimeLocale "%F" . T.unpack =<< normalizeDate (stringify ils) -- | Convert a Block to OPML. blockToOPML :: PandocMonad m => WriterOptions -> Block -> m (Doc Text) blockToOPML opts (Div (_,"section":_,_) (Header _ _ title : xs)) = do let isSect (Div (_,"section":_,_) (Header{}:_)) = True isSect _ = False let (blocks, rest) = break isSect xs htmlIls <- writeHtmlInlines title md <- if null blocks then return mempty else writeMarkdown def $ Pandoc nullMeta blocks let attrs = ("text", htmlIls) : [("_note", T.stripEnd md) | not (null blocks)] rest' <- vcat <$> mapM (blockToOPML opts) rest return $ inTags True "outline" attrs rest' blockToOPML _ _ = return empty ��������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/OpenDocument.hs������������������������������������������������0000644�0000000�0000000�00000121050�07346545000�020464� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE PatternGuards #-} {- | Module : Text.Pandoc.Writers.OpenDocument Copyright : Copyright (C) 2008-2020 Andrea Rossato and John MacFarlane License : GNU GPL, version 2 or above Maintainer : Andrea Rossato <andrea.rossato@ing.unitn.it> Stability : alpha Portability : portable Conversion of 'Pandoc' documents to OpenDocument XML. -} module Text.Pandoc.Writers.OpenDocument ( writeOpenDocument ) where import Control.Arrow ((***), (>>>)) import Control.Monad (unless, liftM) import Control.Monad.State.Strict ( StateT(..), modify, gets, lift ) import Data.Char (chr) import Data.Foldable (find) import Data.List (sortOn, sortBy, foldl') import qualified Data.Map as Map import Data.Maybe (isNothing) import Data.Ord (comparing) import qualified Data.Set as Set import Data.Text (Text) import qualified Data.Text as T import Text.Collate.Lang (Lang (..), parseLang) import Text.Pandoc.Class.PandocMonad (PandocMonad, report) import Text.Pandoc.Translations (translateTerm) import Text.Pandoc.Definition import qualified Text.Pandoc.Builder as B import Text.Pandoc.Logging import Text.Pandoc.Options import Text.DocLayout import Text.Pandoc.Shared (linesToPara, tshow, blocksToInlines) import Text.Pandoc.Templates (renderTemplate) import qualified Text.Pandoc.Translations as Term (Term(Figure, Table)) import Text.Pandoc.Walk import Text.Pandoc.Writers.Math import Text.Pandoc.Writers.Shared import qualified Text.Pandoc.Writers.AnnotatedTable as Ann import Text.Pandoc.XML import Text.Printf (printf) import Text.Pandoc.Highlighting (highlight) import Skylighting -- | Auxiliary function to convert Plain block to Para. plainToPara :: Block -> Block plainToPara (Plain x) = Para x plainToPara x = x -- -- OpenDocument writer -- type OD m = StateT WriterState m data ReferenceType = HeaderRef | TableRef | FigureRef data WriterState = WriterState { stNotes :: [Doc Text] , stTableStyles :: [Doc Text] , stParaStyles :: [Doc Text] , stListStyles :: [(Int, [Doc Text])] , stTextStyles :: Map.Map (Set.Set TextStyle) (Text, Doc Text) , stTextStyleAttr :: Set.Set TextStyle , stIndentPara :: Int , stInDefinition :: Bool , stTight :: Bool , stFirstPara :: Bool , stImageId :: Int , stTableCaptionId :: Int , stImageCaptionId :: Int , stIdentTypes :: [(Text,ReferenceType)] } defaultWriterState :: WriterState defaultWriterState = WriterState { stNotes = [] , stTableStyles = [] , stParaStyles = [] , stListStyles = [] , stTextStyles = Map.empty , stTextStyleAttr = Set.empty , stIndentPara = 0 , stInDefinition = False , stTight = False , stFirstPara = False , stImageId = 1 , stTableCaptionId = 1 , stImageCaptionId = 1 , stIdentTypes = [] } when :: Bool -> Doc Text -> Doc Text when p a = if p then a else empty addTableStyle :: PandocMonad m => Doc Text -> OD m () addTableStyle i = modify $ \s -> s { stTableStyles = i : stTableStyles s } addNote :: PandocMonad m => Doc Text -> OD m () addNote i = modify $ \s -> s { stNotes = i : stNotes s } addParaStyle :: PandocMonad m => Doc Text -> OD m () addParaStyle i = modify $ \s -> s { stParaStyles = i : stParaStyles s } addTextStyle :: PandocMonad m => Set.Set TextStyle -> (Text, Doc Text) -> OD m () addTextStyle attrs i = modify $ \s -> s { stTextStyles = Map.insert attrs i (stTextStyles s) } addTextStyleAttr :: PandocMonad m => TextStyle -> OD m () addTextStyleAttr t = modify $ \s -> s { stTextStyleAttr = Set.insert t (stTextStyleAttr s) } increaseIndent :: PandocMonad m => OD m () increaseIndent = modify $ \s -> s { stIndentPara = 1 + stIndentPara s } resetIndent :: PandocMonad m => OD m () resetIndent = modify $ \s -> s { stIndentPara = stIndentPara s - 1 } inTightList :: PandocMonad m => OD m a -> OD m a inTightList f = modify (\s -> s { stTight = True }) >> f >>= \r -> modify (\s -> s { stTight = False }) >> return r setInDefinitionList :: PandocMonad m => Bool -> OD m () setInDefinitionList b = modify $ \s -> s { stInDefinition = b } setFirstPara :: PandocMonad m => OD m () setFirstPara = modify $ \s -> s { stFirstPara = True } inParagraphTags :: PandocMonad m => Doc Text -> OD m (Doc Text) inParagraphTags d = do b <- gets stFirstPara a <- if b then do modify $ \st -> st { stFirstPara = False } return [("text:style-name", "First_20_paragraph")] else return [("text:style-name", "Text_20_body")] return $ inTags False "text:p" a d inParagraphTagsWithStyle :: Text -> Doc Text -> Doc Text inParagraphTagsWithStyle sty = inTags False "text:p" [("text:style-name", sty)] inSpanTags :: Text -> Doc Text -> Doc Text inSpanTags s = inTags False "text:span" [("text:style-name",s)] withTextStyle :: PandocMonad m => TextStyle -> OD m a -> OD m a withTextStyle s f = do oldTextStyleAttr <- gets stTextStyleAttr addTextStyleAttr s res <- f modify $ \st -> st{ stTextStyleAttr = oldTextStyleAttr } return res inTextStyle :: PandocMonad m => Doc Text -> OD m (Doc Text) inTextStyle d = do at <- gets stTextStyleAttr if Set.null at then return d else do styles <- gets stTextStyles case Map.lookup at styles of Just (styleName, _) -> return $ inTags False "text:span" [("text:style-name",styleName)] d Nothing -> do let styleName = "T" <> tshow (Map.size styles + 1) addTextStyle at (styleName, inTags False "style:style" [("style:name", styleName) ,("style:family", "text")] $ selfClosingTag "style:text-properties" (sortOn fst . Map.toList $ foldl' textStyleAttr mempty (Set.toList at))) return $ inTags False "text:span" [("text:style-name",styleName)] d formulaStyles :: [Doc Text] formulaStyles = [formulaStyle InlineMath, formulaStyle DisplayMath] formulaStyle :: MathType -> Doc Text formulaStyle mt = inTags False "style:style" [("style:name", if mt == InlineMath then "fr1" else "fr2") ,("style:family", "graphic") ,("style:parent-style-name", "Formula")] $ selfClosingTag "style:graphic-properties" $ if mt == InlineMath then [("style:vertical-pos", "middle") ,("style:vertical-rel", "text")] else [("style:vertical-pos", "middle") ,("style:vertical-rel", "text") ,("style:horizontal-pos", "center") ,("style:horizontal-rel", "paragraph-content") ,("style:wrap", "none")] inBookmarkTags :: Text -> Doc Text -> Doc Text inBookmarkTags ident d = selfClosingTag "text:bookmark-start" [ ("text:name", ident) ] <> d <> selfClosingTag "text:bookmark-end" [ ("text:name", ident) ] selfClosingBookmark :: Text -> Doc Text selfClosingBookmark ident = selfClosingTag "text:bookmark" [("text:name", ident)] inHeaderTags :: PandocMonad m => Int -> Text -> Doc Text -> OD m (Doc Text) inHeaderTags i ident d = return $ inTags False "text:h" [ ("text:style-name", "Heading_20_" <> tshow i) , ("text:outline-level", tshow i)] $ if T.null ident then d else inBookmarkTags ident d inQuotes :: QuoteType -> Doc Text -> Doc Text inQuotes SingleQuote s = char '\8216' <> s <> char '\8217' inQuotes DoubleQuote s = char '\8220' <> s <> char '\8221' handleSpaces :: Text -> Doc Text handleSpaces s = case T.uncons s of Just (' ', _) -> genTag s Just ('\t',x) -> selfClosingTag "text:tab" [] <> rm x _ -> rm s where genTag = T.span (==' ') >>> tag . T.length *** rm >>> uncurry (<>) tag n = when (n /= 0) $ selfClosingTag "text:s" [("text:c", tshow n)] rm t = case T.uncons t of Just ( ' ',xs) -> char ' ' <> genTag xs Just ('\t',xs) -> selfClosingTag "text:tab" [] <> genTag xs Just ( x,xs) -> char x <> rm xs Nothing -> empty -- | Convert Pandoc document to string in OpenDocument format. writeOpenDocument :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeOpenDocument opts (Pandoc meta blocks) = do setupTranslations meta let colwidth = if writerWrapText opts == WrapAuto then Just $ writerColumns opts else Nothing let meta' = case lookupMetaBlocks "abstract" meta of [] -> meta xs -> B.setMeta "abstract" (B.divWith ("",[],[("custom-style","Abstract")]) (B.fromList xs)) meta ((body, metadata),s) <- flip runStateT defaultWriterState $ do let collectBlockIdent (Header _ (ident,_,_) _) = [(ident,HeaderRef)] collectBlockIdent (Figure (ident,_,_) _ _ ) = [(ident,FigureRef)] collectBlockIdent (Table (ident,_,_) _ _ _ _ _) = [(ident,TableRef)] collectBlockIdent _ = [] modify $ \s -> s{ stIdentTypes = query collectBlockIdent blocks } m <- metaToContext opts (inlinesToOpenDocument opts . blocksToInlines) (fmap chomp . inlinesToOpenDocument opts) meta' b <- blocksToOpenDocument opts blocks return (b, m) let styles = stTableStyles s ++ stParaStyles s ++ formulaStyles ++ map snd (sortBy (flip (comparing fst)) ( Map.elems (stTextStyles s))) listStyle (n,l) = inTags True "text:list-style" [("style:name", "L" <> tshow n)] (vcat l) let listStyles = map listStyle (stListStyles s) let automaticStyles = vcat $ reverse $ styles ++ listStyles let context = defField "body" body . defField "toc" (writerTableOfContents opts) . defField "toc-depth" (tshow $ writerTOCDepth opts) . defField "automatic-styles" automaticStyles $ metadata return $ render colwidth $ case writerTemplate opts of Nothing -> body Just tpl -> renderTemplate tpl context withParagraphStyle :: PandocMonad m => WriterOptions -> Text -> [Block] -> OD m (Doc Text) withParagraphStyle o s (b:bs) | Para l <- b = go =<< inParagraphTagsWithStyle s <$> inlinesToOpenDocument o l | otherwise = go =<< blockToOpenDocument o b where go i = (<>) i <$> withParagraphStyle o s bs withParagraphStyle _ _ [] = return empty inPreformattedTags :: PandocMonad m => Text -> OD m (Doc Text) inPreformattedTags s = do n <- paraStyle [("style:parent-style-name","Preformatted_20_Text")] return . inParagraphTagsWithStyle ("P" <> tshow n) . handleSpaces $ s orderedListToOpenDocument :: PandocMonad m => WriterOptions -> Int -> [[Block]] -> OD m (Doc Text) orderedListToOpenDocument o pn bs = vcat . map (inTagsIndented "text:list-item") <$> mapM (orderedItemToOpenDocument o pn . map plainToPara) bs orderedItemToOpenDocument :: PandocMonad m => WriterOptions -> Int -> [Block] -> OD m (Doc Text) orderedItemToOpenDocument o n bs = vcat <$> mapM go bs where go (OrderedList a l) = newLevel a l go (Para l) = inParagraphTagsWithStyle ("P" <> tshow n) <$> inlinesToOpenDocument o l go b = blockToOpenDocument o b newLevel a l = do nn <- length <$> gets stParaStyles ls <- head <$> gets stListStyles modify $ \s -> s { stListStyles = orderedListLevelStyle a ls : drop 1 (stListStyles s) } inTagsIndented "text:list" <$> orderedListToOpenDocument o nn l isTightList :: [[Block]] -> Bool isTightList [] = False isTightList (b:_) | Plain {} : _ <- b = True | otherwise = False newOrderedListStyle :: PandocMonad m => Bool -> ListAttributes -> OD m (Int,Int) newOrderedListStyle b a = do ln <- (+) 1 . length <$> gets stListStyles let nbs = orderedListLevelStyle a (ln, []) pn <- if b then inTightList (paraListStyle ln) else paraListStyle ln modify $ \s -> s { stListStyles = nbs : stListStyles s } return (ln,pn) bulletListToOpenDocument :: PandocMonad m => WriterOptions -> [[Block]] -> OD m (Doc Text) bulletListToOpenDocument o b = do ln <- (+) 1 . length <$> gets stListStyles (pn,ns) <- if isTightList b then inTightList (bulletListStyle ln) else bulletListStyle ln modify $ \s -> s { stListStyles = ns : stListStyles s } is <- listItemsToOpenDocument ("P" <> tshow pn) o b return $ inTags True "text:list" [("text:style-name", "L" <> tshow ln)] is listItemsToOpenDocument :: PandocMonad m => Text -> WriterOptions -> [[Block]] -> OD m (Doc Text) listItemsToOpenDocument s o is = vcat . map (inTagsIndented "text:list-item") <$> mapM (withParagraphStyle o s . map plainToPara) is deflistItemToOpenDocument :: PandocMonad m => WriterOptions -> ([Inline],[[Block]]) -> OD m (Doc Text) deflistItemToOpenDocument o (t,d) = do let ts = if isTightList d then "Definition_20_Term_20_Tight" else "Definition_20_Term" ds = if isTightList d then "Definition_20_Definition_20_Tight" else "Definition_20_Definition" t' <- withParagraphStyle o ts [Para t] d' <- liftM vcat $ mapM (withParagraphStyle o ds . map plainToPara) d return $ t' $$ d' inBlockQuote :: PandocMonad m => WriterOptions -> Int -> [Block] -> OD m (Doc Text) inBlockQuote o i (b:bs) | BlockQuote l <- b = do increaseIndent ni <- paraStyle [("style:parent-style-name","Quotations")] go =<< inBlockQuote o ni (map plainToPara l) | Para l <- b = go =<< inParagraphTagsWithStyle ("P" <> tshow i) <$> inlinesToOpenDocument o l | otherwise = go =<< blockToOpenDocument o b where go block = ($$) block <$> inBlockQuote o i bs inBlockQuote _ _ [] = resetIndent >> return empty -- | Convert a list of Pandoc blocks to OpenDocument. blocksToOpenDocument :: PandocMonad m => WriterOptions -> [Block] -> OD m (Doc Text) blocksToOpenDocument o b = vcat <$> mapM (blockToOpenDocument o) b -- | Convert a Pandoc block element to OpenDocument. blockToOpenDocument :: PandocMonad m => WriterOptions -> Block -> OD m (Doc Text) blockToOpenDocument o = \case Plain b -> if null b then return empty else inParagraphTags =<< inlinesToOpenDocument o b Para b -> if null b && not (isEnabled Ext_empty_paragraphs o) then return empty else inParagraphTags =<< inlinesToOpenDocument o b LineBlock b -> blockToOpenDocument o $ linesToPara b Div attr xs -> mkDiv attr xs Header i (ident,_,_) b -> do setFirstPara inHeaderTags i ident =<< inlinesToOpenDocument o b BlockQuote b -> setFirstPara >> mkBlockQuote b DefinitionList b -> setFirstPara >> defList b BulletList b -> setFirstPara >> bulletListToOpenDocument o b OrderedList a b -> setFirstPara >> orderedList a b CodeBlock _ s -> setFirstPara >> preformatted s Table a bc s th tb tf -> setFirstPara >> table (Ann.toTable a bc s th tb tf) HorizontalRule -> setFirstPara >> return (selfClosingTag "text:p" [ ("text:style-name", "Horizontal_20_Line") ]) b@(RawBlock f s) -> if f == Format "opendocument" then return $ text $ T.unpack s else empty <$ report (BlockNotRendered b) Figure a capt b -> figure a capt b where defList b = do setInDefinitionList True r <- vcat <$> mapM (deflistItemToOpenDocument o) b setInDefinitionList False return r preformatted s = flush . vcat <$> mapM (inPreformattedTags . escapeStringForXML) (T.lines s) mkDiv attr s = do let (ident,_,kvs) = attr i = withLangFromAttr attr $ case lookup "custom-style" kvs of Just sty -> withParagraphStyle o sty s _ -> blocksToOpenDocument o s mkBookmarkedDiv = inTags False "text:section" [("text:name", ident)] if T.null ident then i else fmap mkBookmarkedDiv i mkBlockQuote b = do increaseIndent i <- paraStyle [("style:parent-style-name","Quotations")] inBlockQuote o i (map plainToPara b) orderedList a b = do (ln,pn) <- newOrderedListStyle (isTightList b) a inTags True "text:list" [ ("text:style-name", "L" <> tshow ln)] <$> orderedListToOpenDocument o pn b table :: PandocMonad m => Ann.Table -> OD m (Doc Text) table (Ann.Table (ident, _, _) (Caption _ c) colspecs thead tbodies _) = do tn <- length <$> gets stTableStyles pn <- length <$> gets stParaStyles let genIds = map chr [65..] name = "Table" <> tshow (tn + 1) (aligns, mwidths) = unzip colspecs fromWidth (ColWidth w) | w > 0 = w fromWidth _ = 0 widths = map fromWidth mwidths textWidth = sum widths columnIds = zip genIds widths mkColumn n = selfClosingTag "table:table-column" [("table:style-name", name <> "." <> T.singleton (fst n))] columns = map mkColumn columnIds paraHStyles = paraTableStyles "Heading" pn aligns paraStyles = paraTableStyles "Contents" (pn + length (newPara paraHStyles)) aligns newPara = map snd . filter (not . isEmpty . snd) addTableStyle $ tableStyle tn textWidth columnIds mapM_ addParaStyle . newPara $ paraHStyles ++ paraStyles captionDoc <- if null c then return empty else inlinesToOpenDocument o (blocksToInlines c) >>= if isEnabled Ext_native_numbering o then numberedTableCaption ident else unNumberedCaption "TableCaption" th <- colHeadsToOpenDocument o (map fst paraHStyles) thead tr <- mapM (tableBodyToOpenDocument o (map fst paraHStyles) (map fst paraStyles)) tbodies let tableDoc = inTags True "table:table" [ ("table:name" , name) , ("table:style-name", name) ] (vcat columns $$ th $$ vcat tr) return $ captionDoc $$ tableDoc figure (ident, _, _) (Caption _ longcapt) body = case blocksToInlines longcapt of [] -> withParagraphStyle o "Figure" body caption -> do imageDoc <- withParagraphStyle o "FigureWithCaption" $ map (\case {Plain i -> Para i; b -> b}) body captionDoc <- inlinesToOpenDocument o caption >>= if isEnabled Ext_native_numbering o then numberedFigureCaption ident else unNumberedCaption "FigureCaption" return $ imageDoc $$ captionDoc numberedTableCaption :: PandocMonad m => Text -> Doc Text -> OD m (Doc Text) numberedTableCaption ident caption = do id' <- gets stTableCaptionId modify (\st -> st{ stTableCaptionId = id' + 1 }) capterm <- translateTerm Term.Table return $ numberedCaption "TableCaption" capterm "Table" id' ident caption numberedFigureCaption :: PandocMonad m => Text -> Doc Text -> OD m (Doc Text) numberedFigureCaption ident caption = do id' <- gets stImageCaptionId modify (\st -> st{ stImageCaptionId = id' + 1 }) capterm <- translateTerm Term.Figure return $ numberedCaption "FigureCaption" capterm "Illustration" id' ident caption numberedCaption :: Text -> Text -> Text -> Int -> Text -> Doc Text -> Doc Text numberedCaption style term name num ident caption = let t = text $ T.unpack term r = num - 1 ident' = case ident of "" -> "ref" <> name <> tshow r _ -> ident s = inTags False "text:sequence" [ ("text:ref-name", ident'), ("text:name", name), ("text:formula", "ooow:" <> name <> "+1"), ("style:num-format", "1") ] $ text $ show num c = text ": " in inParagraphTagsWithStyle style $ hcat [ t, text " ", s, c, caption ] unNumberedCaption :: Monad m => Text -> Doc Text -> OD m (Doc Text) unNumberedCaption style caption = return $ inParagraphTagsWithStyle style caption colHeadsToOpenDocument :: PandocMonad m => WriterOptions -> [Text] -> Ann.TableHead -> OD m (Doc Text) colHeadsToOpenDocument o ns (Ann.TableHead _ hs) = case hs of [] -> return empty (x:_) -> let (Ann.HeaderRow _ _ c) = x in inTagsIndented "table:table-header-rows" . inTagsIndented "table:table-row" . vcat <$> mapM (tableItemToOpenDocument o "TableHeaderRowCell") (zip ns c) tableBodyToOpenDocument:: PandocMonad m => WriterOptions -> [Text] -> [Text] -> Ann.TableBody -> OD m (Doc Text) tableBodyToOpenDocument o headns bodyns tb = let (Ann.TableBody _ _ _ r) = tb in vcat <$> mapM (tableRowToOpenDocument o headns bodyns) r tableRowToOpenDocument :: PandocMonad m => WriterOptions -> [Text] -> [Text] -> Ann.BodyRow -> OD m (Doc Text) tableRowToOpenDocument o headns bodyns r = let (Ann.BodyRow _ _ rowheaders cs) = r in inTagsIndented "table:table-row" . vcat <$> mapM (tableItemToOpenDocument o "TableRowCell") ((zip headns rowheaders) ++ (zip (drop (length rowheaders) bodyns) cs)) colspanAttrib :: ColSpan -> [(Text, Text)] colspanAttrib cs = case cs of ColSpan 1 -> mempty ColSpan n -> [("table:number-columns-spanned", tshow n)] rowspanAttrib :: RowSpan -> [(Text, Text)] rowspanAttrib rs = case rs of RowSpan 1 -> mempty RowSpan n -> [("table:number-rows-spanned", tshow n)] alignAttrib :: Alignment -> [(Text,Text)] alignAttrib a = case a of AlignRight -> ("fo:text-align","end") : style AlignCenter -> ("fo:text-align","center") : style _ -> [] where style = [("style:justify-single-word","false")] tableItemToOpenDocument :: PandocMonad m => WriterOptions -> Text -> (Text,Ann.Cell) -> OD m (Doc Text) tableItemToOpenDocument o s (n,c) = do let (Ann.Cell _colspecs _colnum (Cell _ align rs cs i) ) = c csa = colspanAttrib cs rsa = rowspanAttrib rs aa = alignAttrib align a = [ ("table:style-name" , s ) , ("office:value-type", "string" ) ] ++ csa ++ rsa itemParaStyle <- case aa of [] -> return 0 _ -> paraStyleFromParent n aa let itemParaStyle' = case itemParaStyle of 0 -> n x -> "P" <> tshow x inTags True "table:table-cell" a <$> withParagraphStyle o itemParaStyle' (map plainToPara i) -- | Convert a list of inline elements to OpenDocument. inlinesToOpenDocument :: PandocMonad m => WriterOptions -> [Inline] -> OD m (Doc Text) inlinesToOpenDocument o l = hcat <$> toChunks o l toChunks :: PandocMonad m => WriterOptions -> [Inline] -> OD m [Doc Text] toChunks _ [] = return [] toChunks o (x : xs) | isChunkable x = do contents <- (inTextStyle . hcat) =<< mapM (inlineToOpenDocument o) (x:ys) rest <- toChunks o zs return (contents : rest) | otherwise = do contents <- inlineToOpenDocument o x rest <- toChunks o xs return (contents : rest) where (ys, zs) = span isChunkable xs isChunkable :: Inline -> Bool isChunkable (Str _) = True isChunkable Space = True isChunkable SoftBreak = True isChunkable _ = False -- | Convert an inline element to OpenDocument. inlineToOpenDocument :: PandocMonad m => WriterOptions -> Inline -> OD m (Doc Text) inlineToOpenDocument o ils = case ils of Space -> return space SoftBreak | writerWrapText o == WrapPreserve -> return $ preformatted "\n" | otherwise -> return space Span attr xs -> mkSpan attr xs LineBreak -> return $ selfClosingTag "text:line-break" [] Str s -> return $ handleSpaces $ escapeStringForXML s Emph l -> withTextStyle Italic $ inlinesToOpenDocument o l Underline l -> withTextStyle Under $ inlinesToOpenDocument o l Strong l -> withTextStyle Bold $ inlinesToOpenDocument o l Strikeout l -> withTextStyle Strike $ inlinesToOpenDocument o l Superscript l -> withTextStyle Sup $ inlinesToOpenDocument o l Subscript l -> withTextStyle Sub $ inlinesToOpenDocument o l SmallCaps l -> withTextStyle SmallC $ inlinesToOpenDocument o l Quoted t l -> inQuotes t <$> inlinesToOpenDocument o l Code attrs s -> if isNothing (writerHighlightStyle o) then unhighlighted s else case highlight (writerSyntaxMap o) formatOpenDocument attrs s of Right h -> return $ mconcat $ mconcat h Left msg -> do unless (T.null msg) $ report $ CouldNotHighlight msg unhighlighted s Math t s -> lift (texMathToInlines t s) >>= inlinesToOpenDocument o Cite _ l -> inlinesToOpenDocument o l RawInline f s -> if f == Format "opendocument" then return $ text $ T.unpack s else do report $ InlineNotRendered ils return empty Link _ l (s,t) -> do identTypes <- gets stIdentTypes mkLink o identTypes s t <$> inlinesToOpenDocument o l Image attr _ (s,t) -> mkImg attr s t Note l -> mkNote l where formatOpenDocument :: FormatOptions -> [SourceLine] -> [[Doc Text]] formatOpenDocument _fmtOpts = map (map toHlTok) toHlTok :: Token -> Doc Text toHlTok (toktype,tok) = inTags False "text:span" [("text:style-name", T.pack $ show toktype)] $ preformatted tok unhighlighted s = inlinedCode $ preformatted s preformatted s = handleSpaces $ escapeStringForXML s inlinedCode s = return $ inTags False "text:span" [("text:style-name", "Source_Text")] s mkImg (_, _, kvs) s _ = do id' <- gets stImageId modify (\st -> st{ stImageId = id' + 1 }) let getDims [] = [] getDims (("width", w) :xs) = ("svg:width", w) : getDims xs getDims (("rel-width", w):xs) = ("style:rel-width", w) : getDims xs getDims (("height", h):xs) = ("svg:height", h) : getDims xs getDims (("rel-height", w):xs) = ("style:rel-height", w) : getDims xs getDims (_:xs) = getDims xs return $ inTags False "draw:frame" (("draw:name", "img" <> tshow id') : getDims kvs) $ selfClosingTag "draw:image" [ ("xlink:href" , s ) , ("xlink:type" , "simple") , ("xlink:show" , "embed" ) , ("xlink:actuate", "onLoad")] mkSpan attr xs = do let (ident,_,_) = attr i = withLangFromAttr attr (inlinesToOpenDocument o xs) mkBookmarkedSpan b = if isEmpty b then selfClosingBookmark ident else inBookmarkTags ident b if T.null ident then i else fmap mkBookmarkedSpan i mkNote l = do n <- length <$> gets stNotes let footNote t = inTags False "text:note" [ ("text:id" , "ftn" <> tshow n) , ("text:note-class", "footnote" )] $ inTagsSimple "text:note-citation" (text . show $ n + 1) <> inTagsSimple "text:note-body" t nn <- footNote <$> withParagraphStyle o "Footnote" l addNote nn return nn mkLink :: WriterOptions -> [(Text,ReferenceType)] -> Text -> Text -> Doc Text -> Doc Text mkLink o identTypes s t d = let maybeIdentAndType = case T.uncons s of Just ('#', ident) -> find ((ident ==) . fst) identTypes _ -> Nothing d' = inSpanTags "Definition" d ref refType format ident = inTags False refType [ ("text:reference-format", format ), ("text:ref-name", ident) ] inlineSpace = selfClosingTag "text:s" [] bookmarkRef = ref "text:bookmark-ref" bookmarkRefNumber ident = bookmarkRef "number" ident mempty bookmarkRefName ident = bookmarkRef "text" ident d bookmarkRefNameNumber ident = bookmarkRefNumber ident <> inlineSpace <> bookmarkRefName ident bookmarkRef' | isEnabled Ext_xrefs_number o && isEnabled Ext_xrefs_name o = bookmarkRefNameNumber | isEnabled Ext_xrefs_name o = bookmarkRefName | otherwise = bookmarkRefNumber sequenceRef = ref "text:sequence-ref" sequenceRefNumber ident = sequenceRef "value" ident mempty sequenceRefName ident = sequenceRef "caption" ident d sequenceRefNameNumber ident = sequenceRefNumber ident <> inlineSpace <> sequenceRefName ident sequenceRef' | isEnabled Ext_xrefs_number o && isEnabled Ext_xrefs_name o = sequenceRefNameNumber | isEnabled Ext_xrefs_name o = sequenceRefName | otherwise = sequenceRefNumber link = inTags False "text:a" [ ("xlink:type" , "simple") , ("xlink:href" , s ) , ("office:name", t ) ] d' linkOrReference = case maybeIdentAndType of Just (ident, HeaderRef) -> bookmarkRef' ident Just (ident, TableRef) -> sequenceRef' ident Just (ident, FigureRef) -> sequenceRef' ident _ -> link in if isEnabled Ext_xrefs_name o || isEnabled Ext_xrefs_number o then linkOrReference else link bulletListStyle :: PandocMonad m => Int -> OD m (Int,(Int,[Doc Text])) bulletListStyle l = do let doStyles i = inTags True "text:list-level-style-bullet" [ ("text:level" , tshow (i + 1)) , ("text:style-name" , "Bullet_20_Symbols" ) , ("style:num-suffix", "." ) , ("text:bullet-char", T.singleton (bulletList !! i)) ] (listLevelStyle (1 + i)) bulletList = map chr $ cycle [8226,9702,9642] listElStyle = map doStyles [0..9] pn <- paraListStyle l return (pn, (l, listElStyle)) orderedListLevelStyle :: ListAttributes -> (Int, [Doc Text]) -> (Int,[Doc Text]) orderedListLevelStyle (s,n, d) (l,ls) = let suffix = case d of OneParen -> [("style:num-suffix", ")")] TwoParens -> [("style:num-prefix", "(") ,("style:num-suffix", ")")] _ -> [("style:num-suffix", ".")] format = case n of UpperAlpha -> "A" LowerAlpha -> "a" UpperRoman -> "I" LowerRoman -> "i" _ -> "1" listStyle = inTags True "text:list-level-style-number" ([ ("text:level" , tshow $ 1 + length ls ) , ("text:style-name" , "Numbering_20_Symbols") , ("style:num-format", format ) , ("text:start-value", tshow s ) ] ++ suffix) (listLevelStyle (1 + length ls)) in (l, ls ++ [listStyle]) listLevelStyle :: Int -> Doc Text listLevelStyle i = let indent = tshow (0.25 + (0.25 * fromIntegral i :: Double)) in inTags True "style:list-level-properties" [ ("text:list-level-position-and-space-mode", "label-alignment") , ("fo:text-align", "right") ] $ selfClosingTag "style:list-level-label-alignment" [ ("text:label-followed-by", "listtab") , ("text:list-tab-stop-position", indent <> "in") , ("fo:text-indent", "-0.25in") , ("fo:margin-left", indent <> "in") ] tableStyle :: Int -> Double -> [(Char,Double)] -> Doc Text tableStyle num textWidth wcs = let tableId = "Table" <> tshow (num + 1) tableWidthAttr :: [(Text,Text)] tableWidthAttr | textWidth <= 1 && textWidth > 0 = [("style:rel-width", T.pack (show (round (textWidth * 100) :: Int) <> "%"))] | otherwise = [] table = inTags True "style:style" [("style:name", tableId) ,("style:family", "table")] $ selfClosingTag "style:table-properties" (("table:align", "center") : tableWidthAttr) colStyle (c,0) = selfClosingTag "style:style" [ ("style:name" , tableId <> "." <> T.singleton c) , ("style:family", "table-column" )] colStyle (c,w) = inTags True "style:style" [ ("style:name" , tableId <> "." <> T.singleton c) , ("style:family", "table-column" )] $ selfClosingTag "style:table-column-properties" [("style:rel-column-width", T.pack $ printf "%d*" (floor $ w * 65535 :: Integer))] headerRowCellStyle = inTags True "style:style" [ ("style:name" , "TableHeaderRowCell") , ("style:family", "table-cell" )] $ selfClosingTag "style:table-cell-properties" [ ("fo:border", "none")] rowCellStyle = inTags True "style:style" [ ("style:name" , "TableRowCell") , ("style:family", "table-cell" )] $ selfClosingTag "style:table-cell-properties" [ ("fo:border", "none")] cellStyles = if num == 0 then headerRowCellStyle $$ rowCellStyle else empty columnStyles = map colStyle wcs in cellStyles $$ table $$ vcat columnStyles paraStyle :: PandocMonad m => [(Text,Text)] -> OD m Int paraStyle attrs = do pn <- (+) 1 . length <$> gets stParaStyles i <- (*) (0.5 :: Double) . fromIntegral <$> gets stIndentPara b <- gets stInDefinition t <- gets stTight let styleAttr = [ ("style:name" , "P" <> tshow pn) , ("style:family" , "paragraph" )] indentVal = flip (<>) "in" . tshow $ if b then max 0.5 i else i tight = if t then [ ("fo:margin-top" , "0in" ) , ("fo:margin-bottom" , "0in" )] else [] indent = if i /= 0 || b then [ ("fo:margin-left" , indentVal) , ("fo:margin-right" , "0in" ) , ("fo:text-indent" , "0in" ) , ("style:auto-text-indent" , "false" )] else [] attributes = indent <> tight paraProps = if null attributes then mempty else selfClosingTag "style:paragraph-properties" attributes addParaStyle $ inTags True "style:style" (styleAttr <> attrs) paraProps return pn paraStyleFromParent :: PandocMonad m => Text -> [(Text,Text)] -> OD m Int paraStyleFromParent parent attrs = do pn <- (+) 1 . length <$> gets stParaStyles let styleAttr = [ ("style:name" , "P" <> tshow pn) , ("style:family" , "paragraph") , ("style:parent-style-name", parent)] paraProps = if null attrs then mempty else selfClosingTag "style:paragraph-properties" attrs addParaStyle $ inTags True "style:style" styleAttr paraProps return pn paraListStyle :: PandocMonad m => Int -> OD m Int paraListStyle l = paraStyle [("style:parent-style-name","Text_20_body") ,("style:list-style-name", "L" <> tshow l)] paraTableStyles :: Text -> Int -> [Alignment] -> [(Text, Doc Text)] paraTableStyles _ _ [] = [] paraTableStyles t s (a:xs) | AlignRight <- a = ( pName s, res s "end" ) : paraTableStyles t (s + 1) xs | AlignCenter <- a = ( pName s, res s "center") : paraTableStyles t (s + 1) xs | otherwise = ("Table_20_" <> t, empty ) : paraTableStyles t s xs where pName sn = "P" <> tshow (sn + 1) res sn x = inTags True "style:style" [ ("style:name" , pName sn ) , ("style:family" , "paragraph" ) , ("style:parent-style-name", "Table_20_" <> t)] $ selfClosingTag "style:paragraph-properties" [ ("fo:text-align", x) , ("style:justify-single-word", "false")] data TextStyle = Italic | Bold | Under | Strike | Sub | Sup | SmallC | Pre | Language Lang deriving ( Eq,Ord ) textStyleAttr :: Map.Map Text Text -> TextStyle -> Map.Map Text Text textStyleAttr m = \case Italic -> Map.insert "fo:font-style" "italic" . Map.insert "style:font-style-asian" "italic" . Map.insert "style:font-style-complex" "italic" $ m Bold -> Map.insert "fo:font-weight" "bold" . Map.insert "style:font-weight-asian" "bold" . Map.insert "style:font-weight-complex" "bold" $ m Under -> Map.insert "style:text-underline-style" "solid" . Map.insert "style:text-underline-width" "auto" . Map.insert "style:text-underline-color" "font-color" $ m Strike -> Map.insert "style:text-line-through-style" "solid" m Sub -> Map.insert "style:text-position" "sub 58%" m Sup -> Map.insert "style:text-position" "super 58%" m SmallC -> Map.insert "fo:font-variant" "small-caps" m Pre -> Map.insert "style:font-name" "Courier New" . Map.insert "style:font-name-asian" "Courier New" . Map.insert "style:font-name-complex" "Courier New" $ m Language lang -> Map.insert "fo:language" (langLanguage lang) . maybe id (Map.insert "fo:country") (langRegion lang) $ m withLangFromAttr :: PandocMonad m => Attr -> OD m a -> OD m a withLangFromAttr (_,_,kvs) action = case lookup "lang" kvs of Nothing -> action Just l -> case parseLang l of Right lang -> withTextStyle (Language lang) action Left _ -> do report $ InvalidLang l action ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/Org.hs���������������������������������������������������������0000644�0000000�0000000�00000056655�07346545000�016635� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE PatternGuards #-} {- | Module : Text.Pandoc.Writers.Org Copyright : © 2010-2015 Puneeth Chaganti <punchagan@gmail.com> 2010-2023 John MacFarlane <jgm@berkeley.edu> 2016-2023 Albert Krewinkel <tarleb+pandoc@moltkeplatz.de> License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel <tarleb+pandoc@moltkeplatz.de> Stability : alpha Portability : portable Conversion of 'Pandoc' documents to Emacs Org-Mode. Org-Mode: <http://orgmode.org> -} module Text.Pandoc.Writers.Org (writeOrg) where import Control.Monad (zipWithM) import Control.Monad.State.Strict ( StateT, gets, modify, evalStateT ) import Data.Char (isAlphaNum, isDigit) import Data.List (intersperse, partition, dropWhileEnd, transpose) import Data.List.NonEmpty (nonEmpty) import Data.Maybe (isJust) import Data.Text (Text) import qualified Data.Text as T import qualified Data.Map as M import Text.DocLayout import Text.Pandoc.Class.PandocMonad (PandocMonad, report) import Text.Pandoc.Definition import Text.Pandoc.Logging import Text.Pandoc.Options import Text.Pandoc.Shared import Text.Pandoc.URI import Text.Pandoc.Templates (renderTemplate) import Text.Pandoc.Citeproc.Locator (parseLocator, LocatorMap(..), LocatorInfo(..)) import Text.Pandoc.Walk (query) import Text.Pandoc.Writers.Shared data WriterState = WriterState { stNotes :: [[Block]] , stHasMath :: Bool , stOptions :: WriterOptions } type Org = StateT WriterState -- | Convert Pandoc to Org. writeOrg :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeOrg opts document = do let st = WriterState { stNotes = [], stHasMath = False, stOptions = opts } evalStateT (pandocToOrg document) st -- | Return Org representation of document. pandocToOrg :: PandocMonad m => Pandoc -> Org m Text pandocToOrg (Pandoc meta blocks) = do opts <- gets stOptions let colwidth = if writerWrapText opts == WrapAuto then Just $ writerColumns opts else Nothing metadata <- metaToContext opts blockListToOrg (fmap chomp . inlineListToOrg) meta body <- blockListToOrg blocks notes <- gets (reverse . stNotes) >>= notesToOrg hasMath <- gets stHasMath let main = body $+$ notes let context = defField "body" main . defField "math" hasMath $ metadata return $ render colwidth $ case writerTemplate opts of Nothing -> main Just tpl -> renderTemplate tpl context -- | Return Org representation of notes. notesToOrg :: PandocMonad m => [[Block]] -> Org m (Doc Text) notesToOrg notes = vsep <$> zipWithM noteToOrg [1..] notes -- | Return Org representation of a note. noteToOrg :: PandocMonad m => Int -> [Block] -> Org m (Doc Text) noteToOrg num note = do contents <- blockListToOrg note let marker = "[fn:" ++ show num ++ "] " return $ hang (length marker) (text marker) contents -- | Escape special characters for Org. escapeString :: Text -> Text escapeString t | T.all (\c -> c < '\x2013' || c > '\x2026') t = t | otherwise = T.concatMap escChar t where escChar '\x2013' = "--" escChar '\x2014' = "---" escChar '\x2019' = "'" escChar '\x2026' = "..." escChar c = T.singleton c isRawFormat :: Format -> Bool isRawFormat f = f == Format "latex" || f == Format "tex" || f == Format "org" -- | Convert Pandoc block element to Org. blockToOrg :: PandocMonad m => Block -- ^ Block element -> Org m (Doc Text) blockToOrg (Div (_, ["cell", "code"], _) (CodeBlock attr t : bs)) = do -- ipynb code cell let (ident, classes, kvs) = attr blockListToOrg (CodeBlock (ident, classes ++ ["code"], kvs) t : bs) blockToOrg (Div (_, ["output", "execute_result"], _) [CodeBlock _attr t]) = do -- ipynb code result return $ "#+RESULTS:" $$ (prefixed ": " . vcat . map literal $ T.split (== '\n') t) blockToOrg (Div attr@(ident,_,_) bs) = do opts <- gets stOptions -- Strip off bibliography if citations enabled if ident == "refs" && isEnabled Ext_citations opts then return mempty else divToOrg attr bs blockToOrg (Plain inlines) = inlineListToOrg inlines blockToOrg (Para inlines) = do contents <- inlineListToOrg inlines return $ contents <> blankline blockToOrg (LineBlock lns) = do let splitStanza [] = [] splitStanza xs = case break (== mempty) xs of (l, []) -> [l] (l, _:r) -> l : splitStanza r let joinWithLinefeeds = nowrap . mconcat . intersperse cr let joinWithBlankLines = mconcat . intersperse blankline let prettifyStanza ls = joinWithLinefeeds <$> mapM inlineListToOrg ls contents <- joinWithBlankLines <$> mapM prettifyStanza (splitStanza lns) return $ blankline $$ "#+begin_verse" $$ nest 2 contents $$ "#+end_verse" <> blankline blockToOrg (RawBlock "html" str) = return $ blankline $$ "#+begin_html" $$ nest 2 (literal str) $$ "#+end_html" $$ blankline blockToOrg b@(RawBlock f str) | isRawFormat f = return $ literal str | otherwise = do report $ BlockNotRendered b return empty blockToOrg HorizontalRule = return $ blankline $$ "--------------" $$ blankline blockToOrg (Header level attr inlines) = do let tagName inline = case inline of Span (_, _, kv) _ -> (:[]) <$> lookup "tag-name" kv _ -> Nothing let (htext, tagsInlines) = break (isJust . tagName) inlines contents <- inlineListToOrg $ dropWhileEnd (== Space) htext columns <- writerColumns <$> gets stOptions let headerDoc = mconcat [ text $ if level > 999 then " " else replicate level '*' , literal " " , contents ] let tags = case query tagName tagsInlines of Nothing -> "" Just ts -> T.cons ':' (T.intercalate ":" ts) `T.snoc` ':' let tagsDoc = if T.null tags then empty else (<> literal tags) . text . (`replicate` ' ') . max 1 $ columns - offset headerDoc - realLength tags let drawerStr = if attr == nullAttr then empty else cr <> propertiesDrawer attr return $ nowrap (headerDoc <> tagsDoc) <> drawerStr <> cr blockToOrg (CodeBlock (ident,classes,kvs) str) = do let name = if T.null ident then empty else literal $ "#+name: " <> ident let startnum = maybe "" (\x -> " " <> trimr x) $ lookup "startFrom" kvs let numberlines = if "numberLines" `elem` classes then if "continuedSourceBlock" `elem` classes then " +n" <> startnum else " -n" <> startnum else "" let lang = case filter (`notElem` ["example","code"]) classes of [] -> Nothing l:_ -> if "code" `elem` classes -- check for ipynb code cell then Just ("jupyter-" <> pandocLangToOrg l) else Just (pandocLangToOrg l) let args = mconcat $ [ " :" <> k <> " " <> v | (k, v) <- kvs, k `notElem` ["startFrom", "org-language"]] let (beg, end) = case lang of Nothing -> ("#+begin_example" <> numberlines, "#+end_example") Just x -> ("#+begin_src " <> x <> numberlines <> args, "#+end_src") return $ name $$ literal beg $$ literal str $$ literal end $$ blankline blockToOrg (BlockQuote blocks) = do contents <- blockListToOrg blocks return $ blankline $$ "#+begin_quote" $$ contents $$ "#+end_quote" $$ blankline blockToOrg (Table _ blkCapt specs thead tbody tfoot) = do let (caption', _, _, headers, rows) = toLegacyTable blkCapt specs thead tbody tfoot caption'' <- inlineListToOrg caption' let caption = if null caption' then empty else "#+caption: " <> caption'' headers' <- mapM blockListToOrg headers rawRows <- mapM (mapM blockListToOrg) rows let numChars = maybe 0 maximum . nonEmpty . map offset -- FIXME: width is not being used. let widthsInChars = map numChars $ transpose (headers' : rawRows) -- FIXME: Org doesn't allow blocks with height more than 1. let hpipeBlocks blocks = hcat [beg, middle, end] where sep' = vfill " | " beg = vfill "| " end = vfill " |" middle = hcat $ intersperse sep' blocks let makeRow = hpipeBlocks . zipWith lblock widthsInChars let head' = makeRow headers' rows' <- mapM (\row -> do cols <- mapM blockListToOrg row return $ makeRow cols) rows let border ch = char '|' <> char ch <> (hcat . intersperse (char ch <> char '+' <> char ch) $ map (\l -> text $ replicate l ch) widthsInChars) <> char ch <> char '|' let body = vcat rows' let head'' = if all null headers then empty else head' $$ border '-' return $ head'' $$ body $$ caption $$ blankline blockToOrg (BulletList items) = do contents <- mapM bulletListItemToOrg items return $ (if isTightList items then vcat else vsep) contents $$ blankline blockToOrg (OrderedList (start, _, delim) items) = do let delim' = case delim of TwoParens -> OneParen x -> x let markers = take (length items) $ orderedListMarkers (start, Decimal, delim') counters = (case start of 1 -> Nothing; n -> Just n) : repeat Nothing contents <- zipWithM (\x f -> f x) items $ zipWith orderedListItemToOrg markers counters return $ (if isTightList items then vcat else vsep) contents $$ blankline blockToOrg (DefinitionList items) = do contents <- mapM definitionListItemToOrg items return $ vcat contents $$ blankline blockToOrg (Figure (ident, _, _) caption body) = do -- Represent the figure as content that can be internally linked from other -- parts of the document. capt <- case caption of Caption _ [] -> pure empty Caption _ cpt -> ("#+caption: " <>) <$> inlineListToOrg (blocksToInlines cpt) contents <- blockListToOrg body let anchor = if T.null ident then empty else "<<" <> literal ident <> ">>" return (capt $$ anchor $$ contents $$ blankline) -- | Convert bullet list item (list of blocks) to Org. bulletListItemToOrg :: PandocMonad m => [Block] -> Org m (Doc Text) bulletListItemToOrg items = do exts <- gets $ writerExtensions . stOptions contents <- blockListToOrg (taskListItemToOrg exts items) -- if list item starts with non-paragraph, it must go on -- the next line: let contents' = (case items of Plain{}:_ -> mempty Para{}:_ -> mempty _ -> cr) <> chomp contents return $ hang 2 "- " contents' $$ if null items || endsWithPlain items then cr else blankline -- | Convert ordered list item (a list of blocks) to Org. orderedListItemToOrg :: PandocMonad m => Text -- ^ marker for list item -> Maybe Int -- ^ maybe number for a counter cookie -> [Block] -- ^ list item (list of blocks) -> Org m (Doc Text) orderedListItemToOrg marker counter items = do exts <- gets $ writerExtensions . stOptions contents <- blockListToOrg (taskListItemToOrg exts items) -- if list item starts with non-paragraph, it must go on -- the next line: let contents' = (case items of Plain{}:_ -> mempty Para{}:_ -> mempty _ -> cr) <> chomp contents let cookie = maybe empty (\n -> space <> literal "[@" <> literal (tshow n) <> literal "]") counter return $ hang (T.length marker + 1) (literal marker <> cookie <> space) contents' $$ if null items || endsWithPlain items then cr else blankline -- | Convert a list item containing text starting with @U+2610 BALLOT BOX@ -- or @U+2612 BALLOT BOX WITH X@ to org checkbox syntax (e.g. @[X]@). taskListItemToOrg :: Extensions -> [Block] -> [Block] taskListItemToOrg = handleTaskListItem toOrg where toOrg (Str "☐" : Space : is) = Str "[ ]" : Space : is toOrg (Str "☒" : Space : is) = Str "[X]" : Space : is toOrg is = is -- | Convert definition list item (label, list of blocks) to Org. definitionListItemToOrg :: PandocMonad m => ([Inline], [[Block]]) -> Org m (Doc Text) definitionListItemToOrg (label, defs) = do label' <- inlineListToOrg label contents <- vcat <$> mapM blockListToOrg defs return $ hang 2 "- " (label' <> " :: " <> contents) $$ if isTightList defs then cr else blankline -- | Convert list of key/value pairs to Org :PROPERTIES: drawer. propertiesDrawer :: Attr -> Doc Text propertiesDrawer (ident, classes, kv) = let drawerStart = text ":PROPERTIES:" drawerEnd = text ":END:" kv' = if classes == mempty then kv else ("CLASS", T.unwords classes):kv kv'' = if ident == mempty then kv' else ("CUSTOM_ID", ident):kv' properties = vcat $ map kvToOrgProperty kv'' in drawerStart <> cr <> properties <> cr <> drawerEnd where kvToOrgProperty :: (Text, Text) -> Doc Text kvToOrgProperty (key, value) = text ":" <> literal key <> text ": " <> literal value <> cr -- | The different methods to represent a Div block. data DivBlockType = GreaterBlock Text Attr -- ^ Greater block like @center@ or @quote@. | Drawer Text Attr -- ^ Org drawer with of given name; keeps -- key-value pairs. | UnwrappedWithAnchor Text -- ^ Not mapped to other type, only -- identifier is retained (if any). -- | Gives the most suitable method to render a list of blocks -- with attributes. divBlockType :: Attr-> DivBlockType divBlockType (ident, classes, kvs) -- if any class is named "drawer", then output as org :drawer: | ([_], drawerName:classes') <- partition (== "drawer") classes = Drawer drawerName (ident, classes', kvs) -- if any class is either @center@ or @quote@, then use a org block. | (blockName:classes'', classes') <- partition isGreaterBlockClass classes = GreaterBlock blockName (ident, classes' <> classes'', kvs) -- if no better method is found, unwrap div and set anchor | otherwise = UnwrappedWithAnchor ident where isGreaterBlockClass :: Text -> Bool isGreaterBlockClass = (`elem` ["center", "quote"]) . T.toLower -- | Converts a Div to an org-mode element. divToOrg :: PandocMonad m => Attr -> [Block] -> Org m (Doc Text) divToOrg attr bs = do contents <- blockListToOrg bs case divBlockType attr of GreaterBlock blockName attr' -> -- Write as greater block. The ID, if present, is added via -- the #+name keyword; other classes and key-value pairs -- are kept as #+attr_html attributes. return $ blankline $$ attrHtml attr' $$ "#+begin_" <> literal blockName $$ contents $$ "#+end_" <> literal blockName $$ blankline Drawer drawerName (_,_,kvs) -> do -- Write as drawer. Only key-value pairs are retained. let keys = vcat $ map (\(k,v) -> ":" <> literal k <> ":" <> space <> literal v) kvs return $ ":" <> literal drawerName <> ":" $$ cr $$ keys $$ blankline $$ contents $$ blankline $$ text ":END:" $$ blankline UnwrappedWithAnchor ident -> do -- Unwrap the div. All attributes are discarded, except for -- the identifier, which is added as an anchor before the -- div contents. let contents' = if T.null ident then contents else "<<" <> literal ident <> ">>" $$ contents return (blankline $$ contents' $$ blankline) attrHtml :: Attr -> Doc Text attrHtml ("" , [] , []) = mempty attrHtml (ident, classes, kvs) = let name = if T.null ident then mempty else "#+name: " <> literal ident <> cr keyword = "#+attr_html" classKv = ("class", T.unwords classes) kvStrings = map (\(k,v) -> ":" <> k <> " " <> v) (classKv:kvs) in name <> keyword <> ": " <> literal (T.unwords kvStrings) <> cr -- | Convert list of Pandoc block elements to Org. blockListToOrg :: PandocMonad m => [Block] -- ^ List of block elements -> Org m (Doc Text) blockListToOrg blocks = vcat <$> mapM blockToOrg blocks -- | Convert list of Pandoc inline elements to Org. inlineListToOrg :: PandocMonad m => [Inline] -> Org m (Doc Text) inlineListToOrg lst = hcat <$> mapM inlineToOrg (fixMarkers lst) where -- Prevent note refs and list markers from wrapping, see #4171 -- and #7132. fixMarkers [] = [] fixMarkers (Space : x : rest) | shouldFix x = Str " " : x : fixMarkers rest fixMarkers (SoftBreak : x : rest) | shouldFix x = Str " " : x : fixMarkers rest fixMarkers (x : rest) = x : fixMarkers rest shouldFix Note{} = True -- Prevent footnotes shouldFix (Str "-") = True -- Prevent bullet list items shouldFix (Str x) -- Prevent ordered list items | Just (cs, c) <- T.unsnoc x = T.all isDigit cs && (c == '.' || c == ')') shouldFix _ = False -- | Convert Pandoc inline element to Org. inlineToOrg :: PandocMonad m => Inline -> Org m (Doc Text) inlineToOrg (Span (uid, [], []) []) = return $ "<<" <> literal uid <> ">>" inlineToOrg (Span _ lst) = inlineListToOrg lst inlineToOrg (Emph lst) = do contents <- inlineListToOrg lst return $ "/" <> contents <> "/" inlineToOrg (Underline lst) = do contents <- inlineListToOrg lst return $ "_" <> contents <> "_" inlineToOrg (Strong lst) = do contents <- inlineListToOrg lst return $ "*" <> contents <> "*" inlineToOrg (Strikeout lst) = do contents <- inlineListToOrg lst return $ "+" <> contents <> "+" inlineToOrg (Superscript lst) = do contents <- inlineListToOrg lst return $ "^{" <> contents <> "}" inlineToOrg (Subscript lst) = do contents <- inlineListToOrg lst return $ "_{" <> contents <> "}" inlineToOrg (SmallCaps lst) = inlineListToOrg lst inlineToOrg (Quoted SingleQuote lst) = do contents <- inlineListToOrg lst return $ "'" <> contents <> "'" inlineToOrg (Quoted DoubleQuote lst) = do contents <- inlineListToOrg lst return $ "\"" <> contents <> "\"" inlineToOrg (Cite cs lst) = do opts <- gets stOptions if isEnabled Ext_citations opts then do let renderCiteItem c = do citePref <- inlineListToOrg (citationPrefix c) let (locinfo, suffix) = parseLocator locmap (citationSuffix c) citeSuff <- inlineListToOrg suffix let locator = case locinfo of Just info -> literal $ T.replace "\160" " " $ T.replace "{" "" $ T.replace "}" "" $ locatorRaw info Nothing -> mempty return $ hsep [ citePref , ("@" <> literal (citationId c)) , locator , citeSuff ] citeItems <- mconcat . intersperse "; " <$> mapM renderCiteItem cs let sty = case cs of (d:_) | citationMode d == AuthorInText -> literal "/t" [d] | citationMode d == SuppressAuthor -> literal "/na" _ -> mempty return $ "[cite" <> sty <> ":" <> citeItems <> "]" else inlineListToOrg lst inlineToOrg (Code _ str) = return $ "=" <> literal str <> "=" inlineToOrg (Str str) = return . literal $ escapeString str inlineToOrg (Math t str) = do modify $ \st -> st{ stHasMath = True } return $ if t == InlineMath then "\\(" <> literal str <> "\\)" else "\\[" <> literal str <> "\\]" inlineToOrg il@(RawInline f str) | elem f ["tex", "latex"] && T.isPrefixOf "\\begin" str = return $ cr <> literal str <> cr | isRawFormat f = return $ literal str | otherwise = do report $ InlineNotRendered il return empty inlineToOrg LineBreak = return (text "\\\\" <> cr) inlineToOrg Space = return space inlineToOrg SoftBreak = do wrapText <- gets (writerWrapText . stOptions) case wrapText of WrapPreserve -> return cr WrapAuto -> return space WrapNone -> return space inlineToOrg (Link _ txt (src, _)) = case txt of [Str x] | escapeURI x == src -> -- autolink return $ "[[" <> literal (orgPath x) <> "]]" _ -> do contents <- inlineListToOrg txt return $ "[[" <> literal (orgPath src) <> "][" <> contents <> "]]" inlineToOrg (Image _ _ (source, _)) = return $ "[[" <> literal (orgPath source) <> "]]" inlineToOrg (Note contents) = do -- add to notes in state notes <- gets stNotes modify $ \st -> st { stNotes = contents:notes } let ref = tshow $ length notes + 1 return $ "[fn:" <> literal ref <> "]" orgPath :: Text -> Text orgPath src = case T.uncons src of Nothing -> "" -- wiki link Just ('#', _) -> src -- internal link _ | isUrl src -> src _ | isFilePath src -> src _ -> "file:" <> src where isFilePath :: Text -> Bool isFilePath cs = any (`T.isPrefixOf` cs) ["/", "./", "../", "file:"] isUrl :: Text -> Bool isUrl cs = let (scheme, path) = T.break (== ':') cs in T.all (\c -> isAlphaNum c || T.any (== c) ".-") scheme && not (T.null path) -- | Translate from pandoc's programming language identifiers to those used by -- org-mode. pandocLangToOrg :: Text -> Text pandocLangToOrg cs = case cs of "c" -> "C" "commonlisp" -> "lisp" "r" -> "R" "bash" -> "sh" _ -> cs -- taken from oc-csl.el in the org source tree: locmap :: LocatorMap locmap = LocatorMap $ M.fromList [ ("bk." , "book") , ("bks." , "book") , ("book" , "book") , ("chap." , "chapter") , ("chaps." , "chapter") , ("chapter" , "chapter") , ("col." , "column") , ("cols." , "column") , ("column" , "column") , ("figure" , "figure") , ("fig." , "figure") , ("figs." , "figure") , ("folio" , "folio") , ("fol." , "folio") , ("fols." , "folio") , ("number" , "number") , ("no." , "number") , ("nos." , "number") , ("line" , "line") , ("l." , "line") , ("ll." , "line") , ("note" , "note") , ("n." , "note") , ("nn." , "note") , ("opus" , "opus") , ("op." , "opus") , ("opp." , "opus") , ("page" , "page") , ("p" , "page") , ("p." , "page") , ("pp." , "page") , ("paragraph" , "paragraph") , ("para." , "paragraph") , ("paras." , "paragraph") , ("¶" , "paragraph") , ("¶¶" , "paragraph") , ("part" , "part") , ("pt." , "part") , ("pts." , "part") , ("§" , "section") , ("§§" , "section") , ("section" , "section") , ("sec." , "section") , ("secs." , "section") , ("sub verbo" , "sub verbo") , ("s.v." , "sub verbo") , ("s.vv." , "sub verbo") , ("verse" , "verse") , ("v." , "verse") , ("vv." , "verse") , ("volume" , "volume") , ("vol." , "volume") , ("vols." , "volume") ] �����������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/Powerpoint.hs��������������������������������������������������0000644�0000000�0000000�00000002772�07346545000�020243� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{- | Module : Text.Pandoc.Writers.Powerpoint Copyright : Copyright (C) 2017-2020 Jesse Rosenthal License : GNU GPL, version 2 or above Maintainer : Jesse Rosenthal <jrosenthal@jhu.edu> Stability : alpha Portability : portable Conversion of 'Pandoc' documents to powerpoint (pptx). -} {- This is a wrapper around two modules: - Text.Pandoc.Writers.Powerpoint.Presentation (which converts a pandoc document into a Presentation datatype), and - Text.Pandoc.Writers.Powerpoint.Output (which converts a Presentation into a zip archive, which can be output). -} module Text.Pandoc.Writers.Powerpoint (writePowerpoint) where import Codec.Archive.Zip import Text.Pandoc.Definition import Text.Pandoc.Walk import Text.Pandoc.Class.PandocMonad (PandocMonad, report) import Text.Pandoc.Options (WriterOptions) import Text.Pandoc.Writers.Shared (fixDisplayMath) import Text.Pandoc.Writers.Powerpoint.Presentation (documentToPresentation) import Text.Pandoc.Writers.Powerpoint.Output (presentationToArchive) import qualified Data.ByteString.Lazy as BL writePowerpoint :: (PandocMonad m) => WriterOptions -- ^ Writer options -> Pandoc -- ^ Document to convert -> m BL.ByteString writePowerpoint opts (Pandoc meta blks) = do let blks' = walk fixDisplayMath blks let (pres, logMsgs) = documentToPresentation opts (Pandoc meta blks') mapM_ report logMsgs archv <- presentationToArchive opts meta pres return $ fromArchive archv ������pandoc-3.1.3/src/Text/Pandoc/Writers/Powerpoint/����������������������������������������������������0000755�0000000�0000000�00000000000�07346545000�017677� 5����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/Powerpoint/Output.hs�������������������������������������������0000644�0000000�0000000�00000351243�07346545000�021543� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE DeriveTraversable #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE PatternGuards #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TupleSections #-} {- | Module : Text.Pandoc.Writers.Powerpoint.Output Copyright : Copyright (C) 2017-2020 Jesse Rosenthal License : GNU GPL, version 2 or above Maintainer : Jesse Rosenthal <jrosenthal@jhu.edu> Stability : alpha Portability : portable Conversion of Presentation datatype (defined in Text.Pandoc.Writers.Powerpoint.Presentation) to a zip archive. -} module Text.Pandoc.Writers.Powerpoint.Output ( presentationToArchive ) where import Control.Monad ( MonadPlus(mplus), foldM, unless ) import Control.Monad.Except (throwError, catchError) import Control.Monad.Reader ( asks, MonadReader(local), ReaderT(runReaderT) ) import Control.Monad.State ( StateT, gets, modify, evalStateT ) import Codec.Archive.Zip import Data.List (intercalate, stripPrefix, nub, union, isPrefixOf, intersperse) import Data.Bifunctor (bimap) import Data.CaseInsensitive (CI) import qualified Data.CaseInsensitive as CI import Data.Default import Data.Foldable (toList) import Data.List.NonEmpty (nonEmpty, NonEmpty ((:|))) import Data.Ratio ((%), Ratio) import Data.Text (Text) import qualified Data.Text as T import Data.Text.Read (decimal) import Data.Time (formatTime, defaultTimeLocale) import Data.Time.Clock (UTCTime) import Data.Time.Clock.POSIX (utcTimeToPOSIXSeconds, posixSecondsToUTCTime) import Data.Traversable (for) import System.FilePath.Posix (splitDirectories, splitExtension, takeExtension, takeFileName) import Text.Pandoc.XML.Light as XML import Text.Pandoc.Definition import qualified Text.Pandoc.UTF8 as UTF8 import Text.Pandoc.Class.PandocMonad (PandocMonad) import Text.Pandoc.Error (PandocError(..)) import qualified Text.Pandoc.Class.PandocMonad as P import Text.Pandoc.Data (readDataFile, readDefaultDataFile) import Text.Pandoc.Options import Text.Pandoc.MIME import qualified Data.ByteString.Lazy as BL import Text.Pandoc.Writers.Shared (metaToContext) import Text.Pandoc.Writers.OOXML import qualified Data.Map as M import Data.Maybe (mapMaybe, listToMaybe, fromMaybe, maybeToList, catMaybes, isJust) import Text.Pandoc.ImageSize import Control.Applicative ((<|>)) import System.FilePath.Glob import Text.DocTemplates (FromContext(lookupContext), Context) import Text.DocLayout (literal) import Text.TeXMath import Text.Pandoc.Logging (LogMessage(PowerpointTemplateWarning)) import Text.Pandoc.Writers.Math (convertMath) import Text.Pandoc.Writers.Powerpoint.Presentation import Text.Pandoc.Shared (tshow, stringify) import Skylighting (fromColor) -- |The 'EMU' type is used to specify sizes in English Metric Units. type EMU = Integer -- |The 'pixelsToEmu' function converts a size in pixels to one -- in English Metric Units. It assumes a DPI of 72. pixelsToEmu :: Pixels -> EMU pixelsToEmu = (12700 *) -- This populates the global ids map with images already in the -- template, so the ids won't be used by images introduced by the -- user. initialGlobalIds :: Archive -> Archive -> M.Map FilePath Int initialGlobalIds refArchive distArchive = let archiveFiles = filesInArchive refArchive `union` filesInArchive distArchive mediaPaths = filter (isPrefixOf "ppt/media/image") archiveFiles go :: FilePath -> Maybe (FilePath, Int) go fp = do s <- stripPrefix "ppt/media/image" $ fst $ splitExtension fp (n, _) <- listToMaybe $ reads s return (fp, n) in M.fromList $ mapMaybe go mediaPaths getPresentationSize :: Archive -> Archive -> Maybe (Integer, Integer) getPresentationSize refArchive distArchive = do entry <- findEntryByPath "ppt/presentation.xml" refArchive `mplus` findEntryByPath "ppt/presentation.xml" distArchive presElement <- either (const Nothing) return $ parseXMLElement $ UTF8.toTextLazy $ fromEntry entry let ns = elemToNameSpaces presElement sldSize <- findChild (elemName ns "p" "sldSz") presElement cxS <- findAttr (QName "cx" Nothing Nothing) sldSize cyS <- findAttr (QName "cy" Nothing Nothing) sldSize cx <- readTextAsInteger cxS cy <- readTextAsInteger cyS return (cx `div` 12700, cy `div` 12700) readTextAsInteger :: Text -> Maybe Integer readTextAsInteger = either (const Nothing) (Just . fst) . Data.Text.Read.decimal data WriterEnv = WriterEnv { envRefArchive :: Archive , envDistArchive :: Archive , envUTCTime :: UTCTime , envOpts :: WriterOptions , envContext :: Context Text , envPresentationSize :: (Integer, Integer) , envSlideHasHeader :: Bool , envInList :: Bool , envInNoteSlide :: Bool , envCurSlideId :: Int , envPlaceholder :: Placeholder , envSlideIdMap :: M.Map SlideId Int -- maps the slide number to the -- corresponding notes id number. If there -- are no notes for a slide, there will be -- no entry in the map for it. , envSpeakerNotesIdMap :: M.Map Int Int , envInSpeakerNotes :: Bool , envSlideLayouts :: Maybe SlideLayouts , envOtherStyleIndents :: Maybe Indents } deriving (Show) instance Default WriterEnv where def = WriterEnv { envRefArchive = emptyArchive , envDistArchive = emptyArchive , envUTCTime = posixSecondsToUTCTime 0 , envOpts = def , envContext = mempty , envPresentationSize = (720, 540) , envSlideHasHeader = False , envInList = False , envInNoteSlide = False , envCurSlideId = 1 , envPlaceholder = Placeholder ObjType 0 , envSlideIdMap = mempty , envSpeakerNotesIdMap = mempty , envInSpeakerNotes = False , envSlideLayouts = Nothing , envOtherStyleIndents = Nothing } type SlideLayouts = SlideLayoutsOf SlideLayout data SlideLayoutsOf a = SlideLayouts { metadata :: a , title :: a , content :: a , twoColumn :: a , comparison :: a , contentWithCaption :: a , blank :: a } deriving (Show, Eq, Functor, Foldable, Traversable) data SlideLayout = SlideLayout { slElement :: Element , slInReferenceDoc :: Bool -- ^ True if the layout is in the provided reference doc, False if it's in -- the default reference doc. , slPath :: FilePath , slEntry :: Entry } deriving (Show) getSlideLayouts :: PandocMonad m => P m SlideLayouts getSlideLayouts = asks envSlideLayouts >>= maybe (throwError e) pure where e = PandocSomeError ("Slide layouts aren't defined, even though they should " <> "always be. This is a bug in pandoc.") -- | A placeholder within a layout, identified by type and index. -- -- E.g., @Placeholder ObjType 2@ is the third placeholder of type 'ObjType' in -- the layout. data Placeholder = Placeholder { placeholderType :: PHType , index :: Int } deriving (Show, Eq) -- | Paragraph indentation info. data Indents = Indents { level1 :: Maybe LevelIndents , level2 :: Maybe LevelIndents , level3 :: Maybe LevelIndents , level4 :: Maybe LevelIndents , level5 :: Maybe LevelIndents , level6 :: Maybe LevelIndents , level7 :: Maybe LevelIndents , level8 :: Maybe LevelIndents , level9 :: Maybe LevelIndents } deriving (Show, Eq) levelIndent :: Indents -> Int -> Maybe LevelIndents levelIndent is index = getter is where getter = case index of 0 -> level1 1 -> level2 2 -> level3 3 -> level4 4 -> level5 5 -> level6 6 -> level7 7 -> level8 8 -> level9 _ -> const Nothing data LevelIndents = LevelIndents { marL :: EMU , indent :: EMU } deriving (Show, Eq) data MediaInfo = MediaInfo { mInfoFilePath :: FilePath , mInfoLocalId :: Int , mInfoGlobalId :: Int , mInfoMimeType :: Maybe MimeType , mInfoExt :: Maybe T.Text , mInfoCaption :: Bool } deriving (Show, Eq) data WriterState = WriterState { stLinkIds :: M.Map Int (M.Map Int LinkTarget) -- (FP, Local ID, Global ID, Maybe Mime) , stMediaIds :: M.Map Int [MediaInfo] , stMediaGlobalIds :: M.Map FilePath Int , stFooterInfo :: Maybe FooterInfo } deriving (Show, Eq) instance Default WriterState where def = WriterState { stLinkIds = mempty , stMediaIds = mempty , stMediaGlobalIds = mempty , stFooterInfo = Nothing } type P m = ReaderT WriterEnv (StateT WriterState m) runP :: Monad m => WriterEnv -> WriterState -> P m a -> m a runP env st p = evalStateT (runReaderT p env) st -------------------------------------------------------------------- monospaceFont :: Monad m => P m T.Text monospaceFont = do vars <- asks envContext case lookupContext "monofont" vars of Just s -> return s Nothing -> return "Courier" fontSizeAttributes :: Monad m => RunProps -> P m [(Text, Text)] fontSizeAttributes RunProps { rPropForceSize = Just sz } = return [("sz", tshow $ sz * 100)] fontSizeAttributes _ = return [] copyFileToArchive :: PandocMonad m => Archive -> FilePath -> P m Archive copyFileToArchive arch fp = do refArchive <- asks envRefArchive distArchive <- asks envDistArchive case findEntryByPath fp refArchive `mplus` findEntryByPath fp distArchive of Nothing -> throwError $ PandocSomeError $ T.pack $ fp <> " missing in reference file" Just e -> return $ addEntryToArchive e arch alwaysInheritedPatterns :: [Pattern] alwaysInheritedPatterns = map compile [ "docProps/app.xml" , "ppt/slideLayouts/slideLayout*.xml" , "ppt/slideLayouts/_rels/slideLayout*.xml.rels" , "ppt/slideMasters/slideMaster1.xml" , "ppt/slideMasters/_rels/slideMaster1.xml.rels" , "ppt/theme/theme*.xml" , "ppt/theme/_rels/theme*.xml.rels" , "ppt/presProps.xml" , "ppt/tableStyles.xml" , "ppt/media/image*" , "ppt/fonts/*" ] -- We only look for these under special conditions contingentInheritedPatterns :: Presentation -> [Pattern] contingentInheritedPatterns pres = [] <> if presHasSpeakerNotes pres then map compile [ "ppt/notesMasters/notesMaster*.xml" , "ppt/notesMasters/_rels/notesMaster*.xml.rels" ] else [] inheritedPatterns :: Presentation -> [Pattern] inheritedPatterns pres = alwaysInheritedPatterns <> contingentInheritedPatterns pres patternToFilePaths :: PandocMonad m => Pattern -> P m [FilePath] patternToFilePaths pat = do refArchive <- asks envRefArchive distArchive <- asks envDistArchive let archiveFiles = filesInArchive refArchive `union` filesInArchive distArchive return $ filter (match pat) archiveFiles patternsToFilePaths :: PandocMonad m => [Pattern] -> P m [FilePath] patternsToFilePaths pats = concat <$> mapM patternToFilePaths pats -- Here are the files we'll require to make a Powerpoint document. If -- any of these are missing, we should error out of our build. requiredFiles :: [FilePath] requiredFiles = [ "docProps/app.xml" , "ppt/presProps.xml" , "ppt/slideLayouts/slideLayout1.xml" , "ppt/slideLayouts/_rels/slideLayout1.xml.rels" , "ppt/slideLayouts/slideLayout2.xml" , "ppt/slideLayouts/_rels/slideLayout2.xml.rels" , "ppt/slideLayouts/slideLayout3.xml" , "ppt/slideLayouts/_rels/slideLayout3.xml.rels" , "ppt/slideLayouts/slideLayout4.xml" , "ppt/slideLayouts/_rels/slideLayout4.xml.rels" , "ppt/slideMasters/slideMaster1.xml" , "ppt/slideMasters/_rels/slideMaster1.xml.rels" , "ppt/theme/theme1.xml" , "ppt/tableStyles.xml" ] presentationToArchiveP :: PandocMonad m => Presentation -> P m Archive presentationToArchiveP p@(Presentation docProps slides) = do filePaths <- patternsToFilePaths $ inheritedPatterns p -- make sure all required files are available: let missingFiles = filter (`notElem` filePaths) requiredFiles unless (null missingFiles) (throwError $ PandocSomeError $ "The following required files are missing:\n" <> T.unlines (map (T.pack . (" " <>)) missingFiles) ) newArch <- foldM copyFileToArchive emptyArchive filePaths -- Add any layouts taken from the default archive, -- overwriting any already added. slideLayouts <- getSlideLayouts let f layout = if not (slInReferenceDoc layout) then addEntryToArchive (slEntry layout) else id let newArch' = foldr f newArch slideLayouts master <- getMaster refArchive <- asks envRefArchive distArchive <- asks envDistArchive presentationElement <- parseXml refArchive distArchive "ppt/presentation.xml" modify (\s -> s {stFooterInfo = getFooterInfo (dcDate docProps) slideLayouts master presentationElement }) -- Update the master to make sure it includes any layouts we've just added masterRels <- getMasterRels let (updatedMasterElem, updatedMasterRelElem) = updateMasterElems slideLayouts master masterRels updatedMasterEntry <- elemToEntry "ppt/slideMasters/slideMaster1.xml" updatedMasterElem updatedMasterRelEntry <- elemToEntry "ppt/slideMasters/_rels/slideMaster1.xml.rels" updatedMasterRelElem -- we make a modified ppt/viewProps.xml out of the presentation viewProps viewPropsEntry <- makeViewPropsEntry -- we make a docProps/core.xml entry out of the presentation docprops docPropsEntry <- docPropsToEntry docProps -- we make a docProps/custom.xml entry out of the custom properties docCustomPropsEntry <- docCustomPropsToEntry docProps -- we make this ourself in case there's something unexpected in the -- one in the reference doc. relsEntry <- topLevelRelsEntry -- presentation entry and rels. (presentationRIdUpdateData, presRelsEntry) <- presentationToRelsEntry p presEntry <- presentationToPresEntry presentationRIdUpdateData p slideEntries <- mapM slideToEntry slides slideRelEntries <- mapM slideToSlideRelEntry slides spkNotesEntries <- catMaybes <$> mapM slideToSpeakerNotesEntry slides spkNotesRelEntries <- catMaybes <$> mapM slideToSpeakerNotesRelEntry slides -- These have to come after everything, because they need the info -- built up in the state. mediaEntries <- makeMediaEntries contentTypesEntry <- presentationToContentTypes p >>= contentTypesToEntry -- fold everything into our inherited archive and return it. return $ foldr addEntryToArchive newArch' $ slideEntries <> slideRelEntries <> spkNotesEntries <> spkNotesRelEntries <> mediaEntries <> [updatedMasterEntry, updatedMasterRelEntry] <> [contentTypesEntry, docPropsEntry, docCustomPropsEntry, relsEntry, presEntry, presRelsEntry, viewPropsEntry] updateMasterElems :: SlideLayouts -> Element -> Element -> (Element, Element) updateMasterElems layouts master masterRels = (updatedMaster, updatedMasterRels) where updatedMaster = master { elContent = updateSldLayoutIdLst <$> elContent master } (updatedRelationshipIds, updatedMasterRels) = addLayoutRels masterRels updateSldLayoutIdLst :: Content -> Content updateSldLayoutIdLst (Elem e) = case elName e of (QName "sldLayoutIdLst" _ _) -> let mkChild relationshipId (lastId, children) = let thisId = lastId + 1 newChild = Element { elName = QName "sldLayoutId" Nothing (Just "p") , elAttribs = [ Attr (QName "id" Nothing Nothing) (T.pack (show thisId)) , Attr (QName "id" Nothing (Just "r")) relationshipId ] , elContent = [] , elLine = Nothing } in (thisId, Elem newChild : children) newChildren = snd (foldr mkChild (maxIdNumber' e, []) updatedRelationshipIds) in Elem e { elContent = elContent e <> newChildren } _ -> Elem e updateSldLayoutIdLst c = c addLayoutRels :: Element -> ([Text], Element) addLayoutRels e = let layoutsToAdd = filter (\l -> not (slInReferenceDoc l) && isNew e l) (toList layouts) newRelationships = snd (foldr mkRelationship (maxIdNumber e, []) layoutsToAdd) newRelationshipIds = mapMaybe (findElemAttr (QName "Id" Nothing Nothing)) newRelationships mkRelationship layout (lastId, relationships) = let thisId = lastId + 1 slideLayoutPath = "../slideLayouts/" <> T.pack (takeFileName (slPath layout)) newRelationship = Element { elName = QName "Relationship" Nothing Nothing , elAttribs = [ Attr (QName "Id" Nothing Nothing) ("rId" <> T.pack (show thisId)) , Attr (QName "Type" Nothing Nothing) "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout" , Attr (QName "Target" Nothing Nothing) slideLayoutPath ] , elContent = [] , elLine = Nothing } in (thisId, Elem newRelationship : relationships) in (newRelationshipIds, e {elContent = elContent e <> newRelationships}) -- Whether the layout needs to be added to the Relationships element. isNew :: Element -> SlideLayout -> Bool isNew relationships SlideLayout{..} = let toDetails = fmap (takeFileName . T.unpack) . findElemAttr (QName "Target" Nothing Nothing) in takeFileName slPath `notElem` mapMaybe toDetails (elContent relationships) findElemAttr :: QName -> Content -> Maybe Text findElemAttr attr (Elem e) = findAttr attr e findElemAttr _ _ = Nothing maxIdNumber :: Element -> Integer maxIdNumber relationships = maximum (0 : idNumbers) where idNumbers = mapMaybe (readTextAsInteger . T.drop 3) idAttributes idAttributes = mapMaybe getIdAttribute (elContent relationships) getIdAttribute (Elem e) = findAttr (QName "Id" Nothing Nothing) e getIdAttribute _ = Nothing maxIdNumber' :: Element -> Integer maxIdNumber' sldLayouts = maximum (0 : idNumbers) where idNumbers = mapMaybe readTextAsInteger idAttributes idAttributes = mapMaybe getIdAttribute (elContent sldLayouts) getIdAttribute (Elem e) = findAttr (QName "id" Nothing Nothing) e getIdAttribute _ = Nothing data FooterInfo = FooterInfo { fiDate :: SlideLayoutsOf (Maybe Element) , fiFooter :: SlideLayoutsOf (Maybe Element) , fiSlideNumber :: SlideLayoutsOf (Maybe Element) , fiShowOnFirstSlide :: Bool } deriving (Show, Eq) getFooterInfo :: Maybe Text -> SlideLayouts -> Element -> Element -> Maybe FooterInfo getFooterInfo date layouts master presentation = do let ns = elemToNameSpaces master hf <- findChild (elemName ns "p" "hf") master let fiDate = let f layoutDate = case date of Nothing -> layoutDate Just d -> if dateIsAutomatic (elemToNameSpaces layoutDate) layoutDate then layoutDate else replaceDate d layoutDate in fmap f . getShape "dt" hf . slElement <$> layouts fiFooter = getShape "ftr" hf . slElement <$> layouts fiSlideNumber = getShape "sldNum" hf . slElement <$> layouts fiShowOnFirstSlide = fromMaybe True (getBooleanAttribute "showSpecialPlsOnTitleSld" presentation) pure FooterInfo{..} where getShape t hf layout = if fromMaybe True (getBooleanAttribute t hf) then do let ns = elemToNameSpaces layout cSld <- findChild (elemName ns "p" "cSld") layout spTree <- findChild (elemName ns "p" "spTree") cSld let containsPlaceholder sp = fromMaybe False $ do nvSpPr <- findChild (elemName ns "p" "nvSpPr") sp nvPr <- findChild (elemName ns "p" "nvPr") nvSpPr ph <- findChild (elemName ns "p" "ph") nvPr placeholderType <- findAttr (QName "type" Nothing Nothing) ph pure (placeholderType == t) listToMaybe (filterChildren containsPlaceholder spTree) else Nothing dateIsAutomatic :: NameSpaces -> Element -> Bool dateIsAutomatic ns shape = isJust $ do txBody <- findChild (elemName ns "p" "txBody") shape p <- findChild (elemName ns "a" "p") txBody findChild (elemName ns "a" "fld") p replaceDate :: Text -> Element -> Element replaceDate newDate e = e { elContent = case (elName e) of QName "t" _ (Just "a") -> [ Text (CData { cdVerbatim = CDataText , cdData = newDate , cdLine = Nothing }) ] _ -> ifElem (replaceDate newDate) <$> elContent e } ifElem :: (Element -> Element) -> (Content -> Content) ifElem f (Elem e) = Elem (f e) ifElem _ c = c getBooleanAttribute t e = (`elem` ["1", "true"]) <$> (findAttr (QName t Nothing Nothing) e) footerElements :: PandocMonad m => (forall a. SlideLayoutsOf a -> a) -> P m [Content] footerElements layout = do footerInfo <- gets stFooterInfo pure $ Elem <$> (toList (footerInfo >>= layout . fiDate) <> toList (footerInfo >>= layout . fiFooter) <> toList (footerInfo >>= layout . fiSlideNumber)) makeSlideIdMap :: Presentation -> M.Map SlideId Int makeSlideIdMap (Presentation _ slides) = M.fromList $ map slideId slides `zip` [1..] makeSpeakerNotesMap :: Presentation -> M.Map Int Int makeSpeakerNotesMap (Presentation _ slides) = M.fromList $ mapMaybe f (slides `zip` [1..]) `zip` [1..] where f (Slide _ _ notes _, n) = if notes == mempty then Nothing else Just n presentationToArchive :: PandocMonad m => WriterOptions -> Meta -> Presentation -> m Archive presentationToArchive opts meta pres = do distArchive <- toArchive . BL.fromStrict <$> readDefaultDataFile "reference.pptx" refArchive <- case writerReferenceDoc opts of Just f -> toArchive . BL.fromStrict . fst <$> P.fetchItem (T.pack f) Nothing -> toArchive . BL.fromStrict <$> readDataFile "reference.pptx" let (referenceLayouts, defaultReferenceLayouts) = (getLayoutsFromArchive refArchive, getLayoutsFromArchive distArchive) let layoutTitles = SlideLayouts { metadata = "Title Slide" :: Text , title = "Section Header" , content = "Title and Content" , twoColumn = "Two Content" , comparison = "Comparison" , contentWithCaption = "Content with Caption" , blank = "Blank" } layouts <- for layoutTitles $ \layoutTitle -> do let layout = M.lookup (CI.mk layoutTitle) referenceLayouts let defaultLayout = M.lookup (CI.mk layoutTitle) defaultReferenceLayouts case (layout, defaultLayout) of (Nothing, Nothing) -> throwError (PandocSomeError ("Couldn't find layout named \"" <> layoutTitle <> "\" in the provided " <> "reference doc or in the default " <> "reference doc included with pandoc.")) (Nothing, Just ((element, path, entry) :| _)) -> do P.report (PowerpointTemplateWarning ("Couldn't find layout named \"" <> layoutTitle <> "\" in provided " <> "reference doc. Falling back to " <> "the default included with pandoc.")) pure SlideLayout { slElement = element , slPath = path , slEntry = entry , slInReferenceDoc = False } (Just ((element, path, entry) :| _), _ ) -> pure SlideLayout { slElement = element , slPath = path , slEntry = entry , slInReferenceDoc = True } master <- getMaster' refArchive distArchive let otherStyleIndents = do let ns = elemToNameSpaces master txStyles <- findChild (elemName ns "p" "txStyles") master otherStyle <- findChild (elemName ns "p" "otherStyle") txStyles let makeLevelIndents name = do e <- findChild (elemName ns "a" name) otherStyle pure LevelIndents { indent = fromMaybe (-342900) (findAttr (QName "indent" Nothing Nothing) e >>= readTextAsInteger) , marL = fromMaybe 347663 (findAttr (QName "marL" Nothing Nothing) e >>= readTextAsInteger) } pure Indents { level1 = makeLevelIndents "lvl1pPr" , level2 = makeLevelIndents "lvl2pPr" , level3 = makeLevelIndents "lvl3pPr" , level4 = makeLevelIndents "lvl4pPr" , level5 = makeLevelIndents "lvl5pPr" , level6 = makeLevelIndents "lvl6pPr" , level7 = makeLevelIndents "lvl7pPr" , level8 = makeLevelIndents "lvl8pPr" , level9 = makeLevelIndents "lvl9pPr" } utctime <- P.getTimestamp presSize <- case getPresentationSize refArchive distArchive of Just sz -> return sz Nothing -> throwError $ PandocSomeError "Could not determine presentation size" -- note, we need writerTemplate to be Just _ or metaToContext does -- nothing context <- metaToContext opts{ writerTemplate = writerTemplate opts <|> Just mempty } (return . literal . stringify) (return . literal . stringify) meta let env = def { envRefArchive = refArchive , envDistArchive = distArchive , envUTCTime = utctime , envOpts = opts , envContext = context , envPresentationSize = presSize , envSlideIdMap = makeSlideIdMap pres , envSpeakerNotesIdMap = makeSpeakerNotesMap pres , envSlideLayouts = Just layouts , envOtherStyleIndents = otherStyleIndents } let st = def { stMediaGlobalIds = initialGlobalIds refArchive distArchive } runP env st $ presentationToArchiveP pres -- | Get all slide layouts from an archive, as a map where the layout's name -- gives the map key. -- -- For each layout, the map contains its XML representation, its path within -- the archive, and the archive entry. getLayoutsFromArchive :: Archive -> M.Map (CI Text) (NonEmpty (Element, FilePath, Entry)) getLayoutsFromArchive archive = M.fromListWith (<>) ((\t@(e, _, _) -> (CI.mk (name e), pure t)) <$> layouts) where layouts :: [(Element, FilePath, Entry)] layouts = mapMaybe findElementByPath paths parseXml' entry = case parseXMLElement (UTF8.toTextLazy (fromEntry entry)) of Left _ -> Nothing Right element -> Just element findElementByPath :: FilePath -> Maybe (Element, FilePath, Entry) findElementByPath path = do entry <- findEntryByPath path archive element <- parseXml' entry pure (element, path, entry) paths = filter (match (compile "ppt/slideLayouts/slideLayout*.xml")) (filesInArchive archive) name element = fromMaybe "Untitled layout" $ do let ns = elemToNameSpaces element cSld <- findChild (elemName ns "p" "cSld") element findAttr (QName "name" Nothing Nothing) cSld -------------------------------------------------- -- Check to see if the presentation has speaker notes. This will -- influence whether we import the notesMaster template. presHasSpeakerNotes :: Presentation -> Bool presHasSpeakerNotes (Presentation _ slides) = not $ all ((mempty ==) . slideSpeakerNotes) slides curSlideHasSpeakerNotes :: PandocMonad m => P m Bool curSlideHasSpeakerNotes = M.member <$> asks envCurSlideId <*> asks envSpeakerNotesIdMap -------------------------------------------------- getLayout :: PandocMonad m => Layout -> P m Element getLayout layout = getElement <$> getSlideLayouts where getElement = slElement . case layout of MetadataSlide{} -> metadata TitleSlide{} -> title ContentSlide{} -> content TwoColumnSlide{} -> twoColumn ComparisonSlide{} -> comparison ContentWithCaptionSlide{} -> contentWithCaption BlankSlide{} -> blank shapeHasId :: NameSpaces -> T.Text -> Element -> Bool shapeHasId ns ident element = getShapeId ns element == Just ident getShapeId :: NameSpaces -> Element -> Maybe Text getShapeId ns element = do nvSpPr <- findChild (elemName ns "p" "nvSpPr") element cNvPr <- findChild (elemName ns "p" "cNvPr") nvSpPr findAttr (QName "id" Nothing Nothing) cNvPr type ShapeId = Integer getContentShape :: PandocMonad m => NameSpaces -> Element -> P m (Maybe ShapeId, Element) getContentShape ns spTreeElem | isElem ns "p" "spTree" spTreeElem = do ph@Placeholder{index, placeholderType} <- asks envPlaceholder case drop index (getShapesByPlaceHolderType ns spTreeElem placeholderType) of sp : _ -> let shapeId = getShapeId ns sp >>= readTextAsInteger in return (shapeId, sp) [] -> throwError $ PandocSomeError $ missingPlaceholderMessage ph getContentShape _ _ = throwError $ PandocSomeError "Attempted to find content on non shapeTree" missingPlaceholderMessage :: Placeholder -> Text missingPlaceholderMessage Placeholder{..} = "Could not find a " <> ordinal <> " placeholder of type " <> placeholderText where ordinal = T.pack (show index) <> case (index `mod` 100, index `mod` 10) of (11, _) -> "th" (12, _) -> "th" (13, _) -> "th" (_, 1) -> "st" (_, 2) -> "nd" (_, 3) -> "rd" _ -> "th" placeholderText = case placeholderType of ObjType -> "obj (or nothing)" PHType t -> t getShapeDimensions :: NameSpaces -> Element -> Maybe ((Integer, Integer), (Integer, Integer)) getShapeDimensions ns element | isElem ns "p" "sp" element = do spPr <- findChild (elemName ns "p" "spPr") element xfrm <- findChild (elemName ns "a" "xfrm") spPr off <- findChild (elemName ns "a" "off") xfrm xS <- findAttr (QName "x" Nothing Nothing) off yS <- findAttr (QName "y" Nothing Nothing) off ext <- findChild (elemName ns "a" "ext") xfrm cxS <- findAttr (QName "cx" Nothing Nothing) ext cyS <- findAttr (QName "cy" Nothing Nothing) ext x <- readTextAsInteger xS y <- readTextAsInteger yS cx <- readTextAsInteger cxS cy <- readTextAsInteger cyS return ((x `div` 12700, y `div` 12700), (cx `div` 12700, cy `div` 12700)) | otherwise = Nothing getMasterShapeDimensionsById :: T.Text -> Element -> Maybe ((Integer, Integer), (Integer, Integer)) getMasterShapeDimensionsById ident master = do let ns = elemToNameSpaces master cSld <- findChild (elemName ns "p" "cSld") master spTree <- findChild (elemName ns "p" "spTree") cSld sp <- filterChild (\e -> isElem ns "p" "sp" e && shapeHasId ns ident e) spTree getShapeDimensions ns sp getContentShapeSize :: PandocMonad m => NameSpaces -> Element -> Element -> P m ((Integer, Integer), (Integer, Integer)) getContentShapeSize ns layout master | isElem ns "p" "sldLayout" layout , Just cSld <- findChild (elemName ns "p" "cSld") layout , Just spTree <- findChild (elemName ns "p" "spTree") cSld = do (_, sp) <- getContentShape ns spTree case getShapeDimensions ns sp of Just sz -> return sz Nothing -> do let mbSz = findChild (elemName ns "p" "nvSpPr") sp >>= findChild (elemName ns "p" "cNvPr") >>= findAttr (QName "id" Nothing Nothing) >>= flip getMasterShapeDimensionsById master case mbSz of Just sz' -> return sz' Nothing -> throwError $ PandocSomeError "Couldn't find necessary content shape size" getContentShapeSize _ _ _ = throwError $ PandocSomeError "Attempted to find content shape size in non-layout" buildSpTree :: NameSpaces -> Element -> [Content] -> Element buildSpTree ns spTreeElem newShapes = emptySpTreeElem { elContent = newContent } where newContent = elContent emptySpTreeElem <> newShapes emptySpTreeElem = spTreeElem { elContent = filter fn (elContent spTreeElem) } fn :: Content -> Bool fn (Elem e) = isElem ns "p" "nvGrpSpPr" e || isElem ns "p" "grpSpPr" e fn _ = True replaceNamedChildren :: NameSpaces -> Text -> Text -> [Element] -> Element -> Element replaceNamedChildren ns prefix name newKids element = element { elContent = concat $ fun True $ elContent element } where fun :: Bool -> [Content] -> [[Content]] fun _ [] = [] fun switch (Elem e : conts) | isElem ns prefix name e = if switch then map Elem newKids : fun False conts else fun False conts fun switch (cont : conts) = [cont] : fun switch conts ---------------------------------------------------------------- registerLink :: PandocMonad m => LinkTarget -> P m Int registerLink link = do curSlideId <- asks envCurSlideId linkReg <- gets stLinkIds mediaReg <- gets stMediaIds hasSpeakerNotes <- curSlideHasSpeakerNotes let maxLinkId = case M.lookup curSlideId linkReg >>= nonEmpty . M.keys of Just xs -> maximum xs Nothing | hasSpeakerNotes -> 2 | otherwise -> 1 maxMediaId = case M.lookup curSlideId mediaReg >>= nonEmpty of Just mInfos -> maximum $ fmap mInfoLocalId mInfos Nothing | hasSpeakerNotes -> 2 | otherwise -> 1 maxId = max maxLinkId maxMediaId slideLinks = case M.lookup curSlideId linkReg of Just mp -> M.insert (maxId + 1) link mp Nothing -> M.singleton (maxId + 1) link modify $ \st -> st{ stLinkIds = M.insert curSlideId slideLinks linkReg} return $ maxId + 1 registerMedia :: PandocMonad m => FilePath -> [ParaElem] -> P m MediaInfo registerMedia fp caption = do curSlideId <- asks envCurSlideId linkReg <- gets stLinkIds mediaReg <- gets stMediaIds globalIds <- gets stMediaGlobalIds hasSpeakerNotes <- curSlideHasSpeakerNotes let maxLinkId = case M.lookup curSlideId linkReg >>= nonEmpty . M.keys of Just ks -> maximum ks Nothing | hasSpeakerNotes -> 2 | otherwise -> 1 maxMediaId = case M.lookup curSlideId mediaReg >>= nonEmpty of Just mInfos -> maximum $ fmap mInfoLocalId mInfos Nothing | hasSpeakerNotes -> 2 | otherwise -> 1 maxLocalId = max maxLinkId maxMediaId maxGlobalId = maybe 0 maximum $ nonEmpty $ M.elems globalIds (imgBytes, mbMt) <- P.fetchItem $ T.pack fp let imgExt = (mbMt >>= extensionFromMimeType >>= (\x -> return $ "." <> x)) <|> case imageType imgBytes of Just Png -> Just ".png" Just Jpeg -> Just ".jpeg" Just Gif -> Just ".gif" Just Pdf -> Just ".pdf" Just Eps -> Just ".eps" Just Svg -> Just ".svg" Just Emf -> Just ".emf" Just Tiff -> Just ".tiff" Nothing -> Nothing let newGlobalId = fromMaybe (maxGlobalId + 1) (M.lookup fp globalIds) let newGlobalIds = M.insert fp newGlobalId globalIds let mediaInfo = MediaInfo { mInfoFilePath = fp , mInfoLocalId = maxLocalId + 1 , mInfoGlobalId = newGlobalId , mInfoMimeType = mbMt , mInfoExt = imgExt , mInfoCaption = (not . null) caption } let slideMediaInfos = case M.lookup curSlideId mediaReg of Just minfos -> mediaInfo : minfos Nothing -> [mediaInfo] modify $ \st -> st{ stMediaIds = M.insert curSlideId slideMediaInfos mediaReg , stMediaGlobalIds = newGlobalIds } return mediaInfo makeMediaEntry :: PandocMonad m => MediaInfo -> P m Entry makeMediaEntry mInfo = do epochtime <- floor . utcTimeToPOSIXSeconds <$> asks envUTCTime (imgBytes, _) <- P.fetchItem (T.pack $ mInfoFilePath mInfo) let ext = fromMaybe "" (mInfoExt mInfo) let fp = "ppt/media/image" <> show (mInfoGlobalId mInfo) <> T.unpack ext return $ toEntry fp epochtime $ BL.fromStrict imgBytes makeMediaEntries :: PandocMonad m => P m [Entry] makeMediaEntries = do mediaInfos <- gets stMediaIds let allInfos = mconcat $ M.elems mediaInfos mapM makeMediaEntry allInfos -- -- | Scales the image to fit the page -- -- sizes are passed in emu -- fitToPage' :: (Double, Double) -- image size in emu -- -> Integer -- pageWidth -- -> Integer -- pageHeight -- -> (Integer, Integer) -- imagesize -- fitToPage' (x, y) pageWidth pageHeight -- -- Fixes width to the page width and scales the height -- | x <= fromIntegral pageWidth && y <= fromIntegral pageHeight = -- (floor x, floor y) -- | x / fromIntegral pageWidth > y / fromIntegral pageWidth = -- (pageWidth, floor $ ((fromIntegral pageWidth) / x) * y) -- | otherwise = -- (floor $ ((fromIntegral pageHeight) / y) * x, pageHeight) -- positionImage :: (Double, Double) -> Integer -> Integer -> (Integer, Integer) -- positionImage (x, y) pageWidth pageHeight = -- let (x', y') = fitToPage' (x, y) pageWidth pageHeight -- in -- ((pageWidth - x') `div` 2, (pageHeight - y') `div` 2) getMaster :: PandocMonad m => P m Element getMaster = do refArchive <- asks envRefArchive distArchive <- asks envDistArchive getMaster' refArchive distArchive getMaster' :: PandocMonad m => Archive -> Archive -> m Element getMaster' refArchive distArchive = parseXml refArchive distArchive "ppt/slideMasters/slideMaster1.xml" getMasterRels :: PandocMonad m => P m Element getMasterRels = do refArchive <- asks envRefArchive distArchive <- asks envDistArchive parseXml refArchive distArchive "ppt/slideMasters/_rels/slideMaster1.xml.rels" -- We want to get the header dimensions, so we can make sure that the -- image goes underneath it. We only use this in a content slide if it -- has a header. -- getHeaderSize :: PandocMonad m => P m ((Integer, Integer), (Integer, Integer)) -- getHeaderSize = do -- master <- getMaster -- let ns = elemToNameSpaces master -- sps = [master] >>= -- findChildren (elemName ns "p" "cSld") >>= -- findChildren (elemName ns "p" "spTree") >>= -- findChildren (elemName ns "p" "sp") -- mbXfrm = -- listToMaybe (filter (shapeHasName ns "Title Placeholder 1") sps) >>= -- findChild (elemName ns "p" "spPr") >>= -- findChild (elemName ns "a" "xfrm") -- xoff = mbXfrm >>= -- findChild (elemName ns "a" "off") >>= -- findAttr (QName "x" Nothing Nothing) >>= -- (listToMaybe . (\s -> reads s :: [(Integer, String)])) -- yoff = mbXfrm >>= -- findChild (elemName ns "a" "off") >>= -- findAttr (QName "y" Nothing Nothing) >>= -- (listToMaybe . (\s -> reads s :: [(Integer, String)])) -- xext = mbXfrm >>= -- findChild (elemName ns "a" "ext") >>= -- findAttr (QName "cx" Nothing Nothing) >>= -- (listToMaybe . (\s -> reads s :: [(Integer, String)])) -- yext = mbXfrm >>= -- findChild (elemName ns "a" "ext") >>= -- findAttr (QName "cy" Nothing Nothing) >>= -- (listToMaybe . (\s -> reads s :: [(Integer, String)])) -- off = case xoff of -- Just (xoff', _) | Just (yoff',_) <- yoff -> (xoff', yoff') -- _ -> (1043490, 1027664) -- ext = case xext of -- Just (xext', _) | Just (yext',_) <- yext -> (xext', yext') -- _ -> (7024744, 1143000) -- return $ (off, ext) -- Hard-coded for now -- captionPosition :: ((Integer, Integer), (Integer, Integer)) -- captionPosition = ((457200, 6061972), (8229600, 527087)) captionHeight :: Integer captionHeight = 40 createCaption :: PandocMonad m => ((Integer, Integer), (Integer, Integer)) -> [ParaElem] -> P m (ShapeId, Element) createCaption contentShapeDimensions paraElements = do let para = Paragraph def{pPropAlign = Just AlgnCenter} paraElements elements <- mapM paragraphToElement [para] let ((x, y), (cx, cy)) = contentShapeDimensions let txBody = mknode "p:txBody" [] $ [mknode "a:bodyPr" [] (), mknode "a:lstStyle" [] ()] <> elements return ( 1 , mknode "p:sp" [] [ mknode "p:nvSpPr" [] [ mknode "p:cNvPr" [("id","1"), ("name","TextBox 3")] () , mknode "p:cNvSpPr" [("txBox", "1")] () , mknode "p:nvPr" [] () ] , mknode "p:spPr" [] [ mknode "a:xfrm" [] [ mknode "a:off" [("x", tshow $ 12700 * x), ("y", tshow $ 12700 * (y + cy - captionHeight))] () , mknode "a:ext" [("cx", tshow $ 12700 * cx), ("cy", tshow $ 12700 * captionHeight)] () ] , mknode "a:prstGeom" [("prst", "rect")] [ mknode "a:avLst" [] () ] , mknode "a:noFill" [] () ] , txBody ] ) makePicElements :: PandocMonad m => Element -> PicProps -> MediaInfo -> Text -> [ParaElem] -> P m [(ShapeId, Element)] makePicElements layout picProps mInfo titleText alt = do opts <- asks envOpts (pageWidth, pageHeight) <- asks envPresentationSize -- hasHeader <- asks envSlideHasHeader let hasCaption = mInfoCaption mInfo (imgBytes, _) <- P.fetchItem (T.pack $ mInfoFilePath mInfo) let (pxX, pxY) = case imageSize opts imgBytes of Right sz -> sizeInPixels sz Left _ -> sizeInPixels def master <- getMaster let ns = elemToNameSpaces layout ((x, y), (cx, cytmp)) <- getContentShapeSize ns layout master `catchError` (\_ -> return ((0, 0), (pageWidth, pageHeight))) let cy = if hasCaption then cytmp - captionHeight else cytmp let imgRatio = fromIntegral pxX / fromIntegral pxY :: Double boxRatio = fromIntegral cx / fromIntegral cy :: Double (dimX, dimY) = if imgRatio > boxRatio then (fromIntegral cx, fromIntegral cx / imgRatio) else (fromIntegral cy * imgRatio, fromIntegral cy) (dimX', dimY') = (round dimX * 12700, round dimY * 12700) :: (Integer, Integer) (xoff, yoff) = (fromIntegral x + (fromIntegral cx - dimX) / 2, fromIntegral y + (fromIntegral cy - dimY) / 2) (xoff', yoff') = (round xoff * 12700, round yoff * 12700) :: (Integer, Integer) let cNvPicPr = mknode "p:cNvPicPr" [] $ mknode "a:picLocks" [("noGrp","1") ,("noChangeAspect","1")] () -- cNvPr will contain the link information so we do that separately, -- and register the link if necessary. let description = (if T.null titleText then "" else titleText <> "\n\n") <> T.pack (mInfoFilePath mInfo) let cNvPrAttr = [("descr", description), ("id","0"), ("name","Picture 1")] cNvPr <- case picPropLink picProps of Just link -> do idNum <- registerLink link return $ mknode "p:cNvPr" cNvPrAttr $ mknode "a:hlinkClick" [("r:id", "rId" <> tshow idNum)] () Nothing -> return $ mknode "p:cNvPr" cNvPrAttr () let nvPicPr = mknode "p:nvPicPr" [] [ cNvPr , cNvPicPr , mknode "p:nvPr" [] ()] let blipFill = mknode "p:blipFill" [] [ mknode "a:blip" [("r:embed", "rId" <> tshow (mInfoLocalId mInfo))] () , mknode "a:stretch" [] $ mknode "a:fillRect" [] () ] let xfrm = mknode "a:xfrm" [] [ mknode "a:off" [("x", tshow xoff'), ("y", tshow yoff')] () , mknode "a:ext" [("cx", tshow dimX') ,("cy", tshow dimY')] () ] let prstGeom = mknode "a:prstGeom" [("prst","rect")] $ mknode "a:avLst" [] () let ln = mknode "a:ln" [("w","9525")] [ mknode "a:noFill" [] () , mknode "a:headEnd" [] () , mknode "a:tailEnd" [] () ] let spPr = mknode "p:spPr" [("bwMode","auto")] [xfrm, prstGeom, mknode "a:noFill" [] (), ln] let picShape = ( 0 , mknode "p:pic" [] [ nvPicPr , blipFill , spPr ] ) -- And now, maybe create the caption: if hasCaption then do cap <- createCaption ((x, y), (cx, cytmp)) alt return [picShape, cap] else return [picShape] consolidateRuns :: [ParaElem] -> [ParaElem] consolidateRuns [] = [] consolidateRuns (Run pr1 s1 : Run pr2 s2 : xs) | pr1 == pr2 = consolidateRuns (Run pr1 (s1 <> s2) : xs) consolidateRuns (x:xs) = x : consolidateRuns xs paraElemToElements :: PandocMonad m => ParaElem -> P m [Content] paraElemToElements Break = return [Elem $ mknode "a:br" [] ()] paraElemToElements (Run rpr s) = do sizeAttrs <- fontSizeAttributes rpr let attrs = sizeAttrs <> ( [("b", "1") | rPropBold rpr]) <> ( [("i", "1") | rPropItalics rpr]) <> ( [("u", "sng") | rPropUnderline rpr]) <> (case rStrikethrough rpr of Just NoStrike -> [("strike", "noStrike")] Just SingleStrike -> [("strike", "sngStrike")] Just DoubleStrike -> [("strike", "dblStrike")] Nothing -> []) <> (case rBaseline rpr of Just n -> [("baseline", tshow n)] Nothing -> []) <> (case rCap rpr of Just NoCapitals -> [("cap", "none")] Just SmallCapitals -> [("cap", "small")] Just AllCapitals -> [("cap", "all")] Nothing -> []) <> [] linkProps <- case rLink rpr of Just link -> do idNum <- registerLink link -- first we have to make sure that if it's an -- anchor, it's in the anchor map. If not, there's -- no link. return $ case link of InternalTarget _ -> let linkAttrs = [ ("r:id", "rId" <> tshow idNum) , ("action", "ppaction://hlinksldjump") ] in [mknode "a:hlinkClick" linkAttrs ()] -- external ExternalTarget _ -> let linkAttrs = [ ("r:id", "rId" <> tshow idNum) ] in [mknode "a:hlinkClick" linkAttrs ()] Nothing -> return [] let colorContents = case rSolidFill rpr of Just color -> case fromColor color of '#':hx -> [mknode "a:solidFill" [] [mknode "a:srgbClr" [("val", T.toUpper $ T.pack hx)] ()]] _ -> [] Nothing -> [] codeFont <- monospaceFont let codeContents = [mknode "a:latin" [("typeface", codeFont)] () | rPropCode rpr] let propContents = linkProps <> colorContents <> codeContents return [Elem $ mknode "a:r" [] [ mknode "a:rPr" attrs propContents , mknode "a:t" [] s ]] paraElemToElements (MathElem mathType texStr) = do isInSpkrNotes <- asks envInSpeakerNotes if isInSpkrNotes then paraElemToElements $ Run def $ unTeXString texStr else do res <- convertMath writeOMML mathType (unTeXString texStr) case fromXLElement <$> res of Right r -> return [Elem $ mknode "a14:m" [] $ addMathInfo r] Left (Str s) -> paraElemToElements (Run def s) Left _ -> throwError $ PandocShouldNeverHappenError "non-string math fallback" paraElemToElements (RawOOXMLParaElem str) = return [Text (CData CDataRaw str Nothing)] -- This is a bit of a kludge -- really requires adding an option to -- TeXMath, but since that's a different package, we'll do this one -- step at a time. addMathInfo :: Element -> Element addMathInfo element = let mathspace = Attr { attrKey = QName "m" Nothing (Just "xmlns") , attrVal = "http://schemas.openxmlformats.org/officeDocument/2006/math" } in add_attr mathspace element -- We look through the element to see if it contains an a14:m -- element. If so, we surround it. This is a bit ugly, but it seems -- more dependable than looking through shapes for math. Plus this is -- an xml implementation detail, so it seems to make sense to do it at -- the xml level. surroundWithMathAlternate :: Element -> Element surroundWithMathAlternate element = case findElement (QName "m" Nothing (Just "a14")) element of Just _ -> mknode "mc:AlternateContent" [("xmlns:mc", "http://schemas.openxmlformats.org/markup-compatibility/2006") ] [ mknode "mc:Choice" [ ("xmlns:a14", "http://schemas.microsoft.com/office/drawing/2010/main") , ("Requires", "a14")] [ element ] ] Nothing -> element paragraphToElement :: PandocMonad m => Paragraph -> P m Element paragraphToElement par = do indents <- asks envOtherStyleIndents let lvl = pPropLevel (paraProps par) attrs = [("lvl", tshow lvl)] <> (case (pPropIndent (paraProps par), pPropMarginLeft (paraProps par)) of (Just px1, Just px2) -> [ ("indent", tshow $ pixelsToEmu px1) , ("marL", tshow $ pixelsToEmu px2) ] (Just px1, Nothing) -> [("indent", tshow $ pixelsToEmu px1)] (Nothing, Just px2) -> [("marL", tshow $ pixelsToEmu px2)] (Nothing, Nothing) -> fromMaybe [] $ do indents' <- indents thisLevel <- levelIndent indents' lvl nextLevel <- levelIndent indents' (lvl + 1) let (m, i) = case pPropBullet (paraProps par) of Nothing -> (Just (marL thisLevel), Just 0) Just (AutoNumbering _) -> ( Just (marL nextLevel) , Just (marL thisLevel - marL nextLevel) ) Just Bullet -> (Nothing, Nothing) pure ( toList ((,) "indent" . tshow <$> i) <> toList ((,) "marL" . tshow <$> m) ) ) <> (case pPropAlign (paraProps par) of Just AlgnLeft -> [("algn", "l")] Just AlgnRight -> [("algn", "r")] Just AlgnCenter -> [("algn", "ctr")] Nothing -> [] ) props = [] <> (case pPropSpaceBefore $ paraProps par of Just px -> [mknode "a:spcBef" [] [ mknode "a:spcPts" [("val", tshow $ 100 * px)] () ] ] Nothing -> [] ) <> (case pPropBullet $ paraProps par of Just Bullet -> [] Just (AutoNumbering attrs') -> [mknode "a:buAutoNum" (autoNumAttrs attrs') ()] Nothing -> [mknode "a:buNone" [] ()] ) paras <- mconcat <$> mapM paraElemToElements (consolidateRuns (paraElems par)) return $ mknode "a:p" [] $ [Elem $ mknode "a:pPr" attrs props] <> paras shapeToElement :: PandocMonad m => Element -> Shape -> P m (Maybe ShapeId, Element) shapeToElement layout (TextBox paras) | ns <- elemToNameSpaces layout , Just cSld <- findChild (elemName ns "p" "cSld") layout , Just spTree <- findChild (elemName ns "p" "spTree") cSld = do (shapeId, sp) <- getContentShape ns spTree elements <- mapM paragraphToElement paras let txBody = mknode "p:txBody" [] $ [mknode "a:bodyPr" [] (), mknode "a:lstStyle" [] ()] <> elements emptySpPr = mknode "p:spPr" [] () return . (shapeId,) . surroundWithMathAlternate . replaceNamedChildren ns "p" "txBody" [txBody] . replaceNamedChildren ns "p" "spPr" [emptySpPr] $ sp -- GraphicFrame and Pic should never reach this. shapeToElement _ _ = return (Nothing, mknode "p:sp" [] ()) shapeToElements :: PandocMonad m => Element -> Shape -> P m [(Maybe ShapeId, Content)] shapeToElements layout (Pic picProps fp titleText alt) = do mInfo <- registerMedia fp alt case mInfoExt mInfo of Just _ -> map (bimap Just Elem) <$> makePicElements layout picProps mInfo titleText alt Nothing -> shapeToElements layout $ TextBox [Paragraph def alt] shapeToElements layout (GraphicFrame tbls cptn) = map (bimap Just Elem) <$> graphicFrameToElements layout tbls cptn shapeToElements _ (RawOOXMLShape str) = return [(Nothing, Text (CData CDataRaw str Nothing))] shapeToElements layout shp = do (shapeId, element) <- shapeToElement layout shp return [(shapeId, Elem element)] shapesToElements :: PandocMonad m => Element -> [Shape] -> P m [(Maybe ShapeId, Content)] shapesToElements layout shps = concat <$> mapM (shapeToElements layout) shps graphicFrameToElements :: PandocMonad m => Element -> [Graphic] -> [ParaElem] -> P m [(ShapeId, Element)] graphicFrameToElements layout tbls caption = do -- get the sizing master <- getMaster (pageWidth, pageHeight) <- asks envPresentationSize let ns = elemToNameSpaces layout ((x, y), (cx, cytmp)) <- getContentShapeSize ns layout master `catchError` (\_ -> return ((0, 0), (pageWidth, pageHeight))) let cy = if not $ null caption then cytmp - captionHeight else cytmp elements <- mapM (graphicToElement cx) tbls let graphicFrameElts = ( 6 , mknode "p:graphicFrame" [] $ [ mknode "p:nvGraphicFramePr" [] [ mknode "p:cNvPr" [("id", "6"), ("name", "Content Placeholder 5")] () , mknode "p:cNvGraphicFramePr" [] [mknode "a:graphicFrameLocks" [("noGrp", "1")] ()] , mknode "p:nvPr" [] [mknode "p:ph" [("idx", "1")] ()] ] , mknode "p:xfrm" [] [ mknode "a:off" [("x", tshow $ 12700 * x), ("y", tshow $ 12700 * y)] () , mknode "a:ext" [("cx", tshow $ 12700 * cx), ("cy", tshow $ 12700 * cy)] () ] ] <> elements ) if not $ null caption then do capElt <- createCaption ((x, y), (cx, cytmp)) caption return [graphicFrameElts, capElt] else return [graphicFrameElts] getDefaultTableStyle :: PandocMonad m => P m (Maybe T.Text) getDefaultTableStyle = do refArchive <- asks envRefArchive distArchive <- asks envDistArchive tblStyleLst <- parseXml refArchive distArchive "ppt/tableStyles.xml" return $ findAttr (QName "def" Nothing Nothing) tblStyleLst graphicToElement :: PandocMonad m => Integer -> Graphic -> P m Element graphicToElement tableWidth (Tbl tblPr hdrCells rows) = do let colWidths = if null hdrCells then case rows of r : _ | not (null r) -> replicate (length r) $ tableWidth `div` toInteger (length r) -- satisfy the compiler. This is the same as -- saying that rows is empty, but the compiler -- won't understand that `[]` exhausts the -- alternatives. _ -> [] else replicate (length hdrCells) $ tableWidth `div` toInteger (length hdrCells) let cellToOpenXML paras = do elements <- mapM paragraphToElement paras let elements' = if null elements then [mknode "a:p" [] [mknode "a:endParaRPr" [] ()]] else elements return [mknode "a:txBody" [] $ [ mknode "a:bodyPr" [] () , mknode "a:lstStyle" [] ()] <> elements'] headers' <- mapM cellToOpenXML hdrCells rows' <- mapM (mapM cellToOpenXML) rows let borderProps = mknode "a:tcPr" [] () let emptyCell' = [mknode "a:p" [] [mknode "a:pPr" [] ()]] let mkcell border contents = mknode "a:tc" [] $ (if null contents then emptyCell' else contents) <> [ borderProps | border ] let mkrow border cells = mknode "a:tr" [("h", "0")] $ map (mkcell border) cells let mkgridcol w = mknode "a:gridCol" [("w", tshow ((12700 * w) :: Integer))] () let hasHeader = not (all null hdrCells) mbDefTblStyle <- getDefaultTableStyle let tblPrElt = mknode "a:tblPr" [ ("firstRow", if tblPrFirstRow tblPr then "1" else "0") , ("bandRow", if tblPrBandRow tblPr then "1" else "0") ] (case mbDefTblStyle of Nothing -> [] Just sty -> [mknode "a:tableStyleId" [] sty]) return $ mknode "a:graphic" [] [mknode "a:graphicData" [("uri", "http://schemas.openxmlformats.org/drawingml/2006/table")] [mknode "a:tbl" [] $ [ tblPrElt , mknode "a:tblGrid" [] (if all (==0) colWidths then [] else map mkgridcol colWidths) ] <> [ mkrow True headers' | hasHeader ] <> map (mkrow False) rows' ] ] -- We get the shape by placeholder type. If there is NO type, it -- defaults to a content placeholder. data PHType = PHType T.Text | ObjType deriving (Show, Eq) findPHType :: NameSpaces -> Element -> PHType -> Bool findPHType ns spElem phType | isElem ns "p" "sp" spElem = let mbPHElem = (Just spElem >>= findChild (elemName ns "p" "nvSpPr") >>= findChild (elemName ns "p" "nvPr") >>= findChild (elemName ns "p" "ph")) in case mbPHElem of -- if it's a named PHType, we want to check that the attribute -- value matches. Just phElem | (PHType tp) <- phType -> case findAttr (QName "type" Nothing Nothing) phElem of Just tp' -> tp == tp' Nothing -> False -- if it's an ObjType, we want to check that there is NO -- "type" attribute. In other words, a lookup should return nothing. Just phElem | ObjType <- phType -> case findAttr (QName "type" Nothing Nothing) phElem of Just _ -> False Nothing -> True Nothing -> False findPHType _ _ _ = False getShapesByPlaceHolderType :: NameSpaces -> Element -> PHType -> [Element] getShapesByPlaceHolderType ns spTreeElem phType | isElem ns "p" "spTree" spTreeElem = filterChildren (\e -> findPHType ns e phType) spTreeElem | otherwise = [] getShapeByPlaceHolderType :: NameSpaces -> Element -> PHType -> Maybe Element getShapeByPlaceHolderType ns spTreeElem phType = listToMaybe $ getShapesByPlaceHolderType ns spTreeElem phType -- Like the above, but it tries a number of different placeholder types getShapeByPlaceHolderTypes :: NameSpaces -> Element -> [PHType] -> Maybe Element getShapeByPlaceHolderTypes _ _ [] = Nothing getShapeByPlaceHolderTypes ns spTreeElem (s:ss) = case getShapeByPlaceHolderType ns spTreeElem s of Just element -> Just element Nothing -> getShapeByPlaceHolderTypes ns spTreeElem ss nonBodyTextToElement :: PandocMonad m => Element -> [PHType] -> [ParaElem] -> P m (Maybe ShapeId, Element) nonBodyTextToElement layout phTypes paraElements | ns <- elemToNameSpaces layout , Just cSld <- findChild (elemName ns "p" "cSld") layout , Just spTree <- findChild (elemName ns "p" "spTree") cSld , Just sp <- getShapeByPlaceHolderTypes ns spTree phTypes , Just nvSpPr <- findChild (elemName ns "p" "nvSpPr") sp , Just cNvPr <- findChild (elemName ns "p" "cNvPr") nvSpPr , Just shapeId <- findAttr (nodename "id") cNvPr , Right (shapeIdNum, _) <- decimal shapeId = do let hdrPara = Paragraph def paraElements element <- paragraphToElement hdrPara let txBody = mknode "p:txBody" [] $ [mknode "a:bodyPr" [] (), mknode "a:lstStyle" [] ()] <> [element] return (Just shapeIdNum, replaceNamedChildren ns "p" "txBody" [txBody] sp) -- XXX: TODO | otherwise = return (Nothing, mknode "p:sp" [] ()) data ContentShapeIds = ContentShapeIds { contentHeaderId :: Maybe ShapeId , contentContentIds :: [ShapeId] } contentToElement :: PandocMonad m => Element -> [ParaElem] -> [Shape] -> P m (Maybe ContentShapeIds, Element) contentToElement layout hdrShape shapes | ns <- elemToNameSpaces layout , Just cSld <- findChild (elemName ns "p" "cSld") layout , Just spTree <- findChild (elemName ns "p" "spTree") cSld = do (shapeId, element) <- nonBodyTextToElement layout [PHType "title"] hdrShape let hdrShapeElements = [Elem element | not (null hdrShape)] contentHeaderId = if null hdrShape then Nothing else shapeId content' <- local (\env -> env {envPlaceholder = Placeholder ObjType 0}) (shapesToElements layout shapes) let contentContentIds = mapMaybe fst content' contentElements = snd <$> content' footer <- footerElements content return ( Just ContentShapeIds{..} , buildSpTree ns spTree (hdrShapeElements <> contentElements <> footer) ) contentToElement _ _ _ = return (Nothing, mknode "p:sp" [] ()) data TwoColumnShapeIds = TwoColumnShapeIds { twoColumnHeaderId :: Maybe ShapeId , twoColumnLeftIds :: [ShapeId] , twoColumnRightIds :: [ShapeId] } twoColumnToElement :: PandocMonad m => Element -> [ParaElem] -> [Shape] -> [Shape] -> P m (Maybe TwoColumnShapeIds, Element) twoColumnToElement layout hdrShape shapesL shapesR | ns <- elemToNameSpaces layout , Just cSld <- findChild (elemName ns "p" "cSld") layout , Just spTree <- findChild (elemName ns "p" "spTree") cSld = do (headerId, element) <- nonBodyTextToElement layout [PHType "title"] hdrShape let hdrShapeElements = [Elem element | not (null hdrShape)] twoColumnHeaderId = if null hdrShape then Nothing else headerId contentL <- local (\env -> env {envPlaceholder = Placeholder ObjType 0}) (shapesToElements layout shapesL) let twoColumnLeftIds = mapMaybe fst contentL contentElementsL = snd <$> contentL contentR <- local (\env -> env {envPlaceholder = Placeholder ObjType 1}) (shapesToElements layout shapesR) let (twoColumnRightIds) = (mapMaybe fst contentR) contentElementsR = snd <$> contentR -- let contentElementsL' = map (setIdx ns "1") contentElementsL -- contentElementsR' = map (setIdx ns "2") contentElementsR footer <- footerElements twoColumn return $ (Just TwoColumnShapeIds{..}, ) $ buildSpTree ns spTree $ hdrShapeElements <> contentElementsL <> contentElementsR <> footer twoColumnToElement _ _ _ _ = return (Nothing, mknode "p:sp" [] ()) data ComparisonShapeIds = ComparisonShapeIds { comparisonHeaderId :: Maybe ShapeId , comparisonLeftTextIds :: [ShapeId] , comparisonLeftContentIds :: [ShapeId] , comparisonRightTextIds :: [ShapeId] , comparisonRightContentIds :: [ShapeId] } comparisonToElement :: PandocMonad m => Element -> [ParaElem] -> ([Shape], [Shape]) -> ([Shape], [Shape]) -> P m (Maybe ComparisonShapeIds, Element) comparisonToElement layout hdrShape (shapesL1, shapesL2) (shapesR1, shapesR2) | ns <- elemToNameSpaces layout , Just cSld <- findChild (elemName ns "p" "cSld") layout , Just spTree <- findChild (elemName ns "p" "spTree") cSld = do (headerShapeId, element) <- nonBodyTextToElement layout [PHType "title"] hdrShape let hdrShapeElements = [Elem element | not (null hdrShape)] comparisonHeaderId = if null hdrShape then Nothing else headerShapeId contentL1 <- local (\env -> env {envPlaceholder = Placeholder (PHType "body") 0}) (shapesToElements layout shapesL1) let comparisonLeftTextIds = mapMaybe fst contentL1 contentElementsL1 = snd <$> contentL1 contentL2 <- local (\env -> env {envPlaceholder = Placeholder ObjType 0}) (shapesToElements layout shapesL2) let comparisonLeftContentIds = mapMaybe fst contentL2 contentElementsL2 = snd <$> contentL2 contentR1 <- local (\env -> env {envPlaceholder = Placeholder (PHType "body") 1}) (shapesToElements layout shapesR1) let comparisonRightTextIds = mapMaybe fst contentR1 contentElementsR1 = snd <$> contentR1 contentR2 <- local (\env -> env {envPlaceholder = Placeholder ObjType 1}) (shapesToElements layout shapesR2) let comparisonRightContentIds = mapMaybe fst contentR2 contentElementsR2 = snd <$> contentR2 footer <- footerElements comparison return $ (Just ComparisonShapeIds{..}, ) $ buildSpTree ns spTree $ mconcat [ hdrShapeElements , contentElementsL1 , contentElementsL2 , contentElementsR1 , contentElementsR2 ] <> footer comparisonToElement _ _ _ _= return (Nothing, mknode "p:sp" [] ()) data ContentWithCaptionShapeIds = ContentWithCaptionShapeIds { contentWithCaptionHeaderId :: Maybe ShapeId , contentWithCaptionCaptionIds :: [ShapeId] , contentWithCaptionContentIds :: [ShapeId] } contentWithCaptionToElement :: PandocMonad m => Element -> [ParaElem] -> [Shape] -> [Shape] -> P m (Maybe ContentWithCaptionShapeIds, Element) contentWithCaptionToElement layout hdrShape textShapes contentShapes | ns <- elemToNameSpaces layout , Just cSld <- findChild (elemName ns "p" "cSld") layout , Just spTree <- findChild (elemName ns "p" "spTree") cSld = do (shapeId, element) <- nonBodyTextToElement layout [PHType "title"] hdrShape let hdrShapeElements = [Elem element | not (null hdrShape)] contentWithCaptionHeaderId = if null hdrShape then Nothing else shapeId text <- local (\env -> env {envPlaceholder = Placeholder (PHType "body") 0}) (shapesToElements layout textShapes) let contentWithCaptionCaptionIds = mapMaybe fst text textElements = snd <$> text content <- local (\env -> env {envPlaceholder = Placeholder ObjType 0}) (shapesToElements layout contentShapes) let contentWithCaptionContentIds = mapMaybe fst content contentElements = snd <$> content footer <- footerElements contentWithCaption return $ (Just ContentWithCaptionShapeIds{..}, ) $ buildSpTree ns spTree $ mconcat [ hdrShapeElements , textElements , contentElements ] <> footer contentWithCaptionToElement _ _ _ _ = return (Nothing, mknode "p:sp" [] ()) blankToElement :: PandocMonad m => Element -> P m Element blankToElement layout | ns <- elemToNameSpaces layout , Just cSld <- findChild (elemName ns "p" "cSld") layout , Just spTree <- findChild (elemName ns "p" "spTree") cSld = buildSpTree ns spTree <$> footerElements blank blankToElement _ = return $ mknode "p:sp" [] () newtype TitleShapeIds = TitleShapeIds { titleHeaderId :: Maybe ShapeId } titleToElement :: PandocMonad m => Element -> [ParaElem] -> P m (Maybe TitleShapeIds, Element) titleToElement layout titleElems | ns <- elemToNameSpaces layout , Just cSld <- findChild (elemName ns "p" "cSld") layout , Just spTree <- findChild (elemName ns "p" "spTree") cSld = do (shapeId, element) <- nonBodyTextToElement layout [PHType "title", PHType "ctrTitle"] titleElems let titleShapeElements = [Elem element | not (null titleElems)] titleHeaderId = if null titleElems then Nothing else shapeId footer <- footerElements title return $ (Just TitleShapeIds{..}, ) $ buildSpTree ns spTree (titleShapeElements <> footer) titleToElement _ _ = return (Nothing, mknode "p:sp" [] ()) data MetadataShapeIds = MetadataShapeIds { metadataTitleId :: Maybe ShapeId , metadataSubtitleId :: Maybe ShapeId , metadataDateId :: Maybe ShapeId } metadataToElement :: PandocMonad m => Element -> [ParaElem] -> [ParaElem] -> [[ParaElem]] -> [ParaElem] -> P m (Maybe MetadataShapeIds, Element) metadataToElement layout titleElems subtitleElems authorsElems dateElems | ns <- elemToNameSpaces layout , Just cSld <- findChild (elemName ns "p" "cSld") layout , Just spTree <- findChild (elemName ns "p" "spTree") cSld = do let combinedAuthorElems = intercalate [Break] authorsElems subtitleAndAuthorElems = intercalate [Break, Break] [subtitleElems, combinedAuthorElems] (titleId, titleElement) <- nonBodyTextToElement layout [PHType "ctrTitle"] titleElems (subtitleId, subtitleElement) <- nonBodyTextToElement layout [PHType "subTitle"] subtitleAndAuthorElems (dateId, dateElement) <- nonBodyTextToElement layout [PHType "dt"] dateElems let titleShapeElements = [titleElement | not (null titleElems)] metadataTitleId = if null titleElems then Nothing else titleId subtitleShapeElements = [subtitleElement | not (null subtitleAndAuthorElems)] metadataSubtitleId = if null subtitleAndAuthorElems then Nothing else subtitleId footerInfo <- gets stFooterInfo footer <- (if maybe False fiShowOnFirstSlide footerInfo then id else const []) <$> footerElements metadata let dateShapeElements = [dateElement | not (null dateElems || isJust (footerInfo >>= metadata . fiDate)) ] metadataDateId = if null dateElems then Nothing else dateId return $ (Just MetadataShapeIds{..}, ) $ buildSpTree ns spTree $ map Elem (titleShapeElements <> subtitleShapeElements <> dateShapeElements) <> footer metadataToElement _ _ _ _ _ = return (Nothing, mknode "p:sp" [] ()) slideToElement :: PandocMonad m => Slide -> P m Element slideToElement (Slide _ l@(ContentSlide hdrElems shapes) _ backgroundImage) = do layout <- getLayout l backgroundImageElement <- traverse backgroundImageToElement backgroundImage (shapeIds, spTree) <- local (\env -> if null hdrElems then env else env{envSlideHasHeader=True}) (contentToElement layout hdrElems shapes) let animations = case shapeIds of Nothing -> [] Just ContentShapeIds{..} -> slideToIncrementalAnimations (zip contentContentIds shapes) return $ mknode "p:sld" [ ("xmlns:a", "http://schemas.openxmlformats.org/drawingml/2006/main"), ("xmlns:r", "http://schemas.openxmlformats.org/officeDocument/2006/relationships"), ("xmlns:p", "http://schemas.openxmlformats.org/presentationml/2006/main") ] (mknode "p:cSld" [] (toList backgroundImageElement <> [spTree]) : animations) slideToElement (Slide _ l@(TwoColumnSlide hdrElems shapesL shapesR) _ backgroundImage) = do layout <- getLayout l backgroundImageElement <- traverse backgroundImageToElement backgroundImage (shapeIds, spTree) <- local (\env -> if null hdrElems then env else env{envSlideHasHeader=True}) $ twoColumnToElement layout hdrElems shapesL shapesR let animations = case shapeIds of Nothing -> [] Just TwoColumnShapeIds{..} -> slideToIncrementalAnimations (zip twoColumnLeftIds shapesL <> zip twoColumnRightIds shapesR) return $ mknode "p:sld" [ ("xmlns:a", "http://schemas.openxmlformats.org/drawingml/2006/main"), ("xmlns:r", "http://schemas.openxmlformats.org/officeDocument/2006/relationships"), ("xmlns:p", "http://schemas.openxmlformats.org/presentationml/2006/main") ] (mknode "p:cSld" [] (toList backgroundImageElement <> [spTree]) : animations) slideToElement (Slide _ l@(ComparisonSlide hdrElems shapesL shapesR) _ backgroundImage) = do layout <- getLayout l backgroundImageElement <- traverse backgroundImageToElement backgroundImage (shapeIds, spTree) <- local (\env -> if null hdrElems then env else env{envSlideHasHeader=True}) $ comparisonToElement layout hdrElems shapesL shapesR let animations = case shapeIds of Nothing -> [] Just ComparisonShapeIds{..} -> slideToIncrementalAnimations (zip comparisonLeftTextIds (fst shapesL) <> zip comparisonLeftContentIds (snd shapesL) <> zip comparisonRightTextIds (fst shapesR) <> zip comparisonRightContentIds (snd shapesR)) return $ mknode "p:sld" [ ("xmlns:a", "http://schemas.openxmlformats.org/drawingml/2006/main"), ("xmlns:r", "http://schemas.openxmlformats.org/officeDocument/2006/relationships"), ("xmlns:p", "http://schemas.openxmlformats.org/presentationml/2006/main") ] (mknode "p:cSld" [] (toList backgroundImageElement <> [spTree]) : animations) slideToElement (Slide _ l@(TitleSlide hdrElems) _ backgroundImage) = do layout <- getLayout l backgroundImageElement <- traverse backgroundImageToElement backgroundImage (_, spTree) <- titleToElement layout hdrElems return $ mknode "p:sld" [ ("xmlns:a", "http://schemas.openxmlformats.org/drawingml/2006/main"), ("xmlns:r", "http://schemas.openxmlformats.org/officeDocument/2006/relationships"), ("xmlns:p", "http://schemas.openxmlformats.org/presentationml/2006/main") ] [mknode "p:cSld" [] (toList backgroundImageElement <> [spTree])] slideToElement (Slide _ l@(MetadataSlide titleElems subtitleElems authorElems dateElems) _ backgroundImage) = do layout <- getLayout l backgroundImageElement <- traverse backgroundImageToElement backgroundImage (_, spTree) <- metadataToElement layout titleElems subtitleElems authorElems dateElems return $ mknode "p:sld" [ ("xmlns:a", "http://schemas.openxmlformats.org/drawingml/2006/main"), ("xmlns:r", "http://schemas.openxmlformats.org/officeDocument/2006/relationships"), ("xmlns:p", "http://schemas.openxmlformats.org/presentationml/2006/main") ] [mknode "p:cSld" [] (toList backgroundImageElement <> [spTree])] slideToElement (Slide _ l@(ContentWithCaptionSlide hdrElems captionShapes contentShapes) _ backgroundImage) = do layout <- getLayout l backgroundImageElement <- traverse backgroundImageToElement backgroundImage (shapeIds, spTree) <- contentWithCaptionToElement layout hdrElems captionShapes contentShapes let animations = case shapeIds of Nothing -> [] Just ContentWithCaptionShapeIds{..} -> slideToIncrementalAnimations (zip contentWithCaptionCaptionIds captionShapes <> zip contentWithCaptionContentIds contentShapes) return $ mknode "p:sld" [ ("xmlns:a", "http://schemas.openxmlformats.org/drawingml/2006/main"), ("xmlns:r", "http://schemas.openxmlformats.org/officeDocument/2006/relationships"), ("xmlns:p", "http://schemas.openxmlformats.org/presentationml/2006/main") ] (mknode "p:cSld" [] (toList backgroundImageElement <> [spTree]) : animations) slideToElement (Slide _ BlankSlide _ backgroundImage) = do layout <- getLayout BlankSlide backgroundImageElement <- traverse backgroundImageToElement backgroundImage spTree <- blankToElement layout return $ mknode "p:sld" [ ("xmlns:a", "http://schemas.openxmlformats.org/drawingml/2006/main"), ("xmlns:r", "http://schemas.openxmlformats.org/officeDocument/2006/relationships"), ("xmlns:p", "http://schemas.openxmlformats.org/presentationml/2006/main") ] [mknode "p:cSld" [] (toList backgroundImageElement <> [spTree])] backgroundImageToElement :: PandocMonad m => FilePath -> P m Element backgroundImageToElement path = do MediaInfo{mInfoLocalId, mInfoFilePath} <- registerMedia path [] (imgBytes, _) <- P.fetchItem (T.pack mInfoFilePath) opts <- asks envOpts let imageDimensions = either (const Nothing) (Just . sizeInPixels) (imageSize opts imgBytes) pageSize <- asks envPresentationSize let fillRectAttributes = maybe [] (offsetAttributes pageSize) imageDimensions let rId = "rId" <> T.pack (show mInfoLocalId) return $ mknode "p:bg" [] $ mknode "p:bgPr" [] [ mknode "a:blipFill" [("dpi", "0"), ("rotWithShape", "1")] [ mknode "a:blip" [("r:embed", rId)] $ mknode "a:lum" [] () , mknode "a:srcRect" [] () , mknode "a:stretch" [] $ mknode "a:fillRect" fillRectAttributes () ] , mknode "a:effectsLst" [] () ] where offsetAttributes :: (Integer, Integer) -> (Integer, Integer) -> [(Text, Text)] offsetAttributes (pageWidth, pageHeight) (pictureWidth, pictureHeight) = let widthRatio = pictureWidth % pageWidth heightRatio = pictureHeight % pageHeight getOffset :: Ratio Integer -> Text getOffset proportion = let percentageOffset = (proportion - 1) * (-100 % 2) integerOffset = round percentageOffset * 1000 :: Integer in T.pack (show integerOffset) in case compare widthRatio heightRatio of EQ -> [] LT -> let offset = getOffset ((pictureHeight % pageHeight) / widthRatio) in [ ("t", offset) , ("b", offset) ] GT -> let offset = getOffset ((pictureWidth % pageWidth) / heightRatio) in [ ("l", offset) , ("r", offset) ] slideToIncrementalAnimations :: [(ShapeId, Shape)] -> [Element] slideToIncrementalAnimations shapes = let incrementals :: [(ShapeId, [Bool])] incrementals = do (shapeId, TextBox ps) <- shapes pure . (shapeId,) $ do Paragraph ParaProps{pPropIncremental} _ <- ps pure pPropIncremental toIndices :: [Bool] -> Maybe (NonEmpty (Integer, Integer)) toIndices bs = do let indexed = zip [0..] bs ts <- nonEmpty (filter snd indexed) pure (fmap (\(n, _) -> (n, n)) ts) indices :: [(ShapeId, NonEmpty (Integer, Integer))] indices = do (shapeId, bs) <- incrementals toList ((,) shapeId <$> toIndices bs) in toList (incrementalAnimation <$> nonEmpty indices) -------------------------------------------------------------------- -- Notes: getNotesMaster :: PandocMonad m => P m Element getNotesMaster = do refArchive <- asks envRefArchive distArchive <- asks envDistArchive parseXml refArchive distArchive "ppt/notesMasters/notesMaster1.xml" getSlideNumberFieldId :: PandocMonad m => Element -> P m T.Text getSlideNumberFieldId notesMaster | ns <- elemToNameSpaces notesMaster , Just cSld <- findChild (elemName ns "p" "cSld") notesMaster , Just spTree <- findChild (elemName ns "p" "spTree") cSld , Just sp <- getShapeByPlaceHolderType ns spTree (PHType "sldNum") , Just txBody <- findChild (elemName ns "p" "txBody") sp , Just p <- findChild (elemName ns "a" "p") txBody , Just fld <- findChild (elemName ns "a" "fld") p , Just fldId <- findAttr (QName "id" Nothing Nothing) fld = return fldId | otherwise = throwError $ PandocSomeError "No field id for slide numbers in notesMaster.xml" speakerNotesSlideImage :: Element speakerNotesSlideImage = mknode "p:sp" [] [ mknode "p:nvSpPr" [] [ mknode "p:cNvPr" [ ("id", "2") , ("name", "Slide Image Placeholder 1") ] () , mknode "p:cNvSpPr" [] [ mknode "a:spLocks" [ ("noGrp", "1") , ("noRot", "1") , ("noChangeAspect", "1") ] () ] , mknode "p:nvPr" [] [ mknode "p:ph" [("type", "sldImg")] ()] ] , mknode "p:spPr" [] () ] -- we want to wipe links from the speaker notes in the -- paragraphs. Powerpoint doesn't allow you to input them, and it -- would provide extra complications. removeParaLinks :: Paragraph -> Paragraph removeParaLinks paragraph = paragraph{paraElems = map f (paraElems paragraph)} where f (Run rProps s) = Run rProps{rLink=Nothing} s f pe = pe -- put an empty paragraph between paragraphs for more expected spacing. spaceParas :: [Paragraph] -> [Paragraph] spaceParas = intersperse (Paragraph def []) speakerNotesBody :: PandocMonad m => [Paragraph] -> P m Element speakerNotesBody paras = do elements <- local (\env -> env{envInSpeakerNotes = True}) $ mapM paragraphToElement $ spaceParas $ map removeParaLinks paras let txBody = mknode "p:txBody" [] $ [mknode "a:bodyPr" [] (), mknode "a:lstStyle" [] ()] <> elements return $ mknode "p:sp" [] [ mknode "p:nvSpPr" [] [ mknode "p:cNvPr" [ ("id", "3") , ("name", "Notes Placeholder 2") ] () , mknode "p:cNvSpPr" [] [ mknode "a:spLocks" [("noGrp", "1")] ()] , mknode "p:nvPr" [] [ mknode "p:ph" [("type", "body"), ("idx", "1")] ()] ] , mknode "p:spPr" [] () , txBody ] speakerNotesSlideNumber :: Int -> T.Text -> Element speakerNotesSlideNumber pgNum fieldId = mknode "p:sp" [] [ mknode "p:nvSpPr" [] [ mknode "p:cNvPr" [ ("id", "4") , ("name", "Slide Number Placeholder 3") ] () , mknode "p:cNvSpPr" [] [ mknode "a:spLocks" [("noGrp", "1")] ()] , mknode "p:nvPr" [] [ mknode "p:ph" [ ("type", "sldNum") , ("sz", "quarter") , ("idx", "10") ] () ] ] , mknode "p:spPr" [] () , mknode "p:txBody" [] [ mknode "a:bodyPr" [] () , mknode "a:lstStyle" [] () , mknode "a:p" [] [ mknode "a:fld" [ ("id", fieldId) , ("type", "slidenum") ] [ mknode "a:rPr" [("lang", "en-US")] () , mknode "a:t" [] (tshow pgNum) ] , mknode "a:endParaRPr" [("lang", "en-US")] () ] ] ] slideToSpeakerNotesElement :: PandocMonad m => Slide -> P m (Maybe Element) slideToSpeakerNotesElement (Slide _ _ (SpeakerNotes []) _) = return Nothing slideToSpeakerNotesElement slide@(Slide _ _ (SpeakerNotes paras) _) = do master <- getNotesMaster fieldId <- getSlideNumberFieldId master num <- slideNum slide let imgShape = speakerNotesSlideImage sldNumShape = speakerNotesSlideNumber num fieldId bodyShape <- speakerNotesBody paras return $ Just $ mknode "p:notes" [ ("xmlns:a", "http://schemas.openxmlformats.org/drawingml/2006/main") , ("xmlns:r", "http://schemas.openxmlformats.org/officeDocument/2006/relationships") , ("xmlns:p", "http://schemas.openxmlformats.org/presentationml/2006/main") ] [ mknode "p:cSld" [] [ mknode "p:spTree" [] [ mknode "p:nvGrpSpPr" [] [ mknode "p:cNvPr" [("id", "1"), ("name", "")] () , mknode "p:cNvGrpSpPr" [] () , mknode "p:nvPr" [] () ] , mknode "p:grpSpPr" [] [ mknode "a:xfrm" [] [ mknode "a:off" [("x", "0"), ("y", "0")] () , mknode "a:ext" [("cx", "0"), ("cy", "0")] () , mknode "a:chOff" [("x", "0"), ("y", "0")] () , mknode "a:chExt" [("cx", "0"), ("cy", "0")] () ] ] , imgShape , bodyShape , sldNumShape ] ] ] ----------------------------------------------------------------------- getSlideIdNum :: PandocMonad m => SlideId -> P m Int getSlideIdNum sldId = do slideIdMap <- asks envSlideIdMap case M.lookup sldId slideIdMap of Just n -> return n Nothing -> throwError $ PandocShouldNeverHappenError $ "Slide Id " <> tshow sldId <> " not found." slideNum :: PandocMonad m => Slide -> P m Int slideNum slide = getSlideIdNum $ slideId slide idNumToFilePath :: Int -> FilePath idNumToFilePath idNum = "slide" <> show idNum <> ".xml" slideToFilePath :: PandocMonad m => Slide -> P m FilePath slideToFilePath slide = do idNum <- slideNum slide return $ "slide" <> show idNum <> ".xml" slideToRelId :: PandocMonad m => MinimumRId -> Slide -> P m T.Text slideToRelId minSlideRId slide = do n <- slideNum slide return $ "rId" <> tshow (n + minSlideRId - 1) data Relationship = Relationship { relId :: Int , relType :: MimeType , relTarget :: FilePath } deriving (Show, Eq) elementToRel :: Element -> Maybe Relationship elementToRel element | elName element == QName "Relationship" (Just "http://schemas.openxmlformats.org/package/2006/relationships") Nothing = do rId <- findAttr (QName "Id" Nothing Nothing) element numStr <- T.stripPrefix "rId" rId num <- fromIntegral <$> readTextAsInteger numStr type' <- findAttr (QName "Type" Nothing Nothing) element target <- findAttr (QName "Target" Nothing Nothing) element return $ Relationship num type' (T.unpack target) | otherwise = Nothing slideToPresRel :: PandocMonad m => Int -> Slide -> P m Relationship slideToPresRel minimumSlideRId slide = do idNum <- slideNum slide let rId = idNum + minimumSlideRId - 1 fp = "slides/" <> idNumToFilePath idNum return $ Relationship { relId = rId , relType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide" , relTarget = fp } getPresentationRels :: PandocMonad m => P m [Relationship] getPresentationRels = do refArchive <- asks envRefArchive distArchive <- asks envDistArchive relsElem <- parseXml refArchive distArchive "ppt/_rels/presentation.xml.rels" let globalNS = "http://schemas.openxmlformats.org/package/2006/relationships" let relElems = findChildren (QName "Relationship" (Just globalNS) Nothing) relsElem return $ mapMaybe elementToRel relElems -- | Info required to update a presentation rId from the reference doc for the -- output. type PresentationRIdUpdateData = (ReferenceMinRIdAfterSlides, NewRIdBounds) -- | The minimum and maximum rIds for presentation relationships created from -- the presentation content (as opposed to from the reference doc). -- -- Relationships taken from the reference doc should have their rId number -- adjusted to make sure it sits outside this range. type NewRIdBounds = (MinimumRId, MaximumRId) -- | The minimum presentation rId from the reference doc which comes after the -- first slide rId (in the reference doc). type ReferenceMinRIdAfterSlides = Int type MinimumRId = Int type MaximumRId = Int -- | Given a presentation rId from the reference doc, return the value it should -- have in the output. updatePresentationRId :: PresentationRIdUpdateData -> Int -> Int updatePresentationRId (minOverlappingRId, (minNewId, maxNewId)) n | n < minNewId = n | otherwise = n - minOverlappingRId + maxNewId + 1 presentationToRels :: PandocMonad m => Presentation -> P m (PresentationRIdUpdateData, [Relationship]) presentationToRels pres@(Presentation _ slides) = do rels <- getPresentationRels -- We want to make room for the slides in the id space. We'll assume the slide -- masters come first (this seems to be what PowerPoint does by default, and -- is true of the reference doc), and we'll put the slides next. So we find -- the starting rId for the slides by finding the maximum rId for the masters -- and adding 1. -- -- Then: -- 1. We look to see what the minimum rId which is greater than or equal to -- the minimum slide rId is, in the rels we're keeping from the reference -- doc (i.e. the minimum rId which might overlap with the slides). -- 2. We increase this minimum overlapping rId to 1 higher than the last slide -- rId (or the notesMaster rel, if we're including one), and increase all -- rIds higher than this minimum by the same amount. let masterRels = filter (T.isSuffixOf "slideMaster" . relType) rels slideStartId = maybe 1 ((+ 1) . maximum . fmap relId) (nonEmpty masterRels) -- we remove the slide rels and the notesmaster (if it's -- there). We'll put these back in ourselves, if necessary. relsWeKeep = filter (\r -> relType r /= "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide" && relType r /= "http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesMaster") rels minOverlappingRel = maybe 0 minimum (nonEmpty (filter (slideStartId <=) (relId <$> relsWeKeep))) mySlideRels <- mapM (slideToPresRel slideStartId) slides let notesMasterRels = [Relationship { relId = slideStartId + length mySlideRels , relType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesMaster" , relTarget = "notesMasters/notesMaster1.xml" } | presHasSpeakerNotes pres] insertedRels = mySlideRels <> notesMasterRels newRIdBounds = (slideStartId, slideStartId + length insertedRels - 1) updateRId = updatePresentationRId (minOverlappingRel, newRIdBounds) relsWeKeep' = map (\r -> r{relId = updateRId $ relId r}) relsWeKeep return ((minOverlappingRel, newRIdBounds), insertedRels <> relsWeKeep') -- We make this ourselves, in case there's a thumbnail in the one from -- the template. topLevelRels :: [Relationship] topLevelRels = [ Relationship { relId = 1 , relType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" , relTarget = "ppt/presentation.xml" } , Relationship { relId = 2 , relType = "http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" , relTarget = "docProps/core.xml" } , Relationship { relId = 3 , relType = "http://schemas.openxmlformats.org/package/2006/relationships/metadata/extended-properties" , relTarget = "docProps/app.xml" } , Relationship { relId = 4 , relType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties" , relTarget = "docProps/custom.xml" } ] topLevelRelsEntry :: PandocMonad m => P m Entry topLevelRelsEntry = elemToEntry "_rels/.rels" $ relsToElement topLevelRels relToElement :: Relationship -> Element relToElement rel = mknode "Relationship" [ ("Id", "rId" <> tshow (relId rel)) , ("Type", relType rel) , ("Target", T.pack $ relTarget rel) ] () relsToElement :: [Relationship] -> Element relsToElement rels = mknode "Relationships" [("xmlns", "http://schemas.openxmlformats.org/package/2006/relationships")] (map relToElement rels) presentationToRelsEntry :: PandocMonad m => Presentation -> P m (PresentationRIdUpdateData, Entry) presentationToRelsEntry pres = do (presentationRIdUpdateData, rels) <- presentationToRels pres element <- elemToEntry "ppt/_rels/presentation.xml.rels" $ relsToElement rels pure (presentationRIdUpdateData, element) elemToEntry :: PandocMonad m => FilePath -> Element -> P m Entry elemToEntry fp element = do epochtime <- floor . utcTimeToPOSIXSeconds <$> asks envUTCTime return $ toEntry fp epochtime $ renderXml element slideToEntry :: PandocMonad m => Slide -> P m Entry slideToEntry slide = do idNum <- slideNum slide local (\env -> env{envCurSlideId = idNum}) $ do element <- slideToElement slide elemToEntry ("ppt/slides/" <> idNumToFilePath idNum) element slideToSpeakerNotesEntry :: PandocMonad m => Slide -> P m (Maybe Entry) slideToSpeakerNotesEntry slide = do idNum <- slideNum slide local (\env -> env{envCurSlideId = idNum}) $ do mbElement <- slideToSpeakerNotesElement slide mbNotesIdNum <- do mp <- asks envSpeakerNotesIdMap return $ M.lookup idNum mp case mbElement of Just element | Just notesIdNum <- mbNotesIdNum -> Just <$> elemToEntry ("ppt/notesSlides/notesSlide" <> show notesIdNum <> ".xml") element _ -> return Nothing slideToSpeakerNotesRelElement :: PandocMonad m => Slide -> P m (Maybe Element) slideToSpeakerNotesRelElement (Slide _ _ (SpeakerNotes []) _) = return Nothing slideToSpeakerNotesRelElement slide@Slide{} = do idNum <- slideNum slide return $ Just $ mknode "Relationships" [("xmlns", "http://schemas.openxmlformats.org/package/2006/relationships")] [ mknode "Relationship" [ ("Id", "rId2") , ("Type", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide") , ("Target", "../slides/slide" <> tshow idNum <> ".xml") ] () , mknode "Relationship" [ ("Id", "rId1") , ("Type", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesMaster") , ("Target", "../notesMasters/notesMaster1.xml") ] () ] slideToSpeakerNotesRelEntry :: PandocMonad m => Slide -> P m (Maybe Entry) slideToSpeakerNotesRelEntry slide = do idNum <- slideNum slide mbElement <- slideToSpeakerNotesRelElement slide mp <- asks envSpeakerNotesIdMap let mbNotesIdNum = M.lookup idNum mp case mbElement of Just element | Just notesIdNum <- mbNotesIdNum -> Just <$> elemToEntry ("ppt/notesSlides/_rels/notesSlide" <> show notesIdNum <> ".xml.rels") element _ -> return Nothing slideToSlideRelEntry :: PandocMonad m => Slide -> P m Entry slideToSlideRelEntry slide = do idNum <- slideNum slide element <- slideToSlideRelElement slide elemToEntry ("ppt/slides/_rels/" <> idNumToFilePath idNum <> ".rels") element linkRelElement :: PandocMonad m => (Int, LinkTarget) -> P m Element linkRelElement (rIdNum, InternalTarget targetId) = do targetIdNum <- getSlideIdNum targetId return $ mknode "Relationship" [ ("Id", "rId" <> tshow rIdNum) , ("Type", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide") , ("Target", "slide" <> tshow targetIdNum <> ".xml") ] () linkRelElement (rIdNum, ExternalTarget (url, _)) = return $ mknode "Relationship" [ ("Id", "rId" <> tshow rIdNum) , ("Type", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink") , ("Target", url) , ("TargetMode", "External") ] () linkRelElements :: PandocMonad m => M.Map Int LinkTarget -> P m [Element] linkRelElements mp = mapM linkRelElement (M.toList mp) mediaRelElement :: MediaInfo -> Element mediaRelElement mInfo = let ext = fromMaybe "" (mInfoExt mInfo) in mknode "Relationship" [ ("Id", "rId" <> tshow (mInfoLocalId mInfo)) , ("Type", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image") , ("Target", "../media/image" <> tshow (mInfoGlobalId mInfo) <> ext) ] () speakerNotesSlideRelElement :: PandocMonad m => Slide -> P m (Maybe Element) speakerNotesSlideRelElement slide = do idNum <- slideNum slide mp <- asks envSpeakerNotesIdMap return $ case M.lookup idNum mp of Nothing -> Nothing Just n -> let target = "../notesSlides/notesSlide" <> tshow n <> ".xml" in Just $ mknode "Relationship" [ ("Id", "rId2") , ("Type", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide") , ("Target", target) ] () slideToSlideRelElement :: PandocMonad m => Slide -> P m Element slideToSlideRelElement slide = do idNum <- slideNum slide target <- flip fmap getSlideLayouts $ T.pack . ("../slideLayouts/" <>) . takeFileName . slPath . case slide of (Slide _ MetadataSlide{} _ _) -> metadata (Slide _ TitleSlide{} _ _) -> title (Slide _ ContentSlide{} _ _) -> content (Slide _ TwoColumnSlide{} _ _) -> twoColumn (Slide _ ComparisonSlide{} _ _) -> comparison (Slide _ ContentWithCaptionSlide{} _ _) -> contentWithCaption (Slide _ BlankSlide _ _) -> blank speakerNotesRels <- maybeToList <$> speakerNotesSlideRelElement slide linkIds <- gets stLinkIds mediaIds <- gets stMediaIds linkRels <- case M.lookup idNum linkIds of Just mp -> linkRelElements mp Nothing -> return [] let mediaRels = case M.lookup idNum mediaIds of Just mInfos -> map mediaRelElement mInfos Nothing -> [] return $ mknode "Relationships" [("xmlns", "http://schemas.openxmlformats.org/package/2006/relationships")] ([mknode "Relationship" [ ("Id", "rId1") , ("Type", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout") , ("Target", target)] () ] <> speakerNotesRels <> linkRels <> mediaRels) slideToSldIdElement :: PandocMonad m => MinimumRId -> Slide -> P m Element slideToSldIdElement minimumSlideRId slide = do n <- slideNum slide let id' = tshow $ n + 255 rId <- slideToRelId minimumSlideRId slide return $ mknode "p:sldId" [("id", id'), ("r:id", rId)] () presentationToSldIdLst :: PandocMonad m => MinimumRId -> Presentation -> P m Element presentationToSldIdLst minimumSlideRId (Presentation _ slides) = do ids <- mapM (slideToSldIdElement minimumSlideRId) slides return $ mknode "p:sldIdLst" [] ids presentationToPresentationElement :: PandocMonad m => PresentationRIdUpdateData -> Presentation -> P m Element presentationToPresentationElement presentationUpdateRIdData pres = do let (_, (minSlideRId, maxSlideRId)) = presentationUpdateRIdData refArchive <- asks envRefArchive distArchive <- asks envDistArchive element <- parseXml refArchive distArchive "ppt/presentation.xml" sldIdLst <- presentationToSldIdLst minSlideRId pres let modifySldIdLst :: Content -> Content modifySldIdLst (Elem e) = case elName e of (QName "sldIdLst" _ _) -> Elem sldIdLst _ -> Elem e modifySldIdLst ct = ct notesMasterRId = maxSlideRId notesMasterElem = mknode "p:notesMasterIdLst" [] [ mknode "p:notesMasterId" [("r:id", "rId" <> tshow notesMasterRId)] () ] -- if there's a notesMasterIdLst in the presentation.xml file, -- we want to remove it. We then want to put our own, if -- necessary, after the slideMasterIdLst element. We also remove -- handouts master, since we don't want it. removeUnwantedMaster' :: Content -> [Content] removeUnwantedMaster' (Elem e) = case elName e of (QName "notesMasterIdLst" _ _) -> [] (QName "handoutMasterIdLst" _ _) -> [] _ -> [Elem e] removeUnwantedMaster' ct = [ct] removeUnwantedMaster :: [Content] -> [Content] removeUnwantedMaster = concatMap removeUnwantedMaster' insertNotesMaster' :: Content -> [Content] insertNotesMaster' (Elem e) = case elName e of (QName "sldMasterIdLst" _ _) -> [Elem e, Elem notesMasterElem] _ -> [Elem e] insertNotesMaster' ct = [ct] insertNotesMaster :: [Content] -> [Content] insertNotesMaster = if presHasSpeakerNotes pres then concatMap insertNotesMaster' else id updateRIds :: Content -> Content updateRIds (Elem el) = Elem (el { elAttribs = fmap updateRIdAttribute (elAttribs el) , elContent = fmap updateRIds (elContent el) }) updateRIds content = content updateRIdAttribute :: XML.Attr -> XML.Attr updateRIdAttribute attr = fromMaybe attr $ do oldValue <- case attrKey attr of QName "id" _ (Just "r") -> T.stripPrefix "rId" (attrVal attr) >>= fmap fromIntegral . readTextAsInteger _ -> Nothing let newValue = updatePresentationRId presentationUpdateRIdData oldValue pure attr {attrVal = "rId" <> T.pack (show newValue)} newContent = insertNotesMaster $ removeUnwantedMaster $ (modifySldIdLst . updateRIds) <$> elContent element return $ element{elContent = newContent} presentationToPresEntry :: PandocMonad m => PresentationRIdUpdateData -> Presentation -> P m Entry presentationToPresEntry presentationRIdUpdateData pres = presentationToPresentationElement presentationRIdUpdateData pres >>= elemToEntry "ppt/presentation.xml" -- adapted from the Docx writer docPropsElement :: PandocMonad m => DocProps -> P m Element docPropsElement docProps = do utctime <- asks envUTCTime let keywords = case dcKeywords docProps of Just xs -> T.intercalate ", " xs Nothing -> "" return $ mknode "cp:coreProperties" [("xmlns:cp","http://schemas.openxmlformats.org/package/2006/metadata/core-properties") ,("xmlns:dc","http://purl.org/dc/elements/1.1/") ,("xmlns:dcterms","http://purl.org/dc/terms/") ,("xmlns:dcmitype","http://purl.org/dc/dcmitype/") ,("xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance")] $ mknode "dc:title" [] (fromMaybe "" $ dcTitle docProps) : mknode "dc:creator" [] (fromMaybe "" $ dcCreator docProps) : mknode "cp:keywords" [] keywords : ( [mknode "dc:subject" [] $ fromMaybe "" $ dcSubject docProps | isJust (dcSubject docProps)]) <> ( [mknode "dc:description" [] $ fromMaybe "" $ dcDescription docProps | isJust (dcDescription docProps)]) <> ( [mknode "cp:category" [] $ fromMaybe "" $ cpCategory docProps | isJust (cpCategory docProps)]) <> (\x -> [ mknode "dcterms:created" [("xsi:type","dcterms:W3CDTF")] x , mknode "dcterms:modified" [("xsi:type","dcterms:W3CDTF")] x ]) (T.pack $ formatTime defaultTimeLocale "%FT%XZ" utctime) docPropsToEntry :: PandocMonad m => DocProps -> P m Entry docPropsToEntry docProps = docPropsElement docProps >>= elemToEntry "docProps/core.xml" -- adapted from the Docx writer docCustomPropsElement :: PandocMonad m => DocProps -> P m Element docCustomPropsElement docProps = do let mkCustomProp (k, v) pid = mknode "property" [("fmtid","{D5CDD505-2E9C-101B-9397-08002B2CF9AE}") ,("pid", tshow pid) ,("name", k)] $ mknode "vt:lpwstr" [] v return $ mknode "Properties" [("xmlns","http://schemas.openxmlformats.org/officeDocument/2006/custom-properties") ,("xmlns:vt","http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes") ] $ zipWith mkCustomProp (fromMaybe [] $ customProperties docProps) [(2 :: Int)..] docCustomPropsToEntry :: PandocMonad m => DocProps -> P m Entry docCustomPropsToEntry docProps = docCustomPropsElement docProps >>= elemToEntry "docProps/custom.xml" -- We read from the template, but we remove the lastView, so it always -- opens on slide view. Templates will sometimes be open in master -- view for editing. viewPropsElement :: PandocMonad m => P m Element viewPropsElement = do refArchive <- asks envRefArchive distArchive <- asks envDistArchive viewPrElement <- parseXml refArchive distArchive "ppt/viewProps.xml" -- remove "lastView" if it exists: let notLastView :: XML.Attr -> Bool notLastView attr = qName (attrKey attr) /= "lastView" return $ viewPrElement {elAttribs = filter notLastView (elAttribs viewPrElement)} makeViewPropsEntry :: PandocMonad m => P m Entry makeViewPropsEntry = viewPropsElement >>= elemToEntry "ppt/viewProps.xml" defaultContentTypeToElem :: DefaultContentType -> Element defaultContentTypeToElem dct = mknode "Default" [("Extension", defContentTypesExt dct), ("ContentType", defContentTypesType dct)] () overrideContentTypeToElem :: OverrideContentType -> Element overrideContentTypeToElem oct = mknode "Override" [("PartName", T.pack $ overrideContentTypesPart oct), ("ContentType", overrideContentTypesType oct)] () contentTypesToElement :: ContentTypes -> Element contentTypesToElement ct = let ns = "http://schemas.openxmlformats.org/package/2006/content-types" in mknode "Types" [("xmlns", ns)] $ map defaultContentTypeToElem (contentTypesDefaults ct) <> map overrideContentTypeToElem (contentTypesOverrides ct) data DefaultContentType = DefaultContentType { defContentTypesExt :: T.Text , defContentTypesType:: MimeType } deriving (Show, Eq) data OverrideContentType = OverrideContentType { overrideContentTypesPart :: FilePath , overrideContentTypesType :: MimeType } deriving (Show, Eq) data ContentTypes = ContentTypes { contentTypesDefaults :: [DefaultContentType] , contentTypesOverrides :: [OverrideContentType] } deriving (Show, Eq) contentTypesToEntry :: PandocMonad m => ContentTypes -> P m Entry contentTypesToEntry ct = elemToEntry "[Content_Types].xml" $ contentTypesToElement ct pathToOverride :: FilePath -> Maybe OverrideContentType pathToOverride fp = OverrideContentType ("/" <> fp) <$> getContentType fp mediaFileContentType :: FilePath -> Maybe DefaultContentType mediaFileContentType fp = case takeExtension fp of '.' : ext -> Just $ DefaultContentType { defContentTypesExt = T.pack ext , defContentTypesType = fromMaybe "application/octet-stream" (getMimeType fp) } _ -> Nothing mediaContentType :: MediaInfo -> Maybe DefaultContentType mediaContentType mInfo | Just t <- mInfoExt mInfo , Just ('.', ext) <- T.uncons t = Just $ DefaultContentType { defContentTypesExt = ext , defContentTypesType = fromMaybe "application/octet-stream" (mInfoMimeType mInfo) } | otherwise = Nothing getSpeakerNotesFilePaths :: PandocMonad m => P m [FilePath] getSpeakerNotesFilePaths = do mp <- asks envSpeakerNotesIdMap let notesIdNums = M.elems mp return $ map (\n -> "ppt/notesSlides/notesSlide" <> show n <> ".xml") notesIdNums presentationToContentTypes :: PandocMonad m => Presentation -> P m ContentTypes presentationToContentTypes p@(Presentation _ slides) = do mediaInfos <- mconcat . M.elems <$> gets stMediaIds filePaths <- patternsToFilePaths $ inheritedPatterns p let mediaFps = filter (match (compile "ppt/media/image*")) filePaths let defaults = [ DefaultContentType "xml" "application/xml" , DefaultContentType "rels" "application/vnd.openxmlformats-package.relationships+xml" ] mediaDefaults = nub $ mapMaybe mediaContentType mediaInfos <> mapMaybe mediaFileContentType mediaFps inheritedOverrides = mapMaybe pathToOverride filePaths createdOverrides = mapMaybe pathToOverride [ "docProps/core.xml" , "docProps/custom.xml" , "ppt/presentation.xml" , "ppt/viewProps.xml" ] relativePaths <- mapM slideToFilePath slides let slideOverrides = mapMaybe (\fp -> pathToOverride $ "ppt/slides/" <> fp) relativePaths speakerNotesOverrides <- mapMaybe pathToOverride <$> getSpeakerNotesFilePaths return $ ContentTypes (defaults <> mediaDefaults) (inheritedOverrides <> createdOverrides <> slideOverrides <> speakerNotesOverrides) presML :: T.Text presML = "application/vnd.openxmlformats-officedocument.presentationml" noPresML :: T.Text noPresML = "application/vnd.openxmlformats-officedocument" getContentType :: FilePath -> Maybe MimeType getContentType fp | fp == "ppt/presentation.xml" = Just $ presML <> ".presentation.main+xml" | fp == "ppt/presProps.xml" = Just $ presML <> ".presProps+xml" | fp == "ppt/viewProps.xml" = Just $ presML <> ".viewProps+xml" | fp == "ppt/tableStyles.xml" = Just $ presML <> ".tableStyles+xml" | fp == "docProps/core.xml" = Just "application/vnd.openxmlformats-package.core-properties+xml" | fp == "docProps/custom.xml" = Just "application/vnd.openxmlformats-officedocument.custom-properties+xml" | fp == "docProps/app.xml" = Just $ noPresML <> ".extended-properties+xml" | ["ppt", "slideMasters", f] <- splitDirectories fp , (_, ".xml") <- splitExtension f = Just $ presML <> ".slideMaster+xml" | ["ppt", "slides", f] <- splitDirectories fp , (_, ".xml") <- splitExtension f = Just $ presML <> ".slide+xml" | ["ppt", "notesMasters", f] <- splitDirectories fp , (_, ".xml") <- splitExtension f = Just $ presML <> ".notesMaster+xml" | ["ppt", "notesSlides", f] <- splitDirectories fp , (_, ".xml") <- splitExtension f = Just $ presML <> ".notesSlide+xml" | ["ppt", "theme", f] <- splitDirectories fp , (_, ".xml") <- splitExtension f = Just $ noPresML <> ".theme+xml" | ["ppt", "slideLayouts", _] <- splitDirectories fp= Just $ presML <> ".slideLayout+xml" | otherwise = Nothing -- Kept as String for XML.Light autoNumAttrs :: ListAttributes -> [(Text, Text)] autoNumAttrs (startNum, numStyle, numDelim) = numAttr <> typeAttr where numAttr = [("startAt", tshow startNum) | startNum /= 1] typeAttr = [("type", typeString <> delimString)] typeString = case numStyle of Decimal -> "arabic" UpperAlpha -> "alphaUc" LowerAlpha -> "alphaLc" UpperRoman -> "romanUc" LowerRoman -> "romanLc" _ -> "arabic" delimString = case numDelim of Period -> "Period" OneParen -> "ParenR" TwoParens -> "ParenBoth" _ -> "Period" -- | The XML required to insert an "appear" animation for each of the given -- groups of paragraphs, identified by index. incrementalAnimation :: -- | (ShapeId, [(startParagraphIndex, endParagraphIndex)]) NonEmpty (ShapeId, NonEmpty (Integer, Integer)) -> Element incrementalAnimation indices = mknode "p:timing" [] [tnLst, bldLst] where triples :: NonEmpty (ShapeId, Integer, Integer) triples = do (shapeId, paragraphIds) <- indices (start, end) <- paragraphIds pure (shapeId, start, end) tnLst = mknode "p:tnLst" [] $ mknode "p:par" [] $ mknode "p:cTn" [ ("id", "1") , ("dur", "indefinite") , ("restart", "never") , ("nodeType", "tmRoot") ] $ mknode "p:childTnLst" [] $ mknode "p:seq" [ ("concurrent", "1") , ("nextAc", "seek") ] [ mknode "p:cTn" [ ("id", "2") , ("dur", "indefinite") , ("nodeType", "mainSeq") ] $ mknode "p:childTnLst" [] $ zipWith makePar [3, 7 ..] (toList triples) , mknode "p:prevCondLst" [] $ mknode "p:cond" ([("evt", "onPrev"), ("delay", "0")]) $ mknode "p:tgtEl" [] $ mknode "p:sldTgt" [] () , mknode "p:nextCondLst" [] $ mknode "p:cond" ([("evt", "onNext"), ("delay", "0")]) $ mknode "p:tgtEl" [] $ mknode "p:sldTgt" [] () ] bldLst = mknode "p:bldLst" [] [ mknode "p:bldP" [ ("spid", T.pack (show shapeId)) , ("grpId", "0") , ("uiExpand", "1") , ("build", "p") ] () | (shapeId, _) <- toList indices ] makePar :: Integer -> (ShapeId, Integer, Integer) -> Element makePar nextId (shapeId, start, end) = mknode "p:par" [] $ mknode "p:cTn" [("id", T.pack (show nextId)), ("fill", "hold")] [ mknode "p:stCondLst" [] $ mknode "p:cond" [("delay", "indefinite")] () , mknode "p:childTnLst" [] $ mknode "p:par" [] $ mknode "p:cTn" [ ("id", T.pack (show (nextId + 1))) , ("fill", "hold") ] [ mknode "p:stCondLst" [] $ mknode "p:cond" [("delay", "0")] () , mknode "p:childTnLst" [] $ mknode "p:par" [] $ mknode "p:cTn" [ ("id", T.pack (show (nextId + 2))) , ("presetID", "1") , ("presetClass", "entr") , ("presetSubtype", "0") , ("fill", "hold") , ("grpId", "0") , ("nodeType", "clickEffect") ] [ mknode "p:stCondLst" [] $ mknode "p:cond" [("delay", "0")] () , mknode "p:childTnLst" [] $ mknode "p:set" [] [ mknode "p:cBhvr" [] [ mknode "p:cTn" [ ("id", T.pack (show (nextId + 3))) , ("dur", "1") , ("fill", "hold") ] $ mknode "p:stCondLst" [] $ mknode "p:cond" [("delay", "0")] () , mknode "p:tgtEl" [] $ mknode "p:spTgt" [("spid", T.pack (show shapeId))] $ mknode "p:txEl" [] $ mknode "p:pRg" [ ("st", T.pack (show start)) , ("end", T.pack (show end))] () , mknode "p:attrNameLst" [] $ mknode "p:attrName" [] ("style.visibility" :: Text) ] , mknode "p:to" [] $ mknode "p:strVal" [("val", "visible")] () ] ] ] ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/Powerpoint/Presentation.hs�������������������������������������0000644�0000000�0000000�00000140506�07346545000�022714� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE MultiWayIf #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE PatternGuards #-} {-# LANGUAGE ViewPatterns #-} {- | Module : Text.Pandoc.Writers.Powerpoint.Presentation Copyright : Copyright (C) 2017-2020 Jesse Rosenthal License : GNU GPL, version 2 or above Maintainer : Jesse Rosenthal <jrosenthal@jhu.edu> Stability : alpha Portability : portable Definition of Presentation datatype, modeling a MS Powerpoint (pptx) document, and functions for converting a Pandoc document to Presentation. -} module Text.Pandoc.Writers.Powerpoint.Presentation ( documentToPresentation , Presentation(..) , DocProps(..) , Slide(..) , Layout(..) , SpeakerNotes(..) , SlideId(..) , Shape(..) , Graphic(..) , BulletType(..) , Algnment(..) , Paragraph(..) , ParaElem(..) , ParaProps(..) , RunProps(..) , TableProps(..) , Strikethrough(..) , Capitals(..) , Pixels , PicProps(..) , URL , TeXString(..) , LinkTarget(..) ) where import Control.Monad import Control.Monad.Reader import Control.Monad.State import Data.List (intercalate) import Data.List.NonEmpty (nonEmpty) import Data.Default import Text.Pandoc.Definition import Text.Pandoc.ImageSize import Text.Pandoc.Slides (getSlideLevel) import Text.Pandoc.Options import Text.Pandoc.Logging import Text.Pandoc.Walk import qualified Text.Pandoc.Shared as Shared -- so we don't overlap "Element" import Text.Pandoc.Shared (tshow) import Text.Pandoc.Writers.Shared (lookupMetaInlines, lookupMetaBlocks , lookupMetaString, toTableOfContents , toLegacyTable) import qualified Data.Map as M import qualified Data.Set as S import Data.Maybe (maybeToList, fromMaybe, listToMaybe, isNothing) import Text.Pandoc.Highlighting import qualified Data.Text as T import Control.Applicative ((<|>)) import Skylighting import Data.Bifunctor (bimap) import Data.Char (isSpace) data WriterEnv = WriterEnv { envMetadata :: Meta , envRunProps :: RunProps , envParaProps :: ParaProps , envSlideLevel :: Int , envOpts :: WriterOptions , envSlideHasHeader :: Bool , envInList :: Bool , envInNoteSlide :: Bool , envCurSlideId :: SlideId , envInSpeakerNotes :: Bool , envInIncrementalDiv :: Maybe InIncrementalDiv , envInListInBlockQuote :: Bool } deriving (Show) instance Default WriterEnv where def = WriterEnv { envMetadata = mempty , envRunProps = def , envParaProps = def , envSlideLevel = 2 , envOpts = def , envSlideHasHeader = False , envInList = False , envInNoteSlide = False , envCurSlideId = SlideId "Default" , envInSpeakerNotes = False , envInIncrementalDiv = Nothing , envInListInBlockQuote = False } data WriterState = WriterState { stNoteIds :: M.Map Int [Block] -- associate anchors with slide id , stAnchorMap :: M.Map T.Text SlideId , stSlideIdSet :: S.Set SlideId , stLog :: [LogMessage] , stSpeakerNotes :: SpeakerNotes } deriving (Show, Eq) instance Default WriterState where def = WriterState { stNoteIds = mempty , stAnchorMap = mempty -- we reserve this s , stSlideIdSet = reservedSlideIds , stLog = [] , stSpeakerNotes = mempty } data InIncrementalDiv = InIncremental -- ^ The current content is contained within an "incremental" div. | InNonIncremental -- ^ The current content is contained within a "nonincremental" div. deriving (Show) listShouldBeIncremental :: Pres Bool listShouldBeIncremental = do incrementalOption <- asks (writerIncremental . envOpts) inIncrementalDiv <- asks envInIncrementalDiv inBlockQuote <- asks envInListInBlockQuote let toBoolean = (\case InIncremental -> True InNonIncremental -> False) maybeInvert = if inBlockQuote then not else id pure (maybeInvert (maybe incrementalOption toBoolean inIncrementalDiv)) metadataSlideId :: SlideId metadataSlideId = SlideId "Metadata" tocSlideId :: SlideId tocSlideId = SlideId "TOC" endNotesSlideId :: SlideId endNotesSlideId = SlideId "EndNotes" reservedSlideIds :: S.Set SlideId reservedSlideIds = S.fromList [ metadataSlideId , tocSlideId , endNotesSlideId ] uniqueSlideId' :: Integer -> S.Set SlideId -> T.Text -> SlideId uniqueSlideId' n idSet s = let s' = if n == 0 then s else s <> "-" <> tshow n in if SlideId s' `S.member` idSet then uniqueSlideId' (n+1) idSet s else SlideId s' uniqueSlideId :: S.Set SlideId -> T.Text -> SlideId uniqueSlideId = uniqueSlideId' 0 runUniqueSlideId :: T.Text -> Pres SlideId runUniqueSlideId s = do idSet <- gets stSlideIdSet let sldId = uniqueSlideId idSet s modify $ \st -> st{stSlideIdSet = S.insert sldId idSet} return sldId addLogMessage :: LogMessage -> Pres () addLogMessage msg = modify $ \st -> st{stLog = msg : stLog st} type Pres = ReaderT WriterEnv (State WriterState) runPres :: WriterEnv -> WriterState -> Pres a -> (a, [LogMessage]) runPres env st p = (pres, reverse $ stLog finalSt) where (pres, finalSt) = runState (runReaderT p env) st -- GHC 7.8 will still complain about concat <$> mapM unless we specify -- Functor. We can get rid of this when we stop supporting GHC 7.8. concatMapM :: (Monad m) => (a -> m [b]) -> [a] -> m [b] concatMapM f xs = liftM concat (mapM f xs) type Pixels = Integer data Presentation = Presentation DocProps [Slide] deriving (Show) data DocProps = DocProps { dcTitle :: Maybe T.Text , dcSubject :: Maybe T.Text , dcCreator :: Maybe T.Text , dcKeywords :: Maybe [T.Text] , dcDescription :: Maybe T.Text , cpCategory :: Maybe T.Text , dcDate :: Maybe T.Text , customProperties :: Maybe [(T.Text, T.Text)] } deriving (Show, Eq) data Slide = Slide { slideId :: SlideId , slideLayout :: Layout , slideSpeakerNotes :: SpeakerNotes , slideBackgroundImage :: Maybe FilePath } deriving (Show, Eq) newtype SlideId = SlideId T.Text deriving (Show, Eq, Ord) -- In theory you could have anything on a notes slide but it seems -- designed mainly for one textbox, so we'll just put in the contents -- of that textbox, to avoid other shapes that won't work as well. newtype SpeakerNotes = SpeakerNotes {fromSpeakerNotes :: [Paragraph]} deriving (Show, Eq, Monoid, Semigroup) data Layout = MetadataSlide [ParaElem] [ParaElem] [[ParaElem]] [ParaElem] -- title subtitle authors date | TitleSlide [ParaElem] -- heading | ContentSlide [ParaElem] [Shape] -- heading content | TwoColumnSlide [ParaElem] [Shape] [Shape] -- heading left right | ComparisonSlide [ParaElem] ([Shape], [Shape]) ([Shape], [Shape]) -- heading left@(text, content) right@(text, content) | ContentWithCaptionSlide [ParaElem] [Shape] [Shape] -- heading text content | BlankSlide deriving (Show, Eq) data Shape = Pic PicProps FilePath T.Text [ParaElem] -- title alt-text | GraphicFrame [Graphic] [ParaElem] | TextBox [Paragraph] | RawOOXMLShape T.Text deriving (Show, Eq) type TableCell = [Paragraph] -- TODO: remove when better handling of new -- tables is implemented type SimpleCell = [Block] data TableProps = TableProps { tblPrFirstRow :: Bool , tblPrBandRow :: Bool } deriving (Show, Eq) data Graphic = Tbl TableProps [TableCell] [[TableCell]] deriving (Show, Eq) data Paragraph = Paragraph { paraProps :: ParaProps , paraElems :: [ParaElem] } deriving (Show, Eq) data BulletType = Bullet | AutoNumbering ListAttributes deriving (Show, Eq) data Algnment = AlgnLeft | AlgnRight | AlgnCenter deriving (Show, Eq) data ParaProps = ParaProps { pPropMarginLeft :: Maybe Pixels , pPropMarginRight :: Maybe Pixels , pPropLevel :: Int , pPropBullet :: Maybe BulletType , pPropAlign :: Maybe Algnment , pPropSpaceBefore :: Maybe Pixels , pPropIndent :: Maybe Pixels , pPropIncremental :: Bool } deriving (Show, Eq) instance Default ParaProps where def = ParaProps { pPropMarginLeft = Just 0 , pPropMarginRight = Just 0 , pPropLevel = 0 , pPropBullet = Nothing , pPropAlign = Nothing , pPropSpaceBefore = Nothing , pPropIndent = Just 0 , pPropIncremental = False } newtype TeXString = TeXString {unTeXString :: T.Text} deriving (Eq, Show) data ParaElem = Break | Run RunProps T.Text -- It would be more elegant to have native TeXMath -- Expressions here, but this allows us to use -- `convertmath` from T.P.Writers.Math. Will perhaps -- revisit in the future. | MathElem MathType TeXString | RawOOXMLParaElem T.Text deriving (Show, Eq) data Strikethrough = NoStrike | SingleStrike | DoubleStrike deriving (Show, Eq) data Capitals = NoCapitals | SmallCapitals | AllCapitals deriving (Show, Eq) type URL = T.Text data LinkTarget = ExternalTarget (URL, T.Text) | InternalTarget SlideId deriving (Show, Eq) data RunProps = RunProps { rPropBold :: Bool , rPropItalics :: Bool , rStrikethrough :: Maybe Strikethrough , rBaseline :: Maybe Int , rCap :: Maybe Capitals , rLink :: Maybe LinkTarget , rPropCode :: Bool , rPropBlockQuote :: Bool , rPropForceSize :: Maybe Pixels , rSolidFill :: Maybe Color -- TODO: Make a full underline data type with -- the different options. , rPropUnderline :: Bool } deriving (Show, Eq) instance Default RunProps where def = RunProps { rPropBold = False , rPropItalics = False , rStrikethrough = Nothing , rBaseline = Nothing , rCap = Nothing , rLink = Nothing , rPropCode = False , rPropBlockQuote = False , rPropForceSize = Nothing , rSolidFill = Nothing , rPropUnderline = False } data PicProps = PicProps { picPropLink :: Maybe LinkTarget , picWidth :: Maybe Dimension , picHeight :: Maybe Dimension } deriving (Show, Eq) instance Default PicProps where def = PicProps { picPropLink = Nothing , picWidth = Nothing , picHeight = Nothing } -------------------------------------------------- inlinesToParElems :: [Inline] -> Pres [ParaElem] inlinesToParElems = concatMapM inlineToParElems inlineToParElems :: Inline -> Pres [ParaElem] inlineToParElems (Str s) = do pr <- asks envRunProps return [Run pr s] inlineToParElems (Emph ils) = local (\r -> r{envRunProps = (envRunProps r){rPropItalics=True}}) $ inlinesToParElems ils inlineToParElems (Underline ils) = local (\r -> r{envRunProps = (envRunProps r){rPropUnderline=True}}) $ inlinesToParElems ils inlineToParElems (Strong ils) = local (\r -> r{envRunProps = (envRunProps r){rPropBold=True}}) $ inlinesToParElems ils inlineToParElems (Strikeout ils) = local (\r -> r{envRunProps = (envRunProps r){rStrikethrough=Just SingleStrike}}) $ inlinesToParElems ils inlineToParElems (Superscript ils) = local (\r -> r{envRunProps = (envRunProps r){rBaseline=Just 30000}}) $ inlinesToParElems ils inlineToParElems (Subscript ils) = local (\r -> r{envRunProps = (envRunProps r){rBaseline=Just (-25000)}}) $ inlinesToParElems ils inlineToParElems (SmallCaps ils) = local (\r -> r{envRunProps = (envRunProps r){rCap = Just SmallCapitals}}) $ inlinesToParElems ils inlineToParElems Space = inlineToParElems (Str " ") inlineToParElems SoftBreak = inlineToParElems (Str " ") inlineToParElems LineBreak = return [Break] inlineToParElems (Link _ ils (url, title)) = local (\r ->r{envRunProps = (envRunProps r){rLink = Just $ ExternalTarget (url, title)}}) $ inlinesToParElems ils inlineToParElems (Code _ str) = local (\r ->r{envRunProps = (envRunProps r){rPropCode = True}}) $ inlineToParElems $ Str str inlineToParElems (Math mathtype str) = return [MathElem mathtype (TeXString str)] -- We ignore notes if we're in a speaker notes div. Otherwise this -- would add an entry to the endnotes slide, which would put speaker -- notes in the public presentation. In the future, we can entertain a -- way of adding a speakernotes-specific note that would just add -- paragraphs to the bottom of the notes page. inlineToParElems (Note blks) = do inSpNotes <- asks envInSpeakerNotes if inSpNotes then return [] else do notes <- gets stNoteIds let maxNoteId = maybe 0 maximum $ nonEmpty $ M.keys notes curNoteId = maxNoteId + 1 modify $ \st -> st { stNoteIds = M.insert curNoteId blks notes } local (\env -> env{envRunProps = (envRunProps env){rLink = Just $ InternalTarget endNotesSlideId}}) $ inlineToParElems $ Superscript [Str $ tshow curNoteId] inlineToParElems (Span _ ils) = inlinesToParElems ils inlineToParElems (Quoted quoteType ils) = inlinesToParElems $ [Str open] ++ ils ++ [Str close] where (open, close) = case quoteType of SingleQuote -> ("\x2018", "\x2019") DoubleQuote -> ("\x201C", "\x201D") inlineToParElems il@(RawInline fmt s) = case fmt of Format "openxml" -> return [RawOOXMLParaElem s] _ -> do addLogMessage $ InlineNotRendered il return [] inlineToParElems (Cite _ ils) = inlinesToParElems ils -- Note: we shouldn't reach this, because images should be handled at -- the shape level, but should that change in the future, we render -- the alt text. inlineToParElems (Image _ alt _) = inlinesToParElems alt isListType :: Block -> Bool isListType (OrderedList _ _) = True isListType (BulletList _) = True isListType (DefinitionList _) = True isListType _ = False registerAnchorId :: T.Text -> Pres () registerAnchorId anchor = do anchorMap <- gets stAnchorMap sldId <- asks envCurSlideId unless (T.null anchor) $ modify $ \st -> st {stAnchorMap = M.insert anchor sldId anchorMap} -- Currently hardcoded, until I figure out how to make it dynamic. blockQuoteSize :: Pixels blockQuoteSize = 20 noteSize :: Pixels noteSize = 18 blockToParagraphs :: Block -> Pres [Paragraph] blockToParagraphs (Plain ils) = blockToParagraphs (Para ils) blockToParagraphs (Para ils) = do parElems <- inlinesToParElems ils pProps <- asks envParaProps return [Paragraph pProps parElems] blockToParagraphs (LineBlock ilsList) = do parElems <- inlinesToParElems $ intercalate [LineBreak] ilsList pProps <- asks envParaProps return [Paragraph pProps parElems] -- TODO: work out the attributes blockToParagraphs (CodeBlock attr str) = do pProps <- asks envParaProps local (\r -> r{ envParaProps = def{ pPropMarginLeft = Nothing , pPropBullet = Nothing , pPropLevel = pPropLevel pProps , pPropIndent = Just 0 } , envRunProps = (envRunProps r){rPropCode = True}}) $ do mbSty <- writerHighlightStyle <$> asks envOpts synMap <- writerSyntaxMap <$> asks envOpts case mbSty of Just sty -> case highlight synMap (formatSourceLines sty) attr str of Right pElems -> do pPropsNew <- asks envParaProps return [Paragraph pPropsNew pElems] Left _ -> blockToParagraphs $ Para [Str str] Nothing -> blockToParagraphs $ Para [Str str] -- We can't yet do incremental lists, but we should render a -- (BlockQuote List) as a list to maintain compatibility with other -- formats. blockToParagraphs (BlockQuote (blk : blks)) | isListType blk = do ps <- local (\env -> env { envInListInBlockQuote = True }) (blockToParagraphs blk) ps' <- blockToParagraphs $ BlockQuote blks return $ ps ++ ps' blockToParagraphs (BlockQuote blks) = local (\r -> r{ envParaProps = (envParaProps r){ pPropMarginLeft = Just 100 , pPropIndent = Just 0 } , envRunProps = (envRunProps r){rPropForceSize = Just blockQuoteSize}})$ concatMapM blockToParagraphs blks -- TODO: work out the format blockToParagraphs blk@(RawBlock _ _) = do addLogMessage $ BlockNotRendered blk return [] blockToParagraphs (Header _ (ident, _, _) ils) = do -- Note that this function only deals with content blocks, so it -- will only touch headers that are above the current slide level -- -- slides at or below the slidelevel will be taken care of by -- `blocksToSlide'`. We have the register anchors in both of them. registerAnchorId ident -- we set the subeader to bold parElems <- local (\e->e{envRunProps = (envRunProps e){rPropBold=True}}) $ inlinesToParElems ils -- and give it a bit of space before it. return [Paragraph def{pPropSpaceBefore = Just 30} parElems] blockToParagraphs (BulletList blksLst) = do pProps <- asks envParaProps incremental <- listShouldBeIncremental local (\env -> env{ envInList = True , envParaProps = pProps{ pPropBullet = Just Bullet , pPropMarginLeft = Nothing , pPropIndent = Nothing , pPropIncremental = incremental }}) $ concatMapM multiParList blksLst blockToParagraphs (OrderedList listAttr blksLst) = do pProps <- asks envParaProps incremental <- listShouldBeIncremental local (\env -> env{ envInList = True , envParaProps = pProps{ pPropBullet = Just (AutoNumbering listAttr) , pPropMarginLeft = Nothing , pPropIndent = Nothing , pPropIncremental = incremental }}) $ concatMapM multiParList blksLst blockToParagraphs (DefinitionList entries) = do incremental <- listShouldBeIncremental let go :: ([Inline], [[Block]]) -> Pres [Paragraph] go (ils, blksLst) = do term <-blockToParagraphs $ Para [Strong ils] -- For now, we'll treat each definition term as a -- blockquote. We can extend this further later. definition <- concatMapM (blockToParagraphs . BlockQuote) blksLst return $ term ++ definition local (\env -> env {envParaProps = (envParaProps env) {pPropIncremental = incremental}}) $ concatMapM go entries blockToParagraphs (Div (_, classes, _) blks) = let hasIncremental = "incremental" `elem` classes hasNonIncremental = "nonincremental" `elem` classes incremental = if | hasIncremental -> Just InIncremental | hasNonIncremental -> Just InNonIncremental | otherwise -> Nothing addIncremental env = env { envInIncrementalDiv = incremental } in local addIncremental (concatMapM blockToParagraphs blks) blockToParagraphs (Figure attr capt blks) = blockToParagraphs (Shared.figureDiv attr capt blks) blockToParagraphs hr@HorizontalRule = notRendered hr blockToParagraphs tbl@Table{} = notRendered tbl -- | Report that a block cannot be rendered. notRendered :: Block -> Pres [Paragraph] notRendered blk = do addLogMessage $ BlockNotRendered blk return [] -- | Make sure the bullet env gets turned off after the first para. multiParList :: [Block] -> Pres [Paragraph] multiParList [] = return [] multiParList (b:bs) = do pProps <- asks envParaProps p <- blockToParagraphs b let level = pPropLevel pProps ps <- local (\env -> env { envParaProps = pProps { pPropBullet = Nothing , pPropLevel = level + 1 } }) $ concatMapM blockToParagraphs bs return $ p ++ ps cellToParagraphs :: Alignment -> SimpleCell -> Pres [Paragraph] cellToParagraphs algn tblCell = do paras <- mapM blockToParagraphs tblCell let alignment = case algn of AlignLeft -> Just AlgnLeft AlignRight -> Just AlgnRight AlignCenter -> Just AlgnCenter AlignDefault -> Nothing paras' = map (map (\p -> p{paraProps = (paraProps p){pPropAlign = alignment}})) paras return $ concat paras' rowToParagraphs :: [Alignment] -> [SimpleCell] -> Pres [[Paragraph]] rowToParagraphs algns tblCells = do -- We have to make sure we have the right number of alignments let pairs = zip (algns ++ repeat AlignDefault) tblCells mapM (uncurry cellToParagraphs) pairs withAttr :: Attr -> Shape -> Shape withAttr attr (Pic picPr url title caption) = let picPr' = picPr { picWidth = dimension Width attr , picHeight = dimension Height attr } in Pic picPr' url title caption withAttr _ sp = sp blockToShape :: Block -> Pres Shape blockToShape (Plain ils) = blockToShape (Para ils) blockToShape (Para (il:_)) | Image attr ils (url, title) <- il = withAttr attr . Pic def (T.unpack url) title <$> inlinesToParElems ils blockToShape (Para (il:_)) | Link _ (il':_) target <- il , Image attr ils (url, title) <- il' = withAttr attr . Pic def{picPropLink = Just $ ExternalTarget target} (T.unpack url) title <$> inlinesToParElems ils blockToShape (Figure _figattr _caption [b]) = blockToShape b blockToShape (Table _ blkCapt specs thead tbody tfoot) = do let (caption, algn, _, hdrCells, rows) = toLegacyTable blkCapt specs thead tbody tfoot caption' <- inlinesToParElems caption hdrCells' <- rowToParagraphs algn hdrCells rows' <- mapM (rowToParagraphs algn) rows let tblPr = if null hdrCells then TableProps { tblPrFirstRow = False , tblPrBandRow = True } else TableProps { tblPrFirstRow = True , tblPrBandRow = True } return $ GraphicFrame [Tbl tblPr hdrCells' rows'] caption' -- If the format isn't openxml, we fall through to blockToPargraphs blockToShape (RawBlock (Format "openxml") str) = return $ RawOOXMLShape str blockToShape blk = do paras <- blockToParagraphs blk let paras' = map (\par -> par{paraElems = combineParaElems $ paraElems par}) paras return $ TextBox paras' combineShapes :: [Shape] -> [Shape] combineShapes [] = [] combineShapes (pic@Pic{} : ss) = pic : combineShapes ss combineShapes (TextBox [] : ss) = combineShapes ss combineShapes (s : TextBox [] : ss) = combineShapes (s : ss) combineShapes (TextBox (p:ps) : TextBox (p':ps') : ss) = combineShapes $ TextBox ((p:ps) ++ (p':ps')) : ss combineShapes (s:ss) = s : combineShapes ss isNotesDiv :: Block -> Bool isNotesDiv (Div (_, ["notes"], _) _) = True isNotesDiv _ = False blocksToShapes :: [Block] -> Pres [Shape] blocksToShapes blks = combineShapes <$> mapM blockToShape blks isImage :: Inline -> Bool isImage Image{} = True isImage (Link _ (Image{} : _) _) = True isImage _ = False plainOrPara :: Block -> Maybe [Inline] plainOrPara (Plain ils) = Just ils plainOrPara (Para ils) = Just ils plainOrPara _ = Nothing notText :: Block -> Bool notText block | startsWithImage block = True notText Table{} = True notText _ = False startsWithImage :: Block -> Bool startsWithImage block = fromMaybe False $ do inline <- plainOrPara block >>= listToMaybe pure (isImage inline) -- | Group blocks into a number of "splits" splitBlocks' :: -- | Blocks so far in the current split [Block] -> -- | Splits so far [[Block]] -> -- | All remaining blocks [Block] -> Pres [[Block]] splitBlocks' cur acc [] = return $ acc ++ ([cur | not (null cur)]) splitBlocks' cur acc (HorizontalRule : blks) = splitBlocks' [] (acc ++ ([cur | not (null cur)])) blks splitBlocks' cur acc (h@(Header n _ _) : blks) = do slideLevel <- asks envSlideLevel let (nts, blks') = span isNotesDiv blks case compare n slideLevel of LT -> splitBlocks' [] (acc ++ ([cur | not (null cur)]) ++ [h : nts]) blks' EQ -> splitBlocks' (h:nts) (acc ++ ([cur | not (null cur)])) blks' GT -> splitBlocks' (cur ++ (h:nts)) acc blks' -- `blockToParagraphs` treats Plain and Para the same, so we can save -- some code duplication by treating them the same here. splitBlocks' cur acc (Plain ils : blks) = splitBlocks' cur acc (Para ils : blks) splitBlocks' cur acc (Para (il:ils) : blks) | isImage il = do slideLevel <- asks envSlideLevel let (nts, blks') = if null ils then span isNotesDiv blks else ([], blks) case cur of [Header n _ _] | n == slideLevel || slideLevel == 0 -> splitBlocks' [] (acc ++ [cur ++ [Para [il]] ++ nts]) (if null ils then blks' else Para ils : blks') _ -> splitBlocks' [] (if any notText cur then acc ++ ([cur | not (null cur)]) ++ [Para [il] : nts] else acc ++ [cur ++ [Para [il]] ++ nts]) (if null ils then blks' else Para ils : blks') splitBlocks' cur acc (tbl@Table{} : blks) = do slideLevel <- asks envSlideLevel let (nts, blks') = span isNotesDiv blks case cur of [Header n _ _] | n == slideLevel || slideLevel == 0 -> splitBlocks' [] (acc ++ [cur ++ [tbl] ++ nts]) blks' _ -> splitBlocks' [] (if any notText cur then acc ++ ([cur | not (null cur)]) ++ [tbl : nts] else acc ++ ([cur ++ [tbl] ++ nts])) blks' splitBlocks' cur acc (d@(Div (_, classes, _) _): blks) | "columns" `elem` classes = do slideLevel <- asks envSlideLevel let (nts, blks') = span isNotesDiv blks case cur of [Header n _ _] | n == slideLevel || slideLevel == 0 -> splitBlocks' [] (acc ++ [cur ++ [d] ++ nts]) blks' _ -> splitBlocks' [] (acc ++ ([cur | not (null cur)]) ++ [d : nts]) blks' splitBlocks' cur acc (blk : blks) = splitBlocks' (cur ++ [blk]) acc blks splitBlocks :: [Block] -> Pres [[Block]] splitBlocks = splitBlocks' [] [] -- | Assuming the slide title is already handled, convert these blocks to the -- body content for the slide. bodyBlocksToSlide :: Int -> [Block] -> SpeakerNotes -> Pres Slide bodyBlocksToSlide _ (blk : blks) spkNotes | Div (_, classes, _) divBlks <- blk , "columns" `elem` classes , Div (_, clsL, _) blksL : Div (_, clsR, _) blksR : remaining <- divBlks , "column" `elem` clsL, "column" `elem` clsR = do mapM_ (addLogMessage . BlockNotRendered) (blks ++ remaining) let mkTwoColumn left right = do blksL' <- join . take 1 <$> splitBlocks left blksR' <- join . take 1 <$> splitBlocks right shapesL <- blocksToShapes blksL' shapesR <- blocksToShapes blksR' sldId <- asks envCurSlideId return $ Slide sldId (TwoColumnSlide [] shapesL shapesR) spkNotes Nothing let mkComparison blksL1 blksL2 blksR1 blksR2 = do shapesL1 <- blocksToShapes blksL1 shapesL2 <- blocksToShapes blksL2 shapesR1 <- blocksToShapes blksR1 shapesR2 <- blocksToShapes blksR2 sldId <- asks envCurSlideId return $ Slide sldId (ComparisonSlide [] (shapesL1, shapesL2) (shapesR1, shapesR2)) spkNotes Nothing let (blksL1, blksL2) = break notText blksL (blksR1, blksR2) = break notText blksR if (any null [blksL1, blksL2]) && (any null [blksR1, blksR2]) then mkTwoColumn blksL blksR else mkComparison blksL1 blksL2 blksR1 blksR2 bodyBlocksToSlide _ (blk : blks) spkNotes = do sldId <- asks envCurSlideId inNoteSlide <- asks envInNoteSlide let mkSlide s = Slide sldId s spkNotes Nothing if inNoteSlide then mkSlide . ContentSlide [] <$> forceFontSize noteSize (blocksToShapes (blk : blks)) else let contentOrBlankSlide = if makesBlankSlide (blk : blks) then pure (mkSlide BlankSlide) else mkSlide . ContentSlide [] <$> blocksToShapes (blk : blks) in case break notText (blk : blks) of ([], _) -> contentOrBlankSlide (_, []) -> contentOrBlankSlide (textBlocks, contentBlocks) -> do textShapes <- blocksToShapes textBlocks contentShapes <- blocksToShapes contentBlocks return (mkSlide (ContentWithCaptionSlide [] textShapes contentShapes)) bodyBlocksToSlide _ [] spkNotes = do sldId <- asks envCurSlideId return $ Slide sldId BlankSlide spkNotes Nothing blocksToSlide' :: Int -> [Block] -> SpeakerNotes -> Pres Slide blocksToSlide' lvl (Header n (ident, _, attributes) ils : blks) spkNotes | n < lvl = do registerAnchorId ident sldId <- asks envCurSlideId hdr <- inlinesToParElems ils return $ Slide sldId (TitleSlide hdr) spkNotes backgroundImage | n == lvl || lvl == 0 = do registerAnchorId ident hdr <- inlinesToParElems ils -- Now get the slide without the header, and then add the header -- in. slide <- bodyBlocksToSlide lvl blks spkNotes let layout = case slideLayout slide of ContentSlide _ cont -> ContentSlide hdr cont TwoColumnSlide _ contL contR -> TwoColumnSlide hdr contL contR ComparisonSlide _ contL contR -> ComparisonSlide hdr contL contR ContentWithCaptionSlide _ text content -> ContentWithCaptionSlide hdr text content BlankSlide -> if all inlineIsBlank ils then BlankSlide else ContentSlide hdr [] layout' -> layout' return $ slide{slideLayout = layout, slideBackgroundImage = backgroundImage} where backgroundImage = T.unpack <$> (lookup "background-image" attributes <|> lookup "data-background-image" attributes) blocksToSlide' lvl blks spkNotes = bodyBlocksToSlide lvl blks spkNotes blockToSpeakerNotes :: Block -> Pres SpeakerNotes blockToSpeakerNotes (Div (_, ["notes"], _) blks) = local (\env -> env{envInSpeakerNotes=True}) $ SpeakerNotes <$> concatMapM blockToParagraphs blks blockToSpeakerNotes _ = return mempty handleSpeakerNotes :: Block -> Pres () handleSpeakerNotes blk = do spNotes <- blockToSpeakerNotes blk modify $ \st -> st{stSpeakerNotes = stSpeakerNotes st <> spNotes} handleAndFilterSpeakerNotes' :: [Block] -> Pres [Block] handleAndFilterSpeakerNotes' blks = do mapM_ handleSpeakerNotes blks return $ filter (not . isNotesDiv) blks handleAndFilterSpeakerNotes :: [Block] -> Pres ([Block], SpeakerNotes) handleAndFilterSpeakerNotes blks = do modify $ \st -> st{stSpeakerNotes = mempty} blks' <- walkM handleAndFilterSpeakerNotes' blks spkNotes <- gets stSpeakerNotes return (blks', spkNotes) blocksToSlide :: [Block] -> Pres Slide blocksToSlide blks = do (blks', spkNotes) <- handleAndFilterSpeakerNotes blks slideLevel <- asks envSlideLevel blocksToSlide' slideLevel blks' spkNotes makeNoteEntry :: (Int, [Block]) -> [Block] makeNoteEntry (n, blks) = let enum = Str (tshow n <> ".") in case blks of (Para ils : blks') -> Para (enum : Space : ils) : blks' _ -> Para [enum] : blks forceFontSize :: Pixels -> Pres a -> Pres a forceFontSize px x = do rpr <- asks envRunProps local (\r -> r {envRunProps = rpr{rPropForceSize = Just px}}) x -- We leave these as blocks because we will want to include them in -- the TOC. makeEndNotesSlideBlocks :: Pres [Block] makeEndNotesSlideBlocks = do noteIds <- gets stNoteIds slideLevel <- asks envSlideLevel exts <- writerExtensions <$> asks envOpts meta <- asks envMetadata -- Get identifiers so we can give the notes section a unique ident. anchorSet <- M.keysSet <$> gets stAnchorMap if M.null noteIds then return [] else let title = case lookupMetaInlines "notes-title" meta of [] -> [Str "Notes"] ls -> ls ident = Shared.uniqueIdent exts title anchorSet hdr = Header slideLevel (ident, [], []) title blks = concatMap makeNoteEntry $ M.toList noteIds in return $ hdr : blks getMetaSlide :: Pres (Maybe Slide) getMetaSlide = do meta <- asks envMetadata title <- inlinesToParElems $ docTitle meta subtitle <- inlinesToParElems $ lookupMetaInlines "subtitle" meta authors <- mapM inlinesToParElems $ docAuthors meta date <- inlinesToParElems $ docDate meta if null title && null subtitle && null authors && null date then return Nothing else return $ Just $ Slide metadataSlideId (MetadataSlide title subtitle authors date) mempty Nothing addSpeakerNotesToMetaSlide :: Slide -> [Block] -> Pres (Slide, [Block]) addSpeakerNotesToMetaSlide (Slide sldId layout@MetadataSlide{} spkNotes backgroundImage) blks = do let (ntsBlks, blks') = span isNotesDiv blks spkNotes' <- mconcat <$> mapM blockToSpeakerNotes ntsBlks return (Slide sldId layout (spkNotes <> spkNotes') backgroundImage, blks') addSpeakerNotesToMetaSlide sld blks = return (sld, blks) makeTOCSlide :: [Block] -> Pres Slide makeTOCSlide blks = local (\env -> env{envCurSlideId = tocSlideId}) $ do opts <- asks envOpts let contents = toTableOfContents opts blks meta <- asks envMetadata slideLevel <- asks envSlideLevel let tocTitle = case lookupMetaInlines "toc-title" meta of [] -> [Str "Table of Contents"] ls -> ls hdr = Header slideLevel nullAttr tocTitle blocksToSlide [hdr, contents] combineParaElems' :: Maybe ParaElem -> [ParaElem] -> [ParaElem] combineParaElems' mbPElem [] = maybeToList mbPElem combineParaElems' Nothing (pElem : pElems) = combineParaElems' (Just pElem) pElems combineParaElems' (Just pElem') (pElem : pElems) | Run rPr' s' <- pElem' , Run rPr s <- pElem , rPr == rPr' = combineParaElems' (Just $ Run rPr' $ s' <> s) pElems | otherwise = pElem' : combineParaElems' (Just pElem) pElems combineParaElems :: [ParaElem] -> [ParaElem] combineParaElems = combineParaElems' Nothing applyToParagraph :: Monad m => (ParaElem -> m ParaElem) -> Paragraph -> m Paragraph applyToParagraph f para = do paraElems' <- mapM f $ paraElems para return $ para {paraElems = paraElems'} applyToShape :: Monad m => (ParaElem -> m ParaElem) -> Shape -> m Shape applyToShape f (Pic pPr fp title pes) = Pic pPr fp title <$> mapM f pes applyToShape f (GraphicFrame gfx pes) = GraphicFrame gfx <$> mapM f pes applyToShape f (TextBox paras) = TextBox <$> mapM (applyToParagraph f) paras applyToShape _ (RawOOXMLShape str) = return $ RawOOXMLShape str applyToLayout :: Monad m => (ParaElem -> m ParaElem) -> Layout -> m Layout applyToLayout f (MetadataSlide title subtitle authors date) = do title' <- mapM f title subtitle' <- mapM f subtitle authors' <- mapM (mapM f) authors date' <- mapM f date return $ MetadataSlide title' subtitle' authors' date' applyToLayout f (TitleSlide title) = TitleSlide <$> mapM f title applyToLayout f (ContentSlide hdr content) = do hdr' <- mapM f hdr content' <- mapM (applyToShape f) content return $ ContentSlide hdr' content' applyToLayout f (TwoColumnSlide hdr contentL contentR) = do hdr' <- mapM f hdr contentL' <- mapM (applyToShape f) contentL contentR' <- mapM (applyToShape f) contentR return $ TwoColumnSlide hdr' contentL' contentR' applyToLayout f (ComparisonSlide hdr (contentL1, contentL2) (contentR1, contentR2)) = do hdr' <- mapM f hdr contentL1' <- mapM (applyToShape f) contentL1 contentL2' <- mapM (applyToShape f) contentL2 contentR1' <- mapM (applyToShape f) contentR1 contentR2' <- mapM (applyToShape f) contentR2 return $ ComparisonSlide hdr' (contentL1', contentL2') (contentR1', contentR2') applyToLayout f (ContentWithCaptionSlide hdr textShapes contentShapes) = do hdr' <- mapM f hdr textShapes' <- mapM (applyToShape f) textShapes contentShapes' <- mapM (applyToShape f) contentShapes return $ ContentWithCaptionSlide hdr' textShapes' contentShapes' applyToLayout _ BlankSlide = pure BlankSlide applyToSlide :: Monad m => (ParaElem -> m ParaElem) -> Slide -> m Slide applyToSlide f slide = do layout' <- applyToLayout f $ slideLayout slide let paras = fromSpeakerNotes $ slideSpeakerNotes slide notes' <- SpeakerNotes <$> mapM (applyToParagraph f) paras return slide{slideLayout = layout', slideSpeakerNotes = notes'} replaceAnchor :: ParaElem -> Pres ParaElem replaceAnchor (Run rProps s) | Just (ExternalTarget (T.uncons -> Just ('#', anchor), _)) <- rLink rProps = do anchorMap <- gets stAnchorMap -- If the anchor is not in the anchormap, we just remove the -- link. let rProps' = case M.lookup anchor anchorMap of Just n -> rProps{rLink = Just $ InternalTarget n} Nothing -> rProps{rLink = Nothing} return $ Run rProps' s replaceAnchor pe = return pe emptyParaElem :: ParaElem -> Bool emptyParaElem (Run _ s) = T.null $ Shared.trim s emptyParaElem (MathElem _ ts) = T.null $ Shared.trim $ unTeXString ts emptyParaElem _ = False emptyParagraph :: Paragraph -> Bool emptyParagraph para = all emptyParaElem $ paraElems para emptyShape :: Shape -> Bool emptyShape (TextBox paras) = all emptyParagraph paras emptyShape _ = False emptyLayout :: Layout -> Bool emptyLayout layout = case layout of MetadataSlide title subtitle authors date -> all emptyParaElem title && all emptyParaElem subtitle && all (all emptyParaElem) authors && all emptyParaElem date TitleSlide hdr -> all emptyParaElem hdr ContentSlide hdr shapes -> all emptyParaElem hdr && all emptyShape shapes TwoColumnSlide hdr shapes1 shapes2 -> all emptyParaElem hdr && all emptyShape shapes1 && all emptyShape shapes2 ComparisonSlide hdr (shapesL1, shapesL2) (shapesR1, shapesR2) -> all emptyParaElem hdr && all emptyShape shapesL1 && all emptyShape shapesL2 && all emptyShape shapesR1 && all emptyShape shapesR2 ContentWithCaptionSlide hdr textShapes contentShapes -> all emptyParaElem hdr && all emptyShape textShapes && all emptyShape contentShapes BlankSlide -> False emptySlide :: Slide -> Bool emptySlide (Slide _ layout notes backgroundImage) = (notes == mempty) && emptyLayout layout && isNothing backgroundImage makesBlankSlide :: [Block] -> Bool makesBlankSlide = all blockIsBlank blockIsBlank :: Block -> Bool blockIsBlank = \case Plain ins -> all inlineIsBlank ins Para ins -> all inlineIsBlank ins LineBlock inss -> all (all inlineIsBlank) inss CodeBlock _ txt -> textIsBlank txt RawBlock _ txt -> textIsBlank txt BlockQuote bls -> all blockIsBlank bls OrderedList _ blss -> all (all blockIsBlank) blss BulletList blss -> all (all blockIsBlank) blss DefinitionList ds -> all (uncurry (&&) . bimap (all inlineIsBlank) (all (all blockIsBlank))) ds Header _ _ ils -> all inlineIsBlank ils HorizontalRule -> True Figure _ _ bls -> all blockIsBlank bls Table{} -> False Div _ bls -> all blockIsBlank bls textIsBlank :: T.Text -> Bool textIsBlank = T.all isSpace inlineIsBlank :: Inline -> Bool inlineIsBlank = \case (Str txt) -> textIsBlank txt (Emph ins) -> all inlineIsBlank ins (Underline ins) -> all inlineIsBlank ins (Strong ins) -> all inlineIsBlank ins (Strikeout ins) -> all inlineIsBlank ins (Superscript ins) -> all inlineIsBlank ins (Subscript ins) -> all inlineIsBlank ins (SmallCaps ins) -> all inlineIsBlank ins (Quoted _ ins) -> all inlineIsBlank ins (Cite _ _) -> False (Code _ txt) -> textIsBlank txt Space -> True SoftBreak -> True LineBreak -> True (Math _ txt) -> textIsBlank txt (RawInline _ txt) -> textIsBlank txt (Link _ ins (t1, t2)) -> all inlineIsBlank ins && textIsBlank t1 && textIsBlank t2 (Image _ ins (t1, t2)) -> all inlineIsBlank ins && textIsBlank t1 && textIsBlank t2 (Note bls) -> all blockIsBlank bls (Span _ ins) -> all inlineIsBlank ins blocksToPresentationSlides :: [Block] -> Pres [Slide] blocksToPresentationSlides blks = do opts <- asks envOpts mbMetadataSlide <- getMetaSlide -- if the metadata slide exists, we try to add any speakerNotes -- which immediately follow it. We also convert from maybe to a -- list, so that it will be able to add together more easily with -- the other lists of slides. (metadataslides, blks') <- case mbMetadataSlide of Just sld -> do (s, bs) <- addSpeakerNotesToMetaSlide sld blks return ([s], bs) Nothing -> return ([], blks) -- As far as I can tell, if we want to have a variable-length toc in -- the future, we'll have to make it twice. Once to get the length, -- and a second time to include the notes slide. We can't make the -- notes slide before the body slides because we need to know if -- there are notes, and we can't make either before the toc slide, -- because we need to know its length to get slide numbers right. -- -- For now, though, since the TOC slide is only length 1, if it -- exists, we'll just get the length, and then come back to make the -- slide later blksLst <- splitBlocks blks' bodySlideIds <- mapM (\n -> runUniqueSlideId $ "BodySlide" <> tshow n) (take (length blksLst) [1..] :: [Integer]) bodyslides <- mapM (\(bs, ident) -> local (\st -> st{envCurSlideId = ident}) (blocksToSlide bs)) (zip blksLst bodySlideIds) endNotesSlideBlocks <- makeEndNotesSlideBlocks -- now we come back and make the real toc... tocSlides <- if writerTableOfContents opts then do toc <- makeTOCSlide $ blks' ++ endNotesSlideBlocks return [toc] else return [] -- ... and the notes slide. We test to see if the blocks are empty, -- because we don't want to make an empty slide. endNotesSlides <- if null endNotesSlideBlocks then return [] else do endNotesSlide <- local (\env -> env { envCurSlideId = endNotesSlideId , envInNoteSlide = True }) (blocksToSlide endNotesSlideBlocks) return [endNotesSlide] let slides = metadataslides ++ tocSlides ++ bodyslides ++ endNotesSlides slides' = filter (not . emptySlide) slides mapM (applyToSlide replaceAnchor) slides' metaToDocProps :: Meta -> DocProps metaToDocProps meta = let keywords = case lookupMeta "keywords" meta of Just (MetaList xs) -> Just $ map Shared.stringify xs _ -> Nothing authors = case map Shared.stringify $ docAuthors meta of [] -> Nothing ss -> Just $ T.intercalate "; " ss description = case map Shared.stringify $ lookupMetaBlocks "description" meta of [] -> Nothing ss -> Just $ T.intercalate "_x000d_\n" ss customProperties' = case [(k, lookupMetaString k meta) | k <- M.keys (unMeta meta) , k `notElem` ["title", "author", "keywords", "description" , "subject","lang","category"]] of [] -> Nothing ss -> Just ss in DocProps{ dcTitle = Shared.stringify <$> lookupMeta "title" meta , dcSubject = Shared.stringify <$> lookupMeta "subject" meta , dcCreator = authors , dcKeywords = keywords , dcDescription = description , cpCategory = Shared.stringify <$> lookupMeta "category" meta , dcDate = let t = Shared.stringify (docDate meta) in if T.null t then Nothing else Just t , customProperties = customProperties' } documentToPresentation :: WriterOptions -> Pandoc -> (Presentation, [LogMessage]) documentToPresentation opts (Pandoc meta blks) = let env = def { envOpts = opts , envMetadata = meta , envSlideLevel = fromMaybe (getSlideLevel blks) (writerSlideLevel opts) } (presSlides, msgs) = runPres env def $ blocksToPresentationSlides blks docProps = metaToDocProps meta in (Presentation docProps presSlides, msgs) -- -------------------------------------------------------------- applyTokStyToRunProps :: TokenStyle -> RunProps -> RunProps applyTokStyToRunProps tokSty rProps = rProps{ rSolidFill = tokenColor tokSty <|> rSolidFill rProps , rPropBold = tokenBold tokSty || rPropBold rProps , rPropItalics = tokenItalic tokSty || rPropItalics rProps , rPropUnderline = tokenUnderline tokSty || rPropUnderline rProps } formatToken :: Style -> Token -> ParaElem formatToken sty (tokType, txt) = let rProps = def{rPropCode = True, rSolidFill = defaultColor sty} rProps' = case M.lookup tokType (tokenStyles sty) of Just tokSty -> applyTokStyToRunProps tokSty rProps Nothing -> rProps in Run rProps' txt formatSourceLine :: Style -> FormatOptions -> SourceLine -> [ParaElem] formatSourceLine sty _ srcLn = map (formatToken sty) srcLn formatSourceLines :: Style -> FormatOptions -> [SourceLine] -> [ParaElem] formatSourceLines sty opts srcLns = intercalate [Break] $ map (formatSourceLine sty opts) srcLns ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/RST.hs���������������������������������������������������������0000644�0000000�0000000�00000115555�07346545000�016551� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ViewPatterns #-} {- | Module : Text.Pandoc.Writers.RST Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable Conversion of 'Pandoc' documents to reStructuredText. reStructuredText: <http://docutils.sourceforge.net/rst.html> -} module Text.Pandoc.Writers.RST ( writeRST, flatten ) where import Control.Monad.State.Strict ( StateT, gets, modify, evalStateT ) import Control.Monad (zipWithM, liftM) import Data.Char (isSpace, generalCategory, isAscii, isAlphaNum, GeneralCategory( ClosePunctuation, OpenPunctuation, InitialQuote, FinalQuote, DashPunctuation, OtherPunctuation)) import Data.List (transpose, intersperse, foldl') import qualified Data.List.NonEmpty as NE import Data.Maybe (fromMaybe) import qualified Data.Text as T import Data.Text (Text) import qualified Text.Pandoc.Builder as B import Text.Pandoc.Class.PandocMonad (PandocMonad, report) import Text.Pandoc.Definition import Text.Pandoc.ImageSize import Text.Pandoc.Logging import Text.Pandoc.Options import Text.DocLayout import Text.Pandoc.Shared import Text.Pandoc.URI import Text.Pandoc.Templates (renderTemplate) import Text.Pandoc.Writers.Shared import Text.Pandoc.Walk import Safe (lastMay, headMay) type Refs = [([Inline], Target)] data WriterState = WriterState { stNotes :: [[Block]] , stLinks :: Refs , stImages :: [([Inline], (Attr, Text, Text, Maybe Text))] , stHasMath :: Bool , stHasRawTeX :: Bool , stOptions :: WriterOptions , stTopLevel :: Bool , stImageId :: Int } type RST = StateT WriterState -- | Convert Pandoc to RST. writeRST :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeRST opts document = do let st = WriterState { stNotes = [], stLinks = [], stImages = [], stHasMath = False, stHasRawTeX = False, stOptions = opts, stTopLevel = True, stImageId = 1 } evalStateT (pandocToRST document) st -- | Return RST representation of document. pandocToRST :: PandocMonad m => Pandoc -> RST m Text pandocToRST (Pandoc meta blocks) = do opts <- gets stOptions let colwidth = if writerWrapText opts == WrapAuto then Just $ writerColumns opts else Nothing let subtit = lookupMetaInlines "subtitle" meta title <- titleToRST (docTitle meta) subtit metadata <- metaToContext opts blockListToRST (fmap chomp . inlineListToRST) meta body <- blockListToRST' True $ case writerTemplate opts of Just _ -> normalizeHeadings 1 blocks Nothing -> blocks notes <- gets (reverse . stNotes) >>= notesToRST -- note that the notes may contain refs, so we do them first refs <- gets (reverse . stLinks) >>= refsToRST pics <- gets (reverse . stImages) >>= pictRefsToRST hasMath <- gets stHasMath rawTeX <- gets stHasRawTeX let main = vsep [body, notes, refs, pics] let context = defField "body" main $ defField "toc" (writerTableOfContents opts) $ defField "toc-depth" (tshow $ writerTOCDepth opts) $ defField "number-sections" (writerNumberSections opts) $ defField "math" hasMath $ defField "titleblock" (render Nothing title :: Text) $ defField "math" hasMath $ defField "rawtex" rawTeX metadata return $ render colwidth $ case writerTemplate opts of Nothing -> main Just tpl -> renderTemplate tpl context where normalizeHeadings lev (Header l a i:bs) = Header lev a i:normalizeHeadings (lev+1) cont ++ normalizeHeadings lev bs' where (cont,bs') = break (headerLtEq l) bs headerLtEq level (Header l' _ _) = l' <= level headerLtEq _ _ = False normalizeHeadings lev (b:bs) = b:normalizeHeadings lev bs normalizeHeadings _ [] = [] -- | Return RST representation of reference key table. refsToRST :: PandocMonad m => Refs -> RST m (Doc Text) refsToRST refs = vcat <$> mapM keyToRST refs -- | Return RST representation of a reference key. keyToRST :: PandocMonad m => ([Inline], (Text, Text)) -> RST m (Doc Text) keyToRST (label, (src, _)) = do label' <- inlineListToRST label let label'' = if (==':') `T.any` (render Nothing label' :: Text) then char '`' <> label' <> char '`' else label' return $ nowrap $ ".. _" <> label'' <> ": " <> literal src -- | Return RST representation of notes. notesToRST :: PandocMonad m => [[Block]] -> RST m (Doc Text) notesToRST notes = vsep <$> zipWithM noteToRST [1..] notes -- | Return RST representation of a note. noteToRST :: PandocMonad m => Int -> [Block] -> RST m (Doc Text) noteToRST num note = do contents <- blockListToRST note let marker = ".. [" <> text (show num) <> "]" return $ nowrap $ marker $$ nest 3 contents -- | Return RST representation of picture reference table. pictRefsToRST :: PandocMonad m => [([Inline], (Attr, Text, Text, Maybe Text))] -> RST m (Doc Text) pictRefsToRST refs = vcat <$> mapM pictToRST refs -- | Return RST representation of a picture substitution reference. pictToRST :: PandocMonad m => ([Inline], (Attr, Text, Text, Maybe Text)) -> RST m (Doc Text) pictToRST (label, (attr, src, _, mbtarget)) = do label' <- inlineListToRST label dims <- imageDimsToRST attr let (_, cls, _) = attr classes = case cls of [] -> empty ["align-top"] -> ":align: top" ["align-middle"] -> ":align: middle" ["align-bottom"] -> ":align: bottom" ["align-center"] -> empty ["align-right"] -> empty ["align-left"] -> empty _ -> ":class: " <> literal (T.unwords cls) return $ nowrap $ ".. |" <> label' <> "| image:: " <> literal src $$ hang 3 empty (classes $$ dims) $$ case mbtarget of Nothing -> empty Just t -> " :target: " <> literal t -- | Escape special characters for RST. escapeText :: WriterOptions -> Text -> Text escapeText opts t = if T.any isSpecial t then T.pack . escapeString' True . T.unpack $ t else t -- optimization where isSmart = isEnabled Ext_smart opts isSpecial c = c == '\\' || c == '_' || c == '`' || c == '*' || c == '|' || (isSmart && (c == '-' || c == '.' || c == '"' || c == '\'')) canFollowInlineMarkup c = c == '-' || c == '.' || c == ',' || c == ':' || c == ';' || c == '!' || c == '?' || c == '\'' || c == '"' || c == ')' || c == ']' || c == '}' || c == '>' || isSpace c || (not (isAscii c) && generalCategory c `elem` [OpenPunctuation, InitialQuote, FinalQuote, DashPunctuation, OtherPunctuation]) canPrecedeInlineMarkup c = c == '-' || c == ':' || c == '/' || c == '\'' || c == '"' || c == '<' || c == '(' || c == '[' || c == '{' || isSpace c || (not (isAscii c) && generalCategory c `elem` [ClosePunctuation, InitialQuote, FinalQuote, DashPunctuation, OtherPunctuation]) escapeString' canStart cs = case cs of [] -> [] d:ds | d == '\\' -> '\\' : d : escapeString' False ds '\'':ds | isSmart -> '\\' : '\'' : escapeString' True ds '"':ds | isSmart -> '\\' : '"' : escapeString' True ds '-':'-':ds | isSmart -> '\\' : '-' : escapeString' False ('-':ds) '.':'.':'.':ds | isSmart -> '\\' : '.' : escapeString' False ('.':'.':ds) [e] | e == '*' || e == '_' || e == '|' || e == '`' -> ['\\',e] d:ds | canPrecedeInlineMarkup d -> d : escapeString' True ds e:d:ds | e == '*' || e == '_' || e == '|' || e == '`' , (not canStart && canFollowInlineMarkup d) || (canStart && not (isSpace d)) -> '\\' : e : escapeString' False (d:ds) '_':d:ds | not (isAlphaNum d) -> '\\' : '_' : escapeString' False (d:ds) d:ds -> d : escapeString' False ds titleToRST :: PandocMonad m => [Inline] -> [Inline] -> RST m (Doc Text) titleToRST [] _ = return empty titleToRST tit subtit = do title <- inlineListToRST tit subtitle <- inlineListToRST subtit return $ bordered title '=' $$ bordered subtitle '-' bordered :: Doc Text -> Char -> Doc Text bordered contents c = if len > 0 then border $$ contents $$ border else empty where len = offset contents border = literal (T.replicate len $ T.singleton c) -- | Convert Pandoc block element to RST. blockToRST :: PandocMonad m => Block -- ^ Block element -> RST m (Doc Text) blockToRST (Div ("",["title"],[]) _) = return empty -- this is generated by the rst reader and can safely be -- omitted when we're generating rst blockToRST (Div (ident,classes,_kvs) bs) = do contents <- blockListToRST bs let admonitions = ["attention","caution","danger","error","hint", "important","note","tip","warning","admonition"] let admonition = case classes of (cl:_) | cl `elem` admonitions -> ".. " <> literal cl <> "::" cls -> ".. container::" <> space <> literal (T.unwords (filter (/= "container") cls)) return $ blankline $$ admonition $$ (if T.null ident then blankline else " :name: " <> literal ident $$ blankline) $$ nest 3 contents $$ blankline blockToRST (Plain inlines) = inlineListToRST inlines blockToRST (Para [Image attr txt (src, _)]) = do description <- inlineListToRST txt dims <- imageDimsToRST attr let fig = "image:: " <> literal src alt | null txt = empty | otherwise = ":alt: " <> description capt = empty (_,cls,_) = attr classes = case cls of [] -> empty ["align-right"] -> ":align: right" ["align-left"] -> ":align: left" ["align-center"] -> ":align: center" _ -> ":class: " <> literal (T.unwords cls) return $ hang 3 ".. " (fig $$ alt $$ classes $$ dims $+$ capt) $$ blankline blockToRST (Para inlines) | LineBreak `elem` inlines = linesToLineBlock $ splitBy (==LineBreak) inlines | otherwise = do contents <- inlineListToRST inlines return $ contents <> blankline blockToRST (LineBlock lns) = linesToLineBlock lns blockToRST (RawBlock f@(Format f') str) | f == "rst" = return $ literal str | f == "tex" = blockToRST (RawBlock (Format "latex") str) | otherwise = return $ blankline <> ".. raw:: " <> literal (T.toLower f') $+$ nest 3 (literal str) $$ blankline blockToRST HorizontalRule = return $ blankline $$ "--------------" $$ blankline blockToRST (Header level (name,classes,_) inlines) = do contents <- inlineListToRST inlines -- we calculate the id that would be used by auto_identifiers -- so we know whether to print an explicit identifier opts <- gets stOptions let autoId = uniqueIdent (writerExtensions opts) inlines mempty isTopLevel <- gets stTopLevel if isTopLevel then do let headerChar = if level > 5 then ' ' else "=-~^'" !! (level - 1) let border = literal $ T.replicate (offset contents) $ T.singleton headerChar let anchor | T.null name || name == autoId = empty | otherwise = ".. _" <> (if T.any (==':') name || T.take 1 name == "_" then "`" <> literal name <> "`" else literal name) <> ":" $$ blankline return $ nowrap $ anchor $$ contents $$ border $$ blankline else do let rub = "rubric:: " <> contents let name' | T.null name = empty | otherwise = ":name: " <> literal name let cls | null classes = empty | otherwise = ":class: " <> literal (T.unwords classes) return $ nowrap $ hang 3 ".. " (rub $$ name' $$ cls) $$ blankline blockToRST (CodeBlock (_,classes,kvs) str) = do opts <- gets stOptions let startnum = maybe "" (\x -> " " <> literal x) $ lookup "startFrom" kvs let numberlines = if "numberLines" `elem` classes then " :number-lines:" <> startnum else empty if "haskell" `elem` classes && "literate" `elem` classes && isEnabled Ext_literate_haskell opts then return $ prefixed "> " (literal str) $$ blankline else return $ (case [c | c <- classes, c `notElem` ["sourceCode","literate","numberLines", "number-lines","example"]] of [] -> "::" (lang:_) -> (".. code:: " <> literal lang) $$ numberlines) $+$ nest 3 (literal str) $$ blankline blockToRST (BlockQuote blocks) = do contents <- blockListToRST blocks return $ nest 3 contents <> blankline blockToRST (Table _attrs blkCapt specs thead tbody tfoot) = do let (caption, aligns, widths, headers, rows) = toLegacyTable blkCapt specs thead tbody tfoot caption' <- inlineListToRST caption let blocksToDoc opts bs = do oldOpts <- gets stOptions modify $ \st -> st{ stOptions = opts } result <- blockListToRST bs modify $ \st -> st{ stOptions = oldOpts } return result opts <- gets stOptions let renderGrid = gridTable opts blocksToDoc (all null headers) (map (const AlignDefault) aligns) widths headers rows isSimple = all (== 0) widths && length widths > 1 renderSimple = do tbl' <- simpleTable opts blocksToDoc headers rows if offset tbl' > writerColumns opts then renderGrid else return tbl' isList = writerListTables opts renderList = tableToRSTList caption (map (const AlignDefault) aligns) widths headers rows rendered | isList = renderList | isSimple = renderSimple | otherwise = renderGrid tbl <- rendered return $ blankline $$ (if null caption then tbl else (".. table:: " <> caption') $$ blankline $$ nest 3 tbl) $$ blankline blockToRST (BulletList items) = do contents <- mapM bulletListItemToRST items -- ensure that sublists have preceding blank line return $ blankline $$ (if isTightList items then vcat else vsep) contents $$ blankline blockToRST (OrderedList (start, style', delim) items) = do let markers = if start == 1 && style' == DefaultStyle && delim == DefaultDelim then replicate (length items) "#." else take (length items) $ orderedListMarkers (start, style', delim) let maxMarkerLength = maybe 0 maximum $ NE.nonEmpty $ map T.length markers let markers' = map (\m -> let s = maxMarkerLength - T.length m in m <> T.replicate s " ") markers contents <- zipWithM orderedListItemToRST markers' items -- ensure that sublists have preceding blank line return $ blankline $$ (if isTightList items then vcat else vsep) contents $$ blankline blockToRST (DefinitionList items) = do contents <- mapM definitionListItemToRST items -- ensure that sublists have preceding blank line return $ blankline $$ vcat contents $$ blankline blockToRST (Figure (ident, classes, _) _ body) = do let figure attr txt (src, tit) = do description <- inlineListToRST txt dims <- imageDimsToRST attr let fig = "figure:: " <> literal src alt = ":alt: " <> if T.null tit then description else literal tit capt = description (_,cls,_) = attr align = case cls of [] -> empty ["align-right"] -> ":align: right" ["align-left"] -> ":align: left" ["align-center"] -> ":align: center" _ -> ":figclass: " <> literal (T.unwords cls) return $ hang 3 ".. " (fig $$ alt $$ align $$ dims $+$ capt) $$ blankline case body of [Para [Image attr txt tgt]] -> figure attr txt tgt [Plain [Image attr txt tgt]] -> figure attr txt tgt _ -> do content <- blockListToRST body return $ blankline $$ ( ".. container:: float" <> space <> literal (T.unwords (filter (/= "container") classes))) $$ (if T.null ident then blankline else " :name: " <> literal ident $$ blankline) $$ nest 3 content $$ blankline -- | Convert bullet list item (list of blocks) to RST. bulletListItemToRST :: PandocMonad m => [Block] -> RST m (Doc Text) bulletListItemToRST items = do contents <- blockListToRST items return $ hang 3 "- " contents $$ if null items || (endsWithPlain items && not (endsWithList items)) then cr else blankline -- | Convert ordered list item (a list of blocks) to RST. orderedListItemToRST :: PandocMonad m => Text -- ^ marker for list item -> [Block] -- ^ list item (list of blocks) -> RST m (Doc Text) orderedListItemToRST marker items = do contents <- blockListToRST items let marker' = marker <> " " return $ hang (T.length marker') (literal marker') contents $$ if null items || (endsWithPlain items && not (endsWithList items)) then cr else blankline endsWithList :: [Block] -> Bool endsWithList bs = case lastMay bs of Just (BulletList{}) -> True Just (OrderedList{}) -> True _ -> False -- | Convert definition list item (label, list of blocks) to RST. definitionListItemToRST :: PandocMonad m => ([Inline], [[Block]]) -> RST m (Doc Text) definitionListItemToRST (label, defs) = do label' <- inlineListToRST label contents <- liftM vcat $ mapM blockListToRST defs return $ nowrap label' $$ nest 3 (nestle contents) $$ if isTightList defs then cr else blankline -- | Format a list of lines as line block. linesToLineBlock :: PandocMonad m => [[Inline]] -> RST m (Doc Text) linesToLineBlock inlineLines = do lns <- mapM inlineListToRST inlineLines return $ vcat (map (hang 2 (literal "| ")) lns) <> blankline -- | Convert list of Pandoc block elements to RST. blockListToRST' :: PandocMonad m => Bool -> [Block] -- ^ List of block elements -> RST m (Doc Text) blockListToRST' topLevel blocks = do -- insert comment between list and quoted blocks, see #4248 and #3675 let fixBlocks (b1:b2@(BlockQuote _):bs) | toClose b1 = b1 : commentSep : b2 : fixBlocks bs where toClose Plain{} = False toClose Header{} = False toClose LineBlock{} = False toClose HorizontalRule = False toClose SimpleFigure{} = True toClose Para{} = False toClose _ = True commentSep = RawBlock "rst" "..\n\n" fixBlocks (b:bs) = b : fixBlocks bs fixBlocks [] = [] tl <- gets stTopLevel modify (\s->s{stTopLevel=topLevel}) res <- vcat `fmap` mapM blockToRST (fixBlocks blocks) modify (\s->s{stTopLevel=tl}) return res blockListToRST :: PandocMonad m => [Block] -- ^ List of block elements -> RST m (Doc Text) blockListToRST = blockListToRST' False {- http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#directives According to the terminology used in the spec, a marker includes a final whitespace and a block includes the directive arguments. Here the variable names have slightly different meanings because we don't want to finish the line with a space if there are no arguments, it would produce rST that differs from what users expect in a way that's not easy to detect -} toRSTDirective :: Doc Text -> Doc Text -> [(Doc Text, Doc Text)] -> Doc Text -> Doc Text toRSTDirective typ args options content = marker <> spaceArgs <> cr <> block where marker = ".. " <> typ <> "::" block = nest 3 (fieldList $$ blankline $$ content $$ blankline) spaceArgs = if isEmpty args then "" else " " <> args -- a field list could end up being an empty doc thus being -- omitted by $$ fieldList = foldl ($$) "" $ map joinField options -- a field body can contain multiple lines joinField (name, body) = ":" <> name <> ": " <> body tableToRSTList :: PandocMonad m => [Inline] -> [Alignment] -> [Double] -> [[Block]] -> [[[Block]]] -> RST m (Doc Text) tableToRSTList caption _ propWidths headers rows = do captionRST <- inlineListToRST caption opts <- gets stOptions content <- listTableContent toWrite pure $ toRSTDirective "list-table" captionRST (directiveOptions opts) content where directiveOptions opts = widths (writerColumns opts) propWidths <> headerRows toWrite = if noHeaders then rows else headers:rows headerRows = [("header-rows", text $ show (1 :: Int)) | not noHeaders] widths tot pro = [("widths", showWidths tot pro) | not (null propWidths || all (==0.0) propWidths)] noHeaders = all null headers -- >>> showWidths 70 [0.5, 0.5] -- "35 35" showWidths :: Int -> [Double] -> Doc Text showWidths tot = text . unwords . map (show . toColumns tot) -- toColumns converts a width expressed as a proportion of the -- total into a width expressed as a number of columns toColumns :: Int -> Double -> Int toColumns t p = round (p * fromIntegral t) listTableContent :: PandocMonad m => [[[Block]]] -> RST m (Doc Text) listTableContent = joinTable joinDocsM joinDocsM . mapTable blockListToRST -- joinDocsM adapts joinDocs in order to work in the `RST m` monad joinDocsM :: PandocMonad m => [RST m (Doc Text)] -> RST m (Doc Text) joinDocsM = fmap joinDocs . sequence -- joinDocs will be used to join cells and to join rows joinDocs :: [Doc Text] -> Doc Text joinDocs items = blankline $$ (chomp . vcat . map formatItem) items $$ blankline formatItem :: Doc Text -> Doc Text formatItem i = hang 3 "- " (i <> cr) -- apply a function to all table cells changing their type mapTable :: (a -> b) -> [[a]] -> [[b]] mapTable = map . map -- function hor to join cells and function ver to join rows joinTable :: ([a] -> a) -> ([a] -> a) -> [[a]] -> a joinTable hor ver = ver . map hor transformInlines :: [Inline] -> [Inline] transformInlines = insertBS . filter hasContents . removeSpaceAfterDisplayMath . concatMap (transformNested . flatten) where -- empty inlines are not valid RST syntax hasContents :: Inline -> Bool hasContents (Str "") = False hasContents (Emph []) = False hasContents (Underline []) = False hasContents (Strong []) = False hasContents (Strikeout []) = False hasContents (Superscript []) = False hasContents (Subscript []) = False hasContents (SmallCaps []) = False hasContents (Quoted _ []) = False hasContents (Cite _ []) = False hasContents (Span _ []) = False hasContents (Link _ [] ("", "")) = False hasContents (Image _ [] ("", "")) = False hasContents _ = True -- remove spaces after displaymath, as they screw up indentation: removeSpaceAfterDisplayMath (Math DisplayMath x : zs) = Math DisplayMath x : dropWhile (==Space) zs removeSpaceAfterDisplayMath (x:xs) = x : removeSpaceAfterDisplayMath xs removeSpaceAfterDisplayMath [] = [] insertBS :: [Inline] -> [Inline] -- insert '\ ' where needed insertBS (x:y:z:zs) | isComplex y && surroundComplex x z = x : y : insertBS (z : zs) insertBS (x:y:zs) | isComplex x && not (okAfterComplex y) = x : RawInline "rst" "\\ " : insertBS (y : zs) | isComplex y && not (okBeforeComplex x) = x : RawInline "rst" "\\ " : insertBS (y : zs) | otherwise = x : insertBS (y : zs) insertBS (x:ys) = x : insertBS ys insertBS [] = [] transformNested :: [Inline] -> [Inline] transformNested = concatMap exportLeadingTrailingSpace exportLeadingTrailingSpace :: Inline -> [Inline] exportLeadingTrailingSpace il | isComplex il = let contents = dropInlineParent il headSpace = headMay contents == Just Space lastSpace = lastMay contents == Just Space in (if headSpace then (Space:) else id) . (if lastSpace then (++ [Space]) else id) $ [setInlineChildren il (stripLeadingTrailingSpace contents)] | otherwise = [il] surroundComplex :: Inline -> Inline -> Bool surroundComplex (Str s) (Str s') | Just (_, c) <- T.unsnoc s , Just (c', _) <- T.uncons s' = case (c, c') of ('\'','\'') -> True ('"','"') -> True ('<','>') -> True ('[',']') -> True ('{','}') -> True _ -> False surroundComplex _ _ = False okAfterComplex :: Inline -> Bool okAfterComplex Space = True okAfterComplex SoftBreak = True okAfterComplex LineBreak = True okAfterComplex (Str (T.uncons -> Just (c,_))) = isSpace c || T.any (== c) "-.,:;!?\\/'\")]}>–—" okAfterComplex _ = False okBeforeComplex :: Inline -> Bool okBeforeComplex Space = True okBeforeComplex SoftBreak = True okBeforeComplex LineBreak = True okBeforeComplex (Str (T.unsnoc -> Just (_,c))) = isSpace c || T.any (== c) "-:/'\"<([{–—" okBeforeComplex _ = False isComplex :: Inline -> Bool isComplex (Emph _) = True isComplex (Underline _) = True isComplex (Strong _) = True isComplex (SmallCaps _) = True isComplex (Strikeout _) = True isComplex (Superscript _) = True isComplex (Subscript _) = True isComplex Link{} = True isComplex Image{} = True isComplex (Code _ _) = True isComplex (Math _ _) = True isComplex (Cite _ (x:_)) = isComplex x isComplex (Span _ (x:_)) = isComplex x isComplex _ = False -- | Flattens nested inlines. Extracts nested inlines and goes through -- them either collapsing them in the outer inline container or -- pulling them out of it flatten :: Inline -> [Inline] flatten outer | null contents = [outer] | otherwise = combineAll contents where contents = dropInlineParent outer combineAll = foldl' combine [] combine :: [Inline] -> Inline -> [Inline] combine f i = case (outer, i) of -- quotes are not rendered using RST inlines, so we can keep -- them and they will be readable and parsable (Quoted _ _, _) -> keep f i (_, Quoted _ _) -> keep f i -- spans are not rendered using RST inlines, so we can keep them (Span (_,_,[]) _, _) -> keep f i (_, Span (_,_,[]) _) -> keep f i -- inlineToRST handles this case properly so it's safe to keep ( Link{}, Image{}) -> keep f i -- parent inlines would prevent links from being correctly -- parsed, in this case we prioritise the content over the -- style (_, Link{}) -> emerge f i -- always give priority to strong text over emphasis (Emph _, Strong _) -> emerge f i -- drop all other nested styles (_, _) -> collapse f i emerge f i = f <> [i] keep f i = appendToLast f [i] collapse f i = appendToLast f $ dropInlineParent i appendToLast :: [Inline] -> [Inline] -> [Inline] appendToLast flattened toAppend = case NE.nonEmpty flattened of Nothing -> [setInlineChildren outer toAppend] Just xs -> if isOuter lastFlat then NE.init xs <> [appendTo lastFlat toAppend] else flattened <> [setInlineChildren outer toAppend] where lastFlat = NE.last xs appendTo o i = mapNested (<> i) o isOuter i = emptyParent i == emptyParent outer emptyParent i = setInlineChildren i [] mapNested :: ([Inline] -> [Inline]) -> Inline -> Inline mapNested f i = setInlineChildren i (f (dropInlineParent i)) dropInlineParent :: Inline -> [Inline] dropInlineParent (Link _ i _) = i dropInlineParent (Emph i) = i dropInlineParent (Underline i) = i dropInlineParent (Strong i) = i dropInlineParent (Strikeout i) = i dropInlineParent (Superscript i) = i dropInlineParent (Subscript i) = i dropInlineParent (SmallCaps i) = i dropInlineParent (Cite _ i) = i dropInlineParent (Image _ i _) = i dropInlineParent (Span _ i) = i dropInlineParent (Quoted _ i) = i dropInlineParent i = [i] -- not a parent, like Str or Space setInlineChildren :: Inline -> [Inline] -> Inline setInlineChildren (Link a _ t) i = Link a i t setInlineChildren (Emph _) i = Emph i setInlineChildren (Underline _) i = Underline i setInlineChildren (Strong _) i = Strong i setInlineChildren (Strikeout _) i = Strikeout i setInlineChildren (Superscript _) i = Superscript i setInlineChildren (Subscript _) i = Subscript i setInlineChildren (SmallCaps _) i = SmallCaps i setInlineChildren (Quoted q _) i = Quoted q i setInlineChildren (Cite c _) i = Cite c i setInlineChildren (Image a _ t) i = Image a i t setInlineChildren (Span a _) i = Span a i setInlineChildren leaf _ = leaf inlineListToRST :: PandocMonad m => [Inline] -> RST m (Doc Text) inlineListToRST = writeInlines . walk transformInlines -- | Convert list of Pandoc inline elements to RST. writeInlines :: PandocMonad m => [Inline] -> RST m (Doc Text) writeInlines lst = hcat <$> mapM inlineToRST lst -- | Convert Pandoc inline element to RST. inlineToRST :: PandocMonad m => Inline -> RST m (Doc Text) inlineToRST (Span ("",["mark"],[]) ils) = do contents <- writeInlines ils return $ ":mark:`" <> contents <> "`" inlineToRST (Span (_,_,kvs) ils) = do contents <- writeInlines ils return $ case lookup "role" kvs of Just role -> ":" <> literal role <> ":`" <> contents <> "`" Nothing -> contents inlineToRST (Emph lst) = do contents <- writeInlines lst return $ "*" <> contents <> "*" -- Underline is not supported, fall back to Emph inlineToRST (Underline lst) = inlineToRST (Emph lst) inlineToRST (Strong lst) = do contents <- writeInlines lst return $ "**" <> contents <> "**" inlineToRST (Strikeout lst) = do contents <- writeInlines lst return $ "[STRIKEOUT:" <> contents <> "]" inlineToRST (Superscript lst) = do contents <- writeInlines lst return $ ":sup:`" <> contents <> "`" inlineToRST (Subscript lst) = do contents <- writeInlines lst return $ ":sub:`" <> contents <> "`" inlineToRST (SmallCaps lst) = writeInlines lst inlineToRST (Quoted SingleQuote lst) = do contents <- writeInlines lst opts <- gets stOptions if isEnabled Ext_smart opts then return $ "'" <> contents <> "'" else return $ "‘" <> contents <> "’" inlineToRST (Quoted DoubleQuote lst) = do contents <- writeInlines lst opts <- gets stOptions if isEnabled Ext_smart opts then return $ "\"" <> contents <> "\"" else return $ "“" <> contents <> "”" inlineToRST (Cite _ lst) = writeInlines lst inlineToRST (Code (_,["interpreted-text"],[("role",role)]) str) = return $ ":" <> literal role <> ":`" <> literal str <> "`" inlineToRST (Code _ str) = do opts <- gets stOptions -- we trim the string because the delimiters must adjoin a -- non-space character; see #3496 -- we use :literal: when the code contains backticks, since -- :literal: allows backslash-escapes; see #3974 return $ if T.any (== '`') str then ":literal:`" <> literal (escapeText opts (trim str)) <> "`" else "``" <> literal (trim str) <> "``" inlineToRST (Str str) = do opts <- gets stOptions return $ literal $ (if isEnabled Ext_smart opts then unsmartify opts else id) $ escapeText opts str inlineToRST (Math t str) = do modify $ \st -> st{ stHasMath = True } return $ if t == InlineMath then ":math:`" <> literal str <> "`" else if T.any (== '\n') str then blankline $$ ".. math::" $$ blankline $$ nest 3 (literal str) $$ blankline else blankline $$ (".. math:: " <> literal str) $$ blankline inlineToRST il@(RawInline f x) | f == "rst" = return $ literal x | f == "latex" || f == "tex" = do modify $ \st -> st{ stHasRawTeX = True } return $ ":raw-latex:`" <> literal x <> "`" | otherwise = empty <$ report (InlineNotRendered il) inlineToRST LineBreak = return cr -- there's no line break in RST (see Para) inlineToRST Space = return space inlineToRST SoftBreak = do wrapText <- gets $ writerWrapText . stOptions case wrapText of WrapPreserve -> return cr WrapAuto -> return space WrapNone -> return space -- autolink inlineToRST (Link _ [Str str] (src, _)) | isURI src && if "mailto:" `T.isPrefixOf` src then src == escapeURI ("mailto:" <> str) else src == escapeURI str = do let srcSuffix = fromMaybe src (T.stripPrefix "mailto:" src) return $ literal srcSuffix inlineToRST (Link _ [Image attr alt (imgsrc,imgtit)] (src, _tit)) = do label <- registerImage attr alt (imgsrc,imgtit) (Just src) return $ "|" <> label <> "|" inlineToRST (Link _ txt (src, tit)) = do useReferenceLinks <- gets $ writerReferenceLinks . stOptions linktext <- writeInlines $ B.toList . B.trimInlines . B.fromList $ txt if useReferenceLinks then do refs <- gets stLinks case lookup txt refs of Just (src',tit') -> if src == src' && tit == tit' then return $ "`" <> linktext <> "`_" else return $ "`" <> linktext <> " <" <> literal src <> ">`__" Nothing -> do modify $ \st -> st { stLinks = (txt,(src,tit)):refs } return $ "`" <> linktext <> "`_" else return $ "`" <> linktext <> " <" <> literal src <> ">`__" inlineToRST (Image attr alternate (source, tit)) = do label <- registerImage attr alternate (source,tit) Nothing return $ "|" <> label <> "|" inlineToRST (Note contents) = do -- add to notes in state notes <- gets stNotes modify $ \st -> st { stNotes = contents:notes } let ref = show $ length notes + 1 return $ " [" <> text ref <> "]_" registerImage :: PandocMonad m => Attr -> [Inline] -> Target -> Maybe Text -> RST m (Doc Text) registerImage attr alt (src,tit) mbtarget = do pics <- gets stImages imgId <- gets stImageId let getImageName = do modify $ \st -> st{ stImageId = imgId + 1 } return [Str ("image" <> tshow imgId)] txt <- case lookup alt pics of Just (a,s,t,mbt) -> if (a,s,t,mbt) == (attr,src,tit,mbtarget) then return alt else do alt' <- getImageName modify $ \st -> st { stImages = (alt', (attr,src,tit, mbtarget)):stImages st } return alt' Nothing -> do alt' <- if null alt || alt == [Str ""] then getImageName else return alt modify $ \st -> st { stImages = (alt', (attr,src,tit, mbtarget)):stImages st } return alt' inlineListToRST txt imageDimsToRST :: PandocMonad m => Attr -> RST m (Doc Text) imageDimsToRST attr = do let (ident, _, _) = attr name = if T.null ident then empty else ":name: " <> literal ident showDim dir = let cols d = ":" <> text (show dir) <> ": " <> text (show d) in case dimension dir attr of Just (Percent a) -> case dir of Height -> empty Width -> cols (Percent a) Just dim -> cols dim Nothing -> empty return $ cr <> name $$ showDim Width $$ showDim Height simpleTable :: PandocMonad m => WriterOptions -> (WriterOptions -> [Block] -> m (Doc Text)) -> [[Block]] -> [[[Block]]] -> m (Doc Text) simpleTable opts blocksToDoc headers rows = do -- can't have empty cells in first column: let fixEmpties (d:ds) = if isEmpty d then literal "\\ " : ds else d : ds fixEmpties [] = [] headerDocs <- if all null headers then return [] else fixEmpties <$> mapM (blocksToDoc opts) headers rowDocs <- mapM (fmap fixEmpties . mapM (blocksToDoc opts)) rows let numChars = maybe 0 maximum . NE.nonEmpty . map offset let colWidths = map numChars $ transpose (headerDocs : rowDocs) let toRow = mconcat . intersperse (lblock 1 " ") . zipWith lblock colWidths let hline = nowrap $ hsep (map (\n -> literal (T.replicate n "=")) colWidths) let hdr = if all null headers then mempty else hline $$ toRow headerDocs let bdy = vcat $ map toRow rowDocs return $ hdr $$ hline $$ bdy $$ hline ���������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/RTF.hs���������������������������������������������������������0000644�0000000�0000000�00000041336�07346545000�016527� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Writers.RTF Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable Conversion of 'Pandoc' documents to RTF (rich text format). -} module Text.Pandoc.Writers.RTF ( writeRTF ) where import Control.Monad.Except (catchError, throwError) import Control.Monad import qualified Data.ByteString as B import Data.Char (chr, isDigit, ord, isAlphaNum) import qualified Data.Map as M import Data.Text (Text) import qualified Data.Text as T import Text.Pandoc.Class.PandocMonad (PandocMonad, report) import qualified Text.Pandoc.Class.PandocMonad as P import Text.Pandoc.Definition import Text.Pandoc.Error import Text.Pandoc.ImageSize import Text.Pandoc.Logging import Text.Pandoc.Options import Text.Pandoc.Shared import Text.Pandoc.Templates (renderTemplate) import Text.DocLayout (render, literal) import Text.Pandoc.Walk import Text.Pandoc.Writers.Math import Text.Pandoc.Writers.Shared import Text.Printf (printf) -- | Convert Image inlines into a raw RTF embedded image, read from a file, -- or a MediaBag, or the internet. -- If file not found or filetype not jpeg or png, leave the inline unchanged. rtfEmbedImage :: PandocMonad m => WriterOptions -> Inline -> m Inline rtfEmbedImage opts x@(Image attr _ (src,_)) = catchError (do result <- P.fetchItem src case result of (imgdata, Just mime) | mime' <- T.takeWhile (/=';') mime , mime' == "image/jpeg" || mime' == "image/png" -> do let bytes = map (T.pack . printf "%02x") $ B.unpack imgdata filetype <- case mime' of "image/jpeg" -> return "\\jpegblip" "image/png" -> return "\\pngblip" _ -> throwError $ PandocShouldNeverHappenError $ "Unknown file type " <> mime sizeSpec <- case imageSize opts imgdata of Left msg -> do report $ CouldNotDetermineImageSize src msg return "" Right sz -> return $ "\\picw" <> tshow xpx <> "\\pich" <> tshow ypx <> "\\picwgoal" <> tshow (floor (xpt * 20) :: Integer) <> "\\pichgoal" <> tshow (floor (ypt * 20) :: Integer) -- twip = 1/1440in = 1/20pt where (xpx, ypx) = sizeInPixels sz (xpt, ypt) = desiredSizeInPoints opts attr sz let raw = "{\\pict" <> filetype <> sizeSpec <> " " <> T.concat bytes <> "}" if B.null imgdata then do report $ CouldNotFetchResource src "image contained no data" return x else return $ RawInline (Format "rtf") raw | otherwise -> do report $ CouldNotFetchResource src "image is not a jpeg or png" return x (_, Nothing) -> do report $ CouldNotDetermineMimeType src return x) (\e -> do report $ CouldNotFetchResource src $ tshow e return x) rtfEmbedImage _ x = return x -- | Convert Pandoc to a string in rich text format. writeRTF :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeRTF options doc = do -- handle images Pandoc meta@(Meta metamap) blocks <- walkM (rtfEmbedImage options) doc let spacer = not $ all null $ docTitle meta : docDate meta : docAuthors meta let toPlain (MetaBlocks [Para ils]) = MetaInlines ils toPlain x = x -- adjust title, author, date so we don't get para inside para let meta' = Meta $ M.adjust toPlain "title" . M.adjust toPlain "author" . M.adjust toPlain "date" $ metamap metadata <- metaToContext options (fmap (literal . T.concat) . mapM (blockToRTF 0 AlignDefault)) (fmap literal . inlinesToRTF) meta' body <- blocksToRTF 0 AlignDefault blocks toc <- blocksToRTF 0 AlignDefault [toTableOfContents options blocks] let context = defField "body" body $ defField "spacer" spacer $ (if writerTableOfContents options then defField "table-of-contents" toc -- for backwards compatibility, -- we populate toc with the contents -- of the toc rather than a boolean: . defField "toc" toc else id) metadata return $ case writerTemplate options of Just tpl -> render Nothing $ renderTemplate tpl context Nothing -> case T.unsnoc body of Just (_,'\n') -> body _ -> body <> T.singleton '\n' -- | Convert unicode characters (> 127) into rich text format representation. handleUnicode :: Text -> Text handleUnicode = T.concatMap $ \c -> if ord c > 127 then if surrogate c then let x = ord c - 0x10000 (q, r) = x `divMod` 0x400 upper = q + 0xd800 lower = r + 0xDC00 in enc (chr upper) <> enc (chr lower) else enc c else T.singleton c where surrogate x = not ( (0x0000 <= ord x && ord x <= 0xd7ff) || (0xe000 <= ord x && ord x <= 0xffff) ) enc x = "\\u" <> tshow (ord x) <> " ?" -- | Escape special characters. escapeSpecial :: Text -> Text escapeSpecial t | T.all isAlphaNum t = t | otherwise = T.concatMap escChar t where escChar '\t' = "\\tab " escChar '\8216' = "\\u8216'" escChar '\8217' = "\\u8217'" escChar '\8220' = "\\u8220\"" escChar '\8221' = "\\u8221\"" escChar '\8211' = "\\u8211-" escChar '\8212' = "\\u8212-" escChar '{' = "\\{" escChar '}' = "\\}" escChar '\\' = "\\\\" escChar c = T.singleton c -- | Escape strings as needed for rich text format. stringToRTF :: Text -> Text stringToRTF = handleUnicode . escapeSpecial -- | Escape things as needed for code block in RTF. codeStringToRTF :: Text -> Text codeStringToRTF str = T.intercalate "\\line\n" $ T.lines (stringToRTF str) -- | Make a paragraph with first-line indent, block indent, and space after. rtfParSpaced :: Int -- ^ space after (in twips) -> Int -- ^ block indent (in twips) -> Int -- ^ first line indent (relative to block) (in twips) -> Alignment -- ^ alignment -> Text -- ^ string with content -> Text rtfParSpaced spaceAfter indent firstLineIndent alignment content = let alignString = case alignment of AlignLeft -> "\\ql " AlignRight -> "\\qr " AlignCenter -> "\\qc " AlignDefault -> "\\ql " in "{\\pard " <> alignString <> "\\f0 \\sa" <> tshow spaceAfter <> " \\li" <> T.pack (show indent) <> " \\fi" <> tshow firstLineIndent <> " " <> content <> "\\par}\n" -- | Default paragraph. rtfPar :: Int -- ^ block indent (in twips) -> Int -- ^ first line indent (relative to block) (in twips) -> Alignment -- ^ alignment -> Text -- ^ string with content -> Text rtfPar = rtfParSpaced 180 -- | Compact paragraph (e.g. for compact list items). rtfCompact :: Int -- ^ block indent (in twips) -> Int -- ^ first line indent (relative to block) (in twips) -> Alignment -- ^ alignment -> Text -- ^ string with content -> Text rtfCompact = rtfParSpaced 0 -- number of twips to indent indentIncrement :: Int indentIncrement = 720 listIncrement :: Int listIncrement = 360 -- | Returns appropriate bullet list marker for indent level. bulletMarker :: Int -> Text bulletMarker indent = case indent `mod` 720 of 0 -> "\\bullet " _ -> "\\endash " -- | Returns appropriate (list of) ordered list markers for indent level. orderedMarkers :: Int -> ListAttributes -> [Text] orderedMarkers indent (start, style, delim) = if style == DefaultStyle && delim == DefaultDelim then case indent `mod` 720 of 0 -> orderedListMarkers (start, Decimal, Period) _ -> orderedListMarkers (start, LowerAlpha, Period) else orderedListMarkers (start, style, delim) blocksToRTF :: PandocMonad m => Int -> Alignment -> [Block] -> m Text blocksToRTF indent align = fmap T.concat . mapM (blockToRTF indent align) -- | Convert Pandoc block element to RTF. blockToRTF :: PandocMonad m => Int -- ^ indent level -> Alignment -- ^ alignment -> Block -- ^ block to convert -> m Text blockToRTF indent alignment (Div _ bs) = blocksToRTF indent alignment bs blockToRTF indent alignment (Plain lst) = rtfCompact indent 0 alignment <$> inlinesToRTF lst blockToRTF indent alignment (Para lst) = rtfPar indent 0 alignment <$> inlinesToRTF lst blockToRTF indent alignment (LineBlock lns) = blockToRTF indent alignment $ linesToPara lns blockToRTF indent alignment (BlockQuote lst) = blocksToRTF (indent + indentIncrement) alignment lst blockToRTF indent _ (CodeBlock _ str) = return $ rtfPar indent 0 AlignLeft ("\\f1 " <> codeStringToRTF str) blockToRTF _ _ b@(RawBlock f str) | f == Format "rtf" = return str | otherwise = do report $ BlockNotRendered b return "" blockToRTF indent alignment (BulletList lst) = spaceAtEnd . T.concat <$> mapM (listItemToRTF alignment indent (bulletMarker indent)) lst blockToRTF indent alignment (OrderedList attribs lst) = spaceAtEnd . T.concat <$> zipWithM (listItemToRTF alignment indent) (orderedMarkers indent attribs) lst blockToRTF indent alignment (DefinitionList lst) = spaceAtEnd . T.concat <$> mapM (definitionListItemToRTF alignment indent) lst blockToRTF indent _ HorizontalRule = return $ rtfPar indent 0 AlignCenter "\\emdash\\emdash\\emdash\\emdash\\emdash" blockToRTF indent alignment (Header level _ lst) = do contents <- inlinesToRTF lst return $ rtfPar indent 0 alignment $ "\\outlinelevel" <> tshow (level - 1) <> " \\b \\fs" <> tshow (40 - (level * 4)) <> " " <> contents blockToRTF indent alignment (Table _ blkCapt specs thead tbody tfoot) = do let (caption, aligns, sizes, headers, rows) = toLegacyTable blkCapt specs thead tbody tfoot caption' <- inlinesToRTF caption header' <- if all null headers then return "" else tableRowToRTF True indent aligns sizes headers rows' <- T.concat <$> mapM (tableRowToRTF False indent aligns sizes) rows return $ header' <> rows' <> rtfPar indent 0 alignment caption' blockToRTF indent alignment (Figure attr capt body) = blockToRTF indent alignment $ figureDiv attr capt body tableRowToRTF :: PandocMonad m => Bool -> Int -> [Alignment] -> [Double] -> [[Block]] -> m Text tableRowToRTF header indent aligns sizes' cols = do let totalTwips = 6 * 1440 -- 6 inches let sizes = if all (== 0) sizes' then replicate (length cols) (1.0 / fromIntegral (length cols)) else sizes' columns <- T.concat <$> zipWithM (tableItemToRTF indent) aligns cols let rightEdges = tail $ scanl (\sofar new -> sofar + floor (new * totalTwips)) (0 :: Integer) sizes let cellDefs = map (\edge -> (if header then "\\clbrdrb\\brdrs" else "") <> "\\cellx" <> tshow edge) rightEdges let start = "{\n\\trowd \\trgaph120\n" <> T.concat cellDefs <> "\n" <> "\\trkeep\\intbl\n{\n" let end = "}\n\\intbl\\row}\n" return $ start <> columns <> end tableItemToRTF :: PandocMonad m => Int -> Alignment -> [Block] -> m Text tableItemToRTF indent alignment item = do contents <- blocksToRTF indent alignment item return $ "{" <> T.replace "\\pard" "\\pard\\intbl" contents <> "\\cell}\n" -- | Ensure that there's the same amount of space after compact -- lists as after regular lists. spaceAtEnd :: Text -> Text spaceAtEnd str = maybe str (<> "\\sa180\\par}\n") $ T.stripSuffix "\\par}\n" str -- | Convert list item (list of blocks) to RTF. listItemToRTF :: PandocMonad m => Alignment -- ^ alignment -> Int -- ^ indent level -> Text -- ^ list start marker -> [Block] -- ^ list item (list of blocks) -> m Text listItemToRTF alignment indent marker [] = return $ rtfCompact (indent + listIncrement) (negate listIncrement) alignment (marker <> "\\tx" <> tshow listIncrement <> "\\tab ") listItemToRTF alignment indent marker (listFirst:listRest) = do let f = blockToRTF (indent + listIncrement) alignment first <- f listFirst rest <- mapM f listRest let listMarker = "\\fi" <> tshow (negate listIncrement) <> " " <> marker <> "\\tx" <> tshow listIncrement <> "\\tab" -- Find the first occurrence of \\fi or \\fi-, then replace it and the following -- digits with the list marker. let insertListMarker t = case popDigit $ optionDash $ T.drop 3 suff of Just suff' -> pref <> listMarker <> T.dropWhile isDigit suff' Nothing -> t where (pref, suff) = T.breakOn "\\fi" t optionDash x = case T.uncons x of Just ('-', xs) -> xs _ -> x popDigit x | Just (d, xs) <- T.uncons x , isDigit d = Just xs | otherwise = Nothing -- insert the list marker into the (processed) first block return $ insertListMarker first <> T.concat rest -- | Convert definition list item (label, list of blocks) to RTF. definitionListItemToRTF :: PandocMonad m => Alignment -- ^ alignment -> Int -- ^ indent level -> ([Inline],[[Block]]) -- ^ list item (list of blocks) -> m Text definitionListItemToRTF alignment indent (label, defs) = do labelText <- blockToRTF indent alignment (Plain label) itemsText <- blocksToRTF (indent + listIncrement) alignment (concat defs) return $ labelText <> itemsText -- | Convert list of inline items to RTF. inlinesToRTF :: PandocMonad m => [Inline] -- ^ list of inlines to convert -> m Text inlinesToRTF lst = T.concat <$> mapM inlineToRTF lst -- | Convert inline item to RTF. inlineToRTF :: PandocMonad m => Inline -- ^ inline to convert -> m Text inlineToRTF (Span _ lst) = inlinesToRTF lst inlineToRTF (Emph lst) = do contents <- inlinesToRTF lst return $ "{\\i " <> contents <> "}" inlineToRTF (Underline lst) = do contents <- inlinesToRTF lst return $ "{\\ul " <> contents <> "}" inlineToRTF (Strong lst) = do contents <- inlinesToRTF lst return $ "{\\b " <> contents <> "}" inlineToRTF (Strikeout lst) = do contents <- inlinesToRTF lst return $ "{\\strike " <> contents <> "}" inlineToRTF (Superscript lst) = do contents <- inlinesToRTF lst return $ "{\\super " <> contents <> "}" inlineToRTF (Subscript lst) = do contents <- inlinesToRTF lst return $ "{\\sub " <> contents <> "}" inlineToRTF (SmallCaps lst) = do contents <- inlinesToRTF lst return $ "{\\scaps " <> contents <> "}" inlineToRTF (Quoted SingleQuote lst) = do contents <- inlinesToRTF lst return $ "\\u8216'" <> contents <> "\\u8217'" inlineToRTF (Quoted DoubleQuote lst) = do contents <- inlinesToRTF lst return $ "\\u8220\"" <> contents <> "\\u8221\"" inlineToRTF (Code _ str) = return $ "{\\f1 " <> codeStringToRTF str <> "}" inlineToRTF (Str str) = return $ stringToRTF str inlineToRTF (Math t str) = texMathToInlines t str >>= inlinesToRTF inlineToRTF (Cite _ lst) = inlinesToRTF lst inlineToRTF il@(RawInline f str) | f == Format "rtf" = return str | otherwise = do report $ InlineNotRendered il return "" inlineToRTF LineBreak = return "\\line " inlineToRTF SoftBreak = return " " inlineToRTF Space = return " " inlineToRTF (Link _ text (src, _)) = do contents <- inlinesToRTF text return $ "{\\field{\\*\\fldinst{HYPERLINK \"" <> codeStringToRTF src <> "\"}}{\\fldrslt{\\ul\n" <> contents <> "\n}}}\n" inlineToRTF (Image _ _ (source, _)) = return $ "{\\cf1 [image: " <> source <> "]\\cf0}" inlineToRTF (Note contents) = do body <- T.concat <$> mapM (blockToRTF 0 AlignDefault) contents return $ "{\\super\\chftn}{\\*\\footnote\\chftn\\~\\plain\\pard " <> body <> "}" ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/Roff.hs��������������������������������������������������������0000644�0000000�0000000�00000011524�07346545000�016764� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Writers.Roff Copyright : Copyright (C) 2007-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable Common functions for roff writers (man, ms). -} module Text.Pandoc.Writers.Roff ( WriterState(..) , defaultWriterState , MS , Note , EscapeMode(..) , escapeString , withFontFeature ) where import Data.Char (ord, isAscii) import Control.Monad.State.Strict import qualified Data.Map as Map import Data.Text (Text) import qualified Data.Text as Text import Data.String import Data.Maybe (fromMaybe, isJust, catMaybes) import Text.Pandoc.Class.PandocMonad (PandocMonad) import Text.Pandoc.Definition import Text.DocLayout import Text.Printf (printf) import Text.Pandoc.RoffChar (standardEscapes, characterCodes, combiningAccents) data WriterState = WriterState { stHasInlineMath :: Bool , stFirstPara :: Bool , stNotes :: [Note] , stSmallCaps :: Bool , stHighlighting :: Bool , stInHeader :: Bool , stFontFeatures :: Map.Map Char Bool , stHasTables :: Bool } defaultWriterState :: WriterState defaultWriterState = WriterState{ stHasInlineMath = False , stFirstPara = True , stNotes = [] , stSmallCaps = False , stHighlighting = False , stInHeader = False , stFontFeatures = Map.fromList [ ('I',False) , ('B',False) , ('C',False) , ('V',False) ] , stHasTables = False } type Note = [Block] type MS = StateT WriterState data EscapeMode = AllowUTF8 -- ^ use preferred man escapes | AsciiOnly -- ^ escape everything deriving Show combiningAccentsMap :: Map.Map Char Text combiningAccentsMap = Map.fromList combiningAccents essentialEscapes :: Map.Map Char Text essentialEscapes = Map.fromList standardEscapes -- | Escape special characters for roff. escapeString :: EscapeMode -> Text -> Text escapeString e = Text.concat . escapeString' e . Text.unpack where escapeString' _ [] = [] escapeString' escapeMode ('\n':'.':xs) = "\n\\&." : escapeString' escapeMode xs escapeString' escapeMode (x:xs) = case Map.lookup x essentialEscapes of Just s -> s : escapeString' escapeMode xs Nothing | isAscii x -> Text.singleton x : escapeString' escapeMode xs | otherwise -> case escapeMode of AllowUTF8 -> Text.singleton x : escapeString' escapeMode xs AsciiOnly -> let accents = catMaybes $ takeWhile isJust (map (`Map.lookup` combiningAccentsMap) xs) rest = drop (length accents) xs s = case Map.lookup x characterCodeMap of Just t -> "\\[" <> Text.unwords (t:accents) <> "]" Nothing -> "\\[" <> Text.unwords (Text.pack (printf "u%04X" (ord x)) : accents) <> "]" in s : escapeString' escapeMode rest characterCodeMap :: Map.Map Char Text characterCodeMap = Map.fromList characterCodes fontChange :: (HasChars a, IsString a, PandocMonad m) => MS m (Doc a) fontChange = do features <- gets stFontFeatures inHeader <- gets stInHeader let filling = ['C' | fromMaybe False $ Map.lookup 'C' features] ++ ['V' | fromMaybe False $ Map.lookup 'V' features] ++ ['B' | inHeader || fromMaybe False (Map.lookup 'B' features)] ++ ['I' | fromMaybe False $ Map.lookup 'I' features] return $ if null filling then text "\\f[R]" else text $ "\\f[" ++ filling ++ "]" withFontFeature :: (HasChars a, IsString a, PandocMonad m) => Char -> MS m (Doc a) -> MS m (Doc a) withFontFeature c action = do modify $ \st -> st{ stFontFeatures = Map.adjust not c $ stFontFeatures st } begin <- fontChange d <- action modify $ \st -> st{ stFontFeatures = Map.adjust not c $ stFontFeatures st } end <- fontChange return $ begin <> d <> end ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/Shared.hs������������������������������������������������������0000644�0000000�0000000�00000061541�07346545000�017302� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE LambdaCase #-} {- | Module : Text.Pandoc.Writers.Shared Copyright : Copyright (C) 2013-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable Shared utility functions for pandoc writers. -} module Text.Pandoc.Writers.Shared ( metaToContext , metaToContext' , addVariablesToContext , getField , setField , resetField , defField , getLang , tagWithAttrs , htmlAddStyle , htmlAlignmentToString , htmlAttrs , isDisplayMath , fixDisplayMath , unsmartify , gridTable , lookupMetaBool , lookupMetaBlocks , lookupMetaInlines , lookupMetaString , stripLeadingTrailingSpace , toSubscript , toSuperscript , toTableOfContents , endsWithPlain , toLegacyTable , splitSentences , ensureValidXmlIdentifiers , setupTranslations ) where import Safe (lastMay) import qualified Data.ByteString.Lazy as BL import Control.Monad (zipWithM) import Data.Aeson (ToJSON (..), encode) import Data.Char (chr, ord, isSpace, isLetter) import Data.List (groupBy, intersperse, transpose, foldl') import Data.List.NonEmpty (NonEmpty(..), nonEmpty) import Data.Text.Conversions (FromText(..)) import qualified Data.Map as M import qualified Data.Text as T import Data.Text (Text) import qualified Text.Pandoc.Builder as Builder import Text.Pandoc.CSS (cssAttributes) import Text.Pandoc.Definition import Text.Pandoc.Options import Text.DocLayout import Text.Pandoc.Shared (stringify, makeSections, blocksToInlines) import Text.Pandoc.Walk (Walkable(..)) import qualified Text.Pandoc.UTF8 as UTF8 import Text.Pandoc.XML (escapeStringForXML) import Text.DocTemplates (Context(..), Val(..), TemplateTarget, ToContext(..), FromContext(..)) import Text.Pandoc.Chunks (tocToList, toTOCTree) import Text.Collate.Lang (Lang (..)) import Text.Pandoc.Class (PandocMonad, toLang) import Text.Pandoc.Translations (setTranslations) import Data.Maybe (fromMaybe) -- | Create template Context from a 'Meta' and an association list -- of variables, specified at the command line or in the writer. -- Variables overwrite metadata fields with the same names. -- If multiple variables are set with the same name, a list is -- assigned. Does nothing if 'writerTemplate' is Nothing. metaToContext :: (Monad m, TemplateTarget a) => WriterOptions -> ([Block] -> m (Doc a)) -> ([Inline] -> m (Doc a)) -> Meta -> m (Context a) metaToContext opts blockWriter inlineWriter meta = case writerTemplate opts of Nothing -> return mempty Just _ -> addVariablesToContext opts <$> metaToContext' blockWriter inlineWriter meta -- | Like 'metaToContext, but does not include variables and is -- not sensitive to 'writerTemplate'. metaToContext' :: (Monad m, TemplateTarget a) => ([Block] -> m (Doc a)) -- ^ block writer -> ([Inline] -> m (Doc a)) -- ^ inline writer -> Meta -> m (Context a) metaToContext' blockWriter inlineWriter (Meta metamap) = Context <$> mapM (metaValueToVal blockWriter inlineWriter) metamap -- | Add variables to a template Context, using monoidal append. -- Also add `meta-json`. Note that metadata values are used -- in template contexts only when like-named variables aren't set. addVariablesToContext :: TemplateTarget a => WriterOptions -> Context a -> Context a addVariablesToContext opts c1 = c2 <> (fromText <$> writerVariables opts) <> c1 where c2 = Context $ M.insert "meta-json" (SimpleVal $ literal $ fromText jsonrep) mempty jsonrep = UTF8.toText $ BL.toStrict $ encode $ toJSON c1 -- | Converts a 'MetaValue' into a doctemplate 'Val', using the given -- converter functions. metaValueToVal :: (Monad m, TemplateTarget a) => ([Block] -> m (Doc a)) -- ^ block writer -> ([Inline] -> m (Doc a)) -- ^ inline writer -> MetaValue -> m (Val a) metaValueToVal blockWriter inlineWriter (MetaMap metamap) = MapVal . Context <$> mapM (metaValueToVal blockWriter inlineWriter) metamap metaValueToVal blockWriter inlineWriter (MetaList xs) = ListVal <$> mapM (metaValueToVal blockWriter inlineWriter) xs metaValueToVal _ _ (MetaBool b) = return $ BoolVal b metaValueToVal _ inlineWriter (MetaString s) = SimpleVal <$> inlineWriter (Builder.toList (Builder.text s)) metaValueToVal blockWriter _ (MetaBlocks bs) = SimpleVal <$> blockWriter bs metaValueToVal _ inlineWriter (MetaInlines is) = SimpleVal <$> inlineWriter is -- | Retrieve a field value from a template context. getField :: FromContext a b => Text -> Context a -> Maybe b getField field (Context m) = M.lookup field m >>= fromVal -- | Set a field of a template context. If the field already has a value, -- convert it into a list with the new value appended to the old value(s). -- This is a utility function to be used in preparing template contexts. setField :: ToContext a b => Text -> b -> Context a -> Context a setField field val (Context m) = Context $ M.insertWith combine field (toVal val) m where combine newval (ListVal xs) = ListVal (xs ++ [newval]) combine newval x = ListVal [x, newval] -- | Reset a field of a template context. If the field already has a -- value, the new value replaces it. -- This is a utility function to be used in preparing template contexts. resetField :: ToContext a b => Text -> b -> Context a -> Context a resetField field val (Context m) = Context (M.insert field (toVal val) m) -- | Set a field of a template context if it currently has no value. -- If it has a value, do nothing. -- This is a utility function to be used in preparing template contexts. defField :: ToContext a b => Text -> b -> Context a -> Context a defField field val (Context m) = Context (M.insertWith f field (toVal val) m) where f _newval oldval = oldval -- | Get the contents of the `lang` metadata field or variable. getLang :: WriterOptions -> Meta -> Maybe Text getLang opts meta = case lookupContext "lang" (writerVariables opts) of Just s -> Just s _ -> case lookupMeta "lang" meta of Just (MetaBlocks [Para [Str s]]) -> Just s Just (MetaBlocks [Plain [Str s]]) -> Just s Just (MetaInlines [Str s]) -> Just s Just (MetaString s) -> Just s _ -> Nothing -- | Produce an HTML tag with the given pandoc attributes. tagWithAttrs :: HasChars a => a -> Attr -> Doc a tagWithAttrs tag attr = "<" <> literal tag <> (htmlAttrs attr) <> ">" -- | Produce HTML for the given pandoc attributes, to be used in HTML tags htmlAttrs :: HasChars a => Attr -> Doc a htmlAttrs (ident, classes, kvs) = addSpaceIfNotEmpty (hsep [ if T.null ident then empty else "id=" <> doubleQuotes (text $ T.unpack ident) ,if null classes then empty else "class=" <> doubleQuotes (text $ T.unpack (T.unwords classes)) ,hsep (map (\(k,v) -> text (T.unpack k) <> "=" <> doubleQuotes (text $ T.unpack (escapeStringForXML v))) kvs) ]) addSpaceIfNotEmpty :: HasChars a => Doc a -> Doc a addSpaceIfNotEmpty f = if isEmpty f then f else " " <> f -- | Adds a key-value pair to the @style@ attribute. htmlAddStyle :: (Text, Text) -> [(Text, Text)] -> [(Text, Text)] htmlAddStyle (key, value) kvs = let cssToStyle = T.intercalate " " . map (\(k, v) -> k <> ": " <> v <> ";") in case break ((== "style") . fst) kvs of (_, []) -> -- no style attribute yet, add new one ("style", cssToStyle [(key, value)]) : kvs (xs, (_,cssStyles):rest) -> -- modify the style attribute xs ++ ("style", cssToStyle modifiedCssStyles) : rest where modifiedCssStyles = case break ((== key) . fst) $ cssAttributes cssStyles of (cssAttribs, []) -> (key, value) : cssAttribs (pre, _:post) -> pre ++ (key, value) : post -- | Get the html representation of an alignment key htmlAlignmentToString :: Alignment -> Maybe Text htmlAlignmentToString = \case AlignLeft -> Just "left" AlignRight -> Just "right" AlignCenter -> Just "center" AlignDefault -> Nothing -- | Returns 'True' iff the argument is an inline 'Math' element of type -- 'DisplayMath'. isDisplayMath :: Inline -> Bool isDisplayMath (Math DisplayMath _) = True isDisplayMath (Span _ [Math DisplayMath _]) = True isDisplayMath _ = False -- | Remove leading and trailing 'Space' and 'SoftBreak' elements. stripLeadingTrailingSpace :: [Inline] -> [Inline] stripLeadingTrailingSpace = go . reverse . go . reverse where go (Space:xs) = xs go (SoftBreak:xs) = xs go xs = xs -- | Put display math in its own block (for ODT/DOCX). fixDisplayMath :: Block -> Block fixDisplayMath (Plain lst) | any isDisplayMath lst && not (all isDisplayMath lst) = -- chop into several paragraphs so each displaymath is its own Div ("",["math"],[]) $ map Plain $ filter (not . null) $ map stripLeadingTrailingSpace $ groupBy (\x y -> (isDisplayMath x && isDisplayMath y) || not (isDisplayMath x || isDisplayMath y)) lst fixDisplayMath (Para lst) | any isDisplayMath lst && not (all isDisplayMath lst) = -- chop into several paragraphs so each displaymath is its own Div ("",["math"],[]) $ map Para $ filter (not . null) $ map stripLeadingTrailingSpace $ groupBy (\x y -> (isDisplayMath x && isDisplayMath y) || not (isDisplayMath x || isDisplayMath y)) lst fixDisplayMath x = x -- | Converts a Unicode character into the ASCII sequence used to -- represent the character in "smart" Markdown. unsmartify :: WriterOptions -> Text -> Text unsmartify opts = T.concatMap $ \c -> case c of '\8217' -> "'" '\8230' -> "..." '\8211' | isEnabled Ext_old_dashes opts -> "-" | otherwise -> "--" '\8212' | isEnabled Ext_old_dashes opts -> "--" | otherwise -> "---" '\8220' -> "\"" '\8221' -> "\"" '\8216' -> "'" _ -> T.singleton c -- | Writes a grid table. gridTable :: (Monad m, HasChars a) => WriterOptions -> (WriterOptions -> [Block] -> m (Doc a)) -- ^ format Doc writer -> Bool -- ^ headless -> [Alignment] -- ^ column alignments -> [Double] -- ^ column widths -> [[Block]] -- ^ table header row -> [[[Block]]] -- ^ table body rows -> m (Doc a) gridTable opts blocksToDoc headless aligns widths headers rows = do -- the number of columns will be used in case of even widths let numcols = maximum (length aligns :| length widths : map length (headers:rows)) let officialWidthsInChars :: [Double] -> [Int] officialWidthsInChars widths' = map ( (max 1) . (\x -> x - 3) . floor . (fromIntegral (writerColumns opts) *) ) widths' -- handleGivenWidths wraps the given blocks in order for them to fit -- in cells with given widths. the returned content can be -- concatenated with borders and frames let handleGivenWidthsInChars widthsInChars' = do -- replace page width (in columns) in the options with a -- given width if smaller (adjusting by two) let useWidth w = opts{writerColumns = min (w - 2) (writerColumns opts)} -- prepare options to use with header and row cells let columnOptions = map useWidth widthsInChars' rawHeaders' <- zipWithM blocksToDoc columnOptions headers rawRows' <- mapM (\cs -> zipWithM blocksToDoc columnOptions cs) rows return (widthsInChars', rawHeaders', rawRows') let handleGivenWidths widths' = handleGivenWidthsInChars (officialWidthsInChars widths') -- handleFullWidths tries to wrap cells to the page width or even -- more in cases where `--wrap=none`. thus the content here is left -- as wide as possible let handleFullWidths widths' = do rawHeaders' <- mapM (blocksToDoc opts) headers rawRows' <- mapM (mapM (blocksToDoc opts)) rows let numChars = maybe 0 maximum . nonEmpty . map offset let minWidthsInChars = map numChars $ transpose (rawHeaders' : rawRows') let widthsInChars' = zipWith max minWidthsInChars (officialWidthsInChars widths') return (widthsInChars', rawHeaders', rawRows') -- handleZeroWidths calls handleFullWidths to check whether a wide -- table would fit in the page. if the produced table is too wide, -- it calculates even widths and passes the content to -- handleGivenWidths let handleZeroWidths widths' = do (widthsInChars', rawHeaders', rawRows') <- handleFullWidths widths' if foldl' (+) 0 widthsInChars' > writerColumns opts then do -- use even widths except for thin columns let evenCols = max 5 (((writerColumns opts - 1) `div` numcols) - 3) let (numToExpand, colsToExpand) = foldr (\w (n, tot) -> if w < evenCols then (n, tot + (evenCols - w)) else (n + 1, tot)) (0,0) widthsInChars' let expandAllowance = colsToExpand `div` numToExpand let newWidthsInChars = map (\w -> if w < evenCols then w else min (evenCols + expandAllowance) w) widthsInChars' handleGivenWidthsInChars newWidthsInChars else return (widthsInChars', rawHeaders', rawRows') -- render the contents of header and row cells differently depending -- on command line options, widths given in this specific table, and -- cells' contents let handleWidths | writerWrapText opts == WrapNone = handleFullWidths widths | all (== 0) widths = handleZeroWidths widths | otherwise = handleGivenWidths widths (widthsInChars, rawHeaders, rawRows) <- handleWidths let hpipeBlocks blocks = hcat [beg, middle, end] where sep' = vfill " | " beg = vfill "| " end = vfill " |" middle = chomp $ hcat $ intersperse sep' blocks let makeRow = hpipeBlocks . zipWith lblock widthsInChars let head' = makeRow rawHeaders let rows' = map (makeRow . map chomp) rawRows let borderpart ch align widthInChars = (if align == AlignLeft || align == AlignCenter then char ':' else char ch) <> text (replicate widthInChars ch) <> (if align == AlignRight || align == AlignCenter then char ':' else char ch) let border ch aligns' widthsInChars' = char '+' <> hcat (intersperse (char '+') (zipWith (borderpart ch) aligns' widthsInChars')) <> char '+' let body = vcat $ intersperse (border '-' (repeat AlignDefault) widthsInChars) rows' let head'' = if headless then empty else head' $$ border '=' aligns widthsInChars if headless then return $ border '-' aligns widthsInChars $$ body $$ border '-' (repeat AlignDefault) widthsInChars else return $ border '-' (repeat AlignDefault) widthsInChars $$ head'' $$ body $$ border '-' (repeat AlignDefault) widthsInChars -- | Retrieve the metadata value for a given @key@ -- and convert to Bool. lookupMetaBool :: Text -> Meta -> Bool lookupMetaBool key meta = case lookupMeta key meta of Just (MetaBlocks _) -> True Just (MetaInlines _) -> True Just (MetaString x) -> not (T.null x) Just (MetaBool True) -> True _ -> False -- | Retrieve the metadata value for a given @key@ -- and extract blocks. lookupMetaBlocks :: Text -> Meta -> [Block] lookupMetaBlocks key meta = case lookupMeta key meta of Just (MetaBlocks bs) -> bs Just (MetaInlines ils) -> [Plain ils] Just (MetaString s) -> [Plain [Str s]] _ -> [] -- | Retrieve the metadata value for a given @key@ -- and extract inlines. lookupMetaInlines :: Text -> Meta -> [Inline] lookupMetaInlines key meta = case lookupMeta key meta of Just (MetaString s) -> [Str s] Just (MetaInlines ils) -> ils Just (MetaBlocks [Plain ils]) -> ils Just (MetaBlocks [Para ils]) -> ils _ -> [] -- | Retrieve the metadata value for a given @key@ -- and convert to String. lookupMetaString :: Text -> Meta -> Text lookupMetaString key meta = case lookupMeta key meta of Just (MetaString s) -> s Just (MetaInlines ils) -> stringify ils Just (MetaBlocks bs) -> stringify bs Just (MetaBool b) -> T.pack (show b) _ -> "" -- | Tries to convert a character into a unicode superscript version of -- the character. toSuperscript :: Char -> Maybe Char toSuperscript '1' = Just '\x00B9' toSuperscript '2' = Just '\x00B2' toSuperscript '3' = Just '\x00B3' toSuperscript '+' = Just '\x207A' toSuperscript '-' = Just '\x207B' toSuperscript '\x2212' = Just '\x207B' -- unicode minus toSuperscript '=' = Just '\x207C' toSuperscript '(' = Just '\x207D' toSuperscript ')' = Just '\x207E' toSuperscript c | c >= '0' && c <= '9' = Just $ chr (0x2070 + (ord c - 48)) | isSpace c = Just c | otherwise = Nothing -- | Tries to convert a character into a unicode subscript version of -- the character. toSubscript :: Char -> Maybe Char toSubscript '+' = Just '\x208A' toSubscript '-' = Just '\x208B' toSubscript '=' = Just '\x208C' toSubscript '(' = Just '\x208D' toSubscript ')' = Just '\x208E' toSubscript c | c >= '0' && c <= '9' = Just $ chr (0x2080 + (ord c - 48)) | isSpace c = Just c | otherwise = Nothing -- | Construct table of contents (as a bullet list) from document body. toTableOfContents :: WriterOptions -> [Block] -> Block toTableOfContents opts = tocToList (writerNumberSections opts) (writerTOCDepth opts) . toTOCTree . makeSections (writerNumberSections opts) Nothing -- | Returns 'True' iff the list of blocks has a @'Plain'@ as its last -- element. endsWithPlain :: [Block] -> Bool endsWithPlain xs = case lastMay xs of Just Plain{} -> True Just (BulletList is) -> maybe False endsWithPlain (lastMay is) Just (OrderedList _ is) -> maybe False endsWithPlain (lastMay is) _ -> False -- | Convert the relevant components of a new-style table (with block -- caption, row headers, row and column spans, and so on) to those of -- an old-style table (inline caption, table head with one row, no -- foot, and so on). Cells with a 'RowSpan' and 'ColSpan' of @(h, w)@ -- will be cut up into @h * w@ cells of dimension @(1, 1)@, with the -- content placed in the upper-left corner. toLegacyTable :: Caption -> [ColSpec] -> TableHead -> [TableBody] -> TableFoot -> ([Inline], [Alignment], [Double], [[Block]], [[[Block]]]) toLegacyTable (Caption _ cbody) specs thead tbodies tfoot = (cbody', aligns, widths, th', tb') where numcols = length specs (aligns, mwidths) = unzip specs fromWidth (ColWidth w) | w > 0 = w fromWidth _ = 0 widths = map fromWidth mwidths unRow (Row _ x) = x unBody (TableBody _ _ hd bd) = hd <> bd unBodies = concatMap unBody TableHead _ th = Builder.normalizeTableHead numcols thead tb = map (Builder.normalizeTableBody numcols) tbodies TableFoot _ tf = Builder.normalizeTableFoot numcols tfoot cbody' = blocksToInlines cbody (th', tb') = case th of r:rs -> let (pendingPieces, r') = placeCutCells [] $ unRow r rs' = cutRows pendingPieces $ rs <> unBodies tb <> tf in (r', rs') [] -> ([], cutRows [] $ unBodies tb <> tf) -- Adapted from placeRowSection in Builders. There is probably a -- more abstract foldRowSection that unifies them both. placeCutCells pendingPieces cells -- If there are any pending pieces for a column, add -- them. Pending pieces have preference over cells due to grid -- layout rules. | (p:ps):pendingPieces' <- pendingPieces = let (pendingPieces'', rowPieces) = placeCutCells pendingPieces' cells in (ps : pendingPieces'', p : rowPieces) -- Otherwise cut up a cell on the row and deal with its pieces. | c:cells' <- cells = let (h, w, cBody) = getComponents c cRowPieces = cBody : replicate (w - 1) mempty cPendingPieces = replicate w $ replicate (h - 1) mempty pendingPieces' = drop w pendingPieces (pendingPieces'', rowPieces) = placeCutCells pendingPieces' cells' in (cPendingPieces <> pendingPieces'', cRowPieces <> rowPieces) | otherwise = ([], []) cutRows pendingPieces (r:rs) = let (pendingPieces', r') = placeCutCells pendingPieces $ unRow r rs' = cutRows pendingPieces' rs in r' : rs' cutRows _ [] = [] getComponents (Cell _ _ (RowSpan h) (ColSpan w) body) = (h, w, body) splitSentences :: Doc Text -> Doc Text splitSentences = go . toList where go [] = mempty go (Text len t : BreakingSpace : xs) = if isSentenceEnding t then Text len t <> NewLine <> go xs else Text len t <> BreakingSpace <> go xs go (x:xs) = x <> go xs toList (Concat (Concat a b) c) = toList (Concat a (Concat b c)) toList (Concat a b) = a : toList b toList x = [x] isSentenceEnding t = case T.unsnoc t of Just (t',c) | c == '.' || c == '!' || c == '?' -> True | c == ')' || c == ']' || c == '"' || c == '\x201D' -> case T.unsnoc t' of Just (_,d) -> d == '.' || d == '!' || d == '?' _ -> False _ -> False -- | Ensure that all identifiers start with a letter, -- and modify internal links accordingly. (Yes, XML allows an -- underscore, but HTML 4 doesn't, so we are more conservative.) ensureValidXmlIdentifiers :: Pandoc -> Pandoc ensureValidXmlIdentifiers = walk fixLinks . walkAttr fixIdentifiers where fixIdentifiers (ident, classes, kvs) = (case T.uncons ident of Nothing -> ident Just (c, _) | isLetter c -> ident _ -> "id_" <> ident, classes, kvs) needsFixing src = case T.uncons src of Just ('#',t) -> case T.uncons t of Just (c,_) | not (isLetter c) -> Just ("#id_" <> t) _ -> Nothing _ -> Nothing fixLinks (Link attr ils (src, tit)) | Just src' <- needsFixing src = Link attr ils (src', tit) fixLinks (Image attr ils (src, tit)) | Just src' <- needsFixing src = Image attr ils (src', tit) fixLinks x = x -- | Walk Pandoc document, modifying attributes. walkAttr :: (Attr -> Attr) -> Pandoc -> Pandoc walkAttr f = walk goInline . walk goBlock where goInline (Span attr ils) = Span (f attr) ils goInline (Link attr ils target) = Link (f attr) ils target goInline (Image attr ils target) = Image (f attr) ils target goInline (Code attr txt) = Code (f attr) txt goInline x = x goBlock (Header lev attr ils) = Header lev (f attr) ils goBlock (CodeBlock attr txt) = CodeBlock (f attr) txt goBlock (Table attr cap colspecs thead tbodies tfoot) = Table (f attr) cap colspecs thead tbodies tfoot goBlock (Div attr bs) = Div (f attr) bs goBlock x = x -- | Set translations based on the `lang` in metadata. setupTranslations :: PandocMonad m => Meta -> m () setupTranslations meta = do let defLang = Lang "en" (Just "US") Nothing [] [] [] lang <- case lookupMetaString "lang" meta of "" -> pure defLang s -> fromMaybe defLang <$> toLang (Just s) setTranslations lang ���������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/TEI.hs���������������������������������������������������������0000644�0000000�0000000�00000030533�07346545000�016512� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE PatternGuards #-} {- | Module : Text.Pandoc.Writers.Docbook Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable Conversion of 'Pandoc' documents to Docbook XML. -} module Text.Pandoc.Writers.TEI (writeTEI) where import Data.Text (Text) import qualified Data.Text as T import Text.Pandoc.Class.PandocMonad (PandocMonad, report) import Text.Pandoc.Definition import Text.Pandoc.Highlighting (languages, languagesByExtension) import Text.Pandoc.ImageSize import Text.Pandoc.Logging import Text.Pandoc.Options import Text.DocLayout import Text.Pandoc.Shared import Text.Pandoc.URI import Text.Pandoc.Templates (renderTemplate) import Text.Pandoc.Writers.Shared import Text.Pandoc.XML -- | Convert Pandoc document to string in Docbook format. writeTEI :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeTEI opts doc = do let Pandoc meta blocks = ensureValidXmlIdentifiers doc let colwidth = if writerWrapText opts == WrapAuto then Just $ writerColumns opts else Nothing let startLvl = case writerTopLevelDivision opts of TopLevelPart -> -1 TopLevelChapter -> 0 TopLevelSection -> 1 TopLevelDefault -> 1 let fromBlocks = blocksToTEI opts . makeSections False (Just startLvl) metadata <- metaToContext opts fromBlocks (fmap chomp . inlinesToTEI opts) meta main <- fromBlocks blocks let context = defField "body" main $ defField "mathml" (case writerHTMLMathMethod opts of MathML -> True _ -> False) metadata return $ render colwidth $ case writerTemplate opts of Nothing -> main Just tpl -> renderTemplate tpl context -- | Convert a list of Pandoc blocks to TEI. blocksToTEI :: PandocMonad m => WriterOptions -> [Block] -> m (Doc Text) blocksToTEI opts bs = vcat <$> mapM (blockToTEI opts) bs -- | Auxiliary function to convert Plain block to Para. plainToPara :: Block -> Block plainToPara (Plain x) = Para x plainToPara x = x -- | Convert a list of pairs of terms and definitions into a TEI -- list with labels and items. deflistItemsToTEI :: PandocMonad m => WriterOptions -> [([Inline],[[Block]])] -> m (Doc Text) deflistItemsToTEI opts items = vcat <$> mapM (uncurry (deflistItemToTEI opts)) items -- | Convert a term and a list of blocks into a TEI varlistentry. deflistItemToTEI :: PandocMonad m => WriterOptions -> [Inline] -> [[Block]] -> m (Doc Text) deflistItemToTEI opts term defs = do term' <- inlinesToTEI opts term defs' <- blocksToTEI opts $ concatMap (map plainToPara) defs return $ inTagsIndented "label" term' $$ inTagsIndented "item" defs' -- | Convert a list of lists of blocks to a list of TEI list items. listItemsToTEI :: PandocMonad m => WriterOptions -> [[Block]] -> m (Doc Text) listItemsToTEI opts items = vcat <$> mapM (listItemToTEI opts) items -- | Convert a list of blocks into a TEI list item. listItemToTEI :: PandocMonad m => WriterOptions -> [Block] -> m (Doc Text) listItemToTEI opts item = inTagsIndented "item" <$> blocksToTEI opts (map plainToPara item) imageToTEI :: PandocMonad m => WriterOptions -> Attr -> Text -> m (Doc Text) imageToTEI opts attr src = return $ selfClosingTag "graphic" $ ("url", src) : idFromAttr opts attr ++ dims where dims = go Width "width" ++ go Height "height" go dir dstr = case dimension dir attr of Just a -> [(dstr, tshow a)] Nothing -> [] -- | Convert a Pandoc block element to TEI. blockToTEI :: PandocMonad m => WriterOptions -> Block -> m (Doc Text) blockToTEI opts (Div attr@(_,"section":_,_) (Header lvl _ ils : xs)) = do -- TEI doesn't allow sections with no content, so insert some if needed let xs' = if null xs then [Para []] else xs -- level numbering correspond to LaTeX internals divType = case lvl of n | n == -1 -> "part" | n == 0 -> "chapter" | n >= 1 && n <= 5 -> "level" <> tshow n | otherwise -> "section" titleContents <- inlinesToTEI opts ils contents <- blocksToTEI opts xs' return $ inTags True "div" (("type", divType) : idFromAttr opts attr) $ inTagsSimple "head" titleContents $$ contents -- Add ids to paragraphs in divs with ids - this is needed for -- pandoc-citeproc to get link anchors in bibliographies: blockToTEI opts (Div attr [Para lst]) = do let attribs = idFromAttr opts attr inTags False "p" attribs <$> inlinesToTEI opts lst blockToTEI opts (Div _ bs) = blocksToTEI opts $ map plainToPara bs blockToTEI _ h@Header{} = do -- should not occur after makeSections, except inside lists/blockquotes report $ BlockNotRendered h return empty -- For TEI simple, text must be within containing block element, so -- we use treat as Para to ensure that Plain text ends up contained by -- something: blockToTEI opts (Plain lst) = blockToTEI opts $ Para lst blockToTEI opts (Para lst) = inTags False "p" [] <$> inlinesToTEI opts lst blockToTEI opts (LineBlock lns) = blockToTEI opts $ linesToPara lns blockToTEI opts (BlockQuote blocks) = inTagsIndented "quote" <$> blocksToTEI opts blocks blockToTEI opts (CodeBlock (_,classes,_) str) = return $ literal ("<ab type='codeblock " <> lang <> "'>") <> cr <> flush (literal (escapeStringForXML str) <> cr <> text "</ab>") where lang = if null langs then "" else escapeStringForXML (head langs) syntaxMap = writerSyntaxMap opts isLang l = T.toLower l `elem` map T.toLower (languages syntaxMap) langsFrom s = if isLang s then [s] else (languagesByExtension syntaxMap) . T.toLower $ s langs = concatMap langsFrom classes blockToTEI opts (BulletList lst) = do let attribs = [("type", "unordered")] inTags True "list" attribs <$> listItemsToTEI opts lst blockToTEI _ (OrderedList _ []) = return empty blockToTEI opts (OrderedList (start, numstyle, _) (first:rest)) = do let attribs = case numstyle of DefaultStyle -> [] Decimal -> [("type", "ordered:arabic")] Example -> [("type", "ordered:arabic")] UpperAlpha -> [("type", "ordered:upperalpha")] LowerAlpha -> [("type", "ordered:loweralpha")] UpperRoman -> [("type", "ordered:upperroman")] LowerRoman -> [("type", "ordered:lowerroman")] items <- if start == 1 then listItemsToTEI opts (first:rest) else do fi <- blocksToTEI opts $ map plainToPara first re <- listItemsToTEI opts rest return $ inTags True "item" [("n",tshow start)] fi $$ re return $ inTags True "list" attribs items blockToTEI opts (DefinitionList lst) = do let attribs = [("type", "definition")] inTags True "list" attribs <$> deflistItemsToTEI opts lst blockToTEI _ b@(RawBlock f str) | f == "tei" = return $ literal str -- raw TEI block (should such a thing exist). | otherwise = do report $ BlockNotRendered b return empty blockToTEI _ HorizontalRule = return $ selfClosingTag "milestone" [("unit","undefined") ,("type","separator") ,("rendition","line")] blockToTEI opts (Figure attr capt bs) = blockToTEI opts (figureDiv attr capt bs) -- TEI Tables -- TEI Simple's tables are composed of cells and rows; other -- table info in the AST is here lossily discard. blockToTEI opts (Table _ blkCapt specs thead tbody tfoot) = do let (_, _, _, headers, rows) = toLegacyTable blkCapt specs thead tbody tfoot headers' <- if null headers then pure mempty else tableHeadersToTEI opts headers rows' <- mapM (tableRowToTEI opts) rows return $ inTags True "table" [] $ headers' $$ vcat rows' tableRowToTEI :: PandocMonad m => WriterOptions -> [[Block]] -> m (Doc Text) tableRowToTEI opts cols = inTagsIndented "row" . vcat <$> mapM (tableItemToTEI opts) cols tableHeadersToTEI :: PandocMonad m => WriterOptions -> [[Block]] -> m (Doc Text) tableHeadersToTEI opts cols = inTags True "row" [("role","label")] . vcat <$> mapM (tableItemToTEI opts) cols tableItemToTEI :: PandocMonad m => WriterOptions -> [Block] -> m (Doc Text) tableItemToTEI opts item = inTags False "cell" [] . vcat <$> mapM (blockToTEI opts) item -- | Convert a list of inline elements to TEI. inlinesToTEI :: PandocMonad m => WriterOptions -> [Inline] -> m (Doc Text) inlinesToTEI opts lst = hcat <$> mapM (inlineToTEI opts) lst -- | Convert an inline element to TEI. inlineToTEI :: PandocMonad m => WriterOptions -> Inline -> m (Doc Text) inlineToTEI _ (Str str) = return $ literal $ escapeStringForXML str inlineToTEI opts (Emph lst) = inTags False "hi" [("rendition","simple:italic")] <$> inlinesToTEI opts lst inlineToTEI opts (Underline lst) = inTags False "hi" [("rendition","simple:underline")] <$> inlinesToTEI opts lst inlineToTEI opts (Strong lst) = inTags False "hi" [("rendition", "simple:bold")] <$> inlinesToTEI opts lst inlineToTEI opts (Strikeout lst) = inTags False "hi" [("rendition", "simple:strikethrough")] <$> inlinesToTEI opts lst inlineToTEI opts (Superscript lst) = inTags False "hi" [("rendition", "simple:superscript")] <$> inlinesToTEI opts lst inlineToTEI opts (Subscript lst) = inTags False "hi" [("rendition", "simple:subscript")] <$> inlinesToTEI opts lst inlineToTEI opts (SmallCaps lst) = inTags False "hi" [("rendition", "simple:smallcaps")] <$> inlinesToTEI opts lst inlineToTEI opts (Quoted _ lst) = inTagsSimple "quote" <$> inlinesToTEI opts lst inlineToTEI opts (Cite _ lst) = inlinesToTEI opts lst inlineToTEI opts (Span _ ils) = inlinesToTEI opts ils inlineToTEI _ (Code _ str) = return $ inTags False "seg" [("type","code")] $ literal (escapeStringForXML str) -- Distinguish display from inline math by wrapping the former in a "figure." inlineToTEI _ (Math t str) = return $ case t of InlineMath -> inTags False "formula" [("notation","TeX")] $ literal str DisplayMath -> inTags True "figure" [("type","math")] $ inTags False "formula" [("notation","TeX")] $ literal str inlineToTEI _ il@(RawInline f x) | f == "tei" = return $ literal x | otherwise = empty <$ report (InlineNotRendered il) inlineToTEI _ LineBreak = return $ selfClosingTag "lb" [] inlineToTEI _ Space = return space -- because we use \n for LineBreak, we can't do soft breaks: inlineToTEI _ SoftBreak = return space inlineToTEI opts (Link attr txt (src, _)) | Just email <- T.stripPrefix "mailto:" src = do let emailLink = literal $ escapeStringForXML email case txt of [Str s] | escapeURI s == email -> return emailLink _ -> do linktext <- inlinesToTEI opts txt return $ linktext <+> char '(' <> emailLink <> char ')' | otherwise = inTags False "ref" (("target", src) : idFromAttr opts attr) <$> inlinesToTEI opts txt inlineToTEI opts (Image attr description (src, tit)) = do let titleDoc = if T.null tit then empty else inTags False "figDesc" [] (literal $ escapeStringForXML tit) imageDesc <- if null description then return empty else inTags False "head" [] <$> inlinesToTEI opts description img <- imageToTEI opts attr src return $ inTagsIndented "figure" $ imageDesc $$ img $$ titleDoc inlineToTEI opts (Note contents) = inTagsIndented "note" <$> blocksToTEI opts contents idFromAttr :: WriterOptions -> Attr -> [(Text, Text)] idFromAttr opts (id',_,_) = [("xml:id", writerIdentifierPrefix opts <> id') | not (T.null id')] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/Texinfo.hs�����������������������������������������������������0000644�0000000�0000000�00000044204�07346545000�017505� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Writers.Texinfo Copyright : Copyright (C) 2008-2023 John MacFarlane 2012 Peter Wang License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable Conversion of 'Pandoc' format into Texinfo. -} module Text.Pandoc.Writers.Texinfo ( writeTexinfo ) where import Control.Monad (zipWithM) import Control.Monad.Except (throwError) import Control.Monad.State.Strict ( StateT, MonadState(get), gets, modify, evalStateT ) import Data.Char (chr, ord, isAlphaNum) import Data.List (maximumBy, transpose, foldl') import Data.List.NonEmpty (nonEmpty) import Data.Ord (comparing) import qualified Data.Set as Set import Data.Text (Text) import qualified Data.Text as T import Network.URI (unEscapeString) import System.FilePath import Text.Pandoc.Class.PandocMonad (PandocMonad, report) import Text.Pandoc.Definition import Text.Pandoc.Error import Text.Pandoc.ImageSize import Text.Pandoc.Logging import Text.Pandoc.Options import Text.DocLayout import Text.Pandoc.Shared import Text.Pandoc.URI import Text.Pandoc.Templates (renderTemplate) import Text.Pandoc.Writers.Shared import Text.Printf (printf) data WriterState = WriterState { stStrikeout :: Bool -- document contains strikeout , stEscapeComma :: Bool -- in a context where we need @comma , stIdentifiers :: Set.Set Text -- header ids used already , stOptions :: WriterOptions -- writer options } {- TODO: - internal cross references a la HTML - generated .texi files don't work when run through texi2dvi -} type TI m = StateT WriterState m -- | Convert Pandoc to Texinfo. writeTexinfo :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeTexinfo options document = evalStateT (pandocToTexinfo options $ wrapTop document) WriterState { stStrikeout = False, stEscapeComma = False, stIdentifiers = Set.empty, stOptions = options} -- | Add a "Top" node around the document, needed by Texinfo. wrapTop :: Pandoc -> Pandoc wrapTop (Pandoc meta blocks) = Pandoc meta (Header 0 nullAttr (docTitle meta) : blocks) pandocToTexinfo :: PandocMonad m => WriterOptions -> Pandoc -> TI m Text pandocToTexinfo options (Pandoc meta blocks) = do let titlePage = not $ all null $ docTitle meta : docDate meta : docAuthors meta let colwidth = if writerWrapText options == WrapAuto then Just $ writerColumns options else Nothing metadata <- metaToContext options blockListToTexinfo (fmap chomp .inlineListToTexinfo) meta body <- blockListToTexinfo blocks st <- get let context = defField "body" body $ defField "toc" (writerTableOfContents options) $ defField "titlepage" titlePage $ defField "strikeout" (stStrikeout st) metadata return $ render colwidth $ case writerTemplate options of Nothing -> body Just tpl -> renderTemplate tpl context -- | Escape things as needed for Texinfo. stringToTexinfo :: Text -> Text stringToTexinfo t | T.all isAlphaNum t = t | otherwise = T.concatMap escChar t where escChar '{' = "@{" escChar '}' = "@}" escChar '@' = "@@" escChar '\160' = "@ " escChar '\x2014' = "---" escChar '\x2013' = "--" escChar '\x2026' = "@dots{}" escChar '\x2019' = "'" escChar c = T.singleton c escapeCommas :: PandocMonad m => TI m (Doc Text) -> TI m (Doc Text) escapeCommas parser = do oldEscapeComma <- gets stEscapeComma modify $ \st -> st{ stEscapeComma = True } res <- parser modify $ \st -> st{ stEscapeComma = oldEscapeComma } return res -- | Puts contents into Texinfo command. inCmd :: Text -> Doc Text -> Doc Text inCmd cmd contents = char '@' <> literal cmd <> braces contents -- | Convert Pandoc block element to Texinfo. blockToTexinfo :: PandocMonad m => Block -- ^ Block to convert -> TI m (Doc Text) blockToTexinfo (Div _ bs) = blockListToTexinfo bs blockToTexinfo (Plain lst) = inlineListToTexinfo lst blockToTexinfo (Para lst) = inlineListToTexinfo lst -- this is handled differently from Plain in blockListToTexinfo blockToTexinfo (LineBlock lns) = blockToTexinfo $ linesToPara lns blockToTexinfo (BlockQuote lst) = do contents <- blockListToTexinfo lst return $ text "@quotation" $$ contents $$ text "@end quotation" blockToTexinfo (CodeBlock _ str) = return $ blankline $$ text "@verbatim" $$ flush (literal str) $$ text "@end verbatim" <> blankline blockToTexinfo b@(RawBlock f str) | f == "texinfo" = return $ literal str | f == "latex" || f == "tex" = return $ text "@tex" $$ literal str $$ text "@end tex" | otherwise = do report $ BlockNotRendered b return empty blockToTexinfo (BulletList lst) = do items <- mapM listItemToTexinfo lst return $ text "@itemize" $$ vcat items $$ text "@end itemize" <> blankline blockToTexinfo (OrderedList (start, numstyle, _) lst) = do items <- mapM listItemToTexinfo lst return $ text "@enumerate " <> exemplar $$ vcat items $$ text "@end enumerate" <> blankline where exemplar = case numstyle of DefaultStyle -> decimal Decimal -> decimal Example -> decimal UpperRoman -> decimal -- Roman numerals not supported LowerRoman -> decimal UpperAlpha -> upperAlpha LowerAlpha -> lowerAlpha decimal = if start == 1 then empty else text (show start) upperAlpha = text [chr $ ord 'A' + start - 1] lowerAlpha = text [chr $ ord 'a' + start - 1] blockToTexinfo (DefinitionList lst) = do items <- mapM defListItemToTexinfo lst return $ text "@table @asis" $$ vcat items $$ text "@end table" <> blankline blockToTexinfo HorizontalRule = -- XXX can't get the equivalent from LaTeX.hs to work return $ text "@iftex" $$ text "@bigskip@hrule@bigskip" $$ text "@end iftex" $$ text "@ifnottex" $$ text (replicate 72 '-') $$ text "@end ifnottex" blockToTexinfo (Header 0 _ lst) = do txt <- if null lst then return $ text "Top" else inlineListToTexinfo lst return $ text "@node Top" $$ text "@top " <> txt <> blankline blockToTexinfo (Header level (ident,_,_) lst) | level < 1 || level > 4 = blockToTexinfo (Para lst) | otherwise = do node <- inlineListForNode lst txt <- inlineListToTexinfo lst idsUsed <- gets stIdentifiers opts <- gets stOptions let id' = if T.null ident then uniqueIdent (writerExtensions opts) lst idsUsed else ident modify $ \st -> st{ stIdentifiers = Set.insert id' idsUsed } sec <- seccmd level return $ if (level > 0) && (level <= 4) then blankline <> text "@node " <> node $$ literal sec <> txt $$ text "@anchor" <> braces (literal $ "#" <> id') else txt where seccmd :: PandocMonad m => Int -> TI m Text seccmd 1 = return "@chapter " seccmd 2 = return "@section " seccmd 3 = return "@subsection " seccmd 4 = return "@subsubsection " seccmd _ = throwError $ PandocSomeError "illegal seccmd level" blockToTexinfo (Table _ blkCapt specs thead tbody tfoot) = do let (caption, aligns, widths, heads, rows) = toLegacyTable blkCapt specs thead tbody tfoot headers <- if all null heads then return empty else tableHeadToTexinfo aligns heads captionText <- inlineListToTexinfo caption rowsText <- mapM (tableRowToTexinfo aligns) rows colDescriptors <- if all (== 0) widths then do -- use longest entry instead of column widths cols <- mapM (mapM (fmap (T.unpack . render Nothing . hcat) . mapM blockToTexinfo)) $ transpose $ heads : rows return $ concatMap ((\x -> "{"++x++"} ") . maybe "" (maximumBy (comparing length)) . nonEmpty) cols else return $ "@columnfractions " ++ concatMap (printf "%.2f ") widths let tableBody = text ("@multitable " ++ colDescriptors) $$ headers $$ vcat rowsText $$ text "@end multitable" return $ if isEmpty captionText then tableBody <> blankline else text "@float Table" $$ tableBody $$ inCmd "caption" captionText $$ text "@end float" blockToTexinfo (Figure _ caption [SimpleFigure attr figCaption tgt]) = do let capt = if null figCaption then let (Caption _ cblks) = caption in blocksToInlines cblks else figCaption captionText <- if null capt then return empty else (text "@caption" <>) . braces <$> inlineListToTexinfo capt img <- inlineToTexinfo (Image attr figCaption tgt) return $ text "@float Figure" $$ img $$ captionText $$ text "@end float" blockToTexinfo (Figure _ fCaption [ Table attr tCaption@(Caption _ cbody) specs thead tbody tfoot]) = do let caption = case cbody of [] -> fCaption _ -> tCaption blockToTexinfo (Table attr caption specs thead tbody tfoot) blockToTexinfo (Figure _ (Caption _ caption) body) = do captionText <- inlineListToTexinfo $ blocksToInlines caption content <- blockListToTexinfo body return $ text ("@float" ++ floatType body) $$ content $$ ( if isEmpty captionText then empty else inCmd "caption" captionText ) $$ text "@end float" where -- floatType according to -- https://www.gnu.org/software/texinfo/manual/texinfo/html_node/_0040float.html floatType [SimpleFigure {}] = " Figure" floatType [Table {}] = " Table" floatType _ = "" tableHeadToTexinfo :: PandocMonad m => [Alignment] -> [[Block]] -> TI m (Doc Text) tableHeadToTexinfo = tableAnyRowToTexinfo "@headitem " tableRowToTexinfo :: PandocMonad m => [Alignment] -> [[Block]] -> TI m (Doc Text) tableRowToTexinfo = tableAnyRowToTexinfo "@item " tableAnyRowToTexinfo :: PandocMonad m => Text -> [Alignment] -> [[Block]] -> TI m (Doc Text) tableAnyRowToTexinfo itemtype aligns cols = (literal itemtype $$) . foldl' (\row item -> row $$ (if isEmpty row then empty else text " @tab ") <> item) empty <$> zipWithM alignedBlock aligns cols alignedBlock :: PandocMonad m => Alignment -> [Block] -> TI m (Doc Text) -- XXX @flushleft and @flushright text won't get word wrapped. Since word -- wrapping is more important than alignment, we ignore the alignment. alignedBlock _ = blockListToTexinfo {- alignedBlock AlignLeft col = do b <- blockListToTexinfo col return $ text "@flushleft" $$ b $$ text "@end flushleft" alignedBlock AlignRight col = do b <- blockListToTexinfo col return $ text "@flushright" $$ b $$ text "@end flushright" alignedBlock _ col = blockListToTexinfo col -} -- | Convert Pandoc block elements to Texinfo. blockListToTexinfo :: PandocMonad m => [Block] -> TI m (Doc Text) blockListToTexinfo [] = return empty blockListToTexinfo (x:xs) = do x' <- blockToTexinfo x case x of Header level _ _ -> do -- We need need to insert a menu for this node. let (before, after) = break isHeaderBlock xs before' <- blockListToTexinfo before let menu = if level < 4 then collectNodes (level + 1) after else [] lines' <- mapM makeMenuLine menu let menu' = if null lines' then empty else blankline $$ text "@menu" $$ vcat lines' $$ text "@end menu" after' <- blockListToTexinfo after return $ x' $$ before' $$ menu' $$ after' Para _ -> do xs' <- blockListToTexinfo xs case xs of (CodeBlock _ _:_) -> return $ x' $$ xs' _ -> return $ x' $+$ xs' _ -> do xs' <- blockListToTexinfo xs return $ x' $$ xs' collectNodes :: Int -> [Block] -> [Block] collectNodes _ [] = [] collectNodes level (x:xs) = case x of (Header hl _ _) | hl < level -> [] | hl == level -> x : collectNodes level xs | otherwise -> collectNodes level xs _ -> collectNodes level xs makeMenuLine :: PandocMonad m => Block -> TI m (Doc Text) makeMenuLine (Header _ _ lst) = do txt <- inlineListForNode lst return $ text "* " <> txt <> text "::" makeMenuLine _ = throwError $ PandocSomeError "makeMenuLine called with non-Header block" listItemToTexinfo :: PandocMonad m => [Block] -> TI m (Doc Text) listItemToTexinfo lst = do contents <- blockListToTexinfo lst let spacer = case reverse lst of (Para{}:_) -> blankline _ -> empty return $ text "@item" $$ contents <> spacer defListItemToTexinfo :: PandocMonad m => ([Inline], [[Block]]) -> TI m (Doc Text) defListItemToTexinfo (term, defs) = do term' <- inlineListToTexinfo term let defToTexinfo bs = do d <- blockListToTexinfo bs case reverse bs of (Para{}:_) -> return $ d <> blankline _ -> return d defs' <- mapM defToTexinfo defs return $ text "@item " <> term' $+$ vcat defs' -- | Convert list of inline elements to Texinfo. inlineListToTexinfo :: PandocMonad m => [Inline] -- ^ Inlines to convert -> TI m (Doc Text) inlineListToTexinfo lst = hcat <$> mapM inlineToTexinfo lst -- | Convert list of inline elements to Texinfo acceptable for a node name. inlineListForNode :: PandocMonad m => [Inline] -- ^ Inlines to convert -> TI m (Doc Text) inlineListForNode = return . literal . stringToTexinfo . T.filter (not . disallowedInNode) . stringify -- periods, commas, colons, and parentheses are disallowed in node names disallowedInNode :: Char -> Bool disallowedInNode c = c `elem` (".,:()" :: String) -- | Convert inline element to Texinfo inlineToTexinfo :: PandocMonad m => Inline -- ^ Inline to convert -> TI m (Doc Text) inlineToTexinfo (Span _ lst) = inlineListToTexinfo lst inlineToTexinfo (Emph lst) = inCmd "emph" <$> inlineListToTexinfo lst -- Underline isn't supported, fall back to Emph inlineToTexinfo (Underline lst) = inlineToTexinfo (Emph lst) inlineToTexinfo (Strong lst) = inCmd "strong" <$> inlineListToTexinfo lst inlineToTexinfo (Strikeout lst) = do modify $ \st -> st{ stStrikeout = True } contents <- inlineListToTexinfo lst return $ text "@textstrikeout{" <> contents <> text "}" inlineToTexinfo (Superscript lst) = do contents <- inlineListToTexinfo lst return $ text "@sup{" <> contents <> char '}' inlineToTexinfo (Subscript lst) = do contents <- inlineListToTexinfo lst return $ text "@sub{" <> contents <> char '}' inlineToTexinfo (SmallCaps lst) = inCmd "sc" <$> inlineListToTexinfo lst inlineToTexinfo (Code _ str) = return $ literal $ "@code{" <> stringToTexinfo str <> "}" inlineToTexinfo (Quoted SingleQuote lst) = do contents <- inlineListToTexinfo lst return $ char '`' <> contents <> char '\'' inlineToTexinfo (Quoted DoubleQuote lst) = do contents <- inlineListToTexinfo lst return $ text "``" <> contents <> text "''" inlineToTexinfo (Cite _ lst) = inlineListToTexinfo lst inlineToTexinfo (Str str) = return $ literal (stringToTexinfo str) inlineToTexinfo (Math _ str) = return $ inCmd "math" $ literal str inlineToTexinfo il@(RawInline f str) | f == "latex" || f == "tex" = return $ text "@tex" $$ literal str $$ text "@end tex" | f == "texinfo" = return $ literal str | otherwise = do report $ InlineNotRendered il return empty inlineToTexinfo LineBreak = return $ text "@*" <> cr inlineToTexinfo SoftBreak = do wrapText <- gets (writerWrapText . stOptions) case wrapText of WrapAuto -> return space WrapNone -> return space WrapPreserve -> return cr inlineToTexinfo Space = return space inlineToTexinfo (Link _ txt (src, _)) | Just ('#', _) <- T.uncons src = do contents <- escapeCommas $ inlineListToTexinfo txt return $ text "@ref" <> braces (literal (stringToTexinfo src) <> text "," <> contents) | otherwise = case txt of [Str x] | escapeURI x == src -> -- autolink return $ literal $ "@url{" <> x <> "}" _ -> do contents <- escapeCommas $ inlineListToTexinfo txt let src1 = stringToTexinfo src return $ literal ("@uref{" <> src1 <> ",") <> contents <> char '}' inlineToTexinfo (Image attr alternate (source, _)) = do content <- escapeCommas $ inlineListToTexinfo alternate opts <- gets stOptions let showDim dim = case dimension dim attr of (Just (Pixel a)) -> showInInch opts (Pixel a) <> "in" (Just (Percent _)) -> "" (Just d) -> tshow d Nothing -> "" return $ literal ("@image{" <> base <> "," <> showDim Width <> "," <> showDim Height <> ",") <> content <> text "," <> literal (ext <> "}") where ext = T.drop 1 $ T.pack $ takeExtension source' base = T.pack $ dropExtension source' source' = if isURI source then T.unpack source else unEscapeString $ T.unpack source inlineToTexinfo (Note contents) = do contents' <- blockListToTexinfo contents return $ text "@footnote" <> braces contents' ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/Textile.hs�����������������������������������������������������0000644�0000000�0000000�00000047121�07346545000�017510� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Writers.Textile Copyright : Copyright (C) 2010-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable Conversion of 'Pandoc' documents to Textile markup. Textile: <http://thresholdstate.com/articles/4312/the-textile-reference-manual> -} module Text.Pandoc.Writers.Textile ( writeTextile ) where import Control.Monad (zipWithM, liftM) import Control.Monad.State.Strict ( StateT, gets, modify, evalStateT ) import Data.Char (isSpace) import Data.Text (Text) import qualified Data.Text as T import Text.Pandoc.Class.PandocMonad (PandocMonad, report) import Text.Pandoc.Definition import Text.Pandoc.ImageSize import Text.Pandoc.Logging import Text.Pandoc.Options import Text.DocLayout (render, literal) import Text.Pandoc.Shared import Text.Pandoc.Templates (renderTemplate) import Text.Pandoc.Writers.Shared import Text.Pandoc.XML (escapeStringForXML) data WriterState = WriterState { stNotes :: [Text] -- Footnotes , stListLevel :: [Char] -- String at beginning of list items, e.g. "**" , stStartNum :: Maybe Int -- Start number if first list item , stUseTags :: Bool -- True if we should use HTML tags because we're in a complex list } type TW = StateT WriterState -- | Convert Pandoc to Textile. writeTextile :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeTextile opts document = evalStateT (pandocToTextile opts document) WriterState { stNotes = [], stListLevel = [], stStartNum = Nothing, stUseTags = False } -- | Return Textile representation of document. pandocToTextile :: PandocMonad m => WriterOptions -> Pandoc -> TW m Text pandocToTextile opts (Pandoc meta blocks) = do metadata <- metaToContext opts (fmap literal . blockListToTextile opts) (fmap literal . inlineListToTextile opts) meta body <- blockListToTextile opts blocks notes <- gets $ T.unlines . reverse . stNotes let main = body <> if T.null notes then "" else "\n\n" <> notes let context = defField "body" main metadata return $ case writerTemplate opts of Nothing -> main Just tpl -> render Nothing $ renderTemplate tpl context withUseTags :: PandocMonad m => TW m a -> TW m a withUseTags action = do oldUseTags <- gets stUseTags modify $ \s -> s { stUseTags = True } result <- action modify $ \s -> s { stUseTags = oldUseTags } return result -- | Escape one character as needed for Textile. escapeCharForTextile :: Char -> Text escapeCharForTextile x = case x of '&' -> "&" '<' -> "<" '>' -> ">" '"' -> """ '*' -> "*" '_' -> "_" '@' -> "@" '+' -> "+" '-' -> "-" '|' -> "|" '\x2014' -> " -- " '\x2013' -> " - " '\x2019' -> "'" '\x2026' -> "..." c -> T.singleton c -- | Escape string as needed for Textile. escapeTextForTextile :: Text -> Text escapeTextForTextile = T.concatMap escapeCharForTextile -- | Convert Pandoc block element to Textile. blockToTextile :: PandocMonad m => WriterOptions -- ^ Options -> Block -- ^ Block element -> TW m Text blockToTextile opts (Div attr bs) = do let startTag = render Nothing $ tagWithAttrs "div" attr let endTag = "</div>" contents <- blockListToTextile opts bs return $ startTag <> "\n\n" <> contents <> "\n\n" <> endTag <> "\n" blockToTextile opts (Plain inlines) = inlineListToTextile opts inlines blockToTextile opts (Para inlines) = do useTags <- gets stUseTags listLevel <- gets stListLevel contents <- inlineListToTextile opts inlines return $ if useTags then "<p>" <> contents <> "</p>" else contents <> if null listLevel then "\n" else "" blockToTextile opts (LineBlock lns) = blockToTextile opts $ linesToPara lns blockToTextile _ b@(RawBlock f str) | f == Format "html" || f == Format "textile" = return str | otherwise = do report $ BlockNotRendered b return "" blockToTextile _ HorizontalRule = return "<hr />\n" blockToTextile opts (Header level (ident,classes,keyvals) inlines) = do contents <- inlineListToTextile opts inlines let identAttr = if T.null ident then "" else "#" <> ident let attribs = if T.null identAttr && null classes then "" else "(" <> T.unwords classes <> identAttr <> ")" let lang = maybe "" (\x -> "[" <> x <> "]") $ lookup "lang" keyvals let styles = maybe "" (\x -> "{" <> x <> "}") $ lookup "style" keyvals let prefix = "h" <> tshow level <> attribs <> styles <> lang <> ". " return $ prefix <> contents <> "\n" blockToTextile _ (CodeBlock (_,classes,_) str) | any (T.all isSpace) (T.lines str) = return $ "<pre" <> classes' <> ">\n" <> escapeStringForXML str <> "\n</pre>\n" where classes' = if null classes then "" else " class=\"" <> T.unwords classes <> "\"" blockToTextile _ (CodeBlock (_,classes,_) str) = return $ "bc" <> classes' <> ". " <> str <> "\n\n" where classes' = if null classes then "" else "(" <> T.unwords classes <> ")" blockToTextile opts (BlockQuote bs@[Para _]) = do contents <- blockListToTextile opts bs return $ "bq. " <> contents <> "\n\n" blockToTextile opts (BlockQuote blocks) = do contents <- blockListToTextile opts blocks return $ "<blockquote>\n\n" <> contents <> "\n</blockquote>\n" blockToTextile opts (Table _ blkCapt specs thead tbody tfoot) = case toLegacyTable blkCapt specs thead tbody tfoot of ([], aligns, widths, headers, rows') | all (==0) widths -> do hs <- mapM (liftM (("_. " <>) . stripTrailingNewlines) . blockListToTextile opts) headers let cellsToRow cells = "|" <> T.intercalate "|" cells <> "|" let header = if all null headers then "" else cellsToRow hs <> "\n" let blocksToCell (align, bs) = do contents <- stripTrailingNewlines <$> blockListToTextile opts bs let alignMarker = case align of AlignLeft -> "<. " AlignRight -> ">. " AlignCenter -> "=. " AlignDefault -> "" return $ alignMarker <> contents let rowToCells = mapM blocksToCell . zip aligns bs <- mapM rowToCells rows' let body = T.unlines $ map cellsToRow bs return $ header <> body (capt, aligns, widths, headers, rows') -> do let alignStrings = map alignmentToText aligns captionDoc <- if null capt then return "" else do c <- inlineListToTextile opts capt return $ "<caption>" <> c <> "</caption>\n" let percent w = tshow (truncate (100*w) :: Integer) <> "%" let coltags = if all (== 0.0) widths then "" else T.unlines $ map (\w -> "<col width=\"" <> percent w <> "\" />") widths head' <- if all null headers then return "" else do hs <- tableRowToTextile opts alignStrings 0 headers return $ "<thead>\n" <> hs <> "\n</thead>\n" body' <- zipWithM (tableRowToTextile opts alignStrings) [1..] rows' return $ "<table>\n" <> captionDoc <> coltags <> head' <> "<tbody>\n" <> T.unlines body' <> "</tbody>\n</table>\n" blockToTextile opts x@(BulletList items) = do oldUseTags <- gets stUseTags let useTags = oldUseTags || not (isSimpleList x) if useTags then do contents <- withUseTags $ mapM (listItemToTextile opts) items return $ "<ul>\n" <> vcat contents <> "\n</ul>\n" else do modify $ \s -> s { stListLevel = stListLevel s <> "*" } level <- gets $ length . stListLevel contents <- mapM (listItemToTextile opts) items modify $ \s -> s { stListLevel = init (stListLevel s) } return $ vcat contents <> (if level > 1 then "" else "\n") blockToTextile opts x@(OrderedList attribs@(start, _, _) items) = do oldUseTags <- gets stUseTags let useTags = oldUseTags || not (isSimpleList x) if useTags then do contents <- withUseTags $ mapM (listItemToTextile opts) items return $ "<ol" <> listAttribsToString attribs <> ">\n" <> vcat contents <> "\n</ol>\n" else do modify $ \s -> s { stListLevel = stListLevel s <> "#" , stStartNum = if start > 1 then Just start else Nothing } level <- gets $ length . stListLevel contents <- mapM (listItemToTextile opts) items modify $ \s -> s { stListLevel = init (stListLevel s), stStartNum = Nothing } return $ vcat contents <> (if level > 1 then "" else "\n") blockToTextile opts (DefinitionList items) = do contents <- withUseTags $ mapM (definitionListItemToTextile opts) items return $ "<dl>\n" <> vcat contents <> "\n</dl>\n" blockToTextile opts (Figure attr (Caption _ caption) body) = do let startTag = render Nothing $ tagWithAttrs "figure" attr let endTag = "</figure>" let captionInlines = blocksToInlines caption captionMarkup <- if null captionInlines then return "" else ((<> "\n\n</figcaption>\n\n") . ("<figcaption>\n\n" <>)) <$> inlineListToTextile opts (blocksToInlines caption) contents <- blockListToTextile opts body return $ startTag <> "\n\n" <> captionMarkup <> contents <> "\n\n" <> endTag <> "\n" -- Auxiliary functions for lists: -- | Convert ordered list attributes to HTML attribute string listAttribsToString :: ListAttributes -> Text listAttribsToString (startnum, numstyle, _) = let numstyle' = camelCaseToHyphenated $ tshow numstyle in (if startnum /= 1 then " start=\"" <> tshow startnum <> "\"" else "") <> (if numstyle /= DefaultStyle then " style=\"list-style-type: " <> numstyle' <> ";\"" else "") -- | Convert bullet or ordered list item (list of blocks) to Textile. listItemToTextile :: PandocMonad m => WriterOptions -> [Block] -> TW m Text listItemToTextile opts items = do contents <- blockListToTextile opts items useTags <- gets stUseTags if useTags then return $ "<li>" <> contents <> "</li>" else do marker <- gets stListLevel mbstart <- gets stStartNum case mbstart of Just n -> do modify $ \s -> s{ stStartNum = Nothing } return $ T.pack marker <> tshow n <> " " <> contents Nothing -> return $ T.pack marker <> " " <> contents -- | Convert definition list item (label, list of blocks) to Textile. definitionListItemToTextile :: PandocMonad m => WriterOptions -> ([Inline],[[Block]]) -> TW m Text definitionListItemToTextile opts (label, items) = do labelText <- inlineListToTextile opts label contents <- mapM (blockListToTextile opts) items return $ "<dt>" <> labelText <> "</dt>\n" <> T.intercalate "\n" (map (\d -> "<dd>" <> d <> "</dd>") contents) -- | True if the list can be handled by simple wiki markup, False if HTML tags will be needed. isSimpleList :: Block -> Bool isSimpleList x = case x of BulletList items -> all isSimpleListItem items OrderedList (_, sty, _) items -> all isSimpleListItem items && sty `elem` [DefaultStyle, Decimal] _ -> False -- | True if list item can be handled with the simple wiki syntax. False if -- HTML tags will be needed. isSimpleListItem :: [Block] -> Bool isSimpleListItem [] = True isSimpleListItem [x] = case x of Plain _ -> True Para _ -> True BulletList _ -> isSimpleList x OrderedList _ _ -> isSimpleList x _ -> False isSimpleListItem [x, y] | isPlainOrPara x = case y of BulletList _ -> isSimpleList y OrderedList _ _ -> isSimpleList y _ -> False isSimpleListItem _ = False isPlainOrPara :: Block -> Bool isPlainOrPara (Plain _) = True isPlainOrPara (Para _) = True isPlainOrPara _ = False -- | Concatenates strings with line breaks between them. vcat :: [Text] -> Text vcat = T.intercalate "\n" -- Auxiliary functions for tables. (TODO: these are common to HTML, MediaWiki, -- and Textile writers, and should be abstracted out.) tableRowToTextile :: PandocMonad m => WriterOptions -> [Text] -> Int -> [[Block]] -> TW m Text tableRowToTextile opts alignStrings rownum cols' = do let celltype = if rownum == 0 then "th" else "td" let rowclass = case rownum of 0 -> "header" x | x `rem` 2 == 1 -> "odd" _ -> "even" cols'' <- zipWithM (\alignment item -> tableItemToTextile opts celltype alignment item) alignStrings cols' return $ "<tr class=\"" <> rowclass <> "\">\n" <> T.unlines cols'' <> "</tr>" alignmentToText :: Alignment -> Text alignmentToText alignment = case alignment of AlignLeft -> "left" AlignRight -> "right" AlignCenter -> "center" AlignDefault -> "left" tableItemToTextile :: PandocMonad m => WriterOptions -> Text -> Text -> [Block] -> TW m Text tableItemToTextile opts celltype align' item = do let mkcell x = "<" <> celltype <> " align=\"" <> align' <> "\">" <> x <> "</" <> celltype <> ">" contents <- blockListToTextile opts item return $ mkcell contents -- | Convert list of Pandoc block elements to Textile. blockListToTextile :: PandocMonad m => WriterOptions -- ^ Options -> [Block] -- ^ List of block elements -> TW m Text blockListToTextile opts blocks = vcat <$> mapM (blockToTextile opts) blocks -- | Convert list of Pandoc inline elements to Textile. inlineListToTextile :: PandocMonad m => WriterOptions -> [Inline] -> TW m Text inlineListToTextile opts lst = T.concat <$> mapM (inlineToTextile opts) lst -- | Convert Pandoc inline element to Textile. inlineToTextile :: PandocMonad m => WriterOptions -> Inline -> TW m Text inlineToTextile opts (Span _ lst) = inlineListToTextile opts lst inlineToTextile opts (Emph lst) = do contents <- inlineListToTextile opts lst return $ if T.any (== '_') contents then "<em>" <> contents <> "</em>" else "_" <> contents <> "_" inlineToTextile opts (Underline lst) = do contents <- inlineListToTextile opts lst return $ if T.any (== '+') contents then "<u>" <> contents <> "</u>" else "+" <> contents <> "+" inlineToTextile opts (Strong lst) = do contents <- inlineListToTextile opts lst return $ if T.any (== '*') contents then "<strong>" <> contents <> "</strong>" else "*" <> contents <> "*" inlineToTextile opts (Strikeout lst) = do contents <- inlineListToTextile opts lst return $ if T.any (== '-') contents then "<del>" <> contents <> "</del>" else "-" <> contents <> "-" inlineToTextile opts (Superscript lst) = do contents <- inlineListToTextile opts lst return $ if T.any (== '^') contents then "<sup>" <> contents <> "</sup>" else "[^" <> contents <> "^]" inlineToTextile opts (Subscript lst) = do contents <- inlineListToTextile opts lst return $ if T.any (== '~') contents then "<sub>" <> contents <> "</sub>" else "[~" <> contents <> "~]" inlineToTextile opts (SmallCaps lst) = inlineListToTextile opts lst inlineToTextile opts (Quoted SingleQuote lst) = do contents <- inlineListToTextile opts lst return $ "'" <> contents <> "'" inlineToTextile opts (Quoted DoubleQuote lst) = do contents <- inlineListToTextile opts lst return $ "\"" <> contents <> "\"" inlineToTextile opts (Cite _ lst) = inlineListToTextile opts lst inlineToTextile _ (Code _ str) = return $ if T.any (== '@') str then "<tt>" <> escapeStringForXML str <> "</tt>" else "@" <> str <> "@" inlineToTextile _ (Str str) = return $ escapeTextForTextile str inlineToTextile _ (Math _ str) = return $ "<span class=\"math\">" <> escapeStringForXML str <> "</span>" inlineToTextile opts il@(RawInline f str) | f == Format "html" || f == Format "textile" = return str | (f == Format "latex" || f == Format "tex") && isEnabled Ext_raw_tex opts = return str | otherwise = do report $ InlineNotRendered il return "" inlineToTextile _ LineBreak = return "\n" inlineToTextile _ SoftBreak = return " " inlineToTextile _ Space = return " " inlineToTextile opts (Link (_, cls, _) txt (src, _)) = do label <- case txt of [Code _ s] | s == src -> return "$" [Str s] | s == src -> return "$" _ -> inlineListToTextile opts txt let classes = if null cls || cls == ["uri"] && label == "$" then "" else "(" <> T.unwords cls <> ")" return $ "\"" <> classes <> label <> "\":" <> src inlineToTextile opts (Image attr@(_, cls, _) alt (source, tit)) = do alt' <- inlineListToTextile opts alt let txt = if T.null tit then if T.null alt' then "" else "(" <> alt' <> ")" else "(" <> tit <> ")" classes = if null cls then "" else "(" <> T.unwords cls <> ")" showDim dir = let toCss str = Just $ tshow dir <> ":" <> str <> ";" in case dimension dir attr of Just (Percent a) -> toCss $ tshow (Percent a) Just dim -> toCss $ showInPixel opts dim <> "px" Nothing -> Nothing styles = case (showDim Width, showDim Height) of (Just w, Just h) -> "{" <> w <> h <> "}" (Just w, Nothing) -> "{" <> w <> "height:auto;}" (Nothing, Just h) -> "{" <> "width:auto;" <> h <> "}" (Nothing, Nothing) -> "" return $ "!" <> classes <> styles <> source <> txt <> "!" inlineToTextile opts (Note contents) = do curNotes <- gets stNotes let newnum = length curNotes + 1 contents' <- blockListToTextile opts contents let thisnote = "fn" <> tshow newnum <> ". " <> contents' <> "\n" modify $ \s -> s { stNotes = thisnote : curNotes } return $ "[" <> tshow newnum <> "]" -- note - may not work for notes with multiple blocks �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/Typst.hs�������������������������������������������������������0000644�0000000�0000000�00000030471�07346545000�017215� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE BangPatterns #-} {-# LANGUAGE ScopedTypeVariables #-} {- | Module : Text.Pandoc.Writers.Typst Copyright : Copyright (C) 2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable Conversion of 'Pandoc' format into Typst markup (<https://typst.app>). -} module Text.Pandoc.Writers.Typst ( writeTypst ) where import Text.Pandoc.Definition import Text.Pandoc.Class.PandocMonad ( PandocMonad ) import Text.Pandoc.Options ( WriterOptions(..), WrapOption(..), isEnabled ) import Data.Text (Text) import Data.List (intercalate, intersperse) import qualified Data.Text as T import Control.Monad.State ( StateT, evalStateT, gets, modify ) import Text.Pandoc.Writers.Shared ( metaToContext, defField, resetField, toLegacyTable, lookupMetaString ) import Text.Pandoc.Shared (isTightList, orderedListMarkers) import Text.Pandoc.Writers.Math (convertMath) import qualified Text.TeXMath as TM import Text.DocLayout import Text.DocTemplates (renderTemplate) import Text.Pandoc.Extensions (Extension(..)) import Text.Collate.Lang (Lang(..), parseLang) -- | Convert Pandoc to Typst. writeTypst :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeTypst options document = evalStateT (pandocToTypst options document) WriterState{ stOptions = options, stEscapeContext = NormalContext } data EscapeContext = NormalContext | TermContext deriving (Show, Eq) data WriterState = WriterState { stOptions :: WriterOptions, stEscapeContext :: EscapeContext } type TW m = StateT WriterState m pandocToTypst :: PandocMonad m => WriterOptions -> Pandoc -> TW m Text pandocToTypst options (Pandoc meta blocks) = do let colwidth = if writerWrapText options == WrapAuto then Just $ writerColumns options else Nothing metadata <- metaToContext options blocksToTypst (fmap chomp . inlinesToTypst) meta main <- blocksToTypst blocks let context = defField "body" main $ defField "toc" (writerTableOfContents options) $ (if isEnabled Ext_citations options then defField "citations" True else id) $ (case lookupMetaString "lang" meta of "" -> id lang -> case parseLang lang of Left _ -> id Right l -> resetField "lang" (langLanguage l) . maybe id (resetField "region") (langRegion l)) $ (if writerNumberSections options then defField "numbering" ("1.1.1.1.1" :: Text) else id) $ metadata return $ render colwidth $ case writerTemplate options of Nothing -> main Just tpl -> renderTemplate tpl context blocksToTypst :: PandocMonad m => [Block] -> TW m (Doc Text) blocksToTypst blocks = vcat <$> mapM blockToTypst blocks blockToTypst :: PandocMonad m => Block -> TW m (Doc Text) blockToTypst block = case block of Plain inlines -> inlinesToTypst inlines Para inlines -> ($$ blankline) <$> inlinesToTypst inlines Header level (ident,_,_) inlines -> do contents <- inlinesToTypst inlines let lab = toLabel ident return $ literal (T.replicate level "=") <> space <> contents <> cr <> lab RawBlock fmt str -> case fmt of Format "typst" -> return $ literal str _ -> return mempty CodeBlock (_,cls,_) code -> do let go :: Char -> (Int, Int) -> (Int, Int) go '`' (longest, current) = let !new = current + 1 in (max longest new, new) go _ (longest, _) = (longest, 0) let (longestBacktickSequence, _) = T.foldr go (0,0) code let fence = literal $ T.replicate (max 3 (longestBacktickSequence + 1)) "`" let lang = case cls of (cl:_) -> literal cl _ -> mempty return $ fence <> lang <> cr <> literal code <> cr <> fence <> blankline LineBlock lns -> do contents <- inlinesToTypst (intercalate [LineBreak] lns) return $ contents <> blankline BlockQuote blocks -> do contents <- blocksToTypst blocks return $ "#blockquote[" $$ chomp contents $$ "]" $$ blankline HorizontalRule -> return $ blankline <> "#horizontalrule" <> blankline OrderedList attribs items -> do let addBlock = case attribs of (1, DefaultStyle, DefaultDelim) -> id (1, Decimal, Period) -> id (start, sty, delim) -> \x -> "#block[" $$ ("#set enum" <> parens ( "numbering: " <> doubleQuoted (head (orderedListMarkers (1, sty, delim))) <> ", start: " <> text (show start) )) $$ x $$ "]" items' <- mapM (fmap chomp . listItemToTypst 2 ("+")) items return $ addBlock (if isTightList items then vcat items' else vsep items') $$ blankline BulletList items -> do items' <- mapM (fmap chomp . listItemToTypst 2 "-") items return $ (if isTightList items then vcat items' else vsep items') $$ blankline DefinitionList items -> ($$ blankline) . vsep <$> mapM defListItemToTypst items Table (ident,_,_) blkCapt colspecs thead tbodies tfoot -> do let (caption, aligns, _, headers, rows) = toLegacyTable blkCapt colspecs thead tbodies tfoot let numcols = length aligns headers' <- mapM blocksToTypst headers rows' <- mapM (mapM blocksToTypst) rows capt' <- if null caption then return mempty else do captcontents <- inlinesToTypst caption return $ "#align(center, " <> brackets captcontents <> ")" let lab = toLabel ident let formatalign AlignLeft = "left," formatalign AlignRight = "right," formatalign AlignCenter = "center," formatalign AlignDefault = "auto," let alignarray = parens $ mconcat $ map formatalign aligns return $ "#align(center)[#table(" $$ nest 2 ( "columns: " <> text (show numcols) <> "," -- auto $$ "align: (col, row) => " <> alignarray <> ".at(col)," $$ "inset: 6pt" <> "," $$ hsep (map ((<>",") . brackets) headers') $$ vcat (map (\x -> brackets x <> ",") (concat rows')) ) $$ ")" $$ capt' $$ lab $$ "]" $$ blankline Figure (ident,_,_) (Caption _mbshort capt) blocks -> do caption <- blocksToTypst capt contents <- blocksToTypst blocks let lab = toLabel ident return $ "#figure(" <> nest 2 (brackets contents <> "," <> cr <> ("caption: [" $$ nest 2 caption $$ "]")) $$ ")" $$ lab $$ blankline Div (ident,_,_) blocks -> do let lab = toLabel ident contents <- blocksToTypst blocks return $ lab $$ contents defListItemToTypst :: PandocMonad m => ([Inline], [[Block]]) -> TW m (Doc Text) defListItemToTypst (term, defns) = do modify $ \st -> st{ stEscapeContext = TermContext } term' <- inlinesToTypst term modify $ \st -> st{ stEscapeContext = NormalContext } defns' <- mapM blocksToTypst defns return $ nowrap ("/ " <> term' <> ": " <> "#block[") $$ chomp (vcat defns') $$ "]" listItemToTypst :: PandocMonad m => Int -> Doc Text -> [Block] -> TW m (Doc Text) listItemToTypst ind marker blocks = do contents <- blocksToTypst blocks return $ hang ind (marker <> space) contents inlinesToTypst :: PandocMonad m => [Inline] -> TW m (Doc Text) inlinesToTypst ils = hcat <$> mapM inlineToTypst ils inlineToTypst :: PandocMonad m => Inline -> TW m (Doc Text) inlineToTypst inline = case inline of Str txt -> do context <- gets stEscapeContext return $ literal $ escapeTypst context txt Space -> return space SoftBreak -> do wrapText <- gets $ writerWrapText . stOptions case wrapText of WrapPreserve -> return cr WrapAuto -> return space WrapNone -> return space LineBreak -> return (space <> "\\" <> cr) Math mathType str -> do res <- convertMath TM.writeTypst mathType str case res of Left il -> inlineToTypst il Right r -> case mathType of InlineMath -> return $ "$" <> literal r <> "$" DisplayMath -> return $ "$ " <> literal r <> " $" Code (_,cls,_) code -> return $ case cls of (lang:_) -> "#raw(lang:" <> doubleQuoted lang <> ", " <> doubleQuoted code <> ")" _ | T.any (=='`') code -> "#raw(" <> doubleQuoted code <> ")" | otherwise -> "`" <> literal code <> "`" RawInline fmt str -> case fmt of Format "typst" -> return $ literal str _ -> return mempty Strikeout inlines -> textstyle "#strike" inlines Emph inlines -> textstyle "#emph" inlines Underline inlines -> textstyle "#underline" inlines Strong inlines -> textstyle "#strong" inlines Superscript inlines -> textstyle "#super" inlines Subscript inlines -> textstyle "#sub" inlines SmallCaps inlines -> textstyle "#smallcaps" inlines Span (ident,_,_) inlines -> do let lab = toLabel ident (lab $$) <$> inlinesToTypst inlines Quoted quoteType inlines -> do let q = case quoteType of DoubleQuote -> literal "\"" SingleQuote -> literal "'" contents <- inlinesToTypst inlines return $ q <> contents <> q Cite citations inlines -> do opts <- gets stOptions if isEnabled Ext_citations opts then return $ -- Note: this loses locators, prefix, suffix "#cite" <> parens (mconcat $ intersperse ", " $ map (doubleQuoted . citationId) citations) else inlinesToTypst inlines Link _attrs inlines (src,_tit) -> do contents <- inlinesToTypst inlines let dest = case T.uncons src of Just ('#', ident) -> "<" <> literal ident <> ">" _ -> doubleQuoted src return $ "#link" <> parens dest <> if render Nothing contents == src then mempty else nowrap $ brackets contents Image (_,_,kvs) _inlines (src,_tit) -> do let width' = maybe mempty ((", width: " <>) . literal) $ lookup "width" kvs let height' = maybe mempty ((", height: " <>) . literal) $ lookup "height" kvs return $ "#image(" <> doubleQuoted src <> width' <> height' <> ")" Note blocks -> do contents <- blocksToTypst blocks return $ "#footnote" <> brackets (chomp contents) textstyle :: PandocMonad m => Doc Text -> [Inline] -> TW m (Doc Text) textstyle s inlines = (s <>) . brackets <$> inlinesToTypst inlines escapeTypst :: EscapeContext -> Text -> Text escapeTypst context t = if T.any needsEscape t then T.concatMap escapeChar t else t where escapeChar c | needsEscape c = "\\" <> T.singleton c | otherwise = T.singleton c needsEscape '[' = True needsEscape ']' = True needsEscape '#' = True needsEscape '<' = True needsEscape '>' = True needsEscape '@' = True needsEscape '$' = True needsEscape '\\' = True needsEscape '\'' = True needsEscape '"' = True needsEscape '`' = True needsEscape '=' = True needsEscape '_' = True needsEscape '*' = True needsEscape ':' = context == TermContext needsEscape _ = False toLabel :: Text -> Doc Text toLabel ident = if T.null ident then mempty else "<" <> literal ident <> ">" doubleQuoted :: Text -> Doc Text doubleQuoted = doubleQuotes . literal . escape where escape = T.concatMap escapeChar escapeChar '\\' = "\\\\" escapeChar '"' = "\\\"" escapeChar c = T.singleton c �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/XWiki.hs�������������������������������������������������������0000644�0000000�0000000�00000024206�07346545000�017124� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {- Copyright (C) 2008-2023 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -} {- | Module : Text.Pandoc.Writers.XWiki Copyright : Copyright (C) 2008-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : Derek Chen-Becker <dchenbecker@gmail.com> Stability : alpha Portability : portable Conversion of 'Pandoc' documents to XWiki markup. XWiki: <http://www.xwiki.org/> XWiki Syntax: <http://www.xwiki.org/xwiki/bin/view/Documentation/UserGuide/Features/XWikiSyntax/> -} module Text.Pandoc.Writers.XWiki ( writeXWiki ) where import Control.Monad.Reader (ReaderT, asks, local, runReaderT) import qualified Data.Set as Set import qualified Data.Text as Text import Data.Text (Text, intercalate, replace, split) import Text.Pandoc.Class.PandocMonad (PandocMonad, report) import Text.Pandoc.Definition import Text.Pandoc.Logging import Text.Pandoc.Options import Text.Pandoc.Shared import Text.Pandoc.URI import Text.Pandoc.Writers.MediaWiki (highlightingLangs) import Text.Pandoc.Templates (renderTemplate) import Text.Pandoc.Writers.Shared (defField, metaToContext, toLegacyTable) import Text.DocLayout (render, literal) newtype WriterState = WriterState { listLevel :: Text -- String at the beginning of items } type XWikiReader m = ReaderT WriterState m -- | Convert Pandoc to XWiki. writeXWiki :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeXWiki opts (Pandoc meta blocks) = do let env = WriterState { listLevel = "" } metadata <- metaToContext opts (fmap (literal . trimr) . (\bs -> runReaderT (blockListToXWiki bs) env)) (fmap (literal . trimr) . (\is -> runReaderT (inlineListToXWiki is) env)) meta body <- runReaderT (blockListToXWiki blocks) env let context = defField "body" body $ defField "toc" (writerTableOfContents opts) metadata return $ case writerTemplate opts of Just tpl -> render Nothing $ renderTemplate tpl context Nothing -> body -- | Concatenates strings with line breaks between them. vcat :: [Text] -> Text vcat = intercalate "\n" -- If an id is provided, we can generate an anchor using the id macro -- https://extensions.xwiki.org/xwiki/bin/view/Extension/Id%20Macro genAnchor :: Text -> Text genAnchor id' = if Text.null id' then "" else "{{id name=\"" <> id' <> "\" /}}" blockListToXWiki :: PandocMonad m => [Block] -> XWikiReader m Text blockListToXWiki blocks = vcat <$> mapM blockToXWiki blocks blockToXWiki :: PandocMonad m => Block -> XWikiReader m Text blockToXWiki (Div (id', _, _) blocks) = do content <- blockListToXWiki blocks return $ genAnchor id' <> content blockToXWiki (Plain inlines) = inlineListToXWiki inlines blockToXWiki (Para inlines) = do contents <- inlineListToXWiki inlines return $ contents <> "\n" blockToXWiki (LineBlock lns) = blockToXWiki $ linesToPara lns blockToXWiki b@(RawBlock f str) | f == Format "xwiki" = return str | otherwise = "" <$ report (BlockNotRendered b) blockToXWiki HorizontalRule = return "\n----\n" blockToXWiki (Header level (id', _, _) inlines) = do contents <- inlineListToXWiki inlines let eqs = Text.replicate level "=" return $ eqs <> " " <> contents <> " " <> genAnchor id' <> eqs <> "\n" -- XWiki doesn't appear to differentiate between inline and block-form code, so we delegate -- We do amend the text to ensure that the code markers are on their own lines, since this is a block blockToXWiki (CodeBlock attrs str) = do contents <- inlineToXWiki (Code attrs ("\n" <> str <> "\n")) return $ "\n" <> contents <> "\n" blockToXWiki (BlockQuote blocks) = do blockText <- blockListToXWiki blocks let quoteLines = split (== '\n') blockText let prefixed = map (">" <>) quoteLines return $ vcat prefixed blockToXWiki (BulletList contents) = blockToXWikiList "*" contents blockToXWiki (OrderedList _ contents) = blockToXWikiList "1" contents blockToXWiki (DefinitionList items) = do lev <- asks listLevel contents <- local (\s -> s { listLevel = listLevel s <> ";" }) $ mapM definitionListItemToMediaWiki items return $ vcat contents <> if Text.null lev then "\n" else "" -- Create a group according to -- https://www.xwiki.org/xwiki/bin/view/Documentation/UserGuide/Features/XWikiSyntax/?syntax=2.1§ion=Groups blockToXWiki (Figure attr _ body) = do content <- blockToXWiki $ Div attr body return $ intercalate content ["(((\n", "\n)))"] -- TODO: support more features blockToXWiki (Table _ blkCapt specs thead tbody tfoot) = do let (_, _, _, headers, rows') = toLegacyTable blkCapt specs thead tbody tfoot headers' <- mapM (tableCellXWiki True) $ take (length specs) $ headers ++ repeat [] otherRows <- mapM formRow rows' return $ Text.unlines (Text.unwords headers':otherRows) formRow :: PandocMonad m => [[Block]] -> XWikiReader m Text formRow row = do cellStrings <- mapM (tableCellXWiki False) row return $ Text.unwords cellStrings tableCellXWiki :: PandocMonad m => Bool -> [Block] -> XWikiReader m Text tableCellXWiki isHeader cell = do contents <- blockListToXWiki cell let isMultiline = (length . split (== '\n')) contents > 1 let contents' = intercalate contents $ if isMultiline then ["(((", ")))"] else [mempty, mempty] let cellBorder = if isHeader then "|=" else "|" return $ cellBorder <> contents' inlineListToXWiki :: PandocMonad m => [Inline] -> XWikiReader m Text inlineListToXWiki lst = mconcat <$> mapM inlineToXWiki lst inlineToXWiki :: PandocMonad m => Inline -> XWikiReader m Text inlineToXWiki (Str str) = return $ escapeXWikiString str inlineToXWiki Space = return " " -- Special syntax for XWiki 2.0. This won't break table cells inlineToXWiki LineBreak = return "\\\\" inlineToXWiki SoftBreak = return " " inlineToXWiki (Emph lst) = do contents <- inlineListToXWiki lst return $ "//" <> contents <> "//" inlineToXWiki (Underline lst) = do contents <- inlineListToXWiki lst return $ "__" <> contents <> "__" inlineToXWiki (Strong lst) = do contents <- inlineListToXWiki lst return $ "**" <> contents <> "**" inlineToXWiki (Strikeout lst) = do contents <- inlineListToXWiki lst return $ "--" <> contents <> "--" inlineToXWiki (Superscript lst) = do contents <- inlineListToXWiki lst return $ "^^" <> contents <> "^^" inlineToXWiki (Subscript lst) = do contents <- inlineListToXWiki lst return $ ",," <> contents <> ",," -- TODO: Not supported. Maybe escape to HTML? inlineToXWiki (SmallCaps lst) = inlineListToXWiki lst inlineToXWiki (Quoted SingleQuote lst) = do contents <- inlineListToXWiki lst return $ "‘" <> contents <> "’" inlineToXWiki (Quoted DoubleQuote lst) = do contents <- inlineListToXWiki lst return $ "“" <> contents <> "”" inlineToXWiki (Code (_,classes,_) contents) = do let at = Set.fromList classes `Set.intersection` highlightingLangs return $ case Set.toList at of [] -> "{{code}}" <> contents <> "{{/code}}" (l:_) -> "{{code language=\"" <> l <> "\"}}" <> contents <> "{{/code}}" inlineToXWiki (Cite _ lst) = inlineListToXWiki lst -- FIXME: optionally support this (plugin?) inlineToXWiki (Math _ str) = return $ "{{formula}}" <> str <> "{{/formula}}" inlineToXWiki il@(RawInline frmt str) | frmt == Format "xwiki" = return str | otherwise = "" <$ report (InlineNotRendered il) -- TODO: Handle anchors inlineToXWiki (Link (id', _, _) txt (src, _)) = do label <- inlineListToXWiki txt case txt of [Str s] | isURI src && escapeURI s == src -> return $ src <> genAnchor id' _ -> return $ "[[" <> label <> ">>" <> src <> "]]" <> genAnchor id' inlineToXWiki (Image _ alt (source, tit)) = do alt' <- inlineListToXWiki alt let params = Text.unwords $ filter (not . Text.null) [ if Text.null alt' then "" else "alt=\"" <> alt' <> "\"", if Text.null tit then "" else "title=\"" <> tit <> "\"" ] return $ "[[image:" <> source <> (if Text.null params then "" else "||" <> params) <> "]]" inlineToXWiki (Note contents) = do contents' <- blockListToXWiki contents return $ "{{footnote}}" <> Text.strip contents' <> "{{/footnote}}" -- TODO: support attrs other than id (anchor) inlineToXWiki (Span (id', _, _) contents) = do contents' <- inlineListToXWiki contents return $ genAnchor id' <> contents' -- Utility method since (for now) all lists are handled the same way blockToXWikiList :: PandocMonad m => Text -> [[Block]] -> XWikiReader m Text blockToXWikiList marker contents = do lev <- asks listLevel contents' <- local (\s -> s { listLevel = listLevel s <> marker } ) $ mapM listItemToXWiki contents return $ vcat contents' <> if Text.null lev then "\n" else "" listItemToXWiki :: PandocMonad m => [Block] -> XWikiReader m Text listItemToXWiki contents = do marker <- asks listLevel contents' <- blockListToXWiki contents return $ marker <> ". " <> Text.strip contents' -- | Convert definition list item (label, list of blocks) to MediaWiki. definitionListItemToMediaWiki :: PandocMonad m => ([Inline],[[Block]]) -> XWikiReader m Text definitionListItemToMediaWiki (label, items) = do labelText <- inlineListToXWiki label contents <- mapM blockListToXWiki items marker <- asks listLevel return $ marker <> " " <> labelText <> "\n" <> intercalate "\n" (map (\d -> Text.init marker <> ": " <> d) contents) -- Escape the escape character, as well as formatting pairs escapeXWikiString :: Text -> Text escapeXWikiString s = foldr (uncurry replace) s $ zip ["--", "**", "//", "^^", ",,", "~"] ["~-~-", "~*~*", "~/~/", "~^~^", "~,~,", "~~"] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/Writers/ZimWiki.hs�����������������������������������������������������0000644�0000000�0000000�00000035040�07346545000�017452� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.Writers.ZimWiki Copyright : © 2008-2023 John MacFarlane, 2017-2019 Alex Ivkin License : GNU GPL, version 2 or above Maintainer : Alex Ivkin <alex@ivkin.net> Stability : beta Portability : portable Conversion of 'Pandoc' documents to ZimWiki markup. http://zim-wiki.org/manual/Help/Wiki_Syntax.html -} module Text.Pandoc.Writers.ZimWiki ( writeZimWiki ) where import Control.Monad (zipWithM) import Control.Monad.State.Strict (StateT, evalStateT, gets, modify) import Data.Default (Default (..)) import Data.List (transpose) import Data.List.NonEmpty (nonEmpty) import qualified Data.Map as Map import Text.DocLayout (render, literal) import Data.Maybe (fromMaybe) import Data.Text (Text) import qualified Data.Text as T import Text.Pandoc.Class.PandocMonad (PandocMonad, report) import Text.Pandoc.Definition import Text.Pandoc.ImageSize import Text.Pandoc.Logging import Text.Pandoc.Options (WrapOption (..), WriterOptions (writerTableOfContents, writerTemplate, writerWrapText)) import Text.Pandoc.Shared (figureDiv, linesToPara, removeFormatting, trimr) import Text.Pandoc.URI (escapeURI, isURI) import Text.Pandoc.Templates (renderTemplate) import Text.Pandoc.Writers.Shared (defField, metaToContext, toLegacyTable) data WriterState = WriterState { stIndent :: Text, -- Indent after the marker at the beginning of list items stInTable :: Bool, -- Inside a table stInLink :: Bool -- Inside a link description } instance Default WriterState where def = WriterState { stIndent = "", stInTable = False, stInLink = False } type ZW = StateT WriterState -- | Convert Pandoc to ZimWiki. writeZimWiki :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeZimWiki opts document = evalStateT (pandocToZimWiki opts document) def -- | Return ZimWiki representation of document. pandocToZimWiki :: PandocMonad m => WriterOptions -> Pandoc -> ZW m Text pandocToZimWiki opts (Pandoc meta blocks) = do metadata <- metaToContext opts (fmap (literal . trimr) . blockListToZimWiki opts) (fmap (literal . trimr) . inlineListToZimWiki opts) meta main <- blockListToZimWiki opts blocks --let header = "Content-Type: text/x-zim-wiki\nWiki-Format: zim 0.4\n" let context = defField "body" main $ defField "toc" (writerTableOfContents opts) metadata return $ case writerTemplate opts of Just tpl -> render Nothing $ renderTemplate tpl context Nothing -> main -- | Escape special characters for ZimWiki. escapeText :: Text -> Text escapeText = T.replace "__" "''__''" . T.replace "**" "''**''" . T.replace "~~" "''~~''" . T.replace "//" "''//''" -- | Convert Pandoc block element to ZimWiki. blockToZimWiki :: PandocMonad m => WriterOptions -> Block -> ZW m Text blockToZimWiki opts (Div _attrs bs) = do contents <- blockListToZimWiki opts bs return $ contents <> "\n" blockToZimWiki opts (Plain inlines) = inlineListToZimWiki opts inlines blockToZimWiki opts (Para inlines) = do indent <- gets stIndent -- useTags <- gets stUseTags contents <- inlineListToZimWiki opts inlines return $ contents <> if T.null indent then "\n" else "" blockToZimWiki opts (LineBlock lns) = blockToZimWiki opts $ linesToPara lns blockToZimWiki opts b@(RawBlock f str) | f == Format "zimwiki" = return str | f == Format "html" = indentFromHTML opts str | otherwise = do report $ BlockNotRendered b return "" blockToZimWiki _ HorizontalRule = return "\n----\n" blockToZimWiki opts (Header level _ inlines) = do contents <- inlineListToZimWiki opts inlines let eqs = T.replicate ( 7 - level ) "=" return $ eqs <> " " <> contents <> " " <> eqs <> "\n" blockToZimWiki _ (CodeBlock (_,classes,_) str) = do -- Remap languages into the gtksourceview2 convention that ZimWiki source code plugin is using let langal = [("javascript", "js"), ("bash", "sh"), ("winbatch", "dosbatch")] let langmap = Map.fromList langal return $ case classes of [] -> "'''\n" <> cleanupCode str <> "\n'''\n" -- turn no lang block into a quote block (x:_) -> "{{{code: lang=\"" <> fromMaybe x (Map.lookup x langmap) <> "\" linenumbers=\"True\"\n" <> str <> "\n}}}\n" -- for zim's code plugin, go verbatim on the lang spec blockToZimWiki opts (BlockQuote blocks) = do contents <- blockListToZimWiki opts blocks return $ T.unlines $ map ("> " <>) $ T.lines contents blockToZimWiki opts (Table _ blkCapt specs thead tbody tfoot) = do let (capt, aligns, _, headers, rows) = toLegacyTable blkCapt specs thead tbody tfoot captionDoc <- if null capt then return "" else do c <- inlineListToZimWiki opts capt return $ "" <> c <> "\n" headers' <- if all null headers then zipWithM (tableItemToZimWiki opts) aligns (head rows) else mapM (inlineListToZimWiki opts . removeFormatting)headers -- emphasis, links etc. are not allowed in table headers rows' <- mapM (zipWithM (tableItemToZimWiki opts) aligns) rows let widths = map (maybe 0 maximum . nonEmpty . map T.length) $ transpose (headers':rows') let padTo (width, al) s = case width - T.length s of x | x > 0 -> if al == AlignLeft || al == AlignDefault then s <> T.replicate x " " else if al == AlignRight then T.replicate x " " <> s else T.replicate (x `div` 2) " " <> s <> T.replicate (x - x `div` 2) " " | otherwise -> s let borderCell (width, al) _ | al == AlignLeft = ":"<> T.replicate (width-1) "-" | al == AlignDefault = T.replicate width "-" | al == AlignRight = T.replicate (width-1) "-" <> ":" | otherwise = ":" <> T.replicate (width-2) "-" <> ":" let underheader = "|" <> T.intercalate "|" (zipWith borderCell (zip widths aligns) headers') <> "|" let renderRow cells = "|" <> T.intercalate "|" (zipWith padTo (zip widths aligns) cells) <> "|" return $ captionDoc <> (if null headers' then "" else renderRow headers' <> "\n") <> underheader <> "\n" <> T.unlines (map renderRow rows') blockToZimWiki opts (BulletList items) = do contents <- mapM (listItemToZimWiki opts) items indent <- gets stIndent return $ vcat contents <> if T.null indent then "\n" else "" blockToZimWiki opts (OrderedList _ items) = do contents <- zipWithM (orderedListItemToZimWiki opts) [1..] items indent <- gets stIndent return $ vcat contents <> if T.null indent then "\n" else "" blockToZimWiki opts (DefinitionList items) = do contents <- mapM (definitionListItemToZimWiki opts) items return $ vcat contents blockToZimWiki opts (Figure attr capt body) = do blockToZimWiki opts (figureDiv attr capt body) definitionListItemToZimWiki :: PandocMonad m => WriterOptions -> ([Inline],[[Block]]) -> ZW m Text definitionListItemToZimWiki opts (label, items) = do labelText <- inlineListToZimWiki opts label contents <- mapM (blockListToZimWiki opts) items indent <- gets stIndent return $ indent <> "* **" <> labelText <> "** " <> T.concat contents -- Auxiliary functions for lists: indentFromHTML :: PandocMonad m => WriterOptions -> Text -> ZW m Text indentFromHTML _ str = do indent <- gets stIndent if "<li>" `T.isInfixOf` str then return indent else if "</li>" `T.isInfixOf` str then return "\n" else if "<li value=" `T.isInfixOf` str then return "" else if "<ol>" `T.isInfixOf` str then do let olcount=countSubStrs "<ol>" str modify $ \s -> s { stIndent = stIndent s <> T.replicate olcount "\t" } return "" else if "</ol>" `T.isInfixOf` str then do let olcount=countSubStrs "/<ol>" str modify $ \s -> s{ stIndent = T.drop olcount (stIndent s) } return "" else return "" countSubStrs :: Text -> Text -> Int countSubStrs sub str = length $ T.breakOnAll sub str cleanupCode :: Text -> Text cleanupCode = T.replace "<nowiki>" "" . T.replace "</nowiki>" "" vcat :: [Text] -> Text vcat = T.intercalate "\n" -- | Convert bullet list item (list of blocks) to ZimWiki. listItemToZimWiki :: PandocMonad m => WriterOptions -> [Block] -> ZW m Text listItemToZimWiki opts items = do indent <- gets stIndent modify $ \s -> s { stIndent = indent <> "\t" } contents <- blockListToZimWiki opts items modify $ \s -> s{ stIndent = indent } return $ indent <> "* " <> contents -- | Convert ordered list item (list of blocks) to ZimWiki. orderedListItemToZimWiki :: PandocMonad m => WriterOptions -> Int -> [Block] -> ZW m Text orderedListItemToZimWiki opts itemnum items = do indent <- gets stIndent modify $ \s -> s { stIndent = indent <> "\t" } contents <- blockListToZimWiki opts items modify $ \s -> s{ stIndent = indent } return $ indent <> T.pack (show itemnum) <> ". " <> contents -- Auxiliary functions for tables: tableItemToZimWiki :: PandocMonad m => WriterOptions -> Alignment -> [Block] -> ZW m Text tableItemToZimWiki opts align' item = do let mkcell x = (if align' == AlignRight || align' == AlignCenter then " " else "") <> x <> (if align' == AlignLeft || align' == AlignCenter then " " else "") modify $ \s -> s { stInTable = True } contents <- blockListToZimWiki opts item modify $ \s -> s { stInTable = False } return $ mkcell contents -- | Convert list of Pandoc block elements to ZimWiki. blockListToZimWiki :: PandocMonad m => WriterOptions -> [Block] -> ZW m Text blockListToZimWiki opts blocks = vcat <$> mapM (blockToZimWiki opts) blocks -- | Convert list of Pandoc inline elements to ZimWiki. inlineListToZimWiki :: PandocMonad m => WriterOptions -> [Inline] -> ZW m Text inlineListToZimWiki opts lst = T.concat <$> mapM (inlineToZimWiki opts) lst -- | Convert Pandoc inline element to ZimWiki. inlineToZimWiki :: PandocMonad m => WriterOptions -> Inline -> ZW m Text inlineToZimWiki opts (Emph lst) = do contents <- inlineListToZimWiki opts lst return $ "//" <> contents <> "//" inlineToZimWiki opts (Underline lst) = do contents <- inlineListToZimWiki opts lst return $ "__" <> contents <> "__" inlineToZimWiki opts (Strong lst) = do contents <- inlineListToZimWiki opts lst return $ "**" <> contents <> "**" inlineToZimWiki opts (Strikeout lst) = do contents <- inlineListToZimWiki opts lst return $ "~~" <> contents <> "~~" inlineToZimWiki opts (Superscript lst) = do contents <- inlineListToZimWiki opts lst return $ "^{" <> contents <> "}" inlineToZimWiki opts (Subscript lst) = do contents <- inlineListToZimWiki opts lst return $ "_{" <> contents <> "}" inlineToZimWiki opts (Quoted SingleQuote lst) = do contents <- inlineListToZimWiki opts lst return $ "\8216" <> contents <> "\8217" inlineToZimWiki opts (Quoted DoubleQuote lst) = do contents <- inlineListToZimWiki opts lst return $ "\8220" <> contents <> "\8221" inlineToZimWiki opts (Span _attrs ils) = inlineListToZimWiki opts ils inlineToZimWiki opts (SmallCaps lst) = inlineListToZimWiki opts lst inlineToZimWiki opts (Cite _ lst) = inlineListToZimWiki opts lst inlineToZimWiki _ (Code _ str) = return $ "''" <> str <> "''" inlineToZimWiki _ (Str str) = do inTable <- gets stInTable inLink <- gets stInLink if inTable then return $ T.replace "|" "\\|" . escapeText $ str else if inLink then return str else return $ escapeText str inlineToZimWiki _ (Math mathType str) = return $ delim <> str <> delim -- note: str should NOT be escaped where delim = case mathType of DisplayMath -> "$$" InlineMath -> "$" -- f == Format "html" = return $ "<html>" <> str <> "</html>" inlineToZimWiki opts il@(RawInline f str) | f == Format "zimwiki" = return str | f == Format "html" = indentFromHTML opts str | otherwise = do report $ InlineNotRendered il return "" inlineToZimWiki _ LineBreak = do inTable <- gets stInTable if inTable then return "\\n" else return "\n" inlineToZimWiki opts SoftBreak = case writerWrapText opts of WrapNone -> return " " WrapAuto -> return " " WrapPreserve -> return "\n" inlineToZimWiki _ Space = return " " inlineToZimWiki opts (Link _ txt (src, _)) = do inTable <- gets stInTable modify $ \s -> s { stInLink = True } label <- inlineListToZimWiki opts $ removeFormatting txt -- zim does not allow formatting in link text, it takes the text verbatim, no need to escape it modify $ \s -> s { stInLink = False } let label'= if inTable then "" -- no label is allowed in a table else "|"<>label case txt of [Str s] | "mailto:" `T.isPrefixOf` src -> return $ "<" <> s <> ">" | escapeURI s == src -> return src _ -> if isURI src then return $ "[[" <> src <> label' <> "]]" else return $ "[[" <> src' <> label' <> "]]" where -- with leading / it's a link to a help page src' = fromMaybe src $ T.stripPrefix "/" src inlineToZimWiki opts (Image attr alt (source, tit)) = do alt' <- inlineListToZimWiki opts alt inTable <- gets stInTable let txt = case (tit, alt, inTable) of ("",[], _) -> "" ("", _, False ) -> "|" <> alt' (_ , _, False ) -> "|" <> tit (_ , _, True ) -> "" return $ "{{" <> source <> imageDims opts attr <> txt <> "}}" inlineToZimWiki opts (Note contents) = do -- no concept of notes in zim wiki, use a text block contents' <- blockListToZimWiki opts contents return $ " **{Note:** " <> trimr contents' <> "**}**" imageDims :: WriterOptions -> Attr -> Text imageDims opts attr = go (toPx $ dimension Width attr) (toPx $ dimension Height attr) where toPx = fmap (showInPixel opts) . checkPct checkPct (Just (Percent _)) = Nothing checkPct maybeDim = maybeDim go (Just w) Nothing = "?" <> w go (Just w) (Just h) = "?" <> w <> "x" <> h go Nothing (Just h) = "?0x" <> h go Nothing Nothing = "" ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/src/Text/Pandoc/XML.hs�����������������������������������������������������������������0000644�0000000�0000000�00000026536�07346545000�015102� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.XML Copyright : Copyright (C) 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable Functions for escaping and formatting XML. -} module Text.Pandoc.XML ( escapeCharForXML, escapeStringForXML, escapeNCName, inTags, selfClosingTag, inTagsSimple, inTagsIndented, toEntities, toHtml5Entities, fromEntities, lookupEntity, html4Attributes, html5Attributes, rdfaAttributes ) where import Data.Char (isAscii, isSpace, ord, isLetter, isDigit) import Data.Text (Text) import qualified Data.Text as T import Commonmark.Entity (lookupEntity) import Text.HTML.TagSoup.Entity (htmlEntities) import Text.DocLayout ( ($$), char, hcat, nest, text, Doc, HasChars ) import Text.Printf (printf) import qualified Data.Map as M import Data.String ( IsString ) import qualified Data.Set as Set -- | Escape one character as needed for XML. escapeCharForXML :: Char -> Text escapeCharForXML x = case x of '&' -> "&" '<' -> "<" '>' -> ">" '"' -> """ c -> T.singleton c -- | Escape string as needed for XML. Entity references are not preserved. escapeStringForXML :: Text -> Text escapeStringForXML = T.concatMap escapeCharForXML . T.filter isLegalXMLChar where isLegalXMLChar c = c == '\t' || c == '\n' || c == '\r' || (c >= '\x20' && c <= '\xD7FF') || (c >= '\xE000' && c <= '\xFFFD') || (c >= '\x10000' && c <= '\x10FFFF') -- see https://www.w3.org/TR/xml/#charsets -- | Escape newline characters as escapeNls :: Text -> Text escapeNls = T.concatMap $ \case '\n' -> " " c -> T.singleton c -- | Return a text object with a string of formatted XML attributes. attributeList :: (HasChars a, IsString a) => [(Text, Text)] -> Doc a attributeList = hcat . map (\(a, b) -> text (T.unpack $ " " <> escapeStringForXML a <> "=\"" <> escapeNls (escapeStringForXML b) <> "\"")) -- | Put the supplied contents between start and end tags of tagType, -- with specified attributes and (if specified) indentation. inTags :: (HasChars a, IsString a) => Bool -> Text -> [(Text, Text)] -> Doc a -> Doc a inTags isIndented tagType attribs contents = let openTag = char '<' <> text (T.unpack tagType) <> attributeList attribs <> char '>' closeTag = text "</" <> text (T.unpack tagType) <> char '>' in if isIndented then openTag $$ nest 2 contents $$ closeTag else openTag <> contents <> closeTag -- | Return a self-closing tag of tagType with specified attributes selfClosingTag :: (HasChars a, IsString a) => Text -> [(Text, Text)] -> Doc a selfClosingTag tagType attribs = char '<' <> text (T.unpack tagType) <> attributeList attribs <> text " />" -- | Put the supplied contents between start and end tags of tagType. inTagsSimple :: (HasChars a, IsString a) => Text -> Doc a -> Doc a inTagsSimple tagType = inTags False tagType [] -- | Put the supplied contents in indented block btw start and end tags. inTagsIndented :: (HasChars a, IsString a) => Text -> Doc a -> Doc a inTagsIndented tagType = inTags True tagType [] -- | Escape all non-ascii characters using numerical entities. toEntities :: Text -> Text toEntities = T.concatMap go where go c | isAscii c = T.singleton c | otherwise = T.pack (printf "&#x%X;" (ord c)) -- | Escape all non-ascii characters using HTML5 entities, falling -- back to numerical entities. toHtml5Entities :: Text -> Text toHtml5Entities = T.concatMap go where go c | isAscii c = T.singleton c | otherwise = case M.lookup c html5EntityMap of Just t -> T.singleton '&' <> t <> T.singleton ';' Nothing -> T.pack ("&#" ++ show (ord c) ++ ";") html5EntityMap :: M.Map Char Text html5EntityMap = foldr go mempty htmlEntities where go (ent, s) entmap = case s of [c] -> M.insertWith (\new old -> if T.length new > T.length old then old else new) c ent' entmap where ent' = T.takeWhile (/=';') (T.pack ent) _ -> entmap -- | Converts a string into an NCName, i.e., an XML name without colons. -- Disallowed characters are escaped using @ux%x@, where @%x@ is the -- hexadecimal unicode identifier of the escaped character. escapeNCName :: Text -> Text escapeNCName t = case T.uncons t of Nothing -> T.empty Just (c, cs) -> escapeStartChar c <> T.concatMap escapeNCNameChar cs where escapeStartChar :: Char -> Text escapeStartChar c = if isLetter c || c == '_' then T.singleton c else escapeChar c escapeNCNameChar :: Char -> Text escapeNCNameChar c = if isNCNameChar c then T.singleton c else escapeChar c isNCNameChar :: Char -> Bool isNCNameChar c = isLetter c || c `elem` ("_-.·" :: String) || isDigit c || '\x0300' <= c && c <= '\x036f' || '\x203f' <= c && c <= '\x2040' escapeChar :: Char -> Text escapeChar = T.pack . printf "U%04X" . ord -- | Unescapes XML entities fromEntities :: Text -> Text fromEntities t = let (x, y) = T.break (== '&') t in if T.null y then t else x <> let (ent, rest) = T.break (\c -> isSpace c || c == ';') y rest' = case T.uncons rest of Just (';',ys) -> ys _ -> rest ent' = T.drop 1 ent <> ";" in case lookupEntity ent' of Just c -> c <> fromEntities rest' Nothing -> ent <> fromEntities rest html5Attributes :: Set.Set Text html5Attributes = Set.fromList [ "abbr" , "accept" , "accept-charset" , "accesskey" , "action" , "allow" , "allowfullscreen" , "allowpaymentrequest" , "allowusermedia" , "alt" , "as" , "async" , "autocapitalize" , "autocomplete" , "autofocus" , "autoplay" , "charset" , "checked" , "cite" , "class" , "color" , "cols" , "colspan" , "content" , "contenteditable" , "controls" , "coords" , "crossorigin" , "data" , "datetime" , "decoding" , "default" , "defer" , "dir" , "dirname" , "disabled" , "download" , "draggable" , "enctype" , "enterkeyhint" , "for" , "form" , "formaction" , "formenctype" , "formmethod" , "formnovalidate" , "formtarget" , "headers" , "height" , "hidden" , "high" , "href" , "hreflang" , "http-equiv" , "id" , "imagesizes" , "imagesrcset" , "inputmode" , "integrity" , "is" , "ismap" , "itemid" , "itemprop" , "itemref" , "itemscope" , "itemtype" , "kind" , "label" , "lang" , "list" , "loading" , "loop" , "low" , "manifest" , "max" , "maxlength" , "media" , "method" , "min" , "minlength" , "multiple" , "muted" , "name" , "nomodule" , "nonce" , "novalidate" , "onabort" , "onafterprint" , "onauxclick" , "onbeforeprint" , "onbeforeunload" , "onblur" , "oncancel" , "oncanplay" , "oncanplaythrough" , "onchange" , "onclick" , "onclose" , "oncontextmenu" , "oncopy" , "oncuechange" , "oncut" , "ondblclick" , "ondrag" , "ondragend" , "ondragenter" , "ondragexit" , "ondragleave" , "ondragover" , "ondragstart" , "ondrop" , "ondurationchange" , "onemptied" , "onended" , "onerror" , "onfocus" , "onhashchange" , "oninput" , "oninvalid" , "onkeydown" , "onkeypress" , "onkeyup" , "onlanguagechange" , "onload" , "onloadeddata" , "onloadedmetadata" , "onloadend" , "onloadstart" , "onmessage" , "onmessageerror" , "onmousedown" , "onmouseenter" , "onmouseleave" , "onmousemove" , "onmouseout" , "onmouseover" , "onmouseup" , "onoffline" , "ononline" , "onpagehide" , "onpageshow" , "onpaste" , "onpause" , "onplay" , "onplaying" , "onpopstate" , "onprogress" , "onratechange" , "onrejectionhandled" , "onreset" , "onresize" , "onscroll" , "onsecuritypolicyviolation" , "onseeked" , "onseeking" , "onselect" , "onstalled" , "onstorage" , "onsubmit" , "onsuspend" , "ontimeupdate" , "ontoggle" , "onunhandledrejection" , "onunload" , "onvolumechange" , "onwaiting" , "onwheel" , "open" , "optimum" , "pattern" , "ping" , "placeholder" , "playsinline" , "poster" , "preload" , "readonly" , "referrerpolicy" , "rel" , "required" , "reversed" , "role" , "rows" , "rowspan" , "sandbox" , "scope" , "selected" , "shape" , "size" , "sizes" , "slot" , "span" , "spellcheck" , "src" , "srcdoc" , "srclang" , "srcset" , "start" , "step" , "style" , "tabindex" , "target" , "title" , "translate" , "type" , "typemustmatch" , "updateviacache" , "usemap" , "value" , "width" , "workertype" , "wrap" ] -- See https://en.wikipedia.org/wiki/RDFa, https://www.w3.org/TR/rdfa-primer/ rdfaAttributes :: Set.Set Text rdfaAttributes = Set.fromList [ "about" , "rel" , "rev" , "src" , "href" , "resource" , "property" , "content" , "datatype" , "typeof" , "vocab" , "prefix" ] html4Attributes :: Set.Set Text html4Attributes = Set.fromList [ "abbr" , "accept" , "accept-charset" , "accesskey" , "action" , "align" , "alink" , "alt" , "archive" , "axis" , "background" , "bgcolor" , "border" , "cellpadding" , "cellspacing" , "char" , "charoff" , "charset" , "checked" , "cite" , "class" , "classid" , "clear" , "code" , "codebase" , "codetype" , "color" , "cols" , "colspan" , "compact" , "content" , "coords" , "data" , "datetime" , "declare" , "defer" , "dir" , "disabled" , "enctype" , "face" , "for" , "frame" , "frameborder" , "headers" , "height" , "href" , "hreflang" , "hspace" , "http-equiv" , "id" , "ismap" , "label" , "lang" , "language" , "link" , "longdesc" , "marginheight" , "marginwidth" , "maxlength" , "media" , "method" , "multiple" , "name" , "nohref" , "noresize" , "noshade" , "nowrap" , "object" , "onblur" , "onchange" , "onclick" , "ondblclick" , "onfocus" , "onkeydown" , "onkeypress" , "onkeyup" , "onload" , "onmousedown" , "onmousemove" , "onmouseout" , "onmouseover" , "onmouseup" , "onreset" , "onselect" , "onsubmit" , "onunload" , "profile" , "prompt" , "readonly" , "rel" , "rev" , "rows" , "rowspan" , "rules" , "scheme" , "scope" , "scrolling" , "selected" , "shape" , "size" , "span" , "src" , "standby" , "start" , "style" , "summary" , "tabindex" , "target" , "text" , "title" , "usemap" , "valign" , "value" , "valuetype" , "version" , "vlink" , "vspace" , "width" ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/test/Tests/����������������������������������������������������������������������������0000755�0000000�0000000�00000000000�07346545000�013234� 5����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/test/Tests/Command.hs������������������������������������������������������������������0000644�0000000�0000000�00000011765�07346545000�015160� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE BangPatterns #-} {- | Module : Tests.Command Copyright : © 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley@edu> Stability : alpha Portability : portable Run commands, and test results, defined in markdown files. A command test is a code block with the following format: > ``` > % pandoc -f markdown -t latex > *hi* > ^D > \emph{hi} > ``` - The first line, after "%", should contain a command to run. - Then comes zero or more lines of text which will be passed to the command as stdin. - The stdin terminates with a line containing "^D". - The following lines are typically the expected output on stdout. - If any output on stderr is expected, it should come first and each stderr line should be preceded by the string "2> ". - If a nonzero exit status is expected, the last line should contain "=> " followed by the exit status. -} module Tests.Command (tests) where import Data.Maybe (fromMaybe) import Data.Algorithm.Diff import System.Environment (getExecutablePath) import qualified Data.ByteString as BS import qualified Data.Text as T import Data.List (isSuffixOf) import System.Directory import System.Exit import System.FilePath ((</>)) import System.IO.Unsafe (unsafePerformIO) import System.Process import Test.Tasty import Test.Tasty.HUnit import Test.Tasty.Golden.Advanced (goldenTest) import Tests.Helpers import Text.Pandoc import qualified Text.Pandoc.UTF8 as UTF8 -- | Run a test with and return output. execTest :: String -- ^ Path to test executable -> String -- ^ Shell command -> String -- ^ Input text -> IO (ExitCode, String) -- ^ Exit code and actual output execTest testExePath cmd inp = do env' <- setupEnvironment testExePath let pr = (shell (pandocToEmulate True cmd)){ env = Just env' } (!ec, out', err') <- readCreateProcessWithExitCode pr inp let err = unlines . map ("2> " ++) . lines $ err' -- filter \r so the tests will work on Windows machines let out'' = filter (/= '\r') $ err ++ out' let out = out'' ++ case ec of ExitFailure !n -> "=> " ++ show n ++ "\n" ExitSuccess -> "" return (ec, out) pandocToEmulate :: Bool -> String -> String pandocToEmulate True ('p':'a':'n':'d':'o':'c':cs) = "test-pandoc --emulate" ++ pandocToEmulate False cs pandocToEmulate False ('|':' ':'p':'a':'n':'d':'o':'c':cs) = "| " ++ "test-pandoc --emulate" ++ pandocToEmulate False cs pandocToEmulate _ (c:cs) = c : pandocToEmulate False cs pandocToEmulate _ [] = [] tests :: TestTree {-# NOINLINE tests #-} tests = unsafePerformIO $ do files <- filter (".md" `isSuffixOf`) <$> getDirectoryContents "command" testExePath <- getExecutablePath let cmds = map (extractCommandTest testExePath) files return $ testGroup "Command:" cmds isCodeBlock :: Block -> Bool isCodeBlock (CodeBlock _ _) = True isCodeBlock _ = False extractCode :: Block -> String extractCode (CodeBlock _ code) = T.unpack code extractCode _ = "" dropPercent :: String -> Maybe String dropPercent ('%':xs) = Just $ dropWhile (== ' ') xs dropPercent _ = Nothing runCommandTest :: FilePath -> FilePath -> Int -> String -> TestTree runCommandTest testExePath fp num code = do goldenTest testname getExpected getActual compareValues' updateGolden where testname = "#" <> show num codelines = lines code (continuations, r1) = span ("\\" `isSuffixOf`) codelines cmd = fromMaybe (error "Command test line does not begin with %") (dropPercent (unwords (map init continuations ++ take 1 r1))) r2 = drop 1 r1 (inplines, r3) = break (=="^D") r2 normlines = takeWhile (/=".") (drop 1 r3) input = unlines inplines norm = unlines normlines getExpected = return norm getActual = snd <$> execTest testExePath cmd input compareValues' expected actual | actual == expected = return Nothing | otherwise = return $ Just $ "--- test/command/" ++ fp ++ "\n+++ " ++ cmd ++ "\n" ++ showDiff (1,1) (getDiff (lines actual) (lines expected)) updateGolden newnorm = do let fp' = "command" </> fp raw <- UTF8.readFile fp' let cmdline = "% " <> cmd let x = cmdline <> "\n" <> input <> "^D\n" <> norm let y = cmdline <> "\n" <> input <> "^D\n" <> newnorm let updated = T.replace (T.pack x) (T.pack y) raw UTF8.writeFile fp' updated extractCommandTest :: FilePath -> FilePath -> TestTree extractCommandTest testExePath fp = unsafePerformIO $ do contents <- UTF8.toText <$> BS.readFile ("command" </> fp) Pandoc _ blocks <- runIOorExplode (readMarkdown def{ readerExtensions = pandocExtensions } contents) let codeblocks = map extractCode $ filter isCodeBlock blocks let cases = zipWith (runCommandTest testExePath fp) [1..] codeblocks return $ testGroup fp $ if null cases then [testCase "!!" $ assertFailure "No command tests defined"] else cases �����������pandoc-3.1.3/test/Tests/Helpers.hs������������������������������������������������������������������0000644�0000000�0000000�00000013371�07346545000�015177� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE CPP #-} {-# LANGUAGE TupleSections #-} {-# LANGUAGE FlexibleInstances #-} {- | Module : Tests.Helpers Copyright : © 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley@edu> Stability : alpha Portability : portable Utility functions for the test suite. -} module Tests.Helpers ( test , TestResult(..) , setupEnvironment , showDiff , testGolden , (=?>) , purely , ToString(..) , ToPandoc(..) ) where import System.FilePath import Data.Algorithm.Diff import qualified Data.Map as M import qualified Text.Pandoc.UTF8 as UTF8 import Data.Text (Text, unpack) import qualified Data.Text as T import System.Exit import qualified System.Environment as Env import Test.Tasty import Test.Tasty.Golden.Advanced (goldenTest) import Test.Tasty.HUnit import Text.Pandoc.Builder (Blocks, Inlines, doc, plain) import qualified Text.Pandoc.Builder as B import Text.Pandoc.Class import Text.Pandoc.Definition import Text.Pandoc.Options import Text.Pandoc.Shared (trimr) import Text.Pandoc.Writers.Native (writeNative) import Text.Printf test :: (ToString a, ToString b, ToString c, HasCallStack) => (a -> b) -- ^ function to test -> String -- ^ name of test case -> (a, c) -- ^ (input, expected value) -> TestTree test fn name (input, expected) = testCase name' $ assertBool msg (actual' == expected') where msg = nl ++ dashes "input" ++ nl ++ input' ++ nl ++ dashes "result" ++ nl ++ unlines (map vividize diff) ++ dashes "" nl = "\n" name' = if length name > 54 then take 52 name ++ "..." -- avoid wide output else name input' = toString input actual' = lines $ toString $ fn input expected' = lines $ toString expected diff = getDiff expected' actual' dashes "" = replicate 72 '-' dashes x = replicate (72 - length x - 5) '-' ++ " " ++ x ++ " ---" testGolden :: TestName -> FilePath -> FilePath -> (Text -> IO Text) -> TestTree testGolden name expectedPath inputPath fn = goldenTest name (UTF8.readFile expectedPath) (UTF8.readFile inputPath >>= fn) compareVals (UTF8.writeFile expectedPath) where compareVals expected actual | expected == actual = return Nothing | otherwise = return $ Just $ "\n--- " ++ expectedPath ++ "\n+++\n" ++ showDiff (1,1) (getDiff (lines . filter (/='\r') $ T.unpack actual) (lines . filter (/='\r') $ T.unpack expected)) -- | Set up environment for pandoc command tests. setupEnvironment :: FilePath -> IO [(String, String)] setupEnvironment testExePath = do mldpath <- Env.lookupEnv "LD_LIBRARY_PATH" mdyldpath <- Env.lookupEnv "DYLD_LIBRARY_PATH" mpdd <- Env.lookupEnv "pandoc_datadir" -- Note that Cabal sets the pandoc_datadir environment variable -- to point to the source directory, since otherwise getDataFilename -- will look in the data directory into which pandoc will be installed -- (but has not yet been). So when we spawn a new process with -- pandoc, we need to make sure this environment variable is set. return $ ("PATH",takeDirectory testExePath) : ("TMP",".") : ("LANG","en_US.UTF-8") : ("HOME", "./") : maybe [] ((:[]) . ("pandoc_datadir",)) mpdd ++ maybe [] ((:[]) . ("LD_LIBRARY_PATH",)) mldpath ++ maybe [] ((:[]) . ("DYLD_LIBRARY_PATH",)) mdyldpath data TestResult = TestPassed | TestError ExitCode | TestFailed String FilePath [Diff String] deriving (Eq) instance Show TestResult where show TestPassed = "PASSED" show (TestError ec) = "ERROR " ++ show ec show (TestFailed cmd file d) = '\n' : dash ++ "\n--- " ++ file ++ "\n+++ " ++ cmd ++ "\n" ++ showDiff (1,1) d ++ dash where dash = replicate 72 '-' showDiff :: (Int,Int) -> [Diff String] -> String showDiff _ [] = "" showDiff (l,r) (First ln : ds) = printf "+%4d " l ++ ln ++ "\n" ++ showDiff (l+1,r) ds showDiff (l,r) (Second ln : ds) = printf "-%4d " r ++ ln ++ "\n" ++ showDiff (l,r+1) ds showDiff (l,r) (Both _ _ : ds) = showDiff (l+1,r+1) ds vividize :: Diff String -> String vividize (Both s _) = " " ++ s vividize (First s) = "- " ++ s vividize (Second s) = "+ " ++ s purely :: (b -> PandocPure a) -> b -> a purely f = either (error . show) id . runPure . f infix 5 =?> (=?>) :: a -> b -> (a,b) x =?> y = (x, y) class ToString a where toString :: a -> String instance ToString Pandoc where toString d = unpack $ purely (writeNative def{ writerTemplate = s }) $ toPandoc d where s = case d of (Pandoc (Meta m) _) | M.null m -> Nothing | otherwise -> Just mempty -- need this to get meta output instance ToString Blocks where toString = unpack . purely (writeNative def) . toPandoc instance ToString [Block] where toString = toString . B.fromList instance ToString Block where toString = toString . B.singleton instance ToString Inlines where toString = unpack . trimr . purely (writeNative def) . toPandoc instance ToString String where toString = id instance ToString Text where toString = unpack class ToPandoc a where toPandoc :: a -> Pandoc instance ToPandoc Pandoc where toPandoc = id instance ToPandoc Blocks where toPandoc = doc instance ToPandoc Inlines where toPandoc = doc . plain �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/test/Tests/Old.hs����������������������������������������������������������������������0000644�0000000�0000000�00000034074�07346545000�014316� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{- | Module : Tests.Old Copyright : © 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley@edu> Stability : alpha Portability : portable "Old" style tests (comparing output to golden files). -} module Tests.Old (tests) where import Data.Algorithm.Diff import System.Exit import System.FilePath ((<.>), (</>)) import System.Environment (getExecutablePath) import Text.Pandoc.Process (pipeProcess) import Test.Tasty (TestTree, testGroup) import Test.Tasty.Golden.Advanced (goldenTest) import Tests.Helpers hiding (test) import qualified Text.Pandoc.UTF8 as UTF8 import qualified Data.Text as T tests :: FilePath -> [TestTree] tests pandocPath = [ testGroup "markdown" [ testGroup "writer" $ writerTests' "markdown" ++ lhsWriterTests' "markdown" , testGroup "reader" [ test' "basic" ["-r", "markdown", "-w", "native", "-s"] "testsuite.txt" "testsuite.native" , test' "tables" ["-r", "markdown", "-w", "native", "--columns=80"] "tables.txt" "tables.native" , test' "pipe tables" ["-r", "markdown", "-w", "native", "--columns=80"] "pipe-tables.txt" "pipe-tables.native" , test' "more" ["-r", "markdown", "-w", "native", "-s"] "markdown-reader-more.txt" "markdown-reader-more.native" , lhsReaderTest' "markdown+lhs" ] , testGroup "citations" [ test' "citations" ["-r", "markdown", "-w", "native"] "markdown-citations.txt" "markdown-citations.native" ] ] , testGroup "rst" [ testGroup "writer" (writerTests' "rst" ++ lhsWriterTests' "rst") , testGroup "reader" [ test' "basic" ["-r", "rst+smart", "-w", "native", "-s", "--columns=80"] "rst-reader.rst" "rst-reader.native" , test' "tables" ["-r", "rst", "-w", "native", "--columns=80"] "tables.rst" "tables-rstsubset.native" , lhsReaderTest' "rst+lhs" ] ] , testGroup "latex" [ testGroup "writer" (extWriterTests' "latex" ++ lhsWriterTests' "latex") , testGroup "reader" [ test' "basic" ["-r", "latex+raw_tex", "-w", "native", "-s"] "latex-reader.latex" "latex-reader.native" , lhsReaderTest' "latex+lhs" ] ] , testGroup "html" [ testGroup "writer" $ mconcat [ extWriterTests' "html4" , extWriterTests' "html5" , lhsWriterTests' "html" ] , test' "reader" ["-r", "html", "-w", "native", "-s"] "html-reader.html" "html-reader.native" ] , testGroup "s5" [ s5WriterTest' "basic" ["-s"] "s5" , s5WriterTest' "fancy" ["-s","--mathjax","-i"] "s5" , s5WriterTest' "fragment" [] "html4" , s5WriterTest' "inserts" ["-s", "-H", "insert", "-B", "insert", "-A", "insert", "-c", "main.css"] "html4" ] , testGroup "textile" [ testGroup "writer" $ writerTests' "textile" , test' "reader" ["-r", "textile", "-w", "native", "-s"] "textile-reader.textile" "textile-reader.native" ] , testGroup "docbook" [ testGroup "writer" $ writerTests' "docbook4" , test' "reader" ["-r", "docbook", "-w", "native", "-s"] "docbook-reader.docbook" "docbook-reader.native" , test' "reader" ["-r", "docbook", "-w", "native", "-s"] "docbook-chapter.docbook" "docbook-chapter.native" , test' "reader" ["-r", "docbook", "-w", "native", "-s"] "docbook-xref.docbook" "docbook-xref.native" ] , testGroup "docbook5" [ testGroup "writer" $ writerTests' "docbook5" ] , testGroup "jats" [ testGroup "writer" [ testGroup "jats_archiving" $ extWriterTests' "jats_archiving" , testGroup "jats_articleauthoring" $ writerTests' "jats_articleauthoring" , testGroup "jats_publishing" $ writerTests' "jats_publishing" ] , test' "reader" ["-r", "jats", "-w", "native", "-s"] "jats-reader.xml" "jats-reader.native" ] , testGroup "jira" [ testGroup "writer" $ writerTests' "jira" , test' "reader" ["-r", "jira", "-w", "native", "-s"] "jira-reader.jira" "jira-reader.native" ] , testGroup "native" [ testGroup "writer" $ writerTests' "native" , test' "reader" ["-r", "native", "-w", "native", "-s"] "testsuite.native" "testsuite.native" ] , testGroup "fb2" [ fb2WriterTest' "basic" [] "fb2/basic.markdown" "fb2/basic.fb2" , fb2WriterTest' "titles" [] "fb2/titles.markdown" "fb2/titles.fb2" , fb2WriterTest' "images" [] "fb2/images.markdown" "fb2/images.fb2" , fb2WriterTest' "images-embedded" [] "fb2/images-embedded.html" "fb2/images-embedded.fb2" , fb2WriterTest' "math" [] "fb2/math.markdown" "fb2/math.fb2" , fb2WriterTest' "meta" [] "fb2/meta.markdown" "fb2/meta.fb2" , fb2WriterTest' "tables" [] "tables.native" "tables.fb2" , fb2WriterTest' "testsuite" [] "testsuite.native" "writer.fb2" ] , testGroup "mediawiki" [ testGroup "writer" $ mconcat [ writerTests' "mediawiki" , extWriterTests' "mediawiki" ] , test' "reader" ["-r", "mediawiki", "-w", "native", "-s"] "mediawiki-reader.wiki" "mediawiki-reader.native" ] , testGroup "vimwiki" [ test' "reader" ["-r", "vimwiki", "-w", "native", "-s"] "vimwiki-reader.wiki" "vimwiki-reader.native" ] , testGroup "dokuwiki" [ testGroup "writer" $ writerTests' "dokuwiki" , test' "inline_formatting" ["-r", "native", "-w", "dokuwiki", "-s"] "dokuwiki_inline_formatting.native" "dokuwiki_inline_formatting.dokuwiki" , test' "multiblock table" ["-r", "native", "-w", "dokuwiki", "-s"] "dokuwiki_multiblock_table.native" "dokuwiki_multiblock_table.dokuwiki" , test' "external images" ["-r", "native", "-w", "dokuwiki", "-s"] "dokuwiki_external_images.native" "dokuwiki_external_images.dokuwiki" ] , testGroup "opml" [ test' "basic" ["-r", "native", "-w", "opml", "--columns=80", "-s"] "testsuite.native" "writer.opml" , test' "reader" ["-r", "opml", "-w", "native", "-s"] "opml-reader.opml" "opml-reader.native" ] , testGroup "haddock" [ testGroup "writer" $ writerTests' "haddock" , test' "reader" ["-r", "haddock", "-w", "native", "-s"] "haddock-reader.haddock" "haddock-reader.native" ] , testGroup "txt2tags" [ test' "reader" ["-r", "t2t", "-w", "native", "-s"] "txt2tags.t2t" "txt2tags.native" ] , testGroup "epub" [ test' "features" ["-r", "epub", "-w", "native"] "epub/features.epub" "epub/features.native" , test' "wasteland" ["-r", "epub", "-w", "native"] "epub/wasteland.epub" "epub/wasteland.native" , test' "formatting" ["-r", "epub", "-w", "native"] "epub/formatting.epub" "epub/formatting.native" ] , testGroup "twiki" [ test' "reader" ["-r", "twiki", "-w", "native", "-s"] "twiki-reader.twiki" "twiki-reader.native" ] , testGroup "tikiwiki" [ test' "reader" ["-r", "tikiwiki", "-w", "native", "-s"] "tikiwiki-reader.tikiwiki" "tikiwiki-reader.native" ] , testGroup "other writers" $ map (\f -> testGroup f $ writerTests' f) [ "opendocument" , "context" , "texinfo", "icml", "tei" , "man" , "plain" , "asciidoc", "asciidoctor" , "xwiki", "zimwiki" ] , testGroup "writers-lang-and-dir" [ test' "latex" ["-f", "native", "-t", "latex", "-s"] "writers-lang-and-dir.native" "writers-lang-and-dir.latex" , test' "context" ["-f", "native", "-t", "context", "-s"] "writers-lang-and-dir.native" "writers-lang-and-dir.context" ] , testGroup "muse" [ testGroup "writer" $ writerTests' "muse" ] , testGroup "ms" [ testGroup "writer" $ writerTests' "ms" ] , testGroup "typst" [ testGroup "writer" $ writerTests' "typst" ] , testGroup "creole" [ test' "reader" ["-r", "creole", "-w", "native", "-s"] "creole-reader.txt" "creole-reader.native" ] , testGroup "man" [ test' "reader" ["-r", "man", "-w", "native", "-s"] "man-reader.man" "man-reader.native" ] , testGroup "org" [ test' "reader" ["-r", "org", "-w", "native", "-s"] "org-select-tags.org" "org-select-tags.native" , testGroup "writer" $ writerTests' "org" ] , testGroup "rtf" [ testGroup "writer" $ writerTests' "rtf" ] , testGroup "endnotexml" [ test' "reader" ["-r", "endnotexml", "-w", "native", "-s"] "endnotexml-reader.xml" "endnotexml-reader.native" ] , testGroup "ipynb" [ test' "reader" ["-f", "ipynb-raw_html-raw_tex+raw_attribute", "-t", "native", "-s"] "ipynb/simple.ipynb" "ipynb/simple.out.native" , test' "writer" ["-f", "native", "--markdown-headings=setext", "-t", "ipynb-raw_html-raw_tex+raw_attribute", "-s"] "ipynb/simple.in.native" "ipynb/simple.ipynb" , test' "reader" ["-t", "native", "-f", "ipynb", "--ipynb-output=all"] "ipynb/mime.ipynb" "ipynb/mime.native" , test' "writer" ["-f", "native", "-t", "ipynb", "--wrap=preserve"] "ipynb/mime.native" "ipynb/mime.out.ipynb" , test' "reader" ["-f", "ipynb", "-t", "html"] "ipynb/rank.ipynb" "ipynb/rank.out.html" ] , testGroup "markua" [ testGroup "writer" $ writerTests' "markua"] ] where test' = test pandocPath writerTests' = writerTests pandocPath s5WriterTest' = s5WriterTest pandocPath fb2WriterTest' = fb2WriterTest pandocPath lhsWriterTests' = lhsWriterTests pandocPath lhsReaderTest' = lhsReaderTest pandocPath extWriterTests' = extendedWriterTests pandocPath -- makes sure file is fully closed after reading readFile' :: FilePath -> IO String readFile' f = do s <- UTF8.readFile f return $! (T.length s `seq` T.unpack s) lhsWriterTests :: FilePath -> String -> [TestTree] lhsWriterTests pandocPath format = [ t "lhs to normal" format , t "lhs to lhs" (format ++ "+lhs") ] where t n f = test pandocPath n ["--wrap=preserve", "-r", "native", "-s", "--markdown-headings=setext", "-w", f] "lhs-test.native" ("lhs-test" <.> f) lhsReaderTest :: FilePath -> String -> TestTree lhsReaderTest pandocPath format = test pandocPath "lhs" ["-r", format, "-w", "native"] ("lhs-test" <.> format) norm where norm = if format == "markdown+lhs" then "lhs-test-markdown.native" else "lhs-test.native" writerTests :: FilePath -> String -> [TestTree] writerTests pandocPath format = [ test pandocPath "basic" (opts ++ ["-s"]) "testsuite.native" ("writer" <.> format) , test pandocPath "tables" opts "tables.native" ("tables" <.> format) ] where opts = ["-r", "native", "-w", format, "--columns=80", "--variable", "pandoc-version="] extendedWriterTests :: FilePath -> String -> [TestTree] extendedWriterTests pandocPath format = writerTests pandocPath format ++ let testForTable name = test pandocPath (name ++ " table") opts ("tables" </> name <.> "native") ("tables" </> name <.> format) in map testForTable ["planets", "nordics", "students"] where opts = ["-r", "native", "-w", format, "--columns=80", "--variable", "pandoc-version="] s5WriterTest :: FilePath -> String -> [String] -> String -> TestTree s5WriterTest pandocPath modifier opts format = test pandocPath (format ++ " writer (" ++ modifier ++ ")") (["-r", "native", "-w", format] ++ opts) "s5.native" ("s5-" ++ modifier <.> "html") fb2WriterTest :: FilePath -> String -> [String] -> String -> String -> TestTree fb2WriterTest pandocPath title opts inputfile normfile = testWithNormalize (ignoreBinary . formatXML) pandocPath title (["-t", "fb2"]++opts) inputfile normfile where formatXML xml = splitTags $ zip xml (drop 1 xml) splitTags [] = [] splitTags [end] = [fst end, snd end] splitTags (('>','<'):rest) = ">\n" ++ splitTags rest splitTags ((c,_):rest) = c : splitTags rest ignoreBinary = unlines . filter (not . startsWith "<binary ") . lines startsWith tag str = all (uncurry (==)) $ zip tag str -- | Run a test without normalize function, return True if test passed. test :: FilePath -- ^ Path of pandoc executable -> String -- ^ Title of test -> [String] -- ^ Options to pass to pandoc -> String -- ^ Input filepath -> FilePath -- ^ Norm (for test results) filepath -> TestTree test = testWithNormalize id -- | Run a test with normalize function, return True if test passed. testWithNormalize :: (String -> String) -- ^ Normalize function for output -> FilePath -- ^ Path to pandoc executable -> String -- ^ Title of test -> [String] -- ^ Options to pass to pandoc -> String -- ^ Input filepath -> FilePath -- ^ Norm (for test results) filepath -> TestTree testWithNormalize normalizer pandocPath testname opts inp norm = goldenTest testname getExpected getActual (compareValues norm options) updateGolden where getExpected = normalizer <$> readFile' norm getActual = do env <- setupEnvironment pandocPath (ec, out) <- pipeProcess (Just env) pandocPath ("--emulate":options) mempty if ec == ExitSuccess then return $ filter (/='\r') . normalizer $ UTF8.toStringLazy out -- filter \r so the tests will work on Windows machines else fail $ "Pandoc failed with error code " ++ show ec updateGolden = UTF8.writeFile norm . T.pack options = ["--quiet"] ++ [inp] ++ opts compareValues :: FilePath -> [String] -> String -> String -> IO (Maybe String) compareValues norm options expected actual = do testExePath <- getExecutablePath let cmd = testExePath ++ " --emulate " ++ unwords options let dash = replicate 72 '-' let diff = getDiff (lines actual) (lines expected) if expected == actual then return Nothing else return $ Just $ '\n' : dash ++ "\n--- " ++ norm ++ "\n+++ " ++ cmd ++ "\n" ++ showDiff (1,1) diff ++ dash ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/test/Tests/Readers/��������������������������������������������������������������������0000755�0000000�0000000�00000000000�07346545000�014621� 5����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/test/Tests/Readers/Creole.hs�����������������������������������������������������������0000644�0000000�0000000�00000033167�07346545000�016400� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {- | Module : Tests.Readers.Creole Copyright : © 2017 Sascha Wilde 2017-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : Sascha Wilde <wilde@sha-bang.de> Stability : alpha Portability : portable Tests for the creole reader. -} module Tests.Readers.Creole (tests) where import Data.Text (Text) import qualified Data.Text as T import Test.Tasty import Test.Tasty.HUnit (HasCallStack) import Tests.Helpers import Text.Pandoc import Text.Pandoc.Arbitrary () import Text.Pandoc.Builder creole :: Text -> Pandoc creole = purely $ readCreole def{ readerStandalone = True } infix 4 =: (=:) :: (ToString c, HasCallStack) => String -> (Text, c) -> TestTree (=:) = test creole tests :: [TestTree] tests = [ testGroup "Basic Text Formatting" [ "bold, single line, fully delimited" =: "only **bold** is bold" =?> para ("only " <> strong "bold" <> " is bold") , "italics, single line, fully delimited" =: "only //this// is in italics" =?> para ("only " <> emph "this" <> " is in italics") , "bold in italics, fully delimited" =: "//**this**// is in bold italics" =?> para (emph (strong "this") <> " is in bold italics") , "italics in bold, fully delimited" =: "**//this//** is in bold italics" =?> para (strong (emph "this") <> " is in bold italics") , "escape bold marker" =: "~**not bold" =?> para "**not bold" , "escape italics marker" =: "~//not in italics" =?> para "//not in italics" , "inline nowiki, simple" =: "this is {{{**not** ~interpreted}}} at all" =?> para ("this is " <> code "**not** ~interpreted" <> " at all") , "inline nowiki, curly braces inside" =: "this is {{{{{{//including// some `}' chars}}}}}}" =?> para ("this is " <> code "{{{//including// some `}' chars}}}") , "placeholder" =: "foo <<<place holder>>> bar" =?> para "foo bar" , "placeholder escaped" =: "foo ~<<<no place holder>>> bar" =?> para "foo <<<no place holder>>> bar" ] , testGroup "Headers" [ "header level 1, no space, no trailing =" =: "= Top-Level Header" =?> header 1 (str "Top-Level Header") , "header level 1, leading space, trailing =" =: " = Top-Level Header = " =?> header 1 (str "Top-Level Header") , "header level 2, no space, no trailing =" =: "== Second Level" =?> header 2 (str "Second Level") , "header level 2, leading space, no trailing =" =: " == Second Level" =?> header 2 (str "Second Level") , "header level 3, no space, no trailing =" =: "=== Third" =?> header 3 (str "Third") , "header level 3, no space, > 3 trailing =" =: "=== Third =======" =?> header 3 (str "Third") , "header level 4, no space, no trailing =" =: "==== Fourth Level Heading" =?> header 4 (str "Fourth Level Heading") , "header level 4, no space, < 4 trailing =" =: "==== Fourth Level Heading ==" =?> header 4 (str "Fourth Level Heading") , "header level 5, no space, no trailing =" =: "===== Fifth" =?> header 5 (str "Fifth") , "header level 6, no space, no trailing =" =: "====== Sixth" =?> header 6 (str "Sixth") ] , testGroup "Paragraphs" [ "paragraphs: multiple, one line" =: "first line\n\nanother line\n" =?> para "first line" <> para "another line" ] , testGroup "Lists" [ "unordered list, two entries, one separating space" =: "* foo\n* bar" =?> bulletList [ plain "foo", plain "bar" ] , "unordered list, three entries, one separating space" =: "* foo\n* bar\n* baz" =?> bulletList [ plain "foo", plain "bar", plain "baz" ] , "para followed by, unordered list, two entries, one separating space" =: "blubber\n* foo\n* bar" =?> para "blubber" <> bulletList [ plain "foo", plain "bar" ] , "nested unordered list, one separating space" =: "* foo\n** bar\n** baz\n* blubb" =?> bulletList [ plain "foo" <> bulletList [ plain "bar", plain "baz" ] , plain "blubb" ] , "nested many unordered lists, one separating space" =: ("* foo\n** bar\n*** third\n*** third two\n** baz\n*** third again\n" <> "**** fourth\n***** fifth\n* blubb") =?> bulletList [ plain "foo" <> bulletList [ plain "bar" <> bulletList [ plain "third" , plain "third two"] , plain "baz" <> bulletList [ plain "third again" <> bulletList [ plain "fourth" <> bulletList [ plain "fifth" ] ] ] ] , plain "blubb" ] , "nested unordered list, mixed separating space" =: "*foo\n ** bar\n **baz\n * blubb" =?> bulletList [ plain "foo" <> bulletList [ plain "bar", plain "baz" ] , plain "blubb" ] , "nested unordered list, one separating space, trailing space" =: "* foo \n** bar \n** baz \n* blubb " =?> bulletList [ plain "foo" <> bulletList [ plain "bar", plain "baz" ] , plain "blubb" ] , "ordered list, two entries, one separating space" =: "# foo\n# bar" =?> orderedList [ plain "foo", plain "bar" ] , "ordered list, three entries, one separating space" =: "# foo\n# bar\n# baz" =?> orderedList [ plain "foo", plain "bar", plain "baz" ] , "para followed by, ordered list, two entries, one separating space" =: "blubber\n# foo\n# bar" =?> para "blubber" <> orderedList [ plain "foo", plain "bar" ] , "nested ordered list, one separating space" =: "# foo\n## bar\n## baz\n# blubb" =?> orderedList [ plain "foo" <> orderedList [ plain "bar", plain "baz" ] , plain "blubb" ] , "nested ordered list, one separating space, trailing space" =: "# foo \n## bar \n## baz \n# blubb " =?> orderedList [ plain "foo" <> orderedList [ plain "bar", plain "baz" ] , plain "blubb" ] , "nested many ordered lists, one separating space" =: ("# foo\n## bar\n### third\n### third two\n## baz\n### third again\n" <> "#### fourth\n##### fifth\n# blubb") =?> orderedList [ plain "foo" <> orderedList [ plain "bar" <> orderedList [ plain "third" , plain "third two"] , plain "baz" <> orderedList [ plain "third again" <> orderedList [ plain "fourth" <> orderedList [ plain "fifth" ] ] ] ] , plain "blubb" ] , "nested ordered list, mixed separating space" =: "#foo\n ## bar\n ##baz\n # blubb" =?> orderedList [ plain "foo" <> orderedList [ plain "bar", plain "baz" ] , plain "blubb" ] , "mixed nested ordered and unordered lists, one separating space" =: ("# foo\n** bar\n### third\n### third two\n** baz\n### third again\n" <> "#### fourth\n***** fifth\n# blubb") =?> orderedList [ plain "foo" <> bulletList [ plain "bar" <> orderedList [ plain "third" , plain "third two"] , plain "baz" <> orderedList [ plain "third again" <> orderedList [ plain "fourth" <> bulletList [ plain "fifth" ] ] ] ] , plain "blubb" ] ] , testGroup "NoWiki" [ "quoted block, simple" =: "{{{\nfoo bar\n //baz//\n}}}" =?> codeBlock "foo bar\n //baz//" , "quoted block, curly bracket exception" =: "{{{\nfoo bar\n }}}\nbaz\n }}}\n}}}" =?> codeBlock "foo bar\n }}}\nbaz\n}}}" , "forced line breaks" =: "{{{no break!\\\\here}}} but a break\\\\here!" =?> para (code "no break!\\\\here" <> " but a break" <> linebreak <> "here!"), "quoted block, after trailing white space" =: "this is a paragraph \n{{{\nfoo bar\n //baz//\n}}}" =?> para "this is a paragraph" <> codeBlock "foo bar\n //baz//" ] , testGroup "Images and Links" [ "image simple" =: "{{foo.png}}" =?> para (image "foo.png" "" (str "")) , "image with alt text" =: "Image of a bar: {{/path/to/bar.png|A Bar}} look at it!" =?> para ("Image of a bar: " <> image "/path/to/bar.png" "" (str "A Bar") <> " look at it!") , "auto link" =: "foo http://foo.example.com/bar/baz.html bar" =?> para ("foo " <> link "http://foo.example.com/bar/baz.html" "" (str "http://foo.example.com/bar/baz.html") <> " bar") , "escaped auto link" =: "foo ~http://foo.example.com/bar/baz.html bar" =?> para "foo http://foo.example.com/bar/baz.html bar" , "wiki link simple" =: "foo [[http://foo.example.com/foo.png]] bar" =?> para ("foo " <> link "http://foo.example.com/foo.png" "" (str "http://foo.example.com/foo.png") <> " bar") , "wiki link with name" =: "foo [[http://foo.example.com/foo.png|my link]] bar" =?> para ("foo " <> link "http://foo.example.com/foo.png" "" (str "my link") <> " bar") , "image link" =: "[[http://foo.example.com/|{{foo.png}}]]" =?> para (link "http://foo.example.com/" "" (image "foo.png" "" (str ""))) ] , testGroup "Table" [ "Table with Header" =: T.unlines [ "|= Foo |= Bar |= Baz |" , "| One | Two | Three |" , "| 1 | 2 | 3 |" , "| A | B | C |" ] =?> simpleTable [plain "Foo", plain "Bar" , plain "Baz"] [[plain "One", plain "Two" , plain "Three"] ,[plain "1", plain "2" , plain "3"] ,[plain "A", plain "B" , plain "C"]] , "Table without Header" =: T.unlines [ "| One | Two | Three |" , "| 1 | 2 | 3 |" , "| A | B | C |" ] =?> simpleTable [mempty] [[plain "One", plain "Two" , plain "Three"] ,[plain "1", plain "2" , plain "3"] ,[plain "A", plain "B" , plain "C"]] , "Table without Header, no markers at line ends" =: T.unlines [ "| One | Two | Three" , "| 1 | 2 | 3" , "| A | B | C " ] =?> simpleTable [mempty] [[plain "One", plain "Two" , plain "Three"] ,[plain "1", plain "2" , plain "3"] ,[plain "A", plain "B" , plain "C"]] , "Table with Header, with formatting" =: T.unlines [ "|= **Foo** |= **Bar** |= **Baz** |" , "|//one// element |//second// elt|Three |" , "| {{{1}}} | {{{{}}}} | [[link]] |" ] =?> simpleTable [plain $ strong "Foo", plain $ strong "Bar" , plain $ strong "Baz"] [[plain (emph "one" <> " element"), plain (emph "second" <> " elt") ,plain "Three"] ,[plain $ code "1", plain $ code "{}" ,plain $ link "link" "" (str "link")]] ] ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/test/Tests/Readers/Docx.hs�������������������������������������������������������������0000644�0000000�0000000�00000047636�07346545000�016072� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {- | Module : Tests.Readers.Docx Copyright : © 2017-2020 Jesse Rosenthal, John MacFarlane License : GNU GPL, version 2 or above Maintainer : Jesse Rosenthal <jrosenthal@jhu.edu> Stability : alpha Portability : portable Tests for the word docx reader. -} module Tests.Readers.Docx (tests) where import Codec.Archive.Zip import qualified Data.ByteString as BS import qualified Data.ByteString.Lazy as B import qualified Data.Map as M import qualified Data.Text as T import Data.Maybe import System.IO.Unsafe import Test.Tasty import Test.Tasty.HUnit import Tests.Helpers import Text.Pandoc import qualified Text.Pandoc.Class as P import qualified Text.Pandoc.MediaBag as MB import Text.Pandoc.UTF8 as UTF8 -- We define a wrapper around pandoc that doesn't normalize in the -- tests. Since we do our own normalization, we want to make sure -- we're doing it right. newtype NoNormPandoc = NoNormPandoc {unNoNorm :: Pandoc} deriving Show noNorm :: Pandoc -> NoNormPandoc noNorm = NoNormPandoc defopts :: ReaderOptions defopts = def{ readerExtensions = getDefaultExtensions "docx" } instance ToString NoNormPandoc where toString d = T.unpack $ purely (writeNative def{ writerTemplate = s }) $ toPandoc d where s = case d of NoNormPandoc (Pandoc (Meta m) _) | M.null m -> Nothing | otherwise -> Just mempty -- need this to get meta output instance ToPandoc NoNormPandoc where toPandoc = unNoNorm compareOutput :: ReaderOptions -> FilePath -> FilePath -> IO (NoNormPandoc, NoNormPandoc) compareOutput opts docxFile nativeFile = do df <- B.readFile docxFile nf <- UTF8.toText <$> BS.readFile nativeFile p <- runIOorExplode $ readDocx opts df df' <- runIOorExplode $ readNative def nf return (noNorm p, noNorm df') testCompareWithOptsIO :: ReaderOptions -> String -> FilePath -> FilePath -> IO TestTree testCompareWithOptsIO opts name docxFile nativeFile = do (dp, np) <- compareOutput opts docxFile nativeFile return $ test id name (dp, np) testCompareWithOpts :: ReaderOptions -> String -> FilePath -> FilePath -> TestTree testCompareWithOpts opts name docxFile nativeFile = unsafePerformIO $ testCompareWithOptsIO opts name docxFile nativeFile testCompare :: String -> FilePath -> FilePath -> TestTree testCompare = testCompareWithOpts defopts testForWarningsWithOptsIO :: ReaderOptions -> String -> FilePath -> [String] -> IO TestTree testForWarningsWithOptsIO opts name docxFile expected = do df <- B.readFile docxFile logs <- runIOorExplode $ setVerbosity ERROR >> readDocx opts df >> P.getLog let warns = [m | DocxParserWarning m <- logs] return $ test id name (T.unlines warns, unlines expected) testForWarningsWithOpts :: ReaderOptions -> String -> FilePath -> [String] -> TestTree testForWarningsWithOpts opts name docxFile expected = unsafePerformIO $ testForWarningsWithOptsIO opts name docxFile expected -- testForWarnings :: String -> FilePath -> [String] -> TestTree -- testForWarnings = testForWarningsWithOpts defopts getMedia :: FilePath -> FilePath -> IO (Maybe B.ByteString) getMedia archivePath mediaPath = fmap fromEntry . findEntryByPath ("word/" ++ mediaPath) . toArchive <$> B.readFile archivePath compareMediaPathIO :: FilePath -> MB.MediaBag -> FilePath -> IO Bool compareMediaPathIO mediaPath mediaBag docxPath = do docxMedia <- getMedia docxPath mediaPath let mbBS = case MB.lookupMedia mediaPath mediaBag of Just item -> MB.mediaContents item Nothing -> error ("couldn't find " ++ mediaPath ++ " in media bag") docxBS = fromMaybe (error ("couldn't find " ++ mediaPath ++ " in media bag")) docxMedia return $ mbBS == docxBS compareMediaBagIO :: FilePath -> IO Bool compareMediaBagIO docxFile = do df <- B.readFile docxFile mb <- runIOorExplode $ readDocx defopts df >> P.getMediaBag bools <- mapM (\(fp, _, _) -> compareMediaPathIO fp mb docxFile) (MB.mediaDirectory mb) return $ and bools testMediaBagIO :: String -> FilePath -> IO TestTree testMediaBagIO name docxFile = do outcome <- compareMediaBagIO docxFile return $ testCase name (assertBool ("Media didn't match media bag in file " ++ docxFile) outcome) testMediaBag :: String -> FilePath -> TestTree testMediaBag name docxFile = unsafePerformIO $ testMediaBagIO name docxFile tests :: [TestTree] tests = [ testGroup "document" [ testCompare "allow different document.xml file as defined in _rels/.rels" "docx/alternate_document_path.docx" "docx/alternate_document_path.native" ] , testGroup "inlines" [ testCompare "font formatting" "docx/inline_formatting.docx" "docx/inline_formatting.native" , testCompare "font formatting with character styles" "docx/char_styles.docx" "docx/char_styles.native" , testCompare "hyperlinks" "docx/links.docx" "docx/links.native" , testCompare "hyperlinks in <w:instrText> tag" "docx/instrText_hyperlink.docx" "docx/instrText_hyperlink.native" , testCompare "nested fields with <w:instrText> tag" "docx/nested_instrText.docx" "docx/nested_instrText.native" , testCompare "empty fields with <w:instrText> tag" "docx/empty_field.docx" "docx/empty_field.native" , testCompare "pageref hyperlinks in <w:instrText> tag" "docx/pageref.docx" "docx/pageref.native" , testCompare "inline image" "docx/image.docx" "docx/image_no_embed.native" , testCompare "VML image" "docx/image_vml.docx" "docx/image_vml.native" , testCompare "VML image as object" "docx/image_vml_as_object.docx" "docx/image_vml_as_object.native" , testCompare "inline image in links" "docx/inline_images.docx" "docx/inline_images.native" , testCompare "handling unicode input" "docx/unicode.docx" "docx/unicode.native" , testCompare "literal tabs" "docx/tabs.docx" "docx/tabs.native" , testCompare "special punctuation" "docx/special_punctuation.docx" "docx/special_punctuation.native" , testCompare "normalizing inlines" "docx/normalize.docx" "docx/normalize.native" , testCompare "normalizing inlines deep inside blocks" "docx/deep_normalize.docx" "docx/deep_normalize.native" , testCompare "move trailing spaces outside of formatting" "docx/trailing_spaces_in_formatting.docx" "docx/trailing_spaces_in_formatting.native" , testCompare "remove trailing spaces from last inline" "docx/trim_last_inline.docx" "docx/trim_last_inline.native" , testCompare "inline code (with VerbatimChar style)" "docx/inline_code.docx" "docx/inline_code.native" , testCompare "inline code in subscript and superscript" "docx/verbatim_subsuper.docx" "docx/verbatim_subsuper.native" , testCompare "inlines inside of Structured Document Tags" "docx/sdt_elements.docx" "docx/sdt_elements.native" , testCompare "Structured Document Tags in footnotes" "docx/sdt_in_footnote.docx" "docx/sdt_in_footnote.native" , testCompare "nested Structured Document Tags" "docx/nested_sdt.docx" "docx/nested_sdt.native" , testCompare "nested Smart Tags" "docx/nested_smart_tags.docx" "docx/nested_smart_tags.native" , testCompare "remove anchor spans with nothing pointing to them" "docx/unused_anchors.docx" "docx/unused_anchors.native" , testCompare "collapse overlapping targets (anchor spans)" "docx/overlapping_targets.docx" "docx/overlapping_targets.native" ] , testGroup "blocks" [ testCompare "headers" "docx/headers.docx" "docx/headers.native" , testCompare "headers already having auto identifiers" "docx/already_auto_ident.docx" "docx/already_auto_ident.native" , testCompare "avoid zero-level headers" "docx/0_level_headers.docx" "docx/0_level_headers.native" , testCompare "nested anchor spans in header" "docx/nested_anchors_in_header.docx" "docx/nested_anchors_in_header.native" , testCompare "single numbered item not made into list" "docx/numbered_header.docx" "docx/numbered_header.native" , testCompare "enumerated headers not made into numbered list" "docx/enumerated_headings.docx" "docx/enumerated_headings.native" , testCompare "i18n blocks (headers and blockquotes)" "docx/i18n_blocks.docx" "docx/i18n_blocks.native" , testCompare "lists" "docx/lists.docx" "docx/lists.native" , testCompare "compact lists" "docx/lists-compact.docx" "docx/lists-compact.native" , testCompare "lists with level overrides" "docx/lists_level_override.docx" "docx/lists_level_override.native" , testCompare "lists continuing after interruption" "docx/lists_continuing.docx" "docx/lists_continuing.native" , testCompare "lists restarting after interruption" "docx/lists_restarting.docx" "docx/lists_restarting.native" , testCompare "sublists reset numbering to 1" "docx/lists_sublist_reset.docx" "docx/lists_sublist_reset.native" , testCompare "definition lists" "docx/definition_list.docx" "docx/definition_list.native" , testCompare "custom defined lists in styles" "docx/german_styled_lists.docx" "docx/german_styled_lists.native" , testCompare "user deletes bullet after list item (=> part of item par)" "docx/dummy_item_after_list_item.docx" "docx/dummy_item_after_list_item.native" , testCompare "user deletes bullet after par (=> new par)" "docx/dummy_item_after_paragraph.docx" "docx/dummy_item_after_paragraph.native" , testCompare "footnotes and endnotes" "docx/notes.docx" "docx/notes.native" , testCompare "links in footnotes and endnotes" "docx/link_in_notes.docx" "docx/link_in_notes.native" , testCompare "blockquotes (parsing indent as blockquote)" "docx/block_quotes.docx" "docx/block_quotes.native" , testCompare "blockquotes (parsing indent relative to the indent of the parent style as blockquote)" "docx/relative_indentation_blockquotes.docx" "docx/relative_indentation_blockquotes.native" , testCompare "hanging indents" "docx/hanging_indent.docx" "docx/hanging_indent.native" , testCompare "tables" "docx/tables.docx" "docx/tables.native" , testCompare "tables with lists in cells" "docx/table_with_list_cell.docx" "docx/table_with_list_cell.native" , testCompare "a table with a header which contains rowspans greater than 1" "docx/table_header_rowspan.docx" "docx/table_header_rowspan.native" , testCompare "tables with one row" "docx/table_one_row.docx" "docx/table_one_row.native" , testCompare "tables with just one row, which is a header" "docx/table_one_header_row.docx" "docx/table_one_header_row.native" , testCompare "tables with variable width" "docx/table_variable_width.docx" "docx/table_variable_width.native" , testCompare "tables with captions which contain a Table field" "docx/table_captions_with_field.docx" "docx/table_captions_with_field.native" , testCompare "tables with captions which don't contain a Table field" "docx/table_captions_no_field.docx" "docx/table_captions_no_field.native" , testCompare "code block" "docx/codeblock.docx" "docx/codeblock.native" , testCompare "combine adjacent code blocks" "docx/adjacent_codeblocks.docx" "docx/adjacent_codeblocks.native" , testCompare "dropcap paragraphs" "docx/drop_cap.docx" "docx/drop_cap.native" ] , testGroup "citations" [ testCompare "zotero with -citations" "docx/zotero_citations.docx" "docx/zotero_citations_minus.native" , testCompareWithOpts def{readerExtensions = extensionsFromList [Ext_citations]} "zotero with +citations" "docx/zotero_citations.docx" "docx/zotero_citations_plus.native" , testCompare "mendeley with -citations" "docx/mendeley_citations.docx" "docx/mendeley_citations_minus.native" , testCompareWithOpts def{readerExtensions = extensionsFromList [Ext_citations]} "mendeley with +citations" "docx/mendeley_citations.docx" "docx/mendeley_citations_plus.native" ] , testGroup "track changes" [ testCompare "insertion (default)" "docx/track_changes_insertion.docx" "docx/track_changes_insertion_accept.native" , testCompareWithOpts def{readerTrackChanges=AcceptChanges} "insert insertion (accept)" "docx/track_changes_insertion.docx" "docx/track_changes_insertion_accept.native" , testCompareWithOpts def{readerTrackChanges=RejectChanges} "remove insertion (reject)" "docx/track_changes_insertion.docx" "docx/track_changes_insertion_reject.native" , testCompare "deletion (default)" "docx/track_changes_deletion.docx" "docx/track_changes_deletion_accept.native" , testCompareWithOpts def{readerTrackChanges=AcceptChanges} "remove deletion (accept)" "docx/track_changes_deletion.docx" "docx/track_changes_deletion_accept.native" , testCompareWithOpts def{readerTrackChanges=RejectChanges} "insert deletion (reject)" "docx/track_changes_deletion.docx" "docx/track_changes_deletion_reject.native" , testCompareWithOpts def{readerTrackChanges=AllChanges} "keep insertion (all)" "docx/track_changes_deletion.docx" "docx/track_changes_deletion_all.native" , testCompareWithOpts def{readerTrackChanges=AllChanges} "keep deletion (all)" "docx/track_changes_deletion.docx" "docx/track_changes_deletion_all.native" , testCompareWithOpts def{readerTrackChanges=AcceptChanges} "move text (accept)" "docx/track_changes_move.docx" "docx/track_changes_move_accept.native" , testCompareWithOpts def{readerTrackChanges=RejectChanges} "move text (reject)" "docx/track_changes_move.docx" "docx/track_changes_move_reject.native" , testCompareWithOpts def{readerTrackChanges=AllChanges} "move text (all)" "docx/track_changes_move.docx" "docx/track_changes_move_all.native" , testCompareWithOpts def{readerTrackChanges=AcceptChanges} "comments (accept -- no comments)" "docx/comments.docx" "docx/comments_no_comments.native" , testCompareWithOpts def{readerTrackChanges=RejectChanges} "comments (reject -- comments)" "docx/comments.docx" "docx/comments_no_comments.native" , testCompareWithOpts def{readerTrackChanges=AllChanges} "comments (all comments)" "docx/comments.docx" "docx/comments.native" , testCompareWithOpts def{readerTrackChanges=AcceptChanges} "paragraph insertion/deletion (accept)" "docx/paragraph_insertion_deletion.docx" "docx/paragraph_insertion_deletion_accept.native" , testCompareWithOpts def{readerTrackChanges=RejectChanges} "paragraph insertion/deletion (reject)" "docx/paragraph_insertion_deletion.docx" "docx/paragraph_insertion_deletion_reject.native" , testCompareWithOpts def{readerTrackChanges=AllChanges} "paragraph insertion/deletion (all)" "docx/paragraph_insertion_deletion.docx" "docx/paragraph_insertion_deletion_all.native" , testCompareWithOpts def{readerTrackChanges=AllChanges} "paragraph insertion/deletion (all)" "docx/track_changes_scrubbed_metadata.docx" "docx/track_changes_scrubbed_metadata.native" , testForWarningsWithOpts def{readerTrackChanges=AcceptChanges} "comment warnings (accept -- no warnings)" "docx/comments_warning.docx" [] , testForWarningsWithOpts def{readerTrackChanges=RejectChanges} "comment warnings (reject -- no warnings)" "docx/comments_warning.docx" [] , testForWarningsWithOpts def{readerTrackChanges=AllChanges} "comment warnings (all)" "docx/comments_warning.docx" ["Docx comment 1 will not retain formatting"] ] , testGroup "media" [ testMediaBag "image extraction" "docx/image.docx" ] , testGroup "custom styles" [ testCompare "custom styles (`+styles`) not enabled (default)" "docx/custom-style-reference.docx" "docx/custom-style-no-styles.native" , testCompareWithOpts def{readerExtensions=extensionsFromList [Ext_styles]} "custom styles (`+styles`) enabled" "docx/custom-style-reference.docx" "docx/custom-style-with-styles.native" , testCompareWithOpts def{readerExtensions=extensionsFromList [Ext_styles]} "custom styles (`+styles`): Compact style is removed from output" "docx/compact-style-removal.docx" "docx/compact-style-removal.native" ] , testGroup "metadata" [ testCompareWithOpts def{readerStandalone=True} "metadata fields" "docx/metadata.docx" "docx/metadata.native" , testCompareWithOpts def{readerStandalone=True} "stop recording metadata with normal text" "docx/metadata_after_normal.docx" "docx/metadata_after_normal.native" ] ] ��������������������������������������������������������������������������������������������������pandoc-3.1.3/test/Tests/Readers/DokuWiki.hs���������������������������������������������������������0000644�0000000�0000000�00000034646�07346545000�016720� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TupleSections #-} {- | Module : Tests.Readers.DokuWiki Copyright : © 2018-2020 Alexander Krotov License : GNU GPL, version 2 or above Maintainer : Alexander Krotov Stability : alpha Portability : portable Tests for DokuWiki reader. -} module Tests.Readers.DokuWiki (tests) where import Data.Text (Text) import qualified Data.Text as T import Test.Tasty import Test.Tasty.HUnit (HasCallStack) import Tests.Helpers import Text.Pandoc import Text.Pandoc.Arbitrary () import Text.Pandoc.Builder dokuwiki :: Text -> Pandoc dokuwiki = purely $ readDokuWiki def{ readerStandalone = True } infix 4 =: (=:) :: (ToString c, HasCallStack) => String -> (Text, c) -> TestTree (=:) = test dokuwiki tests :: [TestTree] tests = [ testGroup "inlines" [ "Bold" =: "**bold**" =?> para (strong "bold") , "Italic" =: "//italic//" =?> para (emph "italic") , "Underlined" =: "__underlined__" =?> para (underline "underlined") , "Monospaced" =: "''monospaced''" =?> para (code "monospaced") , "Monospaced with nowiki" =: "''%%monospaced%%''" =?> para (code "monospaced") , "Combined" =: "**__//''combine''//__**" =?> para (strong $ underline $ emph $ code "combine") , "Nowiki" =: T.unlines [ "<nowiki>" , "This is some text which contains addresses like this: http://www.splitbrain.org and **formatting**, but nothing is done with it." , "</nowiki>" ] =?> para "This is some text which contains addresses like this: http://www.splitbrain.org and **formatting**, but nothing is done with it." , "Percent" =: "The same is true for %%//__this__ text// with a smiley ;-)%%." =?> para "The same is true for //__this__ text// with a smiley ;-)." , "Subscript" =: "<sub>subscript</sub>" =?> para (subscript "subscript") , "Superscript" =: "<sup>superscript</sup>" =?> para (superscript "superscript") , "Deleted" =: "<del>deleted</del>" =?> para (strikeout "deleted") , "Inline code" =: "foo <code java>public static void main</code> bar" =?> para (text "foo " <> codeWith ("", ["java"], []) "public static void main" <> text " bar") , "Inline file" =: "foo <file></code></file> bar" =?> para (text "foo " <> code "</code>" <> text " bar") , "Inline HTML" =: "<html>\nThis is some <span style=\"color:red;font-size:150%;\">inline HTML</span>\n</html>" =?> para (rawInline "html" "\nThis is some <span style=\"color:red;font-size:150%;\">inline HTML</span>\n") , "Inline PHP" =: "<php>echo '<p>Hello World</p>';</php>" =?> para (rawInline "html" "<?php echo '<p>Hello World</p>'; ?>") , "Linebreak" =: T.unlines [ "This is some text with some linebreaks\\\\ Note that the" , "two backslashes are only recognized at the end of a line\\\\" , "or followed by\\\\ a whitespace \\\\this happens without it." ] =?> para ("This is some text with some linebreaks" <> linebreak <> "Note that the\n" <> "two backslashes are only recognized at the end of a line" <> linebreak <> "or followed by" <> linebreak <> "a whitespace \\\\this happens without it.") , testGroup "External links" [ "Autolink" =: "http://www.google.com" =?> para (link "http://www.google.com" "" (str "http://www.google.com")) , "Link without description" =: "[[https://example.com]]" =?> para (link "https://example.com" "" (str "https://example.com")) , "Link with description" =: "[[http://www.google.com|This Link points to google]]" =?> para (link "http://www.google.com" "" (text "This Link points to google")) , "Trim whitespace around link and description" =: "[[ http://www.google.com | This Link points to google ]]" =?> para (link "http://www.google.com" "" (text "This Link points to google")) , "Email address" =: "<andi@splitbrain.org>" =?> para (link "mailto:andi@splitbrain.org" "" (str "andi@splitbrain.org")) ] , testGroup "Internal links" [ "Current namespace" =: "[[example]]" =?> para (link "example" "" (str "example")) , "Current namespace starting with dot" =: "[[.example]]" =?> para (link "example" "" (str ".example")) , "Current namespace starting with dot and colon" =: "[[.:example]]" =?> para (link "example" "" (str "example")) , "Root namespace" =: "[[:example]]" =?> para (link "/example" "" (str "example")) , "Parent namespace" =: "[[..example]]" =?> para (link "../example" "" (str "..example")) , "Parent namespace with colon" =: "[[..:example]]" =?> para (link "../example" "" (str "example")) , "Beneath the root namespace" =: "[[wiki:example]]" =?> para (link "/wiki/example" "" (str "example")) , "Explicitly beneath the root namespace" =: "[[:wiki:example]]" =?> para (link "/wiki/example" "" (str "example")) ] , testGroup "Interwiki links" [ "Interwiki without description" =: "[[doku>DokuWiki]]" =?> para (link "https://www.dokuwiki.org/DokuWiki" "" (str "DokuWiki")) , "Interwiki link with description" =: "[[doku>toolbar|quickbuttons]]" =?> para (link "https://www.dokuwiki.org/toolbar" "" (str "quickbuttons")) ] , "Footnote" =: "((This is a footnote))" =?> para (note (para "This is a footnote")) , testGroup "Images" [ "Image" =: "{{image.jpg}}" =?> para (image "image.jpg" "" (str "image.jpg")) , "Image with caption" =: "{{image.png|This is the caption}}" =?> para (image "image.png" "" "This is the caption") , "Image with } in caption" =: "{{image.png|There is an } in the caption}}" =?> para (image "image.png" "" "There is an } in the caption") , "Wiki namespace starting with dot" =: "{{.wiki:image.jpg}}" =?> para (image "wiki/image.jpg" "" (str "image.jpg")) , "Left aligned image" =: "{{wiki:dokuwiki-128.png }}" =?> para (imageWith ("", ["align-left"], []) "/wiki/dokuwiki-128.png" "" (str "dokuwiki-128.png")) , "Right aligned image" =: "{{ wiki:dokuwiki-128.png}}" =?> para (imageWith ("", ["align-right"], []) "/wiki/dokuwiki-128.png" "" (str "dokuwiki-128.png")) , "Centered image" =: "{{ wiki:dokuwiki-128.png }}" =?> para (imageWith ("", ["align-center"], []) "/wiki/dokuwiki-128.png" "" (str "dokuwiki-128.png")) , "Image with width" =: "{{wiki:dokuwiki-128.png?50}}" =?> para (imageWith ("", [], [("width", "50")]) "/wiki/dokuwiki-128.png" "" (str "dokuwiki-128.png")) , "Image with width and height" =: "{{wiki:dokuwiki-128.png?nocache&50x100}}" =?> para (imageWith ("", [], [("width", "50"), ("height", "100")]) "/wiki/dokuwiki-128.png" "" (str "dokuwiki-128.png")) , "Linkonly" =: "{{wiki:dokuwiki-128.png?linkonly}}" =?> para (link "/wiki/dokuwiki-128.png" "" (str "dokuwiki-128.png")) ] , "Ignore ~~NOTOC~~" =: "Here is a ~~NOTOC~~ macro" =?> para "Here is a macro" , "Ignore ~~NOCACHE~~" =: "Here is a ~~NOCACHE~~ macro" =?> para "Here is a macro" ] , testGroup "Sectioning" [ "Headline level 1" =: "====== Headline Level 1 ======" =?> header 1 "Headline Level 1" , "Headline level 2" =: "===== Headline Level 2 =====" =?> header 2 "Headline Level 2" , "Headline level 3" =: "==== Headline Level 3 ====" =?> header 3 "Headline Level 3" , "Headline level 4" =: "=== Headline Level 4 ===" =?> header 4 "Headline Level 4" , "Headline level 5" =: "== Headline Level 5 ==" =?> header 5 "Headline Level 5" , "Only two closing = are required" =: "====== Headline Level 1 ==" =?> header 1 "Headline Level 1" , "One closing = is not enough" =: "====== Headline Level 1 =" =?> para "====== Headline Level 1 =" , "One closing = is not enough" =: "== Headline with = sign ==" =?> header 5 "Headline with = sign" ] , "Horizontal line" =: "----" =?> horizontalRule , testGroup "Lists" [ "Unordered list" =: T.unlines [ " * This is a list" , " * The second item" , " * You may have different levels" , " * Another item" ] =?> bulletList [ plain "This is a list" , plain "The second item" <> bulletList [ plain "You may have different levels" ] , plain "Another item" ] , "Ordered list" =: T.unlines [ " - The same list but ordered" , " - Another item" , " - Just use indentation for deeper levels" , " - That's it" ] =?> orderedList [ plain "The same list but ordered" , plain "Another item" <> orderedList [ plain "Just use indentation for deeper levels" ] , plain "That's it" ] , "Multiline list items" =: -- https://www.dokuwiki.org/faq:lists T.unlines [ " - first item" , " - second item with linebreak\\\\ second line" , " - third item with code: <code>" , "some code" , "comes here" , "</code>" , " - fourth item" ] =?> orderedList [ plain "first item" , plain ("second item with linebreak" <> linebreak <> " second line") , plain ("third item with code: " <> code "some code\ncomes here\n") , plain "fourth item" ] ] , "Block HTML" =: T.unlines [ "<HTML>" , "<p style=\"border:2px dashed red;\">And this is some block HTML</p>" , "</HTML>" ] =?> rawBlock "html" "<p style=\"border:2px dashed red;\">And this is some block HTML</p>\n" , "Block PHP" =: T.unlines [ "<PHP>" , "echo '<p>Hello World</p>';" , "</PHP>" ] =?> rawBlock "html" "<?php echo '<p>Hello World</p>';\n ?>" , "Quote" =: T.unlines [ "> foo" , ">no space is required after >" , "> bar" , ">> baz" , "> bat" ] =?> blockQuote (plain "foo" <> plain "no space is required after >" <> plain "bar" <> blockQuote (plain "baz") <> plain "bat") , "Code block" =: T.unlines [ "<code>" , "foo bar baz" , "</code>" ] =?> codeBlock "foo bar baz\n" , "Java code block" =: T.unlines [ "<code java>" , "public static void main" , "</code>" ] =?> codeBlockWith ("", ["java"], []) "public static void main\n" , "File with filename and no language" =: T.unlines [ "<file - foo.bar>" , "file contents" , "</file>" ] =?> codeBlock "file contents\n" , "Table" =: T.unlines [ "| foo | bar |" , "| bat | baz |" ] =?> simpleTable [] [[plain "foo", plain "bar"] ,[plain "bat", plain "baz"]] , "Table with header" =: T.unlines [ "^ foo ^ bar ^" , "| bat | baz |" ] =?> simpleTable [plain "foo", plain "bar"] [[plain "bat", plain "baz"]] , "Table with alignment" =: T.unlines [ "^ 0 ^ 1 ^ 2 ^ 3 ^" , "| a | b | c |d |" ] =?> table emptyCaption (map (, ColWidthDefault) [AlignLeft, AlignCenter, AlignRight, AlignDefault]) (TableHead nullAttr [Row nullAttr . map (simpleCell . plain) $ ["0", "1", "2", "3"]]) [TableBody nullAttr 0 [] [Row nullAttr . map (simpleCell . plain) $ ["a", "b", "c", "d"]]] (TableFoot nullAttr []) , "Table with colspan" =: T.unlines [ "^ 0,0 ^ 0,1 ^ 0,2 ^" , "| 1,0 | 1,1 ||" , "| 2,0 | 2,1 | 2,2 |" ] =?> simpleTable [plain "0,0", plain "0,1", plain "0,2"] [[plain "1,0", plain "1,1", mempty] ,[plain "2,0", plain "2,1", plain "2,2"] ] , "Indented code block" =: T.unlines [ "foo" , " bar" , " bat" , "baz" ] =?> para "foo" <> codeBlock "bar\n bat\n" <> para "baz" ] ������������������������������������������������������������������������������������������pandoc-3.1.3/test/Tests/Readers/EPUB.hs�������������������������������������������������������������0000644�0000000�0000000�00000005535�07346545000�015720� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{- | Module : Tests.Readers.EPUB Copyright : © 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.eu> Stability : alpha Portability : portable Tests for the EPUB mediabag. -} module Tests.Readers.EPUB (tests) where import qualified Data.ByteString.Lazy as BL import qualified Data.Text as T import Test.Tasty import Test.Tasty.HUnit import qualified Text.Pandoc.Class as P import Text.Pandoc.MediaBag (MediaBag, mediaDirectory) import Text.Pandoc.Options import Text.Pandoc.Readers.EPUB getMediaBag :: FilePath -> IO MediaBag getMediaBag fp = do bs <- BL.readFile fp P.runIOorExplode $ do readEPUB def bs P.getMediaBag testMediaBag :: FilePath -> [(String, String, Int)] -> IO () testMediaBag fp bag = do actBag <- mediaDirectory <$> getMediaBag fp assertBool (show "MediaBag did not match:\nExpected: " ++ show bag ++ "\nActual: " ++ show actBag) (actBag == packBag bag) where packBag = map $ \(x, y, z) -> (x, T.pack y, z) featuresBag :: [(String, String, Int)] featuresBag = [("img/check.gif","image/gif",1340) ,("img/check.jpg","image/jpeg",2661) ,("img/check.png","image/png",2815) ,("img/multiscripts_and_greek_alphabet.png","image/png",10060) ] -- with additional meta tag for cover in EPUB2 format epub3CoverBag :: [(String, String, Int)] epub3CoverBag = [("wasteland-cover.jpg","image/jpeg", 16586)] epub3NoCoverBag :: [(String, String, Int)] epub3NoCoverBag = [("img/check.gif","image/gif",1340) ,("img/check.jpg","image/jpeg",2661) ,("img/check.png","image/png",2815) ] -- content.opf uses the word `picture` to refer to the cover as much as validly possible -- to check if references are resolved correctly epub2PictureBag :: [(String, String, Int)] epub2PictureBag = [("image/image.jpg","image/jpeg",9713)] -- content.opf contains the word `cover` as much as possible, to check if possible multiple matches cause errors epub2CoverBag :: [(String, String, Int)] epub2CoverBag = [("image/cover.jpg","image/jpeg",9713)] epub2NoCoverBag :: [(String, String, Int)] epub2NoCoverBag = [] tests :: [TestTree] tests = [ testGroup "EPUB Mediabag" [ testCase "features bag" (testMediaBag "epub/img.epub" featuresBag), testCase "EPUB3 cover bag" (testMediaBag "epub/wasteland.epub" epub3CoverBag), testCase "EPUB3 no cover bag" (testMediaBag "epub/img_no_cover.epub" epub3NoCoverBag), testCase "EPUB2 picture bag" (testMediaBag "epub/epub2_picture.epub" epub2PictureBag), testCase "EPUB2 cover bag" (testMediaBag "epub/epub2_cover.epub" epub2CoverBag), testCase "EPUB2 no cover bag" (testMediaBag "epub/epub2_no_cover.epub" epub2NoCoverBag) ] ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/test/Tests/Readers/FB2.hs��������������������������������������������������������������0000644�0000000�0000000�00000002372�07346545000�015532� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{- | Module : Tests.Readers.FB2 Copyright : © 2018-2020 Alexander Krotov License : GNU GPL, version 2 or above Maintainer : © 2018-2020 Alexander Krotov <ilabdsf@gmail.com> Stability : alpha Portability : portable Tests for the FB2 reader. -} module Tests.Readers.FB2 (tests) where import Test.Tasty import Tests.Helpers import Test.Tasty.Golden (goldenVsString) import qualified Data.ByteString as BS import Text.Pandoc import Text.Pandoc.UTF8 (toText, fromStringLazy) import Data.Text (Text, unpack) import System.FilePath (replaceExtension) fb2ToNative :: Text -> Text fb2ToNative = purely (writeNative def{ writerTemplate = Just mempty }) . purely (readFB2 def) fb2Test :: TestName -> FilePath -> TestTree fb2Test name path = goldenVsString name native (fromStringLazy . filter (/='\r') . unpack . fb2ToNative . toText <$> BS.readFile path) where native = replaceExtension path ".native" tests :: [TestTree] tests = [ fb2Test "Emphasis" "fb2/reader/emphasis.fb2" , fb2Test "Titles" "fb2/reader/titles.fb2" , fb2Test "Epigraph" "fb2/reader/epigraph.fb2" , fb2Test "Poem" "fb2/reader/poem.fb2" , fb2Test "Meta" "fb2/reader/meta.fb2" , fb2Test "Notes" "fb2/reader/notes.fb2" ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/test/Tests/Readers/HTML.hs�������������������������������������������������������������0000644�0000000�0000000�00000015305�07346545000�015725� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {- | Module : Tests.Readers.HTML Copyright : © 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu> Stability : alpha Portability : portable Tests for the HTML reader. -} module Tests.Readers.HTML (tests) where import Data.Text (Text) import qualified Data.Text as T import Test.Tasty import Test.Tasty.QuickCheck import Test.Tasty.Options (IsOption(defaultValue)) import Tests.Helpers import Text.Pandoc import Text.Pandoc.Shared (isHeaderBlock) import Text.Pandoc.Arbitrary () import Text.Pandoc.Builder import Text.Pandoc.Walk (walk) html :: Text -> Pandoc html = purely $ readHtml def htmlNativeDivs :: Text -> Pandoc htmlNativeDivs = purely $ readHtml def { readerExtensions = enableExtension Ext_native_divs $ readerExtensions def } makeRoundTrip :: Block -> Block makeRoundTrip CodeBlock{} = Para [Str "code block was here"] makeRoundTrip LineBlock{} = Para [Str "line block was here"] makeRoundTrip RawBlock{} = Para [Str "raw block was here"] makeRoundTrip (Div attr bs) = Div attr $ filter (not . isHeaderBlock) bs -- avoids round-trip failures related to makeSections -- e.g. with [Div ("loc",[],[("a","11"),("b_2","a b c")]) [Header 3 ("",[],[]) []]] makeRoundTrip Table{} = Para [Str "table block was here"] makeRoundTrip x = x removeRawInlines :: Inline -> Inline removeRawInlines RawInline{} = Str "raw inline was here" removeRawInlines x = x roundTrip :: Blocks -> Bool roundTrip b = d'' == d''' where d = walk removeRawInlines $ walk makeRoundTrip $ Pandoc nullMeta $ toList b d' = rewrite d d'' = rewrite d' d''' = rewrite d'' rewrite = html . (`T.snoc` '\n') . purely (writeHtml5String def { writerWrapText = WrapPreserve }) tests :: [TestTree] tests = [ testGroup "base tag" [ test html "simple" $ "<head><base href=\"http://www.w3schools.com/images/foo\" ></head><body><img src=\"stickman.gif\" alt=\"Stickman\"></head>" =?> plain (image "http://www.w3schools.com/images/stickman.gif" "" (text "Stickman")) , test html "slash at end of base" $ "<head><base href=\"http://www.w3schools.com/images/\" ></head><body><img src=\"stickman.gif\" alt=\"Stickman\"></head>" =?> plain (image "http://www.w3schools.com/images/stickman.gif" "" (text "Stickman")) , test html "slash at beginning of href" $ "<head><base href=\"http://www.w3schools.com/images/\" ></head><body><img src=\"/stickman.gif\" alt=\"Stickman\"></head>" =?> plain (image "http://www.w3schools.com/stickman.gif" "" (text "Stickman")) , test html "absolute URL" $ "<head><base href=\"http://www.w3schools.com/images/\" ></head><body><img src=\"http://example.com/stickman.gif\" alt=\"Stickman\"></head>" =?> plain (image "http://example.com/stickman.gif" "" (text "Stickman")) ] , testGroup "anchors" [ test html "anchor without href" $ "<a name=\"anchor\"/>" =?> plain (spanWith ("anchor",[],[]) mempty) ] , testGroup "img" [ test html "data-external attribute" $ "<img data-external=\"1\" src=\"http://example.com/stickman.gif\">" =?> plain (imageWith ("", [], [("external", "1")]) "http://example.com/stickman.gif" "" "") , test html "title" $ "<img title=\"The title\" src=\"http://example.com/stickman.gif\">" =?> plain (imageWith ("", [], []) "http://example.com/stickman.gif" "The title" "") ] , testGroup "lang" [ test html "lang on <html>" $ "<html lang=\"es\">hola" =?> setMeta "lang" (text "es") (doc (plain (text "hola"))) , test html "xml:lang on <html>" $ "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"es\"><head></head><body>hola</body></html>" =?> setMeta "lang" (text "es") (doc (plain (text "hola"))) ] , testGroup "main" [ test htmlNativeDivs "<main> becomes <div role=main>" $ "<main>hello</main>" =?> doc (divWith ("", [], [("role", "main")]) (plain (text "hello"))) , test htmlNativeDivs "<main role=X> becomes <div role=X>" $ "<main role=foobar>hello</main>" =?> doc (divWith ("", [], [("role", "foobar")]) (plain (text "hello"))) , test htmlNativeDivs "<main> has attributes preserved" $ "<main id=foo class=bar data-baz=qux>hello</main>" =?> doc (divWith ("foo", ["bar"], [("role", "main"), ("baz", "qux")]) (plain (text "hello"))) , test htmlNativeDivs "<main> closes <p>" $ "<p>hello<main>main content</main>" =?> doc (para (text "hello") <> divWith ("", [], [("role", "main")]) (plain (text "main content"))) , test htmlNativeDivs "<main> followed by text" $ "<main>main content</main>non-main content" =?> doc (divWith ("", [], [("role", "main")]) (plain (text "main content")) <> plain (text "non-main content")) ] , testGroup "code" [ test html "inline code block" $ "<code>Answer is 42</code>" =?> plain (codeWith ("",[],[]) "Answer is 42") ] , testGroup "tt" [ test html "inline tt block" $ "<tt>Answer is 42</tt>" =?> plain (codeWith ("",[],[]) "Answer is 42") ] , testGroup "samp" [ test html "inline samp block" $ "<samp>Answer is 42</samp>" =?> plain (codeWith ("",["sample"],[]) "Answer is 42") ] , testGroup "var" [ test html "inline var block" $ "<var>result</var>" =?> plain (codeWith ("",["variable"],[]) "result") ] , testGroup "header" [ test htmlNativeDivs "<header> is parsed as a div" $ "<header id=\"title\">Title</header>" =?> divWith ("title", mempty, mempty) (plain "Title") ] , testGroup "code block" [ test html "attributes in pre > code element" $ "<pre><code id=\"a\" class=\"python\">\nprint('hi')\n</code></pre>" =?> codeBlockWith ("a", ["python"], []) "print('hi')" , test html "attributes in pre take precedence" $ "<pre id=\"c\"><code id=\"d\">\nprint('hi mom!')\n</code></pre>" =?> codeBlockWith ("c", [], []) "print('hi mom!')" ] , askOption $ \(QuickCheckTests numtests) -> testProperty "Round trip" $ withMaxSuccess (if QuickCheckTests numtests == defaultValue then 25 else numtests) roundTrip ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pandoc-3.1.3/test/Tests/Readers/JATS.hs�������������������������������������������������������������0000644�0000000�0000000�00000013716�07346545000�015726� 0����������������������������������������������������������������������������������������������������ustar�00����������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{-# LANGUAGE OverloadedStrings #-} {- | Module : Tests.Readers.JATS Copyright : © 2017 Hamish Mackenzie License : GNU GPL, version 2 or above Maintainer : Hamish Mackenzie <Hamish.K.Mackenzie@googlemail.com> Stability : alpha Portability : portable Tests for the JATS reader. -} module Tests.Readers.JATS (tests) where import Data.Text (Text) import Test.Tasty import Tests.Helpers import Text.Pandoc import Text.Pandoc.Arbitrary () import Text.Pandoc.Builder import qualified Data.Text as T jats :: Text -> Pandoc jats = purely $ readJATS def tests :: [TestTree] tests = [ testGroup "inline code" [ test jats "basic" $ "<p>\n <monospace>@&</monospace>\n</p>" =?> para (code "@&") , test jats "lang" $ "<p>\n <code language=\"c\">@&</code>\n</p>" =?> para (codeWith ("", ["c"], []) "@&") ] , testGroup "block code" [ test jats "basic" $ "<preformat>@&</preformat>" =?> codeBlock "@&" , test jats "lang" $ "<code language=\"c\">@&</code>" =?> codeBlockWith ("", ["c"], []) "@&" ] , testGroup "images" [ test jats "basic" $ "<graphic mimetype=\"image\" mime-subtype=\"\" xlink:href=\"/url\" xlink:title=\"title\" />" =?> para (image "/url" "title" mempty) ] , test jats "bullet list" $ "<list list-type=\"bullet\">\n\ \ <list-item>\n\ \ <p>\n\ \ first\n\ \ </p>\n\ \ </list-item>\n\ \ <list-item>\n\ \ <p>\n\ \ second\n\ \ </p>\n\ \ </list-item>\n\ \ <list-item>\n\ \ <p>\n\ \ third\n\ \ </p>\n\ \ </list-item>\n\ \</list>" =?> bulletList [ para $ text "first" , para $ text "second" , para $ text "third" ] , testGroup "definition lists" [ test jats "with internal link" $ "<def-list>\n\ \ <def-item>\n\ \ <term>\n\ \ <xref alt=\"testing\" rid=\"go\">testing</xref>\n\ \ </term>\n\ \ <def>\n\ \ <p>\n\ \ hi there\n\ \ </p>\n\ \ </def>\n\ \ </def-item>\n\ \</def-list>" =?> definitionList [(link "#go" "" (str "testing"), [para (text "hi there")])] ] , testGroup "math" [ test jats "escape |" $ "<p>\n\ \ <inline-formula><alternatives>\n\ \ <tex-math><![CDATA[\\sigma|_{\\{x\\}}]]></tex-math>\n\ \ <mml:math display=\"inline\" xmlns:mml=\"http://www.w3.org/1998/Math/MathML\"><mml:mrow><mml:mi>σ</mml:mi><mml:msub><mml:mo stretchy=\"false\" form=\"prefix\">|</mml:mo><mml:mrow><mml:mo stretchy=\"false\" form=\"prefix\">{</mml:mo><mml:mi>x</mml:mi><mml:mo stretchy=\"false\" form=\"postfix\">}</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:math></alternatives></inline-formula>\n\ \</p>" =?> para (math "\\sigma|_{\\{x\\}}") , test jats "tex-math only" $ "<p>\n\ \ <inline-formula><alternatives>\n\ \ <tex-math><![CDATA[\\sigma|_{\\{x\\}}]]></tex-math>\n\ \ </alternatives></inline-formula>\n\ \</p>" =?> para (math "\\sigma|_{\\{x\\}}") , test jats "math ml only" $ "<p>\n\ \ <inline-formula><alternatives>\n\ \ <mml:math display=\"inline\" xmlns:mml=\"http://www.w3.org/1998/Math/MathML\"><mml:mrow><mml:mi>σ</mml:mi><mml:msub><mml:mo stretchy=\"false\" form=\"prefix\">|</mml:mo><mml:mrow><mml:mo stretchy=\"false\" form=\"prefix\">{</mml:mo><mml:mi>x</mml:mi><mml:mo stretchy=\"false\" form=\"postfix\">}</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:math></alternatives></inline-formula>\n\ \</p>" =?> para (math "\\sigma|_{\\{ x\\}}") ] , testGroup "headers" -- TODO fix footnotes in headers -- [ test jats "unnumbered header" $ -- "<sec>\n\ -- \ <title>Header 1<fn>\n\ -- \ <p>\n\ -- \ note\n\ -- \ </p>\n\ -- \ </fn>\n\ -- \" -- =?> header 1 -- (text "Header 1" <> note (plain $ text "note")) [ test jats "unnumbered sub header" $ "\n\ \ Header\n\ \ \n\ \ Sub-Header\n\ \ \n\ \" =?> headerWith ("foo", [], []) 1 (text "Header") <> headerWith ("foo2", [], []) 2 (text "Sub-Header") , test jats "containing image" $ "\n\ \ <inline-graphic mimetype=\"image\" mime-subtype=\"jpeg\" xlink:href=\"imgs/foo.jpg\" />\n\ \" =?> header 1 (image "imgs/foo.jpg" "" mempty) ] , testGroup "metadata" [ test jats "abstract" $ T.unlines [ "" , "" , "" , "

    Paragraph 1

    " , "

    Paragraph 2

    " , "" , "" , "" ] =?> let abstract = para "Paragraph 1" <> para "Paragraph 2" in setMeta "abstract" abstract $ doc mempty ] ] pandoc-3.1.3/test/Tests/Readers/Jira.hs0000644000000000000000000001355107346545000016047 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {- | Module : Tests.Readers.Jira Copyright : © 2019-2023 Albert Krewinel License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel Stability : alpha Portability : portable Tests for the RST reader. -} module Tests.Readers.Jira (tests) where import Prelude hiding (unlines) import Data.Text (Text, unlines) import Test.Tasty (TestTree, testGroup) import Test.Tasty.HUnit (HasCallStack) import Tests.Helpers (ToString, purely, test, (=?>)) import Text.Pandoc (def) import Text.Pandoc.Readers.Jira (readJira) import Text.Pandoc.Builder jira :: Text -> Pandoc jira = purely $ readJira def infix 4 =: (=:) :: (ToString c, HasCallStack) => String -> (Text, c) -> TestTree (=:) = test jira tests :: [TestTree] tests = [ testGroup "para" [ "Simple sentence" =: "Hello, World!" =?> para "Hello, World!" , "leading blank lines" =: "\n\ntext" =?> para "text" ] , testGroup "header" [ "header" =: "h1. Main\n" =?> header 1 "Main" ] , testGroup "list" [ "simple list" =: "* foo\n* bar\n" =?> bulletList [para "foo", para "bar"] , "list with minus as bullets" =: "- foo\n- bar\n" =?> bulletList [para "foo", para "bar"] , "ordered list / enumeration" =: "# first\n# second\n" =?> orderedList [para "first", para "second"] ] , testGroup "block quote" [ "simple block quote" =: "bq. _Don't_ quote me on this." =?> blockQuote (para $ emph "Don't" <> space <> "quote me on this.") , "block quote between paragraphs" =: unlines [ "Regular text." , "bq.This is a blockquote" , "More text." ] =?> mconcat [ para "Regular text." , blockQuote (para "This is a blockquote") , para "More text." ] ] , testGroup "table" [ "table without header" =: "| one | two |\n| three | four |\n" =?> simpleTable [] [ [para "one", para "two"] , [para "three", para "four"]] , "table with header" =: "|| one || two ||\n| three | four |\n| five | six |\n" =?> simpleTable [para "one", para "two"] [ [para "three", para "four"] , [para "five", para "six"]] , "table with column header" =: "|| language | haskell | lua |\n|| type | static | dynamic |\n" =?> simpleTable [] [ [para "language", para "haskell", para "lua"] , [para "type", para "static", para "dynamic"]] , "table after paragraph" =: "*tabletest*\n||Name|\n|Test|\n" =?> para (strong "tabletest") <> simpleTable [para "Name"] [[para "Test"]] ] , testGroup "panel" [ "simple panel" =: "{panel}\nInterviewer: Jane Doe{panel}\n" =?> divWith ("", ["panel"], []) (para "Interviewer: Jane Doe") ] , testGroup "inlines" [ "emphasis" =: "*quid pro quo*" =?> para (strong "quid pro quo") , "deleted" =: "-old-" =?> para (strikeout "old") , "monospaced" =: "{{this *is* monospace}}" =?> para (code "this is monospace") , "sub- and superscript" =: "HCO ~3~^-^" =?> para ("HCO " <> subscript "3" <> superscript "-") , "citation" =: "Et tu, Brute? ??Caesar??" =?> para ("Et tu, Brute? — " <> emph "Caesar") , "color" =: "This is {color:red}red{color}." =?> para ("This is " <> spanWith ("", [], [("color", "red")]) "red" <> ".") , "hexcolor" =: "{color:#00875A}green{color}" =?> para (spanWith ("", [], [("color", "#00875A")]) "green") , "linebreak" =: "first\nsecond" =?> para ("first" <> linebreak <> "second") , testGroup "links" [ "external" =: "[Example|https://example.org]" =?> para (link "https://example.org" "" "Example") , "URL in alias" =: "[See https://example.com|https://example.com]" =?> para (link "https://example.com" "" "See https://example.com") , "email" =: "[mailto:me@example.org]" =?> para (link "mailto:me@example.org" "" "me@example.org") , "email with description" =: "[email|mailto:me@example.org]" =?> para (link "mailto:me@example.org" "" "email") , "attachment" =: "[^example.txt]" =?> para (linkWith ("", ["attachment"], []) "example.txt" "" "example.txt") , "attachment with description" =: "[an example^example.txt]" =?> para (linkWith ("", ["attachment"], []) "example.txt" "" "an example") , "user" =: "[~johndoe]" =?> para (linkWith ("", ["user-account"], []) "~johndoe" "" "~johndoe") , "user with description" =: "[John Doe|~johndoe]" =?> para (linkWith ("", ["user-account"], []) "~johndoe" "" "John Doe") , "'smart' link" =: "[x|http://example.com|smart-link]" =?> para (linkWith ("", ["smart-link"], []) "http://example.com" "" "x") , "'smart' card" =: "[x|http://example.com|smart-card]" =?> para (linkWith ("", ["smart-card"], []) "http://example.com" "" "x") ] , "image" =: "!https://example.com/image.jpg!" =?> para (image "https://example.com/image.jpg" "" mempty) , "thumbnail image" =: "!image.jpg|thumbnail!" =?> para (imageWith ("", ["thumbnail"], []) "image.jpg" "" mempty) , "image with attributes" =: "!image.gif|align=right, vspace=4, title=Hello!" =?> let attr = ("", [], [("align", "right"), ("vspace", "4")]) in para $ imageWith attr "image.gif" "Hello" mempty , "inserted text" =: "+the new version+" =?> para (underline "the new version") , "HTML entity" =: "me & you" =?> para "me & you" , "non-strikeout dashes" =: "20.09-15 2-678" =?> para "20.09-15 2-678" ] ] pandoc-3.1.3/test/Tests/Readers/LaTeX.hs0000644000000000000000000005201307346545000016133 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Tests.Readers.LaTeX Copyright : © 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Tests for the LaTeX reader. -} module Tests.Readers.LaTeX (tests) where import Data.Text (Text) import qualified Data.Text as T import Test.Tasty import Test.Tasty.HUnit (HasCallStack) import Tests.Helpers import Text.Pandoc import Text.Pandoc.Arbitrary () import Text.Pandoc.Builder latex :: Text -> Pandoc latex = purely $ readLaTeX def{ readerExtensions = getDefaultExtensions "latex" } infix 4 =: (=:) :: (ToString c, HasCallStack) => String -> (Text, c) -> TestTree (=:) = test latex table' :: [Alignment] -> [Row] -> Blocks table' aligns rows = table emptyCaption (zip aligns (repeat ColWidthDefault)) (TableHead nullAttr []) [TableBody nullAttr 0 [] rows] (TableFoot nullAttr []) simpleTable' :: [Alignment] -> [[Blocks]] -> Blocks simpleTable' aligns rows = table' aligns (map toRow rows) where toRow = Row nullAttr . map simpleCell tests :: [TestTree] tests = [ testGroup "basic" [ "simple" =: "word" =?> para "word" , "space" =: "some text" =?> para "some text" , "emphasized" =: "\\emph{emphasized}" =?> para (emph "emphasized") ] , testGroup "headers" [ "level 1" =: "\\section{header}" =?> headerWith ("header",[],[]) 1 "header" , "level 2" =: "\\subsection{header}" =?> headerWith ("header",[],[]) 2 "header" , "level 3" =: "\\subsubsection{header}" =?> headerWith ("header",[],[]) 3 "header" , "emph" =: "\\section{text \\emph{emph}}" =?> headerWith ("text-emph",[],[]) 1 ("text" <> space <> emph "emph") , "link" =: "\\section{text \\href{/url}{link}}" =?> headerWith ("text-link",[],[]) 1 ("text" <> space <> link "/url" "" "link") ] , testGroup "math" [ "escaped $" =: "$x=\\$4$" =?> para (math "x=\\$4") ] , testGroup "space and comments" [ "blank lines + space at beginning" =: "\n \n hi" =?> para "hi" , "blank lines + space + comments" =: "% my comment\n\n \n % another\n\nhi" =?> para "hi" , "comment in paragraph" =: "hi % this is a comment\nthere\n" =?> para ("hi" <> softbreak <> "there") ] , testGroup "code blocks" [ "identifier" =: "\\begin{lstlisting}[label=test]\\end{lstlisting}" =?> codeBlockWith ("test", [], [("label","test")]) "" , "no identifier" =: "\\begin{lstlisting}\\end{lstlisting}" =?> codeBlock "" ] , testGroup "tables" [ "Single cell table" =: "\\begin{tabular}{|l|}Test\\\\\\end{tabular}" =?> simpleTable' [AlignLeft] [[plain "Test"]] , "Multi cell table" =: "\\begin{tabular}{|rl|}One & Two\\\\ \\end{tabular}" =?> simpleTable' [AlignRight,AlignLeft] [[plain "One", plain "Two"]] , "Multi line table" =: T.unlines [ "\\begin{tabular}{|c|}" , "One\\\\" , "Two\\\\" , "Three\\\\" , "\\end{tabular}" ] =?> simpleTable' [AlignCenter] [[plain "One"], [plain "Two"], [plain "Three"]] , "Empty table" =: "\\begin{tabular}{}\\end{tabular}" =?> simpleTable' [] [] , "Table with fixed column width" =: "\\begin{tabular}{|p{5cm}r|}One & Two\\\\ \\end{tabular}" =?> simpleTable' [AlignLeft,AlignRight] [[plain "One", plain "Two"]] , "Table with empty column separators" =: "\\begin{tabular}{@{}r@{}l}One & Two\\\\ \\end{tabular}" =?> simpleTable' [AlignRight,AlignLeft] [[plain "One", plain "Two"]] , "Table with custom column separators" =: T.unlines [ "\\begin{tabular}{@{($\\to$)}r@{\\hspace{2cm}}l}" , "One&Two\\\\" , "\\end{tabular}" ] =?> simpleTable' [AlignRight,AlignLeft] [[plain "One", plain "Two"]] , "Table with vertical alignment argument" =: "\\begin{tabular}[t]{r|r}One & Two\\\\ \\end{tabular}" =?> simpleTable' [AlignRight,AlignRight] [[plain "One", plain "Two"]] , "Table with multicolumn item" =: "\\begin{tabular}{l c r}\\multicolumn{2}{c}{One} & Two\\\\ \\end{tabular}" =?> table' [AlignLeft, AlignCenter, AlignRight] [ Row nullAttr [ cell AlignCenter (RowSpan 1) (ColSpan 2) (plain "One") , simpleCell (plain "Two") ] ] , "table with multicolumn item (#6596)" =: "\\begin{tabular}{l c r}One & \\multicolumn{2}{c}{Two} & \\\\ \\end{tabular}" =?> table' [AlignLeft, AlignCenter, AlignRight] [ Row nullAttr [ simpleCell (plain "One") , cell AlignCenter (RowSpan 1) (ColSpan 2) (plain "Two") ] ] , "Table with multirow item" =: T.unlines ["\\begin{tabular}{c}" ,"\\multirow{2}{5em}{One}\\\\Two\\\\" ,"\\end{tabular}" ] =?> table' [AlignCenter] [ Row nullAttr [ cell AlignDefault (RowSpan 2) (ColSpan 1) (plain "One") ] , Row nullAttr [ simpleCell (plain "Two") ] ] , "Table with multirow item using full prototype" =: T.unlines ["\\begin{tabular}{c}" ,"\\multirow[c]{2}[3]{5em}[1in]{One}\\\\Two\\\\" ,"\\end{tabular}" ] =?> table' [AlignCenter] [ Row nullAttr [ cell AlignDefault (RowSpan 2) (ColSpan 1) (plain "One") ] , Row nullAttr [ simpleCell (plain "Two") ] ] , "Table with nested multirow/multicolumn item" =: T.unlines [ "\\begin{tabular}{c c c c}" , "\\multicolumn{3}{c}{\\multirow{2}{5em}{One}}&Two\\\\" , "\\multicolumn{2}{c}{} & & Three\\\\" , "Four&Five&Six&Seven\\\\" , "\\end{tabular}" ] =?> table' [AlignCenter, AlignCenter, AlignCenter, AlignCenter] [ Row nullAttr [ cell AlignCenter (RowSpan 2) (ColSpan 3) (plain "One") , simpleCell (plain "Two") ] , Row nullAttr [ simpleCell (plain "Three") ] , Row nullAttr [ simpleCell (plain "Four") , simpleCell (plain "Five") , simpleCell (plain "Six") , simpleCell (plain "Seven") ] ] , "Table with multicolumn header" =: T.unlines [ "\\begin{tabular}{ |l|l| }" , "\\hline\\multicolumn{2}{|c|}{Header}\\\\" , "\\hline key & val\\\\" , "\\hline\\end{tabular}" ] =?> table emptyCaption (zip [AlignLeft, AlignLeft] (repeat ColWidthDefault)) (TableHead nullAttr [ Row nullAttr [cell AlignCenter (RowSpan 1) (ColSpan 2) (plain "Header")]]) [TableBody nullAttr 0 [] [Row nullAttr [ simpleCell (plain "key") , simpleCell (plain "val") ] ] ] (TableFoot nullAttr []) , "Table with normal empty cells" =: T.unlines [ "\\begin{tabular}{|r|r|r|}" , "A & & B \\\\" , " & C &" , "\\end{tabular}" ] =?> table emptyCaption (replicate 3 (AlignRight, ColWidthDefault)) (TableHead nullAttr []) [TableBody nullAttr 0 [] [Row nullAttr [ simpleCell (plain "A") , emptyCell , simpleCell (plain "B") ] ,Row nullAttr [ emptyCell , simpleCell (plain "C") , emptyCell ]]] (TableFoot nullAttr []) ] , testGroup "citations" [ natbibCitations , biblatexCitations ] , testGroup "images" [ "Basic image" =: "\\includegraphics{foo.png}" =?> para (image "foo.png" "" (text "image")) , "Basic image with blank options" =: "\\includegraphics[]{foo.png}" =?> para (image "foo.png" "" (text "image")) , "Image with both width and height" =: "\\includegraphics[width=17cm,height=5cm]{foo.png}" =?> para (imageWith ("", [], [("width", "17cm"), ("height", "5cm")]) "foo.png" "" "image") , "Image with width and height and a bunch of other options" =: "\\includegraphics[width=17cm,height=5cm,clip,keepaspectratio]{foo.png}" =?> para (imageWith ("", [], [("width", "17cm"), ("height", "5cm")]) "foo.png" "" "image") , "Image with just width" =: "\\includegraphics[width=17cm]{foo.png}" =?> para (imageWith ("", [], [("width", "17cm")]) "foo.png" "" "image") , "Image with just height" =: "\\includegraphics[height=17cm]{foo.png}" =?> para (imageWith ("", [], [("height", "17cm")]) "foo.png" "" "image") , "Image width relative to textsize" =: "\\includegraphics[width=0.6\\textwidth]{foo.png}" =?> para (imageWith ("", [], [("width", "60%")]) "foo.png" "" "image") , "Image with options with spaces" =: "\\includegraphics[width=12cm, height = 5cm]{foo.png}" =?> para (imageWith ("", [], [("width", "12cm"), ("height", "5cm")]) "foo.png" "" "image") ] , let hex = ['0'..'9']++['a'..'f'] in testGroup "Character Escapes" [ "Two-character escapes" =: mconcat ["^^" <> T.pack [i,j] | i <- hex, j <- hex] =?> para (str $ T.pack ['\0'..'\255']) , "One-character escapes" =: mconcat ["^^" <> T.pack [i] | i <- hex] =?> para (str $ T.pack $ ['p'..'y']++['!'..'&']) ] , testGroup "memoir scene breaks" [ "plainbreak" =: "hello\\plainbreak{2}goodbye" =?> para (str "hello") <> horizontalRule <> para (str "goodbye") , "plainbreak*" =: "hello\\plainbreak*{2}goodbye" =?> para (str "hello") <> horizontalRule <> para (str "goodbye") , "fancybreak" =: "hello\\fancybreak{b r e a k}goodbye" =?> para (str "hello") <> horizontalRule <> para (str "goodbye") , "fancybreak*" =: "hello\\fancybreak*{b r e a k}goodbye" =?> para (str "hello") <> horizontalRule <> para (str "goodbye") , "plainfancybreak" =: "hello\\plainfancybreak{4}{2}{b r e a k}goodbye" =?> para (str "hello") <> horizontalRule <> para (str "goodbye") , "plainfancybreak*" =: "hello\\plainfancybreak*{4}{2}{b r e a k}goodbye" =?> para (str "hello") <> horizontalRule <> para (str "goodbye") , "pfbreak" =: "hello\\pfbreak{}goodbye" =?> para (str "hello") <> horizontalRule <> para (str "goodbye") , "pfbreak*" =: "hello\\pfbreak*{}goodbye" =?> para (str "hello") <> horizontalRule <> para (str "goodbye") ] , testGroup "biblatex roman numerals" [ "upper" =: "number \\RN{12}" =?> para (str "number" <> space <> str "XII") , "lower" =: "number \\Rn{29}" =?> para (str "number" <> space <> str "xxix") , "leading zero" =: "\\Rn{014}" =?> para (str "xiv") , "surrounding spaces" =: "number \\Rn{ 41 }" =?> para (str "number" <> space <> str "xli") , "zero" =: "\\RN{0}" =?> para (str "") , "space then unbraced argument" =: "\\RN 7 ok" =?> para (str "VII" <> space <> str "ok") , "space before braced argument" =: "\\Rn {13}ok" =?> para (str "xiiiok") ] , testGroup "polyglossia language spans" [ "french" =: "hello \\textfrench{bonjour}" =?> para (str "hello" <> space <> spanWith ("", [], [("lang", "fr")]) (str "bonjour")) , "nested" =: "\\textfrench{quelle c'est \\textlatin{primus}?}" =?> para (spanWith ("", [], [("lang", "fr")]) $ str "quelle" <> space <> str "c\8217est" <> space <> spanWith ("", [], [("lang", "la")]) (str "primus") <> str "?") , "with formatting" =: "\\textgerman{wie \\emph{spaet} ist es?}" =?> para (spanWith ("", [], [("lang", "de")]) $ str "wie" <> space <> emph (str "spaet") <> space <> str "ist" <> space <> str "es?") , "language options" =: "\\textgerman[variant=swiss]{hoechdeutsche}" =?> para (spanWith ("", [], [("lang", "de-CH")]) $ str "hoechdeutsche") , "unknown option fallback" =: "\\textgerman[variant=moon]{ueberhoechdeutsche}" =?> para (spanWith ("", [], [("lang", "de")]) $ str "ueberhoechdeutsche") ] ] baseCitation :: Citation baseCitation = Citation{ citationId = "item1" , citationPrefix = [] , citationSuffix = [] , citationMode = AuthorInText , citationNoteNum = 0 , citationHash = 0 } rt :: String -> Inlines rt = rawInline "latex" . T.pack natbibCitations :: TestTree natbibCitations = testGroup "natbib" [ "citet" =: "\\citet{item1}" =?> para (cite [baseCitation] (rt "\\citet{item1}")) , "suffix" =: "\\citet[p.~30]{item1}" =?> para (cite [baseCitation{ citationSuffix = toList $ text "p.\160\&30" }] (rt "\\citet[p.~30]{item1}")) , "suffix long" =: "\\citet[p.~30, with suffix]{item1}" =?> para (cite [baseCitation{ citationSuffix = toList $ text "p.\160\&30, with suffix" }] (rt "\\citet[p.~30, with suffix]{item1}")) , "multiple" =: "\\citeauthor{item1} \\citetext{\\citeyear{item1}; \\citeyear[p.~30]{item2}; \\citealp[see also][]{item3}}" =?> para (cite [baseCitation{ citationMode = AuthorInText } ,baseCitation{ citationMode = SuppressAuthor , citationSuffix = [Str "p.\160\&30"] , citationId = "item2" } ,baseCitation{ citationId = "item3" , citationPrefix = [Str "see",Space,Str "also"] , citationMode = NormalCitation } ] (rt "\\citetext{\\citeyear{item1}; \\citeyear[p.~30]{item2}; \\citealp[see also][]{item3}}")) , "group" =: "\\citetext{\\citealp[see][p.~34--35]{item1}; \\citealp[also][chap. 3]{item3}}" =?> para (cite [baseCitation{ citationMode = NormalCitation , citationPrefix = [Str "see"] , citationSuffix = [Str "p.\160\&34\8211\&35"] } ,baseCitation{ citationMode = NormalCitation , citationId = "item3" , citationPrefix = [Str "also"] , citationSuffix = [Str "chap.",Space,Str "3"] } ] (rt "\\citetext{\\citealp[see][p.~34--35]{item1}; \\citealp[also][chap. 3]{item3}}")) , "suffix and locator" =: "\\citep[pp.~33, 35--37, and nowhere else]{item1}" =?> para (cite [baseCitation{ citationMode = NormalCitation , citationSuffix = [Str "pp.\160\&33,",Space,Str "35\8211\&37,",Space,Str "and",Space,Str "nowhere",Space, Str "else"] }] (rt "\\citep[pp.~33, 35--37, and nowhere else]{item1}")) , "suffix only" =: "\\citep[and nowhere else]{item1}" =?> para (cite [baseCitation{ citationMode = NormalCitation , citationSuffix = toList $ text "and nowhere else" }] (rt "\\citep[and nowhere else]{item1}")) , "no author" =: "\\citeyearpar{item1}, and now Doe with a locator \\citeyearpar[p.~44]{item2}" =?> para (cite [baseCitation{ citationMode = SuppressAuthor }] (rt "\\citeyearpar{item1}") <> text ", and now Doe with a locator " <> cite [baseCitation{ citationMode = SuppressAuthor , citationSuffix = [Str "p.\160\&44"] , citationId = "item2" }] (rt "\\citeyearpar[p.~44]{item2}")) , "markup" =: "\\citep[\\emph{see}][p. \\textbf{32}]{item1}" =?> para (cite [baseCitation{ citationMode = NormalCitation , citationPrefix = [Emph [Str "see"]] , citationSuffix = [Str "p.",Space, Strong [Str "32"]] }] (rt "\\citep[\\emph{see}][p. \\textbf{32}]{item1}")) ] biblatexCitations :: TestTree biblatexCitations = testGroup "biblatex" [ "textcite" =: "\\textcite{item1}" =?> para (cite [baseCitation] (rt "\\textcite{item1}")) , "suffix" =: "\\textcite[p.~30]{item1}" =?> para (cite [baseCitation{ citationSuffix = toList $ text "p.\160\&30" }] (rt "\\textcite[p.~30]{item1}")) , "suffix long" =: "\\textcite[p.~30, with suffix]{item1}" =?> para (cite [baseCitation{ citationSuffix = toList $ text "p.\160\&30, with suffix" }] (rt "\\textcite[p.~30, with suffix]{item1}")) , "multiple" =: "\\textcites{item1}[p.~30]{item2}[see also][]{item3}" =?> para (cite [baseCitation{ citationMode = AuthorInText } ,baseCitation{ citationMode = NormalCitation , citationSuffix = [Str "p.\160\&30"] , citationId = "item2" } ,baseCitation{ citationId = "item3" , citationPrefix = [Str "see",Space,Str "also"] , citationMode = NormalCitation } ] (rt "\\textcites{item1}[p.~30]{item2}[see also][]{item3}")) , "group" =: "\\autocites[see][p.~34--35]{item1}[also][chap. 3]{item3}" =?> para (cite [baseCitation{ citationMode = NormalCitation , citationPrefix = [Str "see"] , citationSuffix = [Str "p.\160\&34\8211\&35"] } ,baseCitation{ citationMode = NormalCitation , citationId = "item3" , citationPrefix = [Str "also"] , citationSuffix = [Str "chap.",Space,Str "3"] } ] (rt "\\autocites[see][p.~34--35]{item1}[also][chap. 3]{item3}")) , "suffix and locator" =: "\\autocite[pp.~33, 35--37, and nowhere else]{item1}" =?> para (cite [baseCitation{ citationMode = NormalCitation , citationSuffix = [Str "pp.\160\&33,",Space,Str "35\8211\&37,",Space,Str "and",Space,Str "nowhere",Space, Str "else"] }] (rt "\\autocite[pp.~33, 35--37, and nowhere else]{item1}")) , "suffix only" =: "\\autocite[and nowhere else]{item1}" =?> para (cite [baseCitation{ citationMode = NormalCitation , citationSuffix = toList $ text "and nowhere else" }] (rt "\\autocite[and nowhere else]{item1}")) , "no author" =: "\\autocite*{item1}, and now Doe with a locator \\autocite*[p.~44]{item2}" =?> para (cite [baseCitation{ citationMode = SuppressAuthor }] (rt "\\autocite*{item1}") <> text ", and now Doe with a locator " <> cite [baseCitation{ citationMode = SuppressAuthor , citationSuffix = [Str "p.\160\&44"] , citationId = "item2" }] (rt "\\autocite*[p.~44]{item2}")) , "markup" =: "\\autocite[\\emph{see}][p. \\textbf{32}]{item1}" =?> para (cite [baseCitation{ citationMode = NormalCitation , citationPrefix = [Emph [Str "see"]] , citationSuffix = [Str "p.",Space, Strong [Str "32"]] }] (rt "\\autocite[\\emph{see}][p. \\textbf{32}]{item1}")) , "parencite" =: "\\parencite{item1}" =?> para (cite [baseCitation{ citationMode = NormalCitation }] (rt "\\parencite{item1}")) ] pandoc-3.1.3/test/Tests/Readers/Man.hs0000644000000000000000000001104707346545000015673 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Tests.Readers.Man Copyright : © 2018-2019 Yan Pas , 2018-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Tests for the Man reader. -} module Tests.Readers.Man (tests) where import Data.Text (Text) import Test.Tasty import Test.Tasty.HUnit (HasCallStack) import Tests.Helpers import Text.Pandoc import Text.Pandoc.Arbitrary () import Text.Pandoc.Builder import Text.Pandoc.Readers.Man man :: Text -> Pandoc man = purely $ readMan def infix 4 =: (=:) :: (ToString c, HasCallStack) => String -> (Text, c) -> TestTree (=:) = test man toRow :: [Blocks] -> Row toRow = Row nullAttr . map simpleCell tests :: [TestTree] tests = [ -- .SH "HEllo bbb" "aaa"" as" testGroup "Macros" [ "Bold" =: ".B foo" =?> para (strong "foo") , "Italic" =: ".I bar\n" =?> para (emph "bar") , "BoldItalic" =: ".BI foo bar" =?> para (strong (str "foo") <> emph (str "bar")) , "H1" =: ".SH The header\n" =?> header 1 (text "The header") , "H2" =: ".SS \"The header 2\"" =?> header 2 (text "The header 2") , "Macro args" =: ".B \"single arg with \"\"Q\"\"\"" =?>para (strong $ text "single arg with \"Q\"") , "Argument from next line" =: ".B\nsingle arg with \"Q\"" =?>para (strong $ text "single arg with \"Q\"") , "comment" =: ".\\\"bla\naaa" =?>para (str "aaa") , "link" =: ".BR aa (1)" =?> para (strong (str "aa") <> str "(1)") ], testGroup "Escapes" [ "fonts" =: "aa\\fIbb\\fRcc" =?>para (str "aa" <> emph (str "bb") <> str "cc") , "nested fonts" =: "\\f[BI]hi\\f[I] there\\f[R]" =?> para (emph (strong (text "hi") <> text " there")) , "nested fonts 2" =: "\\f[R]hi \\f[I]there \\f[BI]bold\\f[R] ok" =?> para (text "hi " <> emph (text "there " <> strong (text "bold")) <> text " ok") , "skip" =: "a\\%\\\n\\:b\\0" =?>para (str "ab\8199") , "replace" =: "\\-\\ \\\\\\[lq]\\[rq]\\[em]\\[en]\\*(lq\\*(rq" =?>para (text "- \\“”—–“”") , "replace2" =: "\\t\\e\\`\\^\\|\\'" =?>para (text "\\`\8202\8198'") , "comment with \\\"" =: "Foo \\\" bar\n" =?>para (text "Foo") , "comment with \\#" =: "Foo\\#\nbar\n" =?>para (text "Foobar") , "two letter escapes" =: "\\(oA\\(~O" =?>para (text "ÅÕ") , "bracketed escapes" =: "\\[oA]\\[~O]\\[Do]\\[Ye]\\[product]\\[ul]" =?>para (text "ÅÕ$¥∏_") , "unicode escapes" =: "\\[u2020]" =?>para (text "†") , "unicode escapes (combined)" =: "\\[u0075_u0301]" =?>para (text "\250") , "unknown escape (#5034)" =: "\\9" =?>para (text "9") ], testGroup "Lists" [ "bullet" =: ".IP \"\\[bu]\"\nfirst\n.IP \"\\[bu]\"\nsecond" =?> bulletList [para $ str "first", para $ str "second"] , "ordered" =: ".IP 2 a\nfirst\n.IP 3 a\nsecond" =?> orderedListWith (2,Decimal,DefaultDelim) [para $ str "first", para $ str "second"] , "upper" =: ".IP A) a\nfirst\n.IP B) a\nsecond" =?> orderedListWith (1,UpperAlpha,OneParen) [para $ str "first", para $ str "second"] , "nested" =: ".IP \"\\[bu]\"\nfirst\n.RS\n.IP \"\\[bu]\"\n1a\n.IP \"\\[bu]\"\n1b\n.RE" =?> bulletList [para (str "first") <> bulletList [para $ str "1a", para $ str "1b"]] , "change in list style" =: ".IP \\[bu]\nfirst\n.IP 1\nsecond" =?> bulletList [para (str "first")] <> orderedListWith (1,Decimal,DefaultDelim) [para (str "second")] ], testGroup "CodeBlocks" [ "cb1"=: ".nf\naa\n\tbb\n.fi" =?> codeBlock "aa\n\tbb" ], testGroup "Tables" [ "t1" =: ".TS\nallbox;\nl l l.\na\tb\tc\nd\te\tf\n.TE" =?> table emptyCaption (replicate 3 (AlignLeft, ColWidthDefault)) (TableHead nullAttr []) [TableBody nullAttr 0 [] $ map toRow [map (plain . str ) ["a", "b", "c"], map (plain . str ) ["d", "e", "f"]]] (TableFoot nullAttr []), "longcell" =: ".TS\n;\nr.\nT{\na\nb\nc d\nT}\nf\n.TE" =?> table emptyCaption [(AlignRight, ColWidthDefault)] (TableHead nullAttr []) [TableBody nullAttr 0 [] $ map toRow [[plain $ text "a b c d"], [plain $ str "f"]]] (TableFoot nullAttr []) ] ] pandoc-3.1.3/test/Tests/Readers/Markdown.hs0000644000000000000000000007020007346545000016736 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Tests.Readers.Markdown Copyright : © 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Tests for the Markdown reader. -} module Tests.Readers.Markdown (tests) where import Data.Text (Text, unpack) import qualified Data.Text as T import Test.Tasty import Test.Tasty.HUnit (HasCallStack) import Tests.Helpers import Text.Pandoc import Text.Pandoc.Arbitrary () import Text.Pandoc.Builder markdown :: Text -> Pandoc markdown = purely $ readMarkdown def { readerExtensions = disableExtension Ext_smart pandocExtensions } markdownSmart :: Text -> Pandoc markdownSmart = purely $ readMarkdown def { readerExtensions = enableExtension Ext_smart pandocExtensions } markdownCDL :: Text -> Pandoc markdownCDL = purely $ readMarkdown def { readerExtensions = enableExtension Ext_compact_definition_lists pandocExtensions } markdownGH :: Text -> Pandoc markdownGH = purely $ readMarkdown def {readerExtensions = enableExtension Ext_wikilinks_title_before_pipe githubMarkdownExtensions } markdownMMD :: Text -> Pandoc markdownMMD = purely $ readMarkdown def { readerExtensions = multimarkdownExtensions } infix 4 =: (=:) :: (ToString c, HasCallStack) => String -> (Text, c) -> TestTree (=:) = test markdown testBareLink :: (Text, Inlines) -> TestTree testBareLink (inp, ils) = test (purely $ readMarkdown def{ readerExtensions = extensionsFromList [Ext_autolink_bare_uris, Ext_raw_html] }) (unpack inp) (inp, doc $ para ils) autolink :: String -> Inlines autolink = autolinkWith ("",["uri"],[]) autolinkWith :: Attr -> String -> Inlines autolinkWith attr s = linkWith attr s' "" (str s') where s' = T.pack s bareLinkTests :: [(Text, Inlines)] bareLinkTests = [ ("http://google.com is a search engine.", autolink "http://google.com" <> " is a search engine.") , ("
    http://foo.bar.baz", rawInline "html" "" <> "http://foo.bar.baz" <> rawInline "html" "") , ("Try this query: http://google.com?search=fish&time=hour.", "Try this query: " <> autolink "http://google.com?search=fish&time=hour" <> ".") , ("HTTPS://GOOGLE.COM,", autolink "HTTPS://GOOGLE.COM" <> ",") , ("http://el.wikipedia.org/wiki/Τεχνολογία,", autolink "http://el.wikipedia.org/wiki/Τεχνολογία" <> ",") , ("doi:10.1000/182,", autolink "doi:10.1000/182" <> ",") , ("git://github.com/foo/bar.git,", autolink "git://github.com/foo/bar.git" <> ",") , ("file:///Users/joe/joe.txt, and", autolink "file:///Users/joe/joe.txt" <> ", and") , ("mailto:someone@somedomain.com.", autolink "mailto:someone@somedomain.com" <> ".") , ("Use http: this is not a link!", "Use http: this is not a link!") , ("(http://google.com).", "(" <> autolink "http://google.com" <> ").") , ("http://en.wikipedia.org/wiki/Sprite_(computer_graphics)", autolink "http://en.wikipedia.org/wiki/Sprite_(computer_graphics)") , ("http://en.wikipedia.org/wiki/Sprite_[computer_graphics]", linkWith ("",["uri"],[]) "http://en.wikipedia.org/wiki/Sprite_%5Bcomputer_graphics%5D" "" (str "http://en.wikipedia.org/wiki/Sprite_[computer_graphics]")) , ("http://en.wikipedia.org/wiki/Sprite_{computer_graphics}", linkWith ("",["uri"],[]) "http://en.wikipedia.org/wiki/Sprite_%7Bcomputer_graphics%7D" "" (str "http://en.wikipedia.org/wiki/Sprite_{computer_graphics}")) , ("http://example.com/Notification_Center-GitHub-20101108-140050.jpg", autolink "http://example.com/Notification_Center-GitHub-20101108-140050.jpg") , ("https://github.com/github/hubot/blob/master/scripts/cream.js#L20-20", autolink "https://github.com/github/hubot/blob/master/scripts/cream.js#L20-20") , ("http://www.rubyonrails.com", autolink "http://www.rubyonrails.com") , ("http://www.rubyonrails.com:80", autolink "http://www.rubyonrails.com:80") , ("http://www.rubyonrails.com/~minam", autolink "http://www.rubyonrails.com/~minam") , ("https://www.rubyonrails.com/~minam", autolink "https://www.rubyonrails.com/~minam") , ("http://www.rubyonrails.com/~minam/url%20with%20spaces", autolink "http://www.rubyonrails.com/~minam/url%20with%20spaces") , ("http://www.rubyonrails.com/foo.cgi?something=here", autolink "http://www.rubyonrails.com/foo.cgi?something=here") , ("http://www.rubyonrails.com/foo.cgi?something=here&and=here", autolink "http://www.rubyonrails.com/foo.cgi?something=here&and=here") , ("http://www.rubyonrails.com/contact;new", autolink "http://www.rubyonrails.com/contact;new") , ("http://www.rubyonrails.com/contact;new%20with%20spaces", autolink "http://www.rubyonrails.com/contact;new%20with%20spaces") , ("http://www.rubyonrails.com/contact;new?with=query&string=params", autolink "http://www.rubyonrails.com/contact;new?with=query&string=params") , ("http://www.rubyonrails.com/~minam/contact;new?with=query&string=params", autolink "http://www.rubyonrails.com/~minam/contact;new?with=query&string=params") , ("http://en.wikipedia.org/wiki/Wikipedia:Today%27s_featured_picture_%28animation%29/January_20%2C_2007", autolink "http://en.wikipedia.org/wiki/Wikipedia:Today%27s_featured_picture_%28animation%29/January_20%2C_2007") , ("http://www.mail-archive.com/rails@lists.rubyonrails.org/", autolink "http://www.mail-archive.com/rails@lists.rubyonrails.org/") , ("http://www.amazon.com/Testing-Equal-Sign-In-Path/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1198861734&sr=8-1", autolink "http://www.amazon.com/Testing-Equal-Sign-In-Path/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1198861734&sr=8-1") , ("http://en.wikipedia.org/wiki/Texas_hold%27em", autolink "http://en.wikipedia.org/wiki/Texas_hold%27em") , ("https://www.google.com/doku.php?id=gps:resource:scs:start", autolink "https://www.google.com/doku.php?id=gps:resource:scs:start") , ("http://www.rubyonrails.com", autolink "http://www.rubyonrails.com") , ("http://manuals.ruby-on-rails.com/read/chapter.need_a-period/103#page281", autolink "http://manuals.ruby-on-rails.com/read/chapter.need_a-period/103#page281") , ("http://foo.example.com/controller/action?parm=value&p2=v2#anchor123", autolink "http://foo.example.com/controller/action?parm=value&p2=v2#anchor123") , ("http://foo.example.com:3000/controller/action", autolink "http://foo.example.com:3000/controller/action") , ("http://foo.example.com:3000/controller/action+pack", autolink "http://foo.example.com:3000/controller/action+pack") , ("http://business.timesonline.co.uk/article/0,,9065-2473189,00.html", autolink "http://business.timesonline.co.uk/article/0,,9065-2473189,00.html") , ("http://www.mail-archive.com/ruby-talk@ruby-lang.org/", autolink "http://www.mail-archive.com/ruby-talk@ruby-lang.org/") , ("https://example.org/?anchor=lala-", autolink "https://example.org/?anchor=lala-") , ("https://example.org/?anchor=-lala", autolink "https://example.org/?anchor=-lala") ] {- p_markdown_round_trip :: Block -> Bool p_markdown_round_trip b = matches d' d'' where d' = normalize $ Pandoc (Meta [] [] []) [b] d'' = normalize $ readMarkdown def { readerSmart = True } $ writeMarkdown def d' matches (Pandoc _ [Plain []]) (Pandoc _ []) = True matches (Pandoc _ [Para []]) (Pandoc _ []) = True matches (Pandoc _ [Plain xs]) (Pandoc _ [Para xs']) = xs == xs' matches x y = x == y -} tests :: [TestTree] tests = [ testGroup "inline code" [ "with attribute" =: "`document.write(\"Hello\");`{.javascript}" =?> para (codeWith ("",["javascript"],[]) "document.write(\"Hello\");") , "with attribute space" =: "`*` {.haskell .special x=\"7\"}" =?> para (code "*" <> space <> str "{.haskell" <> space <> str ".special" <> space <> str "x=\"7\"}") ] , testGroup "inline code in lists (regression tests for #6284)" $ let lists = [("ordered", "1. ", ol), ("bullet", "- ", ul)] ol = orderedListWith (1, Decimal, Period) ul = bulletList items = [ ("in text" , ["If `(1) x`, then `2`"], [text "If " <> code "(1) x" <> text ", then " <> code "2"]) , ("at start" , ["`#. x`" ], [code "#. x" ]) , ("at start" , ["`- x`" ], [code "- x" ]) , ("after literal backticks", ["`x``#. x`" ], [code "x``#. x" ]) , ("after literal backticks", ["`x``- x`" ], [code "x``- x" ]) ] lis = ["`text","y","x`"] lis' = ["text","y","x"] bldLsts w lsts txts = let (res, res', f) = foldr (\((_, _, lt), lc) (acc, tacc, t) -> if lt [] == t [] then (acc, lc : tacc, lt) else (join t tacc acc, [lc], lt)) (mempty, [], mconcat) (zip lsts (map text txts)) join t tacc acc = case tacc of [] -> acc [x] -> t [plain x] <> acc xs -> t (map w xs) <> acc in join f res' res in ["code with list marker "<>mp<>" in " <> ln <> " list" =: T.intercalate "\n" (map (lstr <>) istrs) =?> lbld (map plain iblds) | (ln, lstr, lbld) <- lists, (mp, istrs, iblds) <- items] <> [ "lists with newlines in backticks" =: T.intercalate "\n" (zipWith (\i (_, lt, _) -> lt <> i) lis lsts) =?> bldLsts plain lsts lis | lsts <- [ [i, j, k] | i <- lists, j <- lists, k <- lists] ] <> [ "lists with newlines and indent in backticks" =: T.intercalate ("\n" <> T.replicate 4 " ") (zipWith (\i (_, lt, _) -> lt <> i) lis lsts) =?> let (_, _, f) = head lsts in f [plain $ code $ T.intercalate (T.replicate 5 " ") $ head lis' : zipWith (\i (_, lt, _) -> lt <> i) (tail lis') (tail lsts)] | lsts <- [ [i, j, k] | i <- lists, j <- lists, k <- lists] ] <> [ "lists with blank lines and indent in backticks" =: T.intercalate ("\n\n" <> T.replicate 4 " ") (zipWith (\i (_, lt, _) -> lt <> i) lis lsts) <> "\n" =?> let (_, _, f) = head lsts in f . pure $ (para . text $ head lis) <> bldLsts para (tail lsts) (tail lis) | lsts <- [ [i, j, k] | i <- lists, j <- lists, k <- lists] ] , testGroup "emph and strong" [ "two strongs in emph" =: "***a**b **c**d*" =?> para (emph (strong (str "a") <> str "b" <> space <> strong (str "c") <> str "d")) , "emph and strong emph alternating" =: "*xxx* ***xxx*** xxx\n*xxx* ***xxx*** xxx" =?> para (emph "xxx" <> space <> strong (emph "xxx") <> space <> "xxx" <> softbreak <> emph "xxx" <> space <> strong (emph "xxx") <> space <> "xxx") , "emph with spaced strong" =: "*x **xx** x*" =?> para (emph ("x" <> space <> strong "xx" <> space <> "x")) , "intraword underscore with opening underscore (#1121)" =: "_foot_ball_" =?> para (emph (text "foot_ball")) ] , testGroup "raw LaTeX" [ "in URL" =: "\\begin\n" =?> para (text "\\begin") ] , testGroup "raw HTML" [ "nesting (issue #1330)" =: "test" =?> rawBlock "html" "" <> plain (str "test") <> rawBlock "html" "" , "invalid tag (issue #1820" =: "" =?> para (text "") , "technically invalid comment" =: "" =?> rawBlock "html" "" , test markdownGH "issue 2469" $ "<\n\na>" =?> para (text "<") <> para (text "a>") ] , testGroup "raw email addresses" [ test markdownGH "issue 2940" $ "**@user**" =?> para (strong (text "@user")) ] , testGroup "emoji" [ test markdownGH "emoji symbols" $ ":smile: and :+1:" =?> para (spanWith ("", ["emoji"], [("data-emoji", "smile")]) "😄" <> space <> str "and" <> space <> spanWith ("", ["emoji"], [("data-emoji", "+1")]) "👍") ] , "unbalanced brackets" =: "[[[[[[[[[[[[hi" =?> para (text "[[[[[[[[[[[[hi") , testGroup "backslash escapes" [ "in URL" =: "[hi](/there\\))" =?> para (link "/there)" "" "hi") , "in title" =: "[hi](/there \"a\\\"a\")" =?> para (link "/there" "a\"a" "hi") , "in reference link title" =: "[hi]\n\n[hi]: /there (a\\)a)" =?> para (link "/there" "a)a" "hi") , "in reference link URL" =: "[hi]\n\n[hi]: /there\\.0" =?> para (link "/there.0" "" "hi") ] , testGroup "bare URIs" (map testBareLink bareLinkTests) , testGroup "autolinks" [ "with unicode dash following" =: "\8212" =?> para (autolink "http://foo.bar" <> str "\8212") , "a partial URL (#2277)" =: "" =?> para (text "") , "with some attributes" =: "{#i .j .z k=v}" =?> para (autolinkWith ("i", ["j", "z"], [("k", "v")]) "http://foo.bar") , "with some attributes and spaces" =: " {#i .j .z k=v}" =?> para (autolink "http://foo.bar" <> space <> text "{#i .j .z k=v}") ] , testGroup "links" [ "no autolink inside link" =: "[](url)" =?> para (link "url" "" (text "")) , "no inline link inside link" =: "[[a](url2)](url)" =?> para (link "url" "" (text "[a](url2)")) , "no bare URI inside link" =: "[https://example.org(](url)" =?> para (link "url" "" (text "https://example.org(")) ] , testGroup "Github wiki links" [ test markdownGH "autolink" $ "[[https://example.org]]" =?> para (link "https://example.org" "wikilink" (str "https://example.org")) , test markdownGH "link with title" $ "[[title|https://example.org]]" =?> para (link "https://example.org" "wikilink" (str "title")) , test markdownGH "bad link with title" $ "[[title|random string]]" =?> para (link "random string" "wikilink" (str "title")) , test markdownGH "autolink not being a link" $ "[[Name of page]]" =?> para (link "Name of page" "wikilink" (str "Name of page")) , test markdownGH "autolink not being a link with a square bracket" $ "[[Name of ]page]]" =?> para (link "Name of ]page" "wikilink" (str "Name of ]page")) , test markdownGH "link with inline start should be a link" $ "[[t`i*t_le|https://example.org]]" =?> para (link "https://example.org" "wikilink" (str "t`i*t_le")) ] , testGroup "Headers" [ "blank line before header" =: "\n# Header\n" =?> headerWith ("header",[],[]) 1 "Header" , "bracketed text (#2062)" =: "# [hi]\n" =?> headerWith ("hi",[],[]) 1 "[hi]" , "ATX header without trailing #s" =: "# Foo bar\n\n" =?> headerWith ("foo-bar",[],[]) 1 "Foo bar" , "ATX header without trailing #s" =: "# Foo bar with # #" =?> headerWith ("foo-bar-with",[],[]) 1 "Foo bar with #" , "setext header" =: "Foo bar\n=\n\n Foo bar 2 \n=" =?> headerWith ("foo-bar",[],[]) 1 "Foo bar" <> headerWith ("foo-bar-2",[],[]) 1 "Foo bar 2" ] , testGroup "Implicit header references" [ "ATX header without trailing #s" =: "# Header\n[header]\n\n[header ]\n\n[ header]" =?> headerWith ("header",[],[]) 1 "Header" <> para (link "#header" "" (text "header")) <> para (link "#header" "" (text "header")) <> para (link "#header" "" (text "header")) , "ATX header with trailing #s" =: "# Foo bar #\n[foo bar]\n\n[foo bar ]\n\n[ foo bar]" =?> headerWith ("foo-bar",[],[]) 1 "Foo bar" <> para (link "#foo-bar" "" (text "foo bar")) <> para (link "#foo-bar" "" (text "foo bar")) <> para (link "#foo-bar" "" (text "foo bar")) , "setext header" =: " Header \n=\n\n[header]\n\n[header ]\n\n[ header]" =?> headerWith ("header",[],[]) 1 "Header" <> para (link "#header" "" (text "header")) <> para (link "#header" "" (text "header")) <> para (link "#header" "" (text "header")) ] , testGroup "smart punctuation" [ test markdownSmart "quote before ellipses" ("'...hi'" =?> para (singleQuoted "…hi")) , test markdownSmart "apostrophe before emph" ("D'oh! A l'*aide*!" =?> para ("D’oh! A l’" <> emph "aide" <> "!")) , test markdownSmart "apostrophe in French" ("À l'arrivée de la guerre, le thème de l'«impossibilité du socialisme»" =?> para "À l’arrivée de la guerre, le thème de l’«impossibilité du socialisme»") , test markdownSmart "apostrophe after math" $ -- issue #1909 "The value of the $x$'s and the systems' condition." =?> para (text "The value of the " <> math "x" <> text "\8217s and the systems\8217 condition.") , test markdownSmart "unclosed double quote" ("**this should \"be bold**" =?> para (strong "this should \8220be bold")) ] , testGroup "sub- and superscripts" [ test markdownMMD "normal subscript" ("H~2~" =?> para ("H" <> subscript "2")) , test markdownMMD "normal superscript" ("x^3^" =?> para ("x" <> superscript "3")) , test markdownMMD "short subscript delimited by space" ("O~2 is dangerous" =?> para ("O" <> subscript "2" <> space <> "is dangerous")) , test markdownMMD "short subscript delimited by newline" ("O~2\n" =?> para ("O" <> subscript "2")) , test markdownMMD "short subscript delimited by EOF" ("O~2" =?> para ("O" <> subscript "2")) , test markdownMMD "short subscript delimited by punctuation" ("O~2." =?> para ("O" <> subscript "2" <> ".")) , test markdownMMD "short subscript delimited by emph" ("O~2*combustible!*" =?> para ("O" <> subscript "2" <> emph "combustible!")) , test markdownMMD "no nesting in short subscripts" ("y~*2*" =?> para ("y~" <> emph "2")) , test markdownMMD "short superscript delimited by space" ("x^2 = y" =?> para ("x" <> superscript "2" <> space <> "= y")) , test markdownMMD "short superscript delimited by newline" ("x^2\n" =?> para ("x" <> superscript "2")) , test markdownMMD "short superscript delimited by ExF" ("x^2" =?> para ("x" <> superscript "2")) , test markdownMMD "short superscript delimited by punctuation" ("x^2." =?> para ("x" <> superscript "2" <> ".")) , test markdownMMD "short superscript delimited by emph" ("x^2*combustible!*" =?> para ("x" <> superscript "2" <> emph "combustible!")) , test markdownMMD "no nesting in short superscripts" ("y^*2*" =?> para ("y^" <> emph "2")) ] , testGroup "footnotes" [ "indent followed by newline and flush-left text" =: "[^1]\n\n[^1]: my note\n\n \nnot in note\n" =?> para (note (para "my note")) <> para "not in note" , "indent followed by newline and indented text" =: "[^1]\n\n[^1]: my note\n \n in note\n" =?> para (note (para "my note" <> para "in note")) , "recursive note" =: "[^1]\n\n[^1]: See [^1]\n" =?> para (note (para "See [^1]")) ] , testGroup "lhs" [ test (purely $ readMarkdown def{ readerExtensions = enableExtension Ext_literate_haskell pandocExtensions }) "inverse bird tracks and html" $ ("> a\n\n< b\n\n
    \n" :: Text) =?> codeBlockWith ("",["haskell","literate"],[]) "a" <> codeBlockWith ("",["haskell"],[]) "b" <> rawBlock "html" "
    \n\n" ] -- the round-trip properties frequently fail -- , testGroup "round trip" -- [ property "p_markdown_round_trip" p_markdown_round_trip -- ] , testGroup "definition lists" [ "no blank space" =: "foo1\n : bar\n\nfoo2\n : bar2\n : bar3\n" =?> definitionList [ (text "foo1", [plain (text "bar")]) , (text "foo2", [plain (text "bar2"), plain (text "bar3")]) ] , "blank space before first def" =: "foo1\n\n : bar\n\nfoo2\n\n : bar2\n : bar3\n" =?> definitionList [ (text "foo1", [para (text "bar")]) , (text "foo2", [para (text "bar2"), plain (text "bar3")]) ] , "blank space before second def" =: "foo1\n : bar\n\nfoo2\n : bar2\n\n : bar3\n" =?> definitionList [ (text "foo1", [plain (text "bar")]) , (text "foo2", [plain (text "bar2"), para (text "bar3")]) ] , "laziness" =: "foo1\n : bar\nbaz\n : bar2\n" =?> definitionList [ (text "foo1", [plain (text "bar" <> softbreak <> text "baz"), plain (text "bar2")]) ] , "no blank space before first of two paragraphs" =: "foo1\n : bar\n\n baz\n" =?> definitionList [ (text "foo1", [para (text "bar") <> para (text "baz")]) ] , "first line not indented" =: "foo\n: bar\n" =?> definitionList [ (text "foo", [plain (text "bar")]) ] , "list in definition" =: "foo\n: - bar\n" =?> definitionList [ (text "foo", [bulletList [plain (text "bar")]]) ] , "in div" =: "
    foo\n: - bar\n
    " =?> divWith nullAttr (definitionList [ (text "foo", [bulletList [plain (text "bar")]]) ]) ] , testGroup "+compact_definition_lists" [ test markdownCDL "basic compact list" $ "foo1\n: bar\n baz\nfoo2\n: bar2\n" =?> definitionList [ (text "foo1", [plain (text "bar" <> softbreak <> text "baz")]) , (text "foo2", [plain (text "bar2")]) ] ] , testGroup "lists" [ "issue #1154" =: " -
    \n first div breaks\n
    \n\n \n\n
    \n with this div too.\n
    \n" =?> bulletList [divWith nullAttr (para $ text "first div breaks") <> rawBlock "html" "" <> divWith nullAttr (para $ text "with this div too.")] , test markdownGH "issue #1636" $ T.unlines [ "* a" , "* b" , "* c" , " * d" ] =?> bulletList [ plain "a" , plain "b" , plain "c" <> bulletList [plain "d"] ] ] , testGroup "entities" [ "character references" =: "⟨ ö" =?> para (text "\10216 ö") , "numeric" =: ",DD" =?> para (text ",DD") , "in link title" =: "[link](/url \"title ⟨ ö ,\")" =?> para (link "/url" "title \10216 ö ," (text "link")) ] , testGroup "citations" [ "simple" =: "@item1" =?> para (cite [ Citation{ citationId = "item1" , citationPrefix = [] , citationSuffix = [] , citationMode = AuthorInText , citationNoteNum = 1 , citationHash = 0 } ] "@item1") , "key starts with digit" =: "@1657:huyghens" =?> para (cite [ Citation{ citationId = "1657:huyghens" , citationPrefix = [] , citationSuffix = [] , citationMode = AuthorInText , citationNoteNum = 1 , citationHash = 0 } ] "@1657:huyghens") ] , let citation = cite [Citation "cita" [] [] AuthorInText 1 0] (str "@cita") in testGroup "footnote/link following citation" -- issue #2083 [ "footnote" =: T.unlines [ "@cita[^note]" , "" , "[^note]: note" ] =?> para ( citation <> note (para $ str "note") ) , "normal link" =: "@cita [link](http://www.com)" =?> para ( citation <> space <> link "http://www.com" "" (str "link") ) , "reference link" =: T.unlines [ "@cita [link][link]" , "" , "[link]: http://www.com" ] =?> para ( citation <> space <> link "http://www.com" "" (str "link") ) , "short reference link" =: T.unlines [ "@cita [link]" , "" , "[link]: http://www.com" ] =?> para ( citation <> space <> link "http://www.com" "" (str "link") ) , "implicit header link" =: T.unlines [ "# Header" , "@cita [Header]" ] =?> headerWith ("header",[],[]) 1 (str "Header") <> para ( citation <> space <> link "#header" "" (str "Header") ) , "regular citation" =: "@cita [foo]" =?> para ( cite [Citation "cita" [] [Str "foo"] AuthorInText 1 0] (str "@cita" <> space <> str "[foo]") ) ] ] pandoc-3.1.3/test/Tests/Readers/Muse.hs0000644000000000000000000016343207346545000016077 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Tests.Readers.Muse Copyright : © 2017-2020 Alexander Krotov License : GNU GPL, version 2 or above Maintainer : Alexander Krotov Stability : alpha Portability : portable Tests for the Muse reader. -} module Tests.Readers.Muse (tests) where import Data.List (intersperse) import Data.Text (Text) import qualified Data.Text as T import Test.Tasty import Test.Tasty.HUnit (HasCallStack) import Tests.Helpers import Text.Pandoc import Text.Pandoc.Arbitrary () import Text.Pandoc.Builder amuse :: Text -> Pandoc amuse = purely $ readMuse def { readerExtensions = extensionsFromList [Ext_amuse]} emacsMuse :: Text -> Pandoc emacsMuse = purely $ readMuse def { readerExtensions = emptyExtensions } infix 4 =: (=:) :: (ToString c, HasCallStack) => String -> (Text, c) -> TestTree (=:) = test amuse spcSep :: [Inlines] -> Inlines spcSep = mconcat . intersperse space simpleTable' :: Int -> Caption -> [Blocks] -> [[Blocks]] -> Blocks simpleTable' n capt headers rows = table capt (replicate n (AlignDefault, ColWidthDefault)) (TableHead nullAttr $ toHeaderRow headers) [TableBody nullAttr 0 [] $ map toRow rows] (TableFoot nullAttr []) where toRow = Row nullAttr . map simpleCell toHeaderRow l = [toRow l | not (null l)] tests :: [TestTree] tests = [ testGroup "Inlines" [ "Plain String" =: "Hello, World" =?> para "Hello, World" , "Muse is not XML" =: "<" =?> para "<" , "Emphasis" =: "*Foo bar*" =?> para (emph . spcSep $ ["Foo", "bar"]) , "Newline in the beginning of emphasis" =: "*\nFoo bar*" =?> para (text "*\nFoo bar*") , "Newline in the end of emphasis" =: "*Foo bar\n*" =?> para (text "*Foo bar\n*") , "Comma after closing *" =: "Foo *bar*, baz" =?> para ("Foo " <> emph "bar" <> ", baz") , "Letter after closing *" =: "Foo *bar*x baz" =?> para "Foo *bar*x baz" , "Letter before opening *" =: "Foo x*bar* baz" =?> para "Foo x*bar* baz" , "Digit after closing *" =: "Foo *bar*0 baz" =?> para "Foo *bar*0 baz" , "Emphasis tag" =: "Foo bar" =?> para (emph . spcSep $ ["Foo", "bar"]) , "Strong" =: "**Cider**" =?> para (strong "Cider") , "Strong tag" =: "Strong" =?> para (strong "Strong") , "Strong Emphasis" =: "***strength***" =?> para (strong . emph $ "strength") , "Strong inside emphasis" =: "*foo **bar** baz*" =?> para (emph (text "foo " <> strong (text "bar") <> text " baz")) , "Emphasis inside strong" =: "**foo *bar* baz**" =?> para (strong (text "foo " <> emph (text "bar") <> text " baz")) , "Opening asterisk can't be preceded by another one" =: "**foo*" =?> para "**foo*" , "Asterisk between words does not terminate emphasis" =: "*foo*bar*" =?> para (emph "foo*bar") , "Two asterisks between words do not terminate emphasis" =: "*foo**bar*" =?> para (emph "foo**bar") , "Three asterisks between words do not terminate emphasis" =: "*foo***bar*" =?> para (emph "foo***bar") , "Two asterisks between words do not terminate strong" =: "**foo**bar**" =?> para (strong "foo**bar") , "Three asterisks between words do not terminate strong" =: "**foo***bar**" =?> para (strong "foo***bar") , "Three asterisks between words do not terminate strong emphasis" =: "***foo***bar***" =?> para (strong . emph $ "foo***bar") , "Six asterisks between words do not terminate strong emphasis" =: "***foo******bar***" =?> para (strong . emph $ "foo******bar") , test emacsMuse "Underline" ("_Underline_" =?> para (underline "Underline")) , "Superscript tag" =: "Superscript" =?> para (superscript "Superscript") , "Subscript tag" =: "Subscript" =?> para (subscript "Subscript") , "Strikeout tag" =: "Strikeout" =?> para (strikeout "Strikeout") , "Opening inline tags" =: "foo bar baz" =?> para "foo bar baz" , "Closing inline tags" =: "foo bar baz" =?> para "foo bar baz" , "Tag soup" =: "foo bar
    baz" =?> para "foo bar baz" -- Both inline tags must be within the same paragraph , "No multiparagraph inline tags" =: T.unlines [ "First line" , "Second line" , "" , "Fourth line" ] =?> para "First line\nSecond line" <> para "Fourth line" , "Linebreak" =: "Line
    break" =?> para ("Line" <> linebreak <> "break") , "Trailing whitespace inside paragraph" =: T.unlines [ "First line " -- trailing whitespace here , "second line" ] =?> para "First line\nsecond line" , "Non-breaking space" =: "Foo~~bar" =?> para "Foo\160bar" , "Single ~" =: "Foo~bar" =?> para "Foo~bar" , testGroup "Code markup" [ "Code" =: "=foo(bar)=" =?> para (code "foo(bar)") , "Not code" =: "a=b= =c=d" =?> para (text "a=b= =c=d") -- Emacs Muse 3.20 parses this as code, we follow Amusewiki , "Not code if closing = is detached" =: "=this is not a code =" =?> para "=this is not a code =" , "Not code if opening = is detached" =: "= this is not a code=" =?> para "= this is not a code=" , "Code if followed by comma" =: "Foo =bar=, baz" =?> para (text "Foo " <> code "bar" <> text ", baz") , "Not code if followed by digit" =: "Foo =bar=0 baz" =?> para (text "Foo =bar=0 baz") , "One character code" =: "=c=" =?> para (code "c") , "Code with equal sign" =: "=foo = bar=" =?> para (code "foo = bar") , "Three = characters is not a code" =: "===" =?> para "===" , "Multiline code markup" =: "foo =bar\nbaz= end of code" =?> para (text "foo " <> code "bar\nbaz" <> text " end of code") {- Emacs Muse 3.20 has a bug: it publishes -

    foo bar - - baz foo

    - which is displayed as one paragraph by browsers. - We follow Amusewiki here and avoid joining paragraphs. -} , "No multiparagraph code" =: T.unlines [ "foo =bar" , "" , "baz= foo" ] =?> para "foo =bar" <> para "baz= foo" , "Code at the beginning of paragraph but not first column" =: " - =foo=" =?> bulletList [ para $ code "foo" ] ] , "Code tag" =: "foo(bar)" =?> para (code "foo(bar)") , "Math tag" =: "\\sum_{i=0}^n i^2" =?> para (math "\\sum_{i=0}^n i^2") , "Verbatim tag" =: "***" =?> para (emph "*") , "Verbatim inside code" =: "foo" =?> para (code "foo") , "Verbatim tag after text" =: "Foo bar" =?> para "Foo bar" , "Verbatim tag escapes block level markup" =: T.unlines [ "Foo bar" , "* Not a heading" , "baz" ] =?> para "Foo bar\n* Not a heading\nbaz" , "Class tag" =: "bar" =?> para (spanWith ("", ["foo"], []) "bar") , "Class tag without name" =: "foobar" =?> para (spanWith ("", [], []) "foobar") , "RTL" =: "<<>>" =?> para (spanWith ("", [], [("dir", "rtl")]) "foo bar") , "LTR" =: ">>>foo bar<<<" =?> para (spanWith ("", [], [("dir", "ltr")]) "foo bar") -- tag should match with the last tag, not verbatim one , "Nested \"
    \" inside em tag" =: "foobar
    " =?> para (emph "foobar") , testGroup "Links" [ "Link without description" =: "[[https://amusewiki.org/]]" =?> para (link "https://amusewiki.org/" "" (str "https://amusewiki.org/")) , "Link with description" =: "[[https://amusewiki.org/][A Muse Wiki]]" =?> para (link "https://amusewiki.org/" "" (text "A Muse Wiki")) , "Link with empty description" =: "[[https://amusewiki.org/][]]" =?> para (link "https://amusewiki.org/" "" (text "")) , "Image" =: "[[image.jpg]]" =?> para (image "image.jpg" "" mempty) , "Closing bracket is not allowed in image filename" =: "[[foo]bar.jpg]]" =?> para (text "[[foo]bar.jpg]]") , "Image with description" =: "[[image.jpg][Image]]" =?> para (image "image.jpg" "" (text "Image")) , "Image with space in filename" =: "[[image name.jpg]]" =?> para (image "image name.jpg" "" mempty) , "Image with width" =: "[[image.jpg 60]]" =?> para (imageWith ("", [], [("width", "60%")]) "image.jpg" mempty mempty) , "At least one space is required between image filename and width" =: "[[image.jpg60]]" =?> para (link "image.jpg60" mempty (str "image.jpg60")) , "Left-aligned image with width" =: "[[image.png 60 l][Image]]" =?> para (imageWith ("", ["align-left"], [("width", "60%")]) "image.png" "" (str "Image")) , "Right-aligned image with width" =: "[[image.png 60 r][Image]]" =?> para (imageWith ("", ["align-right"], [("width", "60%")]) "image.png" "" (str "Image")) , "Image link" =: "[[URL:image.jpg]]" =?> para (link "image.jpg" "" (str "image.jpg")) , "Image link with description" =: "[[URL:image.jpg][Image]]" =?> para (link "image.jpg" "" (text "Image")) -- Implicit links are supported in Emacs Muse, but not in Amusewiki: -- https://github.com/melmothx/text-amuse/issues/18 -- -- This test also makes sure '=' without whitespace is not treated as code markup , "No implicit links" =: "http://example.org/index.php?action=view&id=1" =?> para "http://example.org/index.php?action=view&id=1" , "Link with empty URL" =: "[[][empty URL]]" =?> para (link "" "" (text "empty URL")) , "No footnotes inside links" =: "[[https://amusewiki.org/][foo[1]]" =?> para (link "https://amusewiki.org/" "" (text "foo[1")) , "Image inside link" =: "[[https://amusewiki.org/][Image [[image.png][with it's own description]] inside link description]]" =?> para (link "https://amusewiki.org/" "" (text "Image " <> image "image.png" "" (text "with it's own description") <> text " inside link description")) , "Link inside image description" =: "[[image.jpg][Image from [[https://amusewiki.org/]]]]" =?> para (image "image.jpg" "" (text "Image from " <> link "https://amusewiki.org/" "" (str "https://amusewiki.org/"))) ] , testGroup "Literal" [ test emacsMuse "Inline literal" ("Foolitbar" =?> para (text "Foo" <> rawInline "html" "lit" <> text "bar")) , test emacsMuse "Single inline literal in paragraph" ("lit" =?> para (rawInline "html" "lit")) ] ] , testGroup "Blocks" [ "Block elements end paragraphs" =: T.unlines [ "First paragraph" , "----" , "Second paragraph" ] =?> para (text "First paragraph") <> horizontalRule <> para (text "Second paragraph") , testGroup "Horizontal rule" [ "Less than 4 dashes is not a horizontal rule" =: "---" =?> para (text "---") , "4 dashes is a horizontal rule" =: "----" =?> horizontalRule , "5 dashes is a horizontal rule" =: "-----" =?> horizontalRule , "4 dashes with spaces is a horizontal rule" =: "---- " =?> horizontalRule ] , testGroup "Page breaks" [ "Page break" =: " * * * * *" =?> divWith ("", [], [("style", "page-break-before: always;")]) mempty , "Page break with trailing space" =: " * * * * * " =?> divWith ("", [], [("style", "page-break-before: always;")]) mempty ] , testGroup "Paragraphs" [ "Simple paragraph" =: T.unlines [ "First line" , "second line." ] =?> para "First line\nsecond line." , "Indented paragraph" =: T.unlines [ " First line" , "second line." ] =?> para "First line\nsecond line." -- Emacs Muse starts a blockquote on the second line. -- We copy Amusewiki behavior and require a blank line to start a blockquote. , "Indentation in the middle of paragraph" =: T.unlines [ "First line" , " second line" , "third line" ] =?> para "First line\nsecond line\nthird line" , "Quote" =: " This is a quotation\n" =?> blockQuote (para "This is a quotation") , "Indentation does not indicate quote inside quote tag" =: T.unlines [ "" , " Not a nested quote" , "" ] =?> blockQuote (para "Not a nested quote") , "Multiline quote" =: T.unlines [ " This is a quotation" , " with a continuation" ] =?> blockQuote (para "This is a quotation\nwith a continuation") , testGroup "Div" [ "Div without id" =: T.unlines [ "
    " , "Foo bar" , "
    " ] =?> divWith nullAttr (para "Foo bar") , "Div with id" =: T.unlines [ "
    " , "Foo bar" , "
    " ] =?> divWith ("foo", [], []) (para "Foo bar") ] , "Biblio" =: T.unlines [ "" , "" , "Author, *Title*, description" , "" , "Another author, *Another title*, another description" , "" , "" ] =?> divWith ("", ["biblio"], []) (para (text "Author, " <> emph "Title" <> ", description") <> para (text "Another author, " <> emph "Another title" <> text ", another description")) , "Play" =: T.unlines [ "" , "Foo bar" , "" ] =?> divWith ("", ["play"], []) (para "Foo bar") , "Verse" =: T.unlines [ "> This is" , "> First stanza" , ">" -- Emacs produces verbatim ">" here, we follow Amusewiki , "> And this is" , "> Second stanza" , ">" , "" , ">" , "" , "> Another verse" , "> is here" ] =?> lineBlock [ "This is" , "First stanza" , "" , "And this is" , "\160\160Second stanza" , "" ] <> lineBlock [ "" ] <> lineBlock [ "Another verse" , "\160\160\160is here" ] ] , "Verse in list" =: " - > foo" =?> bulletList [ lineBlock [ "foo" ] ] , "Verse line starting with emphasis" =: "> *foo* bar" =?> lineBlock [ emph "foo" <> text " bar" ] , "Multiline verse in list" =: T.unlines [ " - > foo" , " > bar" ] =?> bulletList [ lineBlock [ "foo", "bar" ] ] , "Paragraph after verse in list" =: T.unlines [ " - > foo" , " bar" ] =?> bulletList [ lineBlock [ "foo" ] <> para "bar" ] , "Empty quote tag" =: T.unlines [ "" , "" ] =?> blockQuote mempty , "Quote tag" =: T.unlines [ "" , "Hello, world" , "" ] =?> blockQuote (para $ text "Hello, world") , "Nested quote tag" =: T.unlines [ "" , "foo" , "" , "bar" , "" , "baz" , "" ] =?> blockQuote (para "foo" <> blockQuote (para "bar") <> para "baz") , "Indented quote inside list" =: T.unlines [ " - " , " foo" , " " ] =?> bulletList [ blockQuote (para "foo") ] , "Verse tag" =: T.unlines [ "" , "" , "Foo bar baz" , " One two three" , "" , "" ] =?> lineBlock [ "" , text "Foo bar baz" , text "\160\160One two three" , "" ] , "Verse tag with empty line inside" =: T.unlines [ "" , "" , "" ] =?> lineBlock [ "" ] , "Verse tag with verbatim close tag inside" =: T.unlines [ "" , "" , "" ] =?> lineBlock [ "" ] , testGroup "Example" [ "Braces on separate lines" =: T.unlines [ "{{{" , "Example line" , "}}}" ] =?> codeBlock "Example line" , "Spaces after opening braces" =: T.unlines [ "{{{ " , "Example line" , "}}}" ] =?> codeBlock "Example line" , "One blank line in the beginning" =: T.unlines [ "{{{" , "" , "Example line" , "}}}" ] =?> codeBlock "\nExample line" , "One blank line in the end" =: T.unlines [ "{{{" , "Example line" , "" , "}}}" ] =?> codeBlock "Example line\n" , "Indented braces" =: T.unlines [ " - {{{" , " Example line" , " }}}" ] =?> bulletList [ codeBlock "Example line" ] , "Tabs" =: T.unlines [ "{{{" , "\t foo" , "\t\t" , "\t bar" , "}}}" ] =?> codeBlock " foo\n\t\n bar" -- Amusewiki requires braces to be on separate line, -- this is an extension. , "One line" =: "{{{Example line}}}" =?> codeBlock "Example line" ] , testGroup "Example tag" [ "Tags on separate lines" =: T.unlines [ "" , "Example line" , "" ] =?> codeBlock "Example line" , "One line" =: "Example line" =?> codeBlock "Example line" , "One blank line in the beginning" =: T.unlines [ "" , "" , "Example line" , "" ] =?> codeBlock "\nExample line" , "One blank line in the end" =: T.unlines [ "" , "Example line" , "" , "" ] =?> codeBlock "Example line\n" , "Example inside list" =: T.unlines [ " - " , " foo" , " " ] =?> bulletList [ codeBlock "foo" ] , "Empty example inside list" =: T.unlines [ " - " , " " ] =?> bulletList [ codeBlock "" ] , "Example inside list with empty lines" =: T.unlines [ " - " , " foo" , " " , "" , " bar" , "" , " " , " baz" , " " ] =?> bulletList [ codeBlock "foo" <> para "bar" <> codeBlock "baz" ] , "Indented example inside list" =: T.unlines [ " - " , " foo" , " " ] =?> bulletList [ codeBlock "foo" ] , "Example inside definition list" =: T.unlines [ " foo :: " , " bar" , " " ] =?> definitionList [ ("foo", [codeBlock "bar"]) ] , "Example inside list definition with empty lines" =: T.unlines [ " term :: " , " foo" , " " , "" , " bar" , "" , " " , " baz" , " " ] =?> definitionList [ ("term", [codeBlock "foo" <> para "bar" <> codeBlock "baz"]) ] , "Example inside note" =: T.unlines [ "Foo[1]" , "" , "[1] " , " bar" , " " ] =?> para ("Foo" <> note (codeBlock "bar")) ] , testGroup "Literal blocks" [ test emacsMuse "Literal block" (T.unlines [ "" , "\\newpage" , "" ] =?> rawBlock "latex" "\\newpage") ] , "Center" =: T.unlines [ "
    " , "Hello, world" , "
    " ] =?> para (text "Hello, world") , "Right" =: T.unlines [ "" , "Hello, world" , "" ] =?> para (text "Hello, world") , testGroup "Comments" [ "Comment tag" =: "\nThis is a comment\n" =?> (mempty::Blocks) , "Line comment" =: "; Comment" =?> (mempty::Blocks) , "Empty comment" =: ";" =?> (mempty::Blocks) , "Text after empty comment" =: ";\nfoo" =?> para "foo" -- Make sure we don't consume newline while looking for whitespace , "Not a comment (does not start with a semicolon)" =: " ; Not a comment" =?> para (text "; Not a comment") , "Not a comment (has no space after semicolon)" =: ";Not a comment" =?> para (text ";Not a comment") , "Not a comment (semicolon not in the first column)" =: " - ; foo" =?> bulletList [para "; foo"] ] , testGroup "Headers" [ "Part" =: "* First level" =?> header 1 "First level" , "Chapter" =: "** Second level" =?> header 2 "Second level" , "Section" =: "*** Third level" =?> header 3 "Third level" , "Subsection" =: "**** Fourth level" =?> header 4 "Fourth level" , "Subsubsection" =: "***** Fifth level" =?> header 5 "Fifth level" , "Whitespace is required after *" =: "**Not a header" =?> para "**Not a header" , "No headers in footnotes" =: T.unlines [ "Foo[1]" , "[1] * Bar" ] =?> para (text "Foo" <> note (para "* Bar")) , "No headers in quotes" =: T.unlines [ "" , "* Hi" , "" ] =?> blockQuote (para "* Hi") , "Headers consume anchors" =: T.unlines [ "; A comment to make sure anchor is not parsed as a directive" , "#bar" , "** Foo" ] =?> headerWith ("bar",[],[]) 2 "Foo" , "Headers don't consume anchors separated with a blankline" =: T.unlines [ "; A comment to make sure anchor is not parsed as a directive" , "#bar" , "" , "** Foo" ] =?> para (spanWith ("bar", [], []) mempty) <> header 2 "Foo" , "Headers terminate paragraph" =: T.unlines [ "foo" , "* bar" ] =?> para "foo" <> header 1 "bar" , "Headers terminate lists" =: T.unlines [ " - foo" , "* bar" ] =?> bulletList [ para "foo" ] <> header 1 "bar" , test emacsMuse "Paragraphs terminate Emacs Muse headers" (T.unlines [ "* Foo" , "bar" ] =?> header 1 "Foo" <> para "bar") , "Paragraphs don't terminate Text::Amuse headers" =: T.unlines [ "* Foo" , "bar" ] =?> header 1 "Foo\nbar" , "Empty header" =: T.unlines [ "Foo" , "" , "* " , "" , "bar" ] =?> para (text "Foo") <> header 1 "" <> para (text "bar") , test (purely $ readMuse def { readerExtensions = extensionsFromList [Ext_amuse, Ext_auto_identifiers]}) "Auto identifiers" (T.unlines [ "* foo" , "** Foo" , "* bar" , "** foo" , "* foo" ] =?> headerWith ("foo",[],[]) 1 "foo" <> headerWith ("foo-1",[],[]) 2 "Foo" <> headerWith ("bar",[],[]) 1 "bar" <> headerWith ("foo-2",[],[]) 2 "foo" <> headerWith ("foo-3",[],[]) 1 "foo") ] , testGroup "Directives" [ "Title" =: "#title Document title" =?> let titleInline = toList "Document title" meta = setMeta "title" (MetaInlines titleInline) nullMeta in Pandoc meta mempty -- Emacs Muse documentation says that "You can use any combination -- of uppercase and lowercase letters for directives", -- but also allows '-', which is not documented, but used for disable-tables. , test emacsMuse "Disable tables" ("#disable-tables t" =?> Pandoc (setMeta "disable-tables" (MetaInlines $ toList "t") nullMeta) mempty) , "Multiple directives" =: T.unlines [ "#title Document title" , "#subtitle Document subtitle" ] =?> Pandoc (setMeta "title" (MetaInlines $ toList "Document title") $ setMeta "subtitle" (MetaInlines $ toList "Document subtitle") nullMeta) mempty , "Multiline directive" =: T.unlines [ "#title Document title" , "#notes First line" , "and second line" , "#author Name" ] =?> Pandoc (setMeta "title" (MetaInlines $ toList "Document title") $ setMeta "notes" (MetaInlines $ toList "First line\nand second line") $ setMeta "author" (MetaInlines $ toList "Name") nullMeta) mempty , "Amusewiki's #cover is translated to pandoc's #cover-image" =: "#cover cover.png" =?> let titleInline = toList "cover.png" meta = setMeta "cover-image" (MetaInlines titleInline) nullMeta in Pandoc meta mempty ] , testGroup "Anchors" [ "Anchor" =: T.unlines [ "; A comment to make sure anchor is not parsed as a directive" , "#anchor Target" ] =?> para (spanWith ("anchor", [], []) mempty <> "Target") , "Anchor cannot start with a number" =: T.unlines [ "; A comment to make sure anchor is not parsed as a directive" , "#0notanchor Target" ] =?> para "#0notanchor Target" , "Not anchor if starts with a space" =: " #notanchor Target" =?> para "#notanchor Target" , "Anchor inside a paragraph" =: T.unlines [ "Paragraph starts here" , "#anchor and ends here." ] =?> para ("Paragraph starts here\n" <> spanWith ("anchor", [], []) mempty <> "and ends here.") , "Anchor with \"-\"" =: T.unlines [ "; A comment to make sure anchor is not parsed as a directive" , "#anchor-id Target" ] =?> para (spanWith ("anchor-id", [], []) mempty <> "Target") ] , testGroup "Footnotes" [ "Simple footnote" =: T.unlines [ "Here is a footnote[1]." , "" , "[1] Footnote contents" ] =?> para (text "Here is a footnote" <> note (para "Footnote contents") <> str ".") , "Simple secondary footnote" =: T.unlines [ "Here is a secondary note{1}." , "" , "{1} Secondary note contents" ] =?> para (text "Here is a secondary note" <> note (para "Secondary note contents") <> str ".") , "Missing footnote" =: "Foo[1]" =?> para "Foo[1]" , "Missing secondary note" =: "Foo{1}" =?> para "Foo{1}" , "Wrong note type" =: T.unlines [ "Here is a secondary note{1}" , "" , "Footnote contents[1]" ] =?> para "Here is a secondary note{1}" <> para "Footnote contents[1]" , "Recursive footnote" =: T.unlines [ "Start recursion here[1]" , "" , "[1] Recursion continues here[1]" ] =?> para (text "Start recursion here" <> note (para "Recursion continues here[1]")) , "Nested footnotes" =: T.unlines [ "Footnote: [1]" , "" , "[1] Nested: [2]" , "" , "[2] No recursion: [1]" ] =?> para (text "Footnote: " <> note (para (text "Nested: " <> note (para $ text "No recursion: [1]")))) , "No zero footnotes" =: T.unlines [ "Here is a footnote[0]." , "" , "[0] Footnote contents" ] =?> para "Here is a footnote[0]." <> para "[0] Footnote contents" , "Footnotes can't start with zero" =: T.unlines [ "Here is a footnote[01]." , "" , "[01] Footnote contents" ] =?> para "Here is a footnote[01]." <> para "[01] Footnote contents" , testGroup "Multiparagraph footnotes" [ "Amusewiki multiparagraph footnotes" =: T.unlines [ "Multiparagraph[1] footnotes[2]" , "" , "[1] First footnote paragraph" , "" , " Second footnote paragraph" , "with continuation" , "" , "Not a note" , "[2] Second footnote" ] =?> para (text "Multiparagraph" <> note (para "First footnote paragraph" <> para "Second footnote paragraph\nwith continuation") <> text " footnotes" <> note (para "Second footnote")) <> para (text "Not a note") -- Verse requires precise indentation, so it is good to test indentation requirements , "Note continuation with verse" =: T.unlines [ "Foo[1]" , "" , "[1] Bar" , "" , " > Baz" ] =?> para ("Foo" <> note (para "Bar" <> lineBlock ["Baz"])) , "Footnote ending in self-terminating element and followed by paragraph" =: T.unlines [ "Foo[1]" , "" , "[1] > bar" , "baz" ] =?> para (str "Foo" <> note (lineBlock ["bar"])) <> para (str "baz") , "Footnote starting with empty line" =: T.unlines [ "Foo[1]" , "" , "[1]" -- No space character after note marker , "" , " Bar" ] =?> para (str "Foo" <> note (para $ text "Bar")) , "Indentation in footnote starting with empty line" =: T.unlines [ "Foo[1]" , "" , "[1]" -- No space character after note marker , "" , " Bar" ] =?> para (str "Foo" <> note mempty) <> blockQuote (para $ text "Bar") , test emacsMuse "Emacs multiparagraph footnotes" (T.unlines [ "First footnote reference[1] and second footnote reference[2]." , "" , "[1] First footnote paragraph" , "" , "Second footnote" , "paragraph" , "" , "[2] Third footnote paragraph" , "" , "Fourth footnote paragraph" ] =?> para (text "First footnote reference" <> note (para "First footnote paragraph" <> para "Second footnote\nparagraph") <> text " and second footnote reference" <> note (para "Third footnote paragraph" <> para "Fourth footnote paragraph") <> text ".")) ] ] ] , testGroup "Tables" [ "Two cell table" =: "One | Two" =?> simpleTable [] [[plain "One", plain "Two"]] , "Table with multiple words" =: "One two | three four" =?> simpleTable [] [[plain "One two", plain "three four"]] , "Not a table" =: "One| Two" =?> para (text "One| Two") , "Not a table again" =: "One |Two" =?> para (text "One |Two") , "Two line table" =: T.unlines [ "One | Two" , "Three | Four" ] =?> simpleTable [] [[plain "One", plain "Two"], [plain "Three", plain "Four"]] , "Table with one header" =: T.unlines [ "First || Second" , "Third | Fourth" ] =?> simpleTable [plain "First", plain "Second"] [[plain "Third", plain "Fourth"]] , "Table with two headers" =: T.unlines [ "First || header" , "Second || header" , "Foo | bar" ] =?> simpleTable [plain "First", plain "header"] [[plain "Second", plain "header"], [plain "Foo", plain "bar"]] , "Header and footer reordering" =: T.unlines [ "Foo ||| bar" , "Baz || foo" , "Bar | baz" ] =?> simpleTable [plain "Baz", plain "foo"] [[plain "Bar", plain "baz"], [plain "Foo", plain "bar"]] , "Table with caption" =: T.unlines [ "Foo || bar || baz" , "First | row | here" , "Second | row | there" , "|+ Table caption +|" ] =?> simpleTable' 3 (simpleCaption $ plain $ text "Table caption") [plain "Foo", plain "bar", plain "baz"] [[plain "First", plain "row", plain "here"], [plain "Second", plain "row", plain "there"]] , "Table caption with +" =: T.unlines [ "Foo | bar" , "|+ Table + caption +|" ] =?> simpleTable' 2 (simpleCaption $ plain $ text "Table + caption") [] [[plain "Foo", plain "bar"]] , "Caption without table" =: "|+ Foo bar baz +|" =?> simpleTable' 0 (simpleCaption $ plain $ text "Foo bar baz") [] [] , "Table indented with space" =: T.unlines [ " Foo | bar" , " Baz | foo" , " Bar | baz" ] =?> simpleTable [] [[plain "Foo", plain "bar"], [plain "Baz", plain "foo"], [plain "Bar", plain "baz"]] , "Empty cells" =: T.unlines [ " | Foo" , " |" , " bar |" , " || baz" ] =?> simpleTable [plain "", plain "baz"] [[plain "", plain "Foo"], [plain "", plain ""], [plain "bar", plain ""]] , "Empty cell in the middle" =: T.unlines [ " 1 | 2 | 3" , " 4 | | 6" , " 7 | 8 | 9" ] =?> simpleTable [] [[plain "1", plain "2", plain "3"], [plain "4", mempty, plain "6"], [plain "7", plain "8", plain "9"]] , "Grid table" =: T.unlines [ "+-----+-----+" , "| foo | bar |" , "+-----+-----+" ] =?> simpleTable [] [[para "foo", para "bar"]] , "Grid table inside list" =: T.unlines [ " - +-----+-----+" , " | foo | bar |" , " +-----+-----+" ] =?> bulletList [simpleTable [] [[para "foo", para "bar"]]] , "Grid table with two rows" =: T.unlines [ "+-----+-----+" , "| foo | bar |" , "+-----+-----+" , "| bat | baz |" , "+-----+-----+" ] =?> simpleTable [] [[para "foo", para "bar"] ,[para "bat", para "baz"]] , "Grid table inside grid table" =: T.unlines [ "+-----+" , "|+---+|" , "||foo||" , "|+---+|" , "+-----+" ] =?> simpleTable [] [[simpleTable [] [[para "foo"]]]] , "Grid table with example" =: T.unlines [ "+------------+" , "| |" , "| foo |" , "| |" , "+------------+" ] =?> simpleTable [] [[codeBlock "foo"]] ] , testGroup "Lists" [ "Bullet list" =: T.unlines [ " - Item1" , "" , " - Item2" ] =?> bulletList [ para "Item1" , para "Item2" ] , "Ordered list" =: T.unlines [ " 1. Item1" , "" , " 2. Item2" ] =?> orderedListWith (1, Decimal, Period) [ para "Item1" , para "Item2" ] , "Ordered list with implicit numbers" =: T.unlines [ " 1. Item1" , "" , " 1. Item2" , "" , " 1. Item3" ] =?> orderedListWith (1, Decimal, Period) [ para "Item1" , para "Item2" , para "Item3" ] , "Ordered list with roman numerals" =: T.unlines [ " i. First" , " ii. Second" , " iii. Third" , " iv. Fourth" ] =?> orderedListWith (1, LowerRoman, Period) [ para "First" , para "Second" , para "Third" , para "Fourth" ] , "Bullet list with empty items" =: T.unlines [ " -" , "" , " - Item2" ] =?> bulletList [ mempty , para "Item2" ] , "Ordered list with empty items" =: T.unlines [ " 1." , "" , " 2." , "" , " 3. Item3" ] =?> orderedListWith (1, Decimal, Period) [ mempty , mempty , para "Item3" ] , "Bullet list with last item empty" =: T.unlines [ " -" , "" , "foo" ] =?> bulletList [ mempty ] <> para "foo" , testGroup "Nested lists" [ "Nested bullet list" =: T.unlines [ " - Item1" , " - Item2" , " - Item3" , " - Item4" , " - Item5" , " - Item6" ] =?> bulletList [ para "Item1" <> bulletList [ para "Item2" <> bulletList [ para "Item3" ] , para "Item4" <> bulletList [ para "Item5" ] ] , para "Item6" ] , "Nested ordered list" =: T.unlines [ " 1. Item1" , " 1. Item2" , " 1. Item3" , " 2. Item4" , " 1. Item5" , " 2. Item6" ] =?> orderedListWith (1, Decimal, Period) [ para "Item1" <> orderedListWith (1, Decimal, Period) [ para "Item2" <> orderedListWith (1, Decimal, Period) [ para "Item3" ] , para "Item4" <> orderedListWith (1, Decimal, Period) [ para "Item5" ] ] , para "Item6" ] , "Mixed nested list" =: T.unlines [ " - Item1" , " - Item2" , " - Item3" , " - Item4" , " 1. Nested" , " 2. Ordered" , " 3. List" ] =?> bulletList [ mconcat [ para "Item1" , bulletList [ para "Item2" , para "Item3" ] ] , mconcat [ para "Item4" , orderedListWith (1, Decimal, Period) [ para "Nested" , para "Ordered" , para "List" ] ] ] , "Text::Amuse includes only one space in list marker" =: T.unlines [ " - First item" , " - Nested item" ] =?> bulletList [ para "First item" <> bulletList [ para "Nested item"]] ] , "List continuation" =: T.unlines [ " - a" , "" , " b" , "" , " c" ] =?> bulletList [ mconcat [ para "a" , para "b" , para "c" ] ] , "List continuation after nested list" =: T.unlines [ " - - foo" , "" , " bar" ] =?> bulletList [ bulletList [ para "foo" ] <> para "bar" ] -- Emacs Muse allows to separate lists with two or more blank lines. -- Text::Amuse (Amusewiki engine) always creates a single list as of version 0.82. -- pandoc follows Emacs Muse behavior , testGroup "Blank lines" [ "Blank lines between list items are not required" =: T.unlines [ " - Foo" , " - Bar" ] =?> bulletList [ para "Foo" , para "Bar" ] , "One blank line between list items is allowed" =: T.unlines [ " - Foo" , "" , " - Bar" ] =?> bulletList [ para "Foo" , para "Bar" ] , "Two blank lines separate lists" =: T.unlines [ " - Foo" , "" , "" , " - Bar" ] =?> bulletList [ para "Foo" ] <> bulletList [ para "Bar" ] , "No blank line after multiline first item" =: T.unlines [ " - Foo" , " bar" , " - Baz" ] =?> bulletList [ para "Foo\nbar" , para "Baz" ] , "One blank line after multiline first item" =: T.unlines [ " - Foo" , " bar" , "" , " - Baz" ] =?> bulletList [ para "Foo\nbar" , para "Baz" ] , "Two blank lines after multiline first item" =: T.unlines [ " - Foo" , " bar" , "" , "" , " - Baz" ] =?> bulletList [ para "Foo\nbar" ] <> bulletList [ para "Baz" ] , "No blank line after list continuation" =: T.unlines [ " - Foo" , "" , " bar" , " - Baz" ] =?> bulletList [ para "Foo" <> para "bar" , para "Baz" ] , "One blank line after list continuation" =: T.unlines [ " - Foo" , "" , " bar" , "" , " - Baz" ] =?> bulletList [ para "Foo" <> para "bar" , para "Baz" ] , "Two blank lines after list continuation" =: T.unlines [ " - Foo" , "" , " bar" , "" , "" , " - Baz" ] =?> bulletList [ para "Foo" <> para "bar" ] <> bulletList [ para "Baz" ] , "No blank line after blockquote" =: T.unlines [ " - " , " foo" , " " , " - bar" ] =?> bulletList [ blockQuote $ para "foo", para "bar" ] , "One blank line after blockquote" =: T.unlines [ " - " , " foo" , " " , "" , " - bar" ] =?> bulletList [ blockQuote $ para "foo", para "bar" ] , "Two blank lines after blockquote" =: T.unlines [ " - " , " foo" , " " , "" , "" , " - bar" ] =?> bulletList [ blockQuote $ para "foo" ] <> bulletList [ para "bar" ] , "No blank line after verse" =: T.unlines [ " - > foo" , " - bar" ] =?> bulletList [ lineBlock [ "foo" ], para "bar" ] , "One blank line after verse" =: T.unlines [ " - > foo" , "" , " - bar" ] =?> bulletList [ lineBlock [ "foo" ], para "bar" ] , "Two blank lines after verse" =: T.unlines [ " - > foo" , "" , "" , " - bar" ] =?> bulletList [ lineBlock [ "foo" ] ] <> bulletList [ para "bar" ] ] , "List ending in self-terminating element and followed by paragraph" =: T.unlines [ " - > Foo" , "bar" ] =?> bulletList [lineBlock ["Foo"]] <> para (str "bar") -- Test that definition list requires a leading space. -- Emacs Muse does not require a space, we follow Amusewiki here. , "Not a definition list" =: T.unlines [ "First :: second" , "Foo :: bar" ] =?> para "First :: second\nFoo :: bar" , test emacsMuse "Emacs Muse definition list" (T.unlines [ "First :: second" , "Foo :: bar" ] =?> definitionList [ ("First", [ para "second" ]) , ("Foo", [ para "bar" ]) ]) , "Definition list" =: T.unlines [ " First :: second" , " Foo :: bar" ] =?> definitionList [ ("First", [ para "second" ]) , ("Foo", [ para "bar" ]) ] , "Definition list term cannot include newline" =: T.unlines [ " Foo" -- "Foo" is not a part of the definition list term , " Bar :: baz" ] =?> para "Foo" <> definitionList [ ("Bar", [ para "baz" ]) ] , "One-line definition list" =: " foo :: bar" =?> definitionList [ ("foo", [ para "bar" ]) ] , "Definition list term may include single colon" =: " foo:bar :: baz" =?> definitionList [ ("foo:bar", [ para "baz" ]) ] , "Definition list term with emphasis" =: " *Foo* :: bar\n" =?> definitionList [ (emph "Foo", [ para "bar" ]) ] , "Definition list term with :: inside code" =: " foo :: :: bar :: baz\n" =?> definitionList [ ("foo " <> code " :: ", [ para $ "bar " <> code " :: " <> " baz" ]) ] , "Multi-line definition lists" =: T.unlines [ " First term :: Definition of first term" , "and its continuation." , " Second term :: Definition of second term." ] =?> definitionList [ ("First term", [ para "Definition of first term\nand its continuation." ]) , ("Second term", [ para "Definition of second term." ]) ] , "Definition list with verse" =: T.unlines [ " First term :: Definition of first term" , " > First verse" , " > Second line of first verse" , "" , " > Second verse" , " > Second line of second verse" ] =?> definitionList [ ("First term", [ para "Definition of first term" <> lineBlock [ text "First verse" , text "Second line of first verse" ] <> lineBlock [ text "Second verse" , text "Second line of second verse" ] ]) ] , "Definition list with table" =: " foo :: bar | baz" =?> definitionList [ ("foo", [ simpleTable [] [[plain "bar", plain "baz"]] ])] , "Definition list with table inside bullet list" =: " - foo :: bar | baz" =?> bulletList [definitionList [ ("foo", [ simpleTable [] [[plain "bar", plain "baz"]] ])]] , test emacsMuse "Multi-line definition lists from Emacs Muse manual" (T.unlines [ "Term1 ::" , " This is a first definition" , " And it has two lines;" , "no, make that three." , "" , "Term2 :: This is a second definition" ] =?> definitionList [ ("Term1", [ para "This is a first definition\nAnd it has two lines;\nno, make that three."]) , ("Term2", [ para "This is a second definition"]) ]) -- Text::Amuse requires indentation with one space , "Multi-line definition lists from Emacs Muse manual with initial space" =: (T.unlines [ " Term1 ::" , " This is a first definition" , " And it has two lines;" , "no, make that three." , "" , " Term2 :: This is a second definition" ] =?> definitionList [ ("Term1", [ para "This is a first definition\nAnd it has two lines;\nno, make that three."]) , ("Term2", [ para "This is a second definition"]) ]) , "One-line nested definition list" =: " Foo :: bar :: baz" =?> definitionList [ ("Foo", [ definitionList [ ("bar", [ para "baz" ])]])] , "Nested definition list" =: T.unlines [ " First :: Second :: Third" , " Fourth :: Fifth :: Sixth" , " Seventh :: Eighth" ] =?> definitionList [ ("First", [ definitionList [ ("Second", [ para "Third" ]), ("Fourth", [ definitionList [ ("Fifth", [ para "Sixth"] ) ] ] ) ] ] ) , ("Seventh", [ para "Eighth" ]) ] , testGroup "Definition lists with multiple descriptions" [ "Correctly indented second description" =: T.unlines [ " First term :: first description" , " :: second description" ] =?> definitionList [ ("First term", [ para "first description" , para "second description" ]) ] , "Incorrectly indented second description" =: T.unlines [ " First term :: first description" , " :: second description" ] =?> definitionList [ ("First term", [ para "first description" ]) , ("", [ para "second description" ]) ] ] , "Two blank lines separate definition lists" =: T.unlines [ " First :: list" , "" , "" , " Second :: list" ] =?> definitionList [ ("First", [ para "list" ]) ] <> definitionList [ ("Second", [ para "list" ]) ] -- Headers in first column of list continuation are not allowed , "No headers in list continuation" =: T.unlines [ " - Foo" , "" , " * Bar" ] =?> bulletList [ mconcat [ para "Foo" , para "* Bar" ] ] , "Bullet list inside a tag" =: T.unlines [ "" , " - First" , "" , " - Second" , "" , " - Third" , "" ] =?> blockQuote (bulletList [ para "First" , para "Second" , para "Third" ]) , "Ordered list inside a tag" =: T.unlines [ "" , " 1. First" , "" , " 2. Second" , "" , " 3. Third" , "" ] =?> blockQuote (orderedListWith (1, Decimal, Period) [ para "First" , para "Second" , para "Third" ]) -- Regression test for a bug caught by round-trip test , "Do not consume whitespace while looking for end tag" =: T.unlines [ "" , " - " , " foo" , " " , " bar" -- Do not consume whitespace while looking for arbitrarily indented , "" ] =?> blockQuote (bulletList [ blockQuote $ para "foo" ] <> para "bar") , "Unclosed quote tag" =: T.unlines [ "" , "" , "" , "" ] =?> para "" <> lineBlock [ "" ] , "Unclosed quote tag inside list" =: T.unlines [ " - " , " " , " " , " " ] =?> bulletList [ para "" <> lineBlock [ "" ] ] -- Allowing indented closing tags is dangerous, -- as they may terminate lists , "No indented closing tags" =: T.unlines [ "" , "" , " - Foo" , "" , " " , "" , " bar" , "" , " " , " " , " " , "" ] =?> blockQuote (bulletList [ para "Foo" <> para "" <> para "bar" <> lineBlock [ "" ] ]) ] ] pandoc-3.1.3/test/Tests/Readers/ODT.hs0000644000000000000000000001616307346545000015612 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Tests.Readers.ODT Copyright : © 2015-2023 John MacFarlane 2015 Martin Linnemann License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Tests for the ODT reader. -} module Tests.Readers.ODT (tests) where import Control.Monad (liftM) import qualified Data.ByteString as BS import qualified Data.ByteString.Lazy as B import qualified Data.Map as M import Data.Text (unpack) import System.IO.Unsafe (unsafePerformIO) import Test.Tasty import Tests.Helpers import Text.Pandoc import qualified Text.Pandoc.UTF8 as UTF8 defopts :: ReaderOptions defopts = def{ readerExtensions = getDefaultExtensions "odt" } tests :: [TestTree] tests = testsComparingToMarkdown ++ testsComparingToNative testsComparingToMarkdown :: [TestTree] testsComparingToMarkdown = map nameToTest namesOfTestsComparingToMarkdown where nameToTest name = createTest compareODTToMarkdown name (toODTPath name) (toMarkdownPath name) toODTPath name = "odt/odt/" ++ name ++ ".odt" toMarkdownPath name = "odt/markdown/" ++ name ++ ".md" testsComparingToNative :: [TestTree] testsComparingToNative = map nameToTest namesOfTestsComparingToNative where nameToTest name = createTest compareODTToNative name (toODTPath name) (toNativePath name) toODTPath name = "odt/odt/" ++ name ++ ".odt" toNativePath name = "odt/native/" ++ name ++ ".native" newtype NoNormPandoc = NoNormPandoc {unNoNorm :: Pandoc} deriving ( Show ) instance ToString NoNormPandoc where toString d = unpack $ purely (writeNative def{ writerTemplate = s }) $ toPandoc d where s = case d of NoNormPandoc (Pandoc (Meta m) _) | M.null m -> Nothing | otherwise -> Just mempty -- need this for Meta output instance ToPandoc NoNormPandoc where toPandoc = unNoNorm getNoNormVia :: (a -> Pandoc) -> String -> Either PandocError a -> NoNormPandoc getNoNormVia _ readerName (Left _) = error (readerName ++ " reader failed") getNoNormVia f _ (Right a) = NoNormPandoc (f a) type TestCreator = ReaderOptions -> FilePath -> FilePath -> IO (NoNormPandoc, NoNormPandoc) compareODTToNative :: TestCreator compareODTToNative opts odtPath nativePath = do nativeFile <- UTF8.toText <$> BS.readFile nativePath odtFile <- B.readFile odtPath native <- getNoNormVia id "native" <$> runIO (readNative def nativeFile) odt <- getNoNormVia id "odt" <$> runIO (readODT opts odtFile) return (odt,native) compareODTToMarkdown :: TestCreator compareODTToMarkdown opts odtPath markdownPath = do markdownFile <- UTF8.toText <$> BS.readFile markdownPath odtFile <- B.readFile odtPath markdown <- getNoNormVia id "markdown" <$> runIO (readMarkdown def{ readerExtensions = pandocExtensions } markdownFile) odt <- getNoNormVia id "odt" <$> runIO (readODT opts odtFile) return (odt,markdown) createTest :: TestCreator -> TestName -> FilePath -> FilePath -> TestTree createTest creator name path1 path2 = unsafePerformIO $ liftM (test id name) (creator defopts path1 path2) {- -- getMedia :: FilePath -> FilePath -> IO (Maybe B.ByteString) getMedia archivePath mediaPath = do zf <- B.readFile archivePath >>= return . toArchive return $ findEntryByPath ("Pictures/" ++ mediaPath) zf >>= (Just . fromEntry) compareMediaPathIO :: FilePath -> MediaBag -> FilePath -> IO Bool compareMediaPathIO mediaPath mediaBag odtPath = do odtMedia <- getMedia odtPath mediaPath let mbBS = case lookupMedia mediaPath mediaBag of Just (_, bs) -> bs Nothing -> error ("couldn't find " ++ mediaPath ++ " in media bag") odtBS = case odtMedia of Just bs -> bs Nothing -> error ("couldn't find " ++ mediaPath ++ " in media bag") return $ mbBS == odtBS compareMediaBagIO :: FilePath -> IO Bool compareMediaBagIO odtFile = do df <- B.readFile odtFile let (_, mb) = readODT def df bools <- mapM (\(fp, _, _) -> compareMediaPathIO fp mb odtFile) (mediaDirectory mb) return $ and bools testMediaBagIO :: String -> FilePath -> IO TestTree testMediaBagIO name odtFile = do outcome <- compareMediaBagIO odtFile return $ testCase name (assertBool ("Media didn't match media bag in file " ++ odtFile) outcome) testMediaBag :: String -> FilePath -> TestTree testMediaBag name odtFile = buildTest $ testMediaBagIO name odtFile -} -- namesOfTestsComparingToMarkdown :: [ String ] namesOfTestsComparingToMarkdown = [ "blockquote2" , "bold" -- , "citation" , "endnote" , "externalLink" , "footnote" , "formula" , "headers" -- , "horizontalRule" , "italic" -- , "listBlocks" , "paragraph" , "strikeout" -- , "trackedChanges" , "underlined" ] namesOfTestsComparingToNative :: [ String ] namesOfTestsComparingToNative = [ "blockquote" , "image" , "imageIndex" , "imageWithCaption" , "inlinedCode" , "orderedListMixed" , "orderedListRoman" , "orderedListSimple" , "orderedListHeader" , "referenceToChapter" , "referenceToListItem" , "referenceToText" , "simpleTable" , "simpleTableWithCaption" , "tab" -- , "table" , "textMixedStyles" , "tableWithContents" , "unicode" , "unorderedList" , "unorderedListHeader" ] pandoc-3.1.3/test/Tests/Readers/Org.hs0000644000000000000000000000141707346545000015707 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Tests.Shared Copyright : © 2014-2023 Albert Krewinkel License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel Stability : alpha Portability : portable Tests of the org reader. -} module Tests.Readers.Org (tests) where import Test.Tasty (TestTree, testGroup) import qualified Tests.Readers.Org.Block as Block import qualified Tests.Readers.Org.Directive as Directive import qualified Tests.Readers.Org.Inline as Inline import qualified Tests.Readers.Org.Meta as Meta tests :: [TestTree] tests = [ testGroup "Inlines" Inline.tests , testGroup "Basic Blocks" Block.tests , testGroup "Meta Information" Meta.tests , testGroup "Directives" Directive.tests ] pandoc-3.1.3/test/Tests/Readers/Org/0000755000000000000000000000000007346545000015350 5ustar0000000000000000pandoc-3.1.3/test/Tests/Readers/Org/Block.hs0000644000000000000000000001647007346545000016746 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Tests.Readers.Org.Block Copyright : © 2014-2023 Albert Krewinkel License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel Stability : alpha Portability : portable Tests parsing of org blocks. -} module Tests.Readers.Org.Block (tests) where import Test.Tasty (TestTree, testGroup) import Tests.Helpers ((=?>)) import Tests.Readers.Org.Shared ((=:), spcSep) import Text.Pandoc.Builder import qualified Data.Text as T import qualified Tests.Readers.Org.Block.CodeBlock as CodeBlock import qualified Tests.Readers.Org.Block.Figure as Figure import qualified Tests.Readers.Org.Block.Header as Header import qualified Tests.Readers.Org.Block.List as List import qualified Tests.Readers.Org.Block.Table as Table tests :: [TestTree] tests = [ "Paragraph" =: "Paragraph\n" =?> para "Paragraph" , "Paragraph starting with an asterisk" =: "*five" =?> para "*five" , "Paragraph containing asterisk at beginning of line" =: T.unlines [ "lucky" , "*star" ] =?> para ("lucky" <> softbreak <> "*star") , "Example block" =: T.unlines [ ": echo hello" , ": echo dear tester" ] =?> codeBlockWith ("", ["example"], []) "echo hello\necho dear tester\n" , "Example block surrounded by text" =: T.unlines [ "Greetings" , ": echo hello" , ": echo dear tester" , "Bye" ] =?> mconcat [ para "Greetings" , codeBlockWith ("", ["example"], []) "echo hello\necho dear tester\n" , para "Bye" ] , "Horizontal Rule" =: T.unlines [ "before" , "-----" , "after" ] =?> mconcat [ para "before" , horizontalRule , para "after" ] , "Not a Horizontal Rule" =: "----- em and en dash" =?> para "\8212\8211 em and en dash" , testGroup "Comments" [ "Comment Block" =: T.unlines [ "#+begin_comment" , "stuff" , "bla" , "#+end_comment"] =?> (mempty::Blocks) , "Comment line" =: T.unlines [ "# this is a comment" ] =?> (mempty :: Blocks) , "Empty comment line" =: T.unlines [ " #" ] =?> (mempty :: Blocks) ] , testGroup "Blocks and fragments" [ "HTML block" =: T.unlines [ "#+begin_html" , "" , "#+end_html" ] =?> rawBlock "html" "\n" , "Quote block" =: T.unlines [ "#+begin_quote" , "/Niemand/ hat die Absicht, eine Mauer zu errichten!" , "#+end_quote" ] =?> blockQuote (para (spcSep [ emph "Niemand", "hat", "die", "Absicht," , "eine", "Mauer", "zu", "errichten!" ])) , "Verse block" =: T.unlines [ "The first lines of Goethe's /Faust/:" , "#+begin_verse" , "Habe nun, ach! Philosophie," , "Juristerei und Medizin," , "Und leider auch Theologie!" , "Durchaus studiert, mit heißem Bemühn." , "#+end_verse" ] =?> mconcat [ para $ spcSep [ "The", "first", "lines", "of" , "Goethe's", emph "Faust" <> ":"] , lineBlock [ "Habe nun, ach! Philosophie," , "Juristerei und Medizin," , "Und leider auch Theologie!" , "Durchaus studiert, mit heißem Bemühn." ] ] , "Verse block with blank lines" =: T.unlines [ "#+begin_verse" , "foo" , "" , "bar" , "#+end_verse" ] =?> lineBlock [ "foo", mempty, "bar" ] , "Verse block with varying indentation" =: T.unlines [ "#+begin_verse" , " hello darkness" , "my old friend" , "#+end_verse" ] =?> lineBlock [ "\160\160hello darkness", "my old friend" ] , "Raw block LaTeX" =: T.unlines [ "#+begin_latex" , "The category $\\cat{Set}$ is adhesive." , "#+end_latex" ] =?> rawBlock "latex" "The category $\\cat{Set}$ is adhesive.\n" , "Raw LaTeX line" =: "#+latex: \\let\\foo\\bar" =?> rawBlock "latex" "\\let\\foo\\bar" , "Raw Beamer line" =: "#+beamer: \\pause" =?> rawBlock "beamer" "\\pause" , "Raw HTML line" =: "#+html: " =?> rawBlock "html" "" , "Export block HTML" =: T.unlines [ "#+begin_export html" , "Hello, World!" , "#+end_export" ] =?> rawBlock "html" "Hello, World!\n" , "LaTeX fragment" =: T.unlines [ "\\begin{equation}" , "X_i = \\begin{cases}" , " G_{\\alpha(i)} & \\text{if }\\alpha(i-1) = \\alpha(i)\\\\" , " C_{\\alpha(i)} & \\text{otherwise}" , " \\end{cases}" , "\\end{equation}" ] =?> rawBlock "latex" (T.unlines [ "\\begin{equation}" , "X_i = \\begin{cases}" , " G_{\\alpha(i)} & \\text{if }\\alpha(i-1) =" <> " \\alpha(i)\\\\" , " C_{\\alpha(i)} & \\text{otherwise}" , " \\end{cases}" , "\\end{equation}" ]) , "One-line LaTeX fragment" =: "\\begin{equation} 2 + 3 \\end{equation}" =?> rawBlock "latex" "\\begin{equation} 2 + 3 \\end{equation}\n" , "LaTeX fragment with more arguments" =: T.unlines [ "\\begin{tikzcd}[ampersand replacement=\\&]" , " A \\& B \\\\" , " C \\& D" , " \\arrow[from=1-1, to=1-2]" , " \\arrow[\"f\", from=2-1, to=2-2]" , "\\end{tikzcd}" ] =?> rawBlock "latex" (T.unlines [ "\\begin{tikzcd}[ampersand replacement=\\&]" , " A \\& B \\\\" , " C \\& D" , " \\arrow[from=1-1, to=1-2]" , " \\arrow[\"f\", from=2-1, to=2-2]" , "\\end{tikzcd}" ]) , "Convert blank lines in blocks to single newlines" =: T.unlines [ "#+begin_html" , "" , "boring" , "" , "#+end_html" ] =?> rawBlock "html" "\nboring\n\n" , "Accept `attr_html` attributes for generic block" =: T.unlines [ "#+attr_html: :title hello, world :id test :class fun code" , "#+begin_test" , "nonsense" , "#+end_test" ] =?> let attr = ("test", ["fun", "code", "test"], [("title", "hello, world")]) in divWith attr (para "nonsense") ] , testGroup "Headers" Header.tests , testGroup "Figures" Figure.tests , testGroup "Lists" List.tests , testGroup "CodeBlocks" CodeBlock.tests , testGroup "Tables" Table.tests ] pandoc-3.1.3/test/Tests/Readers/Org/Block/0000755000000000000000000000000007346545000016402 5ustar0000000000000000pandoc-3.1.3/test/Tests/Readers/Org/Block/CodeBlock.hs0000644000000000000000000001707507346545000020575 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Tests.Readers.Org.Block.CodeBlock Copyright : © 2014-2023 Albert Krewinkel License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel Stability : alpha Portability : portable Test parsing of org code blocks. -} module Tests.Readers.Org.Block.CodeBlock (tests) where import Test.Tasty (TestTree) import Tests.Helpers ((=?>)) import Tests.Readers.Org.Shared ((=:), spcSep) import Text.Pandoc.Builder import qualified Data.Text as T tests :: [TestTree] tests = [ "Source block" =: T.unlines [ " #+begin_src haskell" , " main = putStrLn greeting" , " where greeting = \"moin\"" , " #+end_src" ] =?> let attr' = ("", ["haskell"], []) code' = "main = putStrLn greeting\n" <> " where greeting = \"moin\"\n" in codeBlockWith attr' code' , "Source block with indented code" =: T.unlines [ " #+begin_src haskell" , " main = putStrLn greeting" , " where greeting = \"moin\"" , " #+end_src" ] =?> let attr' = ("", ["haskell"], []) code' = "main = putStrLn greeting\n" <> " where greeting = \"moin\"\n" in codeBlockWith attr' code' , "Source block with tab-indented code" =: T.unlines [ "\t#+begin_src haskell" , "\tmain = putStrLn greeting" , "\t where greeting = \"moin\"" , "\t#+end_src" ] =?> let attr' = ("", ["haskell"], []) code' = "main = putStrLn greeting\n" <> " where greeting = \"moin\"\n" in codeBlockWith attr' code' , "Empty source block" =: T.unlines [ " #+begin_src haskell" , " #+end_src" ] =?> let attr' = ("", ["haskell"], []) code' = "" in codeBlockWith attr' code' , "Source block between paragraphs" =: T.unlines [ "Low German greeting" , " #+begin_src haskell" , " main = putStrLn greeting" , " where greeting = \"Moin!\"" , " #+end_src" ] =?> let attr' = ("", ["haskell"], []) code' = "main = putStrLn greeting\n" <> " where greeting = \"Moin!\"\n" in mconcat [ para $ spcSep [ "Low", "German", "greeting" ] , codeBlockWith attr' code' ] , "Source block with babel arguments" =: T.unlines [ "#+begin_src emacs-lisp :exports both" , "(progn (message \"Hello, World!\")" , " (+ 23 42))" , "#+end_src" ] =?> let classes = [ "commonlisp" ] -- as kate doesn't know emacs-lisp syntax params = [ ("org-language", "emacs-lisp") , ("exports", "both") ] code' = T.unlines [ "(progn (message \"Hello, World!\")" , " (+ 23 42))" ] in codeBlockWith ("", classes, params) code' , "Source block with results and :exports both" =: T.unlines [ "#+begin_src emacs-lisp :exports both" , "(progn (message \"Hello, World!\")" , " (+ 23 42))" , "#+end_src" , "" , "#+RESULTS:" , ": 65"] =?> let classes = [ "commonlisp" ] params = [ ("org-language", "emacs-lisp") , ("exports", "both") ] code' = T.unlines [ "(progn (message \"Hello, World!\")" , " (+ 23 42))" ] results' = "65\n" in codeBlockWith ("", classes, params) code' <> codeBlockWith ("", ["example"], []) results' , "Source block with results and :exports code" =: T.unlines [ "#+begin_src emacs-lisp :exports code" , "(progn (message \"Hello, World!\")" , " (+ 23 42))" , "#+end_src" , "" , "#+RESULTS:" , ": 65" ] =?> let classes = [ "commonlisp" ] params = [ ("org-language", "emacs-lisp") , ("exports", "code") ] code' = T.unlines [ "(progn (message \"Hello, World!\")" , " (+ 23 42))" ] in codeBlockWith ("", classes, params) code' , "Source block with results and :exports results" =: T.unlines [ "#+begin_src emacs-lisp :exports results" , "(progn (message \"Hello, World!\")" , " (+ 23 42))" , "#+end_src" , "" , "#+RESULTS:" , ": 65" ] =?> let results' = "65\n" in codeBlockWith ("", ["example"], []) results' , "Source block with results and :exports none" =: T.unlines [ "#+begin_src emacs-lisp :exports none" , "(progn (message \"Hello, World!\")" , " (+ 23 42))" , "#+end_src" , "" , "#+RESULTS:" , ": 65" ] =?> (mempty :: Blocks) , "Source block with toggling header arguments" =: T.unlines [ "#+begin_src sh :noeval" , "echo $HOME" , "#+end_src" ] =?> let classes = [ "bash" ] params = [ ("org-language", "sh"), ("noeval", "yes") ] in codeBlockWith ("", classes, params) "echo $HOME\n" , "Source block with line number switch" =: T.unlines [ "#+begin_src sh -n 10" , ":() { :|:& };:" , "#+end_src" ] =?> let classes = [ "bash", "numberLines" ] params = [ ("org-language", "sh"), ("startFrom", "10") ] in codeBlockWith ("", classes, params) ":() { :|:& };:\n" , "Source block with multi-word parameter values" =: T.unlines [ "#+begin_src dot :cmdline -Kdot -Tpng " , "digraph { id [label=\"ID\"] }" , "#+end_src" ] =?> let classes = [ "dot" ] params = [ ("cmdline", "-Kdot -Tpng") ] in codeBlockWith ("", classes, params) "digraph { id [label=\"ID\"] }\n" , "Example block" =: T.unlines [ "#+begin_example" , "A chosen representation of" , "a rule." , "#+eND_exAMPle" ] =?> codeBlockWith ("", ["example"], []) "A chosen representation of\na rule.\n" , "Code block with caption" =: T.unlines [ "#+caption: Functor laws in Haskell" , "#+name: functor-laws" , "#+begin_src haskell" , "fmap id = id" , "fmap (p . q) = (fmap p) . (fmap q)" , "#+end_src" ] =?> divWith ("", ["captioned-content"], [] ) (mappend (divWith ("", ["caption"], []) $ plain (spcSep [ "Functor", "laws", "in", "Haskell" ])) (codeBlockWith ("functor-laws", ["haskell"], []) (T.unlines [ "fmap id = id" , "fmap (p . q) = (fmap p) . (fmap q)" ]))) , "Non-letter chars in source block parameters" =: T.unlines [ "#+begin_src C :tangle xxxx.c :city Zürich" , "code body" , "#+end_src" ] =?> let params = [ ("org-language", "C") , ("tangle", "xxxx.c") , ("city", "Zürich") ] in codeBlockWith ( "", ["c"], params) "code body\n" ] pandoc-3.1.3/test/Tests/Readers/Org/Block/Figure.hs0000644000000000000000000000565607346545000020173 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Tests.Readers.Org.Block.Figure Copyright : © 2014-2023 Albert Krewinkel License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel Stability : alpha Portability : portable Test parsing of org figures. -} module Tests.Readers.Org.Block.Figure (tests) where import Test.Tasty (TestTree) import Tests.Helpers ((=?>)) import Tests.Readers.Org.Shared ((=:)) import Text.Pandoc.Builder ( emptyCaption, figure, figureWith, image , plain, simpleCaption, simpleFigure ) import qualified Data.Text as T tests :: [TestTree] tests = [ "Figure" =: T.unlines [ "#+caption: A courageous man." , "#+name: ed" , "[[file:edward.jpg]]" ] =?> figureWith ("ed", mempty, mempty) (plainCaption "A courageous man.") (plain $ image "edward.jpg" mempty "") , "Figure with no name" =: T.unlines [ "#+caption: I've been through the desert on this" , "[[file:horse.png]]" ] =?> figure (plainCaption "I've been through the desert on this") (plain $ image "horse.png" "" "") , "Figure with `fig:` prefix in name" =: T.unlines [ "#+caption: Used as a metapher in evolutionary biology." , "#+name: fig:redqueen" , "[[./the-red-queen.jpg]]" ] =?> figureWith ("fig:redqueen", mempty, mempty) (plainCaption "Used as a metapher in evolutionary biology.") (plain $ image "./the-red-queen.jpg" mempty "") , "Figure with HTML attributes" =: T.unlines [ "#+caption: mah brain just explodid" , "#+name: lambdacat" , "#+attr_html: :style color: blue :role button" , "[[file:lambdacat.jpg]]" ] =?> let kv = [("style", "color: blue"), ("role", "button")] name = "lambdacat" capt = plain "mah brain just explodid" in figureWith (name, mempty, kv) (simpleCaption capt) (plain $ image "lambdacat.jpg" mempty "") , "LaTeX attributes are ignored" =: T.unlines [ "#+caption: Attribute after caption" , "#+attr_latex: :float nil" , "[[file:test.png]]" ] =?> simpleFigure "Attribute after caption" "test.png" "" , "Labelled figure" =: T.unlines [ "#+caption: My figure" , "#+label: fig:myfig" , "[[file:blub.png]]" ] =?> figureWith ("fig:myfig", mempty, mempty) (simpleCaption $ plain "My figure") (plain (image "blub.png" "" "")) , "Figure with empty caption" =: T.unlines [ "#+caption:" , "[[file:guess.jpg]]" ] =?> figure emptyCaption (plain (image "guess.jpg" "" "")) ] where plainCaption = simpleCaption . plain pandoc-3.1.3/test/Tests/Readers/Org/Block/Header.hs0000644000000000000000000002275607346545000020142 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Tests.Readers.Org.Block.Header Copyright : © 2014-2023 Albert Krewinkel License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel Stability : alpha Portability : portable Test parsing of org header blocks. -} module Tests.Readers.Org.Block.Header (tests) where import Test.Tasty (TestTree, testGroup) import Tests.Helpers ((=?>)) import Tests.Readers.Org.Shared ((=:), spcSep, tagSpan) import Text.Pandoc.Builder import qualified Data.Text as T tests :: [TestTree] tests = [ "First Level Header" =: "* Headline\n" =?> headerWith ("headline", [], []) 1 "Headline" , "Third Level Header" =: "*** Third Level Headline\n" =?> headerWith ("third-level-headline", [], []) 3 ("Third" <> space <> "Level" <> space <> "Headline") , "Compact Headers with Paragraph" =: T.unlines [ "* First Level" , "** Second Level" , " Text" ] =?> mconcat [ headerWith ("first-level", [], []) 1 ("First" <> space <> "Level") , headerWith ("second-level", [], []) 2 ("Second" <> space <> "Level") , para "Text" ] , "Separated Headers with Paragraph" =: T.unlines [ "* First Level" , "" , "** Second Level" , "" , " Text" ] =?> mconcat [ headerWith ("first-level", [], []) 1 ("First" <> space <> "Level") , headerWith ("second-level", [], []) 2 ("Second" <> space <> "Level") , para "Text" ] , "Headers not preceded by a blank line" =: T.unlines [ "** eat dinner" , "Spaghetti and meatballs tonight." , "** walk dog" ] =?> mconcat [ headerWith ("eat-dinner", [], []) 2 ("eat" <> space <> "dinner") , para $ spcSep [ "Spaghetti", "and", "meatballs", "tonight." ] , headerWith ("walk-dog", [], []) 2 ("walk" <> space <> "dog") ] , testGroup "Todo keywords" [ "Header with known todo keyword" =: "* TODO header" =?> let todoSpan = spanWith ("", ["todo", "TODO"], []) "TODO" in headerWith ("header", [], []) 1 (todoSpan <> space <> "header") , "Header marked as done" =: "* DONE header" =?> let todoSpan = spanWith ("", ["done", "DONE"], []) "DONE" in headerWith ("header", [], []) 1 (todoSpan <> space <> "header") , "emphasis in first word" =: "** TODO /fix/ this" =?> let todoSpan = spanWith ("", ["todo", "TODO"], []) "TODO" in headerWith ("fix-this", [], []) 2 (todoSpan <> space <> emph "fix" <> space <> "this") , "Header with unknown todo keyword" =: "* WAITING header" =?> headerWith ("waiting-header", [], []) 1 "WAITING header" , "Custom todo keywords" =: T.unlines [ "#+todo: WAITING CANCELLED" , "* WAITING compile" , "* CANCELLED lunch" ] =?> let todoSpan = spanWith ("", ["todo", "WAITING"], []) "WAITING" doneSpan = spanWith ("", ["done", "CANCELLED"], []) "CANCELLED" in headerWith ("compile", [], []) 1 (todoSpan <> space <> "compile") <> headerWith ("lunch", [], []) 1 (doneSpan <> space <> "lunch") , "Custom todo keywords with multiple done-states" =: T.unlines [ "#+todo: WAITING | DONE CANCELLED " , "* WAITING compile" , "* CANCELLED lunch" , "* DONE todo-feature" ] =?> let waiting = spanWith ("", ["todo", "WAITING"], []) "WAITING" cancelled = spanWith ("", ["done", "CANCELLED"], []) "CANCELLED" done = spanWith ("", ["done", "DONE"], []) "DONE" in headerWith ("compile", [], []) 1 (waiting <> space <> "compile") <> headerWith ("lunch", [], []) 1 (cancelled <> space <> "lunch") <> headerWith ("todo-feature", [], []) 1 (done <> space <> "todo-feature") ] , "Tagged headers" =: T.unlines [ "* Personal :PERSONAL:" , "** Call Mom :@PHONE:" , "** Call John :@PHONE:JOHN: " ] =?> mconcat [ headerWith ("personal", [], []) 1 ("Personal " <> tagSpan "PERSONAL") , headerWith ("call-mom", [], []) 2 ("Call Mom " <> tagSpan "@PHONE") , headerWith ("call-john", [], []) 2 ("Call John " <> tagSpan "@PHONE" <> "\160" <> tagSpan "JOHN") ] , "Untagged header containing colons" =: "* This: is not: tagged" =?> headerWith ("this-is-not-tagged", [], []) 1 "This: is not: tagged" , "Untagged header time followed by colon" =: "** Meeting at 5:23: free food" =?> let attr = ("meeting-at-523-free-food", [], []) in headerWith attr 2 "Meeting at 5:23: free food" , "tag followed by text" =: "*** Looks like a :tag: but isn't" =?> let attr = ("looks-like-a-tag-but-isnt", [], []) in headerWith attr 3 "Looks like a :tag: but isn't" , "Header starting with strokeout text" =: T.unlines [ "foo" , "" , "* +thing+ other thing" ] =?> mconcat [ para "foo" , headerWith ("thing-other-thing", [], []) 1 (strikeout "thing" <> " other thing") ] , "Comment Trees" =: T.unlines [ "* COMMENT A comment tree" , " Not much going on here" , "** This will be dropped" , "* Comment tree above" ] =?> headerWith ("comment-tree-above", [], []) 1 "Comment tree above" , "Nothing but a COMMENT header" =: "* COMMENT Test" =?> (mempty::Blocks) , "Tree with :noexport:" =: T.unlines [ "* Should be ignored :archive:noexport:old:" , "** Old stuff" , " This is not going to be exported" ] =?> (mempty::Blocks) , "Subtree with :noexport:" =: T.unlines [ "* Exported" , "** This isn't exported :noexport:" , "*** This neither" , "** But this is" ] =?> mconcat [ headerWith ("exported", [], []) 1 "Exported" , headerWith ("but-this-is", [], []) 2 "But this is" ] , "Preferences are treated as header attributes" =: T.unlines [ "* foo" , " :PROPERTIES:" , " :custom_id: fubar" , " :bar: baz" , " :END:" ] =?> headerWith ("fubar", [], [("bar", "baz")]) 1 "foo" , "Headers marked with a unnumbered property get a class of the same name" =: T.unlines [ "* Not numbered" , " :PROPERTIES:" , " :UNNUMBERED: t" , " :END:" ] =?> headerWith ("not-numbered", ["unnumbered"], []) 1 "Not numbered" , testGroup "planning information" [ "Planning info is not included in output" =: T.unlines [ "* important" , T.unwords [ "CLOSED: [2018-09-05 Wed 13:58]" , "DEADLINE: <2018-09-17 Mon>" , "SCHEDULED: <2018-09-10 Mon>" ] ] =?> headerWith ("important", [], []) 1 "important" , "Properties after planning info are recognized" =: T.unlines [ "* important " , " " <> T.unwords [ "CLOSED: [2018-09-05 Wed 13:58]" , "DEADLINE: <2018-09-17 Mon>" , "SCHEDULED: <2018-09-10 Mon>" ] , " :PROPERTIES:" , " :custom_id: look" , " :END:" ] =?> headerWith ("look", [], []) 1 "important" , "Planning info followed by test" =: T.unlines [ "* important " , " " <> T.unwords [ "CLOSED: [2018-09-05 Wed 13:58]" , "DEADLINE: <2018-09-17 Mon>" , "SCHEDULED: <2018-09-10 Mon>" ] , " :PROPERTIES:" , " :custom_id: look" , " :END:" ] =?> headerWith ("look", [], []) 1 "important" , "third and forth level headers" =: T.unlines [ "#+options: p:t h:3" , "*** Third" , " CLOSED: [2018-09-05 Wed 13:58]" , " Text 3" , "**** Fourth" , "SCHEDULED: <2019-05-13 Mon 22:42>" , "Text 4" ] =?> mconcat [ headerWith ("third", [], mempty) 3 "Third" , plain $ strong "CLOSED:" <> space <> emph (str "[2018-09-05 Wed 13:58]") , para "Text 3" , orderedList [ mconcat [ para "Fourth" , plain $ strong "SCHEDULED:" <> space <> emph (str "<2019-05-13 Mon 22:42>") , para "Text 4" ]] ] ] ] pandoc-3.1.3/test/Tests/Readers/Org/Block/List.hs0000644000000000000000000003253407346545000017660 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Tests.Readers.Org.Block.Header Copyright : © 2014-2023 Albert Krewinkel License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel Stability : alpha Portability : portable Test parsing of org lists. -} module Tests.Readers.Org.Block.List (tests) where import Data.Text (Text) import Test.Tasty (TestTree) import Tests.Helpers ((=?>), purely, test) import Tests.Readers.Org.Shared ((=:), spcSep) import Text.Pandoc (ReaderOptions (readerExtensions), Extension (Ext_fancy_lists), def, enableExtension, getDefaultExtensions, readOrg) import Text.Pandoc.Builder import qualified Data.Text as T orgFancyLists :: Text -> Pandoc orgFancyLists = purely $ let extensionsFancy = enableExtension Ext_fancy_lists (getDefaultExtensions "org") in readOrg def{ readerExtensions = extensionsFancy } tests :: [TestTree] tests = [ "Simple Bullet Lists" =: ("- Item1\n" <> "- Item2\n") =?> bulletList [ plain "Item1" , plain "Item2" ] , "Simple Bullet List with Ignored Counter Cookie" =: ("- [@4] Item1\n" <> "- Item2\n") =?> bulletList [ plain "Item1" , plain "Item2" ] , "Indented Bullet Lists" =: (" - Item1\n" <> " - Item2\n") =?> bulletList [ plain "Item1" , plain "Item2" ] , "Unindented *" =: ("- Item1\n" <> "* Item2\n") =?> bulletList [ plain "Item1" ] <> headerWith ("item2", [], []) 1 "Item2" , "Multi-line Bullet Lists" =: ("- *Fat\n" <> " Tony*\n" <> "- /Sideshow\n" <> " Bob/") =?> bulletList [ plain $ strong ("Fat" <> softbreak <> "Tony") , plain $ emph ("Sideshow" <> softbreak <> "Bob") ] , "Nested Bullet Lists" =: ("- Discovery\n" <> " + One More Time\n" <> " + Harder, Better, Faster, Stronger\n" <> "- Homework\n" <> " + Around the World\n"<> "- Human After All\n" <> " + Technologic\n" <> " + Robot Rock\n") =?> bulletList [ mconcat [ plain "Discovery" , bulletList [ plain ("One" <> space <> "More" <> space <> "Time") , plain ("Harder," <> space <> "Better," <> space <> "Faster," <> space <> "Stronger") ] ] , mconcat [ plain "Homework" , bulletList [ plain ("Around" <> space <> "the" <> space <> "World") ] ] , mconcat [ plain ("Human" <> space <> "After" <> space <> "All") , bulletList [ plain "Technologic" , plain ("Robot" <> space <> "Rock") ] ] ] , "Bullet List with Decreasing Indent" =: " - Discovery\n\ \ - Human After All\n" =?> mconcat [ bulletList [ plain "Discovery" ] , bulletList [ plain ("Human" <> space <> "After" <> space <> "All")] ] , "Header follows Bullet List" =: " - Discovery\n\ \ - Human After All\n\ \* Homework" =?> mconcat [ bulletList [ plain "Discovery" , plain ("Human" <> space <> "After" <> space <> "All") ] , headerWith ("homework", [], []) 1 "Homework" ] , "Bullet List Unindented with trailing Header" =: "- Discovery\n\ \- Homework\n\ \* NotValidListItem" =?> mconcat [ bulletList [ plain "Discovery" , plain "Homework" ] , headerWith ("notvalidlistitem", [], []) 1 "NotValidListItem" ] , "Empty bullet points" =: T.unlines [ "-" , "- " ] =?> bulletList [ plain "", plain "" ] , "Task list" =: T.unlines [ "- [ ] nope" , "- [X] yup" , "- [-] started" , " 1. [X] sure" , " 2. [ ] nuh-uh" ] =?> bulletList [ plain "☐ nope", plain "☒ yup" , mconcat [ plain "☐ started" , orderedList [plain "☒ sure", plain "☐ nuh-uh"] ] ] , "Task List with Counter Cookies" =: T.unlines [ "- [ ] nope" , "- [@9] [X] yup" , "- [@a][-] started" , " 1. [@3][X] sure" , " 2. [@b] [ ] nuh-uh" ] =?> bulletList [ plain "☐ nope", plain "☒ yup" , mconcat [ plain "☐ started" , orderedListWith (3, DefaultStyle, DefaultDelim) [plain "☒ sure", plain "☐ nuh-uh"] ] ] , test orgFancyLists "Task with alphabetical markers and counter cookie" $ T.unlines [ "- [ ] nope" , "- [@9] [X] yup" , "- [@a][-] started" , " a) [@D][X] sure" , " b) [@8] [ ] nuh-uh" ] =?> bulletList [ plain "☐ nope", plain "☒ yup" , mconcat [ plain "☐ started" , orderedListWith (4, LowerAlpha, OneParen) [plain "☒ sure", plain "☐ nuh-uh"] ] ] , "Simple Ordered List" =: ("1. Item1\n" <> "2. Item2\n") =?> let listStyle = (1, DefaultStyle, DefaultDelim) listStructure = [ plain "Item1" , plain "Item2" ] in orderedListWith listStyle listStructure , test orgFancyLists "Simple Ordered List with fancy lists extension" $ ("1. Item1\n" <> "2. Item2\n") =?> let listStyle = (1, Decimal, Period) listStructure = [ plain "Item1" , plain "Item2" ] in orderedListWith listStyle listStructure , test orgFancyLists "Simple Ordered List with lower alpha marker" $ ("a) Item1\n" <> "b) Item2\n") =?> let listStyle = (1, LowerAlpha, OneParen) listStructure = [ plain "Item1" , plain "Item2" ] in orderedListWith listStyle listStructure , test orgFancyLists "Simple Ordered List with upper and lower alpha markers" $ ("A. Item1\n" <> "b) Item2\n") =?> let listStyle = (1, UpperAlpha, Period) listStructure = [ plain "Item1" , plain "Item2" ] in orderedListWith listStyle listStructure , "Simple Ordered List with Counter Cookie" =: ("1. [@1234] Item1\n" <> "2. Item2\n") =?> let listStyle = (1234, DefaultStyle, DefaultDelim) listStructure = [ plain "Item1" , plain "Item2" ] in orderedListWith listStyle listStructure , "Simple Ordered List with Alphabetical Counter Cookie" =: ("1. [@c] Item1\n" <> "2. Item2\n") =?> let listStyle = (3, DefaultStyle, DefaultDelim) listStructure = [ plain "Item1" , plain "Item2" ] in orderedListWith listStyle listStructure , "Simple Ordered List with Ignored Counter Cookie" =: ("1. Item1\n" <> "2. [@4] Item2\n") =?> let listStyle = (1, DefaultStyle, DefaultDelim) listStructure = [ plain "Item1" , plain "Item2" ] in orderedListWith listStyle listStructure , "Simple Ordered List with Parens" =: ("1) Item1\n" <> "2) Item2\n") =?> let listStyle = (1, DefaultStyle, DefaultDelim) listStructure = [ plain "Item1" , plain "Item2" ] in orderedListWith listStyle listStructure , "Indented Ordered List" =: (" 1. Item1\n" <> " 2. Item2\n") =?> let listStyle = (1, DefaultStyle, DefaultDelim) listStructure = [ plain "Item1" , plain "Item2" ] in orderedListWith listStyle listStructure , "Empty ordered list item" =: T.unlines [ "1." , "3. " ] =?> orderedList [ plain "", plain "" ] , test orgFancyLists "Empty ordered list item with fancy lists extension" $ T.unlines [ "a." , "2. " ] =?> orderedListWith (1, LowerAlpha, Period) [ plain "", plain "" ] , "Empty ordered list item with counter cookie" =: T.unlines [ "1. [@5]" , "3. [@e] " ] =?> let listStyle = (5, DefaultStyle, DefaultDelim) in orderedListWith listStyle [ plain "", plain "" ] , "Nested Ordered Lists" =: ("1. One\n" <> " 1. One-One\n" <> " 2. One-Two\n" <> "2. Two\n" <> " 1. Two-One\n"<> " 2. Two-Two\n") =?> let listStyle = (1, DefaultStyle, DefaultDelim) listStructure = [ mconcat [ plain "One" , orderedList [ plain "One-One" , plain "One-Two" ] ] , mconcat [ plain "Two" , orderedList [ plain "Two-One" , plain "Two-Two" ] ] ] in orderedListWith listStyle listStructure , "Ordered List in Bullet List" =: ("- Emacs\n" <> " 1. Org\n") =?> bulletList [ plain "Emacs" <> orderedList [ plain "Org"] ] , "Bullet List in Ordered List" =: ("1. GNU\n" <> " - Freedom\n") =?> orderedList [ plain "GNU" <> bulletList [ plain "Freedom" ] ] , "Definition List" =: T.unlines [ "- PLL :: phase-locked loop" , "- TTL ::" , " transistor-transistor logic" , "- PSK :: phase-shift keying" , "" , " a digital modulation scheme" ] =?> definitionList [ ("PLL", [ plain $ "phase-locked" <> space <> "loop" ]) , ("TTL", [ plain $ "transistor-transistor" <> space <> "logic" ]) , ("PSK", [ mconcat [ para $ "phase-shift" <> space <> "keying" , para $ spcSep [ "a", "digital" , "modulation", "scheme" ] ] ]) ] , "Definition list with multi-word term" =: " - Elijah Wood :: He plays Frodo" =?> definitionList [ ("Elijah" <> space <> "Wood", [plain $ "He" <> space <> "plays" <> space <> "Frodo"])] , "Compact definition list" =: T.unlines [ "- ATP :: adenosine 5' triphosphate" , "- DNA :: deoxyribonucleic acid" , "- PCR :: polymerase chain reaction" , "" ] =?> definitionList [ ("ATP", [ plain $ spcSep [ "adenosine", "5'", "triphosphate" ] ]) , ("DNA", [ plain $ spcSep [ "deoxyribonucleic", "acid" ] ]) , ("PCR", [ plain $ spcSep [ "polymerase", "chain", "reaction" ] ]) ] , "Definition List With Trailing Header" =: "- definition :: list\n\ \- cool :: defs\n\ \* header" =?> mconcat [ definitionList [ ("definition", [plain "list"]) , ("cool", [plain "defs"]) ] , headerWith ("header", [], []) 1 "header" ] , "Definition lists double-colon markers must be surrounded by whitespace" =: "- std::cout" =?> bulletList [ plain "std::cout" ] , "Loose bullet list" =: T.unlines [ "- apple" , "" , "- orange" , "" , "- peach" ] =?> bulletList [ para "apple" , para "orange" , para "peach" ] , "Recognize preceding paragraphs in non-list contexts" =: T.unlines [ "CLOSED: [2015-10-19 Mon 15:03]" , "- Note taken on [2015-10-19 Mon 13:24]" ] =?> mconcat [ para "CLOSED: [2015-10-19 Mon 15:03]" , bulletList [ plain "Note taken on [2015-10-19 Mon 13:24]" ] ] , "Markup after header and list" =: T.unlines [ "* headline" , "- list" , "" , "~variable name~" ] =?> mconcat [ headerWith ("headline", [], []) 1 "headline" , bulletList [ plain "list" ] , para (code "variable name") ] ] pandoc-3.1.3/test/Tests/Readers/Org/Block/Table.hs0000644000000000000000000001411407346545000017766 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Tests.Readers.Org.Block.Table Copyright : © 2014-2023 Albert Krewinkel License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel Stability : alpha Portability : portable Test parsing of org tables. -} module Tests.Readers.Org.Block.Table (tests) where import Test.Tasty (TestTree) import Tests.Helpers ((=?>)) import Tests.Readers.Org.Shared ((=:), spcSep) import Text.Pandoc.Builder import qualified Data.Text as T simpleTable' :: Int -> [Blocks] -> [[Blocks]] -> Blocks simpleTable' n = simpleTable'' emptyCaption $ replicate n (AlignDefault, ColWidthDefault) simpleTable'' :: Caption -> [ColSpec] -> [Blocks] -> [[Blocks]] -> Blocks simpleTable'' = simpleTableWith'' (mempty, [], []) simpleTableWith'' :: Attr -> Caption -> [ColSpec] -> [Blocks] -> [[Blocks]] -> Blocks simpleTableWith'' attr capt spec headers rows = tableWith attr capt spec (TableHead nullAttr $ toHeaderRow headers) [TableBody nullAttr 0 [] $ map toRow rows] (TableFoot nullAttr []) where toRow = Row nullAttr . map simpleCell toHeaderRow l = [toRow l | not (null l)] tests :: [TestTree] tests = [ "Single cell table" =: "|Test|" =?> simpleTable' 1 mempty [[plain "Test"]] , "Multi cell table" =: "| One | Two |" =?> simpleTable' 2 mempty [ [ plain "One", plain "Two" ] ] , "Multi line table" =: T.unlines [ "| One |" , "| Two |" , "| Three |" ] =?> simpleTable' 1 mempty [ [ plain "One" ] , [ plain "Two" ] , [ plain "Three" ] ] , "Empty table" =: "||" =?> simpleTable' 1 mempty [[mempty]] , "Glider Table" =: T.unlines [ "| 1 | 0 | 0 |" , "| 0 | 1 | 1 |" , "| 1 | 1 | 0 |" ] =?> simpleTable' 3 mempty [ [ plain "1", plain "0", plain "0" ] , [ plain "0", plain "1", plain "1" ] , [ plain "1", plain "1", plain "0" ] ] , "Table between Paragraphs" =: T.unlines [ "Before" , "| One | Two |" , "After" ] =?> mconcat [ para "Before" , simpleTable' 2 mempty [ [ plain "One", plain "Two" ] ] , para "After" ] , "Table with Header" =: T.unlines [ "| Species | Status |" , "|--------------+--------------|" , "| cervisiae | domesticated |" , "| paradoxus | wild |" ] =?> simpleTable [ plain "Species", plain "Status" ] [ [ plain "cervisiae", plain "domesticated" ] , [ plain "paradoxus", plain "wild" ] ] , "Table with final hline" =: T.unlines [ "| cervisiae | domesticated |" , "| paradoxus | wild |" , "|--------------+--------------|" ] =?> simpleTable' 2 mempty [ [ plain "cervisiae", plain "domesticated" ] , [ plain "paradoxus", plain "wild" ] ] , "Table in a box" =: T.unlines [ "|---------|---------|" , "| static | Haskell |" , "| dynamic | Lisp |" , "|---------+---------|" ] =?> simpleTable' 2 mempty [ [ plain "static", plain "Haskell" ] , [ plain "dynamic", plain "Lisp" ] ] , "Table with empty cells" =: "|||c|" =?> simpleTable' 3 mempty [[mempty, mempty, plain "c"]] , "Table with empty rows" =: T.unlines [ "| first |" , "| |" , "| third |" ] =?> simpleTable' 1 mempty [[plain "first"], [mempty], [plain "third"]] , "Table with alignment row" =: T.unlines [ "| Numbers | Text | More |" , "| | | |" , "| 1 | One | foo |" , "| 2 | Two | bar |" ] =?> simpleTable'' emptyCaption (zip [AlignCenter, AlignRight, AlignDefault] [ColWidthDefault, ColWidthDefault, ColWidthDefault]) [] [ [ plain "Numbers", plain "Text", plain "More" ] , [ plain "1" , plain "One" , plain "foo" ] , [ plain "2" , plain "Two" , plain "bar" ] ] , "Pipe within text doesn't start a table" =: "Ceci n'est pas une | pipe " =?> para (spcSep [ "Ceci", "n'est", "pas", "une", "|", "pipe" ]) , "Missing pipe at end of row" =: "|incomplete-but-valid" =?> simpleTable' 1 mempty [ [ plain "incomplete-but-valid" ] ] , "Table with differing row lengths" =: T.unlines [ "| Numbers | Text " , "|-" , "| | |" , "| 1 | One | foo |" , "| 2" ] =?> simpleTable'' emptyCaption (zip [AlignCenter, AlignRight] [ColWidthDefault, ColWidthDefault]) [ plain "Numbers", plain "Text" ] [ [ plain "1" , plain "One" , plain "foo" ] , [ plain "2" ] ] , "Table with caption" =: T.unlines [ "#+caption: Hitchhiker's Multiplication Table" , "| x | 6 |" , "| 9 | 42 |" ] =?> simpleTable'' (simpleCaption $ plain "Hitchhiker's Multiplication Table") [(AlignDefault, ColWidthDefault), (AlignDefault, ColWidthDefault)] [] [ [ plain "x", plain "6" ] , [ plain "9", plain "42" ] ] , "named table" =: T.unlines [ "#+name: x-marks-the-spot" , "| x |" ] =?> simpleTableWith'' ("x-marks-the-spot", mempty, mempty) emptyCaption (replicate 1 (AlignDefault, ColWidthDefault)) mempty [ [ plain "x" ] ] ] pandoc-3.1.3/test/Tests/Readers/Org/Directive.hs0000644000000000000000000002745507346545000017637 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Tests.Readers.Org.Directive Copyright : © 2014-2023 Albert Krewinkel License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel Stability : alpha Portability : portable Tests parsing of org directives (like @#+OPTIONS@). -} module Tests.Readers.Org.Directive (tests) where import Data.Time (UTCTime (UTCTime), secondsToDiffTime) import Data.Time.Calendar (Day (ModifiedJulianDay)) import Test.Tasty (TestTree, testGroup) import Tests.Helpers ((=?>), ToString, purely, test) import Tests.Readers.Org.Shared ((=:), tagSpan) import Text.Pandoc import Text.Pandoc.Builder import qualified Data.ByteString as BS import qualified Data.Text as T testWithFiles :: (ToString c) => [(FilePath, BS.ByteString)] -> String -- ^ name of test case -> (T.Text, c) -- ^ (input, expected value) -> TestTree testWithFiles fileDefs = test (orgWithFiles fileDefs) orgWithFiles :: [(FilePath, BS.ByteString)] -> T.Text -> Pandoc orgWithFiles fileDefs input = let readOrg' = readOrg def{ readerExtensions = getDefaultExtensions "org" } in flip purely input $ \inp -> do modifyPureState (\st -> st { stFiles = files fileDefs }) readOrg' inp files :: [(FilePath, BS.ByteString)] -> FileTree files fileDefs = let dummyTime = UTCTime (ModifiedJulianDay 125) (secondsToDiffTime 0) in foldr (\(fp, bs) -> insertInFileTree fp (FileInfo dummyTime bs)) mempty fileDefs tests :: [TestTree] tests = [ testGroup "export options" [ "disable simple sub/superscript syntax" =: T.unlines [ "#+OPTIONS: ^:nil" , "a^b" ] =?> para "a^b" , "directly select drawers to be exported" =: T.unlines [ "#+OPTIONS: d:(\"IMPORTANT\")" , ":IMPORTANT:" , "23" , ":END:" , ":BORING:" , "very boring" , ":END:" ] =?> divWith (mempty, ["IMPORTANT", "drawer"], mempty) (para "23") , "exclude drawers from being exported" =: T.unlines [ "#+OPTIONS: d:(not \"BORING\")" , ":IMPORTANT:" , "5" , ":END:" , ":BORING:" , "very boring" , ":END:" ] =?> divWith (mempty, ["IMPORTANT", "drawer"], mempty) (para "5") , "don't include archive trees" =: T.unlines [ "#+OPTIONS: arch:nil" , "* old :ARCHIVE:" ] =?> (mempty ::Blocks) , "include complete archive trees" =: T.unlines [ "#+OPTIONS: arch:t" , "* old :ARCHIVE:" , " boring" ] =?> mconcat [ headerWith ("old", [], mempty) 1 ("old" <> space <> tagSpan "ARCHIVE") , para "boring" ] , "include archive tree header only" =: T.unlines [ "#+OPTIONS: arch:headline" , "* old :ARCHIVE:" , " boring" ] =?> headerWith ("old", [], mempty) 1 ("old" <> space <> tagSpan "ARCHIVE") , "limit headline depth" =: T.unlines [ "#+OPTIONS: H:2" , "* top-level section" , "** subsection" , "*** list item 1" , "*** list item 2" ] =?> mconcat [ headerWith ("top-level-section", [], []) 1 "top-level section" , headerWith ("subsection", [], []) 2 "subsection" , orderedList [ para "list item 1", para "list item 2" ] ] , "turn all headlines into lists" =: T.unlines [ "#+OPTIONS: H:0" , "first block" , "* top-level section 1" , "** subsection" , "* top-level section 2" ] =?> mconcat [ para "first block" , orderedList [ para "top-level section 1" <> orderedList [ para "subsection" ] , para "top-level section 2" ] ] , "preserve linebreaks as hard breaks" =: T.unlines [ "#+OPTIONS: \\n:t" , "first" , "second" ] =?> para ("first" <> linebreak <> "second") , "disable author export" =: T.unlines [ "#+OPTIONS: author:nil" , "#+AUTHOR: ShyGuy" ] =?> Pandoc nullMeta mempty , "disable creator export" =: T.unlines [ "#+OPTIONS: creator:nil" , "#+creator: The Architect" ] =?> Pandoc nullMeta mempty , "disable email export" =: T.unlines [ "#+OPTIONS: email:nil" , "#+email: no-mail-please@example.com" ] =?> Pandoc nullMeta mempty , "disable MathML-like entities" =: T.unlines [ "#+OPTIONS: e:nil" , "Icelandic letter: \\thorn" ] =?> para "Icelandic letter: \\thorn" , testGroup "Option f" [ "disable inline footnotes" =: T.unlines [ "#+OPTIONS: f:nil" , "Funny![fn:funny:or not]" ] =?> para "Funny!" , "disable reference footnotes" =: T.unlines [ "#+OPTIONS: f:nil" , "Burn everything[fn:1] down!" , "" , "[fn:2] Not quite everything." ] =?> para "Burn everything down!" ] , "disable inclusion of todo keywords" =: T.unlines [ "#+OPTIONS: todo:nil" , "** DONE todo export" ] =?> headerWith ("todo-export", [], []) 2 "todo export" , "remove tags from headlines" =: T.unlines [ "#+OPTIONS: tags:nil" , "* Headline :hello:world:" ] =?> headerWith ("headline", [], mempty) 1 "Headline" , testGroup "LaTeX" [ testGroup "Include LaTeX fragments" [ "Inline command" =: T.unlines [ "#+OPTIONS: tex:t" , "Hello \\emph{Name}" ] =?> para ("Hello" <> space <> emph "Name") , "Alpha" =: T.unlines [ "#+OPTIONS: tex:t" , "\\alpha" ] =?> para "α" , "equation environment" =: T.unlines [ "#+OPTIONS: tex:t" , "\\begin{equation}" , "f(x) = x^2" , "\\end{equation}" ] =?> rawBlock "latex" (T.unlines [ "\\begin{equation}" , "f(x) = x^2" , "\\end{equation}" ]) ] , testGroup "Ignore LaTeX fragments" [ "Inline command" =: T.unlines [ "#+OPTIONS: tex:nil" , "Hello \\emph{Emphasised}" ] =?> para "Hello" , "MathML symbol (alpha)" =: T.unlines [ "#+OPTIONS: tex:nil" , "\\alpha" ] =?> para "α" , "equation environment" =: T.unlines [ "#+OPTIONS: tex:nil" , "\\begin{equation}" , "f(x) = x^2" , "\\end{equation}" ] =?> (mempty :: Blocks) ] , testGroup "Verbatim LaTeX" [ "Inline command" =: T.unlines [ "#+OPTIONS: tex:verbatim" , "Hello \\emph{Emphasised}" ] =?> para "Hello \\emph{Emphasised}" , "MathML symbol (alpha)" =: T.unlines [ "#+OPTIONS: tex:verbatim" , "\\alpha" ] =?> para "α" , "equation environment" =: T.unlines [ "#+OPTIONS: tex:verbatim" , "\\begin{equation}" , "f(x) = x^2" , "\\end{equation}" ] =?> para (str "\\begin{equation}" <> softbreak <> text "f(x) = x^2" <> softbreak <> str "\\end{equation}") ] ] , testGroup "planning information" [ "include planning info after headlines" =: T.unlines [ "#+OPTIONS: p:t" , "* important" , " DEADLINE: <2018-10-01 Mon> SCHEDULED: <2018-09-15 Sat>" ] =?> mconcat [ headerWith ("important", mempty, mempty) 1 "important" , plain $ strong "DEADLINE:" <> space <> emph (str "<2018-10-01 Mon>") <> space <> strong "SCHEDULED:" <> space <> emph (str "<2018-09-15 Sat>") ] , "empty planning info is not included" =: T.unlines [ "#+OPTIONS: p:t" , "* Wichtig" ] =?> headerWith ("wichtig", mempty, mempty) 1 "Wichtig" ] , testGroup "Option |" [ "disable export of tables" =: T.unlines [ "#+OPTIONS: |:nil" , "| chair |" ] =?> (mempty :: Blocks) ] , testGroup "unknown options" [ "unknown options are ignored" =: T.unlines [ "#+OPTIONS: does-not-exist:t "] =?> (mempty :: Pandoc) , "highlighting after unknown option" =: T.unlines [ "#+OPTIONS: nope" , "/yup/" ] =?> para (emph "yup") , "unknown option interleaved with known" =: T.unlines [ "#+OPTIONS: tags:nil foo:bar todo:nil" , "* DONE ignore things :easy:" ] =?> headerWith ("ignore-things", [], mempty) 1 "ignore things" ] ] , testGroup "Include" [ testWithFiles [("./other.org", "content of other file\n")] "file inclusion" (T.unlines [ "#+include: \"other.org\"" ] =?> plain "content of other file") , testWithFiles [("./world.org", "World\n\n")] "Included file belongs to item" (T.unlines [ "- Hello,\n #+include: \"world.org\"" ] =?> bulletList [para "Hello," <> para "World"]) , testWithFiles [("./level3.org", "*** Level3\n\n")] "Default include preserves level" (T.unlines [ "#+include: \"level3.org\"" ] =?> headerWith ("level3", [], []) 3 "Level3") , testWithFiles [("./level3.org", "*** Level3\n\n")] "Minlevel shifts level leftward" (T.unlines [ "#+include: \"level3.org\" :minlevel 1" ] =?> headerWith ("level3", [], []) 1 "Level3") , testWithFiles [("./level1.org", "* Level1\n\n")] "Minlevel shifts level rightward" (T.unlines [ "#+include: \"level1.org\" :minlevel 3" ] =?> headerWith ("level1", [], []) 3 "Level1") , testWithFiles [("./src.hs", "putStrLn outString\n")] "Include file as source code snippet" (T.unlines [ "#+include: \"src.hs\" src haskell" ] =?> codeBlockWith ("", ["haskell"], []) "putStrLn outString\n") , testWithFiles [("./export-latex.org", "\\emph{Hello}\n")] "Include file as export snippet" (T.unlines [ "#+include: \"export-latex.org\" export latex" ] =?> rawBlock "latex" "\\emph{Hello}\n") , testWithFiles [("./subdir/foo-bar.latex", "foo\n"), ("./hello.lisp", "(print \"Hello!\")\n") ] "include directive is limited to one line" (T.unlines [ "#+INCLUDE: \"hello.lisp\" src lisp" , "#+include: \"subdir/foo-bar.latex\" export latex" , "bar" ] =?> mconcat [ codeBlockWith ("", ["lisp"], []) "(print \"Hello!\")\n" , rawBlock "latex" "foo\n" , para "bar" ] ) ] ] pandoc-3.1.3/test/Tests/Readers/Org/Inline.hs0000644000000000000000000002750707346545000017135 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Tests.Readers.Org.Inline Copyright : © 2014-2023 Albert Krewinkel License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel Stability : alpha Portability : portable Tests parsing of org inlines. -} module Tests.Readers.Org.Inline (tests) where import Data.List (intersperse) import Test.Tasty (TestTree, testGroup) import Tests.Helpers ((=?>)) import Tests.Readers.Org.Shared ((=:), spcSep) import Text.Pandoc.Builder import qualified Data.Text as T import qualified Tests.Readers.Org.Inline.Citation as Citation import qualified Tests.Readers.Org.Inline.Note as Note import qualified Tests.Readers.Org.Inline.Smart as Smart tests :: [TestTree] tests = [ "Plain String" =: "Hello, World" =?> para (spcSep [ "Hello,", "World" ]) , "Emphasis" =: "/Planet Punk/" =?> para (emph . spcSep $ ["Planet", "Punk"]) , "Strong" =: "*Cider*" =?> para (strong "Cider") , "Strong Emphasis" =: "/*strength*/" =?> para (emph . strong $ "strength") , "Emphasized Strong preceded by space" =: " */super/*" =?> para (strong . emph $ "super") , "Underline" =: "_underline_" =?> para (underline "underline") , "Strikeout" =: "+Kill Bill+" =?> para (strikeout . spcSep $ [ "Kill", "Bill" ]) , "Verbatim" =: "=Robot.rock()=" =?> para (codeWith ("", ["verbatim"], []) "Robot.rock()") , "Code" =: "~word for word~" =?> para (code "word for word") , "Math $..$" =: "$E=mc^2$" =?> para (math "E=mc^2") , "Math $$..$$" =: "$$E=mc^2$$" =?> para (displayMath "E=mc^2") , "Math \\[..\\]" =: "\\[E=ℎν\\]" =?> para (displayMath "E=ℎν") , "Math \\(..\\)" =: "\\(σ_x σ_p ≥ \\frac{ℏ}{2}\\)" =?> para (math "σ_x σ_p ≥ \\frac{ℏ}{2}") , "Symbol" =: "A * symbol" =?> para (str "A" <> space <> str "*" <> space <> "symbol") , "Superscript simple expression" =: "2^-λ" =?> para (str "2" <> superscript "-λ") , "Superscript multi char" =: "2^{n-1}" =?> para (str "2" <> superscript "n-1") , "Subscript simple expression" =: "a_n" =?> para (str "a" <> subscript "n") , "Subscript multi char" =: "a_{n+1}" =?> para (str "a" <> subscript "n+1") , "Linebreak" =: "line \\\\ \nbreak" =?> para ("line" <> linebreak <> "break") , "Inline note" =: "[fn::Schreib mir eine E-Mail]" =?> para (note $ para "Schreib mir eine E-Mail") , "By default, markup-chars not occurring on word break are symbols" =: T.unlines [ "#+pandoc-emphasis-pre:" , "#+pandoc-emphasis-post:" , "this+that+ +so+on" , "seven*eight* nine*" , "+not+funny+" ] =?> para ("this+that+ +so+on" <> softbreak <> "seven*eight* nine*" <> softbreak <> strikeout "not+funny") , "No empty markup" =: "// ** __ <> == ~~ $$" =?> para (spcSep [ "//", "**", "__", "<>", "==", "~~", "$$" ]) , "Adherence to Org's rules for markup borders" =: "/t/& a/ / ./r/ (*l*) /e/! ze\x200b/r/\x200bo /b/." =?> para (spcSep [ emph $ "t/&" <> space <> "a" , "/" , "./r/" , "(" <> strong "l" <> ")" , emph "e" <> "!" , "ze\x200b" <> emph "r" <> "\x200bo" , emph "b" <> "." ]) , "Quotes are allowed border chars" =: "/'yep/ *sure\"*" =?> para (emph "'yep" <> space <> strong "sure\"") , "Spaces are forbidden border chars" =: "/nada /" =?> para "/nada /" , "Zero width spaces are forbidden border chars" =: "/emph\x200b/asis" =?> para "/emph\x200b/asis" , "Markup should work properly after a blank line" =: T.unlines ["foo", "", "/bar/"] =?> para (text "foo") <> para (emph $ text "bar") , "Inline math must stay within three lines" =: T.unlines [ "$a", "b", "c$", "$d", "e", "f", "g$" ] =?> para (math "a\nb\nc" <> softbreak <> "$d" <> softbreak <> "e" <> softbreak <> "f" <> softbreak <> "g$") , "Single-character math" =: "$a$ $b$! $c$?" =?> para (spcSep [ math "a" , "$b$!" , math "c" <> "?" ]) , "Markup may not span more than two lines" =: "/this *is +totally\nnice+ not*\nemph/" =?> para ("/this" <> space <> strong ("is" <> space <> strikeout ("totally" <> softbreak <> "nice") <> space <> "not") <> softbreak <> "emph/") , "Sub- and superscript expressions" =: T.unlines [ "a_(a(b)(c)d)" , "e^(f(g)h)" , "i_(jk)l)" , "m^()n" , "o_{p{q{}r}}" , "s^{t{u}v}" , "w_{xy}z}" , "1^{}2" , "3_{{}}" , "4^(a(*b(c*)d))" ] =?> para (mconcat $ intersperse softbreak [ "a" <> subscript "(a(b)(c)d)" , "e" <> superscript "(f(g)h)" , "i" <> subscript "(jk)" <> "l)" , "m" <> superscript "()" <> "n" , "o" <> subscript "p{q{}r}" , "s" <> superscript "t{u}v" , "w" <> subscript "xy" <> "z}" , "1" <> superscript "" <> "2" , "3" <> subscript "{}" , "4" <> superscript ("(a(" <> strong "b(c" <> ")d))") ]) , "Verbatim text can contain equal signs (=)" =: "=is_subst = True=" =?> para (codeWith ("", ["verbatim"], []) "is_subst = True") , testGroup "Images" [ "Image" =: "[[./sunset.jpg]]" =?> para (image "./sunset.jpg" "" "") , "Image with explicit file: prefix" =: "[[file:sunrise.jpg]]" =?> para (image "sunrise.jpg" "" "") , "Multiple images within a paragraph" =: T.unlines [ "[[file:sunrise.jpg]]" , "[[file:sunset.jpg]]" ] =?> para (image "sunrise.jpg" "" "" <> softbreak <> image "sunset.jpg" "" "") , "Image with html attributes" =: T.unlines [ "#+attr_html: :width 50%" , "[[file:guinea-pig.gif]]" ] =?> para (imageWith ("", [], [("width", "50%")]) "guinea-pig.gif" "" "") , "HTML attributes can have trailing spaces" =: T.unlines [ "#+attr_html: :width 100% :height 360px " , "[[file:fireworks.jpg]]" ] =?> let kv = [("width", "100%"), ("height", "360px")] in para (imageWith (mempty, mempty, kv) "fireworks.jpg" mempty mempty) , "Uppercase extension" =: "[[file:test.PNG]]" =?> para (image "test.PNG" "" "") ] , "Explicit link" =: "[[http://zeitlens.com/][pseudo-random /nonsense/]]" =?> para (link "http://zeitlens.com/" "" ("pseudo-random" <> space <> emph "nonsense")) , "Self-link" =: "[[http://zeitlens.com/]]" =?> para (link "http://zeitlens.com/" "" "http://zeitlens.com/") , "Internal self-link (reference)" =: "[[#rabbit]]" =?> para (link "#rabbit" "" "#rabbit") , "Absolute file link" =: "[[/url][hi]]" =?> para (link "file:///url" "" "hi") , "Link to file in parent directory" =: "[[../file.txt][moin]]" =?> para (link "../file.txt" "" "moin") , "Empty link (for gitit interop)" =: "[[][New Link]]" =?> para (link "" "" "New Link") , "Image link" =: "[[sunset.png][file:dusk.svg]]" =?> para (link "sunset.png" "" (image "dusk.svg" "" "")) , "Image link with non-image target" =: "[[http://example.com][./logo.png]]" =?> para (link "http://example.com" "" (image "./logo.png" "" "")) , "Link to image" =: "[[https://example.com/image.jpg][Look!]]" =?> para (link "https://example.com/image.jpg" "" (str "Look!")) , "Plain link" =: "Posts on http://zeitlens.com/ can be funny at times." =?> para (spcSep [ "Posts", "on" , link "http://zeitlens.com/" "" "http://zeitlens.com/" , "can", "be", "funny", "at", "times." ]) , "Angle link" =: "Look at for fnords." =?> para (spcSep [ "Look", "at" , link "http://moltkeplatz.de" "" "http://moltkeplatz.de" , "for", "fnords." ]) , "Absolute file link" =: "[[file:///etc/passwd][passwd]]" =?> para (link "file:///etc/passwd" "" "passwd") , "File link" =: "[[file:target][title]]" =?> para (link "target" "" "title") , "Anchor" =: "<> Link here later." =?> para (spanWith ("anchor", [], []) mempty <> "Link" <> space <> "here" <> space <> "later.") , "Inline code block" =: "src_emacs-lisp{(message \"Hello\")}" =?> para (codeWith ( "" , [ "commonlisp" ] , [ ("org-language", "emacs-lisp") ]) "(message \"Hello\")") , "Inline code block with arguments" =: "src_sh[:export both :results output]{echo 'Hello, World'}" =?> para (codeWith ( "" , [ "bash" ] , [ ("org-language", "sh") , ("export", "both") , ("results", "output") ] ) "echo 'Hello, World'") , "Inline code block with a blank argument array" =: "src_sh[]{echo 'Hello, World'}" =?> para (codeWith ( "" , [ "bash" ] , [ ("org-language", "sh") ]) "echo 'Hello, World'") , "Inline code block with toggle" =: "src_sh[:toggle]{echo $HOME}" =?> para (codeWith ( "" , [ "bash" ] , [ ("org-language", "sh") , ("toggle", "yes") ] ) "echo $HOME") , "Inline LaTeX symbol" =: "\\dots" =?> para "…" , "Inline LaTeX command" =: "\\textit{Emphasised}" =?> para (emph "Emphasised") , "Inline LaTeX command with spaces" =: "\\emph{Emphasis mine}" =?> para (emph "Emphasis mine") , "Inline math symbols" =: "\\tau \\oplus \\alpha" =?> para "τ ⊕ α" , "Inline LaTeX math command" =: "\\crarr" =?> para "↵" , "Unknown inline LaTeX command" =: "\\notacommand{foo}" =?> para (rawInline "latex" "\\notacommand{foo}") , "Export snippet" =: "@@html:M-x org-agenda@@" =?> para (rawInline "html" "M-x org-agenda") , "MathML symbol in LaTeX-style" =: "There is a hackerspace in Lübeck, Germany, called nbsp (unicode symbol: '\\nbsp')." =?> para "There is a hackerspace in Lübeck, Germany, called nbsp (unicode symbol: ' ')." , "MathML symbol in LaTeX-style, including braces" =: "\\Aacute{}stor" =?> para "Ástor" , "MathML copy sign" =: "\\copy" =?> para "©" , "MathML symbols, space separated" =: "\\ForAll \\Auml" =?> para "∀ Ä" , "Macro" =: T.unlines [ "#+MACRO: HELLO /Hello, $1/" , "{{{HELLO(World)}}}" ] =?> para (emph "Hello, World") , "Macro duplicating its argument" =: T.unlines [ "#+MACRO: HELLO $1$1" , "{{{HELLO(moin)}}}" ] =?> para "moinmoin" , "Macro called with too few arguments" =: T.unlines [ "#+MACRO: HELLO Foo $1 $2 Bar" , "{{{HELLO()}}}" ] =?> para "Foo Bar" , testGroup "Citations" Citation.tests , testGroup "Footnotes" Note.tests , testGroup "Smart punctuation" Smart.tests ] pandoc-3.1.3/test/Tests/Readers/Org/Inline/0000755000000000000000000000000007346545000016566 5ustar0000000000000000pandoc-3.1.3/test/Tests/Readers/Org/Inline/Citation.hs0000644000000000000000000001703107346545000020676 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Tests.Readers.Org.Inline.Citation Copyright : © 2014-2023 Albert Krewinkel License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel Stability : alpha Portability : portable Test parsing of citations in org input. -} module Tests.Readers.Org.Inline.Citation (tests) where import Test.Tasty (TestTree, testGroup) import Tests.Helpers ((=?>)) import Tests.Readers.Org.Shared ((=:)) import Text.Pandoc.Builder tests :: [TestTree] tests = [ testGroup "Org-cite citations" [ "Citation" =: "[cite:@nonexistent]" =?> let citation = Citation { citationId = "nonexistent" , citationPrefix = [] , citationSuffix = [] , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0} in (para $ cite [citation] "[cite:@nonexistent]") , "Citation containing text" =: "[cite:see @item1 p. 34-35]" =?> let citation = Citation { citationId = "item1" , citationPrefix = [Str "see"] , citationSuffix = [Space ,Str "p.",Space,Str "34-35"] , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0} in (para $ cite [citation] "[cite:see @item1 p. 34-35]") , "Author-in-text citation with locator and suffix" =: "[cite/t:see @item1 p. 34-35 and *passim*; @item2]" =?> let citations = [ Citation { citationId = "item1" , citationPrefix = [ Str "see" ] , citationSuffix = [ Str "p." , Space , Str "34-35" , Space , Str "and" , Space , Strong [ Str "passim" ] ] , citationMode = AuthorInText , citationNoteNum = 0 , citationHash = 0 } , Citation { citationId = "item2" , citationPrefix = [] , citationSuffix = [] , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } ] in (para $ cite citations "[cite/t:see @item1 p. 34-35 and *passim*; @item2]") ] , testGroup "org-ref citations" [ "simple citation" =: "cite:pandoc" =?> let citation = Citation { citationId = "pandoc" , citationPrefix = mempty , citationSuffix = mempty , citationMode = AuthorInText , citationNoteNum = 0 , citationHash = 0 } in (para $ cite [citation] "cite:pandoc") , "simple citation with underscores" =: "cite:pandoc_org_ref" =?> let citation = Citation { citationId = "pandoc_org_ref" , citationPrefix = mempty , citationSuffix = mempty , citationMode = AuthorInText , citationNoteNum = 0 , citationHash = 0 } in (para $ cite [citation] "cite:pandoc_org_ref") , "simple citation succeeded by comma" =: "cite:pandoc," =?> let citation = Citation { citationId = "pandoc" , citationPrefix = mempty , citationSuffix = mempty , citationMode = AuthorInText , citationNoteNum = 0 , citationHash = 0 } in (para $ cite [citation] "cite:pandoc" <> str ",") , "simple citation succeeded by dot" =: "cite:pandoc." =?> let citation = Citation { citationId = "pandoc" , citationPrefix = mempty , citationSuffix = mempty , citationMode = AuthorInText , citationNoteNum = 0 , citationHash = 0 } in (para $ cite [citation] "cite:pandoc" <> str ".") , "simple citation succeeded by colon" =: "cite:pandoc:" =?> let citation = Citation { citationId = "pandoc" , citationPrefix = mempty , citationSuffix = mempty , citationMode = AuthorInText , citationNoteNum = 0 , citationHash = 0 } in (para $ cite [citation] "cite:pandoc" <> str ":") , "simple citep citation" =: "citep:pandoc" =?> let citation = Citation { citationId = "pandoc" , citationPrefix = mempty , citationSuffix = mempty , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } in (para $ cite [citation] "citep:pandoc") , "multiple simple citations" =: "citep:picard,riker" =?> let picard = Citation { citationId = "picard" , citationPrefix = mempty , citationSuffix = mempty , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } riker = Citation { citationId = "riker" , citationPrefix = mempty , citationSuffix = mempty , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } in (para $ cite [picard,riker] "citep:picard,riker") , "multiple simple citations succeeded by comma" =: "citep:picard,riker," =?> let picard = Citation { citationId = "picard" , citationPrefix = mempty , citationSuffix = mempty , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } riker = Citation { citationId = "riker" , citationPrefix = mempty , citationSuffix = mempty , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } in (para $ cite [picard,riker] "citep:picard,riker" <> str ",") , "extended citation" =: "[[citep:Dominik201408][See page 20::, for example]]" =?> let citation = Citation { citationId = "Dominik201408" , citationPrefix = toList "See page 20" , citationSuffix = toList ", for example" , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } in (para $ cite [citation] "[[citep:Dominik201408][See page 20::, for example]]") ] , "LaTeX citation" =: "\\cite{Coffee}" =?> let citation = Citation { citationId = "Coffee" , citationPrefix = [] , citationSuffix = [] , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0} in (para . cite [citation] $ rawInline "latex" "\\cite{Coffee}") ] pandoc-3.1.3/test/Tests/Readers/Org/Inline/Note.hs0000644000000000000000000000524307346545000020033 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Tests.Readers.Org.Inline.Note Copyright : © 2014-2023 Albert Krewinkel License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel Stability : alpha Portability : portable Test parsing of footnotes in org input. -} module Tests.Readers.Org.Inline.Note (tests) where import Test.Tasty (TestTree) import Tests.Helpers ((=?>)) import Tests.Readers.Org.Shared ((=:)) import Text.Pandoc.Builder import qualified Data.Text as T tests :: [TestTree] tests = [ "Footnote" =: T.unlines [ "A footnote[1]" , "" , "[1] First paragraph" , "" , "second paragraph" ] =?> para (mconcat [ "A", space, "footnote" , note $ mconcat [ para ("First" <> space <> "paragraph") , para ("second" <> space <> "paragraph") ] ]) , "Two footnotes" =: T.unlines [ "Footnotes[fn:1][fn:2]" , "" , "[fn:1] First note." , "" , "[fn:2] Second note." ] =?> para (mconcat [ "Footnotes" , note $ para ("First" <> space <> "note.") , note $ para ("Second" <> space <> "note.") ]) , "Emphasized text before footnote" =: T.unlines [ "/text/[fn:1]" , "" , "[fn:1] unicorn" ] =?> para (mconcat [ emph "text" , note . para $ "unicorn" ]) , "Footnote that starts with emphasized text" =: T.unlines [ "text[fn:1]" , "" , "[fn:1] /emphasized/" ] =?> para (mconcat [ "text" , note . para $ emph "emphasized" ]) , "Footnote followed by header" =: T.unlines [ "Another note[fn:yay]" , "" , "[fn:yay] This is great!" , "" , "** Headline" ] =?> mconcat [ para (mconcat [ "Another", space, "note" , note $ para ("This" <> space <> "is" <> space <> "great!") ]) , headerWith ("headline", [], []) 2 "Headline" ] , "Footnote followed by two blank lines" =: T.unlines [ "footnote[fn:blanklines]" , "" , "[fn:blanklines] followed by blank lines" , "" , "" , "next" ] =?> mconcat [ para ("footnote" <> note (para "followed by blank lines")) , para "next" ] ] pandoc-3.1.3/test/Tests/Readers/Org/Inline/Smart.hs0000644000000000000000000000366707346545000020224 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Tests.Readers.Org.Inline.Smart Copyright : © 2014-2023 Albert Krewinkel License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel Stability : alpha Portability : portable Test smart parsing of quotes, apostrophe, etc. -} module Tests.Readers.Org.Inline.Smart (tests) where import Data.Text (Text) import Test.Tasty (TestTree) import Tests.Helpers ((=?>), purely, test) import Text.Pandoc (ReaderOptions (readerExtensions), Extension (Ext_smart), def, enableExtension, getDefaultExtensions, readOrg) import Text.Pandoc.Builder orgSmart :: Text -> Pandoc orgSmart = purely $ let extensionsSmart = enableExtension Ext_smart (getDefaultExtensions "org") in readOrg def{ readerExtensions = extensionsSmart } tests :: [TestTree] tests = [ test orgSmart "quote before ellipses" ("'...hi'" =?> para (singleQuoted "…hi")) , test orgSmart "apostrophe before emph" ("D'oh! A l'/aide/!" =?> para ("D’oh! A l’" <> emph "aide" <> "!")) , test orgSmart "apostrophe in French" ("À l'arrivée de la guerre, le thème de l'«impossibilité du socialisme»" =?> para "À l’arrivée de la guerre, le thème de l’«impossibilité du socialisme»") , test orgSmart "Quotes cannot occur at the end of emphasized text" ("/say \"yes\"/" =?> para ("/say" <> space <> doubleQuoted "yes" <> "/")) , test orgSmart "Dashes are allowed at the borders of emphasis'" ("/foo---/" =?> para (emph "foo—")) , test orgSmart "Single quotes can be followed by emphasized text" ("Singles on the '/meat market/'" =?> para ("Singles on the " <> singleQuoted (emph "meat market"))) , test orgSmart "Double quotes can be followed by emphasized text" ("Double income, no kids: \"/DINK/\"" =?> para ("Double income, no kids: " <> doubleQuoted (emph "DINK"))) ] pandoc-3.1.3/test/Tests/Readers/Org/Meta.hs0000644000000000000000000002453007346545000016576 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Tests.Readers.Org.Meta Copyright : © 2014-2023 Albert Krewinkel License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel Stability : alpha Portability : portable Tests parsing of org meta data (mostly lines starting with @#+@). -} module Tests.Readers.Org.Meta (tests) where import Test.Tasty (TestTree, testGroup) import Tests.Helpers ((=?>)) import Tests.Readers.Org.Shared ((=:), spcSep) import Text.Pandoc import Text.Pandoc.Builder import qualified Data.Text as T tests :: [TestTree] tests = [ testGroup "Comments" [ "Comment" =: "# Nothing to see here" =?> (mempty::Blocks) , "Hash not followed by space is text" =: "#-tag" =?> para "#-tag" , "Comment surrounded by Text" =: T.unlines [ "Before" , "# Comment" , "After" ] =?> mconcat [ para "Before" , para "After" ] ] , testGroup "Export settings" [ "Title" =: "#+title: Hello, World" =?> let titleInline = toList $ "Hello," <> space <> "World" meta = setMeta "title" (MetaInlines titleInline) nullMeta in Pandoc meta mempty , testGroup "Author" [ "sets 'author' field" =: "#+author: John /Emacs-Fanboy/ Doe" =?> let author = toList . spcSep $ [ "John", emph "Emacs-Fanboy", "Doe" ] meta = setMeta "author" (MetaInlines author) nullMeta in Pandoc meta mempty , "Multiple author lines" =: T.unlines [ "#+author: James Dewey Watson," , "#+author: Francis Harry Compton Crick" ] =?> let watson = toList "James Dewey Watson," crick = toList "Francis Harry Compton Crick" meta = setMeta "author" (MetaInlines (watson ++ SoftBreak : crick)) nullMeta in Pandoc meta mempty ] , "Date" =: "#+date: Feb. *28*, 2014" =?> let date = toList . spcSep $ [ "Feb.", strong "28" <> ",", "2014" ] meta = setMeta "date" (MetaInlines date) nullMeta in Pandoc meta mempty , testGroup "Description" [ "Single line" =: "#+description: Explanatory text" =?> let description = [Str "Explanatory", Space, Str "text"] meta = setMeta "description" (MetaInlines description) nullMeta in Pandoc meta mempty , "Multiline" =: T.unlines [ "#+description: /Short/ introduction" , "#+description: to Org-mode" ] =?> let description = [ Emph [Str "Short"], Space, Str "introduction" , SoftBreak , Str "to", Space, Str "Org-mode" ] meta = setMeta "description" (MetaInlines description) nullMeta in Pandoc meta mempty ] , "Subtitle" =: T.unlines [ "#+subtitle: Your Life in" , "#+subtitle: /Plain/ Text" ] =?> let subtitle = "Your Life in" <> softbreak <> emph "Plain" <> " Text" in Pandoc (setMeta "subtitle" (toMetaValue subtitle) nullMeta) mempty , "Keywords" =: T.unlines [ "#+keywords: pandoc, testing," , "#+keywords: Org" ] =?> let keywords = toList $ "pandoc, testing," <> softbreak <> "Org" meta = setMeta "keywords" (MetaInlines keywords) nullMeta in Pandoc meta mempty , "Institute" =: "#+institute: ACME Inc." =?> Pandoc (setMeta "institute" ("ACME Inc." :: Inlines) nullMeta) mempty , "Document language" =: "#+LANGUAGE: de-DE" =?> Pandoc (setMeta "lang" (MetaString "de-DE") nullMeta) mempty , testGroup "Todo sequences" [ "not included in document" =: "#+todo: WAITING | FINISHED" =?> Pandoc mempty mempty , "can contain multiple pipe characters" =: "#+todo: UNFINISHED | RESEARCH | NOTES | CHART\n" =?> Pandoc mempty mempty ] , testGroup "LaTeX" [ "LATEX_HEADER" =: "#+latex_header: \\usepackage{tikz}" =?> let latexInlines = rawInline "latex" "\\usepackage{tikz}" inclList = MetaList [MetaInlines (toList latexInlines)] meta = setMeta "header-includes" inclList nullMeta in Pandoc meta mempty , "LATEX_HEADER_EXTRA" =: "#+latex_header_extra: \\usepackage{calc}" =?> let latexInlines = rawInline "latex" "\\usepackage{calc}" inclList = toMetaValue [latexInlines] in Pandoc (setMeta "header-includes" inclList nullMeta) mempty , testGroup "LaTeX_CLASS" [ "stored as documentclass" =: "#+latex_class: article" =?> let meta = setMeta "documentclass" (MetaString "article") nullMeta in Pandoc meta mempty , "last definition takes precedence" =: T.unlines [ "#+latex_class: this will not be used" , "#+latex_class: report" ] =?> let meta = setMeta "documentclass" (MetaString "report") nullMeta in Pandoc meta mempty ] , "LATEX_CLASS_OPTIONS as classoption" =: "#+latex_class_options: [a4paper]" =?> let meta = setMeta "classoption" (MetaString "a4paper") nullMeta in Pandoc meta mempty ] , testGroup "HTML" [ "HTML_HEAD values are added to header-includes" =: "#+html_head: " =?> let html = rawInline "html" "" inclList = MetaList [MetaInlines (toList html)] meta = setMeta "header-includes" inclList nullMeta in Pandoc meta mempty , "HTML_HEAD_EXTRA behaves like HTML_HEAD" =: T.unlines [ "#+html_head: " , "#+html_head_extra: " ] =?> let generator = rawInline "html" "" charset = rawInline "html" "" inclList = toMetaValue [generator, charset] in Pandoc (setMeta "header-includes" inclList nullMeta) mempty ] ] , testGroup "Non-export keywords" [ testGroup "#+link" [ "Link abbreviation" =: T.unlines [ "#+link: wp https://en.wikipedia.org/wiki/%s" , "[[wp:Org_mode][Wikipedia on Org-mode]]" ] =?> para (link "https://en.wikipedia.org/wiki/Org_mode" "" ("Wikipedia" <> space <> "on" <> space <> "Org-mode")) , "Link abbreviation, defined after first use" =: T.unlines [ "[[zl:non-sense][Non-sense articles]]" , "#+link: zl http://zeitlens.com/tags/%s.html" ] =?> para (link "http://zeitlens.com/tags/non-sense.html" "" ("Non-sense" <> space <> "articles")) , "Link abbreviation, URL encoded arguments" =: T.unlines [ "#+link: expl http://example.com/%h/foo" , "[[expl:Hello, World!][Moin!]]" ] =?> para (link "http://example.com/Hello%2C%20World%21/foo" "" "Moin!") , "Link abbreviation, append arguments" =: T.unlines [ "#+link: expl http://example.com/" , "[[expl:foo][bar]]" ] =?> para (link "http://example.com/foo" "" "bar") ] , testGroup "emphasis config" [ "Changing pre chars for emphasis" =: T.unlines [ "#+pandoc-emphasis-pre: \"[)$a1%\"" , "[/emph/.)*strong*.a~code~" ] =?> para ("[" <> emph "emph" <> ".)" <> strong "strong" <> ".a" <> code "code") , "Changing post chars for emphasis" =: T.unlines [ "#+pandoc-emphasis-post: \"(]$a1%\"" , "/emph/('*strong*]'~code~a" ] =?> para (emph "emph" <> "('" <> strong "strong" <> "]'" <> code "code" <> "a") , "setting an invalid value restores the default" =: T.unlines [ "#+pandoc-emphasis-pre: \"[\"" , "#+pandoc-emphasis-post: \"]\"" , "#+pandoc-emphasis-pre:" , "#+pandoc-emphasis-post:" , "[/noemph/]" ] =?> para "[/noemph/]" ] , "Unknown keyword" =: T.unlines [ "#+unknown_keyword: Chumbawamba" , "#+another_unknown: Blur" ] =?> rawBlock "org" "#+unknown_keyword: Chumbawamba" <> rawBlock "org" "#+another_unknown: Blur" ] , "Properties drawer" =: T.unlines [ " :PROPERTIES:" , " :setting: foo" , " :END:" ] =?> (setMeta "setting" ("foo" :: T.Text) (doc mempty)) , "Logbook drawer" =: T.unlines [ " :LogBook:" , " - State \"DONE\" from \"TODO\" [2014-03-03 Mon 11:00]" , " :END:" ] =?> (mempty::Blocks) , "Drawer surrounded by text" =: T.unlines [ "Before" , ":PROPERTIES:" , ":END:" , "After" ] =?> para "Before" <> para "After" , "Drawer markers must be the only text in the line" =: T.unlines [ " :LOGBOOK: foo" , " :END: bar" ] =?> para (":LOGBOOK: foo" <> softbreak <> ":END: bar") , "Drawers can be arbitrary" =: T.unlines [ ":FOO:" , "/bar/" , ":END:" ] =?> divWith (mempty, ["FOO", "drawer"], mempty) (para $ emph "bar") , "Anchor reference" =: T.unlines [ "<> Target." , "" , "[[link-here][See here!]]" ] =?> (para (spanWith ("link-here", [], []) mempty <> "Target.") <> para (link "#link-here" "" ("See" <> space <> "here!"))) , "Search links are read as emph" =: "[[Wally][Where's Wally?]]" =?> para (spanWith ("", ["spurious-link"], [("target", "Wally")]) (emph $ "Where's" <> space <> "Wally?")) , "Link to nonexistent anchor" =: T.unlines [ "<> Target." , "" , "[[link$here][See here!]]" ] =?> (para (spanWith ("link-here", [], []) mempty <> "Target.") <> para (spanWith ("", ["spurious-link"], [("target", "link$here")]) (emph ("See" <> space <> "here!")))) ] pandoc-3.1.3/test/Tests/Readers/Org/Shared.hs0000644000000000000000000000223107346545000017110 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Tests.Readers.Org.Shared Copyright : © 2014-2023 Albert Krewinkel License : GNU GPL, version 2 or above Maintainer : Albert Krewinkel Stability : alpha Portability : portable Helper functions used by other org tests. -} module Tests.Readers.Org.Shared ( (=:) , org , spcSep , tagSpan ) where import Data.List (intersperse) import Data.Text (Text) import Tests.Helpers (ToString, purely, test) import Test.Tasty (TestTree) import Test.Tasty.HUnit (HasCallStack) import Text.Pandoc (Pandoc, ReaderOptions (readerExtensions), def, getDefaultExtensions, readOrg) import Text.Pandoc.Builder (Inlines, smallcaps, space, spanWith, str) org :: Text -> Pandoc org = purely $ readOrg def{ readerExtensions = getDefaultExtensions "org" } infix 4 =: (=:) :: (ToString c, HasCallStack) => String -> (Text, c) -> TestTree (=:) = test org spcSep :: [Inlines] -> Inlines spcSep = mconcat . intersperse space -- | Create a span for the given tag. tagSpan :: Text -> Inlines tagSpan t = spanWith ("", ["tag"], [("tag-name", t)]) . smallcaps $ str t pandoc-3.1.3/test/Tests/Readers/RST.hs0000644000000000000000000002342207346545000015630 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {- | Module : Tests.Readers.RST Copyright : © 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Tests for the RST reader. -} module Tests.Readers.RST (tests) where import Data.Text (Text) import qualified Data.Text as T import Test.Tasty import Test.Tasty.HUnit (HasCallStack) import Tests.Helpers import Text.Pandoc import Text.Pandoc.Arbitrary () import Text.Pandoc.Builder rst :: Text -> Pandoc rst = purely $ readRST def{ readerStandalone = True } infix 4 =: (=:) :: (ToString c, HasCallStack) => String -> (Text, c) -> TestTree (=:) = test rst tests :: [TestTree] tests = [ "line block with blank line" =: "| a\n|\n| b" =?> lineBlock [ "a", mempty, "\160b" ] , testGroup "field list" [ "general" =: T.unlines [ "para" , "" , ":Hostname: media08" , ":IP address: 10.0.0.19" , ":Size: 3ru" , ":Version: 1" , ":Indentation: Since the field marker may be quite long, the second" , " and subsequent lines of the field body do not have to line up" , " with the first line, but they must be indented relative to the" , " field name marker, and they must line up with each other." , ":Parameter i: integer" , ":Final: item" , " on two lines" ] =?> doc (para "para" <> definitionList [ (str "Hostname", [para "media08"]) , (text "IP address", [para "10.0.0.19"]) , (str "Size", [para "3ru"]) , (str "Version", [para "1"]) , (str "Indentation", [para "Since the field marker may be quite long, the second\nand subsequent lines of the field body do not have to line up\nwith the first line, but they must be indented relative to the\nfield name marker, and they must line up with each other."]) , (text "Parameter i", [para "integer"]) , (str "Final", [para "item\non two lines"]) ]) , "metadata" =: T.unlines [ "=====" , "Title" , "=====" , "--------" , "Subtitle" , "--------" , "" , ":Version: 1" ] =?> setMeta "version" (para "1") (setMeta "title" ("Title" :: Inlines) $ setMeta "subtitle" ("Subtitle" :: Inlines) $ doc mempty) , "with inline markup" =: T.unlines [ ":*Date*: today" , "" , ".." , "" , ":*one*: emphasis" , ":two_: reference" , ":`three`_: another one" , ":``four``: literal" , "" , ".. _two: http://example.com" , ".. _three: http://example.org" ] =?> setMeta "date" (str "today") (doc $ definitionList [ (emph "one", [para "emphasis"]) , (link "http://example.com" "" "two", [para "reference"]) , (link "http://example.org" "" "three", [para "another one"]) , (code "four", [para "literal"]) ]) ] , "URLs with following punctuation" =: ("http://google.com, http://yahoo.com; http://foo.bar.baz.\n" <> "http://foo.bar/baz_(bam) (http://foo.bar)") =?> para (link "http://google.com" "" "http://google.com" <> ", " <> link "http://yahoo.com" "" "http://yahoo.com" <> "; " <> link "http://foo.bar.baz" "" "http://foo.bar.baz" <> ". " <> softbreak <> link "http://foo.bar/baz_(bam)" "" "http://foo.bar/baz_(bam)" <> " (" <> link "http://foo.bar" "" "http://foo.bar" <> ")") , "Reference names with special characters" =: ("A-1-B_2_C:3:D+4+E.5.F_\n\n" <> ".. _A-1-B_2_C:3:D+4+E.5.F: https://example.com\n") =?> para (link "https://example.com" "" "A-1-B_2_C:3:D+4+E.5.F") , "Code directive with class and number-lines" =: T.unlines [ ".. code::python" , " :number-lines: 34" , " :class: class1 class2 class3" , "" , " def func(x):" , " return y" ] =?> doc (codeBlockWith ( "" , ["python", "numberLines", "class1", "class2", "class3"] , [ ("startFrom", "34") ] ) "def func(x):\n return y") , "Code directive with number-lines, no line specified" =: T.unlines [ ".. code::python" , " :number-lines:" , "" , " def func(x):" , " return y" ] =?> doc (codeBlockWith ( "" , ["python", "numberLines"] , [] ) "def func(x):\n return y") , testGroup "literal / line / code blocks" [ "indented literal block" =: T.unlines [ "::" , "" , " block quotes" , "" , " can go on for many lines" , "but must stop here"] =?> doc ( codeBlock "block quotes\n\ncan go on for many lines" <> para "but must stop here") , "line block with 3 lines" =: "| a\n| b\n| c" =?> lineBlock ["a", "b", "c"] , "line blocks with blank lines" =: T.unlines [ "|" , "" , "|" , "| a" , "| b" , "|" , "" , "|" ] =?> lineBlock [""] <> lineBlock ["", "a", "b", ""] <> lineBlock [""] , "quoted literal block using >" =: "::\n\n> quoted\n> block\n\nOrdinary paragraph" =?> codeBlock "> quoted\n> block" <> para "Ordinary paragraph" , "quoted literal block using | (not a line block)" =: "::\n\n| quoted\n| block\n\nOrdinary paragraph" =?> codeBlock "| quoted\n| block" <> para "Ordinary paragraph" , "class directive with single paragraph" =: ".. class:: special\n\nThis is a \"special\" paragraph." =?> divWith ("", ["special"], []) (para "This is a \"special\" paragraph.") , "class directive with two paragraphs" =: ".. class:: exceptional remarkable\n\n First paragraph.\n\n Second paragraph." =?> divWith ("", ["exceptional", "remarkable"], []) (para "First paragraph." <> para "Second paragraph.") , "class directive around literal block" =: ".. class:: classy\n\n::\n\n a\n b" =?> divWith ("", ["classy"], []) (codeBlock "a\nb")] , testGroup "interpreted text roles" [ "literal role prefix" =: ":literal:`a`" =?> para (code "a") , "literal role postfix" =: "`a`:literal:" =?> para (code "a") , "literal text" =: "``text``" =?> para (code "text") , "code role" =: ":code:`a`" =?> para (codeWith ("", [], []) "a") , "inherited code role" =: ".. role:: codeLike(code)\n\n:codeLike:`a`" =?> para (codeWith ("", ["codeLike"], []) "a") , "custom code role with language field" =: ".. role:: lhs(code)\n :language: haskell\n\n:lhs:`a`" =?> para (codeWith ("", ["lhs", "haskell"], []) "a") , "custom role with class field" =: ".. role:: classy\n :class: myclass\n\n:classy:`a`" =?> para (spanWith ("", ["myclass"], []) "a") , "custom role with class field containing multiple whitespace-separated classes" =: ".. role:: classy\n :class: myclass1 myclass2\n myclass3\n\n:classy:`a`" =?> para (spanWith ("", ["myclass1", "myclass2", "myclass3"], []) "a") , "custom role with inherited class field" =: ".. role:: classy\n :class: myclass1\n.. role:: classier(classy)\n :class: myclass2\n\n:classier:`a`" =?> para (spanWith ("", ["myclass2", "myclass1"], []) "a") , "custom role with unspecified parent role" =: ".. role:: classy\n\n:classy:`text`" =?> para (spanWith ("", ["classy"], []) "text") , "role with recursive inheritance" =: ".. role:: haskell(code)\n.. role:: lhs(haskell)\n\n:lhs:`text`" =?> para (codeWith ("", ["lhs", "haskell"], []) "text") , "unknown role" =: ":unknown:`text`" =?> para (codeWith ("",["interpreted-text"],[("role","unknown")]) "text") ] , testGroup "footnotes" [ "remove space before note" =: T.unlines [ "foo [1]_" , "" , ".. [1]" , " bar" ] =?> para ("foo" <> note (para "bar")) ] , testGroup "inlines" [ "links can contain an URI without being parsed twice (#4581)" =: "`http://loc `__" =?> para (link "http://loc" "" "http://loc") , "inline markup cannot be nested" =: "**a*b*c**" =?> para (strong "a*b*c") , "bare URI parsing disabled inside emphasis (#4561)" =: "*http://location*" =?> para (emph (text "http://location")) , "include newlines" =: "**before\nafter**" =?> para (strong (text "before\nafter")) ] ] pandoc-3.1.3/test/Tests/Readers/RTF.hs0000644000000000000000000000215707346545000015615 0ustar0000000000000000{- | Module : Tests.Readers.RTF Copyright : © 2021-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : jgm@berkeley.edu Stability : alpha Portability : portable Tests for the RTF reader. -} module Tests.Readers.RTF (tests) where import Test.Tasty import Tests.Helpers import Text.Pandoc import System.FilePath (replaceExtension, (), (<.>)) rtfTest :: TestName -> TestTree rtfTest name = testGolden name native path (\t -> runIOorExplode (readRTF def t >>= writeNative def{ writerTemplate = Just mempty })) where native = replaceExtension path ".native" path = "rtf" name <.> "rtf" tests :: [TestTree] tests = map rtfTest [ "footnote" , "accent" , "unicode" , "image" , "link" , "heading" , "formatting" , "list_simple" , "list_complex" , "bookmark" , "table_simple" , "table_error_codes" ] pandoc-3.1.3/test/Tests/Readers/Txt2Tags.hs0000644000000000000000000003651507346545000016647 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Tests.Readers.Txt2Tags Copyright : © 2014-2023 John MacFarlane, © 2014 Matthew Pickering License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Tests for the Txt2Tags reader. -} module Tests.Readers.Txt2Tags (tests) where import Data.List (intersperse) import Data.Text (Text) import qualified Data.Text as T import Test.Tasty import Test.Tasty.HUnit (HasCallStack) import Tests.Helpers import Text.Pandoc import Text.Pandoc.Arbitrary () import Text.Pandoc.Builder t2t :: Text -> Pandoc -- t2t = handleError . readTxt2Tags (T2TMeta "date" "mtime" "in" "out") def t2t = purely $ \s -> do setInputFiles ["in"] setOutputFile (Just "out") readTxt2Tags def s infix 4 =: (=:) :: (ToString c, HasCallStack) => String -> (Text, c) -> TestTree (=:) = test t2t spcSep :: [Inlines] -> Inlines spcSep = mconcat . intersperse space simpleTable' :: Int -> [Blocks] -> [[Blocks]] -> Blocks simpleTable' n = simpleTable'' $ replicate n (AlignCenter, ColWidthDefault) simpleTable'' :: [ColSpec] -> [Blocks] -> [[Blocks]] -> Blocks simpleTable'' spec headers rows = table emptyCaption spec (TableHead nullAttr $ toHeaderRow headers) [TableBody nullAttr 0 [] $ map toRow rows] (TableFoot nullAttr []) where toRow = Row nullAttr . map simpleCell toHeaderRow l = [toRow l | not (null l)] tests :: [TestTree] tests = [ testGroup "Inlines" [ "Plain String" =: "Hello, World" =?> para (spcSep [ "Hello,", "World" ]) , "Emphasis" =: "//Planet Punk//" =?> para (emph . spcSep $ ["Planet", "Punk"]) , "Strong" =: "**Cider**" =?> para (strong "Cider") , "Strong Emphasis" =: "//**strength**//" =?> para (emph . strong $ "strength") , "Strikeout" =: "--Kill Bill--" =?> para (strikeout . spcSep $ [ "Kill", "Bill" ]) , "Verbatim" =: "``Robot.rock()``" =?> para (code "Robot.rock()") , "Symbol" =: "A * symbol" =?> para (str "A" <> space <> str "*" <> space <> "symbol") , "No empty markup" =: "//// **** ____ ---- ```` \"\"\"\" ''''" =?> para (spcSep [ "////", "****", "____", "----", "````", "\"\"\"\"", "''''" ]) , "Inline markup is greedy" =: "***** ///// _____ ----- ````` \"\"\"\"\" '''''" =?> para (spcSep [strong "*", emph "/", underline "_" , strikeout "-", code "`", text "\"" , rawInline "html" "'"]) , "Markup must be greedy" =: "********** ////////// __________ ---------- `````````` \"\"\"\"\"\"\"\"\"\" ''''''''''" =?> para (spcSep [strong "******", emph "//////", underline "______" , strikeout "------", code "``````", text "\"\"\"\"\"\"" , rawInline "html" "''''''"]) , "Inlines must be glued" =: "** a** **a ** ** a **" =?> para (text "** a** **a ** ** a **") , "Macros: Date" =: "%%date" =?> para "1970-01-01" , "Macros: Mod Time" =: "%%mtime" =?> para (str "") , "Macros: Infile" =: "%%infile" =?> para "in" , "Macros: Outfile" =: "%%outfile" =?> para "out" , "Autolink" =: "http://www.google.com" =?> para (link "http://www.google.com" "" (str "http://www.google.com")) , "JPEG Image" =: "[image.jpg]" =?> para (image "image.jpg" "" mempty) , "PNG Image" =: "[image.png]" =?> para (image "image.png" "" mempty) , "Link" =: "[title http://google.com]" =?> para (link "http://google.com" "" (str "title")) , "Image link" =: "[[image.jpg] abc]" =?> para (link "abc" "" (image "image.jpg" "" mempty)) , "Invalid link: No trailing space" =: "[title invalid ]" =?> para (text "[title invalid ]") ] , testGroup "Basic Blocks" ["Paragraph, lines grouped together" =: "A paragraph\n A blank line ends the \n current paragraph\n" =?> para "A paragraph\n A blank line ends the\n current paragraph" , "Paragraph, ignore leading and trailing spaces" =: " Leading and trailing spaces are ignored. \n" =?> para "Leading and trailing spaces are ignored." , "Comment line in paragraph" =: "A comment line can be placed inside a paragraph.\n% this comment will be ignored \nIt will not affect it.\n" =?> para "A comment line can be placed inside a paragraph.\nIt will not affect it." , "Paragraph" =: "Paragraph\n" =?> para "Paragraph" , "First Level Header" =: "+ Headline +\n" =?> header 1 "Headline" , "Third Level Header" =: "=== Third Level Headline ===\n" =?> header 3 ("Third" <> space <> "Level" <> space <> "Headline") , "Header with label" =: "= header =[label]" =?> headerWith ("label", [], []) 1 "header" , "Invalid header, mismatched delimiters" =: "== header =" =?> para (text "== header =") , "Invalid header, spaces in label" =: "== header ==[ haha ]" =?> para (text "== header ==[ haha ]") , "Invalid header, invalid label character" =: "== header ==[lab/el]" =?> para (text "== header ==[lab/el]") , "Headers not preceded by a blank line" =: T.unlines [ "++ eat dinner ++" , "Spaghetti and meatballs tonight." , "== walk dog ==" ] =?> mconcat [ header 2 ("eat" <> space <> "dinner") , para $ spcSep [ "Spaghetti", "and", "meatballs", "tonight." ] , header 2 ("walk" <> space <> "dog") ] , "Paragraph starting with an equals" =: "=five" =?> para "=five" , "Paragraph containing asterisk at beginning of line" =: T.unlines [ "lucky" , "*star" ] =?> para ("lucky" <> softbreak <> "*star") , "Horizontal Rule" =: T.unlines [ "before" , T.replicate 20 "-" , T.replicate 20 "=" , T.replicate 20 "_" , "after" ] =?> mconcat [ para "before" , horizontalRule , horizontalRule , horizontalRule , para "after" ] , "Comment Block" =: T.unlines [ "%%%" , "stuff" , "bla" , "%%%"] =?> (mempty::Blocks) ] , testGroup "Lists" [ "Simple Bullet Lists" =: ("- Item1\n" <> "- Item2\n") =?> bulletList [ plain "Item1" , plain "Item2" ] , "Indented Bullet Lists" =: (" - Item1\n" <> " - Item2\n") =?> bulletList [ plain "Item1" , plain "Item2" ] , "Nested Bullet Lists" =: ("- Discovery\n" <> " + One More Time\n" <> " + Harder, Better, Faster, Stronger\n" <> "- Homework\n" <> " + Around the World\n"<> "- Human After All\n" <> " + Technologic\n" <> " + Robot Rock\n") =?> bulletList [ mconcat [ plain "Discovery" , orderedList [ plain ("One" <> space <> "More" <> space <> "Time") , plain ("Harder," <> space <> "Better," <> space <> "Faster," <> space <> "Stronger") ] ] , mconcat [ plain "Homework" , orderedList [ plain ("Around" <> space <> "the" <> space <> "World") ] ] , mconcat [ plain ("Human" <> space <> "After" <> space <> "All") , orderedList [ plain "Technologic" , plain ("Robot" <> space <> "Rock") ] ] ] , "Simple Ordered List" =: ("+ Item1\n" <> "+ Item2\n") =?> let listStyle = (1, DefaultStyle, DefaultDelim) listStructure = [ plain "Item1" , plain "Item2" ] in orderedListWith listStyle listStructure , "Indented Ordered List" =: (" + Item1\n" <> " + Item2\n") =?> let listStyle = (1, DefaultStyle, DefaultDelim) listStructure = [ plain "Item1" , plain "Item2" ] in orderedListWith listStyle listStructure , "Nested Ordered Lists" =: ("+ One\n" <> " + One-One\n" <> " + One-Two\n" <> "+ Two\n" <> " + Two-One\n"<> " + Two-Two\n") =?> let listStyle = (1, DefaultStyle, DefaultDelim) listStructure = [ mconcat [ plain "One" , orderedList [ plain "One-One" , plain "One-Two" ] ] , mconcat [ plain "Two" , orderedList [ plain "Two-One" , plain "Two-Two" ] ] ] in orderedListWith listStyle listStructure , "Ordered List in Bullet List" =: ("- Emacs\n" <> " + Org\n") =?> bulletList [ plain "Emacs" <> orderedList [ plain "Org"] ] , "Bullet List in Ordered List" =: ("+ GNU\n" <> " - Freedom\n") =?> orderedList [ plain "GNU" <> bulletList [ plain "Freedom" ] ] , "Definition List" =: T.unlines [ ": PLL" , " phase-locked loop" , ": TTL" , " transistor-transistor logic" , ": PSK" , " a digital" ] =?> definitionList [ ("PLL", [ plain $ "phase-locked" <> space <> "loop" ]) , ("TTL", [ plain $ "transistor-transistor" <> space <> "logic" ]) , ("PSK", [ plain $ "a" <> space <> "digital" ]) ] , "Loose bullet list" =: T.unlines [ "- apple" , "" , "- orange" , "" , "- peach" ] =?> bulletList [ para "apple" , para "orange" , para "peach" ] ] , testGroup "Tables" [ "Single cell table" =: "| Test " =?> simpleTable' 1 mempty [[plain "Test"]] , "Multi cell table" =: "| One | Two |" =?> simpleTable' 2 mempty [ [ plain "One", plain "Two" ] ] , "Multi line table" =: T.unlines [ "| One |" , "| Two |" , "| Three |" ] =?> simpleTable' 1 mempty [ [ plain "One" ] , [ plain "Two" ] , [ plain "Three" ] ] , "Empty table" =: "| |" =?> simpleTable' 1 mempty [[mempty]] , "Glider Table" =: T.unlines [ "| 1 | 0 | 0 |" , "| 0 | 1 | 1 |" , "| 1 | 1 | 0 |" ] =?> simpleTable' 3 mempty [ [ plain "1", plain "0", plain "0" ] , [ plain "0", plain "1", plain "1" ] , [ plain "1", plain "1", plain "0" ] ] , "Table with Header" =: T.unlines [ "|| Species | Status |" , "| cervisiae | domesticated |" , "| paradoxus | wild |" ] =?> simpleTable [ plain "Species", plain "Status" ] [ [ plain "cervisiae", plain "domesticated" ] , [ plain "paradoxus", plain "wild" ] ] , "Table alignment determined by spacing" =: T.unlines [ "| Numbers | Text | More |" , "| 1 | One | foo |" , "| 2 | Two | bar |" ] =?> simpleTable'' (zip [AlignCenter, AlignRight, AlignDefault] [ColWidthDefault, ColWidthDefault, ColWidthDefault]) [] [ [ plain "Numbers", plain "Text", plain "More" ] , [ plain "1" , plain "One" , plain "foo" ] , [ plain "2" , plain "Two" , plain "bar" ] ] , "Pipe within text doesn't start a table" =: "Ceci n'est pas une | pipe " =?> para (spcSep [ "Ceci", "n'est", "pas", "une", "|", "pipe" ]) , "Table with differing row lengths" =: T.unlines [ "|| Numbers | Text " , "| 1 | One | foo |" , "| 2 " ] =?> simpleTable'' (zip [AlignCenter, AlignLeft, AlignLeft] [ColWidthDefault, ColWidthDefault, ColWidthDefault]) [ plain "Numbers", plain "Text" , plain mempty ] [ [ plain "1" , plain "One" , plain "foo" ] , [ plain "2" , plain mempty , plain mempty ] ] ] , testGroup "Blocks and fragments" [ "Source block" =: T.unlines [ "```" , "main = putStrLn greeting" , " where greeting = \"moin\"" , "```" ] =?> let code' = "main = putStrLn greeting\n" <> " where greeting = \"moin\"\n" in codeBlock code' , "tagged block" =: T.unlines [ "'''" , "" , "'''" ] =?> rawBlock "html" "\n" , "Quote block" =: T.unlines ["\t//Niemand// hat die Absicht, eine Mauer zu errichten!" ] =?> blockQuote (para (spcSep [ emph "Niemand", "hat", "die", "Absicht," , "eine", "Mauer", "zu", "errichten!" ])) ] ] pandoc-3.1.3/test/Tests/Shared.hs0000644000000000000000000001574707346545000015014 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Tests.Shared Copyright : © 2006-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable Tests for functions used in many parts of the library. -} module Tests.Shared (tests) where import System.FilePath.Posix (joinPath) import Test.Tasty import Text.Pandoc.Arbitrary () import Test.Tasty.QuickCheck (testProperty) import Text.Pandoc.Builder import Text.Pandoc.Shared import Test.Tasty.HUnit import Tests.Helpers import Text.Pandoc import Text.Pandoc.Writers.Shared import qualified Data.Text as T tests :: [TestTree] tests = [ testGroup "compactifyDL" [ testCase "compactifyDL with empty def" $ assertBool "compactifyDL" (let x = [(str "word", [para (str "def"), mempty])] in compactifyDL x == x) ] , testGroup "collapseFilePath" testCollapse , testGroup "toLegacyTable" testLegacyTable , testGroup "table of contents" testTOC , testGroup "makeSections" [ testProperty "makeSections is idempotent" makeSectionsIsIdempotent , testCase "makeSections is idempotent for test case" $ let d = header 1 "H1" <> header 2 "H2" <> header 3 "H3" <> header 2 "H2a" <> header 4 "H4" <> header 1 "H1a" d' = makeSections False Nothing $ toList d in assertBool "makeSections is idempotent for test case" (makeSections False Nothing d' == d') ] ] makeSectionsIsIdempotent :: [Block] -> Bool makeSectionsIsIdempotent d = let d' = makeSections False Nothing d in d' == makeSections False Nothing d' givesTOC :: String -> (Blocks, Blocks) -> TestTree givesTOC desc (blocks, toc) = test (toTableOfContents def) desc (toList blocks, head . toList $ toc) linkId :: T.Text -> T.Text -> T.Text -> Inlines -> Inlines linkId lId = linkWith (lId,[],[]) headerId :: T.Text -> Int -> Inlines -> Blocks headerId hId = headerWith (hId,[],[]) testTOC :: [TestTree] testTOC = [ givesTOC "empty case" $ mempty =?> bulletList [] , givesTOC "no headers" $ horizontalRule =?> bulletList [] , givesTOC "unlinked header" $ header 1 "H1" =?> bulletList [plain "H1"] , givesTOC "linked header" $ headerId "h1" 1 "H1" =?> bulletList [plain $ linkId "toc-h1" "#h1" "" "H1"] , givesTOC "nested headlines" $ header 1 "H1a" <> header 2 "H2" =?> bulletList [plain "H1a" <> bulletList [plain "H2"]] , givesTOC "only referenced headers" $ header 1 "H1a" <> headerId "h2" 2 "H2" =?> bulletList [plain "H1a" <> bulletList [plain $ linkId "toc-h2" "#h2" "" "H2"]] , givesTOC "section id used as backup" $ divWith ("sec",["section"],[]) (header 1 "H1") =?> bulletList [plain $ linkId "toc-sec" "#sec" "" "H1"] ] testCollapse :: [TestTree] testCollapse = map (testCase "collapse") [ collapseFilePath (joinPath [ ""]) @?= joinPath [ ""] , collapseFilePath (joinPath [ ".","foo"]) @?= joinPath [ "foo"] , collapseFilePath (joinPath [ ".",".","..","foo"]) @?= joinPath [ joinPath ["..", "foo"]] , collapseFilePath (joinPath [ "..","foo"]) @?= joinPath [ "..","foo"] , collapseFilePath (joinPath [ "","bar","..","baz"]) @?= joinPath [ "","baz"] , collapseFilePath (joinPath [ "","..","baz"]) @?= joinPath [ "","..","baz"] , collapseFilePath (joinPath [ ".","foo","..",".","bar","..",".",".","baz"]) @?= joinPath [ "baz"] , collapseFilePath (joinPath [ ".",""]) @?= joinPath [ ""] , collapseFilePath (joinPath [ ".",".",""]) @?= joinPath [ ""] , collapseFilePath (joinPath [ "..",""]) @?= joinPath [ ".."] , collapseFilePath (joinPath [ "..",".",""]) @?= joinPath [ ".."] , collapseFilePath (joinPath [ ".","..",""]) @?= joinPath [ ".."] , collapseFilePath (joinPath [ "..","..",""]) @?= joinPath [ "..",".."] , collapseFilePath (joinPath [ "parent","foo","baz","..","bar"]) @?= joinPath [ "parent","foo","bar"] , collapseFilePath (joinPath [ "parent","foo","baz","..","..","bar"]) @?= joinPath [ "parent","bar"] , collapseFilePath (joinPath [ "parent","foo",".."]) @?= joinPath [ "parent"] , collapseFilePath (joinPath [ "","parent","foo","..","..","bar"]) @?= joinPath [ "","bar"] , collapseFilePath (joinPath [ "",".","parent","foo"]) @?= joinPath [ "","parent","foo"]] testLegacyTable :: [TestTree] testLegacyTable = [ testCase "decomposes a table with head" $ gen1 @?= expect1 , testCase "decomposes a table without head" $ gen2 @?= expect2 , testCase "decomposes the table from issue 7683" $ gen3 @?= expect3 ] where pln = toList . plain . str cl a h w = Cell ("", [], []) AlignDefault h w $ pln a rws = map $ Row nullAttr th = TableHead nullAttr . rws tb n x y = TableBody nullAttr n (rws x) (rws y) tf = TableFoot nullAttr . rws headRows1 = [[cl "a" 1 1, cl "b" 2 2] ,[cl "c" 1 1] ] body1 = tb 1 [[cl "e" 3 1,cl "f" 3 2] ,[] ,[] ] [[emptyCell,emptyCell,emptyCell] ,[cl "g" 1 1,emptyCell,emptyCell] ] footRows1 = [[cl "h" 1 2,cl "i" 2 1] ,[cl "j" 1 2]] caption1 = simpleCaption $ plain "caption" spec1 = replicate 2 (AlignDefault, ColWidth 0.5) ++ [(AlignRight, ColWidthDefault)] expect1 = ( [Str "caption"] , replicate 2 AlignDefault ++ [AlignRight] , replicate 2 0.5 ++ [0] , [pln "a", pln "b", mempty] , [[pln "c", mempty, mempty] ,[pln "e", pln "f", mempty] ,[mempty, mempty, mempty] ,[mempty, mempty, mempty] ,[mempty, mempty, mempty] ,[pln "g", mempty, mempty] ,[pln "h", mempty, pln "i"] ,[pln "j", mempty, mempty]] ) gen1 = toLegacyTable caption1 spec1 (th headRows1) [body1] (tf footRows1) expect2 = ( [] , replicate 2 AlignDefault ++ [AlignRight] , replicate 2 0.5 ++ [0] , [] , [[pln "e", pln "f", mempty] ,[mempty, mempty, mempty] ,[mempty, mempty, mempty] ,[mempty, mempty, mempty] ,[pln "g", mempty, mempty] ,[pln "h", mempty, pln "i"] ,[pln "j", mempty, mempty]] ) gen2 = toLegacyTable emptyCaption spec1 (th []) [body1] (tf footRows1) spec3 = replicate 4 (AlignDefault, ColWidthDefault) body3 = tb 0 [] [[cl "a" 2 1, cl "b" 1 2, cl "c" 2 1] ,[cl "d" 1 1, cl "e" 1 1] ] expect3 = ( [] , replicate 4 AlignDefault , replicate 4 0 , [] , [[pln "a", pln "b", mempty, pln "c"] ,[mempty, pln "d", pln "e", mempty]] ) gen3 = toLegacyTable emptyCaption spec3 (th []) [body3] (tf []) pandoc-3.1.3/test/Tests/Writers/0000755000000000000000000000000007346545000014673 5ustar0000000000000000pandoc-3.1.3/test/Tests/Writers/AnnotatedTable.hs0000644000000000000000000002313507346545000020120 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {- | Module : Tests.Writers.AnnotatedTable Copyright : 2020 Christian Despres License : GNU GPL, version 2 or above Maintainer : Christian Despres Stability : alpha Portability : portable Tests for the table helper functions. -} module Tests.Writers.AnnotatedTable ( tests ) where import Prelude import qualified Data.Foldable as F import qualified Data.List.NonEmpty as NonEmpty import Test.Tasty import Test.Tasty.HUnit ( testCase , (@?=) ) import Test.Tasty.QuickCheck ( QuickCheckTests(..) , Property , Testable , conjoin , forAll , testProperty , (===) , vectorOf , choose , arbitrary , elements ) import Text.Pandoc.Arbitrary ( ) import Text.Pandoc.Builder import qualified Text.Pandoc.Writers.AnnotatedTable as Ann tests :: [TestTree] tests = [testGroup "toTable" $ testAnnTable <> annTableProps] getSpec :: Ann.Cell -> [ColSpec] getSpec (Ann.Cell colspec _ _) = F.toList colspec catHeaderSpec :: Ann.HeaderRow -> [ColSpec] catHeaderSpec (Ann.HeaderRow _ _ x) = concatMap getSpec x catBodySpec :: Ann.BodyRow -> [ColSpec] catBodySpec (Ann.BodyRow _ _ x y) = concatMap getSpec x <> concatMap getSpec y -- Test if the first list can be obtained from the second by deleting -- elements from it. isSubsetOf :: Eq a => [a] -> [a] -> Bool isSubsetOf (x : xs) (y : ys) | x == y = isSubsetOf xs ys | otherwise = isSubsetOf (x : xs) ys isSubsetOf [] _ = True isSubsetOf _ [] = False testAnnTable :: [TestTree] testAnnTable = [testCase "annotates a sample table properly" $ generated @?= expected] where spec1 = (AlignRight, ColWidthDefault) spec2 = (AlignLeft, ColWidthDefault) spec3 = (AlignCenter, ColWidthDefault) spec = [spec1, spec2, spec3] cl a h w = Cell (a, [], []) AlignDefault h w [] rws = map $ Row nullAttr th = TableHead nullAttr . rws tb n x y = TableBody nullAttr n (rws x) (rws y) tf = TableFoot nullAttr . rws initialHeads = [[cl "a" 1 1, cl "b" 3 2], [cl "c" 2 2, cl "d" 1 1]] initialTB1 = tb 1 [[], [cl "e" 5 1, cl "f" (-7) 0]] [[cl "g" 4 3, cl "h" 4 3], [], [emptyCell]] initialTB2 = tb 2 [] [[cl "i" 4 3, cl "j" 4 3]] generated = Ann.toTable nullAttr emptyCaption spec (th initialHeads) [initialTB1, initialTB2] (tf initialHeads) acl al n a h w = Ann.Cell (NonEmpty.fromList al) n $ Cell (a, [], []) AlignDefault h w [] emptyAnnCell al n = acl al n "" 1 1 ahrw = Ann.HeaderRow nullAttr abrw = Ann.BodyRow nullAttr ath = Ann.TableHead nullAttr atb = Ann.TableBody nullAttr atf = Ann.TableFoot nullAttr finalTH = ath [ ahrw 0 [acl [spec1] 0 "a" 1 1, acl [spec2, spec3] 1 "b" 2 2] , ahrw 1 [acl [spec1] 0 "c" 1 1] ] finalTB1 = atb 1 [ ahrw 2 [emptyAnnCell [spec1] 0, emptyAnnCell [spec2] 1, emptyAnnCell [spec3] 2] , ahrw 3 [acl [spec1] 0 "e" 1 1, acl [spec2] 1 "f" 1 1, emptyAnnCell [spec3] 2] ] [ abrw 4 [acl [spec1] 0 "g" 3 1] [acl [spec2, spec3] 1 "h" 3 2] , abrw 5 [] [] , abrw 6 [] [] ] finalTB2 = atb 2 [] [abrw 7 [acl [spec1, spec2] 0 "i" 1 2] [acl [spec3] 2 "j" 1 1]] finalTF = atf [ ahrw 8 [acl [spec1] 0 "a" 1 1, acl [spec2, spec3] 1 "b" 2 2] , ahrw 9 [acl [spec1] 0 "c" 1 1] ] expected = Ann.Table nullAttr emptyCaption spec finalTH [finalTB1, finalTB2] finalTF withColSpec :: Testable prop => ([ColSpec] -> prop) -> Property withColSpec = forAll arbColSpec where arbColSpec = do cs <- choose (1 :: Int, 6) vectorOf cs ((,) <$> arbitrary <*> elements [ColWidthDefault, ColWidth (1 / 3), ColWidth 0.25] ) annTableProps :: [TestTree] annTableProps = localOption (QuickCheckTests 50) <$> [ testProperty "normalizes like the table builder" propBuilderAnnTable , testProperty "has valid final cell columns" propColNumber , testProperty "has valid first row column data" propFirstRowCols , testProperty "has valid all row column data" propColSubsets , testProperty "has valid cell column data lengths" propCellColLengths ] -- The property that Ann.toTable will normalize a table identically to -- the table builder. This should mean that Ann.toTable is at least as -- rigorous as Builder.table in that respect without repeating those -- tests here (see the pandoc-types Table tests for examples). propBuilderAnnTable :: TableHead -> [TableBody] -> TableFoot -> Property propBuilderAnnTable th tbs tf = withColSpec $ \cs -> convertTable (table emptyCaption cs th tbs tf) === convertAnnTable (Ann.toTable nullAttr emptyCaption cs th tbs tf) where convertTable blks = case toList blks of [Table _ _ colspec a b c] -> Right (colspec, a, b, c) x -> Left x convertAnnTable x = case Ann.fromTable x of (_, _, colspec, a, b, c) -> Right (colspec, a, b, c) -- The property of Ann.toTable that if the last cell in the first row -- of a table section has ColSpan w and ColNumber n, then w + n is the -- width of the table. propColNumber :: TableHead -> [TableBody] -> TableFoot -> Property propColNumber th tbs tf = withColSpec $ \cs -> let twidth = length cs Ann.Table _ _ _ ath atbs atf = Ann.toTable nullAttr emptyCaption cs th tbs tf in conjoin $ [colNumTH twidth ath] <> (colNumTB twidth <$> atbs) <> [colNumTF twidth atf] where colNumTH n (Ann.TableHead _ rs) = firstly (isHeaderValid n) rs colNumTB n (Ann.TableBody _ _ rs ts) = firstly (isHeaderValid n) rs && firstly (isBodyValid n) ts colNumTF n (Ann.TableFoot _ rs) = firstly (isHeaderValid n) rs isHeaderValid n (Ann.HeaderRow _ _ x) = isSegmentValid n x isBodyValid n (Ann.BodyRow _ _ _ x) = isSegmentValid n x firstly f (x : _) = f x firstly _ [] = True lastly f [x ] = f x lastly f (_ : xs) = lastly f xs lastly _ [] = True isSegmentValid twidth cs = flip lastly cs $ \(Ann.Cell _ (Ann.ColNumber n) (Cell _ _ _ (ColSpan w) _)) -> n + w == twidth -- The property of an Ann.Table from Ann.toTable that if the NonEmpty -- ColSpec data of the cells in the first row of a table section are -- concatenated, the result should equal the [ColSpec] of the entire -- table. propFirstRowCols :: TableHead -> [TableBody] -> TableFoot -> Property propFirstRowCols th tbs tf = withColSpec $ \cs -> let Ann.Table _ _ _ ath atbs atf = Ann.toTable nullAttr emptyCaption cs th tbs tf in conjoin $ [firstRowTH cs ath] <> (firstRowTB cs <$> atbs) <> [firstRowTF cs atf] where firstly f (x : _) = f x firstly _ [] = True firstHeaderValid cs = firstly $ \r -> cs == catHeaderSpec r firstBodyValid cs = firstly $ \r -> cs == catBodySpec r firstRowTH cs (Ann.TableHead _ rs) = firstHeaderValid cs rs firstRowTB cs (Ann.TableBody _ _ rs ts) = firstHeaderValid cs rs && firstBodyValid cs ts firstRowTF cs (Ann.TableFoot _ rs) = firstHeaderValid cs rs -- The property that in any row in an Ann.Table from Ann.toTable, the -- NonEmpty ColSpec annotations on cells, when concatenated, form a -- subset (really sublist) of the [ColSpec] of the entire table. propColSubsets :: TableHead -> [TableBody] -> TableFoot -> Property propColSubsets th tbs tf = withColSpec $ \cs -> let Ann.Table _ _ _ ath atbs atf = Ann.toTable nullAttr emptyCaption cs th tbs tf in conjoin $ subsetTH cs ath <> concatMap (subsetTB cs) atbs <> subsetTF cs atf where subsetTH cs (Ann.TableHead _ rs) = map (subsetHeader cs) rs subsetTB cs (Ann.TableBody _ _ rs ts) = map (subsetHeader cs) rs <> map (subsetBody cs) ts subsetTF cs (Ann.TableFoot _ rs) = map (subsetHeader cs) rs subsetHeader cs r = catHeaderSpec r `isSubsetOf` cs subsetBody cs r = catBodySpec r `isSubsetOf` cs -- The property that in any cell in an Ann.Table from Ann.toTable, the -- NonEmpty ColSpec annotation on a cell is equal in length to its -- ColSpan. propCellColLengths :: TableHead -> [TableBody] -> TableFoot -> Property propCellColLengths th tbs tf = withColSpec $ \cs -> let Ann.Table _ _ _ ath atbs atf = Ann.toTable nullAttr emptyCaption cs th tbs tf in conjoin $ cellColTH ath <> concatMap cellColTB atbs <> cellColTF atf where cellColTH (Ann.TableHead _ rs) = concatMap cellColHeader rs cellColTB (Ann.TableBody _ _ rs ts) = concatMap cellColHeader rs <> concatMap cellColBody ts cellColTF (Ann.TableFoot _ rs) = concatMap cellColHeader rs cellColHeader (Ann.HeaderRow _ _ x) = fmap validLength x cellColBody (Ann.BodyRow _ _ x y) = fmap validLength x <> fmap validLength y validLength (Ann.Cell colspec _ (Cell _ _ _ (ColSpan w) _)) = length colspec == w pandoc-3.1.3/test/Tests/Writers/AsciiDoc.hs0000644000000000000000000000744307346545000016715 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} module Tests.Writers.AsciiDoc (tests) where import Data.Text (unpack) import Test.Tasty import Tests.Helpers import Text.Pandoc import Text.Pandoc.Arbitrary () import Text.Pandoc.Builder asciidoc :: (ToPandoc a) => a -> String asciidoc = unpack . purely (writeAsciiDoc def) . toPandoc asciidoctor :: (ToPandoc a) => a -> String asciidoctor = unpack . purely (writeAsciiDoctor def) . toPandoc testAsciidoc :: (ToString a, ToPandoc a) => String -> (a, String) -> TestTree testAsciidoc = test asciidoc testAsciidoctor :: (ToString a, ToPandoc a) => String -> (a, String) -> TestTree testAsciidoctor = test asciidoctor tests :: [TestTree] tests = [ testGroup "emphasis" [ testAsciidoc "emph word before" $ para (text "foo" <> emph (text "bar")) =?> "foo__bar__" , testAsciidoc "emph word after" $ para (emph (text "foo") <> text "bar") =?> "__foo__bar" , testAsciidoc "emph quoted" $ para (doubleQuoted (emph (text "foo"))) =?> "``__foo__''" , testAsciidoc "strong word before" $ para (text "foo" <> strong (text "bar")) =?> "foo**bar**" , testAsciidoc "strong word after" $ para (strong (text "foo") <> text "bar") =?> "**foo**bar" , testAsciidoc "strong quoted" $ para (singleQuoted (strong (text "foo"))) =?> "`**foo**'" ] , testGroup "blocks" [ testAsciidoc "code block without line numbers" $ codeBlockWith ("", [ "haskell" ], []) "foo" =?> unlines [ "[source,haskell]" , "----" , "foo" , "----" ] , testAsciidoc "code block with line numbers" $ codeBlockWith ("", [ "haskell", "numberLines" ], []) "foo" =?> unlines [ "[source%linesnum,haskell]" , "----" , "foo" , "----" ] ] , testGroup "tables" [ testAsciidoc "empty cells" $ simpleTable [] [[mempty],[mempty]] =?> unlines [ "[cols=\"\",]" , "|===" , "|" , "|" , "|===" ] , test asciidoc "multiblock cells" $ simpleTable [] [[para (text "Para 1") <> para (text "Para 2")]] =?> unlines [ "[cols=\"\",]" , "|===" , "a|" , "Para 1" , "" , "Para 2" , "" , "|===" ] ] , testGroup "lists" [ testAsciidoctor "bullet task list" $ bulletList [plain "☐ a", plain "☒ b"] =?> unlines [ "* [ ] a" , "* [x] b" ] ] ] pandoc-3.1.3/test/Tests/Writers/ConTeXt.hs0000644000000000000000000001406507346545000016561 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} module Tests.Writers.ConTeXt (tests) where import Data.Text (unpack, pack) import Test.Tasty import Test.Tasty.HUnit (HasCallStack) import Test.Tasty.QuickCheck import Tests.Helpers import Text.Pandoc import Text.Pandoc.Arbitrary () import Text.Pandoc.Builder import qualified Data.Text as T context :: (ToPandoc a) => a -> String context = unpack . purely (writeConTeXt def) . toPandoc context' :: (ToPandoc a) => a -> String context' = unpack . purely (writeConTeXt def{ writerWrapText = WrapNone }) . toPandoc contextNtb :: (ToPandoc a) => a -> String contextNtb = unpack . purely (writeConTeXt def{ writerExtensions = enableExtension Ext_ntb pandocExtensions }) . toPandoc contextSection :: (ToPandoc a) => a -> String contextSection = unpack . purely (writeConTeXt def{ writerTopLevelDivision = TopLevelSection }) . toPandoc {- "my test" =: X =?> Y is shorthand for test context "my test" $ X =?> Y which is in turn shorthand for test context "my test" (X,Y) -} infix 4 =: (=:) :: (ToString a, ToPandoc a, HasCallStack) => String -> (a, String) -> TestTree (=:) = test context tests :: [TestTree] tests = [ testGroup "inline code" [ "with '}'" =: code "}" =?> "\\type\"}\"" , "without '}'" =: code "]" =?> "\\type{]}" , "span with ID" =: spanWith ("city", [], []) "Berlin" =?> "\\reference[city]{}Berlin" , testProperty "code property" $ \s -> null s || '\n' `elem` s || case T.stripPrefix "\\type" (pack $ context' (code $ pack s)) >>= T.uncons of Just (c, _) -> c `notElem` s Nothing -> False ] , testGroup "headers" [ "level 1" =: headerWith ("my-header",[],[]) 1 "My header" =?> "\\startsectionlevel[title={My header},reference={my-header}]\n" <> "\n" <> "\\stopsectionlevel" , test contextSection "Section as top-level" $ ( headerWith ("header1", [], []) 1 (text "Header1") <> headerWith ("header2", [], []) 2 (text "Header2") <> headerWith ("header3", [], []) 3 (text "Header3") <> headerWith ("header4", [], []) 4 (text "Header4") <> headerWith ("header5", [], []) 5 (text "Header5") <> headerWith ("header6", [], []) 6 (text "Header6")) =?> unlines [ "\\startsection[title={Header1},reference={header1}]\n" , "\\startsubsection[title={Header2},reference={header2}]\n" , "\\startsubsubsection[title={Header3},reference={header3}]\n" , "\\startsubsubsubsection[title={Header4},reference={header4}]\n" , "\\startsubsubsubsubsection[title={Header5},reference={header5}]\n" , "\\startsubsubsubsubsubsection[title={Header6},reference={header6}]\n" , "\\stopsubsubsubsubsubsection\n" , "\\stopsubsubsubsubsection\n" , "\\stopsubsubsubsection\n" , "\\stopsubsubsection\n" , "\\stopsubsection\n" , "\\stopsection" ] ] , testGroup "bullet lists" [ "nested" =: bulletList [ plain (text "top") <> bulletList [ plain (text "next") <> bulletList [plain (text "bot")] ] ] =?> unlines [ "\\startitemize[packed]" , "\\item" , " top" , " \\startitemize[packed]" , " \\item" , " next" , " \\startitemize[packed]" , " \\item" , " bot" , " \\stopitemize" , " \\stopitemize" , "\\stopitemize" ] ] , testGroup "natural tables" [ test contextNtb "table with header and caption" $ let capt = text "Table 1" aligns = [ (AlignRight, ColWidthDefault) , (AlignLeft, ColWidthDefault) , (AlignCenter, ColWidthDefault) , (AlignDefault, ColWidthDefault) ] headers = [plain $ text "Right", plain $ text "Left", plain $ text "Center", plain $ text "Default"] rows = [[plain $ text "1.1", plain $ text "1.2", plain $ text "1.3", plain $ text "1.4"] ,[plain $ text "2.1", plain $ text "2.2", plain $ text "2.3", plain $ text "2.4"] ,[plain $ text "3.1", plain $ text "3.2", plain $ text "3.3", plain $ text "3.4"]] toRow = Row nullAttr . map simpleCell in table (simpleCaption $ plain capt) aligns (TableHead nullAttr [toRow headers]) [TableBody nullAttr 0 [] $ map toRow rows] (TableFoot nullAttr []) =?> unlines [ "\\startplacetable[title={Table 1}]" , "\\setupTABLE[column][1][align=left]" , "\\setupTABLE[column][2][align=right]" , "\\setupTABLE[column][3][align=middle]" , "\\setupTABLE[column][4][align=left]" , "\\bTABLE" , "\\bTABLEhead" , "\\bTR" , "\\bTH Right\\eTH" , "\\bTH Left\\eTH" , "\\bTH Center\\eTH" , "\\bTH Default\\eTH" , "\\eTR" , "\\eTABLEhead" , "\\bTABLEbody" , "\\bTR" , "\\bTD 1.1\\eTD" , "\\bTD 1.2\\eTD" , "\\bTD 1.3\\eTD" , "\\bTD 1.4\\eTD" , "\\eTR" , "\\bTR" , "\\bTD 2.1\\eTD" , "\\bTD 2.2\\eTD" , "\\bTD 2.3\\eTD" , "\\bTD 2.4\\eTD" , "\\eTR" , "\\bTR" , "\\bTD 3.1\\eTD" , "\\bTD 3.2\\eTD" , "\\bTD 3.3\\eTD" , "\\bTD 3.4\\eTD" , "\\eTR" , "\\eTABLEbody" , "\\bTABLEfoot" , "\\eTABLEfoot" , "\\eTABLE" , "\\stopplacetable" ] ] ] pandoc-3.1.3/test/Tests/Writers/DocBook.hs0000644000000000000000000005024207346545000016552 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} module Tests.Writers.DocBook (tests) where import Data.Text (unpack) import Test.Tasty import Tests.Helpers import Text.Pandoc import Text.Pandoc.Arbitrary () import Text.Pandoc.Builder docbook :: (ToPandoc a) => a -> String docbook = docbookWithOpts def{ writerWrapText = WrapNone } docbook5 :: (ToPandoc a) => a -> String docbook5 = docbook5WithOpts def{ writerWrapText = WrapNone } docbookWithOpts :: ToPandoc a => WriterOptions -> a -> String docbookWithOpts opts = unpack . purely (writeDocBook4 opts) . toPandoc docbook5WithOpts :: ToPandoc a => WriterOptions -> a -> String docbook5WithOpts opts = unpack . purely (writeDocBook5 opts) . toPandoc {- "my test" =: X =?> Y is shorthand for test docbook "my test" $ X =?> Y which is in turn shorthand for test docbook "my test" (X,Y) -} infix 4 =: (=:), testDb4, testDb5 :: (ToString a, ToPandoc a) => String -> (a, String) -> TestTree (=:) = test docbook testDb4 = test docbook testDb5 = test docbook5 lineblock :: Blocks lineblock = para ("some text" <> linebreak <> "and more lines" <> linebreak <> "and again") lineblock_out :: [String] lineblock_out = [ "some text" , "and more lines" , "and again" ] tests :: [TestTree] tests = [ testGroup "inline elements" [ testGroup "links" [ testDb4 "db4 external link" $ link "https://example.com" "" "Hello" =?> "Hello" , testDb5 "db5 external link" $ link "https://example.com" "" "Hello" =?> "Hello" , testDb5 "anchor" $ link "#foo" "" "Hello" =?> "Hello" , testDb5 "automatic anchor" $ link "#foo" "" "" =?> "" ] ] , testGroup "line blocks" [ "none" =: para "This is a test" =?> unlines [ "" , " This is a test" , "" ] , "basic" =: lineblock =?> unlines lineblock_out , "blockquote" =: blockQuote lineblock =?> unlines ( [ "
    " ] ++ lineblock_out ++ [ "
    " ] ) , "footnote" =: para ("This is a test" <> note lineblock <> " of footnotes") =?> unlines ( [ "" , " This is a test" ] ++ lineblock_out ++ [ " of footnotes" , "" ] ) ] , testGroup "divs" [ "admonition" =: divWith ("foo", ["warning"], []) (para "This is a test") =?> unlines [ "" , " " , " This is a test" , " " , "" ] , "admonition-with-title" =: divWith ("foo", ["note"], []) ( divWith ("foo", ["title"], []) (plain (text "This is title")) <> para "This is a test" ) =?> unlines [ "" , " This is title" , " " , " This is a test" , " " , "" ] , "admonition-with-title-in-para" =: divWith ("foo", ["note"], []) ( divWith ("foo", ["title"], []) (para "This is title") <> para "This is a test" ) =?> unlines [ "" , " This is title" , " " , " This is a test" , " " , "" ] , "single-child" =: divWith ("foo", [], []) (para "This is a test") =?> unlines [ "" , " This is a test" , "" ] , "single-literal-child" =: divWith ("foo", [], []) lineblock =?> unlines [ "some text" , "and more lines" , "and again" ] , "multiple-children" =: divWith ("foo", [], []) ( para "This is a test" <> para "This is an another test" ) =?> unlines [ "" , "" , " This is a test" , "" , "" , " This is an another test" , "" ] ] , testGroup "compact lists" [ testGroup "bullet" [ "compact" =: bulletList [plain "a", plain "b", plain "c"] =?> unlines [ "" , " " , " " , " a" , " " , " " , " " , " " , " b" , " " , " " , " " , " " , " c" , " " , " " , "" ] , "loose" =: bulletList [para "a", para "b", para "c"] =?> unlines [ "" , " " , " " , " a" , " " , " " , " " , " " , " b" , " " , " " , " " , " " , " c" , " " , " " , "" ] ] , testGroup "ordered" [ "compact" =: orderedList [plain "a", plain "b", plain "c"] =?> unlines [ "" , " " , " " , " a" , " " , " " , " " , " " , " b" , " " , " " , " " , " " , " c" , " " , " " , "" ] , "loose" =: orderedList [para "a", para "b", para "c"] =?> unlines [ "" , " " , " " , " a" , " " , " " , " " , " " , " b" , " " , " " , " " , " " , " c" , " " , " " , "" ] ] , testGroup "definition" [ "compact" =: definitionList [ ("an", [plain "apple" ]) , ("a", [plain "banana"]) , ("an", [plain "orange"])] =?> unlines [ "" , " " , " " , " an" , " " , " " , " " , " apple" , " " , " " , " " , " " , " " , " a" , " " , " " , " " , " banana" , " " , " " , " " , " " , " " , " an" , " " , " " , " " , " orange" , " " , " " , " " , "" ] , "loose" =: definitionList [ ("an", [para "apple" ]) , ("a", [para "banana"]) , ("an", [para "orange"])] =?> unlines [ "" , " " , " " , " an" , " " , " " , " " , " apple" , " " , " " , " " , " " , " " , " a" , " " , " " , " " , " banana" , " " , " " , " " , " " , " " , " an" , " " , " " , " " , " orange" , " " , " " , " " , "" ] ] ] , testGroup "writer options" [ testGroup "top-level division" $ let headers = header 1 (text "header1") <> header 2 (text "header2") <> header 3 (text "header3") docbookTopLevelDiv :: (ToPandoc a) => TopLevelDivision -> a -> String docbookTopLevelDiv division = docbookWithOpts def{ writerTopLevelDivision = division } in [ test (docbookTopLevelDiv TopLevelSection) "sections as top-level" $ headers =?> unlines [ "" , " header1" , " " , " header2" , " " , " header3" , " " , " " , " " , " " , "" ] , test (docbookTopLevelDiv TopLevelChapter) "chapters as top-level" $ headers =?> unlines [ "" , " header1" , " " , " header2" , " " , " header3" , " " , " " , " " , " " , "" ] , test (docbookTopLevelDiv TopLevelPart) "parts as top-level" $ headers =?> unlines [ "" , " header1" , " " , " header2" , " " , " header3" , " " , " " , " " , " " , "" ] , test (docbookTopLevelDiv TopLevelDefault) "default top-level" $ headers =?> unlines [ "" , " header1" , " " , " header2" , " " , " header3" , " " , " " , " " , " " , "" ] ] ] , testGroup "section attributes" $ let headers = headerWith ("myid1",["unnumbered","ignored"],[("role","internal"),("xml:id","anotherid"),("dir","rtl")]) 1 "header1" <> headerWith ("myid2",["unnumbered"],[("invalidname","value"),("arch","linux"),("dir","invaliddir")]) 1 "header2" <> headerWith ("myid3",["ignored"],[]) 1 "header3" in [ test docbook5 "sections with attributes (db5)" $ headers =?> unlines [ "
    " , " header1" , " " , " " , "
    " , "
    " , " header2" , " " , " " , "
    " , "
    " , " header3" , " " , " " , "
    " ] , test docbook "sections with attributes (db4)" $ headers =?> unlines [ "" , " header1" , " " , " " , "" , "" , " header2" , " " , " " , "" , "" , " header3" , " " , " " , "" ] ] ] pandoc-3.1.3/test/Tests/Writers/Docx.hs0000644000000000000000000001544707346545000016137 0ustar0000000000000000module Tests.Writers.Docx (tests) where import Text.Pandoc import Test.Tasty import Tests.Writers.OOXML import Test.Tasty.HUnit import Data.List (isPrefixOf) -- we add an extra check to make sure that we're not writing in the -- toplevel docx directory. We don't want to accidentally overwrite an -- Word-generated docx file used to test the reader. docxTest :: String -> WriterOptions -> FilePath -> FilePath -> TestTree docxTest testName opts nativeFP goldenFP = if "docx/golden/" `isPrefixOf` goldenFP then ooxmlTest writeDocx testName opts nativeFP goldenFP else testCase testName $ assertFailure $ goldenFP ++ " is not in `test/docx/golden`" tests :: [TestTree] tests = [ testGroup "inlines" [ docxTest "font formatting" def "docx/inline_formatting.native" "docx/golden/inline_formatting.docx" , docxTest "hyperlinks" def "docx/links.native" "docx/golden/links.docx" , docxTest "inline image" def{ writerExtensions = enableExtension Ext_native_numbering (writerExtensions def) } "docx/image_writer_test.native" "docx/golden/image.docx" , docxTest "inline images" def "docx/inline_images_writer_test.native" "docx/golden/inline_images.docx" , docxTest "handling unicode input" def "docx/unicode.native" "docx/golden/unicode.docx" , docxTest "inline code" def "docx/inline_code.native" "docx/golden/inline_code.docx" , docxTest "inline code in subscript and superscript" def "docx/verbatim_subsuper.native" "docx/golden/verbatim_subsuper.docx" ] , testGroup "blocks" [ docxTest "headers" def "docx/headers.native" "docx/golden/headers.docx" , docxTest "nested anchor spans in header" def "docx/nested_anchors_in_header.native" "docx/golden/nested_anchors_in_header.docx" , docxTest "lists" def "docx/lists.native" "docx/golden/lists.docx" , docxTest "lists continuing after interruption" def "docx/lists_continuing.native" "docx/golden/lists_continuing.docx" , docxTest "lists restarting after interruption" def "docx/lists_restarting.native" "docx/golden/lists_restarting.docx" , docxTest "lists with multiple initial list levels" def "docx/lists_multiple_initial.native" "docx/golden/lists_multiple_initial.docx" , docxTest "lists with div bullets" def "docx/lists_div_bullets.native" "docx/golden/lists_div_bullets.docx" , docxTest "definition lists" def "docx/definition_list.native" "docx/golden/definition_list.docx" , docxTest "footnotes and endnotes" def "docx/notes.native" "docx/golden/notes.docx" , docxTest "links in footnotes and endnotes" def "docx/link_in_notes.native" "docx/golden/link_in_notes.docx" , docxTest "blockquotes" def "docx/block_quotes.native" "docx/golden/block_quotes.docx" , docxTest "tables" def "docx/tables.native" "docx/golden/tables.docx" , docxTest "tables without explicit column widths" def "docx/tables-default-widths.native" "docx/golden/tables-default-widths.docx" , docxTest "tables with lists in cells" def "docx/table_with_list_cell.native" "docx/golden/table_with_list_cell.docx" , docxTest "tables with one row" def "docx/table_one_row.native" "docx/golden/table_one_row.docx" , docxTest "tables separated with RawBlock" def "docx/tables_separated_with_rawblock.native" "docx/golden/tables_separated_with_rawblock.docx" , docxTest "code block" def "docx/codeblock.native" "docx/golden/codeblock.docx" , docxTest "raw OOXML blocks" def "docx/raw-blocks.native" "docx/golden/raw-blocks.docx" , docxTest "raw bookmark markers" def "docx/raw-bookmarks.native" "docx/golden/raw-bookmarks.docx" ] , testGroup "track changes" [ docxTest "insertion" def "docx/track_changes_insertion_all.native" "docx/golden/track_changes_insertion.docx" , docxTest "deletion" def "docx/track_changes_deletion_all.native" "docx/golden/track_changes_deletion.docx" , docxTest "move text" def "docx/track_changes_move_all.native" "docx/golden/track_changes_move.docx" , docxTest "comments" def "docx/comments.native" "docx/golden/comments.docx" , docxTest "scrubbed metadata" def "docx/track_changes_scrubbed_metadata.native" "docx/golden/track_changes_scrubbed_metadata.docx" ] , testGroup "custom styles" [ docxTest "custom styles without reference.docx" def "docx/custom_style.native" "docx/golden/custom_style_no_reference.docx" , docxTest "custom styles with reference.docx" def{writerReferenceDoc = Just "docx/custom-style-reference.docx"} "docx/custom_style.native" "docx/golden/custom_style_reference.docx" , docxTest "suppress custom style for headers and blockquotes" def "docx/custom-style-preserve.native" "docx/golden/custom_style_preserve.docx" ] , testGroup "metadata" [ docxTest "document properties (core, custom)" def "docx/document-properties.native" "docx/golden/document-properties.docx" , docxTest "document properties (short description)" def "docx/document-properties-short-desc.native" "docx/golden/document-properties-short-desc.docx" ] ] pandoc-3.1.3/test/Tests/Writers/FB2.hs0000644000000000000000000000275007346545000015604 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} module Tests.Writers.FB2 (tests) where import Test.Tasty import Test.Tasty.HUnit (HasCallStack) import Tests.Helpers import Text.Pandoc import Text.Pandoc.Arbitrary () import Text.Pandoc.Builder fb2 :: String -> String fb2 x = "\n" ++ "unrecognisedpandoc<p />
    " ++ x ++ "
    " infix 4 =: (=:) :: (ToString a, ToPandoc a, HasCallStack) => String -> (a, String) -> TestTree (=:) = test (purely (writeFB2 def) . toPandoc) tests :: [TestTree] tests = [ testGroup "block elements" ["para" =: para "Lorem ipsum cetera." =?> fb2 "

    Lorem ipsum cetera.

    " ] , testGroup "inlines" [ "Emphasis" =: para (emph "emphasized") =?> fb2 "

    emphasized

    " ] , "bullet list" =: bulletList [ plain $ text "first" , plain $ text "second" , plain $ text "third" ] =?> fb2 "

    \x2022 first

    \x2022 second

    \x2022 third

    " ] pandoc-3.1.3/test/Tests/Writers/HTML.hs0000644000000000000000000002063707346545000016003 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} module Tests.Writers.HTML (tests) where import Data.Text (unpack) import qualified Data.Text as T import Test.Tasty import Test.Tasty.HUnit (HasCallStack) import Tests.Helpers import Text.Pandoc import Text.Pandoc.Arbitrary () import Text.Pandoc.Builder htmlWithOpts :: (ToPandoc a) => WriterOptions -> a -> String htmlWithOpts opts = unpack . purely (writeHtml4String opts{ writerWrapText = WrapNone }) . toPandoc html :: (ToPandoc a) => a -> String html = htmlWithOpts def htmlQTags :: (ToPandoc a) => a -> String htmlQTags = unpack . purely (writeHtml4String def{ writerWrapText = WrapNone, writerHtmlQTags = True }) . toPandoc {- "my test" =: X =?> Y is shorthand for test html "my test" $ X =?> Y which is in turn shorthand for test html "my test" (X,Y) -} infix 4 =: (=:) :: (ToString a, ToPandoc a, HasCallStack) => String -> (a, String) -> TestTree (=:) = test html noteTestDoc :: Blocks noteTestDoc = header 1 "Page title" <> header 2 "First section" <> para ("This is a footnote." <> note (para "Down here.") <> " And this is a " <> link "https://www.google.com" "" "link" <> ".") <> blockQuote (para ("A note inside a block quote." <> note (para "The second note.")) <> para "A second paragraph.") <> header 2 "Second section" <> para "Some more text." tests :: [TestTree] tests = [ testGroup "inline code" [ "basic" =: code "@&" =?> "@&" , "haskell" =: codeWith ("",["haskell"],[]) ">>=" =?> ">>=" , "nolanguage" =: codeWith ("",["nolanguage"],[]) ">>=" =?> ">>=" ] , testGroup "images" [ "alt with formatting" =: image "/url" "title" ("my " <> emph "image") =?> "\"my" ] , testGroup "blocks" [ "definition list with empty
    " =: definitionList [(mempty, [para $ text "foo bar"])] =?> "
    \n
    \n
    \n

    foo bar

    \n
    \n
    " , "heading with disallowed attributes" =: headerWith ("", [], [("invalid","1"), ("lang", "en")]) 1 "test" =?> "

    test

    " ] , testGroup "quotes" [ "quote with cite attribute (without q-tags)" =: doubleQuoted (spanWith ("", [], [("cite", "http://example.org")]) (str "examples")) =?> "“examples”" , tQ "quote with cite attribute (with q-tags)" $ doubleQuoted (spanWith ("", [], [("cite", "http://example.org")]) (str "examples")) =?> "examples" ] , testGroup "code" [ "code should be rendered correctly" =: plain (codeWith ("",[],[]) "Answer is 42") =?> "Answer is 42" ] , testGroup "sample" [ "sample should be rendered correctly" =: plain (codeWith ("",["sample"],[]) "Answer is 42") =?> "Answer is 42" ] , testGroup "variable" [ "variable should be rendered correctly" =: plain (codeWith ("",["variable"],[]) "result") =?> "result" ] , testGroup "sample with style" [ "samp should wrap highlighted code" =: codeWith ("",["sample","haskell"],[]) ">>=" =?> ("" ++ ">>=") ] , testGroup "variable with style" [ "var should wrap highlighted code" =: codeWith ("",["haskell","variable"],[]) ">>=" =?> ("" ++ ">>=") ] , testGroup "footnotes" [ test (htmlWithOpts def{writerReferenceLocation=EndOfDocument}) "at the end of a document" $ noteTestDoc =?> T.unlines [ "

    Page title

    " , "

    First section

    " , "

    This is a footnote.1 And this is a link.

    " , "
    " , "

    A note inside a block quote.2

    " , "

    A second paragraph.

    " , "
    " , "

    Second section

    " , "

    Some more text.

    " , "
    " , "
    " , "
      " , "
    1. Down here.↩︎

    2. " , "
    3. The second note.↩︎

    4. " , "
    " , "
    " ] , test (htmlWithOpts def{writerReferenceLocation=EndOfBlock}) "at the end of a block" $ noteTestDoc =?> T.unlines [ "

    Page title

    " , "

    First section

    " , "

    This is a footnote.1 And this is a link.

    " , "
    " , "
      " , "
    1. Down here.↩︎

    2. " , "
    " , "
    " , "
    " , "

    A note inside a block quote.2

    " , "

    A second paragraph.

    " , "
    " , "
    " , "
      " , "
    1. The second note.↩︎

    2. " , "
    " , "
    " , "

    Second section

    " , "

    Some more text.

    " ] , test (htmlWithOpts def{writerReferenceLocation=EndOfSection}) "at the end of a section" $ noteTestDoc =?> T.unlines [ "

    Page title

    " , "

    First section

    " , "

    This is a footnote.1 And this is a link.

    " , "
    " , "

    A note inside a block quote.2

    " , "

    A second paragraph.

    " , "
    " , "
    " , "
    " , "
      " , "
    1. Down here.↩︎

    2. " , "
    3. The second note.↩︎

    4. " , "
    " , "
    " , "

    Second section

    " , "

    Some more text.

    " ] , test (htmlWithOpts def{writerReferenceLocation=EndOfSection, writerSectionDivs=True}) "at the end of a section, with section divs" $ noteTestDoc =?> -- Footnotes are rendered _after_ their section (in this case after the level2 section -- that contains it). T.unlines [ "
    " , "

    Page title

    " , "
    " , "

    First section

    " , "

    This is a footnote.1 And this is a link.

    " , "
    " , "

    A note inside a block quote.2

    " , "

    A second paragraph.

    " , "
    " , "
    " , "
    " , "
      " , "
    1. Down here.↩︎

    2. " , "
    3. The second note.↩︎

    4. " , "
    " , "
    " , "
    " , "
    " , "

    Second section

    " , "

    Some more text.

    " , "
    " , "
    " ] ] ] where tQ :: (ToString a, ToPandoc a) => String -> (a, String) -> TestTree tQ = test htmlQTags pandoc-3.1.3/test/Tests/Writers/JATS.hs0000644000000000000000000001434007346545000015772 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} module Tests.Writers.JATS (tests) where import Data.Text (Text) import Test.Tasty import Test.Tasty.HUnit (HasCallStack) import Tests.Helpers import Text.Pandoc import Text.Pandoc.Arbitrary () import Text.Pandoc.Builder import qualified Data.Text as T jats :: (ToPandoc a) => a -> Text jats = purely (writeJatsArchiving def{ writerWrapText = WrapNone }) . toPandoc jatsArticleAuthoring :: (ToPandoc a) => a -> Text jatsArticleAuthoring = purely (writeJatsArticleAuthoring def{ writerWrapText = WrapNone }) . toPandoc {- "my test" =: X =?> Y is shorthand for test jats "my test" $ X =?> Y which is in turn shorthand for test jats "my test" (X,Y) -} infix 4 =: (=:) :: (ToString a, ToPandoc a, HasCallStack) => String -> (a, Text) -> TestTree (=:) = test jats tests :: [TestTree] tests = [ testGroup "inline code" [ "basic" =: code "@&" =?> "

    @&

    " , "lang" =: codeWith ("", ["c"], []) "@&" =?> "

    @&

    " ] , testGroup "block code" [ "basic" =: codeBlock "@&" =?> "@&" , "lang" =: codeBlockWith ("", ["c"], []) "@&" =?> "@&" ] , testGroup "images" [ "basic" =: image "/url" "title" mempty =?> "" ] , testGroup "inlines" [ "Emphasis" =: emph "emphasized" =?> "

    emphasized

    " , test jatsArticleAuthoring "footnote in articleauthoring tag set" ("test" <> note (para "footnote") =?> unlines [ "

    test" , "

    footnote

    " , "

    " ]) ] , testGroup "bullet list" [ "plain items" =: bulletList [ plain $ text "first" , plain $ text "second" , plain $ text "third" ] =?> "\n\ \ \n\ \

    first

    \n\ \
    \n\ \ \n\ \

    second

    \n\ \
    \n\ \ \n\ \

    third

    \n\ \
    \n\ \
    " , "item with implicit figure" =: bulletList [ simpleFigure (text "caption") "a.png" "" ] =?> T.unlines [ "" , " " , "

    " , " " , "

    caption

    " , " " xlink:href=\"a.png\" />" , " " , "

    " , "
    " , "
    " ] ] , testGroup "definition lists" [ "with internal link" =: definitionList [(link "#go" "" (str "testing"), [plain (text "hi there")])] =?> "\n\ \ \n\ \ testing\n\ \ \n\ \

    hi there

    \n\ \
    \n\ \
    \n\ \
    " ] , testGroup "math" [ "escape |" =: para (math "\\sigma|_{\\{x\\}}") =?> "

    \n\ \\n\ \σ|{x}

    " ] , testGroup "headers" [ "unnumbered header" =: headerWith ("foo",["unnumbered"],[]) 1 (text "Header 1" <> note (plain $ text "note")) =?> "\n\ \ Header 1<xref ref-type=\"fn\" rid=\"fn1\">1</xref>\n\ \" , "unnumbered sub header" =: headerWith ("foo",["unnumbered"],[]) 1 (text "Header") <> headerWith ("foo",["unnumbered"],[]) 2 (text "Sub-Header") =?> "\n\ \ Header\n\ \ \n\ \ Sub-Header\n\ \ \n\ \" , "containing image" =: header 1 (image "imgs/foo.jpg" "" (text "Alt text")) =?> "\n\ \ <inline-graphic mimetype=\"image\" mime-subtype=\"jpeg\" xlink:href=\"imgs/foo.jpg\">\n\ \ <alt-text>Alt text</alt-text>\n\ \ </inline-graphic>\n\ \" ] , testGroup "ids" [ "non-ASCII in header ID" =: headerWith ("smørbrød",[],[]) 1 (text "smørbrød") =?> T.unlines [ "" , " smørbrød" , "" ] , "disallowed symbol in header id" =: headerWith ("i/o",[],[]) 1 (text "I/O") =?> T.unlines [ "" , " I/O" , "" ] , "disallowed symbols in internal link target" =: link "#foo:bar" "" "baz" =?> "

    baz

    " , "code id starting with a number" =: codeWith ("7y",[],[]) "print 5" =?> "

    print 5

    " ] , testGroup "spans" [ "unwrapped if no attributes given" =: spanWith nullAttr "text in span" =?> "

    text in span

    " , "converted to named-content element if class given" =: spanWith ("a", ["genus-species"], [("alt", "aa")]) "C. elegans" =?> ("

    " <> "C. elegans

    ") , "unwrapped if styled-content element would have no attributes" =: spanWith ("", [], [("hidden", "true")]) "text in span" =?> "

    text in span

    " , "use content-type attribute if present" =: spanWith ("", [], [("content-type", "species")]) "E. coli" =?> "

    E. coli

    " ] ] pandoc-3.1.3/test/Tests/Writers/Jira.hs0000644000000000000000000000737607346545000016131 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} module Tests.Writers.Jira (tests) where import Data.Text (unpack) import Test.Tasty import Test.Tasty.HUnit (HasCallStack) import Tests.Helpers import Text.Pandoc import Text.Pandoc.Arbitrary () import Text.Pandoc.Builder jira :: (ToPandoc a) => a -> String jira = unpack . purely (writeJira def) . toPandoc infix 4 =: (=:) :: (ToString a, ToPandoc a, HasCallStack) => String -> (a, String) -> TestTree (=:) = test jira tests :: [TestTree] tests = [ testGroup "inlines" [ "underlined text" =: underline "underlined text" =?> "+underlined text+" , "image with attributes" =: imageWith ("", [], [("align", "right"), ("height", "50")]) "image.png" "" mempty =?> "!image.png|align=right, height=50!" , testGroup "links" [ "external link" =: link "https://example.com/test.php" "" "test" =?> "[test|https://example.com/test.php]" , "external link without description" =: link "https://example.com/tmp.js" "" "https://example.com/tmp.js" =?> "[https://example.com/tmp.js]" , "email link" =: link "mailto:me@example.com" "" "Jane" =?> "[Jane|mailto:me@example.com]" , "email link without description" =: link "mailto:me@example.com" "" "me@example.com" =?> "[mailto:me@example.com]" , "attachment link" =: linkWith ("", ["attachment"], []) "foo.txt" "" "My file" =?> "[My file^foo.txt]" , "attachment link without description" =: linkWith ("", ["attachment"], []) "foo.txt" "" "foo.txt" =?> "[^foo.txt]" , "user link" =: linkWith ("", ["user-account"], []) "~johndoe" "" "John Doe" =?> "[John Doe|~johndoe]" , "user link with user as description" =: linkWith ("", ["user-account"], []) "~johndoe" "" "~johndoe" =?> "[~johndoe]" , "'smart' link" =: para (linkWith ("", ["smart-link"], []) "http://example.com" "" "x") =?> "[x|http://example.com|smart-link]" , "'smart' card" =: para (linkWith ("", ["smart-card"], []) "http://example.org" "" "x") =?> "[x|http://example.org|smart-card]" ] , testGroup "spans" [ "id is used as anchor" =: spanWith ("unicorn", [], []) (str "Unicorn") =?> "{anchor:unicorn}Unicorn" , "use `color` attribute" =: spanWith ("",[],[("color","red")]) "ruby" =?> "{color:red}ruby{color}" ] , testGroup "code" [ "code block with known language" =: codeBlockWith ("", ["java"], []) "Book book = new Book(\"Algebra\")" =?> "{code:java}\nBook book = new Book(\"Algebra\")\n{code}" , "code block without language" =: codeBlockWith ("", [], []) "preformatted\n text.\n" =?> "{noformat}\npreformatted\n text.\n{noformat}" ] ] , testGroup "blocks" [ testGroup "div" [ "empty attributes" =: divWith nullAttr (para "interesting text") =?> "interesting text" , "just identifier" =: divWith ("a", [], []) (para "interesting text") =?> "{anchor:a}interesting text" , "with class 'panel'" =: divWith ("", ["panel"], []) (para "Contents!") =?> "{panel}\nContents\\!\n{panel}\n" , "panel with id" =: divWith ("b", ["panel"], []) (para "text") =?> "{panel}\n{anchor:b}text\n{panel}\n" , "title attribute" =: divWith ("", [], [("title", "Gimme!")]) (para "Contents!") =?> "{panel:title=Gimme!}\nContents\\!\n{panel}\n" , "nested panels" =: let panelAttr = ("", ["panel"], []) in divWith panelAttr (para "hi" <> divWith panelAttr (para "wassup?")) =?> "{panel}\nhi\n\nwassup?\n{panel}\n" ] ] ] pandoc-3.1.3/test/Tests/Writers/LaTeX.hs0000644000000000000000000001720207346545000016206 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} module Tests.Writers.LaTeX (tests) where import Data.Text (unpack) import Test.Tasty import Test.Tasty.HUnit (HasCallStack) import Tests.Helpers import Text.Pandoc import Text.Pandoc.Arbitrary () import Text.Pandoc.Builder latex :: (ToPandoc a) => a -> String latex = latexWithOpts def latexListing :: (ToPandoc a) => a -> String latexListing = latexWithOpts def{ writerListings = True } latexWithOpts :: (ToPandoc a) => WriterOptions -> a -> String latexWithOpts opts = unpack . purely (writeLaTeX opts) . toPandoc beamerWithOpts :: (ToPandoc a) => WriterOptions -> a -> String beamerWithOpts opts = unpack . purely (writeBeamer opts) . toPandoc {- "my test" =: X =?> Y is shorthand for test latex "my test" $ X =?> Y which is in turn shorthand for test latex "my test" (X,Y) -} infix 4 =: (=:) :: (ToString a, ToPandoc a, HasCallStack) => String -> (a, String) -> TestTree (=:) = test latex tests :: [TestTree] tests = [ testGroup "code blocks" [ "in footnotes" =: note (para "hi" <> codeBlock "hi") =?> "\\footnote{hi\n\n\\begin{Verbatim}\nhi\n\\end{Verbatim}\n}" , test latexListing "identifier" $ codeBlockWith ("id",[],[]) "hi" =?> ("\\begin{lstlisting}[label=id]\nhi\n\\end{lstlisting}" :: String) , test latexListing "no identifier" $ codeBlock "hi" =?> ("\\begin{lstlisting}\nhi\n\\end{lstlisting}" :: String) ] , testGroup "definition lists" [ "with internal link" =: definitionList [(link "#go" "" (str "testing"), [plain (text "hi there")])] =?> "\\begin{description}\n\\tightlist\n\\item[{\\protect\\hyperlink{go}{testing}}]\nhi there\n\\end{description}" ] , testGroup "math" [ "escape |" =: para (math "\\sigma|_{\\{x\\}}") =?> "\\(\\sigma|_{\\{x\\}}\\)" ] , testGroup "headers" [ "unnumbered header" =: headerWith ("foo",["unnumbered"],[]) 1 (text "Header 1" <> note (plain $ text "note")) =?> "\\hypertarget{foo}{%\n\\section*{\\texorpdfstring{Header 1\\footnote{note}}{Header 1}}\\label{foo}}\n\\addcontentsline{toc}{section}{Header 1}\n" , "in list item" =: bulletList [header 2 (text "foo")] =?> "\\begin{itemize}\n\\item ~\n \\subsection{foo}\n\\end{itemize}" , "in definition list item" =: definitionList [(text "foo", [header 2 (text "bar"), para $ text "baz"])] =?> "\\begin{description}\n\\item[foo] ~ \n\\subsection{bar}\n\nbaz\n\\end{description}" , "containing image" =: header 1 (image "imgs/foo.jpg" "" (text "Alt text")) =?> "\\section{\\texorpdfstring{\\protect\\includegraphics{imgs/foo.jpg}}{Alt text}}" ] , testGroup "inline code" [ "struck out and highlighted" =: strikeout (codeWith ("",["haskell"],[]) "foo" <> space <> str "bar") =?> "\\st{\\mbox{\\VERB|\\NormalTok{foo}|} bar}" , "struck out and not highlighted" =: strikeout (code "foo" <> space <> str "bar") =?> "\\st{\\mbox{\\texttt{foo}} bar}" , "single quotes" =: code "dog's" =?> "\\texttt{dog\\textquotesingle{}s}" , "backtick" =: code "`nu?`" =?> "\\texttt{\\textasciigrave{}nu?\\textasciigrave{}}" ] , testGroup "writer options" [ testGroup "top-level division" $ let headers = header 1 (text "header1") <> header 2 (text "header2") <> header 3 (text "header3") latexTopLevelDiv :: (ToPandoc a) => TopLevelDivision -> a -> String latexTopLevelDiv division = latexWithOpts def{ writerTopLevelDivision = division } beamerTopLevelDiv :: (ToPandoc a) => TopLevelDivision -> a -> String beamerTopLevelDiv division = beamerWithOpts def { writerTopLevelDivision = division } in [ test (latexTopLevelDiv TopLevelSection) "sections as top-level" $ headers =?> unlines [ "\\section{header1}\n" , "\\subsection{header2}\n" , "\\subsubsection{header3}" ] , test (latexTopLevelDiv TopLevelChapter) "chapters as top-level" $ headers =?> unlines [ "\\chapter{header1}\n" , "\\section{header2}\n" , "\\subsection{header3}" ] , test (latexTopLevelDiv TopLevelPart) "parts as top-level" $ headers =?> unlines [ "\\part{header1}\n" , "\\chapter{header2}\n" , "\\section{header3}" ] , test (latexTopLevelDiv TopLevelDefault) "default top-level" $ headers =?> unlines [ "\\section{header1}\n" , "\\subsection{header2}\n" , "\\subsubsection{header3}" ] , test (beamerTopLevelDiv TopLevelSection) "sections as top-level in beamer" $ headers =?> unlines [ "\\section{header1}\n" , "\\subsection{header2}\n" , "\\subsubsection{header3}" ] , test (beamerTopLevelDiv TopLevelChapter) "chapters are as part in beamer" $ headers =?> unlines [ "\\part{header1}\n" , "\\section{header2}\n" , "\\subsection{header3}" ] , test (beamerTopLevelDiv TopLevelPart) "parts as top-level in beamer" $ headers =?> unlines [ "\\part{header1}\n" , "\\section{header2}\n" , "\\subsection{header3}" ] , test (beamerTopLevelDiv TopLevelDefault) "default top-level in beamer" $ headers =?> unlines [ "\\section{header1}\n" , "\\subsection{header2}\n" , "\\subsubsection{header3}" ] , test (latexTopLevelDiv TopLevelPart) "part top-level, section not in toc" $ ( headerWith ("", ["unnumbered"], []) 1 (text "header1") <> headerWith ("", ["unnumbered"], []) 2 (text "header2") <> headerWith ("", ["unnumbered"], []) 3 (text "header3") <> headerWith ("", ["unnumbered"], []) 4 (text "header4") <> headerWith ("", ["unnumbered"], []) 5 (text "header5") <> headerWith ("", ["unnumbered"], []) 6 (text "header6")) =?> unlines [ "\\part*{header1}" , "\\addcontentsline{toc}{part}{header1}\n" , "\\chapter*{header2}" , "\\addcontentsline{toc}{chapter}{header2}\n" , "\\section*{header3}" , "\\addcontentsline{toc}{section}{header3}\n" , "\\subsection*{header4}" , "\\addcontentsline{toc}{subsection}{header4}\n" , "\\subsubsection*{header5}" , "\\addcontentsline{toc}{subsubsection}{header5}\n" , "\\paragraph*{header6}" , "\\addcontentsline{toc}{paragraph}{header6}" ] ] ] ] pandoc-3.1.3/test/Tests/Writers/Markdown.hs0000644000000000000000000002174607346545000017023 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {-# OPTIONS_GHC -fno-warn-name-shadowing #-} module Tests.Writers.Markdown (tests) where import Data.Text (unpack) import Test.Tasty import Test.Tasty.HUnit (HasCallStack) import Tests.Helpers import Text.Pandoc import Text.Pandoc.Arbitrary () import Text.Pandoc.Builder defopts :: WriterOptions defopts = def { writerExtensions = pandocExtensions , writerSetextHeaders = True } markdown :: (ToPandoc a) => a -> String markdown = unpack . purely (writeMarkdown defopts) . toPandoc markdownWithOpts :: (ToPandoc a) => WriterOptions -> a -> String markdownWithOpts opts x = unpack . purely (writeMarkdown opts) $ toPandoc x {- "my test" =: X =?> Y is shorthand for test markdown "my test" $ X =?> Y which is in turn shorthand for test markdown "my test" (X,Y) -} infix 4 =: (=:) :: (ToString a, ToPandoc a, HasCallStack) => String -> (a, String) -> TestTree (=:) = test markdown tests :: [TestTree] tests = [ "indented code after list" =: (orderedList [ para "one" <> para "two" ] <> codeBlock "test") =?> "1. one\n\n two\n\n```{=html}\n\n```\n test" , "list with tight sublist" =: bulletList [ plain "foo" <> bulletList [ plain "bar" ], plain "baz" ] =?> "- foo\n - bar\n- baz\n" ] ++ [noteTests] ++ [shortcutLinkRefsTests] {- Testing with the following text: First Header ============ This is a footnote.[^1] And this is a [link](https://www.google.com). > A note inside a block quote.[^2] > > A second paragraph. Second Header ============= Some more text. [^1]: Down here. [^2]: The second note. -} noteTestDoc :: Blocks noteTestDoc = header 1 "First Header" <> para ("This is a footnote." <> note (para "Down here.") <> " And this is a " <> link "https://www.google.com" "" "link" <> ".") <> blockQuote (para ("A note inside a block quote." <> note (para "The second note.")) <> para "A second paragraph.") <> header 1 "Second Header" <> para "Some more text." noteTests :: TestTree noteTests = testGroup "note and reference location" [ test (markdownWithOpts defopts) "footnotes at the end of a document" $ noteTestDoc =?> unlines [ "First Header" , "============" , "" , "This is a footnote.[^1] And this is a [link](https://www.google.com)." , "" , "> A note inside a block quote.[^2]" , ">" , "> A second paragraph." , "" , "Second Header" , "=============" , "" , "Some more text." , "" , "[^1]: Down here." , "" , "[^2]: The second note." ] , test (markdownWithOpts defopts{writerReferenceLocation=EndOfBlock}) "footnotes at the end of blocks" $ noteTestDoc =?> unlines [ "First Header" , "============" , "" , "This is a footnote.[^1] And this is a [link](https://www.google.com)." , "" , "[^1]: Down here." , "" , "> A note inside a block quote.[^2]" , ">" , "> A second paragraph." , "" , "[^2]: The second note." , "" , "Second Header" , "=============" , "" , "Some more text." ] , test (markdownWithOpts defopts{writerReferenceLocation=EndOfBlock, writerReferenceLinks=True}) "footnotes and reference links at the end of blocks" $ noteTestDoc =?> unlines [ "First Header" , "============" , "" , "This is a footnote.[^1] And this is a [link]." , "" , "[^1]: Down here." , "" , " [link]: https://www.google.com" , "" , "> A note inside a block quote.[^2]" , ">" , "> A second paragraph." , "" , "[^2]: The second note." , "" , "Second Header" , "=============" , "" , "Some more text." ] , test (markdownWithOpts defopts{writerReferenceLocation=EndOfSection}) "footnotes at the end of section" $ noteTestDoc =?> unlines [ "First Header" , "============" , "" , "This is a footnote.[^1] And this is a [link](https://www.google.com)." , "" , "> A note inside a block quote.[^2]" , ">" , "> A second paragraph." , "" , "[^1]: Down here." , "" , "[^2]: The second note." , "" , "Second Header" , "=============" , "" , "Some more text." ] ] shortcutLinkRefsTests :: TestTree shortcutLinkRefsTests = let infix 4 =: (=:) :: (ToString a, ToPandoc a, HasCallStack) => String -> (a, String) -> TestTree (=:) = test (purely (writeMarkdown defopts{writerReferenceLinks = True}) . toPandoc) in testGroup "Shortcut reference links" [ "Simple link (shortcutable)" =: para (link "/url" "title" "foo") =?> "[foo]\n\n [foo]: /url \"title\"" , "Followed by another link (unshortcutable)" =: para (link "/url1" "title1" "first" <> link "/url2" "title2" "second") =?> unlines [ "[first][][second]" , "" , " [first]: /url1 \"title1\"" , " [second]: /url2 \"title2\"" ] , "Followed by space and another link (unshortcutable)" =: para (link "/url1" "title1" "first" <> " " <> link "/url2" "title2" "second") =?> unlines [ "[first][] [second]" , "" , " [first]: /url1 \"title1\"" , " [second]: /url2 \"title2\"" ] , "Reference link is used multiple times (unshortcutable)" =: para (link "/url1" "" "foo" <> link "/url2" "" "foo" <> link "/url3" "" "foo") =?> unlines [ "[foo][][foo][1][foo][2]" , "" , " [foo]: /url1" , " [1]: /url2" , " [2]: /url3" ] , "Reference link is used multiple times (unshortcutable)" =: para (link "/url1" "" "foo" <> " " <> link "/url2" "" "foo" <> " " <> link "/url3" "" "foo") =?> unlines [ "[foo][] [foo][1] [foo][2]" , "" , " [foo]: /url1" , " [1]: /url2" , " [2]: /url3" ] , "Reference link is followed by text in brackets" =: para (link "/url" "" "link" <> "[text in brackets]") =?> unlines [ "[link][]\\[text in brackets\\]" , "" , " [link]: /url" ] , "Reference link is followed by space and text in brackets" =: para (link "/url" "" "link" <> " [text in brackets]") =?> unlines [ "[link][] \\[text in brackets\\]" , "" , " [link]: /url" ] , "Reference link is followed by RawInline" =: para (link "/url" "" "link" <> rawInline "markdown" "[rawText]") =?> unlines [ "[link][][rawText]" , "" , " [link]: /url" ] , "Reference link is followed by space and RawInline" =: para (link "/url" "" "link" <> space <> rawInline "markdown" "[rawText]") =?> unlines [ "[link][] [rawText]" , "" , " [link]: /url" ] , "Reference link is followed by RawInline with space" =: para (link "/url" "" "link" <> rawInline "markdown" " [rawText]") =?> unlines [ "[link][] [rawText]" , "" , " [link]: /url" ] , "Reference link is followed by citation" =: para (link "/url" "" "link" <> cite [Citation "author" [] [] NormalCitation 0 0] (str "[@author]")) =?> unlines [ "[link][][@author]" , "" , " [link]: /url" ] , "Reference link is followed by space and citation" =: para (link "/url" "" "link" <> space <> cite [Citation "author" [] [] NormalCitation 0 0] (str "[@author]")) =?> unlines [ "[link][] [@author]" , "" , " [link]: /url" ] ] pandoc-3.1.3/test/Tests/Writers/Markua.hs0000644000000000000000000000236107346545000016451 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} module Tests.Writers.Markua (tests) where import Test.Tasty import Test.Tasty.HUnit (HasCallStack) import Tests.Helpers import Text.Pandoc import Text.Pandoc.Arbitrary () import Text.Pandoc.Builder {- "my test" =: X =?> Y is shorthand for test html "my test" $ X =?> Y which is in turn shorthand for test html "my test" (X,Y) -} infix 4 =: (=:) :: (ToString a, ToPandoc a, HasCallStack) => String -> (a, String) -> TestTree (=:) = test (purely (writeMarkua def) . toPandoc) tests :: [TestTree] tests = [ testGroup "simple blurb/aside" ["blurb" =: divWith ("",["blurb"],[]) (bulletList [para "blurb content"]) =?> "B> * blurb content" ,"aside" =: divWith ("",["aside"],[]) (bulletList [para "aside list"]) =?> "A> * aside list" ] ,testGroup "multiclass blurb/aside" ["blurb" =: divWith ("",["blurb", "otherclass"],[]) (bulletList [para "blurb content"]) =?> "B> * blurb content" ,"aside" =: divWith ("",["otherclass", "aside"],[]) (bulletList [para "aside list"]) =?> "A> * aside list" ] ] pandoc-3.1.3/test/Tests/Writers/Ms.hs0000644000000000000000000000156307346545000015613 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} module Tests.Writers.Ms (tests) where import Test.Tasty import Test.Tasty.HUnit (HasCallStack) import Tests.Helpers import Text.Pandoc import Text.Pandoc.Builder infix 4 =: (=:) :: (ToString a, ToPandoc a, HasCallStack) => String -> (a, String) -> TestTree (=:) = test (purely (writeMs def . toPandoc)) tests :: [TestTree] tests = [ testGroup "code blocks" [ "basic" =: codeBlock "hello" =?> unlines [ ".IP" , ".nf" , "\\f[C]" , "hello" , "\\f[]" , ".fi"] , "escape starting ." =: codeBlock ". hello" =?> unlines [ ".IP" , ".nf" , "\\f[C]" , "\\&. hello" , "\\f[]" , ".fi"] ] ] pandoc-3.1.3/test/Tests/Writers/Muse.hs0000644000000000000000000010550107346545000016142 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} module Tests.Writers.Muse (tests) where import Prelude hiding (unlines) import Data.Text (Text, unlines) import Test.Tasty import Test.Tasty.HUnit (HasCallStack) import Tests.Helpers import Text.Pandoc import Text.Pandoc.Arbitrary () import Text.Pandoc.Builder defopts :: WriterOptions defopts = def{ writerWrapText = WrapPreserve, writerExtensions = extensionsFromList [Ext_amuse, Ext_auto_identifiers] } muse :: (ToPandoc a) => a -> Text muse = museWithOpts defopts museWithOpts :: (ToPandoc a) => WriterOptions -> a -> Text museWithOpts opts = purely (writeMuse opts) . toPandoc infix 4 =: (=:) :: (ToString a, ToPandoc a, HasCallStack) => String -> (a, Text) -> TestTree (=:) = test muse noteLocationTestDoc :: Blocks noteLocationTestDoc = header 1 "First Header" <> para ("This is a footnote." <> note (para "First note.")) <> blockQuote (para ("A note inside a block quote." <> note (para "The second note.")) <> para "A second paragraph.") <> header 1 "Second Header" <> para "Some more text." noteLocationTests :: TestTree noteLocationTests = testGroup "note location" [ test (museWithOpts defopts {writerReferenceLocation=EndOfDocument}) "footnotes at the end of document" $ noteLocationTestDoc =?> unlines [ "* First Header" , "" , "This is a footnote.[1]" , "" , "" , "A note inside a block quote.[2]" , "" , "A second paragraph." , "" , "" , "* Second Header" , "" , "Some more text." , "" , "[1] First note." , "" , "[2] The second note." ] , test (museWithOpts defopts {writerReferenceLocation=EndOfBlock}) "footnotes at the end of block" $ noteLocationTestDoc =?> unlines [ "* First Header" , "" , "This is a footnote.[1]" , "" , "[1] First note." , "" , "" , "A note inside a block quote.[2]" , "" , "[2] The second note." , "" , "A second paragraph." , "" , "" , "* Second Header" , "" , "Some more text." ] , test (museWithOpts defopts {writerReferenceLocation=EndOfSection}) "footnotes at the end of section" $ noteLocationTestDoc =?> unlines [ "* First Header" , "" , "This is a footnote.[1]" , "" , "" , "A note inside a block quote.[2]" , "" , "A second paragraph." , "" , "" , "[1] First note." , "" , "[2] The second note." , "" , "* Second Header" , "" , "Some more text." ] ] tests :: [TestTree] tests = [ testGroup "block elements" [ "plain" =: plain "Foo bar." =?> "Foo bar." , testGroup "paragraphs" [ "single paragraph" =: para "Sample paragraph." =?> "Sample paragraph." , "two paragraphs" =: para "First paragraph." <> para "Second paragraph." =?> unlines [ "First paragraph." , "" , "Second paragraph." ] ] , "line block" =: lineBlock ["Foo", "bar", "baz"] =?> unlines [ "> Foo" , "> bar" , "> baz" ] , "code block" =: codeBlock "int main(void) {\n\treturn 0;\n}" =?> unlines [ "" , "int main(void) {" , "\treturn 0;" , "}" , "" ] , "html raw block" =: rawBlock "html" "
    " =?> unlines [ "" , "
    " , "
    " ] , "block quote" =: blockQuote (para "Foo") =?> unlines [ "" , "Foo" , "" ] , testGroup "lists" [ testGroup "simple lists" [ "ordered list" =: orderedList [ plain "first" , plain "second" , plain "third" ] =?> unlines [ " 1. first" , " 2. second" , " 3. third" ] , "ordered list with Roman numerals" =: orderedListWith (1, UpperRoman, DefaultDelim) [ plain "first" , plain "second" , plain "third" ] =?> unlines [ " I. first" , " II. second" , " III. third" ] , "bullet list" =: bulletList [ plain "first" , plain "second" , plain "third" ] =?> unlines [ " - first" , " - second" , " - third" ] , "definition list" =: definitionList [ ("first definition", [plain "first description"]) , ("second definition", [plain "second description"]) , ("third definition", [plain "third description"]) ] =?> unlines [ " first definition :: first description" , " second definition :: second description" , " third definition :: third description" ] , "definition list with multiple descriptions" =: definitionList [ ("first definition", [ plain "first description" , plain "second description" ]) , ("second definition", [plain "third description"]) ] =?> unlines [ " first definition :: first description" , " :: second description" , " second definition :: third description" ] , "definition list with empty term" =: definitionList [ ("first definition", [plain "first description"]) , (mempty, [plain "second description"]) , (str "", [plain "third description"]) ] =?> unlines [ " first definition :: first description" , " :: second description" , " :: third description" ] , "definition list terms starting with space" =: definitionList [ ("first definition", [plain "first description"]) , (space <> str "foo", [plain "second description"]) , (str " > bar", [plain "third description"]) ] =?> unlines [ " first definition :: first description" , " foo :: second description" , " > bar :: third description" ] , "definition list terms starting with list markers" =: definitionList [ ("first definition", [plain "first description"]) , (str "-", [plain "second description"]) , (str "1.", [plain "third description"]) ] =?> unlines [ " first definition :: first description" , " - :: second description" , " 1. :: third description" ] ] -- Test that lists of the same type and style are separated with two blanklines , testGroup "sequential lists" [ "bullet lists" =: bulletList [ para "First" , para "Second" , para "Third" ] <> bulletList [ para "Fourth" , para "Fifth" ] =?> unlines [ " - First" , " - Second" , " - Third" , "" , "" , " - Fourth" , " - Fifth" ] , "ordered lists of the same style" =: orderedListWith (1, UpperRoman, DefaultDelim) [ para "First" , para "Second" ] <> orderedListWith (1, UpperRoman, DefaultDelim) [ para "Third" , para "Fourth" ] =?> unlines [ " I. First" , " II. Second" , "" , "" , " I. Third" , " II. Fourth" ] , "ordered lists with equal styles" =: orderedList [ para "First" , para "Second" ] <> orderedListWith (1, Decimal, DefaultDelim) [ para "Third" , para "Fourth" ] =?> unlines [ " 1. First" , " 2. Second" , "" , "" , " 1. Third" , " 2. Fourth" ] , "bullet and ordered lists" =: bulletList [ para "First" , para "Second" ] <> orderedListWith (1, UpperRoman, DefaultDelim) [ para "Third" , para "Fourth" ] =?> unlines [ " - First" , " - Second" , "" , " I. Third" , " II. Fourth" ] , "different style ordered lists" =: orderedListWith (1, UpperRoman, DefaultDelim) [ para "First" , para "Second" ] <> orderedListWith (1, Decimal, DefaultDelim) [ para "Third" , para "Fourth" ] =?> unlines [ " I. First" , " II. Second" , "" , " 1. Third" , " 2. Fourth" ] ] , testGroup "nested lists" [ "nested ordered list" =: orderedList [ plain "First outer" , plain "Second outer:" <> orderedList [ plain "first" , plain "second" ] , plain "Third outer" ] =?> unlines [ " 1. First outer" , " 2. Second outer:" , " 1. first" , " 2. second" , " 3. Third outer" ] , "nested bullet lists" =: bulletList [ plain "First outer" , plain "Second outer:" <> bulletList [ plain "first" , plain "second" ] , plain "Third outer" ] =?> unlines [ " - First outer" , " - Second outer:" , " - first" , " - second" , " - Third outer" ] , "nested definition lists" =: definitionList [ ("first definition", [plain "first description"]) , ("second definition", [ plain "second description" <> definitionList [ ("first inner definition" , [plain "first inner description"]) , ( "second inner definition" , [plain "second inner description"]) ] ] ) ] =?> unlines [ " first definition :: first description" , " second definition :: second description" , " first inner definition :: first inner description" , " second inner definition :: second inner description" ] , "list item starting with list" =: bulletList [ bulletList [ plain "foo"] ] =?> " - - foo" ] -- Check that list is intended with one space even inside a quote , "List inside block quote" =: blockQuote (orderedList [ plain "first" , plain "second" , plain "third" ]) =?> unlines [ "" , " 1. first" , " 2. second" , " 3. third" , "" ] ] , testGroup "headings" [ "normal heading" =: header 1 "foo" =?> "* foo" , "heading levels" =: header 1 "First level" <> header 3 "Third level" =?> unlines [ "* First level" , "" , "*** Third level" ] , "heading with ID" =: headerWith ("bar", [], []) 2 "Foo" =?> unlines [ "#bar" , "** Foo" ] , "empty heading" =: header 4 mempty =?> "**** " ] , "horizontal rule" =: horizontalRule =?> "----" , "escape horizontal rule" =: para "----" =?> "----" , "escape long horizontal rule" =: para "----------" =?> "----------" , "don't escape horizontal inside paragraph" =: para "foo ---- bar" =?> "foo ---- bar" , "escape nonbreaking space" =: para "~~" =?> "~~" , "escape > in the beginning of line" =: para "> foo bar" =?> "> foo bar" , "escape string with > and space in the beginning of line" =: para (str "> foo bar") =?> "> foo bar" , testGroup "tables" [ "table without header" =: let rows = [[para "Para 1.1", para "Para 1.2"] ,[para "Para 2.1", para "Para 2.2"]] toRow = Row nullAttr . map simpleCell in table emptyCaption [(AlignDefault,ColWidthDefault),(AlignDefault,ColWidthDefault)] (TableHead nullAttr [toRow [mempty, mempty]]) [TableBody nullAttr 0 [] $ map toRow rows] (TableFoot nullAttr []) =?> unlines [ " Para 1.1 | Para 1.2" , " Para 2.1 | Para 2.2" ] , "table with header" =: let headers = [plain "header 1", plain "header 2"] rows = [[para "Para 1.1", para "Para 1.2"] ,[para "Para 2.1", para "Para 2.2"]] in simpleTable headers rows =?> unlines [ " header 1 || header 2" , " Para 1.1 | Para 1.2" , " Para 2.1 | Para 2.2" ] , "table with header and caption" =: let capt = simpleCaption $ plain "Table 1" toRow = Row nullAttr . map simpleCell headers = [toRow [plain "header 1", plain "header 2"]] rows = map toRow [[para "Para 1.1", para "Para 1.2"] ,[para "Para 2.1", para "Para 2.2"]] in table capt [(AlignDefault,ColWidthDefault),(AlignDefault,ColWidthDefault)] (TableHead nullAttr headers) [TableBody nullAttr 0 [] rows] (TableFoot nullAttr []) =?> unlines [ " header 1 || header 2" , " Para 1.1 | Para 1.2" , " Para 2.1 | Para 2.2" , " |+ Table 1 +|" ] , "table inside bullet list" =: bulletList [simpleTable [] [[para "foo", para "bar"] ,[para "bat", para "baz"]]] =?> unlines [ " - foo | bar" , " bat | baz" ] , "table with one column" =: let headers = [] rows = [[para "Para 1"] ,[para "Para 2"]] in simpleTable headers rows =?> unlines [ "+--------+" , "| Para 1 |" , "+--------+" , "| Para 2 |" , "+--------+" ] ] , "div with bullet list" =: divWith nullAttr (bulletList [para "foo"]) =?> unlines [ " - foo" ] -- Making sure bullets are indented ] , testGroup "inline elements" [ testGroup "string" [ "string" =: str "foo" =?> "foo" , "escape footnote" =: str "[1]" =?> "[1]" , "escape secondary note" =: str "{1}" =?> "{1}" , "do not escape brackets" =: str "[12ab]" =?> "[12ab]" , "escape verbatim close tag" =: str "foobar" =?> "foo</verbatim>bar" , "escape link-like text" =: str "[[https://www.example.org]]" =?> "[[https://www.example.org]]" , "escape pipe to avoid accidental tables" =: str "foo | bar" =?> "foo | bar" , "escape hash to avoid accidental anchors" =: text "#foo bar" =?> "#foo bar" , "escape definition list markers" =: str "::" =?> "::" , "normalize strings before escaping" =: fromList [Str ":", Str ":"] =?> "::" -- We don't want colons to be escaped if they can't be confused -- with definition list item markers. , "do not escape colon" =: str ":" =?> ":" , "escape - to avoid accidental unordered lists" =: text " - foo" =?> " - foo" , "escape - inside a list to avoid accidental nested unordered lists" =: bulletList [ para "foo" <> para "- bar" ] =?> unlines [ " - foo" , "" , " - bar" ] , "escape strings starting with - inside a list" =: bulletList [ para (str "foo") <> para (str "- bar") ] =?> unlines [ " - foo" , "" , " - bar" ] , "escape - inside a note" =: note (para "- foo") =?> unlines [ "[1]" , "" , "[1] - foo" ] , "escape - after softbreak in note" =: note (para (str "foo" <> softbreak <> str "- bar")) =?> unlines [ "[1]" , "" , "[1] foo" , " - bar" ] , "escape ; to avoid accidental comments" =: text "; foo" =?> "; foo" , "escape strings starting with ; and space" =: str "; foo" =?> "; foo" , "escape ; after softbreak" =: "foo" <> softbreak <> "; bar" =?> "foo\n; bar" , "escape ; after linebreak" =: "foo" <> linebreak <> "; bar" =?> "foo
    \n; bar" , "do not escape ; inside paragraph" =: text "foo ; bar" =?> "foo ; bar" , "escape newlines" =: str "foo\nbar" =?> "foo bar" ] , testGroup "emphasis" [ "emphasis" =: emph "foo" =?> "*foo*" , "emphasis inside word" =: "foo" <> emph "bar" <> "baz" =?> "foobarbaz" , "emphasis before comma" =: emph "foo" <> ", bar" =?> "*foo*, bar" , "emphasis before period" =: emph "foobar" <> "." =?> "*foobar*." , "empty emphasis" =: emph mempty =?> "" , "empty strong" =: strong mempty =?> "" , "empty strong emphasis" =: strong (emph mempty) =?> "****" , "empty emphasized strong" =: emph (strong mempty) =?> "**" , "emphasized empty string" =: emph (str "") =?> "" , "strong empty string" =: strong (str "") =?> "" , "strong emphasized empty string" =: strong (emph (str "")) =?> "****" , "emphasized strong empty string" =: emph (strong (str "")) =?> "**" , "emphasized string with space" =: emph (str " ") =?> " " , "emphasized string ending with space" =: emph (str "foo ") =?> "foo " , "emphasized string with tab" =: emph (str "\t") =?> "\t" , "emphasized space between empty strings" =: emph (str "" <> space <> str "") =?> " " , "strong" =: strong "foo" =?> "**foo**" , "strong inside word" =: "foo" <> strong "bar" <> "baz" =?> "foobarbaz" , "strong emphasis" =: strong (emph "foo") =?> "***foo***" , "strong after emphasis" =: emph "foo" <> strong "bar" =?> "*foo*bar" , "strong emphasis after emphasis" =: emph "foo" <> strong (emph "bar") =?> "*foo**bar*" , "strong in the end of emphasis" =: emph ("foo" <> strong "bar") =?> "*foobar*" , "switch to lightweight markup after tag" =: strong (str "foo") <> emph (str "bar") <> strong (str "baz") =?> "**foo**bar**baz**" , "strikeout" =: strikeout "foo" =?> "foo" , "space at the beginning of emphasis" =: emph " foo" =?> " foo" , "space at the end of emphasis" =: emph "foo " =?> "foo " , "space at the beginning of strong" =: strong " foo" =?> " foo" , "space at the end of strong" =: strong "foo " =?> "foo " , "space at the beginning of strong emphasis" =: strong (emph " foo") =?> "** foo**" , "space at the end of strong emphasis" =: strong (emph "foo ") =?> "**foo **" , "space at the beginning of emphasiszed strong" =: emph (strong " foo") =?> "* foo*" , "space at the end of emphasized strong" =: emph (strong "foo ") =?> "*foo *" ] , "superscript" =: superscript "foo" =?> "foo" , "subscript" =: subscript "foo" =?> "foo" , "smallcaps" =: smallcaps "foo" =?> "*foo*" , "smallcaps near emphasis" =: emph (str "foo") <> smallcaps (str "bar") =?> "*foobar*" , "single quoted" =: singleQuoted "foo" =?> "‘foo’" , "double quoted" =: doubleQuoted "foo" =?> "“foo”" -- Cite is trivial , testGroup "code" [ "simple" =: code "foo" =?> "=foo=" , "empty" =: code "" =?> "" , "space" =: code " " =?> " " , "space at the beginning" =: code " foo" =?> " foo" , "space at the end" =: code "foo " =?> "foo " , "use tags for =" =: code "foo = bar" =?> "foo = bar" , "escape tag" =: code "foo = bar baz" =?> "foo = bar</code> baz" , "normalization with attributes" =: codeWith ("",["haskell"],[]) "foo" <> code "bar" =?> "=foobar=" , "code tag" =: code "foo" =?> "=foo=" , "normalization" =: code " code "de>" <> code "=" =?> "</code>=" , "normalization with empty string" =: code " str "" <> code "de>" <> code "=" =?> "</code>=" , "emphasized code" =: emph (code "foo") =?> "*=foo=*" , "strong code" =: strong (code "foo") =?> "**=foo=**" ] , testGroup "spaces" [ "space" =: "a" <> space <> "b" =?> "a b" , "soft break" =: "a" <> softbreak <> "b" =?> "a\nb" , test (museWithOpts def{ writerWrapText = WrapNone }) "remove soft break" $ "a" <> softbreak <> "b" =?> ("a b" :: String) , "line break" =: "a" <> linebreak <> "b" =?> "a
    \nb" , "line break at the end" =: "a" <> linebreak =?> "a
    " , "no newline after line break in header" =: header 1 ("a" <> linebreak <> "b") =?> "* a
    b" , "no softbreak in header" =: header 1 ("a" <> softbreak <> "b") =?> "* a b" ] , testGroup "math" [ "inline math" =: math "2^3" =?> "23" , "display math" =: displayMath "2^3" =?> "23" , "multiple letters in inline math" =: math "abc" =?> "*abc*" , "expand math before normalization" =: math "[" <> str "2]" =?> "[2]" , "multiple math expressions inside one inline list" =: math "5_4" <> ", " <> displayMath "3^2" =?> "54, 32" ] , "raw inline" =: rawInline "html" "marked text" =?> "marked text" , testGroup "links" [ "link with description" =: link "https://example.com" "" (str "Link 1") =?> "[[https://example.com][Link 1]]" , "link without description" =: link "https://example.com" "" (str "https://example.com") =?> "[[https://example.com]]" -- Internal links in Muse include '#' , "link to anchor" =: link "#intro" "" (str "Introduction") =?> "[[#intro][Introduction]]" -- According to Emacs Muse manual, links to images should be prefixed with "URL:" , "link to image with description" =: link "1.png" "" (str "Link to image") =?> "[[URL:1.png][Link to image]]" , "link to image without description" =: link "1.png" "" (str "1.png") =?> "[[URL:1.png]]" , testGroup "escape brackets in links" [ "link with description" =: link "https://example.com/foo].txt" "" (str "Description") =?> "[[https://example.com/foo%5D.txt][Description]]" , "link without description" =: link "https://example.com/foo].txt" "" (str "https://example.com/foo].txt") =?> "[[https://example.com/foo%5D.txt][https://example.com/foo].txt]]" , "image link with description" =: link "foo]bar.png" "" (str "Image link") =?> "[[URL:foo%5Dbar.png][Image link]]" , "image link without description" =: link "foo]bar.png" "" (str "foo]bar.png") =?> "[[URL:foo%5Dbar.png][foo]bar.png]]" ] ] , "image" =: image "image.png" "Image 1" (str "") =?> "[[image.png][Image 1]]" , "image with width" =: imageWith ("", [], [("width", "60%")]) "image.png" "Image" (str "") =?> "[[image.png 60][Image]]" , "left-aligned image with width" =: imageWith ("", ["align-left"], [("width", "60%")]) "image.png" "Image" (str "") =?> "[[image.png 60 l][Image]]" , "right-aligned image with width" =: imageWith ("", ["align-right"], [("width", "60%")]) "image.png" "Image" (str "") =?> "[[image.png 60 r][Image]]" , "escape brackets in image title" =: image "image.png" "Foo]bar" (str "") =?> "[[image.png][Foo]bar]]" , "note" =: note (plain "Foo") =?> unlines [ "[1]" , "" , "[1] Foo" ] , noteLocationTests , "span with class" =: spanWith ("",["foobar"],[]) "Some text" =?> "Some text" , "span without class" =: spanWith ("",[],[]) "Some text" =?> "Some text" , "span with anchor" =: spanWith ("anchor", [], []) mempty <> "Foo bar" =?> "#anchor Foo bar" , "empty span with anchor" =: spanWith ("anchor", [], []) mempty =?> "#anchor" , "empty span without class and anchor" =: spanWith ("", [], []) mempty =?> "" , "span with class and anchor" =: spanWith ("anchor", ["foo"], []) "bar" =?> "#anchor bar" , "adjacent spans" =: spanWith ("", ["syllable"], []) (str "wa") <> spanWith ("", ["syllable"], []) (str "ter") =?> "water" , testGroup "RTL" [ "RTL span" =: spanWith ("",[],[("dir", "rtl")]) (text "foo bar") =?> "<<>>" , "LTR span" =: spanWith ("",[],[("dir", "ltr")]) (text "foo bar") =?> ">>>foo bar<<<" , "RTL span with a class" =: spanWith ("",["foobar"],[("dir", "rtl")]) (text "foo bar") =?> "<<>>" , "LTR span with a class" =: spanWith ("",["foobar"],[("dir", "ltr")]) (text "foo bar") =?> ">>>foo bar<<<" , "Escape <<< and >>>" =: plain (text "<<< foo bar >>>") =?> "<<< foo bar >>>" ] , testGroup "combined" [ "emph word before" =: para ("foo" <> emph "bar") =?> "foobar" , "emph word after" =: para (emph "foo" <> "bar") =?> "foobar" , "emph quoted" =: para (doubleQuoted (emph "foo")) =?> "“*foo*”" , "strong word before" =: para ("foo" <> strong "bar") =?> "foobar" , "strong word after" =: para (strong "foo" <> "bar") =?> "foobar" , "strong quoted" =: para (singleQuoted (strong "foo")) =?> "‘**foo**’" ] ] ] pandoc-3.1.3/test/Tests/Writers/Native.hs0000644000000000000000000000117707346545000016463 0ustar0000000000000000module Tests.Writers.Native (tests) where import Data.Text (unpack) import Test.Tasty import Test.Tasty.QuickCheck import Tests.Helpers import Text.Pandoc import Text.Pandoc.Arbitrary () p_write_rt :: Pandoc -> Bool p_write_rt d = read (unpack $ purely (writeNative def{ writerTemplate = Just mempty }) d) == d p_write_blocks_rt :: [Block] -> Bool p_write_blocks_rt bs = read (unpack $ purely (writeNative def) (Pandoc nullMeta bs)) == bs tests :: [TestTree] tests = [ testProperty "p_write_rt" p_write_rt , testProperty "p_write_blocks_rt" $ mapSize (\x -> if x > 3 then 3 else x) p_write_blocks_rt ] pandoc-3.1.3/test/Tests/Writers/OOXML.hs0000644000000000000000000001743107346545000016133 0ustar0000000000000000{-# LANGUAGE PatternGuards #-} {-# LANGUAGE OverloadedStrings #-} module Tests.Writers.OOXML (ooxmlTest) where import Text.Pandoc hiding (Attr) import Test.Tasty import Test.Tasty.Golden.Advanced import Control.Applicative ((<|>)) import Codec.Archive.Zip import Text.XML.Light import qualified Data.ByteString as BS import qualified Data.ByteString.Lazy as BL import Data.Foldable (asum) import qualified Data.Text.IO as T import Data.List (isSuffixOf, sort, (\\), intercalate, union) import Data.Maybe (catMaybes, mapMaybe) import Tests.Helpers import Data.Algorithm.Diff import System.FilePath.Glob (compile, match) compareXML :: Content -> Content -> Maybe XMLDifference -- We make a special exception for times at the moment, and just pass -- them because we can't control the utctime when running IO. Besides, -- so long as we have two times, we're okay. compareXML (Elem goodElem) (Elem myElem) | (QName "created" _ (Just "dcterms")) <- elName myElem , (QName "created" _ (Just "dcterms")) <- elName goodElem = Nothing compareXML (Elem goodElem) (Elem myElem) | (QName "modified" _ (Just "dcterms")) <- elName myElem , (QName "modified" _ (Just "dcterms")) <- elName goodElem = Nothing compareXML (Elem goodElem) (Elem myElem) = (if elName myElem == elName goodElem then Nothing else Just (ElemNamesDiffer (Comparison {mine = elName myElem, good = elName goodElem})) ) <|> (if sort (elAttribs myElem) == sort (elAttribs goodElem) then Nothing else Just (ElemAttributesDiffer (Comparison { mine = sort (elAttribs myElem) , good = sort (elAttribs goodElem) }))) <|> asum (zipWith compareXML (elContent myElem) (elContent goodElem)) compareXML (Text goodCData) (Text myCData) = (if cdVerbatim myCData == cdVerbatim goodCData && cdData myCData == cdData goodCData then Nothing else Just (CDatasDiffer (Comparison { mine = myCData, good = goodCData }))) compareXML (CRef goodStr) (CRef myStr) = if myStr == goodStr then Nothing else Just (CRefsDiffer (Comparison { mine = myStr, good = goodStr })) compareXML g m = Just (OtherContentsDiffer (Comparison {mine = m, good = g})) data XMLDifference = ElemNamesDiffer (Comparison QName) | ElemAttributesDiffer (Comparison [Attr]) | CDatasDiffer (Comparison CData) | CRefsDiffer (Comparison String) | OtherContentsDiffer (Comparison Content) deriving (Show) data Comparison a = Comparison { good :: a, mine :: a } deriving (Show) displayDiff :: Element -> Element -> String displayDiff elemA elemB = showDiff (1,1) (getDiff (lines $ ppElement elemA) (lines $ ppElement elemB)) goldenArchive :: FilePath -> IO Archive goldenArchive fp = toArchive . BL.fromStrict <$> BS.readFile fp testArchive :: (WriterOptions -> Pandoc -> PandocIO BL.ByteString) -> WriterOptions -> FilePath -> IO Archive testArchive writerFn opts fp = do txt <- T.readFile fp bs <- runIOorExplode $ do setTranslations "en-US" setVerbosity ERROR -- otherwise test output is confusingly noisy readNative def txt >>= writerFn opts return $ toArchive bs compareFileList :: FilePath -> Archive -> Archive -> Maybe String compareFileList goldenFP goldenArch testArch = let testFiles = filesInArchive testArch goldenFiles = filesInArchive goldenArch diffTestGolden = testFiles \\ goldenFiles diffGoldenTest = goldenFiles \\ testFiles results = [ if null diffGoldenTest then Nothing else Just $ "Files in " ++ goldenFP ++ " but not in generated archive:\n" ++ intercalate ", " diffGoldenTest , if null diffTestGolden then Nothing else Just $ "Files in generated archive but not in " ++ goldenFP ++ ":\n" ++ intercalate ", " diffTestGolden ] in if null $ catMaybes results then Nothing else Just $ intercalate "\n" $ catMaybes results compareXMLFile' :: FilePath -> Archive -> Archive -> Either String () compareXMLFile' fp goldenArch testArch = do testEntry <- case findEntryByPath fp testArch of Just entry -> Right entry Nothing -> Left $ "Can't extract " ++ fp ++ " from generated archive" testXMLDoc <- case parseXMLDoc $ fromEntry testEntry of Just doc -> Right doc Nothing -> Left $ "Can't parse xml in " ++ fp ++ " from generated archive" goldenEntry <- case findEntryByPath fp goldenArch of Just entry -> Right entry Nothing -> Left $ "Can't extract " ++ fp ++ " from archive in stored file" goldenXMLDoc <- case parseXMLDoc $ fromEntry goldenEntry of Just doc -> Right doc Nothing -> Left $ "Can't parse xml in " ++ fp ++ " from archive in stored file" let testContent = Elem testXMLDoc goldenContent = Elem goldenXMLDoc display difference = "Non-matching xml in " ++ fp ++ ":\n" ++ "* " ++ show difference ++ "\n" ++ displayDiff testXMLDoc goldenXMLDoc maybe (Right ()) (Left . display) (compareXML goldenContent testContent) compareXMLFile :: FilePath -> Archive -> Archive -> Maybe String compareXMLFile fp goldenArch testArch = case compareXMLFile' fp goldenArch testArch of Right _ -> Nothing Left s -> Just s compareAllXMLFiles :: Archive -> Archive -> Maybe String compareAllXMLFiles goldenArch testArch = let allFiles = filesInArchive goldenArch `union` filesInArchive testArch allXMLFiles = sort $ filter (\fp -> ".xml" `isSuffixOf` fp || ".rels" `isSuffixOf` fp) allFiles results = mapMaybe (\fp -> compareXMLFile fp goldenArch testArch) allXMLFiles in if null results then Nothing else Just $ unlines results compareMediaFile' :: FilePath -> Archive -> Archive -> Either String () compareMediaFile' fp goldenArch testArch = do testEntry <- case findEntryByPath fp testArch of Just entry -> Right entry Nothing -> Left $ "Can't extract " ++ fp ++ " from generated archive" goldenEntry <- case findEntryByPath fp goldenArch of Just entry -> Right entry Nothing -> Left $ "Can't extract " ++ fp ++ " from archive in stored file" if fromEntry testEntry == fromEntry goldenEntry then Right () else Left $ "Non-matching binary file: " ++ fp compareMediaFile :: FilePath -> Archive -> Archive -> Maybe String compareMediaFile fp goldenArch testArch = case compareMediaFile' fp goldenArch testArch of Right _ -> Nothing Left s -> Just s compareAllMediaFiles :: Archive -> Archive -> Maybe String compareAllMediaFiles goldenArch testArch = let allFiles = filesInArchive goldenArch `union` filesInArchive testArch mediaPattern = compile "*/media/*" allMediaFiles = sort $ filter (match mediaPattern) allFiles results = mapMaybe (\fp -> compareMediaFile fp goldenArch testArch) allMediaFiles in if null results then Nothing else Just $ unlines results ooxmlTest :: (WriterOptions -> Pandoc -> PandocIO BL.ByteString) -> String -> WriterOptions -> FilePath -> FilePath -> TestTree ooxmlTest writerFn testName opts nativeFP goldenFP = goldenTest testName (goldenArchive goldenFP) (testArchive writerFn opts nativeFP) (\goldenArch testArch -> let res = catMaybes [ compareFileList goldenFP goldenArch testArch , compareAllXMLFiles goldenArch testArch , compareAllMediaFiles goldenArch testArch ] in return $ if null res then Nothing else Just $ unlines res) (\a -> BL.writeFile goldenFP $ fromArchive a) pandoc-3.1.3/test/Tests/Writers/Org.hs0000644000000000000000000000427007346545000015761 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} module Tests.Writers.Org (tests) where import Data.Text as T import Test.Tasty import Test.Tasty.HUnit (HasCallStack) import Tests.Helpers import Text.Pandoc import Text.Pandoc.Arbitrary () import Text.Pandoc.Builder infix 4 =: (=:) :: (ToString a, ToPandoc a, HasCallStack) => String -> (a, Text) -> TestTree (=:) = test org defopts :: WriterOptions defopts = def { writerExtensions = getDefaultExtensions "org" } org :: (ToPandoc a) => a -> Text org = orgWithOpts defopts orgWithOpts :: (ToPandoc a) => WriterOptions -> a -> Text orgWithOpts opts x = purely (writeOrg opts) $ toPandoc x tests :: [TestTree] tests = [ testGroup "links" -- See http://orgmode.org/manual/Internal-links.html#Internal-links [ "simple link" =: link "/url" "" "foo" =?> "[[/url][foo]]" , "internal link to anchor" =: link "#my-custom-id" "" "#my-custom-id" =?> "[[#my-custom-id]]" ] , testGroup "lists" [ "bullet task list" =: bulletList [plain "☐ a", plain "☒ b"] =?> T.unlines [ "- [ ] a" , "- [X] b" ] , "ordered task list" =: orderedList [plain ("☐" <> space <> "a"), plain "☒ b"] =?> T.unlines [ "1. [ ] a" , "2. [X] b" ] , "ordered task list with starting number" =: orderedListWith (9, DefaultStyle, DefaultDelim) [plain ("☐" <> space <> "a"), plain "☒ b"] =?> T.unlines [ "9. [@9] [ ] a" , "10. [X] b" ] , test (orgWithOpts def) "bullet without task_lists" $ bulletList [plain "☐ a", plain "☒ b"] =?> T.unlines [ "- ☐ a" , "- ☒ b" ] ] , testGroup "code blocks" [ "identifier" =: codeBlockWith ("abc", ["python"], []) "return True" =?> T.unlines [ "#+name: abc" , "#+begin_src python" , "return True" , "#+end_src" ] , "attributes" =: codeBlockWith ("", ["python"], [("cache", "yes"), ("noweb", "yes")]) "'Hello'" =?> T.unlines [ "#+begin_src python :cache yes :noweb yes" , "'Hello'" , "#+end_src" ] ] ] pandoc-3.1.3/test/Tests/Writers/Plain.hs0000644000000000000000000000120207346545000016265 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} module Tests.Writers.Plain (tests) where import Test.Tasty import Test.Tasty.HUnit (HasCallStack) import Tests.Helpers import Text.Pandoc import Text.Pandoc.Arbitrary () import Text.Pandoc.Builder infix 4 =: (=:) :: (ToString a, ToPandoc a, HasCallStack) => String -> (a, String) -> TestTree (=:) = test (purely (writePlain def{ writerExtensions = enableExtension Ext_gutenberg plainExtensions }) . toPandoc) tests :: [TestTree] tests = [ "strongly emphasized text to uppercase" =: strong "Straße" =?> "STRASSE" ] pandoc-3.1.3/test/Tests/Writers/Powerpoint.hs0000644000000000000000000002351507346545000017403 0ustar0000000000000000module Tests.Writers.Powerpoint (tests) where import Control.Arrow ((***)) import Tests.Writers.OOXML (ooxmlTest) import Text.Pandoc import Test.Tasty import System.FilePath import Text.DocTemplates (ToContext(toVal), Context(..)) import qualified Data.Map as M import Data.Text (pack) -- templating is important enough, and can break enough things, that -- we want to run all our tests with both default formatting and a -- template. modifyPptxName :: FilePath -> String -> FilePath modifyPptxName fp suffix = addExtension (takeDirectory fp ++ suffix) "pptx" pptxTests :: String -> WriterOptions -> FilePath -> FilePath -> (TestTree, TestTree) pptxTests name opts native pptx = let referenceDoc = "pptx/reference-depth.pptx" in ( ooxmlTest writePowerpoint name opts{writerReferenceDoc=Nothing} native pptx , ooxmlTest writePowerpoint name opts{writerReferenceDoc=Just referenceDoc} native (modifyPptxName pptx "/templated") ) groupPptxTests :: [(TestTree, TestTree)] -> [TestTree] groupPptxTests pairs = let (noRefs, refs) = unzip pairs in [ testGroup "Default slide formatting" noRefs , testGroup "With `--reference-doc` pptx file" refs ] testGroup' :: String -> [(TestTree, TestTree)] -> (TestTree, TestTree) testGroup' descr = (testGroup descr *** testGroup descr) . unzip tests :: [TestTree] tests = let regularTests = groupPptxTests [ pptxTests "Inline formatting" def "pptx/inline-formatting/input.native" "pptx/inline-formatting/output.pptx" , pptxTests "Slide breaks (default slide-level)" def "pptx/slide-breaks/input.native" "pptx/slide-breaks/output.pptx" , pptxTests "slide breaks (slide-level set to 1)" def{ writerSlideLevel = Just 1 } "pptx/slide-breaks/input.native" "pptx/slide-breaks-slide-level-1/output.pptx" , pptxTests "lists" def "pptx/lists/input.native" "pptx/lists/output.pptx" , pptxTests "start ordered list at specified num" def "pptx/start-numbering-at/input.native" "pptx/start-numbering-at/output.pptx" , pptxTests "List continuation paragraph indentation" def "pptx/list-level/input.native" "pptx/list-level/output.pptx" , pptxTests "tables" def "pptx/tables/input.native" "pptx/tables/output.pptx" , pptxTests "table of contents" def{ writerTableOfContents = True } "pptx/slide-breaks/input.native" "pptx/slide-breaks-toc/output.pptx" , pptxTests "end notes" def "pptx/endnotes/input.native" "pptx/endnotes/output.pptx" , pptxTests "end notes, with table of contents" def { writerTableOfContents = True } "pptx/endnotes/input.native" "pptx/endnotes-toc/output.pptx" , pptxTests "images" def "pptx/images/input.native" "pptx/images/output.pptx" , pptxTests "two-column layout" def "pptx/two-column/all-text/input.native" "pptx/two-column/all-text/output.pptx" , pptxTests "two-column (not comparison)" def "pptx/two-column/text-and-image/input.native" "pptx/two-column/text-and-image/output.pptx" , pptxTests "speaker notes" def "pptx/speaker-notes/input.native" "pptx/speaker-notes/output.pptx" , pptxTests "speaker notes after a separating block" def "pptx/speaker-notes-afterseps/input.native" "pptx/speaker-notes-afterseps/output.pptx" , pptxTests "speaker notes after a separating header" def "pptx/speaker-notes-afterheader/input.native" "pptx/speaker-notes-afterheader/output.pptx" , pptxTests "speaker notes after metadata" def "pptx/speaker-notes-after-metadata/input.native" "pptx/speaker-notes-after-metadata/output.pptx" , pptxTests "remove empty slides" def "pptx/remove-empty-slides/input.native" "pptx/remove-empty-slides/output.pptx" , pptxTests "raw ooxml" def "pptx/raw-ooxml/input.native" "pptx/raw-ooxml/output.pptx" , pptxTests "metadata, custom properties" def "pptx/document-properties/input.native" "pptx/document-properties/output.pptx" , pptxTests "metadata, short description" def "pptx/document-properties-short-desc/input.native" "pptx/document-properties-short-desc/output.pptx" , pptxTests "inline code and code blocks" def "pptx/code/input.native" "pptx/code/output.pptx" , pptxTests "inline code and code blocks, custom formatting" def { writerVariables = Context $ M.fromList [(pack "monofont", toVal $ pack "Consolas")] } "pptx/code/input.native" "pptx/code-custom/output.pptx" , testGroup' "Using slide level 0, if the first thing on a slide is" [ pptxTests ("a h1 it's used as the slide title") def { writerSlideLevel = Just 0 } "pptx/slide-level-0/h1-with-image/input.native" "pptx/slide-level-0/h1-with-image/output.pptx" , pptxTests ("a h2 it's used as the " <> "slide title") def { writerSlideLevel = Just 0 } "pptx/slide-level-0/h2-with-image/input.native" "pptx/slide-level-0/h2-with-image/output.pptx" , testGroup' "a heading it's used as the slide title" [ pptxTests "(works with a table)" def { writerSlideLevel = Just 0 } "pptx/slide-level-0/h1-with-table/input.native" "pptx/slide-level-0/h1-with-table/output.pptx" , pptxTests ("(content with caption layout)") def { writerSlideLevel = Just 0 } "pptx/slide-level-0/h1-h2-with-table/input.native" "pptx/slide-level-0/h1-h2-with-table/output.pptx" ] ] , testGroup' "comparison layout" [ testGroup' "comparison layout is used..." [ pptxTests "when two columns contain text + non-text" def "pptx/comparison/both-columns/input.native" "pptx/comparison/both-columns/output.pptx" , pptxTests "even when only one col contains text + non-text" def "pptx/comparison/one-column/input.native" "pptx/comparison/one-column/output.pptx" ] , testGroup' "extra ... in one column gets overlaid" [ pptxTests "text" def "pptx/comparison/extra-text/input.native" "pptx/comparison/extra-text/output.pptx" , pptxTests "image" def "pptx/comparison/extra-image/input.native" "pptx/comparison/extra-image/output.pptx" ] , pptxTests "is not used if the non-text comes first" def "pptx/comparison/non-text-first/input.native" "pptx/comparison/non-text-first/output.pptx" ] , testGroup' "Content with Caption layout is ..." [ pptxTests "used for heading, text, image on the same slide" def "pptx/content-with-caption/heading-text-image/input.native" "pptx/content-with-caption/heading-text-image/output.pptx" , pptxTests "used for text and an image on the same slide" def "pptx/content-with-caption/text-image/input.native" "pptx/content-with-caption/text-image/output.pptx" , pptxTests "not used if the image comes first" def "pptx/content-with-caption/image-text/input.native" "pptx/content-with-caption/image-text/output.pptx" ] , testGroup' "The Blank layout is used if a slide contains only..." [ pptxTests "speaker notes" def "pptx/blanks/just-speaker-notes/input.native" "pptx/blanks/just-speaker-notes/output.pptx" , pptxTests "an empty heading with a body of only NBSPs" def "pptx/blanks/nbsp-in-body/input.native" "pptx/blanks/nbsp-in-body/output.pptx" , pptxTests "a heading containing only non-breaking spaces" def "pptx/blanks/nbsp-in-heading/input.native" "pptx/blanks/nbsp-in-heading/output.pptx" ] , pptxTests ("Incremental lists are supported") def { writerIncremental = True } "pptx/incremental-lists/with-flag/input.native" "pptx/incremental-lists/with-flag/output.pptx" , pptxTests ("One-off incremental lists are supported") def "pptx/incremental-lists/without-flag/input.native" "pptx/incremental-lists/without-flag/output.pptx" , pptxTests "Background images" def "pptx/background-image/input.native" "pptx/background-image/output.pptx" ] referenceSpecificTests = [ ooxmlTest writePowerpoint "Basic footer" def { writerReferenceDoc = Just "pptx/footer/basic/reference.pptx"} "pptx/footer/input.native" "pptx/footer/basic/output.pptx" , ooxmlTest writePowerpoint "Footer with fixed date, replaced by meta block date" def { writerReferenceDoc = Just "pptx/footer/fixed-date/reference.pptx"} "pptx/footer/input.native" "pptx/footer/fixed-date/output.pptx" , ooxmlTest writePowerpoint "Footer not shown on title slide" def { writerReferenceDoc = Just "pptx/footer/no-title-slide/reference.pptx"} "pptx/footer/input.native" "pptx/footer/no-title-slide/output.pptx" , ooxmlTest writePowerpoint "Footer with slide number starting from 3" def { writerReferenceDoc = Just "pptx/footer/higher-slide-number/reference.pptx"} "pptx/footer/input.native" "pptx/footer/higher-slide-number/output.pptx" , ooxmlTest writePowerpoint "Layouts can be moved around in reference doc" def {writerReferenceDoc = Just "pptx/reference-moved-layouts.pptx"} "pptx/layouts/input.native" "pptx/layouts/moved.pptx" , ooxmlTest writePowerpoint "Layouts can be missing from the reference doc" def {writerReferenceDoc = Just "pptx/reference-deleted-layouts.pptx"} "pptx/layouts/input.native" "pptx/layouts/deleted.pptx" ] in regularTests <> referenceSpecificTests pandoc-3.1.3/test/Tests/Writers/RST.hs0000644000000000000000000001520607346545000015703 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} module Tests.Writers.RST (tests) where import Control.Monad.Identity import Test.Tasty import Test.Tasty.HUnit import Tests.Helpers import Text.Pandoc import Text.Pandoc.Arbitrary () import Text.Pandoc.Builder import Text.Pandoc.Writers.RST import qualified Data.Text as T infix 4 =: (=:) :: (ToString a, ToPandoc a, HasCallStack) => String -> (a, String) -> TestTree (=:) = test (purely (writeRST def . toPandoc)) testTemplate :: (ToString a, ToString c, ToPandoc a) => String -> String -> (a, c) -> TestTree testTemplate t = case runIdentity (compileTemplate [] (T.pack t)) of Left e -> error $ "Could not compile RST template: " ++ e Right templ -> test (purely (writeRST def{ writerTemplate = Just templ }) . toPandoc) bodyTemplate :: Template T.Text bodyTemplate = case runIdentity (compileTemplate [] "$body$\n") of Left e -> error $ "Could not compile RST bodyTemplate" ++ e Right templ -> templ tests :: [TestTree] tests = [ testGroup "rubrics" [ "in list item" =: bulletList [header 2 (text "foo")] =?> "- .. rubric:: foo" , "in definition list item" =: definitionList [(text "foo", [header 2 (text "bar"), para $ text "baz"])] =?> unlines [ "foo" , " .. rubric:: bar" , "" , " baz"] , "in block quote" =: blockQuote (header 1 (text "bar")) =?> " .. rubric:: bar" , "with id" =: blockQuote (headerWith ("foo",[],[]) 1 (text "bar")) =?> unlines [ " .. rubric:: bar" , " :name: foo"] , "with id class" =: blockQuote (headerWith ("foo",["baz"],[]) 1 (text "bar")) =?> unlines [ " .. rubric:: bar" , " :name: foo" , " :class: baz"] ] , testGroup "ligatures" -- handling specific sequences of blocks [ "a list is closed by a comment before a quote" =: -- issue 4248 bulletList [plain "bulleted"] <> blockQuote (plain "quoted") =?> unlines [ "- bulleted" , "" , ".." , "" , " quoted"] ] , testGroup "flatten" [ testCase "emerges nested styles as expected" $ flatten (Emph [Str "1", Strong [Str "2"], Str "3"]) @?= [Emph [Str "1"], Strong [Str "2"], Emph [Str "3"]] , testCase "could introduce trailing spaces" $ flatten (Emph [Str "f", Space, Strong [Str "2"]]) @?= [Emph [Str "f", Space], Strong [Str "2"]] -- the test above is the reason why we call -- stripLeadingTrailingSpace through transformNested after -- flatten , testCase "preserves empty parents" $ flatten (Image ("",[],[]) [] ("loc","title")) @?= [Image ("",[],[]) [] ("loc","title")] ] , testGroup "inlines" [ "are removed when empty" =: -- #4434 plain (strong (str "")) =?> "" , "do not cause the introduction of extra spaces when removed" =: plain (strong (str "") <> emph (str "text")) =?> "*text*" , "spaces are stripped at beginning and end" =: -- pandoc issue 4327 "The text within inline markup may not -- begin or end with whitespace" -- http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#inline-markup strong (space <> str "text" <> space <> space) =?> "**text**" , "single space stripped" =: strong space =?> "" , "give priority to strong style over emphasis" =: strong (emph (strong (str "s"))) =?> "**s**" , "links are not elided by outer style" =: strong (emph (link "loc" "" (str "text"))) =?> "`text `__" , "RST inlines cannot start nor end with spaces" =: emph (str "f" <> strong (space <> str "d" <> space) <> str "l") =?> "*f* **d** *l*" , "keeps quotes" =: strong (str "f" <> doubleQuoted (str "d") <> str "l") =?> "**f“d”l**" , "backslash inserted between str and code" =: str "/api?query=" <> code "foo" =?> "/api?query=\\ ``foo``" ] , testGroup "headings" [ "normal heading" =: header 1 (text "foo") =?> unlines [ "foo" , "==="] -- note: heading normalization is only done in standalone mode , test (purely (writeRST def{ writerTemplate = Just bodyTemplate }) . toPandoc) "heading levels" $ header 1 (text "Header 1") <> header 3 (text "Header 2") <> header 2 (text "Header 2") <> header 1 (text "Header 1") <> header 4 (text "Header 2") <> header 5 (text "Header 3") <> header 3 (text "Header 2") =?> unlines [ "Header 1" , "========" , "" , "Header 2" , "--------" , "" , "Header 2" , "--------" , "" , "Header 1" , "========" , "" , "Header 2" , "--------" , "" , "Header 3" , "~~~~~~~~" , "" , "Header 2" , "--------"] , test (purely (writeRST def{ writerTemplate = Just bodyTemplate }) . toPandoc) "minimal heading levels" $ header 2 (text "Header 1") <> header 3 (text "Header 2") <> header 2 (text "Header 1") <> header 4 (text "Header 2") <> header 5 (text "Header 3") <> header 3 (text "Header 2") =?> unlines [ "Header 1" , "========" , "" , "Header 2" , "--------" , "" , "Header 1" , "========" , "" , "Header 2" , "--------" , "" , "Header 3" , "~~~~~~~~" , "" , "Header 2" , "--------"] ] , testTemplate "$subtitle$\n" "subtitle" $ setMeta "subtitle" ("subtitle" :: Inlines) (doc $ plain "") =?> ("subtitle" :: String) ] pandoc-3.1.3/test/Tests/Writers/TEI.hs0000644000000000000000000000253007346545000015650 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} module Tests.Writers.TEI (tests) where import Test.Tasty import Test.Tasty.HUnit (HasCallStack) import Tests.Helpers import Text.Pandoc import Text.Pandoc.Arbitrary () import Text.Pandoc.Builder {- "my test" =: X =?> Y is shorthand for test html "my test" $ X =?> Y which is in turn shorthand for test html "my test" (X,Y) -} infix 4 =: (=:) :: (ToString a, ToPandoc a, HasCallStack) => String -> (a, String) -> TestTree (=:) = test (purely (writeTEI def) . toPandoc) tests :: [TestTree] tests = [ testGroup "block elements" ["para" =: para "Lorem ipsum cetera." =?> "

    Lorem ipsum cetera.

    " ] , testGroup "inlines" [ "Emphasis" =: emph "emphasized" =?> "

    emphasized

    " ,"SingleQuoted" =: singleQuoted (text "quoted material") =?> "

    quoted material

    " ,"DoubleQuoted" =: doubleQuoted (text "quoted material") =?> "

    quoted material

    " ,"NestedQuoted" =: doubleQuoted (singleQuoted (text "quoted material")) =?> "

    quoted material

    " ] ] pandoc-3.1.3/test/0000755000000000000000000000000007346545000012132 5ustar0000000000000000pandoc-3.1.3/test/bodybg.gif0000644000000000000000000002360707346545000014077 0ustar0000000000000000GIF89aN絽ֽ!,N!u@BlM|?) Bc(, Fo1DEe,pmg٢pڈԸ< (8 e= qXdK Pq<8k:a D9U3 G  ;W[hQ[ L H5 2"A0g#p~T+uABU*4QmWJ`P2PUB t 恭tIJm!P:h( |!u nE Y$PLB,&^ C[b0KvsLP$ ԙ, x³(c- + f OR4ZC 7%# \ ;]?Z Cp6h,8X@7BUF-J@pFgyr_8`@Yh6Ɂbts%!QZP!uUw&H XBb Hw`aS,eF|@|< u%`2VNx@ژJU%T$M^;Ҁ<d$!^" p!{UsїbLg7p04X #SVksEA5CAd 玐**3haߎ4< E9X9{04C)މ{@,g#4o+'cp眫Z\M#@ 8L)o@^<YA~ N(7qfh(3B\a)ihƠ0@X(>$Qy)@"YL {4(Icɣg0.BQJC.!B%8 G?a FP^Tc e$WY5\8B9Ⳗdry#f E&dp Tk02o47q9m,4A_Q ![3PBkHF/ ~*@a:+9u?BFcŒ znB#RX"$ x8h|M8Ih^hTEbXmrBjl Hp`&Low`VGT@preXf[6@C$-42x'%ɐ\KQ4PX`n>|#^8t3/pB8[`X=T- =mF)z13NpAJkh!y8U&C+,C# `Plc!Lh6(=(J wڃ] 6g[DvY~롙 zTt0)O(UVix~6fzLC#P@ h7rʛr8uޭZ3am3ƍ) qDErg P;JB"@ɑ#ۦj0 +Cr(#R֐l$/P eY9;.}0FЙ[:/ Xl$X'p`8Qsp$l(\B [uVwzBfAs;8S%$:p 7C$ȿ\9f0m0 \jmDV-GzmrUtR<P:0:J mƼN1ރ `5P]~re"1~OM 3@"À u(JJ9P RSCRFsF` 4#4qA| PU9%# ԭ]*OֿB(C:z1NW <l$uauYC 0"j) u@ujϯģuZ([B1;@D4PD`  L2Z^ cf Fa'J3GP0ju<ǖPApP-G3?VBN,(t4yّmyzw1krݼM~ o:*uZ\g$0 M}zŭ}6gx鍹@1AGb.i.[pX. F1'v)*2DCF( &hf;ELJAv09#OT?jęH~l "pWQ)#^ !2¤U~. L%+ >Iu+LGAx{ُ#N!HnFp 0L[ʃ+AcY(KdH)Q ]Ao$%HyQaMVj tJ;cz QG(lT~_ MsH A$Do[|ohj`z1Z!~K J0a Z / 8D;4.?C !Sq[(I[ `">hm h 4RgY&L岙<(&m3eRH`)jb`tD`> qh DEaP @@|$P00H%$)PT$%,Ply~,Q-A8P=<)M-,yBXX5B@,,4r%QPp&v{R%Ԫ94<0@ شD$JT҆" Wes \8 vp; <*Hd5CÃզ4L>r@fΙy:Da*$g+0G n<vj&Pxv. J;z3pp zY0V+m>p-1Tʃ$Qع.߼ iv@&J;\l8P_!LnCR83 r{84l_= \}X@IA7l1"VJ<ޒOV? M5L[xKih?3n e m5ې3 C{GFژgd݃G.B+N^=xgќ z .Oq4ؾ/*Ңҭ]n|&xfg!;ɳHCOӻam] hmF30 㯠 vdG$/߫Dcȧ8oy , ;] l44zB#BD>]J8aFD;%B rHm5 ܠ/ѲWd$pU8EhxkPC]V >zTPKZ`$H 0%%eB頀*(٨Bl'3 j2IƈF]rXe(,- /r0n&z$&sH(Zgf 00L6@^f8P-m'ic_(cUf`d3J"i+(R]d  (ʤ VHK w+D ,X2lԧr3FsbXa+ ZD 5 9s*FgU>ؕ'R&)OcZ`VD\M4p'R*D"HnD3ֶnFe)in  `0\ui0s*:vaaDz4oT Z ņ`Y%WwB0v5HH  &a<)RrBx%"a*h.E 7αi@[ e7@rH>iz S*!RLQ l3$ 5%#9P[8/`n}~gOTE۠e" )atDĐpY@4PRi/KYh9FF@?TRڀFCaNN]v)}T  4.P~uA(_[vuh,Լ@U<dN؁G m&`_˷f9Ճ{y^!.ۜqe8,T7REō|&,5=YZXB`C48(X~ED `C^ D`t 7 bcY `PpAi|C)' 8(!Z3m`Ef[5a2 A] ufCf>L '" JP,z &$9pOu$"P񕔴G"UDb(ً̢qI -a !%(rb)>i>@,>#+ :E/fI)`h" ![c~.^F:I`<^m":^c11_N z=b>7y0$$e#"!E睢Vf$ɣz]mfZUPh2 wӽWej'M)L]s*}~RNP}'q%c-mڌ'"|.h~Vd0 ԧ>m8焖<\_'vΰh(]P [g-\u5a(2'e(3f (Y7h >ߎeV wf(B v v ܭYY(0X+5 6'A]]OliNQb6 m_¡(qU&>Vd_hƩi+t6"8VqcDʌ2ԜY1JF<@>]NL6+dD֌f(Ky<&7Yb)Pݤ՟9"-g[X(bfR d$<\He>LVah~?:,'|-#[E7i ebGYJl>`2Q}k (O)֙PRW!~e(a֞ î΋db\V)r=S$)µ NKEHl]aݵfTr^f=Z-iv!ōӣ$-Zkǒ&n[(F[вJ-n`4j*KR[:b&[!ł`n1֝&:d!1f\- -6˨2"B\^Bw*( c zG/ܪbY6 Qo͹R*V],$}Ʌa¡ѥ^ hwT/f҂9PL/(pUOlZN0-yX O=^́p:%1Pff\eڠf"b bިMnGs%X܂%H0[*f c`5 O.p+\Qo ZRZdO$$K.e8$%U()';pandoc-3.1.3/test/command/0000755000000000000000000000000007346545000013550 5ustar0000000000000000pandoc-3.1.3/test/command/01.csv0000644000000000000000000000005707346545000014507 0ustar0000000000000000"Column1";"Column2" "Data1";"- data1 - data2" pandoc-3.1.3/test/command/1126.md0000644000000000000000000000063707346545000014471 0ustar0000000000000000``` % pandoc -f html -t latex \begin{eqnarray} A&=&B,\\ C&=&D \end{eqnarray} ^D \textbackslash begin\{eqnarray\} A\&=\&B,\textbackslash\textbackslash{} C\&=\&D \textbackslash end\{eqnarray\} ``` ``` % pandoc -f html+raw_tex -t latex

    See \eqref{myeq}.

    \begin{eqnarray} A&=&B,\\ C&=&D \\label{myeq} \end{eqnarray} ^D See \eqref{myeq}. \begin{eqnarray} A&=&B,\\ C&=&D \\label{myeq} \end{eqnarray} ``` pandoc-3.1.3/test/command/1166.md0000644000000000000000000000163407346545000014473 0ustar0000000000000000See #1166 and . ``` % pandoc -f rst -t html5 ===== ===== col 1 col 2 ===== ===== 1 Second column of row 1. 2 Second column of row 2. Second line of paragraph. 3 - Second column of row 3. - Second item in bullet list (row 3, column 2). \ Row 4; column 1 will be empty. ===== ===== ^D
    col 1 col 2
    1 Second column of row 1.

    2

    Second column of row 2. Second line of paragraph.

    3

    • Second column of row 3.
    • Second item in bullet list (row 3, column 2).
    Row 4; column 1 will be empty.
    ``` pandoc-3.1.3/test/command/1279.md0000644000000000000000000000032607346545000014475 0ustar0000000000000000``` % pandoc -s -t markdown --- author: 'John Doe[^1]' date: 2014 title: My Article --- [^1]: Dept. of This and That ^D --- author: John Doe[^1] date: 2014 title: My Article --- [^1]: Dept. of This and That ``` pandoc-3.1.3/test/command/1390.md0000644000000000000000000000055607346545000014474 0ustar0000000000000000``` % pandoc -f latex -t native \newcommand\foo{+} Testing: $\mu\foo\eta$. ^D [ Para [ Str "Testing:" , Space , Math InlineMath "\\mu+\\eta" , Str "." ] ] ``` pandoc-3.1.3/test/command/1592.md0000644000000000000000000000305007346545000014470 0ustar0000000000000000``` % pandoc -t native [hi]{.smallcaps} ^D [ Para [ SmallCaps [ Str "hi" ] ] ] ``` ``` % pandoc -t native [hi]{style="font-variant: small-caps;"} ^D [ Para [ SmallCaps [ Str "hi" ] ] ] ``` ``` % pandoc -t native hi ^D [ Para [ SmallCaps [ Str "hi" ] ] ] ``` ``` % pandoc -f html -t native

    hi

    ^D [ Para [ SmallCaps [ Str "hi" ] ] ] ``` ``` % pandoc -f html -t native

    hi

    ^D [ Para [ SmallCaps [ Str "hi" ] ] ] ``` ``` % pandoc -f native -t html [Para [SmallCaps [Str "hi"]]] ^D

    hi

    ``` ``` % pandoc -f native -t markdown [Para [SmallCaps [Str "hi"]]] ^D [hi]{.smallcaps} ``` ``` % pandoc -f html -t native foo ^D [ Plain [ Span ( "" , [] , [ ( "dir" , "ltr" ) ] ) [ Str "foo" ] ] ] ``` ``` % pandoc -f html -t native foobarbaz ^D [ Plain [ Span ( "" , [] , [ ( "dir" , "rtl" ) ] ) [ Str "foo" , Span ( "" , [] , [ ( "dir" , "ltr" ) ] ) [ Str "bar" ] , Str "baz" ] ] ] ``` ``` % pandoc -f html -t native

    This text will go right to left.

    ^D [ Para [ Span ( "" , [] , [ ( "dir" , "rtl" ) ] ) [ Str "This" , Space , Str "text" , Space , Str "will" , Space , Str "go" , Space , Str "right" , SoftBreak , Str "to" , Space , Str "left." ] ] ] ``` pandoc-3.1.3/test/command/1608.md0000644000000000000000000001107307346545000014472 0ustar0000000000000000``` % pandoc -f latex -t native \newtheorem{theorem}{Theorem} \newtheorem{corollary}[theorem]{Corollary} \newtheorem{lemma}[theorem]{Lemma} \theoremstyle{definition} \newtheorem{definition}[theorem]{Definition} \theoremstyle{remark} \newtheorem{remark}{Remark} \begin{definition}[right-angled triangles] \label{def:tri} A \emph{right-angled triangle} is a triangle whose sides of length~\(a\), \(b\) and~\(c\), in some permutation of order, satisfies \(a^2+b^2=c^2\). \end{definition} \begin{lemma} The triangle with sides of length~\(3\), \(4\) and~\(5\) is right-angled. \end{lemma} \begin{proof} This lemma follows from \cref{def:tri} since \(3^2+4^2=9+16=25=5^2\). \end{proof} \begin{theorem}[Pythagorean triplets] \label{thm:py} Triangles with sides of length \(a=p^2-q^2\), \(b=2pq\) and \(c=p^2+q^2\) are right-angled triangles. \end{theorem} \begin{remark} These are all pretty interesting facts. \end{remark} ^D [ Div ( "def:tri" , [ "definition" ] , [] ) [ Para [ Strong [ Str "Definition" , Space , Str "1" ] , Space , Str "(right-angled" , Space , Str "triangles)." , Space , Space , Str "A" , Space , Emph [ Str "right-angled" , Space , Str "triangle" ] , Space , Str "is" , Space , Str "a" , Space , Str "triangle" , Space , Str "whose" , Space , Str "sides" , Space , Str "of" , Space , Str "length\160" , Math InlineMath "a" , Str "," , Space , Math InlineMath "b" , Space , Str "and\160" , Math InlineMath "c" , Str "," , Space , Str "in" , Space , Str "some" , Space , Str "permutation" , Space , Str "of" , Space , Str "order," , Space , Str "satisfies" , Space , Math InlineMath "a^2+b^2=c^2" , Str "." ] ] , Div ( "" , [ "lemma" ] , [] ) [ Para [ Strong [ Str "Lemma" , Space , Str "2" ] , Str "." , Space , Space , Emph [ Str "The" , Space , Str "triangle" , Space , Str "with" , Space , Str "sides" , Space , Str "of" , Space , Str "length\160" , Math InlineMath "3" , Str "," , Space , Math InlineMath "4" , Space , Str "and\160" , Math InlineMath "5" , Space , Str "is" , Space , Str "right-angled." ] ] ] , Div ( "" , [ "proof" ] , [] ) [ Para [ Emph [ Str "Proof." ] , Space , Str "This" , Space , Str "lemma" , Space , Str "follows" , Space , Str "from" , Space , Link ( "" , [] , [ ( "reference-type" , "ref" ) , ( "reference" , "def:tri" ) ] ) [ Str "1" ] ( "#def:tri" , "" ) , Space , Str "since" , Space , Math InlineMath "3^2+4^2=9+16=25=5^2" , Str "." , Str "\160\9723" ] ] , Div ( "thm:py" , [ "theorem" ] , [] ) [ Para [ Strong [ Str "Theorem" , Space , Str "3" ] , Space , Str "(Pythagorean" , Space , Str "triplets)." , Space , Space , Emph [ Str "Triangles" , Space , Str "with" , Space , Str "sides" , Space , Str "of" , Space , Str "length" , Space , Math InlineMath "a=p^2-q^2" , Str "," , Space , Math InlineMath "b=2pq" , Space , Str "and" , Space , Math InlineMath "c=p^2+q^2" , Space , Str "are" , Space , Str "right-angled" , Space , Str "triangles." ] ] ] , Div ( "" , [ "remark" ] , [] ) [ Para [ Emph [ Str "Remark" , Space , Str "1" ] , Str "." , Space , Space , Str "These" , Space , Str "are" , Space , Str "all" , Space , Str "pretty" , Space , Str "interesting" , Space , Str "facts." ] ] ] ``` pandoc-3.1.3/test/command/1629.md0000644000000000000000000000024507346545000014474 0ustar0000000000000000``` % pandoc -t latex --listings bla bla `a % b` *bla bla `a % b`* ^D bla bla \passthrough{\lstinline!a \% b!} \emph{bla bla \passthrough{\lstinline!a \% b!}} ``` pandoc-3.1.3/test/command/168.md0000644000000000000000000000210307346545000014404 0ustar0000000000000000``` % pandoc -t native :::::::::: warning :::::::::::: This is the warning! 1. list 2. another ::: {#myid .class key=val} nested div ::: ::::::::::::::::::::::::::::::: ^D [ Div ( "" , [ "warning" ] , [] ) [ Para [ Str "This" , Space , Str "is" , Space , Str "the" , Space , Str "warning!" ] , OrderedList ( 1 , Decimal , Period ) [ [ Plain [ Str "list" ] ] , [ Plain [ Str "another" ] ] ] , Div ( "myid" , [ "class" ] , [ ( "key" , "val" ) ] ) [ Para [ Str "nested" , Space , Str "div" ] ] ] ] ``` ``` % pandoc -t native foo ::: bar ^D [ Para [ Str "foo" , SoftBreak , Str ":::" , SoftBreak , Str "bar" ] ] ``` ``` % pandoc -t native ::::: Warning Here is a paragraph. And another. ::::: ^D [ Div ( "" , [ "Warning" ] , [] ) [ Para [ Str "Here" , Space , Str "is" , Space , Str "a" , Space , Str "paragraph." ] , Para [ Str "And" , Space , Str "another." ] ] ] ``` pandoc-3.1.3/test/command/1710.md0000644000000000000000000000212107346545000014456 0ustar0000000000000000``` % pandoc -t revealjs # Slide one
    - a - b
    - c - d
    ok
    ^D

    Slide one

    • a
    • b
    • c
    • d

    ok

    ``` ``` % pandoc -t beamer # Slide one
    - a - b
    - c - d
    ok
    ^D \begin{frame}{Slide one} \protect\hypertarget{slide-one}{} \begin{columns}[T] \begin{column}{0.4\textwidth} \begin{itemize} \tightlist \item a \item b \end{itemize} \end{column} \begin{column}{0.4\textwidth} \begin{itemize} \tightlist \item c \item d \end{itemize} \end{column} \begin{column}{0.1\textwidth} ok \end{column} \end{columns} \end{frame} ``` pandoc-3.1.3/test/command/1718.md0000644000000000000000000000050007346545000014465 0ustar0000000000000000``` % pandoc -t native Note[^1]. [^1]: the first note. [^2]: the second, unused, note. ^D 2> [WARNING] Note with key '2' defined at line 5 column 1 but not used. [ Para [ Str "Note" , Note [ Para [ Str "the" , Space , Str "first" , Space , Str "note." ] ] , Str "." ] ] ``` pandoc-3.1.3/test/command/1745.md0000644000000000000000000000055407346545000014476 0ustar0000000000000000``` % pandoc -f latex+auto_identifiers -t html \section{Six favourite beers} \subsection{Jovaru Alus}\label{jovaru-alus} \section{Farmhouse brewers} \subsection{Jovaru Alus} ^D

    Six favourite beers

    Jovaru Alus

    Farmhouse brewers

    Jovaru Alus

    ``` pandoc-3.1.3/test/command/1762.md0000644000000000000000000000043507346545000014473 0ustar0000000000000000``` % pandoc -t latex # One {.unlisted} # Two {.unnumbered} # Three {.unlisted .unnumbered} ^D \hypertarget{one}{% \section{One}\label{one}} \hypertarget{two}{% \section*{Two}\label{two}} \addcontentsline{toc}{section}{Two} \hypertarget{three}{% \section*{Three}\label{three}} ``` pandoc-3.1.3/test/command/1773.md0000644000000000000000000000020107346545000014464 0ustar0000000000000000``` % pandoc -f latex+raw_tex -t native \noindent hi ^D [ Para [ RawInline (Format "latex") "\\noindent " , Str "hi" ] ] ``` pandoc-3.1.3/test/command/1841.md0000644000000000000000000000066607346545000014477 0ustar0000000000000000``` % pandoc
    *one* [a link](http://google.com)
    ^D
    one a link
    ``` ``` % pandoc
    *one* [a link](http://google.com)
    ^D
    one a link
    ``` pandoc-3.1.3/test/command/1881.md0000644000000000000000000000753507346545000014505 0ustar0000000000000000``` % pandoc -f html -t native
    Demonstration of simple table syntax.
    Right Left Center Default
    12 12 12 12
    ^D [ Table ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "Demonstration" , Space , Str "of" , Space , Str "simple" , Space , Str "table" , Space , Str "syntax." ] ]) [ ( AlignRight , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [ "header" ] , [] ) [ Cell ( "" , [] , [] ) AlignRight (RowSpan 1) (ColSpan 1) [ Plain [ Str "Right" ] ] , Cell ( "" , [] , [] ) AlignLeft (RowSpan 1) (ColSpan 1) [ Plain [ Str "Left" ] ] , Cell ( "" , [] , [] ) AlignCenter (RowSpan 1) (ColSpan 1) [ Plain [ Str "Center" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Default" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [ "odd" ] , [] ) [ Cell ( "" , [] , [] ) AlignRight (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignLeft (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignCenter (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ``` ``` % pandoc -f html -t native
    12 12 12 12
    ^D [ Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignRight , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignRight , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [ "odd" ] , [] ) [ Cell ( "" , [] , [] ) AlignRight (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignLeft (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignCenter (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignRight (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ``` pandoc-3.1.3/test/command/1905.md0000644000000000000000000000066307346545000014475 0ustar0000000000000000``` % pandoc -f latex-auto_identifiers -t html \chapter{chapone} \part{partone} \chapter{chaptwo} \section{secone} ^D

    chapone

    partone

    chaptwo

    secone

    ``` ``` % pandoc -f latex-auto_identifiers -t html \chapter{chapone} \chapter{chaptwo} \section{secone} ^D

    chapone

    chaptwo

    secone

    ``` ``` % pandoc -f latex-auto_identifiers -t html \section{secone} ^D

    secone

    ``` pandoc-3.1.3/test/command/2103.md0000644000000000000000000000024707346545000014462 0ustar0000000000000000``` % pandoc -t latex | A happy pandoc user said "fix this bug please | or I'll go crazy!" ^D A happy pandoc user said ``fix this bug please\\ or I'll go crazy!'' ``` pandoc-3.1.3/test/command/2118.md0000644000000000000000000000074207346545000014470 0ustar0000000000000000``` % pandoc -f latex -t native \newcommand{\inclgraph}{\includegraphics[width=0.8\textwidth]} \begin{figure}[ht] \inclgraph{setminus.png} \caption{Set subtraction} \label{fig:setminus} \end{figure} ^D [ Figure ( "fig:setminus" , [] , [] ) (Caption Nothing [ Plain [ Str "Set" , Space , Str "subtraction" ] ]) [ Plain [ Image ( "" , [] , [ ( "width" , "80%" ) ] ) [] ( "setminus.png" , "" ) ] ] ] ``` pandoc-3.1.3/test/command/2228.md0000644000000000000000000000012607346545000014466 0ustar0000000000000000``` % pandoc -f markdown+smart -t latex+smart *foo*'s 'foo' ^D \emph{foo}'s `foo' ``` pandoc-3.1.3/test/command/2378.md0000644000000000000000000000071407346545000014477 0ustar0000000000000000Ensure that we don't get duplicated footnotes when a note occurs in a header cell and `\endfirsthead` is used. ``` % pandoc -t latex | x | y[^fn] | |-|-| |1|2| : a table [^fn]: a footnote ^D \begin{longtable}[]{@{}ll@{}} \caption{a table}\tabularnewline \toprule\noalign{} x & y\footnote{a footnote} \\ \midrule\noalign{} \endfirsthead \toprule\noalign{} x & y{} \\ \midrule\noalign{} \endhead \bottomrule\noalign{} \endlastfoot 1 & 2 \\ \end{longtable} ``` pandoc-3.1.3/test/command/2397.md0000644000000000000000000000031507346545000014475 0ustar0000000000000000``` % pandoc -f markdown_mmd # Chapter 1: A long name of chapter [Chapter 1] See [Chapter 1]. ^D

    Chapter 1: A long name of chapter

    See Chapter 1.

    ``` pandoc-3.1.3/test/command/2434.md0000644000000000000000000000251507346545000014471 0ustar0000000000000000``` % pandoc -t opendocument 1. a 2. b 1. alpha 2. beta * gamma ^D a b alpha beta gamma ``` ``` % pandoc -t opendocument (@) text some text a) sub item 1 b) sub item 2 more text -- this line is missing in the odt output ^D text some text sub item 1 sub item 2 more text – this line is missing in the odt output ``` pandoc-3.1.3/test/command/2465.md0000644000000000000000000000174507346545000014501 0ustar0000000000000000``` % pandoc -f textile -t native This list starts: # one # two This list should continue at 3: #3 three # four This list should restart at 1: # one again # two again ^D [ Para [ Str "This" , Space , Str "list" , Space , Str "starts:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "one" ] ] , [ Plain [ Str "two" ] ] ] , Para [ Str "This" , Space , Str "list" , Space , Str "should" , Space , Str "continue" , Space , Str "at" , Space , Str "3:" ] , OrderedList ( 3 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "three" ] ] , [ Plain [ Str "four" ] ] ] , Para [ Str "This" , Space , Str "list" , Space , Str "should" , Space , Str "restart" , Space , Str "at" , Space , Str "1:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "one" , Space , Str "again" ] ] , [ Plain [ Str "two" , Space , Str "again" ] ] ] ] ``` pandoc-3.1.3/test/command/2549.md0000644000000000000000000000127207346545000014477 0ustar0000000000000000``` % pandoc -f latex -t native \hypertarget{foo}{% \section{A section}\label{foo} } ^D [ Header 1 ( "foo" , [] , [] ) [ Str "A" , Space , Str "section" ] ] ``` ``` % pandoc -f latex -t native \hypertarget{bar}{% \section{A section}\label{foo} } ^D [ Div ( "bar" , [] , [] ) [ Header 1 ( "foo" , [] , [] ) [ Str "A" , Space , Str "section" ] ] ] ``` ``` % pandoc -f latex -t native Bar \hypertarget{foo}{Foo} ^D [ Para [ Str "Bar" , Space , Span ( "foo" , [] , [] ) [ Str "Foo" ] ] ] ``` ``` % pandoc -f latex -t native \hypertarget{foo}{% \begin{verbatim} bar \end{verbatim} } ^D [ Div ( "foo" , [] , [] ) [ CodeBlock ( "" , [] , [] ) "bar" ] ] ``` pandoc-3.1.3/test/command/2552.md0000644000000000000000000000017207346545000014467 0ustar0000000000000000``` % pandoc --strip-comments Foo bar bazboop ^D

    Foo

    bar

    bazboop

    ``` pandoc-3.1.3/test/command/256.md0000644000000000000000000000114607346545000014410 0ustar0000000000000000``` % pandoc --abbreviations=command/abbrevs -t native Foo. bar baz h.k. and e.g. and Mr. Brown. ^D [ Para [ Str "Foo.\160bar" , Space , Str "baz" , Space , Str "h.k.\160and" , Space , Str "e.g." , Space , Str "and" , Space , Str "Mr." , Space , Str "Brown." ] ] ``` ``` % pandoc -t native Foo. bar baz h.k. and e.g. and Mr. Brown. ^D [ Para [ Str "Foo." , Space , Str "bar" , Space , Str "baz" , Space , Str "h.k." , Space , Str "and" , Space , Str "e.g.\160and" , Space , Str "Mr.\160Brown." ] ] ``` pandoc-3.1.3/test/command/2602.md0000644000000000000000000000025307346545000014463 0ustar0000000000000000``` % pandoc [a] [b] [b]: url ^D

    [a] b

    ``` ``` % pandoc -f markdown+spaced_reference_links [a] [b] [b]: url ^D

    a

    ``` pandoc-3.1.3/test/command/2606.md0000644000000000000000000000101107346545000014460 0ustar0000000000000000``` % pandoc -f mediawiki -t html5 {| | * hello |} ^D

    * hello

    ``` ``` % pandoc -f mediawiki -t html5 {| | * hello |} ^D
    • hello
    ``` ``` % pandoc -f mediawiki -t html5 {| | * hello |} ^D

    * hello

    ``` ``` % pandoc -f mediawiki -t html5 * * hi ^D
    • * hi
    ``` pandoc-3.1.3/test/command/262.md0000644000000000000000000000057507346545000014412 0ustar0000000000000000``` % pandoc -f rst `hello`_ and `goodbye`_ .. _hello: .. _goodbye: example.com ^D

    hello and goodbye

    ``` ``` % pandoc -f rst `hello`_ `goodbye`_ .. _hello: .. _goodbye: paragraph ^D

    hello goodbye

    paragraph

    ``` pandoc-3.1.3/test/command/2649.md0000644000000000000000000000424207346545000014500 0ustar0000000000000000``` % pandoc -f mediawiki -t html5 {| class="wikitable" style="line-height: 1.0" |- bgcolor="#efefef" |} ^D
    ``` ``` % pandoc -f mediawiki -t html5 {| border="4" cellspacing="2" cellpadding="0" WIDTH="100%" |----- | peildatum Simbase || november 2005 || colspan=2 | '''uitslagen Flohrgambiet''' || |----- | totaal aantal partijen Simbase || 7.316.773 | wit wint || 53% |----- | percentage (en partijen) Flohrgambiet | 0.023 % (1.699) || zwart wint || 27% |----- | percentage Flohrgambiet in aug 2003 | 0.035 % || remise || 20% |} ^D

    peildatum Simbase

    november 2005

    uitslagen Flohrgambiet

    totaal aantal partijen Simbase

    7.316.773

    wit wint

    53%

    percentage (en partijen) Flohrgambiet

    0.023 % (1.699)

    zwart wint

    27%

    percentage Flohrgambiet in aug 2003

    0.035 %

    remise

    20%

    ``` ``` % pandoc -f mediawiki -t html5 {| class="wikitable" style="text-align:center; font-size:95%" valign="top" | ! Plaats ! Rijder ! Aantal |- | 1 |align=left| {{FR-VLAG}} [[Sébastien Loeb]] | 78 |- | 2 |align=left| {{FR-VLAG}} '''[[Sébastien Ogier]]''' | 38 |- | 10 |align=left| {{FI-VLAG}} [[Hannu Mikkola]] | 18 |} ^D

    Plaats

    Rijder

    Aantal

    1

    Sébastien Loeb

    78

    2

    Sébastien Ogier

    38

    10

    Hannu Mikkola

    18

    ``` pandoc-3.1.3/test/command/2662.md0000644000000000000000000000044507346545000014474 0ustar0000000000000000``` % pandoc -t html -f rst --wrap=none .. image:: http://url.to.image/foo.png :align: left :height: 100px :width: 200 px :scale: 300 % :alt: alternate text ^D

    alternate text

    ``` pandoc-3.1.3/test/command/2834.md0000644000000000000000000000151407346545000014473 0ustar0000000000000000Nested grid tables. ``` % pandoc -f html -t markdown --columns=72
    some text
    ^D +-----------------------------------------------------------------------+ | +------------------------------------------------------------------+ | | | ----------- | | | | some text | | | | ----------- | | | +------------------------------------------------------------------+ | +-----------------------------------------------------------------------+ ``` pandoc-3.1.3/test/command/2874.md0000644000000000000000000000024407346545000014476 0ustar0000000000000000``` % pandoc -f html -t latex
    ^D {}\strut \\ ``` ``` % pandoc -f html -t latex
    ^D \protect\hypertarget{foo}{}{}\strut \\ ``` pandoc-3.1.3/test/command/2994.md0000644000000000000000000000063607346545000014506 0ustar0000000000000000``` % pandoc -f markdown -t docx -o - | pandoc -f docx -t markdown --track-changes=all I want [I left a comment.]{.comment-start id="0" author="Jesse Rosenthal" date="2016-05-09T16:13:00Z"}some text to have a comment []{.comment-end id="0"}on it. ^D I want [I left a comment.]{.comment-start id="0" author="Jesse Rosenthal" date="2016-05-09T16:13:00Z"}some text to have a comment []{.comment-end id="0"}on it. ``` pandoc-3.1.3/test/command/3113.md0000644000000000000000000000044007346545000014457 0ustar0000000000000000``` % pandoc -f latex -t native \begin{eqnarray} A&=&B,\\ C&=&D,\\ %\end{eqnarray} %\begin{eqnarray} E&=&F \end{eqnarray} ^D [ Para [ Math DisplayMath "\\begin{aligned}\nA&=&B,\\\\\nC&=&D,\\\\\n%\\end{eqnarray}\n%\\begin{eqnarray}\nE&=&F\n\\end{aligned}" ] ] ``` pandoc-3.1.3/test/command/3123.md0000644000000000000000000000041007346545000014455 0ustar0000000000000000``` % pandoc -f markdown -t native ^D [ RawBlock (Format "html") "" ] ``` ``` % pandoc -f markdown -t native a ^D [ Para [ Str "a" , RawInline (Format "html") "" ] ] ``` pandoc-3.1.3/test/command/3236.md0000644000000000000000000000056507346545000014475 0ustar0000000000000000``` % pandoc -f latex -t native \newcommand{\mycolor}{red} \includegraphics[width=17cm]{\mycolor /header} Magnificent \mycolor{} header. ^D [ Para [ Image ( "" , [] , [ ( "width" , "17cm" ) ] ) [ Str "image" ] ( "red/header" , "" ) , SoftBreak , Str "Magnificent" , Space , Str "red" , Space , Str "header." ] ] ``` pandoc-3.1.3/test/command/3257.md0000644000000000000000000000022507346545000014471 0ustar0000000000000000``` % pandoc -t native (ik ^D [ Para [ Str "ik" ] ] ``` pandoc-3.1.3/test/command/3309.md0000644000000000000000000000135707346545000014476 0ustar0000000000000000Certain environments should be treated as inline unless they are surrounded by blank lines: ``` % pandoc -t latex --wrap=preserve Lorem ipsum dolor sit amet, \begin{equation} E = mc^2, \end{equation} consectetur adipiscing elit. ^D Lorem ipsum dolor sit amet, \begin{equation} E = mc^2, \end{equation} consectetur adipiscing elit. ``` ``` % pandoc -t latex --wrap=preserve Lorem ipsum dolor sit amet, \begin{equation} E = mc^2, \end{equation} consectetur adipiscing elit. ^D Lorem ipsum dolor sit amet, \begin{equation} E = mc^2, \end{equation} consectetur adipiscing elit. ``` ``` % pandoc -t latex --wrap=preserve The formula \begin{math} x = y \end{math} should be inline. ^D The formula \begin{math} x = y \end{math} should be inline. ``` pandoc-3.1.3/test/command/3314.md0000644000000000000000000000131307346545000014462 0ustar0000000000000000See #3315 and . ``` % pandoc -f org -t html5 +-----------+-------+----------+ | First | 12.0 | Example | | | | row | | | | spanning | | | | lines | +-----------+-------+----------+ | Second | 5.0 | Another | +-----------+-------+----------+ ^D
    First 12.0 Example row spanning lines
    Second 5.0 Another
    ``` pandoc-3.1.3/test/command/3324.md0000644000000000000000000000035707346545000014472 0ustar0000000000000000``` % pandoc -t latex Signatures \ \ ___________________________\ Peter Foobar\ *The Foo Company* ^D Signatures \hfill\break \hfill\break \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\\ Peter Foobar\\ \emph{The Foo Company} ``` pandoc-3.1.3/test/command/3337.md0000644000000000000000000000021707346545000014471 0ustar0000000000000000``` % pandoc -f html -t markdown
    a
    12
    ^D --- --- a 1 2 --- --- ``` pandoc-3.1.3/test/command/3348.md0000644000000000000000000000337407346545000014502 0ustar0000000000000000``` % pandoc -t native --columns=72 ----- ------------------------------------------------ foo bar foo this is a long line of text ----- ------------------------------------------------ ^D [ Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignRight , ColWidth 8.333333333333333e-2 ) , ( AlignLeft , ColWidth 0.6805555555555556 ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "foo" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "bar" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "foo" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "this" , Space , Str "is" , Space , Str "a" , Space , Str "long" , SoftBreak , Str "line" , Space , Str "of" , Space , Str "text" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ``` pandoc-3.1.3/test/command/3401.md0000644000000000000000000000050207346545000014456 0ustar0000000000000000See #3401 and ``` % pandoc -f org -t native #+MACRO: HELLO /Hello, $1/ {{{HELLO(World)}}} ^D [ Para [ Emph [ Str "Hello," , Space , Str "World" ] ] ] ``` Inverted argument order ``` % pandoc -f org -t native #+MACRO: A $2,$1 {{{A(1,2)}}} ^D [ Para [ Str "2,1" ] ] ``` pandoc-3.1.3/test/command/3407.md0000644000000000000000000000041507346545000014467 0ustar0000000000000000``` % pandoc -f native -t rst [Para [Code ("",["interpreted-text"],[("role","foo")]) "text"]] ^D :foo:`text` ``` ``` % pandoc -f rst -t native :foo:`text` ^D [ Para [ Code ( "" , [ "interpreted-text" ] , [ ( "role" , "foo" ) ] ) "text" ] ] ``` pandoc-3.1.3/test/command/3422.md0000644000000000000000000000026007346545000014462 0ustar0000000000000000See #3422 ``` % pandoc -t latex --listings `int main(int argc, const char *argv[]);`{.c} ^D \passthrough{\lstinline[language=C]!int main(int argc, const char *argv[]);!} ``` pandoc-3.1.3/test/command/3432.md0000644000000000000000000001164407346545000014473 0ustar0000000000000000List-table with header-rows and widths options. ``` % pandoc -f rst .. list-table:: Frozen Delights! :widths: 15 10 30 :header-rows: 1 * - Treat - Quantity - Description * - Albatross - 2.99 - On a stick! * - Crunchy Frog - 1.49 - If we took the bones out, it wouldn't be crunchy, now would it? * - Gannet Ripple - 1.99 - On a stick! ^D
    Frozen Delights!
    Treat Quantity Description
    Albatross 2.99 On a stick!
    Crunchy Frog 1.49 If we took the bones out, it wouldn't be crunchy, now would it?
    Gannet Ripple 1.99 On a stick!
    ``` List-table whose widths is "auto". ``` % pandoc -f rst .. list-table:: Frozen Delights! :header-rows: 1 :widths: auto * - Treat - Quantity - Description * - Albatross - 2.99 - On a stick! * - Crunchy Frog - 1.49 - If we took the bones out, it wouldn't be crunchy, now would it? * - Gannet Ripple - 1.99 - On a stick! ^D
    Frozen Delights!
    Treat Quantity Description
    Albatross 2.99 On a stick!
    Crunchy Frog 1.49 If we took the bones out, it wouldn't be crunchy, now would it?
    Gannet Ripple 1.99 On a stick!
    ``` List-table with header-rows which is bigger than 1. Only the first row is treated as a header. ``` % pandoc -f rst .. list-table:: Frozen Delights! :header-rows: 2 * - Treat - Quantity - Description * - Albatross - 2.99 - On a stick! * - Crunchy Frog - 1.49 - If we took the bones out, it wouldn't be crunchy, now would it? * - Gannet Ripple - 1.99 - On a stick! ^D
    Frozen Delights!
    Treat Quantity Description
    Albatross 2.99 On a stick!
    Crunchy Frog 1.49 If we took the bones out, it wouldn't be crunchy, now would it?
    Gannet Ripple 1.99 On a stick!
    ``` List-table without header-rows. ``` % pandoc -f rst .. list-table:: Frozen Delights! * - Albatross - 2.99 - On a stick! * - Crunchy Frog - 1.49 - If we took the bones out, it wouldn't be crunchy, now would it? * - Gannet Ripple - 1.99 - On a stick! ^D
    Frozen Delights!
    Albatross 2.99 On a stick!
    Crunchy Frog 1.49 If we took the bones out, it wouldn't be crunchy, now would it?
    Gannet Ripple 1.99 On a stick!
    ``` List-table with empty cells. You need a space after '-', otherwise the row will disappear. Parser for Bulletlists causes this restriction. ``` % pandoc -f rst .. list-table:: Frozen Delights! :header-rows: 2 * - Treat - Quantity - Description * - Albatross - 2.99 - * - Crunchy Frog - - If we took the bones out, it wouldn't be crunchy, now would it? * - Gannet Ripple - 1.99 - On a stick! ^D
    Frozen Delights!
    Treat Quantity Description
    Albatross 2.99
    Crunchy Frog If we took the bones out, it wouldn't be crunchy, now would it?
    Gannet Ripple 1.99 On a stick!
    ``` List-table with a cell having a bulletlist ``` % pandoc -f rst .. list-table:: Frozen Delights! * - Albatross - 2.99 - + On a stick! + In a cup! * - Crunchy Frog - 1.49 - If we took the bones out, it wouldn't be crunchy, now would it? * - Gannet Ripple - 1.99 - On a stick! ^D
    Frozen Delights!
    Albatross 2.99
    • On a stick!
    • In a cup!
    Crunchy Frog 1.49 If we took the bones out, it wouldn't be crunchy, now would it?
    Gannet Ripple 1.99 On a stick!
    ``` pandoc-3.1.3/test/command/3432a.md0000644000000000000000000000022307346545000014623 0ustar0000000000000000``` % pandoc -f rst * - a - b * - c - d ^D
      • a
      • b
      • c
      • d
    ``` pandoc-3.1.3/test/command/3450.md0000644000000000000000000000044407346545000014467 0ustar0000000000000000``` % pandoc -fmarkdown-implicit_figures ![image](lalune.jpg){height=2em} ^D

    image

    ``` ``` % pandoc -fmarkdown-implicit_figures -t latex ![image](lalune.jpg){height=2em} ^D \includegraphics[width=\textwidth,height=2em]{lalune.jpg} ``` pandoc-3.1.3/test/command/3475.md0000644000000000000000000000116507346545000014477 0ustar0000000000000000RST implicit internal links to headers: ``` % pandoc -f rst Years ----- Years_ ^D

    Years

    Years

    ``` ``` % pandoc -f rst Years_ Years ----- ^D

    Years

    Years

    ``` ``` % pandoc -f rst Years and years --------------- `Years and years`_ ^D

    Years and years

    Years and years

    ``` ``` % pandoc -f rst Years and *years* ----------------- `Years and years`_ ^D

    Years and years

    Years and years

    ``` pandoc-3.1.3/test/command/3487.md0000644000000000000000000000014507346545000014477 0ustar0000000000000000``` % pandoc -f html -t markdown Some text
    • element
    ^D Some text - element ``` pandoc-3.1.3/test/command/3494.md0000644000000000000000000000201007346545000014466 0ustar0000000000000000``` % pandoc -f latex --quiet \begin{table}[h!] \begin{tabular}{r|l|l} {\large \textbf{ﺍ}} && \\ \textbf{ﺄﺤﺴﻨﺘـ(ﻭﺍ) IV} & \em{ʾaḥsant(ū)} & thank you \\ \newpage \emph{blah} & \emph{blah} & \emph{blah} \\ blah & blah & blah \\ \end{tabular} \end{table} ^D
    ﺄﺤﺴﻨﺘـ(ﻭﺍ) IV ʾaḥsant(ū) thank you
    blah blah blah
    blah blah blah
    ``` pandoc-3.1.3/test/command/3497.md0000644000000000000000000000060207346545000014476 0ustar0000000000000000Escape list markers at beginning of paragraph: ``` % pandoc -t markdown \* ok \+ ok \- ok 1\. ok a\. ok ^D \* ok \+ ok \- ok 1\. ok a\. ok ``` Here we don't need to escape because there's no space: ``` % pandoc -t markdown \+ok \-ok 1.ok ^D +ok -ok 1.ok ``` Also escape things that might become line blocks or tables: ``` % pandoc -t markdown \| hi \| ^D \| hi \| ``` pandoc-3.1.3/test/command/3499.md0000644000000000000000000000034007346545000014477 0ustar0000000000000000Org-mode tables can't be on the same line as list markers: ``` % pandoc -f org - |something| - |else| ^D
    • |something|
    • else
    ``` pandoc-3.1.3/test/command/3510-export.latex0000644000000000000000000000001407346545000016511 0ustar0000000000000000\emph{Hello}pandoc-3.1.3/test/command/3510-src.hs0000644000000000000000000000002307346545000015254 0ustar0000000000000000putStrLn outString pandoc-3.1.3/test/command/3510-subdoc.org0000644000000000000000000000005207346545000016123 0ustar0000000000000000* Subsection Included text Lorem ipsum. pandoc-3.1.3/test/command/3510.md0000644000000000000000000000107307346545000014463 0ustar0000000000000000See ``` % pandoc -f org -t native Text #+include: "command/3510-subdoc.org" #+INCLUDE: "command/3510-src.hs" src haskell #+INCLUDE: "command/3510-export.latex" export latex More text ^D [ Para [ Str "Text" ] , Header 1 ( "subsection" , [] , [] ) [ Str "Subsection" ] , Para [ Str "Included" , Space , Str "text" ] , Plain [ Str "Lorem" , Space , Str "ipsum." ] , CodeBlock ( "" , [ "haskell" ] , [] ) "putStrLn outString\n" , RawBlock (Format "latex") "\\emph{Hello}" , Para [ Str "More" , Space , Str "text" ] ] ``` pandoc-3.1.3/test/command/3511.md0000644000000000000000000000151707346545000014467 0ustar0000000000000000``` % pandoc -t native - a - b - c - code 1000. one not continuation ^D [ BulletList [ [ Plain [ Str "a" ] , BulletList [ [ Plain [ Str "b" ] , BulletList [ [ Plain [ Str "c" ] ] ] ] ] ] , [ CodeBlock ( "" , [] , [] ) "code" ] ] , OrderedList ( 1000 , Decimal , Period ) [ [ Plain [ Str "one" ] ] ] , CodeBlock ( "" , [] , [] ) "not continuation" ] ``` ``` % pandoc -t native -f markdown+four_space_rule - a - b - c - not code 1000. one continuation ^D [ BulletList [ [ Plain [ Str "a" ] ] , [ Plain [ Str "b" ] , BulletList [ [ Plain [ Str "c" ] ] ] ] , [ CodeBlock ( "" , [] , [] ) "not code" ] ] , OrderedList ( 1000 , Decimal , Period ) [ [ Para [ Str "one" ] , Para [ Str "continuation" ] ] ] ] ``` pandoc-3.1.3/test/command/3512.md0000644000000000000000000000022607346545000014464 0ustar0000000000000000``` % pandoc -f markdown-auto_identifiers #hi ^D

    #hi

    ``` ``` % pandoc -f markdown-auto_identifiers-space_in_atx_header #hi ^D

    hi

    ``` pandoc-3.1.3/test/command/3516.md0000644000000000000000000000410207346545000014465 0ustar0000000000000000Correctly handle empty row: ``` % pandoc -f markdown -t rst +---+---+ | 1 | 2 | +---+---+ | | | +---+---+ ^D +---+---+ | 1 | 2 | +---+---+ | | | +---+---+ ``` Temporarily added these to figure out what is happening on Windows builds. ``` % pandoc -f markdown -t native +---+---+ | 1 | 2 | +---+---+ | | | +---+---+ ^D [ Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidth 5.555555555555555e-2 ) , ( AlignDefault , ColWidth 5.555555555555555e-2 ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ``` ``` % pandoc -f native -t rst [Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidth 5.555555555555555e-2) ,(AlignDefault,ColWidth 5.555555555555555e-2)] (TableHead ("",[],[]) [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) []]]) [(TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "1"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "2"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) []]])] (TableFoot ("",[],[]) [])] ^D +---+---+ | 1 | 2 | +---+---+ | | | +---+---+ ``` pandoc-3.1.3/test/command/3518.md0000644000000000000000000000017707346545000014477 0ustar0000000000000000``` % pandoc -f latex -t plain $\alpha^2 \cdot \alpha^{2+3} \equiv \alpha^7$ ^D α² ⋅ α² ⁺ ³ ≡ α⁷ ``` pandoc-3.1.3/test/command/3523.md0000644000000000000000000000172507346545000014473 0ustar0000000000000000``` % pandoc -f latex -t html \documentclass{article} \usepackage{epigraph} \begin{document} \epigraph{ Das Recht hat kein Dasein f{\"u}r sich, sein Wesen vielmehr ist das Leben des Menschen selbst, von einer besonderen Seite angesehen. Das Recht hat kein Dasein f{\"u}r sich, sein Wesen vielmehr ist das Leben des Menschen selbst, von einer besonderen Seite angesehen. \begin{itemize} \item hey \item hey \item hey \end{itemize} }{ Friedrich Carl von Savigny } \end{document} ^D

    Das Recht hat kein Dasein für sich, sein Wesen vielmehr ist das Leben des Menschen selbst, von einer besonderen Seite angesehen.

    Das Recht hat kein Dasein für sich, sein Wesen vielmehr ist das Leben des Menschen selbst, von einer besonderen Seite angesehen.

    • hey

    • hey

    • hey

    Friedrich Carl von Savigny

    ``` pandoc-3.1.3/test/command/3526.md0000644000000000000000000000017207346545000014471 0ustar0000000000000000``` % pandoc -t rst +--+---+ | | | +--+---+ | | | +--+---+ ^D +---+---+ | | | +---+---+ | | | +---+---+ ``` pandoc-3.1.3/test/command/3529.md0000644000000000000000000000025007346545000014471 0ustar0000000000000000``` % pandoc -t markdown-simple_tables-pipe_tables-grid_tables+multiline_tables A B -- -- 7 8 9 10 ^D -------- A B --- ---- 7 8 9 10 -------- ``` pandoc-3.1.3/test/command/3530.md0000644000000000000000000000211707346545000014465 0ustar0000000000000000``` % pandoc -f latex -t native \subfile{command/sub-file-chapter-1} \subfile{command/sub-file-chapter-2} ^D [ Header 1 ( "chapter-1" , [] , [] ) [ Str "Chapter" , Space , Str "1" ] , Para [ Str "This" , Space , Str "is" , Space , Str "Chapter" , Space , Str "1," , Space , Str "provided" , Space , Str "in" , Space , Str "a" , Space , Str "sub" , Space , Str "file." ] , Header 1 ( "chapter-2" , [] , [] ) [ Str "Chapter" , Space , Str "2" ] , Para [ Str "This" , Space , Str "is" , Space , Str "Chapter" , Space , Str "2," , Space , Str "provided" , Space , Str "in" , Space , Str "a" , Space , Str "second" , Space , Str "sub" , Space , Str "file." ] ] ``` ``` % pandoc -flatex+raw_tex -t native \subfile{command/sub-file-chapter-1} \subfile{command/sub-file-chapter-2} ^D [ RawBlock (Format "latex") "\\subfile{command/sub-file-chapter-1}" , RawBlock (Format "latex") "\\subfile{command/sub-file-chapter-2}" ] ``` pandoc-3.1.3/test/command/3531.md0000644000000000000000000000074507346545000014473 0ustar0000000000000000``` % pandoc -t mediawiki --wrap=preserve * This is a list item. * This is a list item in Markdown. It is continued in the next line. * It has a sub-item. * This is the next list item. A paragraph can span multiple lines without being broken into pieces. ^D * This is a list item. * This is a list item in Markdown. It is continued in the next line. ** It has a sub-item. * This is the next list item. A paragraph can span multiple lines without being broken into pieces. ``` pandoc-3.1.3/test/command/3533-rst-csv-tables.csv0000644000000000000000000000017207346545000017531 0ustar0000000000000000"Albatross", 2.99, "On a stick!" "Crunchy Frog", 1.49, "If we took the bones out, it wouldn't be crunchy, now would it?" pandoc-3.1.3/test/command/3533-rst-csv-tables.md0000644000000000000000000001424107346545000017340 0ustar0000000000000000``` % pandoc -f rst -t native .. csv-table:: Test :widths: 10, 5, 10 :header: Flavor,Price,Slogan :file: command/3533-rst-csv-tables.csv ^D [ Table ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "Test" ] ]) [ ( AlignDefault , ColWidth 0.4 ) , ( AlignDefault , ColWidth 0.2 ) , ( AlignDefault , ColWidth 0.4 ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Flavor" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Price" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Slogan" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Albatross" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2.99" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "On" , Space , Str "a" , Space , Str "stick!" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Crunchy" , Space , Str "Frog" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1.49" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "If" , Space , Str "we" , Space , Str "took" , Space , Str "the" , Space , Str "bones" , Space , Str "out," , Space , Str "it" , Space , Str "wouldn't" , Space , Str "be" , SoftBreak , Str "crunchy," , Space , Str "now" , Space , Str "would" , Space , Str "it?" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ``` ``` % pandoc -f rst -t native .. csv-table:: Test :header-rows: 1 :quote: ' :delim: space '' 'a' 'b' 'cat''s' 3 4 'dog''s' 2 3 ^D [ Table ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "Test" ] ]) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "a" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "b" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "cat's" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "3" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "4" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "dog's" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "3" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ``` ``` % pandoc -f rst -t native .. csv-table:: Test :escape: \ "1","\"" ^D [ Table ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "Test" ] ]) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "\"" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ``` pandoc-3.1.3/test/command/3534.md0000644000000000000000000000342707346545000014476 0ustar0000000000000000``` % pandoc -f latex -t html I want to explain the interface of \lstinline[language=Java]{public class MyClass}. ^D

    I want to explain the interface of public class MyClass.

    ``` ``` % pandoc -f latex -t html I want to explain the interface of \lstinline{public class MyClass}. ^D

    I want to explain the interface of public class MyClass.

    ``` ``` % pandoc -f latex -t native I want to explain the interface of \lstinline[language=Java]{public class MyClass}. ^D [ Para [ Str "I" , Space , Str "want" , Space , Str "to" , Space , Str "explain" , Space , Str "the" , Space , Str "interface" , Space , Str "of" , Space , Code ( "" , [ "java" ] , [] ) "public class MyClass" , Str "." ] ] ``` ``` % pandoc -f latex -t html I want to explain the interface of \mintinline{java}{public class MyClass}. ^D

    I want to explain the interface of public class MyClass.

    ``` ``` % pandoc -f latex -t html I want to explain the interface of \mintinline{java}|public class MyClass|. ^D

    I want to explain the interface of public class MyClass.

    ``` ``` % pandoc -f latex -t native I want to explain the interface of \mintinline[linenos]{java}{public class MyClass}. ^D [ Para [ Str "I" , Space , Str "want" , Space , Str "to" , Space , Str "explain" , Space , Str "the" , Space , Str "interface" , Space , Str "of" , Space , Code ( "" , [ "java" ] , [] ) "public class MyClass" , Str "." ] ] ``` pandoc-3.1.3/test/command/3537.md0000644000000000000000000000060107346545000014470 0ustar0000000000000000Generalized raw attributes. ```` % pandoc -t native ```{=ms} .MACRO foo bar ``` ^D [ RawBlock (Format "ms") ".MACRO\nfoo bar" ] ```` ```` % pandoc -t native Hi `there`{=ms}. ^D [ Para [ Str "Hi" , Space , RawInline (Format "ms") "there" , Str "." ] ] ```` ```` % pandoc -t native ~~~ {=ms} .MACRO foo bar ~~~ ^D [ RawBlock (Format "ms") ".MACRO\nfoo bar" ] ```` pandoc-3.1.3/test/command/3539.md0000644000000000000000000001070707346545000014502 0ustar0000000000000000# Commands of [glossaries package](ftp://ftp.tu-chemnitz.de/pub/tex/macros/latex/contrib/glossaries/glossaries-code.pdf) ``` % pandoc -f latex -t native Many programming languages provide \glspl{API}. Each \gls{API} should provide a documentation. ^D [ Para [ Str "Many" , Space , Str "programming" , Space , Str "languages" , Space , Str "provide" , Space , Span ( "" , [] , [ ( "acronym-label" , "API" ) , ( "acronym-form" , "plural+short" ) ] ) [ Str "APIs" ] , Str "." , Space , Str "Each" , Space , Span ( "" , [] , [ ( "acronym-label" , "API" ) , ( "acronym-form" , "singular+short" ) ] ) [ Str "API" ] , Space , Str "should" , Space , Str "provide" , Space , Str "a" , Space , Str "documentation." ] ] ``` ``` % pandoc -f latex -t native \Glsdesc{API} XYZ ist not as performant as \glsdesc{API} ZXY. ^D [ Para [ Span ( "" , [] , [ ( "acronym-label" , "API" ) , ( "acronym-form" , "singular+long" ) ] ) [ Str "API" ] , Space , Str "XYZ" , Space , Str "ist" , Space , Str "not" , Space , Str "as" , Space , Str "performant" , Space , Str "as" , Space , Span ( "" , [] , [ ( "acronym-label" , "API" ) , ( "acronym-form" , "singular+long" ) ] ) [ Str "API" ] , Space , Str "ZXY." ] ] ``` ``` % pandoc -f latex -t native \Acrlong{API} XYZ ist not as performant as \acrlong{API} ZXY. ^D [ Para [ Span ( "" , [] , [ ( "acronym-label" , "API" ) , ( "acronym-form" , "singular+long" ) ] ) [ Str "API" ] , Space , Str "XYZ" , Space , Str "ist" , Space , Str "not" , Space , Str "as" , Space , Str "performant" , Space , Str "as" , Space , Span ( "" , [] , [ ( "acronym-label" , "API" ) , ( "acronym-form" , "singular+long" ) ] ) [ Str "API" ] , Space , Str "ZXY." ] ] ``` ``` % pandoc -f latex -t native \Acrfull{API} XYZ ist not as performant as \acrfull{API} ZXY. ^D [ Para [ Span ( "" , [] , [ ( "acronym-label" , "API" ) , ( "acronym-form" , "singular+full" ) ] ) [ Str "API" ] , Space , Str "XYZ" , Space , Str "ist" , Space , Str "not" , Space , Str "as" , Space , Str "performant" , Space , Str "as" , Space , Span ( "" , [] , [ ( "acronym-label" , "API" ) , ( "acronym-form" , "singular+full" ) ] ) [ Str "API" ] , Space , Str "ZXY." ] ] ``` ``` % pandoc -f latex -t native \Acrshort{API} XYZ ist not as performant as \acrshort{API} ZXY. ^D [ Para [ Span ( "" , [] , [ ( "acronym-label" , "API" ) , ( "acronym-form" , "singular+abbrv" ) ] ) [ Str "API" ] , Space , Str "XYZ" , Space , Str "ist" , Space , Str "not" , Space , Str "as" , Space , Str "performant" , Space , Str "as" , Space , Span ( "" , [] , [ ( "acronym-label" , "API" ) , ( "acronym-form" , "singular+abbrv" ) ] ) [ Str "API" ] , Space , Str "ZXY." ] ] ``` # Commands of [acronym package](ftp://ftp.mpi-sb.mpg.de/pub/tex/mirror/ftp.dante.de/pub/tex/macros/latex/contrib/acronym/acronym.pdf) ``` % pandoc -f latex -t native Many programming languages provide \acp{API}. Each \ac{API} should provide a documentation. ^D [ Para [ Str "Many" , Space , Str "programming" , Space , Str "languages" , Space , Str "provide" , Space , Span ( "" , [] , [ ( "acronym-label" , "API" ) , ( "acronym-form" , "plural+short" ) ] ) [ Str "APIs" ] , Str "." , Space , Str "Each" , Space , Span ( "" , [] , [ ( "acronym-label" , "API" ) , ( "acronym-form" , "singular+short" ) ] ) [ Str "API" ] , Space , Str "should" , Space , Str "provide" , Space , Str "a" , Space , Str "documentation." ] ] ``` pandoc-3.1.3/test/command/3558.md0000644000000000000000000000023307346545000014474 0ustar0000000000000000``` % pandoc -t native \multi hello \endmulti ^D [ RawBlock (Format "tex") "\\multi" , Para [ Str "hello" ] , RawBlock (Format "tex") "\\endmulti" ] ``` pandoc-3.1.3/test/command/3568.md0000644000000000000000000000050307346545000014475 0ustar0000000000000000``` % pandoc -t man normal *italic **bold in the middle** only italic* normal. normal **bold `code` more bold** normal. normal `code` normal. ^D .PP normal \f[I]italic \f[BI]bold in the middle\f[I] only italic\f[R] normal. .PP normal \f[B]bold \f[VB]code\f[B] more bold\f[R] normal. .PP normal \f[V]code\f[R] normal. ``` pandoc-3.1.3/test/command/3570.md0000644000000000000000000000013507346545000014467 0ustar0000000000000000``` % pandoc -f markdown+autolink_bare_uris **Notes:** ^D

    Notes:

    ``` pandoc-3.1.3/test/command/3577.md0000644000000000000000000000146507346545000014505 0ustar0000000000000000``` % pandoc -f latex -t html5 --quiet \begin{figure}[ht] \begin{subfigure}{0.45\textwidth} \centering \includegraphics{img1.jpg} \caption{Caption 1} \end{subfigure} \begin{subfigure}{0.45\textwidth} \centering \includegraphics{img2.jpg} \caption{Caption 2} \end{subfigure} \caption{Subfigure with Subfloat} \end{figure} ^D
    Caption 1
    Caption 2
    Subfigure with Subfloat
    ``` ``` % pandoc -f latex -t html5 \begin{figure}[ht] \includegraphics{img1.jpg} \caption{Caption 3} \end{figure} ^D
    Caption 3
    ``` pandoc-3.1.3/test/command/3585.md0000644000000000000000000000144107346545000014476 0ustar0000000000000000``` % pandoc -f mediawiki+smart -t native "Hello" Same but bzip2 it and nice it zfs send tank/storage/data/svn@daily-2014-03-20_00.00.00--2w | nice -15 bzip2 | ssh user@hyper.somewhere.org "> /storage/c-3po/tank-storage-data-svn.dmp.bz2" ^D [ Para [ Quoted DoubleQuote [ Str "Hello" ] ] , Para [ Str "Same" , Space , Str "but" , Space , Str "bzip2" , Space , Str "it" , Space , Str "and" , Space , Str "nice" , Space , Str "it" , Space , Code ( "" , [] , [] ) "zfs send tank/storage/data/svn@daily-2014-03-20_00.00.00--2w | nice -15 bzip2 | ssh user@hyper.somewhere.org \"> /storage/c-3po/tank-storage-data-svn.dmp.bz2\"" ] ] ``` ``` % pandoc -f mediawiki -t native "Hello" ^D [ Para [ Str "\"Hello\"" ] ] ``` pandoc-3.1.3/test/command/3587.md0000644000000000000000000000613607346545000014506 0ustar0000000000000000``` % pandoc -f latex -t native \SI[round-precision=2]{1}{m} is equal to \SI{1000}{mm} ^D [ Para [ Str "1\160m" , Space , Str "is" , Space , Str "equal" , Space , Str "to" , Space , Str "1000\160mm" ] ] ``` ``` % pandoc -f latex -t native \SI[round-precision=2]{1}[\$]{} is equal to \SI{0.938094}{\euro} ^D [ Para [ Str "$\160\&1" , Space , Str "is" , Space , Str "equal" , Space , Str "to" , Space , Str "0.938094\160\8364" ] ] ``` ``` % pandoc -f latex -t native \SI{30}{\milli\meter} ^D [ Para [ Str "30\160mm" ] ] ``` ``` % pandoc -f latex -t native \SI{6}{\gram} ^D [ Para [ Str "6\160g" ] ] ``` ``` % pandoc -f latex -t native \SI{25}{\square\meter} ^D [ Para [ Str "25\160m" , Superscript [ Str "2" ] ] ] ``` ``` % pandoc -f latex -t native \SI{18.2}{\degreeCelsius} ^D [ Para [ Str "18.2\160\176C" ] ] ``` ``` % pandoc -f latex -t native \SI{18.2}{\celsius} ^D [ Para [ Str "18.2\160\176C" ] ] ``` # SIrange tests ## Integer range with simple common units ``` % pandoc -f latex -t native \SIrange{10}{20}{\gram} ^D [ Para [ Str "10\160g\8211\&20\160g" ] ] ``` ``` % pandoc -f latex -t native \SIrange{35}{9}{\milli\meter} ^D [ Para [ Str "35\160mm\8211\&9\160mm" ] ] ``` ``` % pandoc -f latex -t native \SIrange{4}{97367265}{\celsius} ^D [ Para [ Str "4\160\176C\8211\&97367265\160\176C" ] ] ``` ## Decimal range with simple units ``` % pandoc -f latex -t native \SIrange{4.5}{97367265.5}{\celsius} ^D [ Para [ Str "4.5\160\176C\8211\&97367265.5\160\176C" ] ] ``` ## Squared, cubed etc. units ``` % pandoc -f latex -t native \SIrange{10}{20}{\square\meter} ^D [ Para [ Str "10\160m" , Superscript [ Str "2" ] , Str "\8211\&20\160m" , Superscript [ Str "2" ] ] ] ``` ``` % pandoc -f latex -t native \SIrange{10}{20}{\cubic\meter} ^D [ Para [ Str "10\160m" , Superscript [ Str "3" ] , Str "\8211\&20\160m" , Superscript [ Str "3" ] ] ] ``` ``` % pandoc -f latex -t native \SIrange{10}{20}{\raisetothe{4}\meter} ^D [ Para [ Str "10\160m" , Superscript [ Str "4" ] , Str "\8211\&20\160m" , Superscript [ Str "4" ] ] ] ``` ``` % pandoc -f latex -t native \SIrange{10}{20}{\meter\squared} ^D [ Para [ Str "10\160m" , Superscript [ Str "2" ] , Str "\8211\&20\160m" , Superscript [ Str "2" ] ] ] ``` ``` % pandoc -f latex -t native \SIrange{10}{20}{\meter\cubed} ^D [ Para [ Str "10\160m" , Superscript [ Str "3" ] , Str "\8211\&20\160m" , Superscript [ Str "3" ] ] ] ``` ``` % pandoc -f latex -t native \SIrange{10}{20}{\meter\tothe{4}} ^D [ Para [ Str "10\160m" , Superscript [ Str "4" ] , Str "\8211\&20\160m" , Superscript [ Str "4" ] ] ] ``` ## Ignore round precision `round-precision` option appears to be ignored by `\SI` as of 7c6dbd37e, so `\SIrange` will ignore it as well. ``` % pandoc -f latex -t native \SIrange[round-precision=2]{10}{20}{\gram} ^D [ Para [ Str "10\160g\8211\&20\160g" ] ] ``` ``` % pandoc -f latex -t native \SIrange[round-precision=2]{10.0}{20.25}{\gram} ^D [ Para [ Str "10.0\160g\8211\&20.25\160g" ] ] ``` pandoc-3.1.3/test/command/3596.md0000644000000000000000000000122507346545000014500 0ustar0000000000000000``` % pandoc -f html -t markdown-raw_html-bracketed_spans-native_spans
    • foo
    • bar
    • baz
    ^D - foo - bar - baz ``` ``` % pandoc -f html -t markdown-raw_html-bracketed_spans-native_spans
    • foo
    • bar
      • subbar
    • baz
    ^D - foo - bar - subbar - baz ``` ``` % pandoc -f html -t markdown
    • foo
    • bar
    • baz
    ^D - foo - [bar]{#id} - baz ``` ``` % pandoc -f html -t markdown
    • foo

    • bar

    • baz

    ^D - foo - ::: {#id} bar ::: - baz ``` pandoc-3.1.3/test/command/3615.md0000644000000000000000000000040507346545000014467 0ustar0000000000000000``` % pandoc -f html -t markdown --reference-links foo Foo ^D [foo][] [Foo][1] [foo]: a [1]: b ``` ``` % pandoc -f html -t markdown --reference-links foo Foo ^D [foo][] [Foo] [foo]: a ``` pandoc-3.1.3/test/command/3619.md0000644000000000000000000000056607346545000014503 0ustar0000000000000000``` % pandoc -f html -t markdown --reference-links bar: baz ^D [bar][]: baz [bar]: foo ``` ``` % pandoc -f html -t markdown --reference-links bar(baz) ^D [bar][](baz) [bar]: foo ``` ``` % pandoc -f html -t markdown_strict --reference-links foo
    bar ^D [foo][] [bar] [foo]: a [bar]: b ``` pandoc-3.1.3/test/command/3630.md0000644000000000000000000000016607346545000014470 0ustar0000000000000000``` % pandoc -f markdown -t markdown --reference-links ![foo](bar.png){#myId} ^D ![foo] [foo]: bar.png {#myId} ``` pandoc-3.1.3/test/command/3667.md0000644000000000000000000000026207346545000014477 0ustar0000000000000000``` % pandoc -f textile | "link text":http://example.com/ | ^D
    link text
    ``` pandoc-3.1.3/test/command/3674.md0000644000000000000000000000063607346545000014502 0ustar0000000000000000Make sure we don't get duplicate reference links, even with `--reference-location=section`. ``` % pandoc --reference-links -t markdown --reference-location=section # a ![](a) # b ![](b) ^D # a ![][1] [1]: a # b ![][2] [2]: b ``` Subsidiary issue: allow line break between reference link url/title and attributes: ``` % pandoc [a] [a]: url {.class} ^D

    a

    ``` pandoc-3.1.3/test/command/3675.md0000644000000000000000000000020007346545000014466 0ustar0000000000000000```` % pandoc -t rst ```python print("hello") ``` > block quote ^D .. code:: python print("hello") .. block quote ```` pandoc-3.1.3/test/command/3681.md0000644000000000000000000000231007346545000014467 0ustar0000000000000000``` % pandoc -f latex -t native \newcommand{\cicd}{CI/CD\xspace} Software developers create \cicd pipelines to… Following issue can be resolved by \cicd: ^D [ Para [ Str "Software" , Space , Str "developers" , Space , Str "create" , Space , Str "CI/CD" , Space , Str "pipelines" , Space , Str "to\8230" , Space , Str "Following" , Space , Str "issue" , Space , Str "can" , Space , Str "be" , Space , Str "resolved" , Space , Str "by" , Space , Str "CI/CD:" ] ] ``` ``` % pandoc -f latex -t native \newcommand{\cicd}{CI/CD\xspace} \cicd\footnote{\url{https://en.wikipedia.org/wiki/CI/CD}} is awesome. ^D [ Para [ Str "CI/CD" , Note [ Para [ Link ( "" , [ "uri" ] , [] ) [ Str "https://en.wikipedia.org/wiki/CI/CD" ] ( "https://en.wikipedia.org/wiki/CI/CD" , "" ) ] ] , Space , Str "is" , Space , Str "awesome." ] ] ``` ``` % pandoc -f latex -t native \newcommand{\cicd}{CI/CD\xspace} \newcommand{\pipeline}{pipeline\xspace} \cicd\pipeline. ^D [ Para [ Str "CI/CD" , Space , Str "pipeline." ] ] ``` pandoc-3.1.3/test/command/3690.md0000644000000000000000000000010307346545000014465 0ustar0000000000000000``` % pandoc - [o] _hi_ ^D
    • [o] hi
    ``` pandoc-3.1.3/test/command/3701.md0000644000000000000000000000101707346545000014463 0ustar0000000000000000``` % pandoc --reference-location=block -t markdown --reference-links --wrap=preserve [a](u) [a](u) [a](u2) [A](u) [a](u){.foo} [a](u3) ^D [a] [a]: u [a] [a]: u [a][1] [A][] [a][2] [1]: u2 [A]: u [2]: u {.foo} [a][3] [3]: u3 ``` ``` % pandoc [a] [a]: u [a] [a]: u [a][1] [A][] [a][2] [1]: u2 [A]: u [2]: u {.foo} [a][3] [3]: u3 ^D

    a

    a

    a A a

    a

    ``` pandoc-3.1.3/test/command/3706.md0000644000000000000000000000472507346545000014501 0ustar0000000000000000Results marker can be hidden in block attributes (#3706) ``` % pandoc -f org -t native #+begin_src r :exports results :colnames yes data.frame(Id = 1:3, Desc = rep("La",3)) #+end_src #+caption: Lalelu. #+label: tab #+RESULTS: | Id | Desc | |----+------| | 1 | La | | 2 | La | | 3 | La | ^D [ Table ( "tab" , [] , [] ) (Caption Nothing [ Plain [ Str "Lalelu." ] ]) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Id" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Desc" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "La" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "La" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "3" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "La" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ``` ``` % pandoc -f org -t native #+begin_src R :exports none :colnames yes data.frame(Id = 1:2, Desc = rep("La",2)) #+end_src #+caption: Lalelu. #+label: tab #+RESULTS: | Id | Desc | |----+------| | 1 | La | | 2 | La | ^D [] ``` pandoc-3.1.3/test/command/3708.md0000644000000000000000000000231007346545000014467 0ustar0000000000000000``` % pandoc -f latex -t native \begin{tabular}{cc} A & B\&1 \\ C & D \end{tabular} ^D [ Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "A" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "B&1" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "C" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "D" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ``` pandoc-3.1.3/test/command/3715.md0000644000000000000000000000021607346545000014470 0ustar0000000000000000``` % pandoc -t markdown -f html --wrap=preserve xx yy zz ww qq ^D xx yy zz ww qq ``` pandoc-3.1.3/test/command/3716.md0000644000000000000000000000016607346545000014475 0ustar0000000000000000``` % pandoc {.foo} ^D

    http://example.com

    ``` pandoc-3.1.3/test/command/3730.md0000644000000000000000000000025407346545000014467 0ustar0000000000000000```` % pandoc nice line\ ``` code ``` ^D

    nice line

    code
    ```` ``` % pandoc # hi\ there ^D

    hi

    there

    ``` pandoc-3.1.3/test/command/3733.md0000644000000000000000000000030607346545000014470 0ustar0000000000000000```` % pandoc -t native - Item1 - Item2 ```yaml some: code ``` ^D [ BulletList [ [ Plain [ Str "Item1" ] ] , [ Plain [ Str "Item2" ] ] ] , CodeBlock ( "" , [ "yaml" ] , [] ) "some: code" ] ```` pandoc-3.1.3/test/command/3734.md0000644000000000000000000000355007346545000014475 0ustar0000000000000000``` % pandoc -t markdown_strict+pipe_tables | aaaaaaaaaaaa | bbbbb | ccccccccccc | |--------------|-------|--------------------------------------------------------------------------| | aaaaaaaaaaaa | | cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc | ^D | aaaaaaaaaaaa | bbbbb | ccccccccccc | |------------|-------|------------------------------------------------------| | aaaaaaaaaaaa | | cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc | ``` ``` % pandoc -t markdown_strict+pipe_tables-raw_html | aaaaaaaaaaaa | bbbbb | ccccccccccc | |--------------|-------|--------------------------------------------------------------------------| | aaaaaaaaaaaa | | cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc | ^D | aaaaaaaaaaaa | bbbbb | ccccccccccc | |------------|-------|------------------------------------------------------| | aaaaaaaaaaaa | | cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc | ``` ``` % pandoc -t gfm | aaaaaaaaaaaa | bbbbb | ccccccccccc | |--------------|-------|--------------------------------------------------------------------------| | aaaaaaaaaaaa | | cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc | ^D | aaaaaaaaaaaa | bbbbb | ccccccccccc | |--------------|-------|--------------------------------------------------------------------------| | aaaaaaaaaaaa | | cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc | ``` pandoc-3.1.3/test/command/3736.md0000644000000000000000000000043607346545000014477 0ustar0000000000000000``` % pandoc --wrap=preserve -f html -t markdown

    hi there

    ^D ## hi there ``` ``` % pandoc --wrap=preserve -f html -t markdown

    hi there again

    ^D ## hi *there again* ``` ``` % pandoc --wrap=preserve -f html -t markdown

    hi
    there

    ^D ## hi there ``` pandoc-3.1.3/test/command/3752.md0000644000000000000000000000423507346545000014476 0ustar0000000000000000``` % pandoc command/chap1/text.md command/chap2/text.md -f markdown+rebase_relative_paths --verbose -t docx -o - | pandoc -f docx -t plain ^D 2> [INFO] Loaded command/chap1/spider.png from command/chap1/spider.png 2> [INFO] Loaded command/chap2/spider.png from command/chap2/spider.png 2> [INFO] Loaded command/chap1/../../lalune.jpg from command/chap1/../../lalune.jpg Chapter one A spider: [spider] Another spider: [another spider] The moon: [moon] Link to spider picture. URL left alone: manual. Absolute path left alone: absolute. Link to fragment: chapter two. Empty path: empty. Chapter two A spider: [spider] ``` ``` % pandoc command/chap1/text.md command/chap2/text.md -f markdown+rebase_relative_paths -t html ^D

    Chapter one

    A spider: spider

    Another spider: another spider

    The moon: moon

    Link to spider picture.

    URL left alone: manual.

    Absolute path left alone: absolute.

    Link to fragment: chapter two.

    Empty path: empty.

    Chapter two

    A spider: spider

    ``` ``` % pandoc command/chap1/text.md command/chap2/text.md -f commonmark+rebase_relative_paths -t html ^D

    Chapter one

    A spider: spider

    Another spider: another spider

    The moon: moon

    Link to spider picture.

    URL left alone: manual.

    Absolute path left alone: absolute.

    Link to fragment: chapter two.

    Empty path: empty.

    Chapter two

    A spider: spider

    ``` pandoc-3.1.3/test/command/3755.md0000644000000000000000000000151607346545000014500 0ustar0000000000000000``` % pandoc -t native -s --- title: 'Titel' date: '22. Juni 2017' --- ^D Pandoc Meta { unMeta = fromList [ ( "date" , MetaInlines [ Str "22." , Space , Str "Juni" , Space , Str "2017" ] ) , ( "title" , MetaInlines [ Str "Titel" ] ) ] } [] ``` ``` % pandoc -t native -s --- title: "
    foo
    \n" date: | 22. Juni 2017 --- ^D Pandoc Meta { unMeta = fromList [ ( "date" , MetaBlocks [ OrderedList ( 22 , Decimal , Period ) [ [ Plain [ Str "Juni" , Space , Str "2017" ] ] ] ] ) , ( "title" , MetaBlocks [ Div ( "" , [] , [] ) [ Plain [ Str "foo" ] ] ] ) ] } [] ``` pandoc-3.1.3/test/command/3771.md0000644000000000000000000000031007346545000014465 0ustar0000000000000000``` % pandoc -f html -t org
    Today is a nice day.
    Tomorrow will be rainy.
    ^D Today is a nice day. <> Tomorrow will be rainy. ``` pandoc-3.1.3/test/command/3773.md0000644000000000000000000000015607346545000014477 0ustar0000000000000000``` % pandoc -t markdown A. \# B. \+ C. \* D. o E. o or \* ^D A. \# B. \+ C. \* D. o E. o or \* ``` pandoc-3.1.3/test/command/3779.md0000644000000000000000000000151107346545000014501 0ustar0000000000000000``` % pandoc -f latex -t native \newcommand{\fakeitemize}[1]{ \begin{itemize} #1 \end{itemize} } \newcommand{\testcmd}[1]{ #1 } \fakeitemize{ \item Pandoc is 100\% awesome. } \begin{itemize} \item Pandoc is 200\% awesome. \end{itemize} \testcmd{ Pandoc is 300\% awesome. } ^D [ BulletList [ [ Para [ Str "Pandoc" , Space , Str "is" , Space , Str "100%" , Space , Str "awesome." ] ] ] , BulletList [ [ Para [ Str "Pandoc" , Space , Str "is" , Space , Str "200%" , Space , Str "awesome." ] ] ] , Para [ Str "Pandoc" , Space , Str "is" , Space , Str "300%" , Space , Str "awesome." ] ] ``` pandoc-3.1.3/test/command/3792.md0000644000000000000000000000025507346545000014500 0ustar0000000000000000Make sure metadata values are treated as strings, and properly escaped. ``` % pandoc -t markdown -s -M title=" *that*" ok ^D --- title: \ \*that\* --- ok ``` pandoc-3.1.3/test/command/3794.md0000644000000000000000000000015407346545000014500 0ustar0000000000000000``` % pandoc -f html -t native

    hello

    ^D [ Div ( "" , [] , [] ) [ Para [ Str "hello" ] ] ] ``` pandoc-3.1.3/test/command/3803.md0000644000000000000000000000015707346545000014472 0ustar0000000000000000``` % pandoc -f markdown+raw_tex -t latex \begin{blah*} *ok* \end{blah*} ^D \begin{blah*} *ok* \end{blah*} ``` pandoc-3.1.3/test/command/3804.md0000644000000000000000000000041507346545000014470 0ustar0000000000000000``` % pandoc -t native \titleformat{\chapter}[display]{\normalfont\large\bfseries}{第\thechapter{}章}{20pt}{\Huge} ^D [ RawBlock (Format "tex") "\\titleformat{\\chapter}[display]{\\normalfont\\large\\bfseries}{\31532\\thechapter{}\31456}{20pt}{\\Huge}" ] ``` pandoc-3.1.3/test/command/3816.md0000644000000000000000000000124607346545000014476 0ustar0000000000000000``` % pandoc --mathjax -t html5 --wrap=preserve This is an equation: \begin{equation} y+2 = 3 \end{equation} This is a system of equations: \begin{align*} x^2+y^2 & = 2 \\ \sin(y) & = 0.5 \end{align*} This is Euler's formula: \begin{eqnarray*} e^{i\pi} + 1 & = & 0. \end{eqnarray*} ^D

    This is an equation: \[\begin{equation} y+2 = 3 \end{equation}\]

    This is a system of equations: \[\begin{align*} x^2+y^2 & = 2 \\ \sin(y) & = 0.5 \end{align*}\]

    This is Euler’s formula: \[\begin{eqnarray*} e^{i\pi} + 1 & = & 0. \end{eqnarray*}\]

    ``` pandoc-3.1.3/test/command/3824.md0000644000000000000000000000024607346545000014474 0ustar0000000000000000``` % pandoc -f native -t dokuwiki [BulletList [[Para [Str "hi"] ,CodeBlock ("",[],[]) " there"] ,[Para [Str "ok"]]]] ^D * hi there * ok ``` pandoc-3.1.3/test/command/3840.md0000644000000000000000000000054107346545000014470 0ustar0000000000000000``` % pandoc [@Alhazen1572-qk, V.9]: "competentius est" ^D

    [@Alhazen1572-qk, V.9]: “competentius est”

    ``` ``` % pandoc -f markdown-citations [@Alhazen1572-qk, V.9]: "competentius est" [@Alhazen1572-qk, V.9] ^D

    @Alhazen1572-qk, V.9

    ``` pandoc-3.1.3/test/command/3853.md0000644000000000000000000000061707346545000014500 0ustar0000000000000000``` % pandoc -f latex -t native \newtoggle{ebook} \toggletrue{ebook} \iftoggle{ebook}{ ebook }% { not ebook }% more \togglefalse{ebook} \iftoggle{ebook}{% ebook }{ not ebook }% more hello \iftoggle{ebook}{ebook}{noebook} ^D [ Para [ Str "ebook" , SoftBreak , Str "more" ] , Para [ Str "not" , Space , Str "ebook" , SoftBreak , Str "more" ] , Para [ Str "hello" , Space , Str "noebook" ] ] ``` pandoc-3.1.3/test/command/3880.md0000644000000000000000000000013107346545000014467 0ustar0000000000000000``` % pandoc -f rst -t native .. include:: command/3880.txt ^D [ Para [ Str "hi" ] ] ``` pandoc-3.1.3/test/command/3880.txt0000644000000000000000000000000307346545000014704 0ustar0000000000000000hi pandoc-3.1.3/test/command/3916.md0000644000000000000000000000042107346545000014471 0ustar0000000000000000``` % pandoc -f textile -t native # text text
    blabla
    # more ^D [ OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "text" , Space , Str "text" ] , CodeBlock ( "" , [] , [] ) "blabla" ] , [ Plain [ Str "more" ] ] ] ] ``` pandoc-3.1.3/test/command/3937.md0000644000000000000000000000023207346545000014474 0ustar0000000000000000``` % pandoc -t rst # My Great Section {#mysection} # Other section ^D .. _mysection: My Great Section ================ Other section ============= ``` pandoc-3.1.3/test/command/3947.md0000644000000000000000000000026507346545000014503 0ustar0000000000000000``` % pandoc -t native \newpage Code block Another Code block ^D [ RawBlock (Format "tex") "\\newpage" , CodeBlock ( "" , [] , [] ) "Code block\n\nAnother Code block" ] ``` pandoc-3.1.3/test/command/3958.md0000644000000000000000000000046307346545000014505 0ustar0000000000000000``` % pandoc -f latex -t native \texttt{"hi"} ^D [ Para [ Code ( "" , [] , [] ) "\"hi\"" ] ] ``` ``` % pandoc -f latex -t native \texttt{``hi''} ^D [ Para [ Code ( "" , [] , [] ) "\8220hi\8221" ] ] ``` ``` % pandoc -f latex -t native \texttt{`hi'} ^D [ Para [ Code ( "" , [] , [] ) "\8216hi\8217" ] ] ``` pandoc-3.1.3/test/command/3968.md0000644000000000000000000000032507346545000014503 0ustar0000000000000000``` % pandoc --top-level-division=chapter -t context # Chapter ## Section ^D \startchapter[title={Chapter},reference={chapter}] \startsection[title={Section},reference={section}] \stopsection \stopchapter ``` pandoc-3.1.3/test/command/3971.md0000644000000000000000000000022607346545000014475 0ustar0000000000000000``` % pandoc -f latex -t native \documentclass{article} \include{command/3971b} \code{f} \end{document} ^D [ Para [ Code ( "" , [] , [] ) "f" ] ] ``` pandoc-3.1.3/test/command/3971b.tex0000644000000000000000000000006407346545000015037 0ustar0000000000000000\newcommand{\code}[1]{\texttt{#1}} \begin{document} pandoc-3.1.3/test/command/3974.md0000644000000000000000000000011407346545000014474 0ustar0000000000000000``` % pandoc -f native -t rst [Code ("",[],[]) "``"] ^D :literal:`\`\`` ``` pandoc-3.1.3/test/command/3978.md0000644000000000000000000000006307346545000014503 0ustar0000000000000000``` % pandoc -t rst foo_bar*baz ^D foo_bar*baz ``` pandoc-3.1.3/test/command/3983.md0000644000000000000000000000123107346545000014475 0ustar0000000000000000``` % pandoc -f latex+raw_tex -t native \def\filename@area{foo:bar:baz} \makeatletter \graphicspath\expandafter{\expandafter{\filename@area}}% \makeatother ^D [ RawBlock (Format "latex") "\\makeatletter" , RawBlock (Format "latex") "\\makeatother" ] ``` ``` % pandoc -f latex+raw_tex -t native \makeatletter \newcommand\urlfootnote@[1]{\footnote{\url@{#1}}} \DeclareRobustCommand{\urlfootnote}{\hyper@normalise\urlfootnote@} \makeatother ^D [ RawBlock (Format "latex") "\\makeatletter" , RawBlock (Format "latex") "\\makeatother" ] ``` ``` % pandoc -f latex+raw_tex -t native \def\foo{bar} \expandafter\bam\foo ^D [ RawBlock (Format "latex") "\\bambar" ] ``` pandoc-3.1.3/test/command/3989.md0000644000000000000000000000073607346545000014514 0ustar0000000000000000``` % pandoc -f markdown -t native foo foo ^D [ Para [ Span ( "" , [] , [ ( "title" , "1st line of text
    2nd line of text" ) ] ) [ Str "foo" ] , SoftBreak , Span ( "" , [] , [ ( "title" , "1st line of text
    2nd line of text" ) ] ) [ Str "foo" ] ] ] ``` pandoc-3.1.3/test/command/4007.md0000644000000000000000000000053307346545000014465 0ustar0000000000000000``` % pandoc -f latex -t native \newcommand\arrow\to $a\arrow b$ ^D [ Para [ Math InlineMath "a\\to b" ] ] ``` ``` % pandoc -f latex -t native \newcommand\pfeil[1]{\to #1} $a\pfeil b$ ^D [ Para [ Math InlineMath "a\\to b" ] ] ``` ``` % pandoc -f latex -t native \newcommand\fleche{\to} $a\fleche b$ ^D [ Para [ Math InlineMath "a\\to b" ] ] ``` pandoc-3.1.3/test/command/4012.md0000644000000000000000000000030107346545000014452 0ustar0000000000000000``` % pandoc -f markdown-implicit_figures ![image] [image]: http://example.com/image.jpg {height=35mm} ^D

    image

    ``` pandoc-3.1.3/test/command/4016.md0000644000000000000000000000121007346545000014456 0ustar0000000000000000``` % pandoc -t beamer # Level 2 blocks
    ## Block one - Item
    ## Block two - Item
    ^D \begin{frame}{Level 2 blocks} \protect\hypertarget{level-2-blocks}{} \begin{columns}[T] \begin{column}{0.4\textwidth} \begin{block}{Block one} \protect\hypertarget{block-one}{} \begin{itemize} \tightlist \item Item \end{itemize} \end{block} \end{column} \begin{column}{0.6\textwidth} \begin{block}{Block two} \protect\hypertarget{block-two}{} \begin{itemize} \tightlist \item Item \end{itemize} \end{block} \end{column} \end{columns} \end{frame} ``` pandoc-3.1.3/test/command/4019.md0000644000000000000000000000022707346545000014470 0ustar0000000000000000``` % pandoc --wrap=preserve This works! This fails? ^D

    This works! This fails?

    ``` pandoc-3.1.3/test/command/4038.md0000644000000000000000000000007407346545000014471 0ustar0000000000000000``` % pandoc -f gfm -t gfm # ~~Header~~ ^D # ~~Header~~ ``` pandoc-3.1.3/test/command/4054.md0000644000000000000000000000047007346545000014467 0ustar0000000000000000``` % pandoc -t native -s -M title=New % Old ^D Pandoc Meta { unMeta = fromList [ ( "title" , MetaString "New" ) ] } [] ``` ``` % pandoc -t native -s -M foo=1 -M foo=2 ^D Pandoc Meta { unMeta = fromList [ ( "foo" , MetaList [ MetaString "1" , MetaString "2" ] ) ] } [] ``` pandoc-3.1.3/test/command/4056.md0000644000000000000000000000232307346545000014470 0ustar0000000000000000``` % pandoc -f markdown -t native \parbox[t]{0.4\textwidth}{ \begin{shaded} \end{shaded} } ^D [ RawBlock (Format "tex") "\\parbox[t]{0.4\\textwidth}{\n\\begin{shaded}\n\\end{shaded}\n}" ] ``` ``` % pandoc -f latex -t native \begin{tabular}{l*{2}{r}} Blah & Foo & Bar \\ \end{tabular} ^D [ Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignLeft , ColWidthDefault ) , ( AlignRight , ColWidthDefault ) , ( AlignRight , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Blah" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Foo" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Bar" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ``` pandoc-3.1.3/test/command/4061.md0000644000000000000000000000052107346545000014462 0ustar0000000000000000``` % pandoc -t markdown-simple_tables-multiline_tables-pipe_tables +-----------------------------------+ | Text [^1] | +-----------------------------------+ [^1]: Footnote. ^D +-----------------------------------+ | Text [^1] | +-----------------------------------+ [^1]: Footnote. ``` pandoc-3.1.3/test/command/4062.md0000644000000000000000000000017707346545000014472 0ustar0000000000000000``` % pandoc -t latex Sentence blah.\footnote[][-.5in]{I'm a footnote} ^D Sentence blah.\footnote[][-.5in]{I'm a footnote} ``` pandoc-3.1.3/test/command/4063.md0000644000000000000000000000154507346545000014473 0ustar0000000000000000``` % pandoc -f html -t native
    1 2
    ^D [ Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidth 0.3 ) , ( AlignDefault , ColWidth 0.7 ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ``` pandoc-3.1.3/test/command/4068.md0000644000000000000000000000117507346545000014477 0ustar0000000000000000``` % pandoc -f mediawiki -t native [https://domain.com/script.php?a=1&b=2&c=&d=4 open productname bugs] [http://domain.com?a=. open productname bugs] ^D [ Para [ Link ( "" , [] , [] ) [ Str "open" , Space , Str "productname" , Space , Str "bugs" ] ( "https://domain.com/script.php?a=1&b=2&c=&d=4" , "" ) ] , Para [ Str "[" , Link ( "" , [] , [] ) [ Str "http://domain.com?a=" ] ( "http://domain.com?a=" , "" ) , Str "." , Space , Str "open" , Space , Str "productname" , Space , Str "bugs]" ] ] ``` pandoc-3.1.3/test/command/4091.md0000644000000000000000000000012207346545000014462 0ustar0000000000000000``` % pandoc -f latex \alert<3>{foo} ^D

    foo

    ``` pandoc-3.1.3/test/command/4102.md0000644000000000000000000000031207346545000014454 0ustar0000000000000000SmallCaps spans can have additional attributes. ``` % pandoc -t latex -f markdown [Populus]{.smallcaps lang=la} [Romanus]{.smallcaps} ^D \foreignlanguage{latin}{\textsc{Populus}} \textsc{Romanus} ``` pandoc-3.1.3/test/command/4113.md0000644000000000000000000000017407346545000014464 0ustar0000000000000000``` % pandoc -t gfm ::::{.bug} I am a [bug]{#bug}. :::: ^D
    I am a bug.
    ``` pandoc-3.1.3/test/command/4119.md0000644000000000000000000000253707346545000014477 0ustar0000000000000000``` % pandoc -t native | col1 | col2 | | ---- | ---- | | 1 | 2 | ::: {.notes} ::: not a caption! :::::::::::::::: ^D [ Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "col1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "col2" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Div ( "" , [ "notes" ] , [] ) [ Para [ Str "not" , Space , Str "a" , Space , Str "caption!" ] ] ] ``` pandoc-3.1.3/test/command/4125.md0000644000000000000000000000006607346545000014467 0ustar0000000000000000``` % pandoc ^D ``` pandoc-3.1.3/test/command/4134.md0000644000000000000000000000044607346545000014471 0ustar0000000000000000``` % pandoc -f latex -t native Hello.\ world. ^D [ Para [ Str "Hello.\160world." ] ] ``` ``` % pandoc -f latex -t native Hello.\ world. ^D [ Para [ Str "Hello.\160world." ] ] ``` ``` % pandoc -f latex -t native Hello.\ World. ^D [ Para [ Str "Hello.\160" ] , Para [ Str "World." ] ] ``` pandoc-3.1.3/test/command/4156.md0000644000000000000000000000012207346545000014464 0ustar0000000000000000``` % pandoc -f rst .. _`SOMEID`: foo ^D

    foo

    ``` pandoc-3.1.3/test/command/4159.md0000644000000000000000000000023707346545000014476 0ustar0000000000000000``` % pandoc -f markdown -t native \newcommand{\gen}{a\ Gen\ b} abc ^D [ RawBlock (Format "tex") "\\newcommand{\\gen}{a\\ Gen\\ b}" , Para [ Str "abc" ] ] ``` pandoc-3.1.3/test/command/4162.md0000644000000000000000000000022307346545000014463 0ustar0000000000000000``` % pandoc -f html -t native
    hi

     there
    ^D [ LineBlock [ [ Str "hi" ] , [] , [ Str "\160there" ] ] ] ``` pandoc-3.1.3/test/command/4164.md0000644000000000000000000000140307346545000014466 0ustar0000000000000000``` % pandoc -f opml -t markdown test ^D # test ## try Here is inline html:
    ``{=html} bla bla
    ``` ``` % pandoc -f opml-raw_html-native_divs -t markdown test ^D # test ## try Here is inline html: \ \ bla bla \ ``` pandoc-3.1.3/test/command/4171.md0000644000000000000000000000121607346545000014466 0ustar0000000000000000``` % pandoc -f org -t org Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa [fn:1] a [fn:1] b ^D Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa [fn:1] a [fn:1] b ``` ``` % pandoc -f org -t org Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa [fn:1] a [fn:1] b ^D Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa [fn:1] a [fn:1] b ``` Similar bug: "-" should not be wrapped: ``` % pandoc -f org -t org aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa - abc ^D aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa - abc ``` pandoc-3.1.3/test/command/4172.md0000644000000000000000000000103507346545000014466 0ustar0000000000000000Test that text wrapping does not move note reference [1] to the beginning of the line, where it would become a note. ``` % pandoc -f muse -t muse Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa [1] a [1] b ^D Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa [1] a [1] b ``` SoftBreak test: ``` % pandoc -f muse -t muse Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa [1] a [1] b ^D Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa [1] a [1] b ``` pandoc-3.1.3/test/command/4183.md0000644000000000000000000000150007346545000014465 0ustar0000000000000000``` % pandoc -f html -t native
    bar
    ^D [ Figure ( "" , [] , [] ) (Caption Nothing []) [ Plain [ Image ( "" , [] , [] ) [ Str "bar" ] ( "foo" , "" ) ] ] ] ``` ``` % pandoc -f html -t native
    bar
    baz
    ^D [ Figure ( "" , [] , [] ) (Caption Nothing [ Div ( "" , [] , [] ) [ Plain [ Str "baz" ] ] ]) [ Plain [ Image ( "" , [] , [] ) [ Str "bar" ] ( "foo" , "" ) ] ] ] ``` ``` % pandoc -f html -t native

    baz

    ^D [ Figure ( "" , [] , [] ) (Caption Nothing [ Para [ Emph [ Str "baz" ] ] ]) [ Plain [ Image ( "" , [] , [] ) [] ( "foo" , "" ) ] ] ] ``` pandoc-3.1.3/test/command/4186.md0000644000000000000000000000475307346545000014505 0ustar0000000000000000``` % pandoc -f org -t native #+begin_example -i This should retain the four leading spaces #+end_example ^D [ CodeBlock ( "" , [ "example" ] , [] ) " This should retain the four leading spaces\n" ] ``` ``` % pandoc -f org -t html - depth 1 #+name: bob #+begin_example -i Vertical alignment is four spaces beyond the appearance of the word "depth". #+end_example - depth 2 #+begin_example Vertically aligned with the second appearance of the word "depth". #+end_example #+begin_example -i Vertical alignment is four spaces beyond the second appearance of the word "depth". The "begin" portion is a component of this deeper list element, so that guarantees that the entire block must be a component of the inner list element. #+end_example Still inside the inner list element #+name: carrie #+begin_example This belongs to the outer list element, and is aligned accordingly, since the NAME attribute is not indented deeply enough. It is not enough for the BEGIN alone to be aligned deeply if the block is meant to have a NAME. #+end_example Still in the shallower list element since the preceding example block forced the deeper list element to terminate. Outside all lists. ^D
    • depth 1

          Vertical alignment is four spaces beyond the appearance of the word "depth".
      
      • depth 2

        Vertically aligned with the second appearance of the word "depth".
        
            Vertical alignment is four spaces beyond the second
            appearance of the word "depth".
            The "begin" portion is a component of
            this deeper list element, so that guarantees
            that the entire block must be a component of the
            inner list element.
        

        Still inside the inner list element

      This belongs to the outer list element, and is aligned accordingly, since the NAME attribute is not indented deeply enough. It is not enough for the BEGIN alone to be aligned deeply if the block is meant to have a NAME.
      

      Still in the shallower list element since the preceding example block forced the deeper list element to terminate.

    Outside all lists.

    ``` pandoc-3.1.3/test/command/4193.md0000644000000000000000000000016307346545000014472 0ustar0000000000000000``` % pandoc -f rst -t native - a - b ^D [ BulletList [ [ Plain [ Str "a" ] ] , [ Plain [ Str "b" ] ] ] ] ``` pandoc-3.1.3/test/command/4199.md0000644000000000000000000000022507346545000014477 0ustar0000000000000000``` % pandoc -f latex -t native \foreignlanguage{ngerman}{foo} ^D [ Para [ Span ( "" , [] , [ ( "lang" , "de-DE" ) ] ) [ Str "foo" ] ] ] ``` pandoc-3.1.3/test/command/4208.md0000644000000000000000000000107407346545000014471 0ustar0000000000000000``` % pandoc -t latex What is a _piffle_? Mark the correct answer(s): \begin{TAB}(@)[6pt]{|l|c|}{|c|c|c|} (a) a subnormal woffle & $\Box$ \\ (b) an infinite-dimensional baffle & $\Box$ \\ (c) an inverted first-order triffle & $\Box$ \\ \end{TAB} ^D What is a \emph{piffle}? Mark the correct answer(s): \begin{TAB}(@)[6pt]{|l|c|}{|c|c|c|} (a) a subnormal woffle & $\Box$ \\ (b) an infinite-dimensional baffle & $\Box$ \\ (c) an inverted first-order triffle & $\Box$ \\ \end{TAB} ``` pandoc-3.1.3/test/command/4235.md0000644000000000000000000000061107346545000014465 0ustar0000000000000000``` % pandoc --id-prefix=foo This.^[Has a footnote.] ^D

    This.1

    ``` pandoc-3.1.3/test/command/4240.md0000644000000000000000000000115707346545000014467 0ustar0000000000000000``` % pandoc -f rst -s -t native ===== Title ===== -------- Subtitle -------- header1 ======= header2 ------- .. _id: header3 ~~~~~~~ .. _id2: .. _id3: header4 ~~~~~~~ ^D Pandoc Meta { unMeta = fromList [ ( "subtitle" , MetaInlines [ Str "Subtitle" ] ) , ( "title" , MetaInlines [ Str "Title" ] ) ] } [ Header 1 ( "header1" , [] , [] ) [ Str "header1" ] , Header 2 ( "header2" , [] , [] ) [ Str "header2" ] , Header 3 ( "id" , [] , [] ) [ Str "header3" ] , Header 3 ( "id3" , [] , [] ) [ Str "header4" , Span ( "id2" , [] , [] ) [] ] ] ``` pandoc-3.1.3/test/command/4253.md0000644000000000000000000000020007346545000014457 0ustar0000000000000000``` % pandoc -f latex -t native \newcommand{\noop}[1]{#1} \noop{\newcommand{\foo}[1]{#1}} \foo{hi} ^D [ Para [ Str "hi" ] ] ``` pandoc-3.1.3/test/command/4254.md0000644000000000000000000000016707346545000014474 0ustar0000000000000000``` % pandoc -f rst -t latex .. math:: x &= y\\ y &= z ^D \[\begin{aligned} x &= y\\ y &= z \end{aligned}\] ``` pandoc-3.1.3/test/command/4280.md0000644000000000000000000000015107346545000014464 0ustar0000000000000000``` % pandoc -f rst -t native Driver ------ ^D [ Header 1 ( "driver" , [] , [] ) [ Str "Driver" ] ] ``` pandoc-3.1.3/test/command/4281.md0000644000000000000000000000045007346545000014467 0ustar0000000000000000``` % pandoc -t native :::: {.a} - ::: {.b} text ::: ::: {.c} text ::: :::: ^D [ Div ( "" , [ "a" ] , [] ) [ BulletList [ [ Div ( "" , [ "b" ] , [] ) [ Para [ Str "text" ] ] , Div ( "" , [ "c" ] , [] ) [ Para [ Str "text" ] ] ] ] ] ] ``` pandoc-3.1.3/test/command/4284.md0000644000000000000000000000515207346545000014476 0ustar0000000000000000``` % pandoc -f org -t native #+EXCLUDE_TAGS:apple cat bye dog % * This should not appear :apple: * NOEXPORT should appear if not specified in EXCLUDE_TAGS :noexport: * This should not appear :cat:hi:laptop: ** Children of headers with excluded tags should not appear :xylophone: * This should not appear :%: ^D [ Header 1 ( "noexport-should-appear-if-not-specified-in-excludetags" , [] , [] ) [ Str "NOEXPORT" , Space , Str "should" , Space , Str "appear" , Space , Str "if" , Space , Str "not" , Space , Str "specified" , Space , Str "in" , Space , Str "EXCLUDE" , Subscript [ Str "TAGS" ] , Space , Span ( "" , [ "tag" ] , [ ( "tag-name" , "noexport" ) ] ) [ SmallCaps [ Str "noexport" ] ] ] ] ``` ``` % pandoc -f org -t native #+EXCLUDE_TAGS:elephant * This should not appear :elephant: * This should appear :fawn: ^D [ Header 1 ( "this-should-appear" , [] , [] ) [ Str "This" , Space , Str "should" , Space , Str "appear" , Space , Span ( "" , [ "tag" ] , [ ( "tag-name" , "fawn" ) ] ) [ SmallCaps [ Str "fawn" ] ] ] ] ``` ``` % pandoc -f org -t native #+EXCLUDE_TAGS: giraffe #+EXCLUDE_TAGS: hippo * This should not appear :giraffe: * This should not appear :hippo: * This should appear :noexport: ^D [ Header 1 ( "this-should-appear" , [] , [] ) [ Str "This" , Space , Str "should" , Space , Str "appear" , Space , Span ( "" , [ "tag" ] , [ ( "tag-name" , "noexport" ) ] ) [ SmallCaps [ Str "noexport" ] ] ] ] ``` ``` % pandoc -f org -t native #+EXCLUDE_TAGS: * NOEXPORT should appear if not specified in EXCLUDE_TAGS :noexport: ^D [ Header 1 ( "noexport-should-appear-if-not-specified-in-excludetags" , [] , [] ) [ Str "NOEXPORT" , Space , Str "should" , Space , Str "appear" , Space , Str "if" , Space , Str "not" , Space , Str "specified" , Space , Str "in" , Space , Str "EXCLUDE" , Subscript [ Str "TAGS" ] , Space , Span ( "" , [ "tag" ] , [ ( "tag-name" , "noexport" ) ] ) [ SmallCaps [ Str "noexport" ] ] ] ] ``` pandoc-3.1.3/test/command/4306.md0000644000000000000000000000052507346545000014470 0ustar0000000000000000``` % pandoc -f latex -t native \documentclass{article} \usepackage{hyperref} \begin{document} The file id is \nolinkurl{ESP_123_5235}. \end{document} ^D [ Para [ Str "The" , Space , Str "file" , Space , Str "id" , Space , Str "is" , Space , Code ( "" , [] , [] ) "ESP_123_5235" , Str "." ] ] ``` pandoc-3.1.3/test/command/4320.md0000644000000000000000000000171207346545000014463 0ustar0000000000000000``` % pandoc -f native -t rst --wrap=none [Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidth 0.3) ,(AlignDefault,ColWidth 0.3)] (TableHead ("",[],[]) [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "one"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "two"]]]]) [(TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "ports"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [BlockQuote [Para [Strong [Str "thisIsGoingToBeTooLongAnyway"]]]]]])] (TableFoot ("",[],[]) [])] ^D +--------------------+-------------------------------------+ | one | two | +====================+=====================================+ | ports | **thisIsGoingToBeTooLongAnyway** | +--------------------+-------------------------------------+ ``` pandoc-3.1.3/test/command/4374.md0000644000000000000000000000057507346545000014502 0ustar0000000000000000``` % pandoc -f latex -t native \cite{a% } ^D [ Para [ Cite [ Citation { citationId = "a" , citationPrefix = [] , citationSuffix = [] , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } ] [ RawInline (Format "latex") "\\cite{a%\n}" ] ] ] ``` pandoc-3.1.3/test/command/4382.md0000644000000000000000000000012507346545000014470 0ustar0000000000000000``` % pandoc -f rst -t native - ===== ^D [ BulletList [ [] ] , HorizontalRule ] ``` pandoc-3.1.3/test/command/4420.md0000644000000000000000000000030607346545000014462 0ustar0000000000000000``` % pandoc -f native -t rst [Para [Image ("",["align-right"],[("width","100px")]) [Str "image"] ("foo.png","fig:test")]] ^D .. image:: foo.png :alt: image :align: right :width: 100px ``` pandoc-3.1.3/test/command/4424.md0000644000000000000000000000024407346545000014467 0ustar0000000000000000``` % pandoc -f latex -t native \documentclass{article} \usepackage[sortlocale=en_GB]{biblatex} \begin{document} Test \end{document} ^D [ Para [ Str "Test" ] ] ``` pandoc-3.1.3/test/command/4442.md0000644000000000000000000000025707346545000014473 0ustar0000000000000000``` % pandoc -f markdown -t latex \newcommand{\myFruit}{Mango\xspace} \myFruit is the king of fruits. ^D \newcommand{\myFruit}{Mango\xspace} Mango is the king of fruits. ``` pandoc-3.1.3/test/command/4454.md0000644000000000000000000000016607346545000014475 0ustar0000000000000000``` % pandoc -f rst -t native • a • b ^D [ BulletList [ [ Plain [ Str "a" ] ] , [ Plain [ Str "b" ] ] ] ] ``` pandoc-3.1.3/test/command/4465.md0000644000000000000000000000064407346545000014500 0ustar0000000000000000``` % pandoc -f html -t markdown
    1. An ordered list can contain block-level elements ind html, it means that divs are also allowed.
    2. Let's see the problem!
      This is an example.
    ^D 1. An ordered list can contain block-level elements ind html, it means that divs are also allowed. 2. Let\'s see the problem! ::: example This is an example. ::: ``` pandoc-3.1.3/test/command/4499.md0000644000000000000000000000224507346545000014506 0ustar0000000000000000``` % pandoc -f latex -t html \mbox{abc def} ghi ^D

    abc def ghi

    ``` ``` % pandoc -f latex+raw_tex -t native \mbox{abc def} ^D [ Para [ RawInline (Format "latex") "\\mbox{abc def}" ] ] ``` ``` % pandoc -f latex -t html abc \mbox{\textit{def ghi} jkl} mno ^D

    abc def ghi jkl mno

    ``` ``` % pandoc -f latex -t html abc \mbox{def \\ ghi} jkl ^D

    abc defghi jkl

    ``` ``` % pandoc -f latex -t html abc \mbox{def ghi} ^D

    abc def ghi

    ``` ``` % pandoc -f latex -t html abc \mbox{def \textit{ghi \\ jkl} mno} pqr ^D

    abc def ghijkl mno pqr

    ``` ``` % pandoc -f latex -t html \hbox{abc def} ghi ^D

    abc def ghi

    ``` ``` % pandoc -f latex+raw_tex -t native \hbox{abc def} ^D [ Para [ RawInline (Format "latex") "\\hbox{abc def}" ] ] ``` ``` % pandoc -f latex -t html abc \hbox{\textit{def ghi} jkl} mno ^D

    abc def ghi jkl mno

    ``` ``` % pandoc -f latex -t html abc \hbox{def \\ ghi} jkl ^D

    abc defghi jkl

    ``` ``` % pandoc -f latex -t html abc \hbox{def ghi} ^D

    abc def ghi

    ``` ``` % pandoc -f latex -t html abc \hbox{def \textit{ghi \\ jkl} mno} pqr ^D

    abc def ghijkl mno pqr

    ``` pandoc-3.1.3/test/command/4513.md0000644000000000000000000000143707346545000014473 0ustar0000000000000000``` % pandoc -f textile -t native |_. heading 1 |_. heading 2| ^D [ Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "heading" , Space , Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "heading" , Space , Str "2" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [] ] (TableFoot ( "" , [] , [] ) []) ] ``` pandoc-3.1.3/test/command/4527.md0000644000000000000000000000040707346545000014474 0ustar0000000000000000This command comes through as regular text: ``` % pandoc -f latex+raw_tex -t native \maketitle ^D [ RawBlock (Format "latex") "\\maketitle" ] ``` ``` % pandoc -f latex -t native \maketitle ^D [] ``` ``` % pandoc -f latex -t rst \maketitle Hello. ^D Hello. ``` pandoc-3.1.3/test/command/4528.md0000644000000000000000000000753607346545000014507 0ustar0000000000000000# Rendering small caps, superscripts and subscripts with and without `raw_html` ## Small caps ``` % pandoc --wrap=none -f latex -t commonmark-raw_html This has \textsc{small caps} in it. ^D This has SMALL CAPS in it. ``` ``` % pandoc --wrap=none -f latex -t commonmark+raw_html This has \textsc{small caps} in it. ^D This has small caps in it. ``` ``` % pandoc --wrap=none -f latex -t markdown_strict+raw_html This has \textsc{small caps} in it. ^D This has small caps in it. ``` ## Strikeout ``` % pandoc --wrap=none -f html -t commonmark-raw_html-strikeout This has strikeout in it. ^D This has strikeout in it. ``` ``` % pandoc --wrap=none -f html -t commonmark+raw_html-strikeout This has strikeout in it. ^D This has strikeout in it. ``` ``` % pandoc --wrap=none -f html -t commonmark-raw_html+strikeout This has strikeout in it. ^D This has ~~strikeout~~ in it. ``` ``` % pandoc --wrap=none -f html -t commonmark+raw_html+strikeout This has strikeout in it. ^D This has ~~strikeout~~ in it. ``` ``` % pandoc --wrap=none -f html -t markdown_strict-raw_html-strikeout This has strikeout in it. ^D This has strikeout in it. ``` ``` % pandoc --wrap=none -f html -t markdown_strict+raw_html-strikeout This has strikeout in it. ^D This has strikeout in it. ``` ``` % pandoc --wrap=none -f html -t markdown_strict-raw_html+strikeout This has strikeout in it. ^D This has ~~strikeout~~ in it. ``` ``` % pandoc --wrap=none -f html -t markdown_strict+raw_html+strikeout This has strikeout in it. ^D This has ~~strikeout~~ in it. ``` ## Superscript ``` % pandoc --wrap=none -f html -t commonmark-raw_html This has superscript in it and 2 3 again. With emphasis: 2 3. With letters: foo. With a span: 2. ^D This has ^(superscript) in it and ² ³ again. With emphasis: ^(*2* 3). With letters: ^(foo). With a span: ². ``` ``` % pandoc --wrap=none -f html -t commonmark+raw_html This has superscript in it and 2 again. ^D This has superscript in it and 2 again. ``` ``` % pandoc --wrap=none -f html -t markdown_strict-raw_html-superscript This has superscript in it and 2 again. ^D This has ^(superscript) in it and ² again. ``` ``` % pandoc --wrap=none -f html -t markdown_strict+raw_html-superscript This has superscript in it and 2 again. ^D This has superscript in it and 2 again. ``` ``` % pandoc --wrap=none -f html -t markdown_strict+raw_html+superscript This has superscript in it and 2 again. ^D This has ^superscript^ in it and ^2^ again. ``` ## Subscript ``` % pandoc --wrap=none -f html -t commonmark-raw_html This has subscript in it and 2 3 again. With emphasis: 2 3. With letters: foo. With a span: 2. ^D This has _(subscript) in it and ₂ ₃ again. With emphasis: _(*2* 3). With letters: _(foo). With a span: ₂. ``` ``` % pandoc --wrap=none -f html -t commonmark+raw_html This has subscript in it and 2 again. ^D This has subscript in it and 2 again. ``` ``` % pandoc --wrap=none -f html -t markdown_strict-raw_html-subscript This has subscript in it and 2 again. ^D This has _(subscript) in it and ₂ again. ``` ``` % pandoc --wrap=none -f html -t markdown_strict+raw_html-subscript This has subscript in it and 2 again. ^D This has subscript in it and 2 again. ``` ``` % pandoc --wrap=none -f html -t markdown_strict+raw_html+subscript This has subscript in it and 2 again. ^D This has ~subscript~ in it and ~2~ again. ``` pandoc-3.1.3/test/command/4529.md0000644000000000000000000000115607346545000014500 0ustar0000000000000000``` % pandoc -f latex -t plain+gutenberg \chapter{First chapter}\label{sec:chp1} The next chapter is Chapter~\ref{sec:chp2}. \section{First section}\label{sec:chp1sec1} The next section is Section~\ref{sec:chp2sec1}. \chapter{Second chapter}\label{sec:chp2} The previous chapter is Chapter~\ref{sec:chp1}. \section{First section}\label{sec:chp2sec1} The previous section is Section~\ref{sec:chp1sec1}. ^D FIRST CHAPTER The next chapter is Chapter 2. First section The next section is Section 2.1. SECOND CHAPTER The previous chapter is Chapter 1. First section The previous section is Section 1.1. ``` pandoc-3.1.3/test/command/4545.md0000644000000000000000000000022107346545000014466 0ustar0000000000000000``` % pandoc -t asciidoc Test 1 [my text] Test 2 ^D Test 1 {empty}[my text] Test 2 ``` ``` % pandoc -t asciidoc 4\. foo ^D {empty}4. foo ``` pandoc-3.1.3/test/command/4550.md0000644000000000000000000000014207346545000014464 0ustar0000000000000000``` % pandoc -f markdown-smart -t ms A ‘simple’ example ^D .LP A \[oq]simple\[cq] example ``` pandoc-3.1.3/test/command/4553.md0000644000000000000000000000044507346545000014475 0ustar0000000000000000``` % pandoc -f latex -t native foo \include{command/bar} ^D [ Para [ Str "foo" ] , Para [ Emph [ Str "hi" , Space , Str "there" ] ] ] ``` ``` % pandoc -f latex -t native foo \input{command/bar} ^D [ Para [ Str "foo" , Space , Emph [ Str "hi" , Space , Str "there" ] ] ] ``` pandoc-3.1.3/test/command/4564.md0000644000000000000000000000431307346545000014475 0ustar0000000000000000``` % pandoc -f native -t rst --list-tables [BlockQuote [Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidth 0.1527777777777778) ,(AlignDefault,ColWidth 0.1388888888888889) ,(AlignDefault,ColWidth 0.16666666666666666) ,(AlignDefault,ColWidth 0.375)] (TableHead ("",[],[]) [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Centered",SoftBreak,Str "Header"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Left",SoftBreak,Str "Aligned"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Right",SoftBreak,Str "Aligned"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Default",Space,Str "aligned"]]]]) [(TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "First"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "row"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "12.0"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Example",Space,Str "of",Space,Str "a",Space,Str "row",Space,Str "that",SoftBreak,Str "spans",Space,Str "multiple",Space,Str "lines."]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Second"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "row"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "5.0"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Here\8217s",Space,Str "another",Space,Str "one.",Space,Str "Note",SoftBreak,Str "the",Space,Str "blank",Space,Str "line",Space,Str "between",SoftBreak,Str "rows."]]]])] (TableFoot ("",[],[]) [])]] ^D .. list-table:: :widths: 11 10 12 27 :header-rows: 1 - - Centered Header - Left Aligned - Right Aligned - Default aligned - - First - row - 12.0 - Example of a row that spans multiple lines. - - Second - row - 5.0 - Here’s another one. Note the blank line between rows. ``` pandoc-3.1.3/test/command/4576.md0000644000000000000000000000017007346545000014475 0ustar0000000000000000``` % pandoc -f latex -t native $\rho_\text{D$_2$O}=866$ ^D [ Para [ Math InlineMath "\\rho_\\text{D$_2$O}=866" ] ] ``` pandoc-3.1.3/test/command/4578.md0000644000000000000000000000073207346545000014503 0ustar0000000000000000``` % pandoc -t markdown ------ ------- --------------- --------------------- One row 12.0 Example of a row that spans multiple lines. ------ ------- --------------- --------------------- ^D ------ ------- --------------- --------------------- One row 12.0 Example of a row that spans multiple lines. ------ ------- --------------- --------------------- ``` pandoc-3.1.3/test/command/4579.md0000644000000000000000000000233507346545000014505 0ustar0000000000000000``` % pandoc -f rst -t native .. list-table:: :header-rows: 1 * - Foo - Bar * - spam - ham ^D [ Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Foo" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Bar" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "spam" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "ham" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ``` pandoc-3.1.3/test/command/4589.md0000644000000000000000000000053607346545000014507 0ustar0000000000000000``` % pandoc -f markdown -t latex \newcommand{\one}[1]{#1} \newcommand{\two}[1]{#1} Formatting *is* working **here**. But sticking \one{two }\two{commands} together *breaks* formatting. ^D \newcommand{\one}[1]{#1} \newcommand{\two}[1]{#1} Formatting \emph{is} working \textbf{here}. But sticking two commands together \emph{breaks} formatting. ``` pandoc-3.1.3/test/command/4594.md0000644000000000000000000000063307346545000014501 0ustar0000000000000000``` % pandoc -f markdown -t latex Some **bold** text here. \begin{figure}[htbp] \centering \def\svgwidth{\columnwidth} \import{img/}{vectors.pdf_tex} \caption{Some caption.} \end{figure} Some *italic* text here. ^D Some \textbf{bold} text here. \begin{figure}[htbp] \centering \def\svgwidth{\columnwidth} \import{img/}{vectors.pdf_tex} \caption{Some caption.} \end{figure} Some \emph{italic} text here. ``` pandoc-3.1.3/test/command/4598.md0000644000000000000000000000015107346545000014500 0ustar0000000000000000``` % pandoc -f rst `x`__ __ `xy`_ .. _`xy`: http://xy.org ^D

    x

    ``` pandoc-3.1.3/test/command/4624.md0000644000000000000000000000100607346545000014466 0ustar0000000000000000``` % pandoc -f latex -t native \begin{Verbatim}[key1=value1] code1 \end{Verbatim} \begin{lstlisting}[key2=value2] code2 \end{lstlisting} \begin{verbatim} code3 \end{verbatim} \begin{verbatim} code4 \end{verbatim} \begin{verbatim} code5\end{verbatim} ^D [ CodeBlock ( "" , [] , [ ( "key1" , "value1" ) ] ) "code1\n" , CodeBlock ( "" , [] , [ ( "key2" , "value2" ) ] ) "code2\n " , CodeBlock ( "" , [] , [] ) "code3" , CodeBlock ( "" , [] , [] ) "code4" , CodeBlock ( "" , [] , [] ) "code5" ] ``` pandoc-3.1.3/test/command/4635.md0000644000000000000000000000067707346545000014505 0ustar0000000000000000``` % pandoc -f markdown -t native (cf. foo) ^D [ Para [ Str "(cf." , SoftBreak , Str "foo)" ] ] ``` ``` % pandoc -f markdown -t native a (cf. foo) ^D [ Para [ Str "a" , Space , Str "(cf." , SoftBreak , Str "foo)" ] ] ``` ``` % pandoc -f markdown -t native cf. foo ^D [ Para [ Str "cf." , SoftBreak , Str "foo" ] ] ``` ``` % pandoc -f markdown -t native a cf. foo ^D [ Para [ Str "a" , Space , Str "cf." , SoftBreak , Str "foo" ] ] ``` pandoc-3.1.3/test/command/4637.md0000644000000000000000000000017107346545000014474 0ustar0000000000000000``` % pandoc -t latex more \indextext{dogs}' than \indextext{cats}' ^D more \indextext{dogs}' than \indextext{cats}' ``` pandoc-3.1.3/test/command/4639.md0000644000000000000000000000024507346545000014500 0ustar0000000000000000``` % pandoc -t html --mathjax \begin{equation} E=mc^2 \end{equation} ^D

    \[\begin{equation} E=mc^2 \end{equation}\]

    ``` pandoc-3.1.3/test/command/4653.md0000644000000000000000000000017107346545000014472 0ustar0000000000000000``` % pandoc -t latex \let\tex\TeX \renewcommand{\TeX}{\tex\xspace} ^D \let\tex\TeX \renewcommand{\TeX}{\tex\xspace} ``` pandoc-3.1.3/test/command/4667.md0000644000000000000000000000033707346545000014503 0ustar0000000000000000``` % pandoc -t latex --- header-includes: - \newcommand{\blandscape}{\begin{landscape}} - \newcommand{\elandscape}{\end{landscape}} ... \blandscape testing \elandscape ^D \begin{landscape} testing \end{landscape} ``` pandoc-3.1.3/test/command/4669.md0000644000000000000000000000105007346545000014476 0ustar0000000000000000``` % pandoc -f latex -t native {\tt <-} \begin{verbatim} while (n > 0) { \end{verbatim} ^D [ Para [ Span ( "" , [] , [] ) [ Code ( "" , [] , [] ) "<-" ] ] , CodeBlock ( "" , [] , [] ) " while (n > 0) {" ] ``` ``` % pandoc -f latex -t native \begin{itemize} \item<1> one \item<2-3,5> two \item<2| @alert> three \item four \item five \end{itemize} ^D [ BulletList [ [ Para [ Str "one" ] ] , [ Para [ Str "two" ] ] , [ Para [ Str "three" ] ] , [ Para [ Str "four" ] ] , [ Para [ Str "five" ] ] ] ] ``` pandoc-3.1.3/test/command/4677.md0000644000000000000000000000053507346545000014504 0ustar0000000000000000``` % pandoc --to "markdown-bracketed_spans-fenced_divs-link_attributes-simple_tables-multiline_tables-grid_tables-pipe_tables-fenced_code_attributes-markdown_in_html_blocks-table_captions-smart" ![Caption](img.png){#img:1} ^D
    Caption
    ``` pandoc-3.1.3/test/command/4690.md0000644000000000000000000000052207346545000014473 0ustar0000000000000000``` % pandoc -t beamer # title :::: {.columns} ::: {.column width="8%"} content ::: ::: {.column width="84%"} content2 ::: :::: ^D \begin{frame}{title} \protect\hypertarget{title}{} \begin{columns}[T] \begin{column}{0.08\textwidth} content \end{column} \begin{column}{0.84\textwidth} content2 \end{column} \end{columns} \end{frame} ``` pandoc-3.1.3/test/command/4715.md0000644000000000000000000000106707346545000014476 0ustar0000000000000000``` % pandoc -f rst -t native .. toctree:: :name: tree1 :class: foo bar :caption: Indice dei contenuti :numbered: :maxdepth: 3 premessa.rst acquisizione-software.rst riuso-software.rst ^D [ Div ( "tree1" , [ "toctree" , "foo" , "bar" ] , [ ( "caption" , "Indice dei contenuti" ) , ( "numbered" , "" ) , ( "maxdepth" , "3" ) ] ) [ Para [ Str "premessa.rst" , SoftBreak , Str "acquisizione-software.rst" , SoftBreak , Str "riuso-software.rst" ] ] ] ``` pandoc-3.1.3/test/command/4722.md0000644000000000000000000000201307346545000014464 0ustar0000000000000000``` % pandoc -f tikiwiki -t native *Level 1 *Level 1 **Level 2 ***Level 3 *Level 1 ^D [ BulletList [ [ Plain [ Str "Level" , Space , Str "1" ] ] , [ Plain [ Str "Level" , Space , Str "1" ] , BulletList [ [ Plain [ Str "Level" , Space , Str "2" ] , BulletList [ [ Plain [ Str "Level" , Space , Str "3" ] ] ] ] ] ] , [ Plain [ Str "Level" , Space , Str "1" ] ] ] ] ``` ``` % pandoc -f tikiwiki -t native #Level 1 #Level 1 ##Level 2 ###Level 3 #Level 1 ^D [ OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Level" , Space , Str "1" ] ] , [ Plain [ Str "Level" , Space , Str "1" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Level" , Space , Str "2" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Level" , Space , Str "3" ] ] ] ] ] ] , [ Plain [ Str "Level" , Space , Str "1" ] ] ] ] ``` pandoc-3.1.3/test/command/4742.md0000644000000000000000000000225207346545000014473 0ustar0000000000000000Check that the commonmark reader handles the `ascii_identifiers` extension properly. ``` % pandoc -f commonmark+gfm_auto_identifiers+ascii_identifiers -t native # non ascii ⚠️ räksmörgås ^D [ Header 1 ( "non-ascii--raksmorgas" , [] , [] ) [ Str "non" , Space , Str "ascii" , Space , Str "\9888\65039" , Space , Str "r\228ksm\246rg\229s" ] ] ``` Note that the emoji here is actually a composite character, formed from \9888 and \65039. The latter is a combining mark, so it survives... ``` % pandoc -f commonmark+gfm_auto_identifiers-ascii_identifiers -t native # non ascii ⚠️ räksmörgås ^D [ Header 1 ( "non-ascii-\65039-r\228ksm\246rg\229s" , [] , [] ) [ Str "non" , Space , Str "ascii" , Space , Str "\9888\65039" , Space , Str "r\228ksm\246rg\229s" ] ] ``` `gfm` should have `ascii_identifiers` disabled by default. ``` % pandoc -f gfm -t native # non ascii ⚠️ räksmörgås ^D [ Header 1 ( "non-ascii-\65039-r\228ksm\246rg\229s" , [] , [] ) [ Str "non" , Space , Str "ascii" , Space , Str "\9888\65039" , Space , Str "r\228ksm\246rg\229s" ] ] ``` pandoc-3.1.3/test/command/4743.md0000644000000000000000000000204307346545000014472 0ustar0000000000000000Test that emojis are wrapped in Span ``` % pandoc -f commonmark+emoji -t native My:thumbsup:emoji:heart: ^D [ Para [ Str "My" , Span ( "" , [ "emoji" ] , [ ( "data-emoji" , "thumbsup" ) ] ) [ Str "\128077" ] , Str "emoji" , Span ( "" , [ "emoji" ] , [ ( "data-emoji" , "heart" ) ] ) [ Str "\10084\65039" ] ] ] ``` ``` % pandoc -f markdown+emoji -t native My:thumbsup:emoji:heart: ^D [ Para [ Str "My" , Span ( "" , [ "emoji" ] , [ ( "data-emoji" , "thumbsup" ) ] ) [ Str "\128077" ] , Str "emoji" , Span ( "" , [ "emoji" ] , [ ( "data-emoji" , "heart" ) ] ) [ Str "\10084\65039" ] ] ] ``` ``` % pandoc -f commonmark+emoji -t html :zero: header ============= My:thumbsup:emoji:heart:x :hearts: xyz ^D

    0️⃣ header

    My👍emoji❤️x ♥️ xyz

    ``` pandoc-3.1.3/test/command/4748.md0000644000000000000000000000033107346545000014475 0ustar0000000000000000``` % pandoc -f org -t rst Before example block. #+begin_example This is in an example block. #+end_example After example block. ^D Before example block. :: This is in an example block. After example block. ``` pandoc-3.1.3/test/command/4768.md0000644000000000000000000000016407346545000014503 0ustar0000000000000000``` % pandoc -f latex -t plain \def\foo#1!#2!#3{#1 or #2 and #3} \foo aa!bbb bbb!{ccc} ^D aa or bbb bbb and ccc ``` pandoc-3.1.3/test/command/4781.md0000644000000000000000000000113307346545000014473 0ustar0000000000000000``` % pandoc -t native Markdown parsed *here* \include{command/bar} *But not here* ^D [ Para [ Str "Markdown" , Space , Str "parsed" , Space , Emph [ Str "here" ] ] , RawBlock (Format "tex") "\\include{command/bar}" , Para [ Emph [ Str "But" , Space , Str "not" , Space , Str "here" ] ] ] ``` ``` % pandoc -t native *here* \input{command/bar} *But not here* ^D [ Para [ Emph [ Str "here" ] , Space , RawInline (Format "tex") "\\input{command/bar}" ] , Para [ Emph [ Str "But" , Space , Str "not" , Space , Str "here" ] ] ] ``` pandoc-3.1.3/test/command/4794.md0000644000000000000000000000033207346545000014477 0ustar0000000000000000``` % pandoc -f markdown -t mediawiki | Column1 | Column2 | Column3 | | ------- | ------- | ------- | | text | | text | ^D {| class="wikitable" |- ! Column1 ! Column2 ! Column3 |- | text | | text |} ``` pandoc-3.1.3/test/command/4805-beamer-columns-alignment.md0000644000000000000000000000122207346545000021352 0ustar0000000000000000``` % pandoc -t beamer :::: { .columns } ::: { .column align=center } ::: ::: { .column align=bottom } ::: :::: :::: { .columns align=bottom .onlytextwidth } ::: { .column align=top } ::: ::: { .column align=top-baseline } ::: :::: :::: { .columns totalwidth=7em } :::: ^D \begin{frame} \begin{columns}[T] \begin{column}[c]{0.48\textwidth} \end{column} \begin{column}[b]{0.48\textwidth} \end{column} \end{columns} \begin{columns}[b,onlytextwidth] \begin{column}[T]{0.48\textwidth} \end{column} \begin{column}[t]{0.48\textwidth} \end{column} \end{columns} \begin{columns}[T,totalwidth=7em] \end{columns} \end{frame} ``` pandoc-3.1.3/test/command/4811.md0000644000000000000000000000170107346545000014466 0ustar0000000000000000No blank lines in inline interpreted roles: ``` % pandoc -f rst -t native `no blank`:myrole: ^D [ Para [ Str "`no" ] , Para [ Str "blank`:myrole:" ] ] ``` Backslash escape behaves properly in interpreted roles: ``` % pandoc -f rst -t native `hi\ there`:sup: `hi\ there`:code: ^D [ Para [ Superscript [ Str "hithere" ] ] , Para [ Code ( "" , [] , [] ) "hi\\ there" ] ] ``` Backtick followed by alphanumeric doesn't end the span: ``` % pandoc -f rst -t native `hi`there`:myrole: ^D [ Para [ Code ( "" , [ "interpreted-text" ] , [ ( "role" , "myrole" ) ] ) "hi`there" ] ] ``` Newline is okay, as long as not blank: ``` % pandoc -f rst -t native `hi there`:myrole: ^D [ Para [ Code ( "" , [ "interpreted-text" ] , [ ( "role" , "myrole" ) ] ) "hi\nthere" ] ] ``` Use span for title-reference: ``` % pandoc -f rst -t native `default` ^D [ Para [ Span ( "" , [ "title-ref" ] , [] ) [ Str "default" ] ] ] ``` pandoc-3.1.3/test/command/4817.md0000644000000000000000000000045407346545000014500 0ustar0000000000000000``` % pandoc -t native -s --- foo: - bar: bam ... ^D Pandoc Meta { unMeta = fromList [ ( "foo" , MetaList [ MetaMap (fromList [ ( "bar" , MetaInlines [ Str "bam" ] ) ]) ] ) ] } [] ``` pandoc-3.1.3/test/command/4819.md0000644000000000000000000000126107346545000014477 0ustar0000000000000000``` % pandoc -f markdown -t native -s --- foo: 42 ... ^D Pandoc Meta { unMeta = fromList [ ( "foo" , MetaInlines [ Str "42" ] ) ] } [] ``` ``` % pandoc -f markdown -t native -s --- foo: true ... ^D Pandoc Meta { unMeta = fromList [ ( "foo" , MetaBool True ) ] } [] ``` ``` % pandoc -f markdown -t native -s --- foo: True ... ^D Pandoc Meta { unMeta = fromList [ ( "foo" , MetaBool True ) ] } [] ``` ``` % pandoc -f markdown -t native -s --- foo: FALSE ... ^D Pandoc Meta { unMeta = fromList [ ( "foo" , MetaBool False ) ] } [] ``` ``` % pandoc -f markdown -t native -s --- foo: no ... ^D Pandoc Meta { unMeta = fromList [ ( "foo" , MetaBool False ) ] } [] ``` pandoc-3.1.3/test/command/4832.md0000644000000000000000000000125507346545000014475 0ustar0000000000000000``` % pandoc -f latex -t native \url{http://example.com/foo%20bar.htm} ^D [ Para [ Link ( "" , [ "uri" ] , [] ) [ Str "http://example.com/foo%20bar.htm" ] ( "http://example.com/foo%20bar.htm" , "" ) ] ] ``` ``` % pandoc -f latex -t native \url{http://example.com/foo{bar}.htm} ^D [ Para [ Link ( "" , [ "uri" ] , [] ) [ Str "http://example.com/foo{bar}.htm" ] ( "http://example.com/foo{bar}.htm" , "" ) ] ] ``` ``` % pandoc -f latex -t native \href{http://example.com/foo%20bar}{Foobar} ^D [ Para [ Link ( "" , [] , [] ) [ Str "Foobar" ] ( "http://example.com/foo%20bar" , "" ) ] ] ``` pandoc-3.1.3/test/command/4833.md0000644000000000000000000000040707346545000014474 0ustar0000000000000000``` % pandoc -f native -t rst [Div ("",["warning"],[]) [Div ("",["title"],[]) [Para [Str "Warning"]] ,Para [Str "Hi"]]] ^D .. warning:: Hi ``` ``` % pandoc -f native -t rst [Div ("",["unknown"],[]) [Para [Str "Hi"]]] ^D .. container:: unknown Hi ``` pandoc-3.1.3/test/command/4842.md0000644000000000000000000000010207346545000014464 0ustar0000000000000000``` % pandoc -f latex -t native \l ^D [ Para [ Str "\322" ] ] ``` pandoc-3.1.3/test/command/4845.md0000644000000000000000000000050507346545000014476 0ustar0000000000000000``` % pandoc -f html -t native x leading trailing space x ^D [ Plain [ Str "x" , Space , Link ( "" , [] , [] ) [ Str "leading" , Space , Str "trailing" , Space , Str "space" ] ( "/foo" , "" ) , Space , Str "x" ] ] ``` pandoc-3.1.3/test/command/4848.md0000644000000000000000000000326407346545000014506 0ustar0000000000000000``` % pandoc -f latex -t native \enquote*{hi} ^D [ Para [ Quoted SingleQuote [ Str "hi" ] ] ] ``` ``` % pandoc -f latex -t native \foreignquote{italian}{hi} ^D [ Para [ Quoted DoubleQuote [ Span ( "" , [] , [ ( "lang" , "it" ) ] ) [ Str "hi" ] ] ] ] ``` ``` % pandoc -f latex -t native \hyphenquote*{italian}{hi} ^D [ Para [ Quoted SingleQuote [ Span ( "" , [] , [ ( "lang" , "it" ) ] ) [ Str "hi" ] ] ] ] ``` ``` % pandoc -f latex -t native Lorem ipsum \blockquote{dolor sit amet} consectetuer. ^D [ Para [ Str "Lorem" , Space , Str "ipsum" ] , BlockQuote [ Para [ Str "dolor" , Space , Str "sit" , Space , Str "amet" ] ] , Para [ Str "consectetuer." ] ] ``` ``` % pandoc -f latex -t native Lorem ipsum \blockcquote[198]{Knu86}{dolor sit amet} consectetuer. ^D [ Para [ Str "Lorem" , Space , Str "ipsum" ] , BlockQuote [ Para [ Str "dolor" , Space , Str "sit" , Space , Str "amet" ] , Para [ Cite [ Citation { citationId = "Knu86" , citationPrefix = [] , citationSuffix = [ Str "198" ] , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } ] [] ] ] , Para [ Str "consectetuer." ] ] ``` ``` % pandoc -f latex -t native Lorem ipsum \foreignblockquote{italian}{dolor sit amet} consectetuer. ^D [ Para [ Str "Lorem" , Space , Str "ipsum" ] , BlockQuote [ Div ( "" , [] , [ ( "lang" , "it" ) ] ) [ Para [ Str "dolor" , Space , Str "sit" , Space , Str "amet" ] ] ] , Para [ Str "consectetuer." ] ] ``` pandoc-3.1.3/test/command/4860.md0000644000000000000000000000045507346545000014477 0ustar0000000000000000``` % pandoc -f rst -t native This is broken_. .. ***** REFERENCES FOLLOW ***** .. _broken: http://google.com ^D [ Para [ Str "This" , Space , Str "is" , Space , Link ( "" , [] , [] ) [ Str "broken" ] ( "http://google.com" , "" ) , Str "." ] ] ``` pandoc-3.1.3/test/command/4877.md0000644000000000000000000000045207346545000014504 0ustar0000000000000000``` % pandoc -f html -t native My ^D [ Plain [ Str "My" , Space , Math InlineMath "\\mathcal{D}" ] ] ``` ``` % pandoc -f html -t native ^D [ Plain [ Math DisplayMath "\\mathcal{D}" ] ] ``` pandoc-3.1.3/test/command/4880.md0000644000000000000000000000007407346545000014476 0ustar0000000000000000``` % pandoc -t latex $x=y%comment$ ^D \(x=y%comment \) ``` pandoc-3.1.3/test/command/4885.md0000644000000000000000000000046607346545000014510 0ustar0000000000000000``` % pandoc -f org -t markdown This won't show the command. src_maxima[:exports none :results raw]{tex('integrate(sin((e^x)/pi),x,0,inf));} $$\int_{0}^{\infty }{\sin \left({{e^{x}}\over{\pi}}\right)\;dx}$$ ^D This won\'t show the command. $$\int_{0}^{\infty }{\sin \left({{e^{x}}\over{\pi}}\right)\;dx}$$ ``` pandoc-3.1.3/test/command/4908.md0000644000000000000000000000031507346545000014475 0ustar0000000000000000``` % pandoc -f markdown_mmd+fancy_lists+example_lists -t native -t plain (@) Example one (@) Example two some text (@) Example three ^D (1) Example one (2) Example two some text (3) Example three ``` pandoc-3.1.3/test/command/4913.md0000644000000000000000000000121107346545000014465 0ustar0000000000000000``` % pandoc -f markdown -t html [https://pandoc.org](https://pandoc.org) ^D

    https://pandoc.org

    ``` ``` % pandoc -f markdown -t markdown [https://pandoc.org](https://pandoc.org) ^D ``` ``` % pandoc -f markdown -t html ^D

    https://pandoc.org

    ``` ``` % pandoc -f markdown -t html {.foo} ^D

    https://pandoc.org

    ``` ``` % pandoc -f markdown -t html ^D

    ``` pandoc-3.1.3/test/command/4919.md0000644000000000000000000000033407346545000014500 0ustar0000000000000000``` % pandoc -f rst -t native .. _`tgtmath`: .. math:: :name: V = \frac{K}{r^2} ^D [ Div ( "tgtmath" , [] , [] ) [ BlockQuote [ Para [ Math DisplayMath "V = \\frac{K}{r^2}" ] ] ] ] ``` pandoc-3.1.3/test/command/4928.md0000644000000000000000000001334207346545000014503 0ustar0000000000000000``` % pandoc -f latex -t native \cites(Multiprenote)(multipostnote)[23][42]{Knu86}[65]{Nie72} ^D [ Para [ Cite [ Citation { citationId = "Knu86" , citationPrefix = [ Str "Multiprenote" , Space , Str "23" ] , citationSuffix = [ Str "42" ] , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } , Citation { citationId = "Nie72" , citationPrefix = [] , citationSuffix = [ Str "65" , Str "," , Space , Str "multipostnote" ] , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } ] [ RawInline (Format "latex") "\\cites(Multiprenote)(multipostnote)[23][42]{Knu86}[65]{Nie72}" ] ] ] ``` ``` % pandoc -f latex -t native \cites(Multiprenote)()[23][42]{Knu86}[65]{Nie72} ^D [ Para [ Cite [ Citation { citationId = "Knu86" , citationPrefix = [ Str "Multiprenote" , Space , Str "23" ] , citationSuffix = [ Str "42" ] , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } , Citation { citationId = "Nie72" , citationPrefix = [] , citationSuffix = [ Str "65" ] , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } ] [ RawInline (Format "latex") "\\cites(Multiprenote)()[23][42]{Knu86}[65]{Nie72}" ] ] ] ``` ``` % pandoc -f latex -t native \cites()(multipostnote)[23][42]{Knu86}[65]{Nie72} ^D [ Para [ Cite [ Citation { citationId = "Knu86" , citationPrefix = [ Str "23" ] , citationSuffix = [ Str "42" ] , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } , Citation { citationId = "Nie72" , citationPrefix = [] , citationSuffix = [ Str "65" , Str "," , Space , Str "multipostnote" ] , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } ] [ RawInline (Format "latex") "\\cites()(multipostnote)[23][42]{Knu86}[65]{Nie72}" ] ] ] ``` ``` % pandoc -f latex -t native \cites()()[23][42]{Knu86}[65]{Nie72} ^D [ Para [ Cite [ Citation { citationId = "Knu86" , citationPrefix = [ Str "23" ] , citationSuffix = [ Str "42" ] , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } , Citation { citationId = "Nie72" , citationPrefix = [] , citationSuffix = [ Str "65" ] , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } ] [ RawInline (Format "latex") "\\cites()()[23][42]{Knu86}[65]{Nie72}" ] ] ] ``` ``` % pandoc -f latex -t native \cites(multipostnote)[23][42]{Knu86}[65]{Nie72} ^D [ Para [ Cite [ Citation { citationId = "Knu86" , citationPrefix = [ Str "23" ] , citationSuffix = [ Str "42" ] , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } , Citation { citationId = "Nie72" , citationPrefix = [] , citationSuffix = [ Str "65" , Str "," , Space , Str "multipostnote" ] , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } ] [ RawInline (Format "latex") "\\cites(multipostnote)[23][42]{Knu86}[65]{Nie72}" ] ] ] ``` ``` % pandoc -f latex -t native \cites(Multiprenote)(multipostnote){Knu86} ^D [ Para [ Cite [ Citation { citationId = "Knu86" , citationPrefix = [ Str "Multiprenote" ] , citationSuffix = [ Str "," , Space , Str "multipostnote" ] , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } ] [ RawInline (Format "latex") "\\cites(Multiprenote)(multipostnote){Knu86}" ] ] ] ``` ``` % pandoc -f latex -t native \footcites(Multiprenote)(multipostnote)[23][42]{Knu86}[65]{Nie72} ^D [ Para [ Note [ Para [ Cite [ Citation { citationId = "Knu86" , citationPrefix = [ Str "Multiprenote" , Space , Str "23" ] , citationSuffix = [ Str "42" ] , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } , Citation { citationId = "Nie72" , citationPrefix = [] , citationSuffix = [ Str "65" , Str "," , Space , Str "multipostnote" ] , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } ] [ RawInline (Format "latex") "\\footcites(Multiprenote)(multipostnote)[23][42]{Knu86}[65]{Nie72}" ] , Str "." ] ] ] ] ``` pandoc-3.1.3/test/command/4933.md0000644000000000000000000000023207346545000014471 0ustar0000000000000000``` % pandoc -f latex -t native \includegraphics{lalune} ^D [ Para [ Image ( "" , [] , [] ) [ Str "image" ] ( "lalune.jpg" , "" ) ] ] ``` pandoc-3.1.3/test/command/4960.md0000644000000000000000000000037607346545000014502 0ustar0000000000000000``` % pandoc -t latex --biblatex [@a1;@a2;@a3] ^D \autocite{a1,a2,a3} ``` ``` % pandoc -t latex --biblatex @a1 [@a2;@a3] ^D \textcite{a1,a2,a3} ``` ``` % pandoc -t latex --biblatex [@a1, blah; @a2; see @a3] ^D \autocites[blah]{a1}{a2}[see][]{a3} ``` pandoc-3.1.3/test/command/5010.md0000644000000000000000000000054407346545000014462 0ustar0000000000000000``` % pandoc -f latex -t latex \(\left\{ \begin{matrix} y\,\,\,\, \geqq \,\,\, f\,(\, x\,)\,\, \\ y\,\,\, \leqq \,\,\, g\,(\, x\,)\, \\ \end{matrix} \right.\ \) ^D \(\left\{ \begin{matrix} y\,\,\,\, \geqq \,\,\, f\,(\, x\,)\,\, \\ y\,\,\, \leqq \,\,\, g\,(\, x\,)\, \\ \end{matrix} \right.\ \) ``` ``` % pandoc -f markdown -t latex $x\ $ ^D \(x\ \) ``` pandoc-3.1.3/test/command/5014.md0000644000000000000000000000164107346545000014465 0ustar0000000000000000``` % pandoc -f html -t native
    Name
    Accounts
    ^D [ Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Name" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Accounts" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ``` pandoc-3.1.3/test/command/5039.md0000644000000000000000000000043507346545000014474 0ustar0000000000000000``` % pandoc -f man -t plain .ds foo bar .ds bar baz \*[\*[foo]] ^D baz ``` ``` % pandoc -f man -t plain .ds foo [bar] .ds bar baz \*\*[foo] ^D baz ``` ``` % pandoc -f man -t html .ds B-Font B .ds I-Font I .ds R-Font R \f\*[B-Font]certtool\fP ^D

    certtool

    ``` pandoc-3.1.3/test/command/5050.md0000644000000000000000000000005107346545000014457 0ustar0000000000000000``` % pandoc -t rst x ^D x ``` pandoc-3.1.3/test/command/5053.md0000644000000000000000000000023707346545000014470 0ustar0000000000000000``` % pandoc —_legibility_— ^D

    legibility

    ``` ``` % pandoc _filename_|_filetype_ ^D

    filename|filetype

    ``` pandoc-3.1.3/test/command/5072.md0000644000000000000000000000022407346545000014465 0ustar0000000000000000``` % pandoc -t latex -i 1. one 2. two ^D \begin{enumerate} \def\labelenumi{\arabic{enumi}.} \tightlist \item one \item two \end{enumerate} ``` pandoc-3.1.3/test/command/5079.md0000644000000000000000000000114707346545000014501 0ustar0000000000000000``` % pandoc -f html -t native
    Cell
    ^D [ Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ``` pandoc-3.1.3/test/command/5080.md0000644000000000000000000000025007346545000014463 0ustar0000000000000000``` % pandoc -t asciidoc [foo *bar*]{.small .red key=val} ^D [.small .red]#foo _bar_# ``` ``` % pandoc -f html -t asciidoc SMALL ^D [.small]#SMALL# ``` pandoc-3.1.3/test/command/5099.md0000644000000000000000000000073207346545000014502 0ustar0000000000000000``` % pandoc -t native (@citation ^D [ Para [ Str "(" , Cite [ Citation { citationId = "citation" , citationPrefix = [] , citationSuffix = [] , citationMode = AuthorInText , citationNoteNum = 1 , citationHash = 0 } ] [ Str "@citation" ] ] ] ``` ``` % pandoc -t native ('asd') ^D [ Para [ Str "(" , Quoted SingleQuote [ Str "asd" ] , Str ")" ] ] ``` pandoc-3.1.3/test/command/5107.md0000644000000000000000000000030007346545000014457 0ustar0000000000000000``` % pandoc -f muse -t dokuwiki - foo 1. bar - baz ^D * foo - bar * baz ``` ``` % pandoc -f muse -t dokuwiki - foo 1. bar 2. baz ^D * foo - bar - baz ``` pandoc-3.1.3/test/command/5119.md0000644000000000000000000000007407346545000014472 0ustar0000000000000000``` % pandoc -t docbook hi ^D hi ``` pandoc-3.1.3/test/command/512.md0000644000000000000000000000126107346545000014401 0ustar0000000000000000``` % pandoc -f rst `click here`__ or `click here`__ .. _link1: http://www.example.com/ .. _link2: http://johnmacfarlane.net/pandoc/ __ link1_ __ link2_ ^D

    click here or click here

    ``` Multiple indirection: ``` % pandoc -f rst `click here`__ .. _link1: link2_ .. _link2: http://johnmacfarlane.net/pandoc/ __ link1_ ^D

    click here

    ``` Loop detection: ``` % pandoc -f rst `click here`__ .. _link1: link2_ .. _link2: link1_ __ link1_ ^D 2> [WARNING] Circular reference 'link1' at line 1 column 15

    click here

    ``` pandoc-3.1.3/test/command/5121.md0000644000000000000000000000037607346545000014470 0ustar0000000000000000``` % pandoc -f markdown -t markdown_strict ![My caption](./my-figure.jpg){width=500px} ## Header 2 ^D
    My caption
    ## Header 2 ``` pandoc-3.1.3/test/command/5128.md0000644000000000000000000000504307346545000014473 0ustar0000000000000000``` % pandoc -f org -t rst --columns=78 | Option | Meaning | |--------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | =<= | Left alignment, additional characters are added to the right (default for string). | | =>= | Right alignment, additional characters are added to the left. | | =^= | Centered , the same amount of characters is added to the left and the right. | | === | Padding. If a numeric value is printed with a sign, then additional characters are added after the sign. Otherwise it behaves like "=>=". This option is only available for numbers (default for numbers). | ^D +--------+------------------------------------------------------------------+ | Option | Meaning | +========+==================================================================+ | ``<`` | Left alignment, additional characters are added to the right | | | (default for string). | +--------+------------------------------------------------------------------+ | ``>`` | Right alignment, additional characters are added to the left. | +--------+------------------------------------------------------------------+ | ``^`` | Centered , the same amount of characters is added to the left | | | and the right. | +--------+------------------------------------------------------------------+ | ``=`` | Padding. If a numeric value is printed with a sign, then | | | additional characters are added after the sign. Otherwise it | | | behaves like "``>``". This option is only available for numbers | | | (default for numbers). | +--------+------------------------------------------------------------------+ ``` pandoc-3.1.3/test/command/5177.md0000644000000000000000000000017407346545000014477 0ustar0000000000000000This should not give a "Prelude.read: no parse" error: ``` % pandoc -M foo=1e -s -t markdown hi ^D --- foo: 1e --- hi ``` pandoc-3.1.3/test/command/5178.md0000644000000000000000000000176307346545000014505 0ustar0000000000000000``` % pandoc -f rst -t org .. code:: haskell :number-lines: 42 main = putStrLn "Hello World!" unsafePerformIO main ^D #+begin_src haskell -n 42 main = putStrLn "Hello World!" unsafePerformIO main #+end_src ``` ``` % pandoc -f org -t native #+begin_src lisp -n 20 (+ 1 1) #+end_src #+begin_src lisp +n 10 (+ 2 2) #+end_src ^D [ CodeBlock ( "" , [ "commonlisp" , "numberLines" ] , [ ( "org-language" , "lisp" ) , ( "startFrom" , "20" ) ] ) "(+ 1 1)\n" , CodeBlock ( "" , [ "commonlisp" , "numberLines" , "continuedSourceBlock" ] , [ ( "org-language" , "lisp" ) , ( "startFrom" , "10" ) ] ) "(+ 2 2)\n" ] ``` ``` % pandoc -f native -t org [CodeBlock ("",["commonlisp","numberLines"],[("org-language","lisp"),("startFrom","20")]) "(+ 1 1)\n" ,CodeBlock ("",["commonlisp","numberLines","continuedSourceBlock"],[("org-language","lisp"),("startFrom","10")]) "(+ 2 2)\n"] ^D #+begin_src lisp -n 20 (+ 1 1) #+end_src #+begin_src lisp +n 10 (+ 2 2) #+end_src ``` pandoc-3.1.3/test/command/5182.md0000644000000000000000000000023707346545000014473 0ustar0000000000000000``` % pandoc -f rst -t native .. include:: command/5182.txt ^D [ CodeBlock ( "" , [ "python" , "numberLines" ] , [] ) "def func(x):\n return y" ] ``` pandoc-3.1.3/test/command/5182.txt0000644000000000000000000000007707346545000014714 0ustar0000000000000000.. code::python :number-lines: def func(x): return y pandoc-3.1.3/test/command/5195.md0000644000000000000000000000012707346545000014475 0ustar0000000000000000``` % pandoc -f markdown_strict -t gfm+hard_line_breaks Hello there ^D Hello there ``` pandoc-3.1.3/test/command/5233.md0000644000000000000000000000007507346545000014470 0ustar0000000000000000``` % pandoc -f latex -t plain foo \endinput bar ^D foo ``` pandoc-3.1.3/test/command/5241.md0000644000000000000000000000016107346545000014463 0ustar0000000000000000``` % pandoc -f markdown -t html5 ^D ``` pandoc-3.1.3/test/command/5271.md0000644000000000000000000000154107346545000014471 0ustar0000000000000000``` % pandoc -f markdown -t native -s --- abstract: | This is the abstract. It consists of two paragraphs. ... ^D Pandoc Meta { unMeta = fromList [ ( "abstract" , MetaBlocks [ Para [ Str "This" , Space , Str "is" , Space , Str "the" , Space , Str "abstract." ] , Para [ Str "It" , Space , Str "consists" , Space , Str "of" , Space , Str "two" , Space , Str "paragraphs." ] ] ) ] } [] ``` pandoc-3.1.3/test/command/5285.md0000644000000000000000000000055407346545000014501 0ustar0000000000000000``` % pandoc -t native - a b - a - b ^D [ BulletList [ [ Para [ Str "a" ] , Para [ Str "b" ] ] , [ Para [ Str "a" ] ] , [ Para [ Str "b" ] ] ] ] ``` ``` % pandoc -t native - foo foo - foo > foo ^D [ BulletList [ [ Para [ Str "foo" ] , Para [ Str "foo" ] ] , [ Para [ Str "foo" ] , BlockQuote [ Para [ Str "foo" ] ] ] ] ] ``` pandoc-3.1.3/test/command/5304.md0000644000000000000000000000036307346545000014467 0ustar0000000000000000```` % pandoc -f markdown -t markdown ``` {.markdown} `«sträng»` `` «sträng» `` ``` «sträng» ``` ````«sträng»```` ... ``` ^D ``` markdown `«sträng»` `` «sträng» `` ``` «sträng» ``` ````«sträng»```` ... ``` ```` pandoc-3.1.3/test/command/5321.md0000644000000000000000000000130307346545000014461 0ustar0000000000000000``` % pandoc -f jats -t native

    bar

    ^D [ Figure ( "fig-1" , [] , [] ) (Caption Nothing [ Plain [ Str "bar" ] ]) [ Para [ Image ( "" , [] , [] ) [ Str "baz" ] ( "foo.png" , "" ) ] ] ] ``` ``` % pandoc -f jats -t native foo

    bar

    ^D [ Figure ( "fig-1" , [] , [] ) (Caption Nothing [ Plain [ Str "foo" , LineBreak , Str "bar" ] ]) [ Para [ Image ( "" , [] , [] ) [ Str "baz" ] ( "foo.png" , "" ) ] ] ] ``` pandoc-3.1.3/test/command/5340.md0000644000000000000000000000114307346545000014464 0ustar0000000000000000``` % pandoc -f html -t latex --wrap=preserve https://example.com/foo-bar https://example.com/foo--bar https://example.com/foo-bar https://example.com/foo--bar https://example.com/foo%2D%2Dbar ^D \url{https://example.com/foo-bar} \url{https://example.com/foo--bar} \url{https://example.com/foo\%2Dbar} \url{https://example.com/foo\%2D\%2Dbar} \url{https://example.com/foo\%2D\%2Dbar} ``` pandoc-3.1.3/test/command/5360.md0000644000000000000000000000061107346545000014465 0ustar0000000000000000``` % pandoc -t native ::: {.foo}
    hi
    ::: ^D [ Div ( "" , [ "foo" ] , [] ) [ RawBlock (Format "html") "" , RawBlock (Format "html") "" , RawBlock (Format "html") "" , RawBlock (Format "html") "" , RawBlock (Format "html") "
    " , Plain [ Str "hi" ] , RawBlock (Format "html") "
    " ] ] ``` pandoc-3.1.3/test/command/5367.md0000644000000000000000000000150207346545000014474 0ustar0000000000000000``` % pandoc -t latex hello[^1] : Sample table.[^2] ----------- Fruit[^3] ----------- Bans[^4] ----------- dolly[^5] [^1]: doc footnote [^2]: caption footnote [^3]: header footnote [^4]: table cell footnote [^5]: doc footnote ^D hello\footnote{doc footnote} \begin{longtable}[]{@{} >{\centering\arraybackslash}p{(\columnwidth - 0\tabcolsep) * \real{0.1667}}@{}} \caption[Sample table.]{Sample table.\footnote{caption footnote}}\tabularnewline \toprule\noalign{} \begin{minipage}[b]{\linewidth}\centering Fruit\footnote{header footnote} \end{minipage} \\ \midrule\noalign{} \endfirsthead \toprule\noalign{} \begin{minipage}[b]{\linewidth}\centering Fruit{} \end{minipage} \\ \midrule\noalign{} \endhead \bottomrule\noalign{} \endlastfoot Bans\footnote{table cell footnote} \\ \end{longtable} dolly\footnote{doc footnote} ``` pandoc-3.1.3/test/command/5368.md0000644000000000000000000000173207346545000014502 0ustar0000000000000000``` % pandoc -t native 1. foo ![bar](bar.png) 2. foo2 ![bar2](bar2.png) 3. foo3 ![foo3](foo3.png) Quux. ^D [ OrderedList ( 1 , Decimal , Period ) [ [ Para [ Str "foo" ] , Figure ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "bar" ] ]) [ Plain [ Image ( "" , [] , [] ) [ Str "bar" ] ( "bar.png" , "" ) ] ] ] , [ Para [ Str "foo2" ] , Figure ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "bar2" ] ]) [ Plain [ Image ( "" , [] , [] ) [ Str "bar2" ] ( "bar2.png" , "" ) ] ] ] , [ Para [ Str "foo3" ] , Figure ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "foo3" ] ]) [ Plain [ Image ( "" , [] , [] ) [ Str "foo3" ] ( "foo3.png" , "" ) ] ] ] ] , Para [ Str "Quux." ] ] ``` pandoc-3.1.3/test/command/5369.md0000644000000000000000000000020207346545000014472 0ustar0000000000000000``` % pandoc -f native -t markdown [Div ("",[],[("tags","[\"o\\ne\",\"two\"]")]) [] ] ^D ::: {tags="[\"o\\ne\",\"two\"]"} ::: ``` pandoc-3.1.3/test/command/5407.md0000644000000000000000000000025307346545000014471 0ustar0000000000000000``` % pandoc -t latex --wrap=preserve hi there?“ hi there!“ hi there?‘ hi there!‘ hi there! ^D hi there?{}`` hi there!{}`` hi there?{}` hi there!{}` hi there! ``` pandoc-3.1.3/test/command/5410.md0000644000000000000000000000011407346545000014457 0ustar0000000000000000``` % pandoc -f man -t native .ie n \{\ 'br\} ^D [ Para [ LineBreak ] ] ``` pandoc-3.1.3/test/command/5416.md0000644000000000000000000000020507346545000014466 0ustar0000000000000000``` % pandoc -f dokuwiki -t native { ^D [ Para [ Str "{" ] ] ``` ``` % pandoc -f dokuwiki -t native {{ ^D [ Para [ Str "{{" ] ] ``` pandoc-3.1.3/test/command/5420.md0000644000000000000000000000020507346545000014461 0ustar0000000000000000``` % pandoc --listings -t latex `int a = 1;`{.cpp style=cpp} ^D \passthrough{\lstinline[language={C++}, style=cpp]!int a = 1;!} ``` pandoc-3.1.3/test/command/5439.md0000644000000000000000000000012307346545000014472 0ustar0000000000000000``` % pandoc -t latex namespace\fshyp{}container ^D namespace\fshyp{}container ``` pandoc-3.1.3/test/command/5446.md0000644000000000000000000000010307346545000014466 0ustar0000000000000000``` % pandoc -f latex -t rst {\em test test \/} ^D *test test* ``` pandoc-3.1.3/test/command/5474-figures.md0000644000000000000000000000165007346545000016141 0ustar0000000000000000``` % pandoc -t opendocument+native_numbering ![First image](lalune.jpg) ![Second image](lalune.jpg) ^D Figure 1: First image Figure 2: Second image ``` pandoc-3.1.3/test/command/5474-tables.md0000644000000000000000000000501207346545000015743 0ustar0000000000000000``` % pandoc -t opendocument+native_numbering Right Left ------- ------ 12 11 : First table Right Left ------- ------ 13 14 : Second Table ^D Table 1: First table Right Left 12 11 Table 2: Second Table Right Left 13 14 ``` pandoc-3.1.3/test/command/5476.md0000644000000000000000000000030707346545000014477 0ustar0000000000000000``` % pandoc -t latex ![moon^[the moon]](test/lalune.jpg) ^D \begin{figure} \centering \includegraphics{test/lalune.jpg} \caption[moon]{moon\footnotemark{}} \end{figure} \footnotetext{the moon} ``` pandoc-3.1.3/test/command/5495.md0000644000000000000000000000042507346545000014501 0ustar0000000000000000``` % pandoc -t markdown --reference-links All because of [1](#one) link... [This](#foo) will break Pandoc. [This](#bar) will make you laugh. ^D All because of [1] link... [This] will break Pandoc. [This][2] will make you laugh. [1]: #one [This]: #foo [2]: #bar ``` pandoc-3.1.3/test/command/5519.md0000644000000000000000000000014407346545000014474 0ustar0000000000000000~~~ % pandoc -t markdown ``````{.attr} ``` code ``` `````` ^D ```` attr ``` code ``` ```` ~~~ pandoc-3.1.3/test/command/5529.md0000644000000000000000000000022007346545000014470 0ustar0000000000000000``` % pandoc -t latex ~~`hello world`~~ ~~_`hello world`_~~ ^D \st{\mbox{\texttt{hello\ world}}} \st{\emph{\mbox{\texttt{hello\ world}}}} ``` pandoc-3.1.3/test/command/5540.md0000644000000000000000000000034707346545000014473 0ustar0000000000000000``` % pandoc -f latex -t native \begin{lstlisting}[language=myfunnylanguage] Stay pure! \end{lstlisting} ^D [ CodeBlock ( "" , [ "myfunnylanguage" ] , [ ( "language" , "myfunnylanguage" ) ] ) "Stay pure!" ] ``` pandoc-3.1.3/test/command/5541-localLink.md0000644000000000000000000001433307346545000016402 0ustar0000000000000000``` % pandoc -f markdown -t icml -s # Header 1 this is some text ## Header 2 some more text that [links to](#header-1) the first header. And this links to [some text](#spanner) in 2.1. ## Header 2.1 if you can read this text, [and it's linked]{#spanner} - all good! ^D $ID/NormalCharacterStyle LeftAlign . 10 $ID/NormalParagraphStyle $ID/NormalParagraphStyle $ID/NormalParagraphStyle Header 1
    this is some text
    Header 2
    some more text that the first header. And this links to in 2.1.
    Header 2.1
    if you can read this text, and it’s linked - all good!
    Black HyperlinkTextDestination/#spanner Black HyperlinkTextDestination/#header-1
    ``` pandoc-3.1.3/test/command/5541-nesting.md0000644000000000000000000000761407346545000016145 0ustar0000000000000000``` % pandoc -f html -t icml -s
    ^D $ID/NormalCharacterStyle LeftAlign . 10 $ID/NormalParagraphStyle $ID/Embedded ``` pandoc-3.1.3/test/command/5541-urlLink.md0000644000000000000000000001123707346545000016112 0ustar0000000000000000``` % pandoc -f markdown -t icml -s # Header 1 this is some text ## Header 2 some more text that [links to](https://www.pandoc.org) Pandoc. ^D $ID/NormalCharacterStyle LeftAlign . 10 $ID/NormalParagraphStyle $ID/NormalParagraphStyle $ID/NormalParagraphStyle Header 1
    this is some text
    Header 2
    some more text that Pandoc.
    Black HyperlinkURLDestination/https%3a//www.pandoc.org
    ``` pandoc-3.1.3/test/command/5543.md0000644000000000000000000000012207346545000014465 0ustar0000000000000000``` % pandoc -t markdown 1\. item : description ^D 1\. item : description ``` pandoc-3.1.3/test/command/5549.md0000644000000000000000000000014107346545000014474 0ustar0000000000000000``` % pandoc -t native ## [] ^D [ Header 2 ( "section" , [] , [] ) [] , Para [ Str "[]" ] ] ``` pandoc-3.1.3/test/command/5565.md0000644000000000000000000000006007346545000014472 0ustar0000000000000000``` % pandoc -t asciidoc ***hi*** ^D *_hi_* ``` pandoc-3.1.3/test/command/5566.md0000644000000000000000000000030207346545000014472 0ustar0000000000000000``` % pandoc -t asciidoc -f html foo foo foo foo ^D fo[.c]##o## f[.c]##o##o [.c]##f##oo [.c]#foo# ``` pandoc-3.1.3/test/command/5574.md0000644000000000000000000000023007346545000014471 0ustar0000000000000000No highlighting inside heading: ``` % pandoc -t latex # `foo`{.cpp} ^D \hypertarget{foo}{% \section{\texorpdfstring{\texttt{foo}}{foo}}\label{foo}} ``` pandoc-3.1.3/test/command/5619.md0000644000000000000000000000157707346545000014510 0ustar0000000000000000``` % pandoc -f rst -t native .. figure:: img1.jpg :width: 1in :name: test The caption. Here's what piggybacking on caption would look like {#fig:1} ^D [ Figure ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "The" , Space , Str "caption." , Space , Str "Here's" , Space , Str "what" , Space , Str "piggybacking" , Space , Str "on" , Space , Str "caption" , Space , Str "would" , Space , Str "look" , Space , Str "like" , Space , Str "{#fig:1}" ] ]) [ Plain [ Image ( "test" , [] , [ ( "width" , "1in" ) ] ) [ Str "img1.jpg" ] ( "img1.jpg" , "" ) ] ] ] ``` pandoc-3.1.3/test/command/5620.md0000644000000000000000000000034307346545000014466 0ustar0000000000000000``` % pandoc -t man `-o`, `--output=`*OUTFILE* : Write output to *OUTFILE* instead of `stdout`(3) ^D .TP \f[V]-o\f[R], \f[V]--output=\f[R]\f[I]OUTFILE\f[R] Write output to \f[I]OUTFILE\f[R] instead of \f[V]stdout\f[R](3) ``` pandoc-3.1.3/test/command/5627.md0000644000000000000000000000424407346545000014501 0ustar0000000000000000``` % pandoc -t html ## Example 1. One 2. Two `-->somethingsomethingsomethingsomething elseonetwo LeftAlign . 10 $ID/NormalParagraphStyle $ID/NormalParagraphStyle $ID/NormalParagraphStyle Header 1
    this is some text
    Header 2
    some more text that Pandoc.
    and some text that the first header
    Black HyperlinkTextDestination/#header-1 Black HyperlinkURLDestination/https%3a//www.pandoc.org ``` pandoc-3.1.3/test/command/6699.md0000644000000000000000000000026607346545000014513 0ustar0000000000000000``` % pandoc -f rst -t native .. class:: allowframebreaks title ----- text ^D [ Header 1 ( "title" , [ "allowframebreaks" ] , [] ) [ Str "title" ] , Para [ Str "text" ] ] ``` pandoc-3.1.3/test/command/6709.md0000644000000000000000000000033107346545000014474 0ustar0000000000000000Tabs must be expanded even if --file-scope is used ```` % pandoc -t native --file-scope --tab-stop=2 ``` if true; then echo "yup" fi ``` ^D [ CodeBlock ( "" , [] , [] ) "if true; then\n echo \"yup\"\nfi" ] ```` pandoc-3.1.3/test/command/6719.md0000644000000000000000000000043307346545000014500 0ustar0000000000000000``` % pandoc -f docbook -t native emphasized text ^D [ Para [ Emph [ Str "emphasized" ] , Space , Str "text" ] ] ``` ``` % pandoc -f jats -t native

    hi there

    ^D [ Para [ Emph [ Str "hi" ] , Space , Str "there" ] ] ``` pandoc-3.1.3/test/command/6723.md0000644000000000000000000000107207346545000014473 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: command/chicago-fullnote-bibliography.csl references: - id: doe type: article author: - family: Doe given: John DOI: 10.1109/5.771073 issued: - year: 2020 title: An article ... Blah [@doe]. # References {-} ^D Blah.[^1] # References {#references .unnumbered} ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-doe .csl-entry} Doe, John. "An Article," 2020. . ::: ::: [^1]: John Doe, "An Article," 2020, . ``` pandoc-3.1.3/test/command/6739.md0000644000000000000000000000072607346545000014507 0ustar0000000000000000``` % pandoc -f gfm * `--argument` This item does not have a pipe character * `--argA | --argB` This item has a pipe character ^D
    • --argument This item does not have a pipe character
    • --argA | --argB This item has a pipe character
    ``` ``` % pandoc --mathjax -f gfm+tex_math_dollars * $|x|$ * $|y|$ ^D
    • \(|x|\)
    • \(|y|\)
    ``` pandoc-3.1.3/test/command/6740.md0000644000000000000000000000011607346545000014470 0ustar0000000000000000``` % pandoc -t gfm ^D ``` pandoc-3.1.3/test/command/6741.md0000644000000000000000000000717307346545000014503 0ustar0000000000000000``` % pandoc --citeproc --csl command/ieee.csl -t plain --- title: 'A Simple Citations Test' author: 'Joanna Doe' references: - author: - family: Mathôt given: S container-title: Annual review of vision science DOI: 10.1146/annurev-vision-030320-062352 id: mathot2020 issued: 2020 title: "Tuning the senses: How the pupil shapes vision at the earliest stage." title-short: Tuning the senses type: article-journal - author: - family: Zokaei given: Nahid - family: Board given: Alexander G. - family: Manohar given: Sanjay G. - family: Nobre given: Anna C. container-title: Proceedings of the National Academy of Sciences of the United States of America DOI: 10.1073/pnas.1909959116 id: zokaei2019 issued: 2019 page: 201909959 title: Modulation of the pupillary response by the content of visual working memory type: article-journal - author: - family: Suzuki given: Y. - family: Minami given: T. - family: Laeng given: B. - family: Nakauchi given: S. container-title: Acta Psychologica DOI: 10.1016/j.actpsy.2019.102882 id: suzuki2019 issued: 2019 page: 102882 title: "Colorful glares: Effects of colors on brightness illusions measured with pupillometry." title-short: Colorful glares type: article-journal volume: 198 - author: - family: Brainard given: David H. - family: Hurlbert given: Anya container-title: Current Biology DOI: 10.1016/j.cub.2015.05.020 id: brainard2015a issue: 13 issued: 2015 page: R551-R554 title: "Colour vision: Understanding \\#TheDress" title-short: Colour vision type: article-journal volume: 25 - author: - family: Cavanagh given: Patrick container-title: Limits of vision editor: - family: Crody-Dillon given: John R. id: cavanagh1991 issued: 1991 page: 234-250 publisher: CRC Press title: Vision at equiluminance type: chapter - author: - family: Brainard given: David H. container-title: Annual Review of Vision Science DOI: 10.1146/annurev-vision-082114-035341 id: brainard2015 issued: 2015 page: 519-546 title: Color and the cone mosaic type: article-journal volume: 1 ... # First Heading # Here is some **text**. And a reference [@brainard2015;@brainard2015a]. # Second Heading # Here is some *text*[@cavanagh1991]. And a reference [@cavanagh1991;@brainard2015]. # Third Heading # Here is some [text]{.underline}. And a reference [@mathot2020;@zokaei2019;@suzuki2019]. ::: {#refs} ## Bibliography ## ::: ^D First Heading Here is some text. And a reference [1], [2]. Second Heading Here is some text[3]. And a reference [1], [3]. Third Heading Here is some text. And a reference [4]–[6]. Bibliography [1] D. H. Brainard, “Color and the cone mosaic,” Annual Review of Vision Science, vol. 1, pp. 519–546, 2015. [2] D. H. Brainard and A. Hurlbert, “Colour vision: Understanding #TheDress,” Current Biology, vol. 25, no. 13, pp. R551–R554, 2015. [3] P. Cavanagh, “Vision at equiluminance,” in Limits of vision, J. R. Crody-Dillon, Ed. CRC Press, 1991, pp. 234–250. [4] S. Mathôt, “Tuning the senses: How the pupil shapes vision at the earliest stage.” Annual review of vision science, 2020. [5] N. Zokaei, A. G. Board, S. G. Manohar, and A. C. Nobre, “Modulation of the pupillary response by the content of visual working memory,” Proceedings of the National Academy of Sciences of the United States of America, p. 201909959, 2019. [6] Y. Suzuki, T. Minami, B. Laeng, and S. Nakauchi, “Colorful glares: Effects of colors on brightness illusions measured with pupillometry.” Acta Psychologica, vol. 198, p. 102882, 2019. ``` pandoc-3.1.3/test/command/6752.md0000644000000000000000000000135407346545000014500 0ustar0000000000000000``` % pandoc -f biblatex -t csljson @xdata{XDPubAlfredAKnopf,    publisher   = {Alfred A.~Knopf},    address     = {New York, NY} } @book{Klinkenborg2012,    author      = {Verlyn Klinkenborg},    title       = {Several short sentences about writing},    date        = {2012},    xdata       = {XDPubAlfredAKnopf}, } ^D [ { "author": [ { "family": "Klinkenborg", "given": "Verlyn" } ], "id": "Klinkenborg2012", "issued": { "date-parts": [ [ 2012 ] ] }, "publisher": "Alfred A. Knopf", "publisher-place": "New York, NY", "title": "Several short sentences about writing", "type": "book" } ] ``` pandoc-3.1.3/test/command/6755.md0000644000000000000000000000076407346545000014507 0ustar0000000000000000``` %pandoc -f native -t opendocument [Div ("divId",[],[]) [Para [Str "Here",Space,Str "is",Space,Str "a",Space,Str "div."]], Para [Span ("spanId",[],[]) [Str "And",Space,Str "here",Space,Str "is",Space,Str "a",Space,Str "span."]]] ^D Here is a div. And here is a span. ``` pandoc-3.1.3/test/command/6765.md0000644000000000000000000000116707346545000014506 0ustar0000000000000000``` % pandoc --citeproc -t plain @book_chapter_1 [55] says blah. --- csl: command/chicago-fullnote-bibliography.csl references: - id: book_chapter_1 author: - family: Author given: Ann container-title: A book editor: - family: Editor given: Edward issued: 2014 page: 48-67 publisher: A publisher publisher-place: A place title: A book chapter type: chapter ... ^D Ann Author[1] says blah. Author, Ann. “A Book Chapter.” In A Book, edited by Edward Editor, 48–67. A place: A publisher, 2014. [1] “A Book Chapter,” in A Book, ed. Edward Editor (A place: A publisher, 2014), 55. ``` pandoc-3.1.3/test/command/6768.md0000644000000000000000000000031407346545000014502 0ustar0000000000000000``` % pandoc -tcommonmark ::: custom_div This is a div ::: ^D
    This is a div
    ``` ``` % pandoc -tcommonmark-raw_html ::: custom_div This is a div ::: ^D This is a div ``` pandoc-3.1.3/test/command/6774.md0000644000000000000000000001116607346545000014506 0ustar0000000000000000``` % pandoc -f native -t opendocument --quiet [Header 1 ("chapter1",[],[]) [Str "The",Space,Str "Chapter"] ,Para [Str "Chapter",Space,Str "1",Space,Str "references",Space,Link ("",[],[]) [Str "The",Space,Str "Chapter"] ("#chapter1","")]] ^D The Chapter Chapter 1 references The Chapter ``` ``` % pandoc -f native -t opendocument+xrefs_name --quiet [Header 1 ("chapter1",[],[]) [Str "The",Space,Str "Chapter"] ,Para [Str "Chapter",Space,Str "1",Space,Str "references",Space,Link ("",[],[]) [Str "The",Space,Str "Chapter"] ("#chapter1","")] ,Figure ("lalune",[],[]) (Caption Nothing [Para [Str "Voyage dans la Lune"]]) [Plain [Image ("",[],[]) [Str "lalune"] ("lalune.jpg","")]] ,Para [Str "Image",Space,Str "1",Space,Str "references",Space,Link ("",[],[]) [Str "La",Space,Str "Lune"] ("#lalune","")]] ^D The Chapter Chapter 1 references The Chapter Voyage dans la Lune Image 1 references La Lune ``` ``` % pandoc -f native -t opendocument+xrefs_number --quiet [Header 1 ("chapter1",[],[]) [Str "The",Space,Str "Chapter"] ,Para [Str "Chapter",Space,Str "1",Space,Str "references",Space,Link ("",[],[]) [Str "The",Space,Str "Chapter"] ("#chapter1","")] ,Figure ("lalune",[],[]) (Caption Nothing [Para [Str "lalune"]]) [Plain [Image ("",[],[]) [Str "lalune"] ("lalune.jpg","Voyage dans la Lune")]] ,Para [Str "Image",Space,Str "1",Space,Str "references",Space,Link ("",[],[]) [Str "La",Space,Str "Lune"] ("#lalune","")]] ^D The Chapter Chapter 1 references lalune Image 1 references ``` ``` % pandoc -f native -t opendocument+xrefs_number+xrefs_name --quiet [Header 1 ("chapter1",[],[]) [Str "The",Space,Str "Chapter"] ,Para [Str "Chapter",Space,Str "1",Space,Str "references",Space,Link ("",[],[]) [Str "The",Space,Str "Chapter"] ("#chapter1","")] ,Figure ("lalune",[],[]) (Caption Nothing [Para [Str "Voyage dans la Lune"]]) [Plain [Image ("",[],[]) [Str "lalune"] ("lalune.jpg","")]] ,Para [Str "Image",Space,Str "1",Space,Str "references",Space,Link ("",[],[]) [Str "La",Space,Str "Lune"] ("#lalune","")]] ^D The Chapter Chapter 1 references The Chapter Voyage dans la Lune Image 1 references La Lune ``` pandoc-3.1.3/test/command/6783.md0000644000000000000000000000111207346545000014474 0ustar0000000000000000``` % pandoc -f markdown -t plain -s --citeproc --- references: - author: - family: Jupyter given: Project container-title: Proceedings of the 17th Python in Science Conference id: 'ref-1' issued: 2018 title: 'Binder 2.0 - Reproducible, interactive, sharable environments for science at scale' type: 'paper-conference' volume: ... This is a test[@ref-1]. ^D This is a test(Jupyter 2018). Jupyter, Project. 2018. “Binder 2.0 - Reproducible, Interactive, Sharable Environments for Science at Scale.” In Proceedings of the 17th Python in Science Conference. ``` pandoc-3.1.3/test/command/6791.md0000644000000000000000000000214707346545000014504 0ustar0000000000000000``` % pandoc -f docbook -t native --quiet 2 1 ^D [ Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidth 0.25 ) , ( AlignDefault , ColWidth 0.25 ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignCenter (RowSpan 1) (ColSpan 1) [ Para [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignCenter (RowSpan 1) (ColSpan 1) [ Para [ Str "1" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ``` pandoc-3.1.3/test/command/6792.md0000644000000000000000000001036607346545000014507 0ustar0000000000000000``` % pandoc -f native -t opendocument -s --quiet [Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidth 0.25) ,(AlignDefault,ColWidth 0.25)] (TableHead ("",[],[]) []) [(TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1) [Para [Str "2"]] ,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1) [Para [Str "1"]]]])] (TableFoot ("",[],[]) [])] ^D 2 1 ``` pandoc-3.1.3/test/command/6796.md0000644000000000000000000000035707346545000014512 0ustar0000000000000000``` % pandoc -f latex -t markdown \newcommand{\cL}{\mathcal{L}} \newcommand{\til}[1]{\tilde{#1}} $$\til\cL$$ \newcommand{\mc}[1]{\mathcal{#1}} \newcommand{\dL}{\mc{L}} $$\til\dL$$ ^D $$\tilde{\mathcal{L}}$$ $$\tilde{\mathcal{L}}$$ ``` pandoc-3.1.3/test/command/6802.md0000644000000000000000000000020107346545000014462 0ustar0000000000000000``` % pandoc -f latex -t native \blockquote[test][]{quote} ^D [ BlockQuote [ Para [ Str "quote" ] , Para [ Str "test" ] ] ] ``` pandoc-3.1.3/test/command/6836.md0000644000000000000000000000142607346545000014503 0ustar0000000000000000``` % pandoc -t native [@buchanan] (@foo) See @foo. [@buchanan] ^D [ Para [ Cite [ Citation { citationId = "buchanan" , citationPrefix = [] , citationSuffix = [] , citationMode = NormalCitation , citationNoteNum = 1 , citationHash = 0 } ] [ Str "[@buchanan]" ] ] , OrderedList ( 1 , Example , TwoParens ) [ [] ] , Para [ Str "See" , Space , Str "1." ] , Para [ Cite [ Citation { citationId = "buchanan" , citationPrefix = [] , citationSuffix = [] , citationMode = NormalCitation , citationNoteNum = 2 , citationHash = 0 } ] [ Str "[@buchanan]" ] ] ] ``` pandoc-3.1.3/test/command/6837.md0000644000000000000000000000061307346545000014501 0ustar0000000000000000``` % pandoc -t markdown --markdown-headings=setext ## Hi ### Ok ^D Hi -- ### Ok ``` ``` % pandoc -t markdown+lhs # Hi ^D 2> [WARNING] Rendering heading 'Hi' as a paragraph. 2> ATX headings cannot be used in literate Haskell, because '#' is not 2> allowed in column 1. Consider using --markdown-headings=setext. Hi ``` ``` % pandoc -t markdown --markdown-headings=atx Hi -- ^D ## Hi ``` pandoc-3.1.3/test/command/6844.md0000644000000000000000000000047507346545000014505 0ustar0000000000000000Negative numbers with siunitx ``` % pandoc -f latex -t native \SI{123}{\celsius} ^D [ Para [ Str "123\160\176C" ] ] ``` ``` % pandoc -f latex -t native \SI{-123}{\celsius} ^D [ Para [ Str "\8722\&123\160\176C" ] ] ``` ``` % pandoc -f latex -t native \SI{+123}{\celsius} ^D [ Para [ Str "123\160\176C" ] ] ``` pandoc-3.1.3/test/command/6855.md0000644000000000000000000000013407346545000014477 0ustar0000000000000000``` % pandoc -t markdown (@a) one (@b) two See (@a--@b) ^D (1) one (2) two See (1--2) ``` pandoc-3.1.3/test/command/6858.md0000644000000000000000000000175407346545000014513 0ustar0000000000000000``` % pandoc -t markdown -f man .TH FvwmAnimate 1 "Date" Fvwm "Fvwm Modules" .UC .SH NAME \fBFvwmAnimate\fP \- the fvwm animate module .SH SYNOPSIS Module FvwmAnimate [ModuleAlias] .IP "*FvwmAnimate: Color \fBcolor\fP" Tells \fBFvwmAnimate\fP what color to draw with. The color is "XOR'ed" (exclusive ORed) onto the background. .IP "*FvwmAnimate: Pixmap \fBpixmap\fP" Tells \fBFvwmAnimate\fP to use \fBpixmap\fP to draw with. This can be useful if \fB*FvwmAnimate: Color\fP gives poor results. ^D # NAME **FvwmAnimate** - the fvwm animate module # SYNOPSIS Module FvwmAnimate \[ModuleAlias\] \*FvwmAnimate: Color color : Tells **FvwmAnimate** what color to draw with. The color is \"XOR\'ed\" (exclusive ORed) onto the background. \*FvwmAnimate: Pixmap pixmap : Tells **FvwmAnimate** to use **pixmap** to draw with. This can be useful if **\*FvwmAnimate: Color** gives poor results. ``` ``` % pandoc -t markdown -f man .IP "\[bu]" hi .IP "\[bu]" there ^D - hi - there ``` pandoc-3.1.3/test/command/6869.md0000644000000000000000000000066007346545000014510 0ustar0000000000000000``` % pandoc -f latex -t native \cite[„Aber“]{key} ^D [ Para [ Cite [ Citation { citationId = "key" , citationPrefix = [] , citationSuffix = [ Str "\8222Aber\8220" ] , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } ] [ RawInline (Format "latex") "\\cite[\8222Aber\8220]{key}" ] ] ] ``` pandoc-3.1.3/test/command/6873.md0000644000000000000000000000152707346545000014506 0ustar0000000000000000``` % pandoc -f latex -t native --citeproc \cite[„Etwas […{]} auslassen“]{key} ^D 2> [WARNING] Citeproc: citation key not found [ Para [ Cite [ Citation { citationId = "key" , citationPrefix = [] , citationSuffix = [ Str "\8222Etwas" , Space , Str "[\8230" , Span ( "" , [] , [] ) [ Str "]" ] , Space , Str "auslassen\8220" ] , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } ] [ Str "(" , Strong [ Str "key?" ] , Str "\8222Etwas" , Space , Str "[\8230" , Span ( "" , [] , [] ) [ Str "]" ] , Space , Str "auslassen\8220)" ] ] ] ``` pandoc-3.1.3/test/command/6890.md0000644000000000000000000000617607346545000014512 0ustar0000000000000000``` % pandoc -t native --citeproc --- references: - author: - family: Früchtel given: Frank - family: Budde given: Wolfgang - family: Cyprian given: Gudrun edition: 3 id: fruchtel-sozialer-2013a issued: 2013 language: de-DE publisher: Springer VS publisher-place: Wiesbaden, Germany title: "Sozialer Raum und Soziale Arbeit Fieldbook: Methoden und Techniken" title-short: Sozialer Raum und Soziale Arbeit Fieldbook type: book --- @fruchtel-sozialer-2013a Some text.[^1] [^1]: @fruchtel-sozialer-2013a ^D [ Para [ Cite [ Citation { citationId = "fruchtel-sozialer-2013a" , citationPrefix = [] , citationSuffix = [] , citationMode = AuthorInText , citationNoteNum = 1 , citationHash = 0 } ] [ Str "Fr\252chtel," , Space , Str "Budde," , Space , Str "and" , Space , Str "Cyprian" , Space , Str "(2013)" ] ] , Para [ Str "Some" , Space , Str "text." , Note [ Para [ Cite [ Citation { citationId = "fruchtel-sozialer-2013a" , citationPrefix = [] , citationSuffix = [] , citationMode = AuthorInText , citationNoteNum = 2 , citationHash = 0 } ] [ Str "Fr\252chtel," , Space , Str "Budde," , Space , Str "and" , Space , Str "Cyprian" , Space , Str "(2013)" ] ] ] ] , Div ( "refs" , [ "references" , "csl-bib-body" , "hanging-indent" ] , [] ) [ Div ( "ref-fruchtel-sozialer-2013a" , [ "csl-entry" ] , [] ) [ Para [ Str "Fr\252chtel," , Space , Str "Frank," , Space , Str "Wolfgang" , Space , Str "Budde," , Space , Str "and" , Space , Str "Gudrun" , Space , Str "Cyprian." , Space , Str "2013." , Space , Emph [ Str "Sozialer" , Space , Str "Raum" , Space , Str "und" , Space , Str "Soziale" , Space , Str "Arbeit" , Space , Str "Fieldbook:" , Space , Str "Methoden" , Space , Str "und" , Space , Str "Techniken" ] , Str "." , Space , Str "3rd" , Space , Str "ed." , Space , Str "Wiesbaden," , Space , Str "Germany:" , Space , Str "Springer" , Space , Str "VS." ] ] ] ] ``` pandoc-3.1.3/test/command/6925.md0000644000000000000000000000070007346545000014474 0ustar0000000000000000``` % pandoc -f latex -t markdown \documentclass{amsart} \newtheorem{thm}{Theorem}[section] \theoremstyle{definition} \newtheorem{thm2}[section]{Theorem} \begin{document} \begin{thm} a \begin{figure} \includegraphics[]{1.png} \end{figure} \end{thm} \begin{thm2} a \begin{figure} \includegraphics[]{1.png} \end{figure} \end{thm2} \end{document} ^D ::: thm **Theorem 1**. *a* ![image](1.png) ::: ::: thm2 **Theorem 1**. a ![image](1.png) ::: ``` pandoc-3.1.3/test/command/6948.md0000644000000000000000000000177307346545000014514 0ustar0000000000000000Treat an image alone in its paragraph (but not a figure) as an independent image: ``` % pandoc -f native -t rst [Para [Image ("",["align-center"],[]) [Str "https://pandoc.org/diagram.jpg"] ("https://pandoc.org/diagram.jpg","")]] ^D .. image:: https://pandoc.org/diagram.jpg :alt: https://pandoc.org/diagram.jpg :align: center ``` Here we just omit the center attribute as it's not valid: ``` % pandoc -f native -t rst [Para [Str "hi",Space,Image ("",["align-center"],[]) [Str "https://pandoc.org/diagram.jpg"] ("https://pandoc.org/diagram.jpg","")]] ^D hi |https://pandoc.org/diagram.jpg| .. |https://pandoc.org/diagram.jpg| image:: https://pandoc.org/diagram.jpg ``` But we can use top, middle, or bottom alignment: ``` % pandoc -f native -t rst [Para [Str "hi",Space,Image ("",["align-top"],[]) [Str "https://pandoc.org/diagram.jpg"] ("https://pandoc.org/diagram.jpg","")]] ^D hi |https://pandoc.org/diagram.jpg| .. |https://pandoc.org/diagram.jpg| image:: https://pandoc.org/diagram.jpg :align: top ``` pandoc-3.1.3/test/command/6951.md0000644000000000000000000000037707346545000014505 0ustar0000000000000000``` % pandoc --citeproc -t plain --bibliography command/biblio.bib --- references: - id: foo title: Crazy type: book ... [@foo; @item1] ^D (Crazy, n.d.; Doe 2005) Crazy. n.d. Doe, John. 2005. First Book. Cambridge: Cambridge University Press. ``` pandoc-3.1.3/test/command/6958.md0000644000000000000000000000033607346545000014507 0ustar0000000000000000Add thin space between single and double quotes. ``` % pandoc -t latex+smart --- lang: en-GB --- '["On the Outside"]{}: Constructing Cycling Citizenship.' ^D `\,{``On the Outside''}: Constructing Cycling Citizenship.' ``` pandoc-3.1.3/test/command/6970.md0000644000000000000000000000046207346545000014501 0ustar0000000000000000``` % pandoc -f html -t native https://example.com ^D [ Plain [ Link ( "foo" , [ "bar" , "baz" ] , [ ( "target" , "_blank" ) ] ) [ Str "https://example.com" ] ( "https://example.com" , "" ) ] ] ``` pandoc-3.1.3/test/command/6993.md0000644000000000000000000000073207346545000014506 0ustar0000000000000000``` % pandoc -f mediawiki -t native '''Should be bold ''' ^D [ Para [ Strong [ Str "Should" , Space , Str "be" , Space , Str "bold" ] ] ] ``` ``` % pandoc -f mediawiki -t native ''' Should be bold''' ^D [ Para [ Strong [ Str "Should" , Space , Str "be" , Space , Str "bold" ] ] ] ``` ``` % pandoc -f mediawiki -t native '' Should be emph '' ^D [ Para [ Emph [ Str "Should" , Space , Str "be" , Space , Str "emph" ] ] ] ``` pandoc-3.1.3/test/command/7003.md0000644000000000000000000000216407346545000014466 0ustar0000000000000000``` % pandoc -f latex -t native \documentclass{article} \usepackage{listings} \lstset{basicstyle=\ttfamily} \begin{filecontents*}[overwrite]{example.tex} \documentclass{article} \begin{document} \section{Bar} This a Bar section \end{document} \end{filecontents*} \begin{document} \section{With lstlisting environment} \begin{lstlisting} \documentclass{article} \begin{document} \section{Foo} This a Foo section \end{document} \end{lstlisting} \section{With lstinputlisting command} \lstinputlisting{example.tex} \end{document} ^D [ Header 1 ( "with-lstlisting-environment" , [] , [] ) [ Str "With" , Space , Str "lstlisting" , Space , Str "environment" ] , CodeBlock ( "" , [] , [] ) "\\documentclass{article}\n\\begin{document}\n\\section{Foo}\nThis a Foo section\n\\end{document}" , Header 1 ( "with-lstinputlisting-command" , [] , [] ) [ Str "With" , Space , Str "lstinputlisting" , Space , Str "command" ] , CodeBlock ( "" , [ "latex" ] , [] ) "\\documentclass{article}\n\\begin{document}\n\\section{Bar}\nThis a Bar section\n\\end{document}" ] ``` pandoc-3.1.3/test/command/7006.md0000644000000000000000000000077007346545000014472 0ustar0000000000000000``` % pandoc -t html Test.[^fn] [^fn]: Foo: ![Caption.](/image.jpg) ^D

    Test.1

    ``` pandoc-3.1.3/test/command/7009.md0000644000000000000000000000006107346545000014466 0ustar0000000000000000``` % pandoc -t gfm 3. a 4. b ^D 3. a 4. b ``` pandoc-3.1.3/test/command/7016.md0000644000000000000000000000233107346545000014466 0ustar0000000000000000``` % pandoc --citeproc --to=jats_archiving --standalone --- csl: command/apa.csl references: - id: doe type: article author: - family: Doe given: Jane container-title: Proceedings of the Academy of Test Inputs doi: 10.x/nope issued: 2021 title: Another article ... Blah [@doe]. ^D

    Blah (Doe, 2021).

    Doe, J. (2021). Another article. Proceedings of the Academy of Test Inputs. doi:10.x/nope
    ``` pandoc-3.1.3/test/command/7041.md0000644000000000000000000000062707346545000014472 0ustar0000000000000000``` % pandoc -f html -t jats
    Fly, you fools!
    ^D

    Fly, you fools!

    ``` pandoc-3.1.3/test/command/7042.md0000644000000000000000000001116307346545000014470 0ustar0000000000000000``` % pandoc -f markdown -t jats_publishing+element_citations --citeproc -s --- nocite: "[@*]" references: - author: - family: Jane given: Doe container-title: Public Library of Tests id: year-month issued: 1999-08 title: Year and month type: article-journal - accessed: 1999-01-22 author: - family: Negidius given: Numerius - literal: others container-title: Public Library of Tests id: access-date issued: 1911-10-03 title: Entry with access date and et al. type: article-journal - author: - family: Beethoven given: Ludwig dropping-particle: van - family: Bray given: Jan non-dropping-particle: de container-title: Public Library of Tests id: name-particles issued: 1820 title: Name particles, dropping and non-dropping type: article-journal - author: - 宮水 三葉 - 立花 瀧 title: Big Book of Tests id: book-with-japanese-authors issued: 2016 type: book - author: - family: Watson given: J. D. - family: Crick given: F. H. C. container-title: Nature doi: '10.1038/171737a0' id: full-journal-article-entry issue: 4356 issued: '1953-04-01' page: 737-738 pmid: 13054692 title: 'Molecular Structure of Nucleic Acids: A Structure for Deoxyribose Nucleic Acid' type: article-journal volume: 171 ... ^D
    JaneDoe Year and month Public Library of Tests 199908 NegidiusNumerius Entry with access date and et al. Public Library of Tests 19111003 19990122 BeethovenLudwig van de BrayJan Name particles, dropping and non-dropping Public Library of Tests 1820 宮水 三葉 立花 瀧 Big Book of Tests 2016 WatsonJ. D. CrickF. H. C. Molecular Structure of Nucleic Acids: A Structure for Deoxyribose Nucleic Acid Nature 19530401 171 4356 10.1038/171737a0 13054692 737 738
    ``` pandoc-3.1.3/test/command/7058.md0000644000000000000000000000012207346545000014470 0ustar0000000000000000``` % pandoc -f latex -t markdown 5\(-\)8 \(x\) ^D 5$-$``{=html}8 $x$ ``` pandoc-3.1.3/test/command/7064.md0000644000000000000000000000101707346545000014471 0ustar0000000000000000``` % pandoc -f rst -t html .. csv-table:: Changes :header: "Version", "Date", "Description" :widths: 15, 15, 70 :delim: $ 0.1.0 $ 18/02/2013 $ Initial Release ^D
    Changes
    Version Date Description
    0.1.0 18/02/2013 Initial Release
    ``` pandoc-3.1.3/test/command/7067.md0000644000000000000000000000374307346545000014504 0ustar0000000000000000``` % pandoc -t biblatex --- references: - id: garaud author: - family: Garaud given: Marcel container-title: Bulletin de la Societé des antiquaires de l’Ouest collection-title: 4 issued: - year: 1967 language: fr-FR page: 11-27 title: Recherches sur les défrichements dans la Gâtine poitevine aux XI^e^ et XII^e^ siècles type: article-journal volume: 9 ... ^D @article{garaud, author = {Garaud, Marcel}, title = {Recherches sur les défrichements dans la Gâtine poitevine aux XI\textsuperscript{e} et XII\textsuperscript{e} siècles}, journal = {Bulletin de la Societé des antiquaires de l’Ouest}, series = {4}, volume = {9}, pages = {11-27}, date = {1967}, langid = {fr-FR} } ``` ``` % pandoc -t bibtex --- references: - id: garaud author: - family: Garaud given: Marcel container-title: Bulletin de la Société des antiquaires de l’Ouest collection-title: 4 issued: - year: 1967 language: fr-FR page: 11-27 title: Recherches sur les défrichements dans la Gâtine poitevine aux XI^e^ et XII^e^ siècles type: article-journal volume: 9 ... ^D @article{garaud, author = {Garaud, Marcel}, title = {{Recherches sur les défrichements dans la Gâtine poitevine aux XI\textsuperscript{e} et XII\textsuperscript{e} siècles}}, journal = {Bulletin de la Société des antiquaires de l’Ouest}, series = {4}, volume = {9}, pages = {11-27}, year = {1967} } ``` This tests the titlecasing of a word with an accented second letter: ``` % pandoc -t bibtex --- references: - id: garaud author: - family: Garaud given: Marcel container-title: English Journal issued: - year: 1967 language: en-US title: Research on the défrichements in the Gâtine poitevine type: article-journal volume: 9 ... ^D @article{garaud, author = {Garaud, Marcel}, title = {Research on the Défrichements in the {Gâtine} Poitevine}, journal = {English Journal}, volume = {9}, year = {1967} } ``` pandoc-3.1.3/test/command/7080.md0000644000000000000000000000041207346545000014465 0ustar0000000000000000``` % pandoc -f markdown_mmd -t native ![][image] [image]: image.png width=100px height=150px ^D [ Para [ Image ( "" , [] , [ ( "width" , "100px" ) , ( "height" , "150px" ) ] ) [] ( "image.png" , "" ) ] ] ``` pandoc-3.1.3/test/command/7092.md0000644000000000000000000000024707346545000014476 0ustar0000000000000000``` % pandoc -flatex+raw_tex -t native \newcommand{\em}[1]{\emph{#1}} \em{\parseMe{foo}} ^D [ Para [ Emph [ RawInline (Format "latex") "\\parseMe{foo}" ] ] ] ``` pandoc-3.1.3/test/command/7099.md0000644000000000000000000000075707346545000014513 0ustar0000000000000000``` % pandoc -f html -t native --verbose ^D 2> [INFO] Skipped '' at input line 1 column 16 [] ``` ``` % pandoc -f html -t native --verbose ^D 2> [INFO] Fetching h:invalid@url... 2> [WARNING] Could not fetch resource h:invalid@url: Could not fetch h:invalid@url 2> InvalidUrlException "h:invalid@url" "Invalid scheme" 2> [INFO] Skipped '' at input line 1 column 29 [] ``` pandoc-3.1.3/test/command/7112.md0000644000000000000000000000027507346545000014470 0ustar0000000000000000``` % pandoc -f rst .. csv-table:: setting, ``echo PATH="path"`` ^D
    setting echo PATH="path"
    ``` pandoc-3.1.3/test/command/7129.md0000644000000000000000000000240307346545000014473 0ustar0000000000000000``` % pandoc -f latex -t native \begin{tabular}{ll} \hline FOO & BAR \\ \hline foo & \verb|b&r| \\ \hline \end{tabular} ^D [ Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "FOO" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "BAR" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "foo" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Code ( "" , [] , [] ) "b&r" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ``` pandoc-3.1.3/test/command/7132.md0000644000000000000000000000054607346545000014473 0ustar0000000000000000``` % pandoc -f markdown -t org --columns=72 - This line has exactly the wrong number of characters before the number 5. - Long line ending with a number (this time it is in parentheses and a 23) ^D - This line has exactly the wrong number of characters before the number 5. - Long line ending with a number (this time it is in parentheses and a 23) ``` pandoc-3.1.3/test/command/7134.md0000644000000000000000000000135007346545000014467 0ustar0000000000000000``` % pandoc -f rst -t native This is a paragraph. This is a block quote. .. This should be a second block quote. ^D [ Para [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "paragraph." ] , BlockQuote [ Para [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "block" , Space , Str "quote." ] ] , BlockQuote [ Para [ Str "This" , Space , Str "should" , Space , Str "be" , Space , Str "a" , Space , Str "second" , Space , Str "block" , Space , Str "quote." ] ] ] ``` pandoc-3.1.3/test/command/7145.md0000644000000000000000000000243107346545000014472 0ustar0000000000000000``` % pandoc -f mediawiki -t native Maecenas at sapien tempor, pretium turpis ut, imperdiet augue.This is a multiline reference with empty linebreaks Nulla ut massa eget ex venenatis lobortis id in eros. ^D [ Para [ Str "Maecenas" , Space , Str "at" , Space , Str "sapien" , Space , Str "tempor," , Space , Str "pretium" , Space , Str "turpis" , Space , Str "ut," , Space , Str "imperdiet" , Space , Str "augue." , Note [ Para [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "multiline" ] , Para [ Str "reference" , SoftBreak , RawInline (Format "html") "" , Str "with" , RawInline (Format "html") "" , SoftBreak , Str "empty" ] , Para [ Str "linebreaks" ] ] , Space , Str "Nulla" , Space , Str "ut" , Space , Str "massa" , Space , Str "eget" , Space , Str "ex" , Space , Str "venenatis" , Space , Str "lobortis" , Space , Str "id" , Space , Str "in" , Space , Str "eros." ] ] ``` pandoc-3.1.3/test/command/7155.md0000644000000000000000000000074107346545000014475 0ustar0000000000000000``` % pandoc -f markdown+tex_math_single_backslash -t native \(x\) \[x\] \\(x\\) \\[x\\] ^D [ Para [ Math InlineMath "x" , Space , Math DisplayMath "x" , SoftBreak , Str "\\(x\\)" , Space , Str "\\[x\\]" ] ] ``` ``` % pandoc -f markdown+tex_math_double_backslash -t native \(x\) \[x\] \\(x\\) \\[x\\] ^D [ Para [ Str "(x)" , Space , Str "[x]" , SoftBreak , Math InlineMath "x" , Space , Math DisplayMath "x" ] ] ``` pandoc-3.1.3/test/command/7173.md0000644000000000000000000001125307346545000014475 0ustar0000000000000000``` % pandoc -f docbook -t latex
    Untitled Document Word 1+2 1+2
    ^D Word \[1 + 2\] ``` ``` % pandoc -f docbook -t latex
    Untitled Document Word 1+2 1+2
    ^D Word \[1 + 2\] ``` ``` % pandoc -f docbook -t latex
    Untitled Document Word 1+2 1+2
    ^D Word \[1 + 2\] ``` ``` % pandoc -f docbook -t latex
    Untitled Document Word 1+2 1+2
    ^D Word \[1 + 2\] ``` ``` % pandoc -f docbook -t latex
    Untitled Document Word 1+2 1+2
    ^D Word \[1 + 2\] ``` pandoc-3.1.3/test/command/7181.md0000644000000000000000000000035507346545000014475 0ustar0000000000000000``` % pandoc -t latex ![Global frog population.](slides.pdf){page=13,trim=1cm,clip,width=4cm} ^D \begin{figure} \centering \includegraphics[page=13,trim=1cm,clip,width=4cm]{slides.pdf} \caption{Global frog population.} \end{figure} ``` pandoc-3.1.3/test/command/7208.md0000644000000000000000000000005107346545000014466 0ustar0000000000000000``` % pandoc -t gfm \ ^D \ ``` pandoc-3.1.3/test/command/7214.md0000644000000000000000000000107207346545000014467 0ustar0000000000000000``` % pandoc +------------+----------+------------------+ |日本語 | の文字列 | words in english | +------------+----------+------------------+ |abc defghij | def | xyz | +------------+----------+------------------+ ^D
    日本語 の文字列 words in english
    abc defghij def xyz
    ``` pandoc-3.1.3/test/command/7216.md0000644000000000000000000000111007346545000014462 0ustar0000000000000000``` % pandoc -t latex "This is some text in quotes. Another paragraph by the same speaker follows. The first paragraph should have no close quote. "The second paragraph should have open and close quotes." | "Open quote on this line, | Close quote on the next line." | "Quotes on the same line." ^D ``This is some text in quotes. Another paragraph by the same speaker follows. The first paragraph should have no close quote. ``The second paragraph should have open and close quotes.'' ``Open quote on this line,\\ Close quote on the next line.''\\ ``Quotes on the same line.'' ``` pandoc-3.1.3/test/command/7266.md0000644000000000000000000000017507346545000014501 0ustar0000000000000000``` % pandoc -f biblatex -t biblatex -s @article{id, annote = "annotation" } ^D @article{id, annote = {annotation} } ``` pandoc-3.1.3/test/command/7272.md0000644000000000000000000000072407346545000014476 0ustar0000000000000000``` % pandoc -t latex -f html
    text
    text2
    ^D \begin{longtable}[]{@{} >{\raggedright\arraybackslash}p{(\columnwidth - 0\tabcolsep) * \real{1.0000}}@{}} \toprule\noalign{} \endhead \bottomrule\noalign{} \endlastfoot \begin{minipage}[t]{\linewidth}\raggedright { text\\ text2 }\strut \end{minipage} \\ \end{longtable} ``` pandoc-3.1.3/test/command/7278.md0000644000000000000000000000110107346545000014472 0ustar0000000000000000``` % pandoc -t beamer # Slide Some blocks: ## example block title {.example} text in block ## alert block title {.alert} text in block ## block title text in block ^D \begin{frame}{Slide} \protect\hypertarget{slide}{} Some blocks: \begin{exampleblock}{example block title} \protect\hypertarget{example-block-title}{} text in block \end{exampleblock} \begin{alertblock}{alert block title} \protect\hypertarget{alert-block-title}{} text in block \end{alertblock} \begin{block}{block title} \protect\hypertarget{block-title}{} text in block \end{block} \end{frame} ``` pandoc-3.1.3/test/command/7282.md0000644000000000000000000000013107346545000014467 0ustar0000000000000000Don't crash on unmatched closing tag. ``` % pandoc -f html -t native ^D [] ``` pandoc-3.1.3/test/command/7288.md0000644000000000000000000000107607346545000014506 0ustar0000000000000000``` % pandoc -f rst -t ms .. list-table:: :widths: 50 50 :header-rows: 1 * - Left - Right * - Long text that should be easy to break up into multiple lines - Another long text that should be easy to break up into multiple lines Bar ^D .PP .na .nr LLold \n[LL] .TS delim(@@) tab( ); lw(35.0n) lw(35.0n). T{ Left T} T{ Right T} _ T{ .nr LL 35.0n .LP Long text that should be easy to break up into multiple lines T} T{ .nr LL 35.0n .PP Another long text that should be easy to break up into multiple lines .PP Bar T} .TE .nr LL \n[LLold] .ad ``` pandoc-3.1.3/test/command/7299.md0000644000000000000000000000034507346545000014506 0ustar0000000000000000``` % pandoc -f latex -t plain $1-{\ensuremath{r}\xspace}$ ^D 1 − r ``` ``` % pandoc -f latex -t plain \newcommand{\foo}{Foo\xspace} $\text{\foo bar}$ ^D Foo bar ``` ``` % pandoc -f latex -t plain a\xspace b ^D a b ``` pandoc-3.1.3/test/command/7321.md0000644000000000000000000000073107346545000014467 0ustar0000000000000000``` % pandoc -t plain --citeproc --wrap=none --- references: - id: fenner2012a title: One-click science marketing author: - family: Fenner given: Martin container-title: Nature Materials volume: 11 issue: 4 publisher: Nature Publishing Group type: article-journal issued: year: 2012 --- [@fenner2012a, $a^2+b^2=c^2$] ^D (Fenner 2012, a² + b² = c²) Fenner, Martin. 2012. “One-Click Science Marketing.” Nature Materials 11 (4). ``` pandoc-3.1.3/test/command/7323.md0000644000000000000000000000054107346545000014470 0ustar0000000000000000``` % pandoc --citeproc -t plain --- references: - id: smith author: John Smith issued: 2019 title: Insects type: book ... @smith [chap. 6] @smith [chapter 6] @smith [Chap. 6] @smith [Chapter 6] ^D John Smith (2019, chap. 6) John Smith (2019, chap. 6) John Smith (2019, chap. 6) John Smith (2019, chap. 6) John Smith. 2019. Insects. ``` pandoc-3.1.3/test/command/7324.md0000644000000000000000000000051707346545000014474 0ustar0000000000000000``` % pandoc --citeproc -t plain --- references: - id: smith author: John Smith issued: 2019 title: Insects type: book ... @smith [, among others] @smith [ among others] @smith [among others] ^D John Smith (2019, among others) John Smith (2019 among others) John Smith (2019, among others) John Smith. 2019. Insects. ``` pandoc-3.1.3/test/command/7329.md0000644000000000000000000000237607346545000014506 0ustar0000000000000000``` % pandoc -f markdown -t org - @item1 - @item1 [p. 12] - @item1 [p.12; see also @item2] - [@item1] - [-@item1] - [see @item1 p. 12] - [see @item1, p. 12] - [see @item1, p. 12 and *passim*] - [@item1;@item2] - [see @item1; @item2] ^D - [cite/t:@item1] - [cite/t:@item1 p. 12] - [cite/t:@item1 p.12; see also @item2] - [cite:@item1] - [cite/na:@item1] - [cite:see @item1 p. 12] - [cite:see @item1 p. 12] - [cite:see @item1 p. 12 and /passim/] - [cite:@item1; @item2] - [cite:see @item1; @item2] ``` ``` % pandoc -f markdown -t org -C --bibliography command/biblio.bib - [@item1] ^D - [cite:@item1] ``` ``` % pandoc -f markdown -t org-citations -C --bibliography command/biblio.bib [@item1] ^D (Doe 2005) <> <> Doe, John. 2005. /First Book/. Cambridge: Cambridge University Press. ``` ``` % pandoc -f org -t markdown - [cite/t:@item1] - [cite/t:@item1 p. 12] - [cite/t:@item1 p.12; see also @item2] - [cite:@item1] - [cite/na:@item1] - [cite:see @item1 p. 12] - [cite:see @item1 p. 12 and /passim/] - [cite:@item1; @item2] - [cite:see @item1; @item2] ^D - @item1 - @item1 [p. 12] - @item1 [p.12; see also @item2] - [@item1] - [-@item1] - [see @item1 p. 12] - [see @item1 p. 12 and *passim*] - [@item1; @item2] - [see @item1; @item2] ``` pandoc-3.1.3/test/command/7339.md0000644000000000000000000000027107346545000014477 0ustar0000000000000000``` % pandoc -f gfm -s -t native --- title: Test --- Hi ^D Pandoc Meta { unMeta = fromList [ ( "title" , MetaInlines [ Str "Test" ] ) ] } [ Para [ Str "Hi" ] ] ``` pandoc-3.1.3/test/command/7340.md0000644000000000000000000000011607346545000014465 0ustar0000000000000000``` % pandoc -f latex -t native \(*\) ^D [ Para [ Math InlineMath "*" ] ] ``` pandoc-3.1.3/test/command/7376.md0000644000000000000000000000024707346545000014503 0ustar0000000000000000``` % pandoc --citeproc -t plain --- references: - id: item1 type: book author: - family: Doe given: Jane issued: 2020 title: The title ... ^D ``` pandoc-3.1.3/test/command/7394.md0000644000000000000000000000246307346545000014505 0ustar0000000000000000``` % pandoc -f markdown -t plain --citeproc --- csl: command/chicago-fullnote-bibliography.csl references: - author: - family: Wandt given: Manfred edition: 6 id: wandt2014ges-sv issued: 2014 publisher: Franz Vahlen publisher-place: München title: Gesetzliche schuldverhältnisse title-short: Gesetzl SV type: book - author: - family: Smith given: Zenda edition: 6 id: smith2015 issued: 2015 publisher: Macmillan publisher-place: New York title: A verb and a noun type: book --- Hi^[@wandt2014ges-sv.]. Hi^[[@wandt2014ges-sv].]. Hi^[[See also @wandt2014ges-sv].]. Hi^[See also @wandt2014ges-sv.]. Hi^[@wandt2014ges-sv [@smith2015].]. Hi^[[@wandt2014ges-sv; @smith2015].]. Hi [@wandt2014ges-sv]. Hi [see also @wandt2014ges-sv]. ^D Hi[1]. Hi[2]. Hi[3]. Hi[4]. Hi[5]. Hi[6]. Hi.[7] Hi.[8] Smith, Zenda. A Verb and a Noun. 6th ed. New York: Macmillan, 2015. Wandt, Manfred. Gesetzliche Schuldverhältnisse. 6th ed. München: Franz Vahlen, 2014. [1] Manfred Wandt, Gesetzliche Schuldverhältnisse, 6th ed. (München: Franz Vahlen, 2014). [2] Wandt. [3] See also Wandt. [4] See also Wandt. [5] Wandt, Zenda Smith, A Verb and a Noun, 6th ed. (New York: Macmillan, 2015). [6] Wandt, Gesetzl SV; Smith, A Verb and a Noun. [7] Wandt, Gesetzl SV. [8] See also Wandt. ``` pandoc-3.1.3/test/command/7397.md0000644000000000000000000000050107346545000014477 0ustar0000000000000000```` % pandoc -t markdown ~~~~ { .haskell startFrom="100"} qsort [] = [] qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs) ~~~~ ^D ``` {.haskell startFrom="100"} qsort [] = [] qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs) ``` ```` pandoc-3.1.3/test/command/7400.md0000644000000000000000000000014007346545000014457 0ustar0000000000000000``` % pandoc -t native -s --- # Comment only ... ^D Pandoc Meta { unMeta = fromList [] } [] ``` pandoc-3.1.3/test/command/7416.md0000644000000000000000000000063507346545000014477 0ustar0000000000000000``` % pandoc -f markdown -t html ![caption](../media/rId25.jpg "title"){alt="alt"} ^D
    alt
    caption
    ``` ``` % pandoc -f markdown -t html ![caption](../media/rId25.jpg "title") ^D
    caption
    ``` pandoc-3.1.3/test/command/7434.md0000644000000000000000000000063607346545000014500 0ustar0000000000000000``` % pandoc -f markdown -t native \begin{proof} \newcommand{\x}{\left.\right.} \x \end{proof} 1234567890abcdefghi [\*\a](x) ^D [ RawBlock (Format "tex") "\\begin{proof}\n\\newcommand{\\x}{\\left.\\right.}\n\\left.\\right.\n\\end{proof}" , Para [ Str "1234567890abcdefghi" ] , Para [ Link ( "" , [] , [] ) [ Str "*" , RawInline (Format "tex") "\\a" ] ( "x" , "" ) ] ] ``` pandoc-3.1.3/test/command/7436.md0000644000000000000000000000102307346545000014471 0ustar0000000000000000``` % pandoc -f rst -t native .. include:: command/three.txt :code: .. include:: command/three.txt :literal: .. include:: command/three.txt ^D [ CodeBlock ( "" , [ "" ] , [ ( "code" , "" ) ] ) "1st line.\n2nd line.\n3rd line.\n" , CodeBlock ( "" , [ "" ] , [ ( "literal" , "" ) ] ) "1st line.\n2nd line.\n3rd line.\n" , Para [ Str "1st" , Space , Str "line." , SoftBreak , Str "2nd" , Space , Str "line." , SoftBreak , Str "3rd" , Space , Str "line." ] ] ``` pandoc-3.1.3/test/command/7482.md0000644000000000000000000000323107346545000014475 0ustar0000000000000000``` % pandoc -f html -t org
    Last N credits Average grade
    140 17.06571429
    84 17.95595238
    64 18.9734375
    36 19.12777778
    29 19.18275862
    19 19.00526316
    ^D | Last N credits | Average grade | | 140 | 17.06571429 | | 84 | 17.95595238 | | 64 | 18.9734375 | | 36 | 19.12777778 | | 29 | 19.18275862 | | 19 | 19.00526316 | ``` pandoc-3.1.3/test/command/7494.md0000644000000000000000000000104107346545000014475 0ustar0000000000000000``` % pandoc -f latex -t plain \def\foo{BAR} {\foo \def\foo{BAZ} \foo } \foo ^D BAR BAZ BAR ``` ``` % pandoc -f latex -t plain \def\foo{BAR} {\foo \gdef\foo{BAZ} \foo } \foo ^D BAR BAZ BAZ ``` ``` % pandoc -f latex -t plain \def\foo{BAR} {\foo \global\def\foo{BAZ} \foo } \foo ^D BAR BAZ BAZ ``` ``` % pandoc -f latex -t plain \newcommand{\aaa}{BBB} { \renewcommand{\aaa}{AAA} \aaa } \aaa ^D AAA BBB ``` ``` % pandoc -f latex -t markdown \newcommand{\aaa}{BBB} \begin{quote} \renewcommand{\aaa}{AAA} \aaa \end{quote} \aaa ^D > AAA BBB ``` pandoc-3.1.3/test/command/7497.md0000644000000000000000000000117107346545000014504 0ustar0000000000000000```` % pandoc -f markdown-raw_tex -t latex ``` \end{verbatim} \LaTeX \begin{verbatim} ``` ^D \begin{Shaded} \begin{Highlighting}[] \NormalTok{\textbackslash{}end\{verbatim\}} \NormalTok{\textbackslash{}LaTeX} \NormalTok{\textbackslash{}begin\{verbatim\}} \end{Highlighting} \end{Shaded} ```` ```` % pandoc -f markdown-raw_tex -t latex hi[^1] [^1]: ``` \end{Verbatim} \LaTeX \begin{Verbatim} ``` ^D hi\footnote{\begin{Shaded} \begin{Highlighting}[] \NormalTok{\textbackslash{}end\{Verbatim\}} \NormalTok{\textbackslash{}LaTeX} \NormalTok{\textbackslash{}begin\{Verbatim\}} \end{Highlighting} \end{Shaded} } ```` pandoc-3.1.3/test/command/7520.md0000644000000000000000000000061707346545000014473 0ustar0000000000000000``` % pandoc -f org -t native -s :PROPERTIES: :ID: d5b18943-98a3-4b2a-a545-41d17bf50f3e :END: #+title: Common Ground ^D Pandoc Meta { unMeta = fromList [ ( "id" , MetaString "d5b18943-98a3-4b2a-a545-41d17bf50f3e" ) , ( "title" , MetaInlines [ Str "Common" , Space , Str "Ground" ] ) ] } [] ``` pandoc-3.1.3/test/command/7521.md0000644000000000000000000000015407346545000014470 0ustar0000000000000000``` % pandoc --strip-comments - one - two ^D
    • one
    • two
    ``` pandoc-3.1.3/test/command/7525.md0000644000000000000000000000146007346545000014475 0ustar0000000000000000``` % pandoc -f latex -t native \texttt{Normal code. \emph{Emph and code.} \textsc{\textbf{Bold small caps.}} \sout{Strikeout. \underline{Strikeout and underline.}}} ^D [ Para [ Code ( "" , [] , [] ) "Normal code. " , Emph [ Code ( "" , [] , [] ) "Emph and code." ] , Code ( "" , [] , [] ) " " , SmallCaps [ Strong [ Code ( "" , [] , [] ) "Bold small caps." ] ] , Code ( "" , [] , [] ) " " , Strikeout [ Code ( "" , [] , [] ) "Strikeout. " , Underline [ Code ( "" , [] , [] ) "Strikeout and underline." ] ] ] ] ``` ``` % pandoc -f html -t native hi ^D [ Plain [ Strong [ Code ( "" , [] , [] ) "hi" ] ] ] ``` ``` % pandoc -f mediawiki -t native ''hey'' ^D [ Para [ Emph [ Code ( "" , [] , [] ) "hey" ] ] ] ``` pandoc-3.1.3/test/command/7529.md0000644000000000000000000000033607346545000014502 0ustar0000000000000000``` % pandoc -f html -t asciidoc https://example.com/show.cgi?id=hi--there--everyone ^D link:++https://example.com/show.cgi?id=hi--there--everyone++[] ``` pandoc-3.1.3/test/command/7546.md0000644000000000000000000000012007346545000014470 0ustar0000000000000000``` % pandoc -t html -f native Span ("", [], [("","")]) [] ^D ``` pandoc-3.1.3/test/command/7557.md0000644000000000000000000000046007346545000014501 0ustar0000000000000000``` % pandoc -f org -t native - 11. and 12. 09. meeting ^D [ BulletList [ [ Plain [ Str "11." , Space , Str "and" , Space , Str "12." , Space , Str "09." , Space , Str "meeting" ] ] ] ] ``` pandoc-3.1.3/test/command/7568.md0000644000000000000000000000125207346545000014503 0ustar0000000000000000``` % pandoc -f rst While `Labyrinth Lord: Revised Edition`_ (LLRE; PDF and POD) has been criticized for not being a completely faithful retro-clone of the Moldvay/Cook/Marsh Basic/Expert D&D rules (B/X), I think it still holds a useful spot. .. _Labyrinth Lord\: Revised Edition: https://www.drivethrurpg.com/product/64332/Labyrinth-Lord-Revised-Edition ^D

    While Labyrinth Lord: Revised Edition (LLRE; PDF and POD) has been criticized for not being a completely faithful retro-clone of the Moldvay/Cook/Marsh Basic/Expert D&D rules (B/X), I think it still holds a useful spot.

    ``` pandoc-3.1.3/test/command/7573.md0000644000000000000000000000011407346545000014473 0ustar0000000000000000``` % pandoc --preserve-tabs
    1. one
    ^D
    1. one
    ``` pandoc-3.1.3/test/command/7589.md0000644000000000000000000000337307346545000014514 0ustar0000000000000000``` % pandoc -f html -t native
    experience expertise paradigms haskell name image
    ^D [ Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "experience" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "expertise" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "paradigms" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "haskell" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "name" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "image" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [] ] (TableFoot ( "" , [] , [] ) []) ] ``` pandoc-3.1.3/test/command/7615.md0000644000000000000000000000013207346545000014470 0ustar0000000000000000``` % pandoc -f latex -t native \texttt{\^} ^D [ Para [ Code ( "" , [] , [] ) "^" ] ] ``` pandoc-3.1.3/test/command/7623.md0000644000000000000000000000026507346545000014476 0ustar0000000000000000``` % pandoc -t native [link $(0,1]$](url) ^D [ Para [ Link ( "" , [] , [] ) [ Str "link" , Space , Math InlineMath "(0,1]" ] ( "url" , "" ) ] ] ``` pandoc-3.1.3/test/command/7632.md0000644000000000000000000000225307346545000014475 0ustar0000000000000000``` % pandoc -t native (@a) First case [link to (@a)](url) ^D [ OrderedList ( 1 , Example , TwoParens ) [ [ Plain [ Str "First" , Space , Str "case" ] ] ] , Para [ Link ( "" , [] , [] ) [ Str "link" , Space , Str "to" , Space , Str "(1)" ] ( "url" , "" ) ] ] ``` ``` % pandoc -t native [@a]{.class} ^D [ Para [ Span ( "" , [ "class" ] , [] ) [ Cite [ Citation { citationId = "a" , citationPrefix = [] , citationSuffix = [] , citationMode = AuthorInText , citationNoteNum = 1 , citationHash = 0 } ] [ Str "@a" ] ] ] ] ``` ``` % pandoc -t native [@a](url) ^D [ Para [ Link ( "" , [] , [] ) [ Cite [ Citation { citationId = "a" , citationPrefix = [] , citationSuffix = [] , citationMode = AuthorInText , citationNoteNum = 1 , citationHash = 0 } ] [ Str "@a" ] ] ( "url" , "" ) ] ] ``` pandoc-3.1.3/test/command/7668.md0000644000000000000000000000106107346545000014502 0ustar0000000000000000``` % pandoc -f bibtex -t csljson %@Book{JW82, author = {Richard A. Johnson and Dean W. Wichern}, title = {Applied Multivariate Statistical Analysis}, publisher= {Prentice-Hall}, year = {1983} } @Book{JW83, author = {Richard %A. B. Johnson}, % title = {Multivariate Analysis}, year = "% 1983" } ^D [ { "author": [ { "family": "Johnson", "given": "Richard B." } ], "id": "JW83", "issued": { "date-parts": [ [ 1983 ] ] }, "type": "book" } ] ``` pandoc-3.1.3/test/command/7678.md0000644000000000000000000000143207346545000014505 0ustar0000000000000000``` % pandoc -f bibtex -t csljson @misc{doe, author = "Jane Doe", title = "Work", year = "2021", url = "%20and%20" } ^D [ { "URL": "%20and%20", "author": [ { "family": "Doe", "given": "Jane" } ], "id": "doe", "issued": { "date-parts": [ [ 2021 ] ] }, "title": "Work", "type": "" } ] ``` ``` % pandoc -f bibtex -t csljson @misc{doe, author = "Jane Doe", title = "Work", year = "2021", doi = "%20and%20" } ^D [ { "DOI": "%20and%20", "author": [ { "family": "Doe", "given": "Jane" } ], "id": "doe", "issued": { "date-parts": [ [ 2021 ] ] }, "title": "Work", "type": "" } ] ``` pandoc-3.1.3/test/command/7692.md0000644000000000000000000000036207346545000014502 0ustar0000000000000000``` % pandoc -t markdown [https://example.com](https://example.com){.clz} ^D [https://example.com](https://example.com){.clz} ``` ``` % pandoc -f markdown -t html | pandoc -f html -t markdown ^D ``` pandoc-3.1.3/test/command/7697.md0000644000000000000000000000062507346545000014511 0ustar0000000000000000``` % pandoc -f rst -t mediawiki .. _refsubpage1: heading ------- ref to top of this section: `refsubpage1`_. ^D = heading = ref to top of this section: [[#refsubpage1|refsubpage1]]. ``` ``` % pandoc -f markdown -t mediawiki # Heading {#foo} ^D = Heading = ``` ``` % pandoc -f markdown -t mediawiki # My Heading {#My_Heading} ^D = My Heading = ``` pandoc-3.1.3/test/command/7713.md0000644000000000000000000000122007346545000014466 0ustar0000000000000000``` % pandoc | aaaaaaaaaaaa | bbbbb | ccccccccccc | | --- | --- | --- | | | | cccccccccc cccccccccc cccccccccc cccccccccc cccccccccc cccccccccc | ^D
    aaaaaaaaaaaa bbbbb ccccccccccc
    cccccccccc cccccccccc cccccccccc cccccccccc cccccccccc cccccccccc
    ``` pandoc-3.1.3/test/command/7723.md0000644000000000000000000000015407346545000014474 0ustar0000000000000000``` % pandoc -t native Bug![^1] [^1]: Note. ^D [ Para [ Str "Bug!" , Note [ Para [ Str "Note." ] ] ] ] ``` pandoc-3.1.3/test/command/7726.md0000644000000000000000000000016407346545000014500 0ustar0000000000000000``` % pandoc -t markdown \# Hi \## Hi \### Hi \#### hi and #hi ^D \# Hi \## Hi \### Hi \#### hi and #hi ``` pandoc-3.1.3/test/command/7738.md0000644000000000000000000000012307346545000014476 0ustar0000000000000000``` % pandoc ![_](url.png) image ^D

    _ image

    ``` pandoc-3.1.3/test/command/7743.md0000644000000000000000000000106307346545000014476 0ustar0000000000000000``` % pandoc -f markdown+mark -t html ==Hi== ^D

    Hi

    ``` ``` % pandoc -f markdown+mark -t latex ==Hi== ^D \hl{Hi} ``` ``` % pandoc -f markdown+mark -t rst ==Hi== ^D :mark:`Hi` ``` ``` % pandoc -f html -t markdown+mark Hi ^D ==Hi== ``` ``` % pandoc -f html -t markdown Hi ^D [Hi]{.mark} ``` ``` % pandoc -f rst -t markdown+mark :mark:`Hi` ^D ==Hi== ``` ``` % pandoc -f markdown+mark -t docx -o - | pandoc -f docx -t markdown+mark ==Hi== ^D ==Hi== ``` ``` % pandoc -f latex -t markdown+mark \hl{Hi} ^D ==Hi== ``` pandoc-3.1.3/test/command/7761.md0000644000000000000000000000141707346545000014501 0ustar0000000000000000``` % pandoc --citeproc --csl command/chicago-fullnote-bibliography.csl -t plain --- references: - id: noauthor issued: 2020 publisher: Oxford University Press publisher-place: Oxford title: Title type: book - id: author author: - family: Jones given: Jim issued: 2021 title: Title type: book url: "https://duckduckgo.com/cite2021" --- Text.[^n] [^n]: See @author. Another example of a sea level mapping tool with similar limitations is @noauthor. ^D Text.[1] Jones, Jim. Title, 2021. https://duckduckgo.com/cite2021. Title. Oxford: Oxford University Press, 2020. [1] See Jim Jones, Title, 2021, https://duckduckgo.com/cite2021. Another example of a sea level mapping tool with similar limitations is Title (Oxford: Oxford University Press, 2020). ``` pandoc-3.1.3/test/command/7803.md0000644000000000000000000000126607346545000014500 0ustar0000000000000000``` % pandoc -f html -t asciidoc ^D * link:x.htm[_Xx_]_,_ * link:x.htm[_Xx_]_,,_ * link:x.htm[_Xx_]_1_ * link:x.htm[_Xx_]1__1__ * link:x.htm[_Xx_]_bcd_ * link:x.htm[_Xx_]a__bcd__ * link:x.htm[_Xx_]a__bcd__e * link:x.htm[_Xx_] _,_ * link:x.htm[_Xx_],_,_ * link:x.htm[Xx]_,_ ``` pandoc-3.1.3/test/command/7808.md0000644000000000000000000000036707346545000014506 0ustar0000000000000000Wiki links should have no display text, if their display text matches their target. ``` % pandoc -f mediawiki -t mediawiki [[Help]] [[Butter|Butter]] [[Bubbles|Everyone loves bubbles]] ^D [[Help]] [[Butter]] [[Bubbles|Everyone loves bubbles]] ``` pandoc-3.1.3/test/command/7810.md0000644000000000000000000000043107346545000014467 0ustar0000000000000000``` % pandoc -f org -t org - #+begin_example aa #+end_example - test ^D - #+begin_example aa #+end_example - test ``` ``` % pandoc -f org -t org - a - - a - a ^D - a - - a - a ``` ``` % pandoc -f org -t org - a - b - b - a - a ^D - a - b - b - a - a ``` pandoc-3.1.3/test/command/7813-meta.yaml0000644000000000000000000000010707346545000015760 0ustar0000000000000000--- abstract: | a footnote[^1] in abstract. [^1]: content ... pandoc-3.1.3/test/command/7813.md0000644000000000000000000000106407346545000014475 0ustar0000000000000000``` % pandoc --metadata-file command/7813-meta.yaml -t native -s Hi ^D Pandoc Meta { unMeta = fromList [ ( "abstract" , MetaBlocks [ Para [ Str "a" , Space , Str "footnote" , Note [ Para [ Str "content" ] ] , Space , Str "in" , Space , Str "abstract." ] ] ) ] } [ Para [ Str "Hi" ] ] ``` pandoc-3.1.3/test/command/7826.md0000644000000000000000000000364307346545000014506 0ustar0000000000000000``` % pandoc -t plain --citeproc --- bibliography: command/biblio.bib suppress-bibliography: true csl: command/american-medical-association.csl notes-after-punctuation: true --- In numerous recent works [@item1; @item2], statistician Foo and Bar have criticized XXX. ^D In numerous recent works,^(1,2) statistician Foo and Bar have criticized XXX. ``` ``` % pandoc -t plain --citeproc --- bibliography: command/biblio.bib suppress-bibliography: true csl: command/american-medical-association.csl --- In numerous recent works [@item1; @item2], statistician Foo and Bar have criticized XXX. ^D In numerous recent works^(1,2), statistician Foo and Bar have criticized XXX. ``` ``` % pandoc -t plain --citeproc --- bibliography: command/biblio.bib suppress-bibliography: true csl: command/chicago-fullnote-bibliography.csl notes-after-punctuation: false --- In numerous recent works [@item1; @item2], statistician Foo and Bar have criticized XXX. ^D In numerous recent works[1], statistician Foo and Bar have criticized XXX. [1] John Doe, First Book (Cambridge: Cambridge University Press, 2005); John Doe, “Article,” Journal of Generic Studies 6 (2006): 33–34. ``` ``` % pandoc -t plain --citeproc --- bibliography: command/biblio.bib suppress-bibliography: true csl: command/chicago-fullnote-bibliography.csl --- In numerous recent works [@item1; @item2], statistician Foo and Bar have criticized XXX. ^D In numerous recent works,[1] statistician Foo and Bar have criticized XXX. [1] John Doe, First Book (Cambridge: Cambridge University Press, 2005); John Doe, “Article,” Journal of Generic Studies 6 (2006): 33–34. ``` ``` % pandoc -t plain --citeproc --- bibliography: command/biblio.bib suppress-bibliography: true notes-after-punctuation: true --- In numerous recent works [@item1; @item2], statistician Foo and Bar have criticized XXX. ^D In numerous recent works (Doe 2005, 2006), statistician Foo and Bar have criticized XXX. ``` pandoc-3.1.3/test/command/7847.md0000644000000000000000000000427307346545000014511 0ustar0000000000000000``` % pandoc -f html -t markdown_strict+pipe_tables
    aaa bbb ccc
    Consequat nisi sit amet nibh. Nunc mi tortor, tristique sit amet, rhoncus porta, malesuada elementum, nisi. ccc
    ^D | aaa | bbb | ccc | |---------------|------------------------------------------|---------------| | Consequat nisi sit amet nibh. Nunc mi tortor, tristique sit amet, rhoncus porta, malesuada elementum, nisi. | | ccc | ``` ``` % pandoc -f html -t markdown_strict+pipe_tables
    aaa bbb ccc
    Consequat nisi sit amet nibh. Nunc mi tortor, tristique sit amet, rhoncus porta, malesuada elementum, nisi. ccc
    ^D | aaa | bbb | ccc | |-------------------------------------------------------------------------------------------------------------|-----|-----| | Consequat nisi sit amet nibh. Nunc mi tortor, tristique sit amet, rhoncus porta, malesuada elementum, nisi. | | ccc | ``` ``` % pandoc -f html -t commonmark+pipe_tables
    aaa bbb ccc
    Consequat nisi sit amet nibh. Nunc mi tortor, tristique sit amet, rhoncus porta, malesuada elementum, nisi. bbb ccc
    ^D | aaa | bbb | ccc | |-------------------------------------------------------------------------------------------------------------|-----|-----| | Consequat nisi sit amet nibh. Nunc mi tortor, tristique sit amet, rhoncus porta, malesuada elementum, nisi. | bbb | ccc | ``` pandoc-3.1.3/test/command/7857.md0000644000000000000000000000035207346545000014504 0ustar0000000000000000``` % pandoc --slide-level=2 -t beamer # section ::: notes my note ::: ## slide ok ^D \hypertarget{section}{% \section{section}\label{section}} \note{my note} \begin{frame}{slide} \protect\hypertarget{slide}{} ok \end{frame} ``` pandoc-3.1.3/test/command/7858.md0000644000000000000000000000057707346545000014516 0ustar0000000000000000``` % pandoc -t html --columns=50 --wrap=auto `neuth asontue stheuosnt aeosunth asnoetuh asneotuh snatehou snatoehu sntahe ousntahoe unstaheou sntaheou aoeu sthoeu sntaoeusnth ansoetuhs atoeuh saonteu` ^D

    neuth asontue stheuosnt aeosunth asnoetuh asneotuh snatehou snatoehu sntahe ousntahoe unstaheou sntaheou aoeu sthoeu sntaoeusnth ansoetuhs atoeuh saonteu

    ``` pandoc-3.1.3/test/command/7861.md0000644000000000000000000000022507346545000014476 0ustar0000000000000000``` % pandoc -s -t native --data-dir=command/7861 --metadata-file=../../7861.yaml Hello ^D 2> Could not find metadata file ../../7861.yaml => 98 ``` pandoc-3.1.3/test/command/7861.yaml0000644000000000000000000000000007346545000015027 0ustar0000000000000000pandoc-3.1.3/test/command/7861/metadata/0000755000000000000000000000000007346545000015735 5ustar0000000000000000pandoc-3.1.3/test/command/7861/metadata/placeholder0000644000000000000000000000000007346545000020130 0ustar0000000000000000pandoc-3.1.3/test/command/7863.md0000644000000000000000000000042507346545000014502 0ustar0000000000000000``` % pandoc -f commonmark+yaml_metadata_block+sourcepos -t native --- key: | value ... Text ^D [ Div ( "" , [] , [ ( "data-pos" , "8:1-9:1" ) ] ) [ Para [ Span ( "" , [] , [ ( "data-pos" , "8:1-8:5" ) ] ) [ Str "Text" ] ] ] ] ``` pandoc-3.1.3/test/command/7871.md0000644000000000000000000000034707346545000014504 0ustar0000000000000000``` % pandoc -f html -t html
    a
    ^D
    a
    ``` pandoc-3.1.3/test/command/7884.md0000644000000000000000000000346207346545000014511 0ustar0000000000000000``` % pandoc -f html+epub_html_exts -t native

    Chapter 1

    Here is a footnote.1

    Here is a second footnote.2


    1. This is a test↩︎

    2. This is another test↩︎

    ^D [ Div ( "chapter-1" , [ "section" , "level1" ] , [ ( "number" , "1" ) ] ) [ Header 1 ( "chapter-1" , [] , [ ( "number" , "1" ) ] ) [ Str "Chapter" , Space , Str "1" ] , Para [ Str "Here" , Space , Str "is" , Space , Str "a" , Space , Str "footnote." , Note [ Para [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "test" ] ] ] , Para [ Str "Here" , Space , Str "is" , Space , Str "a" , Space , Str "second" , Space , Str "footnote." , Note [ Para [ Str "This" , Space , Str "is" , Space , Str "another" , Space , Str "test" ] ] ] ] ] ``` pandoc-3.1.3/test/command/7894.md0000644000000000000000000000375607346545000014520 0ustar0000000000000000``` % pandoc -f ris -t csljson TY - BOOK ID - Chang_Keisler_Model_Theory AU - Chang, C. C. AU - Keisler, H. Jerome PY - 1990 ET - 3 TI - Model Theory PU - North-Holland Press PP - Amsterdam KW - model theory KW - logic ER - TY - JOUR AU - Shannon, Claude E. PY - 1948 DA - July TI - A Mathematical Theory of Communication T2 - Bell System Technical Journal SP - 379 EP - 423 VL - 27 ER - TY - JOUR T1 - On computable numbers, with an application to the Entscheidungsproblem A1 - Turing, Alan Mathison JO - Proc. of London Mathematical Society VL - 47 IS - 1 KW - decidability KW - computability SP - 230 EP - 265 Y1 - 1937 ER - ^D [ { "author": [ { "family": "Chang", "given": "C. C." }, { "family": "Keisler", "given": "H. Jerome" } ], "edition": "3", "id": "Chang_Keisler_Model_Theory", "issued": { "date-parts": [ [ 1990 ] ] }, "keyword": "logic, model theory", "publisher-place": "Amsterdam", "title": "Model Theory", "type": "book" }, { "author": [ { "family": "Shannon", "given": "Claude E." } ], "container-title": "Bell System Technical Journal", "id": "Shannon_1948", "issued": { "date-parts": [ [ 1948 ] ] }, "page": "379-423", "title": "A Mathematical Theory of Communication", "type": "article-journal", "volume": "27" }, { "author": [ { "family": "Turing", "given": "Alan Mathison" } ], "container-title": "Proc. of London Mathematical Society", "id": "Turing_1937", "issue": "1", "issued": { "date-parts": [ [ 1937 ] ] }, "keyword": "computability, decidability", "page": "230-265", "title": "On computable numbers, with an application to the Entscheidungsproblem", "type": "article-journal", "volume": "47" } ] ``` pandoc-3.1.3/test/command/7919.md0000644000000000000000000000271507346545000014510 0ustar0000000000000000``` % pandoc -f markdown single column table | ------------------- | item 1 | item 2 | ^D
    single column table
    item 1
    item 2
    ``` ``` % pandoc -f markdown | single column table | ------------------- | item 1 | item 2 ^D
    single column table
    item 1
    item 2
    ``` ``` % pandoc -f markdown single column table ------------------- item 1 item 2 ^D

    single column table

    item 1 item 2

    ``` ``` % pandoc -f gfm single column table | ------------------- | item 1 | item 2 | ^D
    single column table
    item 1
    item 2
    ``` ``` % pandoc -f gfm | single column table | ------------------- | item 1 | item 2 ^D
    single column table
    item 1
    item 2
    ``` ``` % pandoc -f gfm single column table ------------------- item 1 item 2 ^D

    single column table

    item 1 item 2

    ``` pandoc-3.1.3/test/command/7920.md0000644000000000000000000000031407346545000014471 0ustar0000000000000000``` % pandoc -t native [hi]{#123} ^D [ Para [ Span ( "123" , [] , [] ) [ Str "hi" ] ] ] ``` ``` % pandoc -t markdown [hi]{#123} ^D [hi]{#123} ``` ``` % pandoc -t markdown # Hi {#123} ^D # Hi {#123} ``` pandoc-3.1.3/test/command/7930.md0000644000000000000000000000404007346545000014472 0ustar0000000000000000``` % pandoc -f latex -t native We discuss foobar in notes \ref{note:X} and \ref{note:Y}. Foo.\footnote{\label{note:X}A note. See also note~\ref{note:Y}.} Bar.\footnote{\label{note:Y}Another note. See also note~\ref{note:X}} ^D [ Para [ Str "We" , Space , Str "discuss" , Space , Str "foobar" , Space , Str "in" , Space , Str "notes" , Space , Link ( "" , [] , [ ( "reference-type" , "ref" ) , ( "reference" , "note:X" ) ] ) [ Str "1" ] ( "#note:X" , "" ) , Space , Str "and" , Space , Link ( "" , [] , [ ( "reference-type" , "ref" ) , ( "reference" , "note:Y" ) ] ) [ Str "2" ] ( "#note:Y" , "" ) , Str "." ] , Para [ Str "Foo." , Note [ Para [ Span ( "note:X" , [] , [ ( "label" , "note:X" ) ] ) [] , Str "A" , Space , Str "note." , Space , Str "See" , Space , Str "also" , Space , Str "note\160" , Link ( "" , [] , [ ( "reference-type" , "ref" ) , ( "reference" , "note:Y" ) ] ) [ Str "2" ] ( "#note:Y" , "" ) , Str "." ] ] ] , Para [ Str "Bar." , Note [ Para [ Span ( "note:Y" , [] , [ ( "label" , "note:Y" ) ] ) [] , Str "Another" , Space , Str "note." , Space , Str "See" , Space , Str "also" , SoftBreak , Str "note\160" , Link ( "" , [] , [ ( "reference-type" , "ref" ) , ( "reference" , "note:X" ) ] ) [ Str "1" ] ( "#note:X" , "" ) ] ] ] ] ``` pandoc-3.1.3/test/command/7939.md0000644000000000000000000000023107346545000014501 0ustar0000000000000000``` % pandoc -f latex -t native \def\|{\verb|} \vbox{ \hbox{\|\begin{minipage}[t]%|} } ^D [ Para [ Code ( "" , [] , [] ) "\\begin{minipage}[t]%" ] ] ``` pandoc-3.1.3/test/command/7941.md0000644000000000000000000000012007346545000014467 0ustar0000000000000000``` % pandoc -f commonmark_x -t commonmark_x # Class setup ^D # Class setup ``` pandoc-3.1.3/test/command/7953.md0000644000000000000000000000025707346545000014505 0ustar0000000000000000``` % pandoc -f latex -t native {foo\bgroup bar\egroup } ^D [ Para [ Span ( "" , [] , [] ) [ Str "foo" , Span ( "" , [] , [] ) [ Str "bar" ] ] ] ] ``` pandoc-3.1.3/test/command/7965.md0000644000000000000000000000251307346545000014505 0ustar0000000000000000``` % pandoc -f markdown -t gfm Watson and Crick (1953)
    Watson, J. D., and F. H. C. Crick. 1953. “Molecular Structure of Nucleic Acids: A Structure for Deoxyribose Nucleic Acid.” *Nature* 171 (4356): 737–38. .
    ^D Watson and Crick (1953)
    Watson, J. D., and F. H. C. Crick. 1953. “Molecular Structure of Nucleic Acids: A Structure for Deoxyribose Nucleic Acid.” *Nature* 171 (4356): 737–38. .
    ``` ``` % pandoc -f markdown -t gfm-raw_html Watson and Crick (1953)
    Watson, J. D., and F. H. C. Crick. 1953. “Molecular Structure of Nucleic Acids: A Structure for Deoxyribose Nucleic Acid.” *Nature* 171 (4356): 737–38. .
    ^D Watson and Crick (1953) Watson, J. D., and F. H. C. Crick. 1953. “Molecular Structure of Nucleic Acids: A Structure for Deoxyribose Nucleic Acid.” *Nature* 171 (4356): 737–38. . ``` pandoc-3.1.3/test/command/8003.md0000644000000000000000000000012507346545000014462 0ustar0000000000000000``` % pandoc -f markdown+ascii_identifiers # Işık ^D

    Işık

    ``` pandoc-3.1.3/test/command/8011.md0000644000000000000000000000031407346545000014461 0ustar0000000000000000``` % pandoc -f docbook -t gfm ❏ a ✓ b ^D - [ ] a - [x] b ``` pandoc-3.1.3/test/command/8028.md0000644000000000000000000000016007346545000014470 0ustar0000000000000000``` % pandoc foo^[a note with multiple paragraphs] ^D

    foo^[a note

    with multiple paragraphs]

    ``` pandoc-3.1.3/test/command/8047.md0000644000000000000000000000027307346545000014476 0ustar0000000000000000``` % pandoc --wrap=none ![](file.jpg){height=10em width=10em style='border: 1px solid black'} ^D

    ``` pandoc-3.1.3/test/command/8070.md0000644000000000000000000000116707346545000014475 0ustar0000000000000000``` % pandoc -f html -t asciidoc

    12.1 manual, Database Backup and Recovery User’s Guide: Chapter 28 Transporting Data Across Platforms, Steps to Transport a Database to a Different Platform Using Backup Sets

    ^D https://docs.oracle.com/database/121/BRADV/rcmxplat.htm#BRADV724[12.1 manual, Database Backup and Recovery User’s Guide: [.enumeration_chapter]#Chapter 28# Transporting Data Across Platforms, Steps to Transport a Database to a Different Platform Using Backup Sets] ``` pandoc-3.1.3/test/command/8079.md0000644000000000000000000000115307346545000014501 0ustar0000000000000000``` % pandoc -f html -t icml
    one
    ^D one
    ``` pandoc-3.1.3/test/command/8088.md0000644000000000000000000000015707346545000014504 0ustar0000000000000000``` % pandoc -t latex --biblatex [@first, 1; @second; @third, 3] ^D \autocites[1]{first}{second}[3]{third} ``` pandoc-3.1.3/test/command/8097.md0000644000000000000000000000036207346545000014502 0ustar0000000000000000``` % pandoc --number-sec --number-offset=2 --wrap=none # One # two ^D

    3 One

    4 two

    ``` pandoc-3.1.3/test/command/8098.md0000644000000000000000000000077407346545000014512 0ustar0000000000000000``` % pandoc -t revealjs --slide-level=2 # Title 1 ## Slide 1 Text. ::: fragment ### Sub Slide header Text. ::: ## Slide 2 Text. ^D

    Title 1

    Slide 1

    Text.

    Sub Slide header

    Text.

    Slide 2

    Text.

    ``` pandoc-3.1.3/test/command/8110.md0000644000000000000000000000105207346545000014461 0ustar0000000000000000``` % pandoc -f mediawiki {| class="wikitable" ! Header text ! Header text ! Header text |- | Example | Example | Example |- | Example | Example | Example |} ^D

    Header text

    Header text

    Header text

    Example

    Example

    Example

    Example

    Example

    Example

    ``` pandoc-3.1.3/test/command/8131.md0000644000000000000000000000122707346545000014470 0ustar0000000000000000# TOC in gfm contains no HTML by default ``` % pandoc --to=gfm --toc --standalone # Head Content ^D - [Head](#head) # Head Content ``` # Same in Markdown if link_attributes extension is disabled ``` % pandoc --to=markdown-link_attributes --toc --standalone # Head Content ^D - [Head](#head) # Head Content ``` # IDs are added to TOC with the "attributes" CommonMark extension ``` % pandoc --to=commonmark+gfm_auto_identifiers+attributes --toc -s # Nam a sapien Lorem ipsum dolor sit amet, consectetuer adipiscing elit. ^D - [Nam a sapien](#nam-a-sapien){#toc-nam-a-sapien} # Nam a sapien Lorem ipsum dolor sit amet, consectetuer adipiscing elit. ``` pandoc-3.1.3/test/command/8150.md0000644000000000000000000000113107346545000014463 0ustar0000000000000000Nested bullet lists ``` % pandoc -f html -t markdown
    • L1
    • L2
      • L3.1
      • L3.2
    • L4
    ^D - L1 - L2 - - L3.1 - L3.2 - L4 ``` Nested ordered lists ``` % pandoc -f html -t markdown
    1. L1
    2. L2
      1. L3.1
      2. L3.2
    ^D 1. L1 2. L2 3. 1. L3.1 2. L3.2 ``` Ordered list nested below an unordered list ``` % pandoc -f html -t markdown
    • L1
    • L2
      1. L3.1
      2. L3.2
    ^D - L1 - L2 - 1. L3.1 2. L3.2 ``` pandoc-3.1.3/test/command/8170.md0000644000000000000000000000104107346545000014465 0ustar0000000000000000``` % pandoc -f rtf -t html {\rtf1\ansi\ansicpg1252\cocoartf2638 \cocoascreenfonts1\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\froman\fcharset0 Times-Roman;} {\colortbl;\red255\green255\blue255;} {\*\expandedcolortbl;;} \margl1440\margr1440\vieww16800\viewh17280\viewkind0 \pard\tx1080\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\li180\fi440\sa120\pardirnatural\partightenfactor0 \f0\fs34 \cf0 In 5 \fs20 \super th \fs34 \nosupersub grade I found a bug.} ^D

    In 5th grade I found a bug.

    ``` pandoc-3.1.3/test/command/8174.md0000644000000000000000000000131407346545000014474 0ustar0000000000000000```` % pandoc -t native ```yaml {#id} some: code ``` ^D [ CodeBlock ( "id" , [ "yaml" ] , [] ) "some: code" ] ```` ```` % pandoc -t native ```yaml {.class #id} some: code ``` ^D [ CodeBlock ( "id" , [ "yaml" , "class" ] , [] ) "some: code" ] ```` ```` % pandoc -t native ```ab``` ^D [ Para [ Code ( "" , [] , [] ) "ab" ] ] ```` ```` % pandoc -t native ```ab```{.class} ^D [ Para [ Code ( "" , [ "class" ] , [] ) "ab" ] ] ```` ```` % pandoc -t native ``` foo}{.bar} test ``` ^D [ Para [ Code ( "" , [] , [] ) "foo}{.bar} test" ] ] ```` pandoc-3.1.3/test/command/8178.md0000644000000000000000000000061307346545000014501 0ustar0000000000000000``` % pandoc -f dokuwiki -t native $\sum_{\substack{(i,j) \in I^2 \i \neq j}}$ ^D [ Para [ RawInline (Format "latex") "$\\sum_{\\substack{(i,j) \\in I^2 \\i \\neq j}}$" ] ] ``` ``` % pandoc -f dokuwiki+tex_math_dollars -t native $mc^2$ ^D [ Para [ Math InlineMath "mc^2" ] ] ``` ``` % pandoc -f dokuwiki -t native $mc^2$ ^D [ Para [ Str "$mc^2$" ] ] ``` pandoc-3.1.3/test/command/8179.md0000644000000000000000000000017607346545000014506 0ustar0000000000000000``` % pandoc -f latex -t native \passthrough{\lstinline!\\textbf\{\}!} ^D [ Para [ Code ( "" , [] , [] ) "\\textbf{}" ] ] ``` pandoc-3.1.3/test/command/8182.md0000644000000000000000000000024507346545000014475 0ustar0000000000000000``` % pandoc -f dokuwiki -t rst This //text and [[https://pandoc.org/|link]] are in italic//. ^D This *text and* `link `__ *are in italic*. ``` pandoc-3.1.3/test/command/8201.md0000644000000000000000000000022407346545000014462 0ustar0000000000000000``` % pandoc -f org -t html [[file:d:/Home/Documents/test.png][Link Test]] ^D

    Link Test

    ``` pandoc-3.1.3/test/command/8204.md0000644000000000000000000000132107346545000014464 0ustar0000000000000000Include abstract in Org output. ``` % pandoc --to=org --standalone --- abstract: | This is an *abstract*. It has multiple paragraphs. --- ^D #+begin_abstract This is an /abstract/. It has multiple paragraphs. #+end_abstract ``` Parse abstract environment as *abstract* metadata field. ``` % pandoc --from=org --to=markdown --standalone #+begin_abstract This is an /abstract/. It has multiple paragraphs. #+end_abstract Main text ^D --- abstract: | This is an *abstract*. It has multiple paragraphs. --- Main text ``` Uppercase ABSTRACT environment is not moved to metadata. ``` % pandoc --from=org --to=markdown --standalone #+BEGIN_ABSTRACT Some text. #+END_ABSTRACT ^D ::: ABSTRACT Some text. ::: ``` pandoc-3.1.3/test/command/8216.md0000644000000000000000000000171007346545000014471 0ustar0000000000000000Misaligned separators in grid table ``` % pandoc -f markdown -t html : Grid Table +-----------------+:-:+ |Some text |[text]{.class1 .class2 .class3}| +-----------------+---+ |Some text |[text]{.class1 .class2 .class3}| +-----------------+---+ |Some text |[text]{.class1 .class2 .class3}| +-----------------+---+ ^D
    Grid Table
    Some text text
    Some text text
    Some text text
    ``` Missing cell ``` % pandoc -f markdown -t gfm +------+ | text | +------+---+ | text | 1 | +------+---+ ^D | | | |------|-----| | text | | | text | 1 | ``` pandoc-3.1.3/test/command/8219.md0000644000000000000000000000042207346545000014473 0ustar0000000000000000``` % pandoc -f html -t latex
    onetwo
    ^D \begin{longtable}[]{@{}ll@{}} \caption{}\label{test}\tabularnewline \toprule\noalign{} \endfirsthead \endhead \bottomrule\noalign{} \endlastfoot one & two \\ \end{longtable} ``` pandoc-3.1.3/test/command/8236.md0000644000000000000000000000062407346545000014476 0ustar0000000000000000``` % pandoc -f org -t native #+begin_src jupyter-python :session py :display plain import pandas as pd df = pd.read_csv('weight.csv', parse_dates=['Date'], index_col=0) #+end_src ^D [ CodeBlock ( "" , [ "python" , "code" ] , [ ( "session" , "py" ) , ( "display" , "plain" ) ] ) "import pandas as pd\ndf = pd.read_csv('weight.csv', parse_dates=['Date'], index_col=0)\n" ] ``` pandoc-3.1.3/test/command/8243.md0000644000000000000000000000046507346545000014477 0ustar0000000000000000``` % pandoc -f latex \newenvironment{topics}{ \newcommand{\topic}[2]{ \item{##1 / ##2} } Topics: \begin{itemize} } { \end{itemize} } \begin{topics} \topic{Foo}{Bar} \topic{Baz}{Bim} \end{topics} ^D

    Topics:

    • Foo / Bar

    • Baz / Bim

    ``` pandoc-3.1.3/test/command/8251.md0000644000000000000000000000042607346545000014473 0ustar0000000000000000``` % pandoc -f native -t html Link ("",["", "", ""],[]) [Str "foo"] ("https://example.com","") ^D foo ``` ``` % pandoc -f native -t markdown Link ("",["", "", ""],[]) [Str "foo"] ("https://example.com","") ^D [foo](https://example.com){} ``` pandoc-3.1.3/test/command/8256.md0000644000000000000000000000520307346545000014476 0ustar0000000000000000``` % pandoc -t opendocument -s --- title: | This *is* \ a test author: Someone --- Testing. ^D This isa test Someone Testing. ``` pandoc-3.1.3/test/command/8257.md0000644000000000000000000000106507346545000014501 0ustar0000000000000000``` % pandoc -f markdown -t html5 +------+-------+ | Item | Price | +======+=======+ | Eggs | 5£ | +------+-------+ | Spam | 3£ | +======+=======+ | Sum | 8£ | +======+=======+ ^D
    Item Price
    Eggs
    Spam
    Sum
    ``` pandoc-3.1.3/test/command/8281.md0000644000000000000000000000016607346545000014477 0ustar0000000000000000``` % pandoc -t html # Title test . . . test ^D

    Title

    test

    . . .

    test

    ``` pandoc-3.1.3/test/command/8302.md0000644000000000000000000000016207346545000014465 0ustar0000000000000000``` % pandoc -f org -t markdown some text cite:&long-2004-tecton-evolut ^D some text @long-2004-tecton-evolut ``` pandoc-3.1.3/test/command/8307.md0000644000000000000000000000071707346545000014500 0ustar0000000000000000``` % pandoc -t commonmark -f html
    hello
    ^D
    hello
    ``` ```` % pandoc -t commonmark -f markdown ``` {=html}
    hello
    ``` ^D
    hello
    ```` pandoc-3.1.3/test/command/8344.md0000644000000000000000000000316607346545000014502 0ustar0000000000000000``` % pandoc -t jats -s --- title: |- My\ document ... # Section\ with line break Paragraph\ with line break -------- A B --- --- 1\ 3 2 4 *1\ 5\ 2* 6 7 -------- ^D
    Mydocument Section<break/>

    with line break

    Paragraph with line break

    A B
    12 3 4
    1 2 56
    7
    ``` pandoc-3.1.3/test/command/8354.md0000644000000000000000000000201507346545000014473 0ustar0000000000000000``` % pandoc -f markdown -t html --citeproc --- title: test nocite: '[@*]' references: - author: - family: Fekete given: Jean-Daniel - family: Freire given: Juliana DOI: 10.1109/MCG.2020.3006412 id: feketeExploringReproducibilityVisualization2020 ISSN: 1558-1756 issue: 5 issued: 2020-09 page: 108-119 source: IEEE Xplore title: Exploring Reproducibility in Visualization container-title: IEEE Computer Graphics and Applications type: article-journal volume: 40 --- ## References ^D

    References

    Fekete, Jean-Daniel, and Juliana Freire. 2020. “Exploring Reproducibility in Visualization.” IEEE Computer Graphics and Applications 40 (5): 108–19. https://doi.org/10.1109/MCG.2020.3006412.
    ``` pandoc-3.1.3/test/command/8380.md0000644000000000000000000000113007346545000014467 0ustar0000000000000000``` % pandoc -f man -t rst LC_* ^D LC\_\* ``` These examples of things that don't require escaping are taken from the RST documentation: ``` % pandoc -f native -t rst [Para [Str "2*x a**b O(N**2) e**(x*y) f(x)*f(y) a|b"] ,Para [Str "a**b O(N**2) e**(x*y) f(x)*f(y)"] ] ^D 2*x a**b O(N**2) e**(x*y) f(x)*f(y) a|b a**b O(N**2) e**(x*y) f(x)*f(y) ``` These examples of things that do require escaping are taken from the RST documentation: ``` % pandoc -f native -t rst Str "*4, class_, *args, **kwargs, `TeX-quoted', *ML, *.txt" ^D \*4, class\_, \*args, \**kwargs, \`TeX-quoted', \*ML, \*.txt ``` pandoc-3.1.3/test/command/8402.md0000644000000000000000000000140607346545000014470 0ustar0000000000000000``` % pandoc --toc -s -t markdown ::: {.cell .markdown id="6u8qXoeFGdqt"} # Summary > Expand to see summary ## Overview and Explanation ::: # Details ## inner 1 text ## inner 2 ### inner inner 1 ## inner 3 text ^D - [Summary](#summary){#toc-summary} - [Overview and Explanation](#overview-and-explanation){#toc-overview-and-explanation} - [Details](#details){#toc-details} - [inner 1](#inner-1){#toc-inner-1} - [inner 2](#inner-2){#toc-inner-2} - [inner inner 1](#inner-inner-1){#toc-inner-inner-1} - [inner 3](#inner-3){#toc-inner-3} ::: {#6u8qXoeFGdqt .cell .markdown} # Summary > Expand to see summary ## Overview and Explanation ::: # Details ## inner 1 text ## inner 2 ### inner inner 1 ## inner 3 text ``` pandoc-3.1.3/test/command/8437.md0000644000000000000000000000256407346545000014506 0ustar0000000000000000``` % pandoc -f markdown -t asciidoctor [![alt](https://img.shields.io/badge/License-Apache%202.0-blue.svg "title")](http://www.apache.org/licenses/LICENSE-2.0) ^D http://www.apache.org/licenses/LICENSE-2.0[image:https://img.shields.io/badge/License-Apache%202.0-blue.svg[alt,title="title"]] ``` ``` % pandoc -f markdown -t docbook [![alt](https://img.shields.io/badge/License-Apache%202.0-blue.svg "title")](http://www.apache.org/licenses/LICENSE-2.0) ^D title alt ``` ``` % pandoc -f docbook -t markdown title alt ^D [![alt](https://img.shields.io/badge/License-Apache%202.0-blue.svg "title")](http://www.apache.org/licenses/LICENSE-2.0) ``` pandoc-3.1.3/test/command/8486.md0000644000000000000000000000214407346545000014504 0ustar0000000000000000# Unnumbered and unlisted headings in ConTeXt ``` % pandoc --to=context # Preface {.unlisted -} Nullam rutrum. # Introduction Nullam eu ante vel est convallis dignissim. # Methods Sed diam. Nulla posuere. Praesent fermentum tempor tellus. Nam vestibulum accumsan nisl. Nam vestibulum accumsan nisl. # References {-} ^D \startsubject[title={Preface},reference={preface},number=no,incrementnumber=no] Nullam rutrum. \stopsubject \startsectionlevel[title={Introduction},reference={introduction}] Nullam eu ante vel est convallis dignissim. \stopsectionlevel \startsectionlevel[title={Methods},reference={methods}] Sed diam. Nulla posuere. Praesent fermentum tempor tellus. Nam vestibulum accumsan nisl. Nam vestibulum accumsan nisl. \stopsectionlevel \startsectionlevel[title={References},reference={references},number=no,incrementnumber=no] \stopsectionlevel ``` ## Semantic Headings with `--top-level-division` ``` % pandoc --to=context --top-level-division=chapter # Bibliography {-} None ^D \startchapter[title={Bibliography},reference={bibliography},number=no,incrementnumber=no] None \stopchapter ``` pandoc-3.1.3/test/command/8487.md0000644000000000000000000000034607346545000014507 0ustar0000000000000000``` % pandoc -f textile -t native p>. p=. Links: ^D [ Div ( "" , [] , [ ( "style" , "text-align:right;" ) ] ) [ Para [] ] , Div ( "" , [] , [ ( "style" , "text-align:center;" ) ] ) [ Para [ Str "Links:" ] ] ] ``` pandoc-3.1.3/test/command/8504.md0000644000000000000000000000354607346545000014502 0ustar0000000000000000``` % pandoc -f markdown -s -t biblatex --- references: - id: Larsson_2016 author: - family: Larsson given: Johan citation-key: Larsson_2016 issued: - year: 2016 medium: Windows title: 'qualpalr: Automatic Generation of Qualitative Color Palettes' type: software URL: https://cran.r-project.org/package=qualpalr version: 0.3.1 ... ^D @software{Larsson_2016, author = {Larsson, Johan}, title = {Qualpalr: {Automatic} {Generation} of {Qualitative} {Color} {Palettes}}, version = {0.3.1}, date = {2016}, url = {https://cran.r-project.org/package=qualpalr} } ``` ``` % pandoc -f markdown -s -t bibtex --- references: - id: Larsson_2016 author: - family: Larsson given: Johan citation-key: Larsson_2016 issued: - year: 2016 medium: Windows title: 'qualpalr: Automatic Generation of Qualitative Color Palettes' type: software URL: https://cran.r-project.org/package=qualpalr version: 0.3.1 ... ^D @misc{Larsson_2016, author = {Larsson, Johan}, title = {Qualpalr: {Automatic} {Generation} of {Qualitative} {Color} {Palettes}}, year = {2016}, url = {https://cran.r-project.org/package=qualpalr} } ``` ``` % pandoc -f biblatex -s -t csljson @software{Larsson_2016, author = {Larsson, Johan}, title = {Qualpalr: {Automatic} {Generation} of {Qualitative} {Color} {Palettes}}, version = {0.3.1}, date = {2016}, url = {https://cran.r-project.org/package=qualpalr} } ^D [ { "URL": "https://cran.r-project.org/package=qualpalr", "author": [ { "family": "Larsson", "given": "Johan" } ], "id": "Larsson_2016", "issued": { "date-parts": [ [ 2016 ] ] }, "title": "Qualpalr: Automatic Generation of Qualitative Color Palettes", "title-short": "Qualpalr", "type": "software", "version": "0.3.1" } ] ``` pandoc-3.1.3/test/command/8508.md0000644000000000000000000000045707346545000014504 0ustar0000000000000000``` % pandoc -t man SEE ALSO ======== * [Milk](https://en.wikipedia.org/wiki/Milk) * [EBNF](https://en.wikipedia.org/wiki/Extended_Backus–Naur_form) ^D .SH SEE ALSO .IP \[bu] 2 Milk (https://en.wikipedia.org/wiki/Milk) .IP \[bu] 2 EBNF (https://en.wikipedia.org/wiki/Extended_Backus–Naur_form) ``` pandoc-3.1.3/test/command/8511.md0000644000000000000000000000031707346545000014471 0ustar0000000000000000# Conversion of icon-like sequences followed by alphanum char ## to Jira ``` % pandoc -t jira :P :P_ :PA :Pa :P2 ^D \:P \:P\_ :PA :Pa :P2 ``` ## from jira ``` % pandoc -f jira -t markdown \:PA ^D \\:PA ``` pandoc-3.1.3/test/command/8513.md0000644000000000000000000000132607346545000014474 0ustar0000000000000000# Round-tripping tags in org ``` % pandoc --from org --to org --columns=72 * Header with tag :tag: ^D * Header with tag :tag: :PROPERTIES: :CUSTOM_ID: header-with-tag :END: ``` Multiple tags ``` % pandoc --from org-auto_identifiers --to org --columns=78 * Header with two tags :first:second: ^D * Header with two tags :first:second: ``` Check that long headings work with tags ``` % pandoc --from org-auto_identifiers --to org --columns=40 * Header with tag and more words which are not that interesting :tag: ^D * Header with tag and more words which are not that interesting :tag: ``` pandoc-3.1.3/test/command/853.md0000644000000000000000000000074307346545000014415 0ustar0000000000000000reStructuredText citations. ``` % pandoc -f rst Here is a citation reference: [CIT2002]_. .. [CIT2002] This is the citation. It's just like a footnote, except the label is textual. ^D

    Here is a citation reference: [CIT2002].

    CIT2002

    This is the citation. It's just like a footnote, except the label is textual.

    ``` pandoc-3.1.3/test/command/8573.md0000644000000000000000000000020007346545000014470 0ustar0000000000000000``` % pandoc -f latex -t plain \newenvironment{myenv}[1]{Open#1}{Close} \begin{myenv}{x}Hello\end{myenv} ^D OpenxHelloClose ``` pandoc-3.1.3/test/command/8611.md0000644000000000000000000000163307346545000014474 0ustar0000000000000000``` % pandoc -f markdown -s -t bibtex --- nocite: "[@*]" references: - id: mcdowell:why title: | Why is Sellars's Essay Called "Empiricism and the Philosophy of Mind"? author: - family: McDowell given: John journal: Proceedings of the Aristotelian Society type: chapter container-title: 'Empiricism, Perceptual Knowledge, Normativity, and Realism: Essays on Wilfrid Sellars' editor: - family: deVries given: Willem A. issued: 2009 publisher: Oxford University Press publisher-place: Oxford ... ^D @incollection{mcdowell:why, author = {McDowell, John}, editor = {deVries, Willem A.}, publisher = {Oxford University Press}, title = {Why Is {Sellars’s} {Essay} {Called} “{Empiricism} and the {Philosophy} of {Mind}”?}, booktitle = {Empiricism, Perceptual Knowledge, Normativity, and Realism: Essays on Wilfrid Sellars}, year = {2009}, address = {Oxford} } ``` pandoc-3.1.3/test/command/8638.md0000644000000000000000000000053407346545000014504 0ustar0000000000000000# Beamer tables must not use longtable footer ``` % pandoc -t beamer | fruit | price | |---------|------:| | apple | 2.05 | | oranges | 4.25 | ^D \begin{frame} \begin{longtable}[]{@{}lr@{}} \toprule\noalign{} fruit & price \\ \midrule\noalign{} \endhead apple & 2.05 \\ oranges & 4.25 \\ \bottomrule\noalign{} \end{longtable} \end{frame} ``` pandoc-3.1.3/test/command/8653.md0000644000000000000000000000045707346545000014505 0ustar0000000000000000``` % pandoc -f rst -t native .. role:: py:class(emphasis) :py:class:`foo` ^D [ Para [ Emph [ Str "foo" ] ] ] ``` ``` % pandoc -f rst -t native :py:class:`foo` ^D [ Para [ Code ( "" , [ "interpreted-text" ] , [ ( "role" , "py:class" ) ] ) "foo" ] ] ``` pandoc-3.1.3/test/command/8659.md0000644000000000000000000000175107346545000014511 0ustar0000000000000000# A single pipe is parsed as an empty table ``` % pandoc -f org -t html | ^D
    ``` # Accepts an empty org table within a grid table cell The misaligned pipe in the first row is treated as an empty table. ``` % pandoc -f org -t html +-----+-----+-----+-----------+ | | | | | +:====+=====+====:+==========:+ | a | b | c | d | +-----+-----+-----+-----------+ ^D
    a b c d
    ``` pandoc-3.1.3/test/command/8661.md0000644000000000000000000000015007346545000014472 0ustar0000000000000000``` % pandoc -f tsv -t gfm a b c 6 ^D | a | b | c | |-----|-----|-----| | | | 6 | ``` pandoc-3.1.3/test/command/8665.md0000644000000000000000000000137607346545000014511 0ustar0000000000000000``` % pandoc -f docbook -t asciidoctor h1 h2 !@#$%^&*(){}|~?+-',."<>[]\` col 2 ^D [cols=",",options="header",] |=== |h1 |h2 |!@#$%^&*()\{}\|~?+-',."<>[]\` |col 2 |=== ``` pandoc-3.1.3/test/command/8681.md0000644000000000000000000000052207346545000014477 0ustar0000000000000000# Include Jira panel title in resulting div ``` % pandoc -f jira -t html {panel:title=This is the title|titleBGColor=#cccccc|bgColor=#eeeeee} Panel content {panel} ^D
    This is the title

    Panel content

    ``` pandoc-3.1.3/test/command/8689.md0000644000000000000000000000072007346545000014507 0ustar0000000000000000# Org figures should be rendered implicit figures ``` % pandoc -f org -t markdown+implicit_figures #+label: fig:bsdd-graphql-voyager-orig-detail #+caption: Original bSDD GraphQL Schema: Detail of Classification and ClassificationProperty [[./Classification-ClassificationProperty.png]] ^D ![Original bSDD GraphQL Schema: Detail of Classification and ClassificationProperty](./Classification-ClassificationProperty.png){#fig:bsdd-graphql-voyager-orig-detail} ``` pandoc-3.1.3/test/command/8711.md0000644000000000000000000000473107346545000014477 0ustar0000000000000000``` % pandoc -f html-native_spans -t native

    a b

    ^D [ Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "a" , Space , Str "b" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ``` ``` % pandoc -f html-native_spans+raw_html -t native

    a b

    ^D [ Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ RawInline (Format "html") "" , Str "a" , RawInline (Format "html") "" , Space , RawInline (Format "html") "" , Str "b" , RawInline (Format "html") "" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ``` ``` % pandoc -f html -t native

    a b

    ^D [ Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Span ( "" , [ "foo" ] , [] ) [ Str "a" ] , Space , Span ( "" , [ "bar" ] , [] ) [ Str "b" ] ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ``` pandoc-3.1.3/test/command/8738.md0000644000000000000000000000031007346545000014475 0ustar0000000000000000``` % pandoc -f native -t mediawiki [Link ("",[],[]) [Link ("",[],[]) [Str "test"] ("https://bar.example.com",""),Str "Test"] ("https://foo.example.com","")] ^D [https://foo.example.com testTest] ``` pandoc-3.1.3/test/command/8764.md0000644000000000000000000000337407346545000014511 0ustar0000000000000000``` % pandoc -f html -t opendocument
    Header Normal cell (column 2) Normal cell (column 3)
    Normal cell (column 1) Normal cell (column 2) Normal cell (column 3)
    ^D Header Normal cell (column 2) Normal cell (column 3) Normal cell (column 1) Normal cell (column 2) Normal cell (column 3) ``` pandoc-3.1.3/test/command/8777.md0000644000000000000000000000023407346545000014505 0ustar0000000000000000# Backslash escapes in markdown_strict ``` % pandoc --from=markdown_strict -t html These are not escaped: \~ \" ^D

    These are not escaped: \~ \"

    ``` pandoc-3.1.3/test/command/8789.md0000644000000000000000000000221207346545000014506 0ustar0000000000000000# `\multicolumn` with column-type `p` ``` % pandoc --from=latex --to=html \begin{tabular}{rrll} \toprule \textbf{First} & \textbf{Second} & \textbf{Third} & \textbf{Fourth} \\ \toprule 160 & 1 & test & test \\\midrule 160 & 2 & \multicolumn{2}{p{12cm}}{\textit{This is a test:} \begin{equation*} a^2+b^2 = c^2 \end{equation*} }\\ \bottomrule \end{tabular} ^D
    First Second Third Fourth
    160 1 test test
    160 2 This is a test: a2 + b2 = c2
    ``` pandoc-3.1.3/test/command/934.md0000644000000000000000000000137207346545000014414 0ustar0000000000000000``` % pandoc -f latex -t native \newcommand{\ddb}[2]{ \textit{``#1''} \textbf{#2} } \ddb{This should be italic and in quotes}{And this is the attribution} ^D [ Para [ Emph [ Quoted DoubleQuote [ Str "This" , Space , Str "should" , Space , Str "be" , Space , Str "italic" , Space , Str "and" , Space , Str "in" , Space , Str "quotes" ] ] ] , Para [ Strong [ Str "And" , Space , Str "this" , Space , Str "is" , Space , Str "the" , Space , Str "attribution" ] ] ] ``` pandoc-3.1.3/test/command/982.md0000644000000000000000000000024407346545000014414 0ustar0000000000000000``` % pandoc -f latex -t native \newcommand{\BEQ}{\begin{equation}} \newcommand{\EEQ}{\end{equation}} \BEQ y=x^2 \EEQ ^D [ Para [ Math DisplayMath "y=x^2" ] ] ``` pandoc-3.1.3/test/command/987.md0000644000000000000000000000027307346545000014423 0ustar0000000000000000``` % pandoc -f latex -t markdown \documentclass{article} \newenvironment{flubble}{FOO}{BAR} \begin{document} \begin{flubble} grr \end{flubble} \end{document} ^D FOO grr BAR ``` pandoc-3.1.3/test/command/A.txt0000644000000000000000000000001207346545000014462 0ustar0000000000000000this is a pandoc-3.1.3/test/command/B.txt0000644000000000000000000000001207346545000014463 0ustar0000000000000000here is b pandoc-3.1.3/test/command/C.txt0000644000000000000000000000001607346545000014470 0ustar0000000000000000and this is c pandoc-3.1.3/test/command/D.txt0000644000000000000000000000001107346545000014464 0ustar0000000000000000here's d pandoc-3.1.3/test/command/SVG_logo-without-xml-declaration.svg0000644000000000000000000000302707346545000022534 0ustar0000000000000000 SVG Logo pandoc-3.1.3/test/command/SVG_logo.svg0000644000000000000000000000306107346545000015750 0ustar0000000000000000 SVG Logo pandoc-3.1.3/test/command/abbrevs0000644000000000000000000000001207346545000015110 0ustar0000000000000000Foo. h.k. pandoc-3.1.3/test/command/adjacent_latex_blocks.md0000644000000000000000000000024107346545000020372 0ustar0000000000000000``` % pandoc -f markdown -t native \listoffigures \listoftables ^D [ RawBlock (Format "tex") "\\listoffigures" , RawBlock (Format "tex") "\\listoftables" ] ``` pandoc-3.1.3/test/command/advanced-optical-materials.csl0000644000000000000000000001252207346545000021432 0ustar0000000000000000 pandoc-3.1.3/test/command/american-medical-association.csl0000644000000000000000000002455107346545000021747 0ustar0000000000000000 pandoc-3.1.3/test/command/annales.csl0000644000000000000000000002740107346545000015700 0ustar0000000000000000 pandoc-3.1.3/test/command/apa.csl0000644000000000000000000003721007346545000015017 0ustar0000000000000000 pandoc-3.1.3/test/command/archeologie-medievale.csl0000644000000000000000000002445507346545000020477 0ustar0000000000000000 pandoc-3.1.3/test/command/ascii.md0000644000000000000000000000220507346545000015161 0ustar0000000000000000``` % pandoc -t html --ascii äéıå ^D

    äéıå

    ``` ``` % pandoc -t latex --ascii äéıå ^D \"{a}\'{e}\i\r{a} ``` ``` % pandoc -t man --ascii äéıå ^D .PP \[:a]\['e]\[.i]\[oa] ``` ``` % pandoc -t ms --ascii äéıå ^D .LP \[:a]\['e]\[.i]\[oa] ``` ``` % pandoc -t docbook --ascii äéıå ^D äéıå ``` ``` % pandoc -t jats --ascii äéıå ^D

    äéıå

    ``` ``` % pandoc -t markdown-smart --ascii "äéıå" ^D “äéıå” ``` # CommonMark tests ``` % pandoc -f commonmark -t commonmark --ascii hello … ok? … bye ^D hello … ok? … bye ``` ``` % pandoc -f commonmark+smart -t commonmark-smart --ascii --wrap=none "hi"...dog's breath---cat 5--6 ^D “hi”…dog’s breath—cat 5–6 ``` ``` % pandoc -f commonmark+smart -t commonmark+smart --ascii "hi"...dog's breath---cat 5--6 ^D "hi"...dog's breath---cat 5--6 ``` ``` % pandoc -f commonmark -t commonmark --ascii foo Ӓ bar ^D foo Ӓ bar ``` ``` % pandoc -f commonmark -t commonmark --ascii \[foo\](bar) ^D \[foo\](bar) ``` pandoc-3.1.3/test/command/averroes.bib0000644000000000000000000001003307346545000016051 0ustar0000000000000000@string{anch-ie = {Angew.~Chem. Int.~Ed.}} @string{cup = {Cambridge University Press}} @string{dtv = {Deutscher Taschenbuch-Verlag}} @string{hup = {Harvard University Press}} @string{jams = {J.~Amer. Math. Soc.}} @string{jchph = {J.~Chem. Phys.}} @string{jomch = {J.~Organomet. Chem.}} @string{pup = {Princeton University Press}} @book{averroes/bland, author = {Averroes}, title = {The Epistle on the Possibility of Conjunction with the Active Intellect by {Ibn Rushd} with the Commentary of {Moses Narboni}}, date = 1982, editor = {Bland, Kalman P.}, translator = {Bland, Kalman P.}, series = {Moreshet: Studies in {Jewish} History, Literature and Thought}, number = 7, publisher = {Jewish Theological Seminary of America}, location = {New York}, keywords = {primary}, langid = {english}, langidopts = {variant=american}, indextitle = {Epistle on the Possibility of Conjunction, The}, shorttitle = {Possibility of Conjunction}, annotation = {A \texttt{book} entry with a \texttt{series} and a \texttt{number}. Note the concatenation of the \texttt{editor} and \texttt{translator} fields as well as the \texttt{indextitle} field}, } @book{averroes/hannes, author = {Averroes}, title = {Des Averro{\"e}s Abhandlung: \mkbibquote{{\"U}ber die M{\"o}glichkeit der Conjunktion} oder \mkbibquote{{\"U}ber den materiellen Intellekt}}, date = 1892, editor = {Hannes, Ludwig}, translator = {Hannes, Ludwig}, annotator = {Hannes, Ludwig}, publisher = {C.~A. Kaemmerer}, location = {Halle an der Saale}, keywords = {primary}, langid = {german}, sorttitle = {Uber die Moglichkeit der Conjunktion}, indexsorttitle= {Uber die Moglichkeit der Conjunktion}, indextitle = {{\"U}ber die M{\"o}glichkeit der Conjunktion}, shorttitle = {{\"U}ber die M{\"o}glichkeit der Conjunktion}, annotation = {An annotated edition. Note the concatenation of the \texttt{editor}, \texttt{translator}, and \texttt{annotator} fields. Also note the \texttt{shorttitle}, \texttt{indextitle}, \texttt{sorttitle}, and \texttt{indexsorttitle} fields}, } @book{averroes/hercz, author = {Averroes}, title = {Drei Abhandlungen {\"u}ber die Conjunction des separaten Intellects mit dem Menschen}, date = 1869, editor = {Hercz, J.}, translator = {Hercz, J.}, publisher = {S.~Hermann}, location = {Berlin}, keywords = {primary}, langid = {german}, indexsorttitle= {Drei Abhandlungen uber die Conjunction}, indextitle = {Drei Abhandlungen {\"u}ber die Conjunction}, subtitle = {Von Averroes (Vater und Sohn), aus dem Arabischen {\"u}bersetzt von Samuel Ibn Tibbon}, shorttitle = {Drei Abhandlungen}, annotation = {A \texttt{book} entry. Note the concatenation of the \texttt{editor} and \texttt{translator} fields as well as the \texttt{indextitle} and \texttt{indexsorttitle} fields}, } @book{cicero, author = {Cicero, Marcus Tullius}, title = {De natura deorum. {\"U}ber das Wesen der G{\"o}tter}, date = 1995, editor = {Blank-Sangmeister, Ursula}, translator = {Blank-Sangmeister, Ursula}, afterword = {Thraede, Klaus}, language = {langlatin and langgerman}, publisher = {Reclam}, location = {Stuttgart}, langid = {german}, indextitle = {De natura deorum}, shorttitle = {De natura deorum}, annotation = {A bilingual edition of Cicero's \emph{De natura deorum}, with a German translation. Note the format of the \texttt{language} field in the database file, the concatenation of the \texttt{editor} and \texttt{translator} fields, and the \texttt{afterword} field}, } pandoc-3.1.3/test/command/bar-endinput.tex0000644000000000000000000000005307346545000016660 0ustar0000000000000000\emph{hi there} \endinput \emph{invisible} pandoc-3.1.3/test/command/bar.tex0000644000000000000000000000002007346545000015026 0ustar0000000000000000\emph{hi there} pandoc-3.1.3/test/command/biblatex-266.md0000644000000000000000000000131307346545000016175 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @book{goethe2005, langid = {german}, location = {{Frankfurt am Main}}, title = {Not A Real Book}, date = {2005}, author = {family=Goethe, given=Johann Wolfgang, prefix=von, useprefix=false and given=Antonie, prefix=van, family=Leeuwenhoek, useprefix=true}, editor = {Schöne, Albrecht} } ^D --- nocite: "[@*]" references: - author: - dropping-particle: von family: Goethe given: Johann Wolfgang - family: Leeuwenhoek given: Antonie non-dropping-particle: van editor: - family: Schöne given: Albrecht id: goethe2005 issued: 2005 language: de-DE publisher-place: Frankfurt am Main title: Not A Real Book type: book --- ``` pandoc-3.1.3/test/command/biblatex-aksin.md0000644000000000000000000000402307346545000016766 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Aksin et al. 2006) Aksin, Özge, Hayati Türkmen, Levent Artok, Bekir Çetinkaya, Chaoying Ni, Orhan Büyükgüngör, and Erhan Özkal. 2006. “Effect of Immobilization on Catalytic Characteristics of Saturated Pd-N-heterocyclic Carbenes in Mizoroki-Heck Reactions.” *J. Organomet. Chem.* 691 (13): 3027–3036. Formatted with pandoc and apa.csl, 2013-10-23: (Aksin et al., 2006) Aksin, Ö., Türkmen, H., Artok, L., Çetinkaya, B., Ni, C., Büyükgüngör, O., & Özkal, E. (2006). Effect of immobilization on catalytic characteristics of saturated Pd-N-heterocyclic carbenes in Mizoroki-Heck reactions. *J. Organomet. Chem.*, *691*(13), 3027–3036. } @string{ jomch = {J.~Organomet. Chem.} } @Article{aksin, author = {Aks{\i}n, {\"O}zge and T{\"u}rkmen, Hayati and Artok, Levent and {\c{C}}etinkaya, Bekir and Ni, Chaoying and B{\"u}y{\"u}kg{\"u}ng{\"o}r, Orhan and {\"O}zkal, Erhan}, title = {Effect of immobilization on catalytic characteristics of saturated {Pd-N}-heterocyclic carbenes in {Mizoroki-Heck} reactions}, journaltitle = jomch, date = 2006, volume = 691, number = 13, pages = {3027-3036}, indextitle = {Effect of immobilization on catalytic characteristics}, } ^D --- nocite: "[@*]" references: - author: - family: Aksın given: Özge - family: Türkmen given: Hayati - family: Artok given: Levent - family: Çetinkaya given: Bekir - family: Ni given: Chaoying - family: Büyükgüngör given: Orhan - family: Özkal given: Erhan container-title: J. Organomet. Chem. id: aksin issue: 13 issued: 2006 page: 3027-3036 title: Effect of immobilization on catalytic characteristics of saturated Pd-N-heterocyclic carbenes in Mizoroki-Heck reactions type: article-journal volume: 691 --- ``` pandoc-3.1.3/test/command/biblatex-almendro.md0000644000000000000000000000335607346545000017472 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Almendro et al. 1998) Almendro, José L., Jacinto Martín, Alberto Sánchez, and Fernando Nozal. 1998. “Elektromagnetisches Signalhorn.” Formatted with pandoc and apa.csl, 2013-10-23: (Almendro, Martín, Sánchez, & Nozal, 1998) Almendro, J. L., Martín, J., Sánchez, A., & Nozal, F. (1998). Elektromagnetisches Signalhorn. NOTES: - CSL styles’ handling of patent items needs to be improved } @Patent{almendro, author = {Almendro, Jos{\'e} L. and Mart{\'i}n, Jacinto and S{\'a}nchez, Alberto and Nozal, Fernando}, title = {Elektromagnetisches Signalhorn}, number = {EU-29702195U}, date = 1998, location = {countryfr and countryuk and countryde}, hyphenation = {german}, annotation = {This is a patent entry with a location field. The number is given in the number field. Note the format of the location field in the database file. Compare laufenberg, sorace, and kowalik}, } ^D --- nocite: "[@*]" references: - annote: This is a patent entry with a location field. The number is given in the number field. Note the format of the location field in the database file. Compare laufenberg, sorace, and kowalik author: - family: Almendro given: José L. - family: Martín given: Jacinto - family: Sánchez given: Alberto - family: Nozal given: Fernando id: almendro issued: 1998 jurisdiction: France; United Kingdom; Germany language: de-DE number: EU-29702195U title: Elektromagnetisches Signalhorn type: patent --- ``` pandoc-3.1.3/test/command/biblatex-angenendt.md0000644000000000000000000000313107346545000017623 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Angenendt 2002) Angenendt, Arnold. 2002. “In Honore Salvatoris – Vom Sinn und Unsinn der Patrozinienkunde.” *Revue d’Histoire Ecclésiastique* 97: 431–456, 791–823. Formatted with pandoc and apa.csl, 2013-10-23: (Angenendt, 2002) Angenendt, A. (2002). In Honore Salvatoris – Vom Sinn und Unsinn der Patrozinienkunde. *Revue d’Histoire Ecclésiastique*, *97*, 431–456, 791–823. } @Article{angenendt, author = {Angenendt, Arnold}, title = {In Honore Salvatoris~-- Vom Sinn und Unsinn der Patrozinienkunde}, journaltitle = {Revue d'Histoire Eccl{\'e}siastique}, date = 2002, volume = 97, pages = {431--456, 791--823}, hyphenation = {german}, indextitle = {In Honore Salvatoris}, shorttitle = {In Honore Salvatoris}, annotation = {A German article in a French journal. Apart from that, a typical article entry. Note the indextitle field}, } ^D --- nocite: "[@*]" references: - annote: A German article in a French journal. Apart from that, a typical article entry. Note the indextitle field author: - family: Angenendt given: Arnold container-title: Revue d'Histoire Ecclésiastique id: angenendt issued: 2002 language: de-DE page: 431-456, 791-823 title: In Honore Salvatoris -- Vom Sinn und Unsinn der Patrozinienkunde title-short: In Honore Salvatoris type: article-journal volume: 97 --- ``` pandoc-3.1.3/test/command/biblatex-aristotle-anima.md0000644000000000000000000000222307346545000020752 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Aristotle 1907) Aristotle. 1907. *De Anima*. Edited by Robert Drew Hicks. Cambridge: Cambridge University Press. Formatted with pandoc and apa.csl, 2013-10-23: (Aristotle, 1907) Aristotle. (1907). *De anima*. (R. D. Hicks, Ed.). Cambridge: Cambridge University Press. } @string{ cup = {Cambridge University Press} } @Book{aristotle:anima, author = {Aristotle}, title = {De Anima}, date = 1907, editor = {Hicks, Robert Drew}, publisher = cup, location = {Cambridge}, keywords = {primary}, hyphenation = {british}, annotation = {A book entry with an author and an editor}, } ^D --- nocite: "[@*]" references: - annote: A book entry with an author and an editor author: - family: Aristotle editor: - family: Hicks given: Robert Drew id: "aristotle:anima" issued: 1907 keyword: primary language: en-GB publisher: Cambridge University Press publisher-place: Cambridge title: De anima type: book --- ``` pandoc-3.1.3/test/command/biblatex-aristotle-physics.md0000644000000000000000000000227407346545000021355 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Aristotle 1929) Aristotle. 1929. *Physics*. Translated by P. H. Wicksteed and F. M. Cornford. New York: G. P. Putnam. Formatted with pandoc and apa.csl, 2013-10-23: (Aristotle, 1929) Aristotle. (1929). *Physics*. (P. H. Wicksteed & F. M. Cornford, Trans.). New York: G. P. Putnam. } @Book{aristotle:physics, author = {Aristotle}, title = {Physics}, date = 1929, translator = {Wicksteed, P. H. and Cornford, F. M.}, publisher = {G. P. Putnam}, location = {New York}, keywords = {primary}, hyphenation = {american}, shorttitle = {Physics}, annotation = {A book entry with a translator field}, } ^D --- nocite: "[@*]" references: - annote: A book entry with a translator field author: - family: Aristotle id: "aristotle:physics" issued: 1929 keyword: primary language: en-US publisher: G. P. Putnam publisher-place: New York title: Physics title-short: Physics translator: - family: Wicksteed given: P. H. - family: Cornford given: F. M. type: book --- ``` pandoc-3.1.3/test/command/biblatex-aristotle-poetics.md0000644000000000000000000000240107346545000021331 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Aristotle 1968) Aristotle. 1968. *Poetics*. Edited by D. W. Lucas. Clarendon Aristotle. Oxford: Clarendon Press. Formatted with pandoc and apa.csl, 2013-10-23: (Aristotle, 1968) Aristotle. (1968). *Poetics*. (D. W. Lucas, Ed.). Oxford: Clarendon Press. } @Book{aristotle:poetics, author = {Aristotle}, title = {Poetics}, date = 1968, editor = {Lucas, D. W.}, series = {Clarendon {Aristotle}}, publisher = {Clarendon Press}, location = {Oxford}, keywords = {primary}, hyphenation = {british}, shorttitle = {Poetics}, annotation = {A book entry with an author and an editor as well as a series field}, } ^D --- nocite: "[@*]" references: - annote: A book entry with an author and an editor as well as a series field author: - family: Aristotle collection-title: Clarendon Aristotle editor: - family: Lucas given: D. W. id: "aristotle:poetics" issued: 1968 keyword: primary language: en-GB publisher: Clarendon Press publisher-place: Oxford title: Poetics title-short: Poetics type: book --- ``` pandoc-3.1.3/test/command/biblatex-aristotle-rhetoric.md0000644000000000000000000000362407346545000021512 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Aristotle 1877) Aristotle. 1877. *The Rhetoric of Aristotle with a Commentary by the Late Edward Meredith Cope*. Edited by Edward Meredith Cope. 3. Cambridge University Press. Formatted with pandoc and apa.csl, 2013-10-23: (Aristotle, 1877) Aristotle. (1877). *The rhetoric of Aristotle with a commentary by the late Edward Meredith Cope*. (E. M. Cope, Ed.) (1-3). Cambridge University Press. NOTES: - biblio2yaml - commentator has no counterpart in CSL } @string{ cup = {Cambridge University Press} } @Book{aristotle:rhetoric, author = {Aristotle}, title = {The Rhetoric of {Aristotle} with a commentary by the late {Edward Meredith Cope}}, date = 1877, editor = {Cope, Edward Meredith}, commentator = {Cope, Edward Meredith}, volumes = 3, publisher = cup, keywords = {primary}, hyphenation = {british}, sorttitle = {Rhetoric of Aristotle}, indextitle = {Rhetoric of {Aristotle}, The}, shorttitle = {Rhetoric}, annotation = {A commented edition. Note the concatenation of the editor and commentator fields as well as the volumes, sorttitle, and indextitle fields}, } ^D --- nocite: "[@*]" references: - annote: A commented edition. Note the concatenation of the editor and commentator fields as well as the volumes, sorttitle, and indextitle fields author: - family: Aristotle editor: - family: Cope given: Edward Meredith id: "aristotle:rhetoric" issued: 1877 keyword: primary language: en-GB number-of-volumes: 3 publisher: Cambridge University Press title: The rhetoric of Aristotle with a commentary by the late Edward Meredith Cope title-short: Rhetoric type: book --- ``` pandoc-3.1.3/test/command/biblatex-article.md0000644000000000000000000000732007346545000017307 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ - contains: - an article entry with just the required fields - an article entry with required and all optional fields - notes: - year, month to be ignored if date is present - journal to be ignored if journaltitle is present - editortype, editoratype, editorbtype, editorctype, pubstate, series contain keys which, unless corresponding CSL terms exist, require locale-specific expansion - limitations: - annotator, commentator, eid, eprint, eprintclass, eprinttype, issuetitle, issuesubtitle, language, origlanguage have no matching counterparts in CSL - for editor, editora, editorb, editorc (plus editortype, editoratype, editorbtype, editorctype) only a subset, editor and director, has matching counterparts in CSL - kludges: - note + addendum -> CSL note - number + issue -> CSL issue - handling of titleaddon - handling of (journal) series - done properly, this should be mapped to some CSL variable (version? edition? collection-number?), CSL styles would have to be adapted - slightly better kludge would map integer to ordinal + "ser." ("3" -> "3rd ser."); localization keys "newseries" -> "new ser.", "oldseries" -> "old ser."; and print all other values as is -- but still wouldn't fit all styles or locales. } @article{article-req, Author = {Author, Ann}, Date = {2013-07-29}, Hyphenation = {english}, Journaltitle = {The Journaltitle}, Title = {An Article Entry with Just the Required Fields}} @article{article-opt, Addendum = {The Addendum}, Annotator = {Annotator, A.}, Author = {Author, Jr., Ann A.}, Commentator = {Commentator, C.}, Date = {2008-12-31}, Doi = {10.1086/520976}, Editor = {Editor, Edward}, Editora = {Editor, A.}, Editorb = {Editor, B.}, Editorc = {Editor, C.}, Eid = {eid}, Eprint = {eprint}, Eprintclass = {eprintclass}, Eprinttype = {eprinttype}, Hyphenation = {english}, Issn = {issn}, Issue = {issue}, Issuesubtitle = {The Issuesubtitle}, Issuetitle = {The Issuetitle}, Journalsubtitle = {The Journalsubtitle}, Journaltitle = {The Journaltitle}, Journal = {The Journal}, Language = {language}, Month = {08}, Year = {2007}, Note = {The Note}, Number = {number}, Origlanguage = {origlanguage}, Pages = {pages}, Pubstate = {inpress}, Series = {newseries}, Subtitle = {The Subtitle}, Title = {An Article Entry with the Required and All Optional Fields}, Titleaddon = {The Titleaddon}, Translator = {Translator, Ted}, Url = {http://foo.bar.baz/}, Urldate = {2013-07-29}, Version = {version}, Volume = {volume}, } ^D --- nocite: "[@*]" references: - author: - family: Author given: Ann container-title: The Journaltitle id: article-req issued: 2013-07-29 language: en-US title: An article entry with just the required fields type: article-journal - accessed: 2013-07-29 author: - family: Author given: Ann A. suffix: Jr. collection-title: New series container-title: "The Journaltitle: The Journalsubtitle" doi: 10.1086/520976 editor: - family: Editor given: Edward id: article-opt issn: issn issue: number, issue issued: 2008-12-31 language: en-US note: The Note. The Addendum page: pages status: in press title: "An article entry with the required and all optional fields: The subtitle. The titleaddon" title-short: An article entry with the required and all optional fields translator: - family: Translator given: Ted type: article-journal url: "http://foo.bar.baz/" version: version volume: volume --- ``` pandoc-3.1.3/test/command/biblatex-augustine.md0000644000000000000000000000214107346545000017664 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Augustine 1995) Augustine, Robert L. 1995. *Heterogeneous Catalysis for the Synthetic Chemist*. New York: Marcel Dekker. Formatted with pandoc and apa.csl, 2013-10-23: (Augustine, 1995) Augustine, R. L. (1995). *Heterogeneous catalysis for the synthetic chemist*. New York: Marcel Dekker. } @Book{augustine, author = {Augustine, Robert L.}, title = {Heterogeneous catalysis for the synthetic chemist}, date = 1995, publisher = {Marcel Dekker}, location = {New York}, hyphenation = {american}, shorttitle = {Heterogeneous catalysis}, annotation = {A plain book entry}, } ^D --- nocite: "[@*]" references: - annote: A plain book entry author: - family: Augustine given: Robert L. id: augustine issued: 1995 language: en-US publisher: Marcel Dekker publisher-place: New York title: Heterogeneous catalysis for the synthetic chemist title-short: Heterogeneous catalysis type: book --- ``` pandoc-3.1.3/test/command/biblatex-averroes-bland.md0000644000000000000000000000461507346545000020574 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Averroes 1982) Averroes. 1982. *The Epistle on the Possibility of Conjunction with the Active Intellect by Ibn Rushd with the Commentary of Moses Narboni*. Kalman P. Bland. Moreshet: Studies in Jewish History, Literature and Thought 7. New York: Jewish Theological Seminary of America. Formatted with pandoc and apa.csl, 2013-10-23: (Averroes, 1982) Averroes. (1982). *The epistle on the possibility of conjunction with the active intellect by Ibn Rushd with the commentary of Moses Narboni*. (K. P. Bland). New York: Jewish Theological Seminary of America. NOTES: - citeproc - term "edited and translated by" missing } @Book{averroes-bland, author = {Averroes}, title = {The Epistle on the Possibility of Conjunction with the Active Intellect by {Ibn Rushd} with the Commentary of {Moses Narboni}}, date = 1982, editor = {Bland, Kalman P.}, translator = {Bland, Kalman P.}, series = {Moreshet: {Studies} in {Jewish} History, Literature and Thought}, number = 7, publisher = {Jewish Theological Seminary of America}, location = {New York}, keywords = {primary}, hyphenation = {american}, indextitle = {Epistle on the Possibility of Conjunction, The}, shorttitle = {Possibility of Conjunction}, annotation = {A book entry with a series and a number. Note the concatenation of the editor and translator fields as well as the indextitle field}, } ^D --- nocite: "[@*]" references: - annote: A book entry with a series and a number. Note the concatenation of the editor and translator fields as well as the indextitle field author: - family: Averroes collection-number: 7 collection-title: "Moreshet: Studies in Jewish history, literature and thought" editor: - family: Bland given: Kalman P. id: averroes-bland issued: 1982 keyword: primary language: en-US publisher: Jewish Theological Seminary of America publisher-place: New York title: The epistle on the possibility of conjunction with the active intellect by Ibn Rushd with the commentary of Moses Narboni title-short: Possibility of conjunction translator: - family: Bland given: Kalman P. type: book --- ``` pandoc-3.1.3/test/command/biblatex-averroes-hannes.md0000644000000000000000000000452007346545000020763 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Averroes 1892) Averroes. 1892. *Des Averroës Abhandlung: “Über die Möglichkeit der Conjunktion” oder “Über den materiellen Intellekt”*. Ludwig Hannes. Halle an der Saale: C. A. Kaemmerer. Formatted with pandoc and apa.csl, 2013-10-23: (Averroes, 1892) Averroes. (1892). *Des Averroës Abhandlung: “Über die Möglichkeit der Conjunktion” oder “Über den materiellen Intellekt”*. (L. Hannes). Halle an der Saale: C. A. Kaemmerer. NOTES: - citeproc - term "edited and translated by" missing } @Book{averroes-hannes, author = {Averroes}, title = {Des Averro{\"e}s Abhandlung: \mkbibquote{{\"U}ber die M{\"o}glichkeit der Conjunktion} oder \mkbibquote{{\"U}ber den materiellen Intellekt}}, date = 1892, editor = {Hannes, Ludwig}, translator = {Hannes, Ludwig}, annotator = {Hannes, Ludwig}, publisher = {C.~A. Kaemmerer}, location = {Halle an der Saale}, keywords = {primary}, hyphenation = {german}, sorttitle = {Uber die Moglichkeit der Conjunktion}, indexsorttitle= {Uber die Moglichkeit der Conjunktion}, indextitle = {{\"U}ber die M{\"o}glichkeit der Conjunktion}, shorttitle = {{\"U}ber die M{\"o}glichkeit der Conjunktion}, annotation = {An annotated edition. Note the concatenation of the editor, translator, and annotator fields. Also note the shorttitle, indextitle, sorttitle, and indexsorttitle fields}, } ^D --- nocite: "[@*]" references: - annote: An annotated edition. Note the concatenation of the editor, translator, and annotator fields. Also note the shorttitle, indextitle, sorttitle, and indexsorttitle fields author: - family: Averroes editor: - family: Hannes given: Ludwig id: averroes-hannes issued: 1892 keyword: primary language: de-DE publisher: C. A. Kaemmerer publisher-place: Halle an der Saale title: "Des Averroës Abhandlung: \"Über die Möglichkeit der Conjunktion\" oder \"Über den materiellen Intellekt\"" title-short: Über die Möglichkeit der Conjunktion translator: - family: Hannes given: Ludwig type: book --- ``` pandoc-3.1.3/test/command/biblatex-averroes-hercz.md0000644000000000000000000000430007346545000020616 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Averroes 1869) Averroes. 1869. *Drei Abhandlungen über die Conjunction des separaten Intellects mit dem Menschen: Von Averroes (Vater und Sohn), aus dem Arabischen übersetzt von Samuel Ibn Tibbon*. J. Hercz. Berlin: S. Hermann. Formatted with pandoc and apa.csl, 2013-10-23: (Averroes, 1869) Averroes. (1869). *Drei Abhandlungen über die Conjunction des separaten Intellects mit dem Menschen: Von Averroes (Vater und Sohn), aus dem Arabischen übersetzt von Samuel Ibn Tibbon*. (J. Hercz). Berlin: S. Hermann. NOTES: - citeproc - term "edited and translated by" missing } @Book{averroes-hercz, author = {Averroes}, title = {Drei Abhandlungen {\"u}ber die Conjunction des separaten Intellects mit dem Menschen}, date = 1869, editor = {Hercz, J.}, translator = {Hercz, J.}, publisher = {S.~Hermann}, location = {Berlin}, keywords = {primary}, hyphenation = {german}, indexsorttitle= {Drei Abhandlungen uber die Conjunction}, indextitle = {Drei Abhandlungen {\"u}ber die Conjunction}, subtitle = {Von Averroes (Vater und Sohn), aus dem Arabischen {\"u}bersetzt von Samuel Ibn Tibbon}, shorttitle = {Drei Abhandlungen}, annotation = {A book entry. Note the concatenation of the editor and translator fields as well as the indextitle and indexsorttitle fields}, } ^D --- nocite: "[@*]" references: - annote: A book entry. Note the concatenation of the editor and translator fields as well as the indextitle and indexsorttitle fields author: - family: Averroes editor: - family: Hercz given: J. id: averroes-hercz issued: 1869 keyword: primary language: de-DE publisher: S. Hermann publisher-place: Berlin title: "Drei Abhandlungen über die Conjunction des separaten Intellects mit dem Menschen: Von Averroes (Vater und Sohn), aus dem Arabischen übersetzt von Samuel Ibn Tibbon" title-short: Drei Abhandlungen translator: - family: Hercz given: J. type: book --- ``` pandoc-3.1.3/test/command/biblatex-baez-article.md0000644000000000000000000000366507346545000020236 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Baez and Lauda 2004) Baez, John C., and Aaron D. Lauda. 2004. “Higher-dimensional Algebra V: 2-groups” (version 3). *Theory and Applications of Categories* 12: 423–491. Formatted with pandoc and apa.csl, 2013-10-23: (Baez & Lauda, 2004) Baez, J. C., & Lauda, A. D. (2004). Higher-dimensional algebra V: 2-groups. *Theory and Applications of Categories*, *12*, 423–491. NOTES: - biblio2yaml - eprint: see baez-online } @Article{baez-article, author = {Baez, John C. and Lauda, Aaron D.}, title = {Higher-Dimensional Algebra {V}: 2-Groups}, journaltitle = {Theory and Applications of Categories}, date = 2004, volume = 12, pages = {423-491}, version = 3, eprint = {math/0307200v3}, eprinttype = {arxiv}, hyphenation = {american}, annotation = {An article with eprint and eprinttype fields. Note that the arXiv reference is transformed into a clickable link if hyperref support has been enabled. Compare baez\slash online, which is the same item given as an online entry}, } ^D --- nocite: "[@*]" references: - annote: An article with eprint and eprinttype fields. Note that the arXiv reference is transformed into a clickable link if hyperref support has been enabled. Compare baez/online, which is the same item given as an online entry author: - family: Baez given: John C. - family: Lauda given: Aaron D. container-title: Theory and Applications of Categories id: baez-article issued: 2004 language: en-US page: 423-491 title: "Higher-dimensional algebra V: 2-groups" title-short: Higher-dimensional algebra V type: article-journal url: "https://arxiv.org/abs/math/0307200v3" version: 3 volume: 12 --- ``` pandoc-3.1.3/test/command/biblatex-baez-online.md0000644000000000000000000000330007346545000020061 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Baez and Lauda 2004) Baez, John C., and Aaron D. Lauda. 2004. “Higher-dimensional Algebra V: 2-groups” (version 3). October 27. Formatted with pandoc and apa.csl, 2013-10-23: (Baez & Lauda, 2004) Baez, J. C., & Lauda, A. D. (2004, October 27). Higher-dimensional algebra V: 2-groups. NOTES: - biblio2yaml: - eprinttype = {arxiv}, eprint = {math/0307200v3}, should be converted to a url: http://arxiv.org/abs/math/0307200v3 (prefix http://arxiv.org/abs/ seems to work for all arxiv material) } @Online{baez-online, author = {Baez, John C. and Lauda, Aaron D.}, title = {Higher-Dimensional Algebra {V}: 2-Groups}, date = {2004-10-27}, version = 3, hyphenation = {american}, eprinttype = {arxiv}, eprint = {math/0307200v3}, annotation = {An online reference from arXiv. Note the eprint and eprinttype fields. Compare baez\slash article which is the same item given as an article entry with eprint information}, } ^D --- nocite: "[@*]" references: - annote: An online reference from arXiv. Note the eprint and eprinttype fields. Compare baez/article which is the same item given as an article entry with eprint information author: - family: Baez given: John C. - family: Lauda given: Aaron D. id: baez-online issued: 2004-10-27 language: en-US title: "Higher-dimensional algebra V: 2-groups" title-short: Higher-dimensional algebra V type: webpage url: "https://arxiv.org/abs/math/0307200v3" version: 3 --- ``` pandoc-3.1.3/test/command/biblatex-basic.md0000644000000000000000000000223707346545000016747 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @Book{item1, author="John Doe", title="First Book", year="2005", address="Cambridge", publisher="Cambridge University Press" } @Article{item2, author="John Doe", title="Article", year="2006", journal="Journal of Generic Studies", volume="6", pages="33-34" } @InCollection{пункт3, author="John Doe and Jenny Roe", title="Why Water Is Wet", booktitle="Third Book", editor="Sam Smith", publisher="Oxford University Press", address="Oxford", year="2007" } ^D --- nocite: "[@*]" references: - author: - family: Doe given: John id: item1 issued: 2005 publisher: Cambridge University Press publisher-place: Cambridge title: First book type: book - author: - family: Doe given: John container-title: Journal of Generic Studies id: item2 issued: 2006 page: 33-34 title: Article type: article-journal volume: 6 - author: - family: Doe given: John - family: Roe given: Jenny container-title: Third book editor: - family: Smith given: Sam id: пункт3 issued: 2007 publisher: Oxford University Press publisher-place: Oxford title: Why water is wet type: chapter --- ``` pandoc-3.1.3/test/command/biblatex-bertram.md0000644000000000000000000000270007346545000017315 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Bertram and Wentworth 1996) Bertram, Aaron, and Richard Wentworth. 1996. “Gromov Invariants for Holomorphic Maps on Riemann Surfaces.” *J. Amer. Math. Soc.* 9 (2): 529–571. Formatted with pandoc and apa.csl, 2013-10-23: (Bertram & Wentworth, 1996) Bertram, A., & Wentworth, R. (1996). Gromov invariants for holomorphic maps on Riemann surfaces. *J. Amer. Math. Soc.*, *9*(2), 529–571. } @string{ jams = {J.~Amer. Math. Soc.} } @Article{bertram, author = {Bertram, Aaron and Wentworth, Richard}, title = {Gromov invariants for holomorphic maps on {Riemann} surfaces}, journaltitle = jams, date = 1996, volume = 9, number = 2, pages = {529-571}, hyphenation = {american}, shorttitle = {Gromov invariants}, annotation = {An article entry with a volume and a number field}, } ^D --- nocite: "[@*]" references: - annote: An article entry with a volume and a number field author: - family: Bertram given: Aaron - family: Wentworth given: Richard container-title: J. Amer. Math. Soc. id: bertram issue: 2 issued: 1996 language: en-US page: 529-571 title: Gromov invariants for holomorphic maps on Riemann surfaces title-short: Gromov invariants type: article-journal volume: 9 --- ``` pandoc-3.1.3/test/command/biblatex-bibstring-resolution.md0000644000000000000000000000042607346545000022050 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @book{item1, Title = {The Title: \bibstring{newseries}}, Hyphenation = {english} } ^D --- nocite: "[@*]" references: - id: item1 language: en-US title: "The title: New series" title-short: The title type: book --- ``` pandoc-3.1.3/test/command/biblatex-book-averroes.md0000644000000000000000000001054307346545000020443 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ adapted from http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/examples/biblatex-examples.bib} @book{averroes/bland, Annotation = {A book entry with a series and a number. Note the concatenation of the editor and translator fields as well as the indextitle field}, Author = {Averroes}, Date = 1982, Editor = {Bland, Kalman P.}, Hyphenation = {american}, Indextitle = {Epistle on the Possibility of Conjunction, The}, Keywords = {primary}, Location = {New York}, Number = 7, Publisher = {Jewish Theological Seminary of America}, Series = {{Moreshet: Studies in Jewish History, Literature and Thought}}, Shorttitle = {Possibility of Conjunction}, Title = {The Epistle on the Possibility of Conjunction with the Active Intellect by {Ibn Rushd} with the Commentary of {Moses Narboni}}, Translator = {Bland, Kalman P.}} @book{averroes/hannes, Annotation = {An annotated edition. Note the concatenation of the editor, translator, and annotator fields. Also note the shorttitle, indextitle, sorttitle, and indexsorttitle fields}, Annotator = {Hannes, Ludwig}, Author = {Averroes}, Date = 1892, Editor = {Hannes, Ludwig}, Hyphenation = {german}, Indexsorttitle = {Uber die Moglichkeit der Conjunktion}, Indextitle = {Über die Möglichkeit der Conjunktion}, Keywords = {primary}, Location = {Halle an der Saale}, Publisher = {C.~A. Kaemmerer}, Shorttitle = {Über die Möglichkeit der Conjunktion}, Sorttitle = {Uber die Moglichkeit der Conjunktion}, Title = {Des Averroës Abhandlung: \mkbibquote{Über die Möglichkeit der Conjunktion} oder \mkbibquote{Über den materiellen Intellekt}}, Translator = {Hannes, Ludwig}} @book{averroes/hercz, Annotation = {A book entry. Note the concatenation of the editor and translator fields as well as the indextitle and indexsorttitle fields}, Author = {Averroes}, Date = 1869, Editor = {Hercz, J.}, Hyphenation = {german}, Indexsorttitle = {Drei Abhandlungen uber die Conjunction}, Indextitle = {Drei Abhandlungen über die Conjunction}, Keywords = {primary}, Location = {Berlin}, Publisher = {S.~Hermann}, Shorttitle = {Drei Abhandlungen}, Subtitle = {Von Averroes (Vater und Sohn), aus dem Arabischen übersetzt von Samuel Ibn Tibbon}, Title = {Drei Abhandlungen über die Conjunction des separaten Intellects mit dem Menschen}, Translator = {Hercz, J.}} ^D --- nocite: "[@*]" references: - annote: A book entry with a series and a number. Note the concatenation of the editor and translator fields as well as the indextitle field author: - family: Averroes collection-number: 7 collection-title: "[Moreshet: Studies in Jewish History, Literature and Thought]{.nocase}" editor: - family: Bland given: Kalman P. id: averroes/bland issued: 1982 keyword: primary language: en-US publisher: Jewish Theological Seminary of America publisher-place: New York title: The epistle on the possibility of conjunction with the active intellect by Ibn Rushd with the commentary of Moses Narboni title-short: Possibility of conjunction translator: - family: Bland given: Kalman P. type: book - annote: An annotated edition. Note the concatenation of the editor, translator, and annotator fields. Also note the shorttitle, indextitle, sorttitle, and indexsorttitle fields author: - family: Averroes editor: - family: Hannes given: Ludwig id: averroes/hannes issued: 1892 keyword: primary language: de-DE publisher: C. A. Kaemmerer publisher-place: Halle an der Saale title: "Des Averroës Abhandlung: \"Über die Möglichkeit der Conjunktion\" oder \"Über den materiellen Intellekt\"" title-short: Über die Möglichkeit der Conjunktion translator: - family: Hannes given: Ludwig type: book - annote: A book entry. Note the concatenation of the editor and translator fields as well as the indextitle and indexsorttitle fields author: - family: Averroes editor: - family: Hercz given: J. id: averroes/hercz issued: 1869 keyword: primary language: de-DE publisher: S. Hermann publisher-place: Berlin title: "Drei Abhandlungen über die Conjunction des separaten Intellects mit dem Menschen: Von Averroes (Vater und Sohn), aus dem Arabischen übersetzt von Samuel Ibn Tibbon" title-short: Drei Abhandlungen translator: - family: Hercz given: J. type: book --- ``` pandoc-3.1.3/test/command/biblatex-book-coleridge.md0000644000000000000000000000347407346545000020557 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{adapted from http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/examples/biblatex-examples.bib TODO (as a stopgap): Combine biblatex “volume = 7” and “part = 2” to CSL “volume: 7.2” } @book{coleridge, Annotation = {One (partial) volume of a multivolume book. This is a book entry with a volume and a part field which explicitly refers to the second (physical) part of the seventh (logical) volume. Also note the series and number fields}, Author = {Coleridge, Samuel Taylor}, Date = 1983, Editor = {Coburn, Kathleen and Engell, James and Bate, W. Jackson}, Hyphenation = {british}, Indextitle = {Biographia literaria}, Location = {London}, Maintitle = {The collected works of {Samuel Taylor Coleridge}}, Number = 75, Part = 2, Publisher = {Routledge {and} Kegan Paul}, Series = {Bollingen Series}, Shorttitle = {Biographia literaria}, Title = {Biographia literaria, or {Biographical} sketches of my literary life and opinions}, Volume = 7} ^D --- nocite: "[@*]" references: - annote: One (partial) volume of a multivolume book. This is a book entry with a volume and a part field which explicitly refers to the second (physical) part of the seventh (logical) volume. Also note the series and number fields author: - family: Coleridge given: Samuel Taylor collection-number: 75 collection-title: Bollingen series editor: - family: Coburn given: Kathleen - family: Engell given: James - family: Bate given: W. Jackson id: coleridge issued: 1983 language: en-GB publisher: Routledge and Kegan Paul publisher-place: London title: The collected works of Samuel Taylor Coleridge type: book volume: 7.2 volume-title: Biographia literaria, or Biographical sketches of my literary life and opinions --- ``` pandoc-3.1.3/test/command/biblatex-book-title-maintitle-series.md0000644000000000000000000000134107346545000023206 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @book{item1, Author = {Author, Al}, Date = {2013}, Hyphenation = {french}, Location = {Location}, Mainsubtitle = {Mainsubtitle}, Maintitle = {Maintitle}, Maintitleaddon = {Maintitleaddon}, Number = {3}, Publisher = {Publisher}, Series = {Series}, Subtitle = {Subtitle}, Title = {Title of the Book}, Titleaddon = {Titleaddon}, } ^D --- nocite: "[@*]" references: - author: - family: Author given: Al collection-number: 3 collection-title: Series id: item1 issued: 2013 language: fr-FR publisher: Publisher publisher-place: Location title: "Maintitle: Mainsubtitle. Maintitleaddon" type: book volume-title: "Title of the Book: Subtitle. Titleaddon" --- ``` pandoc-3.1.3/test/command/biblatex-book-vazques-de-parga.md0000644000000000000000000000256307346545000021774 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{excerpted from http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/examples/biblatex-examples.bib Note handling of Author = {Vázques{ de }Parga, Luis} } @book{vazques-de-parga, Annotation = {A multivolume book cited as a whole. This is a book entry with volumes, note, sorttitle, and indextitle fields}, Author = {Vázques{ de }Parga, Luis and Lacarra, José María and Uría Ríu, Juan}, Date = 1993, Hyphenation = {spanish}, Indextitle = {Peregrinaciones a Santiago de Compostela, Las}, Location = {Pamplona}, Note = {Ed. facs. de la realizada en 1948--49}, Publisher = {Iberdrola}, Shorttitle = {Peregrinaciones}, Sorttitle = {Peregrinaciones a Santiago de Compostela}, Title = {Las Peregrinaciones a Santiago de Compostela}, Volumes = 3} ^D --- nocite: "[@*]" references: - annote: A multivolume book cited as a whole. This is a book entry with volumes, note, sorttitle, and indextitle fields author: - family: Vázques de Parga given: Luis - family: Lacarra given: José María - family: Uría Ríu given: Juan id: vazques-de-parga issued: 1993 language: es-ES note: Ed. facs. de la realizada en 1948--49 number-of-volumes: 3 publisher: Iberdrola publisher-place: Pamplona title: Las Peregrinaciones a Santiago de Compostela title-short: Peregrinaciones type: book --- ``` pandoc-3.1.3/test/command/biblatex-brandt.md0000644000000000000000000000515707346545000017144 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Brandt and Hoffmann 1987) Brandt, Ahasver von, and Erich Hoffmann. 1987. “Die nordischen Länder von der Mitte des 11. Jahrhunderts bis 1448.” In *Europa im Hoch- und Spätmittelalter*, edited by Ferdinand Seibt, 884–917. Handbuch der europäischen Geschichte 2. Stuttgart: Klett-Cotta. Formatted with pandoc and apa.csl, 2013-10-23: (Brandt & Hoffmann, 1987) Brandt, A. von, & Hoffmann, E. (1987). Die nordischen Länder von der Mitte des 11. Jahrhunderts bis 1448. In F. Seibt (ed.), *Europa im Hoch- und Spätmittelalter* (pp. 884–917). Stuttgart: Klett-Cotta. } @InCollection{brandt, author = {von Brandt, Ahasver and Erich Hoffmann}, editor = {Ferdinand Seibt}, title = {Die nordischen L{\"a}nder von der Mitte des 11.~Jahrhunderts bis 1448}, date = 1987, booktitle = {Europa im Hoch- und Sp{\"a}tmittelalter}, series = {Handbuch der europ{\"a}ischen Geschichte}, number = 2, publisher = {Klett-Cotta}, location = {Stuttgart}, pages = {884-917}, options = {useprefix=false}, hyphenation = {german}, indexsorttitle= {Nordischen Lander von der Mitte des 11. Jahrhunderts bis 1448}, indextitle = {Nordischen L{\"a}nder von der Mitte des 11.~Jahrhunderts bis 1448, Die}, shorttitle = {Die nordischen L{\"a}nder}, annotation = {An incollection entry with a series and a number. Note the format of the printed name and compare the useprefix option in the options field as well as vangennep. Also note the indextitle, and indexsorttitle fields}, } ^D --- nocite: "[@*]" references: - annote: An incollection entry with a series and a number. Note the format of the printed name and compare the useprefix option in the options field as well as vangennep. Also note the indextitle, and indexsorttitle fields author: - dropping-particle: von family: Brandt given: Ahasver - family: Hoffmann given: Erich collection-number: 2 collection-title: Handbuch der europäischen Geschichte container-title: Europa im Hoch- und Spätmittelalter editor: - family: Seibt given: Ferdinand id: brandt issued: 1987 language: de-DE page: 884-917 publisher: Klett-Cotta publisher-place: Stuttgart title: Die nordischen Länder von der Mitte des 11. Jahrhunderts bis 1448 title-short: Die nordischen Länder type: chapter --- ``` pandoc-3.1.3/test/command/biblatex-britannica.md0000644000000000000000000000502007346545000017771 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Preece 2003) Preece, Warren E., ed. 2003. *The New EncyclopæDia Britannica*. 15th ed. 32. Chicago, Ill.: Encyclopædia Britannica. Formatted with pandoc and apa.csl, 2013-10-23: (Preece, 2003) Preece, W. E. (Ed.). (2003). *The new encyclopædia Britannica* (15th ed., 1-32). Chicago, Ill.: Encyclopædia Britannica. NOTES: - biblio2yaml - spurious in Encyclopædia - options = {useeditor=false} has no equivalent in CSL, so citing and alphabetizing by title even though there is an editor does not seem to be possible - citeproc - incorrect camel case: "EncyclopæDia" - term "vols." missing } @Collection{britannica, editor = {Preece, Warren E.}, title = {The New Encyclop{\ae}dia {Britannica}}, date = 2003, edition = 15, volumes = 32, publisher = {Encyclop{\ae}dia Britannica}, location = {Chicago, Ill.}, options = {useeditor=false}, label = {EB}, hyphenation = {british}, sorttitle = {Encyclop{\ae}dia Britannica}, indextitle = {Encyclop{\ae}dia Britannica, The New}, shorttitle = {Encyclop{\ae}dia {Britannica}}, annotation = {This is a collection entry for an encyclopedia. Note the useeditor option in the options field as well as the sorttitle field. We want this entry to be cited and alphabetized by title even though there is an editor. In addition to that, we want the title to be alphabetized under \enquote*{E} rather than \enquote*{T}. Also note the label field which is provided for author-year citation styles}, } ^D --- nocite: "[@*]" references: - annote: This is a collection entry for an encyclopedia. Note the useeditor option in the options field as well as the sorttitle field. We want this entry to be cited and alphabetized by title even though there is an editor. In addition to that, we want the title to be alphabetized under 'E' rather than 'T'. Also note the label field which is provided for author-year citation styles edition: 15 editor: - family: Preece given: Warren E. id: britannica issued: 2003 language: en-GB number-of-volumes: 32 publisher: Encyclopædia Britannica publisher-place: Chicago, Ill. title: The new encyclopædia Britannica title-short: Encyclopædia Britannica type: book --- ``` pandoc-3.1.3/test/command/biblatex-chiu.md0000644000000000000000000000416007346545000016613 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Chiu and Chow 1978) Chiu, Willy W., and We Min Chow. 1978. “A Hybrid Hierarchical Model of a Multiple Virtual Storage (MVS) Operating System.” Research report RC-6947. IBM. Formatted with pandoc and apa.csl, 2013-10-23: (Chiu & Chow, 1978) Chiu, W. W., & Chow, W. M. (1978). *A hybrid hierarchical model of a multiple virtual storage (MVS) operating system* (research report No. RC-6947). IBM. NOTES: - biblio2yaml - "MVS", when not wrapped in {}, gives "mVS", which is probably never intended, or useful (latex converts the whole word to lowercase if unprotected ("MVS" -> "mvs")) } @Report{chiu, author = {Chiu, Willy W. and Chow, We Min}, title = {A Hybrid Hierarchical Model of a Multiple Virtual Storage ({MVS}) Operating System}, type = {resreport}, institution = {IBM}, date = 1978, number = {RC-6947}, hyphenation = {american}, sorttitle = {Hybrid Hierarchical Model of a Multiple Virtual Storage (MVS) Operating System}, indextitle = {Hybrid Hierarchical Model, A}, annotation = {This is a report entry for a research report. Note the format of the type field in the database file which uses a localization key. The number of the report is given in the number field. Also note the sorttitle and indextitle fields}, } ^D --- nocite: "[@*]" references: - annote: This is a report entry for a research report. Note the format of the type field in the database file which uses a localization key. The number of the report is given in the number field. Also note the sorttitle and indextitle fields author: - family: Chiu given: Willy W. - family: Chow given: We Min genre: research report id: chiu issued: 1978 language: en-US number: RC-6947 publisher: IBM title: A hybrid hierarchical model of a multiple virtual storage (MVS) operating system type: report --- ``` pandoc-3.1.3/test/command/biblatex-cicero.md0000644000000000000000000000403107346545000017124 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Cicero 1995) Cicero, Marcus Tullius. 1995. *De natura deorum. Über das Wesen der Götter*. Ursula Blank-Sangmeister. Stuttgart: Reclam. Formatted with pandoc and apa.csl, 2013-10-23: (Cicero, 1995) Cicero, M. T. (1995). *De natura deorum. Über das Wesen der Götter*. (U. Blank-Sangmeister). Stuttgart: Reclam. NOTES: - biblio2yaml - afterword, language: no CSL variables available - citeproc: - term such as "edited and translated by" should appear } @Book{cicero, author = {Cicero, Marcus Tullius}, title = {De natura deorum. {\"U}ber das Wesen der G{\"o}tter}, date = 1995, editor = {Blank-Sangmeister, Ursula}, translator = {Blank-Sangmeister, Ursula}, afterword = {Thraede, Klaus}, language = {langlatin and langgerman}, publisher = {Reclam}, location = {Stuttgart}, hyphenation = {german}, indextitle = {De natura deorum}, shorttitle = {De natura deorum}, annotation = {A bilingual edition of Cicero's \emph{De natura deorum}, with a German translation. Note the format of the language field in the database file, the concatenation of the editor and translator fields, and the afterword field}, } ^D --- nocite: "[@*]" references: - annote: A bilingual edition of Cicero's *De natura deorum*, with a German translation. Note the format of the language field in the database file, the concatenation of the editor and translator fields, and the afterword field author: - family: Cicero given: Marcus Tullius editor: - family: Blank-Sangmeister given: Ursula id: cicero issued: 1995 language: de-DE publisher: Reclam publisher-place: Stuttgart title: De natura deorum. Über das Wesen der Götter title-short: De natura deorum translator: - family: Blank-Sangmeister given: Ursula type: book --- ``` pandoc-3.1.3/test/command/biblatex-cms.md0000644000000000000000000000501307346545000016443 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (*The Chicago Manual of Style: The Essential Guide for Writers, Editors, and Publishers* 2003) *The Chicago Manual of Style: The Essential Guide for Writers, Editors, and Publishers*. 2003. 15th ed. Chicago, Ill.: University of Chicago Press. Formatted with pandoc and apa.csl, 2013-10-23: (*Chicago manual of style*, 2003) *The Chicago manual of style: The essential guide for writers, editors, and publishers*. (2003) (15th ed.). Chicago, Ill.: University of Chicago Press. NOTES: - chicago-author-date.csl should have as in-text citation: (*Chicago Manual of Style* 2003) Same behaviour in Zotero; most probably a style file issue. } @Manual{cms, title = {The {Chicago} Manual of Style}, date = 2003, subtitle = {The Essential Guide for Writers, Editors, and Publishers}, edition = 15, publisher = {University of Chicago Press}, location = {Chicago, Ill.}, isbn = {0-226-10403-6}, label = {CMS}, hyphenation = {american}, sorttitle = {Chicago Manual of Style}, indextitle = {Chicago Manual of Style, The}, shorttitle = {Chicago Manual of Style}, annotation = {This is a manual entry without an author or editor. Note the label field in the database file which is provided for author-year citation styles. Also note the sorttitle and indextitle fields. By default, all entries without an author or editor are alphabetized by title but we want this entry to be alphabetized under \enquote*{C} rather than \enquote*{T}. There's also an isbn field}, } ^D --- nocite: "[@*]" references: - annote: This is a manual entry without an author or editor. Note the label field in the database file which is provided for author-year citation styles. Also note the sorttitle and indextitle fields. By default, all entries without an author or editor are alphabetized by title but we want this entry to be alphabetized under 'C' rather than 'T'. There's also an isbn field edition: 15 id: cms isbn: 0-226-10403-6 issued: 2003 language: en-US publisher: University of Chicago Press publisher-place: Chicago, Ill. title: "The Chicago manual of style: The essential guide for writers, editors, and publishers" title-short: Chicago manual of style type: book --- ``` pandoc-3.1.3/test/command/biblatex-coleridge.md0000644000000000000000000000465707346545000017633 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2015-03-08: (Coleridge 1983) Coleridge, Samuel Taylor. 1983. *The Collected Works of Samuel Taylor Coleridge*. Edited by Kathleen Coburn, James Engell, and W. Jackson Bate. Vol. 7.2. Bollingen Series 75. London: Routledge and Kegan Paul. Formatted with pandoc and apa.csl, 2015-03-08: (Coleridge, 1983) Coleridge, S. T. (1983). *The collected works of Samuel Taylor Coleridge*. (K. Coburn, J. Engell, & W. J. Bate, Eds.) (Vol. 7.2). London: Routledge and Kegan Paul. NOTES: - volume-title currently not implemented by chicago-author-date.csl and apa.csl. } @Book{coleridge, author = {Coleridge, Samuel Taylor}, title = {Biographia literaria, or {Biographical} sketches of my literary life and opinions}, date = 1983, editor = {Coburn, Kathleen and Engell, James and Bate, W. Jackson}, maintitle = {The collected works of {Samuel Taylor Coleridge}}, volume = 7, part = 2, series = {Bollingen Series}, number = 75, publisher = {Routledge {and} Kegan Paul}, location = {London}, hyphenation = {british}, indextitle = {Biographia literaria}, shorttitle = {Biographia literaria}, annotation = {One (partial) volume of a multivolume book. This is a book entry with a volume and a part field which explicitly refers to the second (physical) part of the seventh (logical) volume. Also note the series and number fields}, } ^D --- nocite: "[@*]" references: - annote: One (partial) volume of a multivolume book. This is a book entry with a volume and a part field which explicitly refers to the second (physical) part of the seventh (logical) volume. Also note the series and number fields author: - family: Coleridge given: Samuel Taylor collection-number: 75 collection-title: Bollingen series editor: - family: Coburn given: Kathleen - family: Engell given: James - family: Bate given: W. Jackson id: coleridge issued: 1983 language: en-GB publisher: Routledge and Kegan Paul publisher-place: London title: The collected works of Samuel Taylor Coleridge type: book volume: 7.2 volume-title: Biographia literaria, or Biographical sketches of my literary life and opinions --- ``` pandoc-3.1.3/test/command/biblatex-companion.md0000644000000000000000000000322507346545000017647 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Goossens, Mittelbach, and Samarin 1994) Goossens, Michel, Frank Mittelbach, and Alexander Samarin. 1994. *The LaTeX Companion*. 1st ed. Reading, Mass.: Addison-Wesley. Formatted with pandoc and apa.csl, 2013-10-23: (Goossens, Mittelbach, & Samarin, 1994) Goossens, M., Mittelbach, F., & Samarin, A. (1994). *The LaTeX companion* (1st ed.). Reading, Mass.: Addison-Wesley. } @Book{companion, author = {Goossens, Michel and Mittelbach, Frank and Samarin, Alexander}, title = {The {LaTeX} Companion}, date = 1994, edition = 1, publisher = {Addison-Wesley}, location = {Reading, Mass.}, pagetotal = 528, hyphenation = {american}, sorttitle = {LaTeX Companion}, indextitle = {LaTeX Companion, The}, shorttitle = {LaTeX Companion}, annotation = {A book with three authors. Note the formatting of the author list. By default, only the first name is reversed in the bibliography}, } ^D --- nocite: "[@*]" references: - annote: A book with three authors. Note the formatting of the author list. By default, only the first name is reversed in the bibliography author: - family: Goossens given: Michel - family: Mittelbach given: Frank - family: Samarin given: Alexander edition: 1 id: companion issued: 1994 language: en-US number-of-pages: 528 publisher: Addison-Wesley publisher-place: Reading, Mass. title: The LaTeX companion title-short: LaTeX companion type: book --- ``` pandoc-3.1.3/test/command/biblatex-cotton.md0000644000000000000000000000321007346545000017164 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Cotton et al. 1999) Cotton, Frank Albert, Geoffrey Wilkinson, Carlos A. Murillio, and Manfred Bochmann. 1999. *Advanced Inorganic Chemistry*. 6th ed. Chichester: Wiley. Formatted with pandoc and apa.csl, 2013-10-23: (Cotton, Wilkinson, Murillio, & Bochmann, 1999) Cotton, F. A., Wilkinson, G., Murillio, C. A., & Bochmann, M. (1999). *Advanced inorganic chemistry* (6th ed.). Chichester: Wiley. } @Book{cotton, author = {Cotton, Frank Albert and Wilkinson, Geoffrey and Murillio, Carlos A. and Bochmann, Manfred}, title = {Advanced inorganic chemistry}, date = 1999, edition = 6, publisher = {Wiley}, location = {Chichester}, hyphenation = {british}, annotation = {A book entry with \arabic{author} authors and an edition field. By default, long author and editor lists are automatically truncated. This is configurable}, } ^D --- nocite: "[@*]" references: - annote: A book entry with `\arabic{author}`{=latex} authors and an edition field. By default, long author and editor lists are automatically truncated. This is configurable author: - family: Cotton given: Frank Albert - family: Wilkinson given: Geoffrey - family: Murillio given: Carlos A. - family: Bochmann given: Manfred edition: 6 id: cotton issued: 1999 language: en-GB publisher: Wiley publisher-place: Chichester title: Advanced inorganic chemistry type: book --- ``` pandoc-3.1.3/test/command/biblatex-crossref-inbook-mvbook.md0000644000000000000000000000207407346545000022265 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ crossref, directly from inbook to mvbook } @inbook{inbook-1, Crossref = {mvbook-1}, Title = {Macbeth [title field of inbook-1]}, Date = {1975}, Volume = {3}, Chapter = {7}, Pages = {100-200}, } @mvbook{mvbook-1, Author = {Shakespeare}, Date = {1970/1980}, Title = {Collected Works [title field of mvbook-1]}, Location = {Location}, Publisher = {Publisher}, Volumes = {4}, } ^D --- nocite: "[@*]" references: - author: - family: Shakespeare chapter-number: 7 container-author: - family: Shakespeare container-title: Collected works \[title field of mvbook-1\] id: inbook-1 issued: 1975 number-of-volumes: 4 page: 100-200 publisher: Publisher publisher-place: Location title: Macbeth \[title field of inbook-1\] type: chapter volume: 3 - author: - family: Shakespeare id: mvbook-1 issued: 1970/1980 number-of-volumes: 4 publisher: Publisher publisher-place: Location title: Collected works \[title field of mvbook-1\] type: book --- ``` pandoc-3.1.3/test/command/biblatex-crossref-nested.md0000644000000000000000000000407207346545000020773 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Nested cross-references (see biber manual v 1.7) } @bookinbook{bookinbook-1, Crossref = {book-1}, Title = {Macbeth [title field of bookinbook-1]}, Chapter = {7}, Pages = {100-200}, } @inbook{inbook-1, Crossref = {book-1}, Title = {Macbeth [title field of inbook-1]}, Chapter = {7}, Pages = {100-200}, } @book{book-1, Crossref = {mvbook-1}, Date = {1975}, Title = {Tragedies [title field of book-1]}, Volume = {3} } @mvbook{mvbook-1, Author = {Shakespeare}, Date = {1970/1980}, Title = {Collected Works [title field of mvbook-1]}, Location = {Location}, Publisher = {Publisher}, Volumes = {4} } ^D --- nocite: "[@*]" references: - author: - family: Shakespeare chapter-number: 7 container-author: - family: Shakespeare container-title: Collected works \[title field of mvbook-1\] id: bookinbook-1 issued: 1975 number-of-volumes: 4 page: 100-200 publisher: Publisher publisher-place: Location title: Macbeth \[title field of bookinbook-1\] type: chapter volume: 3 volume-title: Tragedies \[title field of book-1\] - author: - family: Shakespeare chapter-number: 7 container-author: - family: Shakespeare container-title: Collected works \[title field of mvbook-1\] id: inbook-1 issued: 1975 number-of-volumes: 4 page: 100-200 publisher: Publisher publisher-place: Location title: Macbeth \[title field of inbook-1\] type: chapter volume: 3 volume-title: Tragedies \[title field of book-1\] - author: - family: Shakespeare container-author: - family: Shakespeare id: book-1 issued: 1975 number-of-volumes: 4 publisher: Publisher publisher-place: Location title: Collected works \[title field of mvbook-1\] type: book volume: 3 volume-title: Tragedies \[title field of book-1\] - author: - family: Shakespeare id: mvbook-1 issued: 1970/1980 number-of-volumes: 4 publisher: Publisher publisher-place: Location title: Collected works \[title field of mvbook-1\] type: book --- ``` pandoc-3.1.3/test/command/biblatex-ctan.md0000644000000000000000000000407207346545000016612 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (“CTAN: The Comprehensive TeX Archive Network” 2006) “CTAN: The Comprehensive TeX Archive Network.” 2006. . Formatted with pandoc and apa.csl, 2013-10-23: (“CTAN: The Comprehensive TeX Archive Network,” 2006) CTAN: The Comprehensive TeX Archive Network. (2006). Retrieved October 01, 2006, from NOTES: - biblio2yaml - if there is no shorttitle, but title and subtitle, the title alone should also be mapped to title-short - citeproc - citeproc should use title-short (if available) instead of title for in-text citations when there is no author } @Online{ctan, title = {{CTAN}}, date = 2006, url = {http://www.ctan.org}, subtitle = {{The Comprehensive TeX Archive Network}}, urldate = {2006-10-01}, label = {CTAN}, hyphenation = {american}, annotation = {This is an online entry. The \textsc{url}, which is given in the url field, is transformed into a clickable link if hyperref support has been enabled. Note the format of the urldate field (yyyy-mm-dd) in the database file. Also note the label field which may be used as a fallback by citation styles which need an author and\slash or a year}, } ^D --- nocite: "[@*]" references: - accessed: 2006-10-01 annote: This is an online entry. The [url]{.smallcaps}, which is given in the url field, is transformed into a clickable link if hyperref support has been enabled. Note the format of the urldate field (yyyy-mm-dd) in the database file. Also note the label field which may be used as a fallback by citation styles which need an author and/or a year id: ctan issued: 2006 language: en-US title: "CTAN: The Comprehensive TeX Archive Network" title-short: CTAN type: webpage url: "http://www.ctan.org" --- ``` pandoc-3.1.3/test/command/biblatex-dates.md0000644000000000000000000001047307346545000016767 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ - Dates - Not included in tests: - malformed dates and date ranges - literal dates ("13th century"; not supported by biblatex) - seasons (would have to come from parsing the issue field) - uncertain dates (use "doubtfuldate" from biblatex-apa?) - dates with single-digit day or month (not supported by biblatex) - negative dates (not supported by biblatex) - Note: biblatex supports years < 1000 but only if padded with leading zeros - TODO: - either biblio2yaml or, probably better, citeproc should strip leading zeros from days and months (CSL can add leading zeros to its output, but not remove them when they are in its input data) } @article{year-month-old, Author = {Author, Al}, Journal = {Journal}, Month = aug, Title = {Year and Month, bibtex style, supported by biblatex for backwards compatibility}, Year = {1999}} @article{year-month-new, Author = {Author, Al}, Journal = {Journal}, Month = {08}, Title = {Year and Month, biblatex style; note that biblatex does not have a ``day'' field}, Year = {1999}} @article{dates, Author = {Author, Al}, Date = {2012-12-13}, Eventdate = {2011-10-03}, Journal = {Journal}, Month = may, Origdate = {1888-10-01}, Title = {Dates, default biblatex style; year, month to be ignored if date exists}, Urldate = {1999-05-23}, Year = {9999}} @article{date-ranges-different-years, Author = {Author, Al}, Date = {1999-10-14/2010-01-23}, Eventdate = {1999-12/2000-01}, Journal = {Journal}, Origdate = {1888-01-02/1913-12-13}, Title = {Date ranges; different years}, Urldate = {2012-10-12/2013-01-31}} @article{date-ranges-same-year, Author = {Author, Al}, Date = {1999-10-14/1999-10-15}, Eventdate = {1999-10/1999-11}, Journal = {Journal}, Origdate = {1888-01-02/1888-12-13}, Title = {Date ranges; same year}, Urldate = {2012-10-31/2012-11-01}} @article{date-ranges-open, Author = {Author, Al}, Date = {1999-10-14/}, Eventdate = {1999-10/}, Journal = {Journal}, Origdate = {1888-01-02/}, Title = {Date ranges, open-ended}, Urldate = {2012-10-31/}} @article{dates-very-old, Author = {Author, Al}, Date = {0712-12-13}, Eventdate = {0311-10-03}, Journal = {Journal}, Month = may, Origdate = {0088-10-01}, Title = {Dates, year less than 1000}, Urldate = {0999-12-14}} ^D --- nocite: "[@*]" references: - author: - family: Author given: Al container-title: Journal id: year-month-old issued: 1999-08 title: Year and month, bibtex style, supported by biblatex for backwards compatibility type: article-journal - author: - family: Author given: Al container-title: Journal id: year-month-new issued: 1999-08 title: Year and month, biblatex style; note that biblatex does not have a "day" field type: article-journal - accessed: 1999-05-23 author: - family: Author given: Al container-title: Journal event-date: 2011-10-03 id: dates issued: 2012-12-13 original-date: 1888-10-01 title: Dates, default biblatex style; year, month to be ignored if date exists type: article-journal - accessed: 2012-10-12/2013-01-31 author: - family: Author given: Al container-title: Journal event-date: 1999-12/2000-01 id: date-ranges-different-years issued: 1999-10-14/2010-01-23 original-date: 1888-01-02/1913-12-13 title: Date ranges; different years type: article-journal - accessed: 2012-10-31/2012-11-01 author: - family: Author given: Al container-title: Journal event-date: 1999-10/1999-11 id: date-ranges-same-year issued: 1999-10-14/1999-10-15 original-date: 1888-01-02/1888-12-13 title: Date ranges; same year type: article-journal - accessed: 2012-10-31/ author: - family: Author given: Al container-title: Journal event-date: 1999-10/ id: date-ranges-open issued: 1999-10-14/ original-date: 1888-01-02/ title: Date ranges, open-ended type: article-journal - accessed: 0999-12-14 author: - family: Author given: Al container-title: Journal event-date: 0311-10-03 id: dates-very-old issued: 0712-12-13 original-date: 0088-10-01 title: Dates, year less than 1000 type: article-journal --- ``` pandoc-3.1.3/test/command/biblatex-doody.md0000644000000000000000000000511407346545000017001 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Doody 1974) (Matuz 1990) Doody, Terrence. 1974. “Hemingway’s Style and Jake’s Narration.” *The Journal of Narrative Technique* 4 (3): 212–225. Matuz, Roger, ed. 1990. *Contemporary Literary Criticism*. Vol. 61. Detroit: Gale. Formatted with pandoc and apa.csl, 2013-10-23: (Doody, 1974) (Matuz, 1990) Doody, T. (1974). Hemingway’s style and Jake’s narration. *The Journal of Narrative Technique*, *4*(3), 212–225. Matuz, R. (Ed.). (1990). *Contemporary literary criticism* (Vol. 61, pp. 204–208). Detroit: Gale. NOTES - biblio2yaml - contains fields “related” and “relatedstring”. In principle, these could be appended to CSL "note", if citeproc can handle citations in the bibliography ... } @Article{doody, author = {Doody, Terrence}, title = {Hemingway's Style and {Jake}'s Narration}, year = 1974, volume = 4, number = 3, pages = {212-225}, hyphenation = {american}, related = {matuz:doody}, relatedstring= {\autocap{e}xcerpt in}, journal = {The Journal of Narrative Technique}, annotation = {An article entry cited as an excerpt from a collection entry. Note the format of the related and relatedstring fields}, } @Collection{matuz:doody, editor = {Matuz, Roger}, title = {Contemporary Literary Criticism}, year = 1990, volume = 61, publisher = {Gale}, location = {Detroit}, pages = {204-208}, hyphenation = {american}, annotation = {A collection entry providing the excerpt information for the doody entry. Note the format of the pages field}, } ^D --- nocite: "[@*]" references: - annote: An article entry cited as an excerpt from a collection entry. Note the format of the related and relatedstring fields author: - family: Doody given: Terrence container-title: The Journal of Narrative Technique id: doody issue: 3 issued: 1974 language: en-US page: 212-225 title: Hemingway's style and Jake's narration type: article-journal volume: 4 - annote: A collection entry providing the excerpt information for the doody entry. Note the format of the pages field editor: - family: Matuz given: Roger id: "matuz:doody" issued: 1990 language: en-US page: 204-208 publisher: Gale publisher-place: Detroit title: Contemporary literary criticism type: book volume: 61 --- ``` pandoc-3.1.3/test/command/biblatex-edtf-date.md0000644000000000000000000000303507346545000017520 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s Note that current CSL doesn't give us a way to distinguish between /open and /unknown, so item3-3 and item3-4 get parsed similarly. That should change in CSL 1.1, and then this test should be revised. @article{item3-3, date={1998/unknown}} @article{item3-4, date={1999/open}} @article{item3-10, date={2004-04-05T14:34:00}} @article{item5-1, date={0000}} @article{item5-2, date={-0876}} @article{item5-3, date={-0877/-0866}} @article{item5-5, date={-0343-02}} @article{item5-8, date={1723~}} @article{item5-9, date={1723?}} @article{item5-10, date={1723?~}} @article{item5-11, date={2004-22}} @article{item5-12, date={2004-24}} @article{item5-13, date={20uu}} @article{item5-14, date={y-123456789}} ^D --- nocite: "[@*]" references: - id: item3-3 issued: 1998/ type: article-journal - id: item3-4 issued: 1999/ type: article-journal - id: item3-10 issued: 2004-04-05 type: article-journal - id: item5-1 type: article-journal - id: item5-2 issued: "-0876" type: article-journal - id: item5-3 issued: "-0877/-0866" type: article-journal - id: item5-5 issued: "-0343-02" type: article-journal - id: item5-8 issued: 1723\~ type: article-journal - id: item5-9 issued: 1723 type: article-journal - id: item5-10 issued: 1723\~ type: article-journal - id: item5-11 issued: 2004-22 type: article-journal - id: item5-12 issued: 2004-24 type: article-journal - id: item5-13 issued: 2000/2099 type: article-journal - id: item5-14 issued: y-123456789 type: article-journal --- ``` pandoc-3.1.3/test/command/biblatex-escapedquotes.md0000644000000000000000000000256507346545000020537 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{From jgm/pandoc#1568. Double quotes escaped using {"}.} @ARTICLE{Koff2009-gn, title = "Pan-Canadian evaluation of irreversible compression ratios ({"}lossy{"} compression) for development of national guidelines", author = "Koff, David and Bak, Peter and Brownrigg, Paul and Hosseinzadeh, Danoush and Khademi, April and Kiss, Alex and Lepanto, Luigi and Michalak, Tracy and Shulman, Harry and Volkening, Andrew", affiliation = "Sunnybrook Health Sciences Centre, 2075 Bayview Ave., Toronto, ON, M4N 3M5, Canada. dkoffmcmaster.ca", journal = "Journal of digital imaging", } ^D --- nocite: "[@*]" references: - author: - family: Koff given: David - family: Bak given: Peter - family: Brownrigg given: Paul - family: Hosseinzadeh given: Danoush - family: Khademi given: April - family: Kiss given: Alex - family: Lepanto given: Luigi - family: Michalak given: Tracy - family: Shulman given: Harry - family: Volkening given: Andrew container-title: Journal of digital imaging id: Koff2009-gn title: Pan-canadian evaluation of irreversible compression ratios (\"lossy\" compression) for development of national guidelines type: article-journal --- ``` pandoc-3.1.3/test/command/biblatex-formatting.md0000644000000000000000000000065007346545000020035 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @article{item1, Title = {The Title: \textit{italics}, \textbf{bold}, \textsubscript{subscript}, \textsuperscript{superscript}, \textsc{small-caps}} } ^D --- nocite: "[@*]" references: - id: item1 title: "The title: *Italics*, **bold**, ~subscript~, ^superscript^, [small-caps]{.smallcaps}" title-short: The title type: article-journal --- ``` pandoc-3.1.3/test/command/biblatex-gaonkar-in.md0000644000000000000000000000250207346545000017707 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Gaonkar 2001) Gaonkar, Dilip Parameshwar. 2001. “On Alternative Modernities.” In *Alternative Modernities*, edited by Dilip Parameshwar Gaonkar, 1–23. Durham; London: Duke University Press. Formatted with pandoc and apa.csl, 2013-10-23: (Gaonkar, 2001) Gaonkar, D. P. (2001). On alternative modernities. In D. P. Gaonkar (Ed.), *Alternative modernities* (pp. 1–23). Durham; London: Duke University Press. } @InCollection{gaonkar:in, author = {Gaonkar, Dilip Parameshwar}, editor = {Gaonkar, Dilip Parameshwar}, title = {On Alternative Modernities}, date = 2001, booktitle = {Alternative Modernities}, publisher = {Duke University Press}, location = {Durham and London}, isbn = {0-822-32714-7}, pages = {1-23}, } ^D --- nocite: "[@*]" references: - author: - family: Gaonkar given: Dilip Parameshwar container-title: Alternative modernities editor: - family: Gaonkar given: Dilip Parameshwar id: "gaonkar:in" isbn: 0-822-32714-7 issued: 2001 page: 1-23 publisher: Duke University Press publisher-place: Durham; London title: On alternative modernities type: chapter --- ``` pandoc-3.1.3/test/command/biblatex-gaonkar.md0000644000000000000000000000242707346545000017311 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Gaonkar 2001) Gaonkar, Dilip Parameshwar, ed. 2001. *Alternative Modernities*. Durham; London: Duke University Press. Formatted with pandoc and apa.csl, 2013-10-23: (Gaonkar, 2001) Gaonkar, D. P. (Ed.). (2001). *Alternative modernities*. Durham; London: Duke University Press. } @Collection{gaonkar, editor = {Gaonkar, Dilip Parameshwar}, title = {Alternative Modernities}, date = 2001, publisher = {Duke University Press}, location = {Durham and London}, isbn = {0-822-32714-7}, hyphenation = {american}, annotation = {This is a collection entry. Note the format of the location field in the database file as well as the isbn field}, } ^D --- nocite: "[@*]" references: - annote: This is a collection entry. Note the format of the location field in the database file as well as the isbn field editor: - family: Gaonkar given: Dilip Parameshwar id: gaonkar isbn: 0-822-32714-7 issued: 2001 language: en-US publisher: Duke University Press publisher-place: Durham; London title: Alternative modernities type: book --- ``` pandoc-3.1.3/test/command/biblatex-geer.md0000644000000000000000000000373207346545000016611 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Geer 1985) Geer, Ingrid de. 1985. “Earl, Saint, Bishop, Skald – and Music: The Orkney Earldom of the Twelfth Century. A Musicological Study.” PhD thesis, Uppsala: Uppsala Universitet. Formatted with pandoc and apa.csl, 2013-10-23: (Geer, 1985) Geer, I. de. (1985). *Earl, saint, bishop, skald – and music: The Orkney earldom of the twelfth century. A musicological study* (PhD thesis). Uppsala Universitet, Uppsala. } @Thesis{geer, author = {de Geer, Ingrid}, title = {Earl, Saint, Bishop, Skald~-- and Music}, type = {phdthesis}, institution = {Uppsala Universitet}, date = 1985, subtitle = {The {Orkney} Earldom of the Twelfth Century. {A} Musicological Study}, location = {Uppsala}, options = {useprefix=false}, hyphenation = {british}, annotation = {This is a typical thesis entry for a PhD thesis. Note the type field in the database file which uses a localization key. Also note the format of the printed name and compare the useprefix option in the options field as well as vangennep}, } ^D --- nocite: "[@*]" references: - annote: This is a typical thesis entry for a PhD thesis. Note the type field in the database file which uses a localization key. Also note the format of the printed name and compare the useprefix option in the options field as well as vangennep author: - dropping-particle: de family: Geer given: Ingrid genre: PhD thesis id: geer issued: 1985 language: en-GB publisher: Uppsala Universitet publisher-place: Uppsala title: "Earl, saint, bishop, skald -- and music: The Orkney earldom of the twelfth century. A musicological study" title-short: Earl, saint, bishop, skald -- and music type: thesis --- ``` pandoc-3.1.3/test/command/biblatex-gerhardt.md0000644000000000000000000000313407346545000017463 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Gerhardt 2000) Gerhardt, Michael J. 2000. *The Federal Appointments Process: A Constitutional and Historical Analysis*. Durham; London: Duke University Press. Formatted with pandoc and apa.csl, 2013-10-23: (Gerhardt, 2000) Gerhardt, M. J. (2000). *The federal appointments process: A constitutional and historical analysis*. Durham; London: Duke University Press. } @Book{gerhardt, author = {Gerhardt, Michael J.}, title = {The Federal Appointments Process}, date = 2000, publisher = {Duke University Press}, location = {Durham and London}, hyphenation = {american}, sorttitle = {Federal Appointments Process}, indextitle = {Federal Appointments Process, The}, subtitle = {A Constitutional and Historical Analysis}, shorttitle = {Federal Appointments Process}, annotation = {This is a book entry. Note the format of the location field as well as the sorttitle and indextitle fields}, } ^D --- nocite: "[@*]" references: - annote: This is a book entry. Note the format of the location field as well as the sorttitle and indextitle fields author: - family: Gerhardt given: Michael J. id: gerhardt issued: 2000 language: en-US publisher: Duke University Press publisher-place: Durham; London title: "The federal appointments process: A constitutional and historical analysis" title-short: Federal appointments process type: book --- ``` pandoc-3.1.3/test/command/biblatex-gillies.md0000644000000000000000000000323707346545000017317 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Gillies 1933) Gillies, Alexander. 1933. “Herder and the Preparation of Goethe’s Idea of World Literature.” *Publications of the English Goethe Society, New Series* 9: 46–67. Formatted with pandoc and apa.csl, 2013-10-23: (Gillies, 1933) Gillies, A. (1933). Herder and the preparation of Goethe’s idea of world literature. *Publications of the English Goethe Society, new series*, *9*, 46–67. NOTES: - biblio2yaml - "new series" is not pretty, but it’s the best we can do at the moment, given the limitations of CSL. } @Article{gillies, author = {Gillies, Alexander}, title = {Herder and the Preparation of {Goethe}'s Idea of World Literature}, journaltitle = {Publications of the English Goethe Society}, date = 1933, series = {newseries}, volume = 9, pages = {46-67}, hyphenation = {british}, annotation = {An article entry with a series and a volume field. Note that format of the series field in the database file}, } ^D --- nocite: "[@*]" references: - annote: An article entry with a series and a volume field. Note that format of the series field in the database file author: - family: Gillies given: Alexander collection-title: New series container-title: Publications of the English Goethe Society id: gillies issued: 1933 language: en-GB page: 46-67 title: Herder and the preparation of Goethe's idea of world literature type: article-journal volume: 9 --- ``` pandoc-3.1.3/test/command/biblatex-glashow.md0000644000000000000000000000161607346545000017332 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Glashow 1961) Glashow, Sheldon. 1961. “Partial Symmetries of Weak Interactions.” *Nucl. Phys.* 22: 579–588. Formatted with pandoc and apa.csl, 2013-10-23: (Glashow, 1961) Glashow, S. (1961). Partial symmetries of weak interactions. *Nucl. Phys.*, *22*, 579–588. } @Article{glashow, author = {Glashow, Sheldon}, title = {Partial Symmetries of Weak Interactions}, journaltitle = {Nucl.~Phys.}, date = 1961, volume = 22, pages = {579-588}, } ^D --- nocite: "[@*]" references: - author: - family: Glashow given: Sheldon container-title: Nucl. Phys. id: glashow issued: 1961 page: 579-588 title: Partial symmetries of weak interactions type: article-journal volume: 22 --- ``` pandoc-3.1.3/test/command/biblatex-gonzalez.md0000644000000000000000000000306607346545000017520 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Gonzalez 2001) Gonzalez, Ray. 2001. *The Ghost of John Wayne and Other Stories*. Tucson: The University of Arizona Press. Formatted with pandoc and apa.csl, 2013-10-23: (Gonzalez, 2001) Gonzalez, R. (2001). *The ghost of John Wayne and other stories*. Tucson: The University of Arizona Press. } @Book{gonzalez, author = {Gonzalez, Ray}, title = {The Ghost of {John Wayne} and Other Stories}, date = 2001, publisher = {The University of Arizona Press}, location = {Tucson}, isbn = {0-816-52066-6}, hyphenation = {american}, sorttitle = {Ghost of John Wayne and Other Stories}, indextitle = {Ghost of {John Wayne} and Other Stories, The}, shorttitle = {Ghost of {John Wayne}}, annotation = {A collection of short stories. This is a book entry. Note the sorttitle and indextitle fields in the database file. There's also an isbn field}, } ^D --- nocite: "[@*]" references: - annote: A collection of short stories. This is a book entry. Note the sorttitle and indextitle fields in the database file. There's also an isbn field author: - family: Gonzalez given: Ray id: gonzalez isbn: 0-816-52066-6 issued: 2001 language: en-US publisher: The University of Arizona Press publisher-place: Tucson title: The ghost of John Wayne and other stories title-short: Ghost of John Wayne type: book --- ``` pandoc-3.1.3/test/command/biblatex-hammond.md0000644000000000000000000000316707346545000017314 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Hammond 1997) Hammond, Christopher. 1997. *The Basics of Crystallography and Diffraction*. Oxford: International Union of Crystallography; Oxford University Press. Formatted with pandoc and apa.csl, 2013-10-23: (Hammond, 1997) Hammond, C. (1997). *The basics of crystallography and diffraction*. Oxford: International Union of Crystallography; Oxford University Press. } @Book{hammond, author = {Hammond, Christopher}, title = {The basics of crystallography and diffraction}, date = 1997, publisher = {International Union of Crystallography and Oxford University Press}, location = {Oxford}, hyphenation = {british}, sorttitle = {Basics of crystallography and diffraction}, indextitle = {Basics of crystallography and diffraction, The}, shorttitle = {Crystallography and diffraction}, annotation = {A book entry. Note the sorttitle and indextitle fields as well as the format of the publisher field}, } ^D --- nocite: "[@*]" references: - annote: A book entry. Note the sorttitle and indextitle fields as well as the format of the publisher field author: - family: Hammond given: Christopher id: hammond issued: 1997 language: en-GB publisher: International Union of Crystallography; Oxford University Press publisher-place: Oxford title: The basics of crystallography and diffraction title-short: Crystallography and diffraction type: book --- ``` pandoc-3.1.3/test/command/biblatex-herrmann.md0000644000000000000000000000337407346545000017503 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Herrmann et al. 2006) Herrmann, Wolfgang A., Karl Öfele, Sabine K. Schneider, Eberhardt Herdtweck, and Stephan D. Hoffmann. 2006. “A Carbocyclic Carbene as an Efficient Catalyst Ligand for C–C Coupling Reactions.” *Angew. Chem. Int. Ed.* 45 (23): 3859–3862. Formatted with pandoc and apa.csl, 2013-10-23: (Herrmann, Öfele, Schneider, Herdtweck, & Hoffmann, 2006) Herrmann, W. A., Öfele, K., Schneider, S. K., Herdtweck, E., & Hoffmann, S. D. (2006). A carbocyclic carbene as an efficient catalyst ligand for C–C coupling reactions. *Angew. Chem. Int. Ed.*, *45*(23), 3859–3862. } @string{ anch-ie = {Angew.~Chem. Int.~Ed.} } @Article{herrmann, author = {Herrmann, Wolfgang A. and {\"O}fele, Karl and Schneider, Sabine K. and Herdtweck, Eberhardt and Hoffmann, Stephan D.}, title = {A carbocyclic carbene as an efficient catalyst ligand for {C--C} coupling reactions}, journaltitle = anch-ie, date = 2006, volume = 45, number = 23, pages = {3859-3862}, indextitle = {Carbocyclic carbene as an efficient catalyst, A}, } ^D --- nocite: "[@*]" references: - author: - family: Herrmann given: Wolfgang A. - family: Öfele given: Karl - family: Schneider given: Sabine K. - family: Herdtweck given: Eberhardt - family: Hoffmann given: Stephan D. container-title: Angew. Chem. Int. Ed. id: herrmann issue: 23 issued: 2006 page: 3859-3862 title: A carbocyclic carbene as an efficient catalyst ligand for C--C coupling reactions type: article-journal volume: 45 --- ``` pandoc-3.1.3/test/command/biblatex-hyman.md0000644000000000000000000000415407346545000017002 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Hyman 1981) Hyman, Arthur. 1981. “Aristotle’s Theory of the Intellect and Its Interpretation by Averroes.” In *Studies in Aristotle*, edited by Dominic J. O’Meara, 161–191. Studies in Philosophy and the History of Philosophy 9. Washington, D.C.: The Catholic University of America Press. Formatted with pandoc and apa.csl, 2013-10-23: (Hyman, 1981) Hyman, A. (1981). Aristotle’s theory of the intellect and its interpretation by Averroes. In D. J. O’Meara (Ed.), *Studies in Aristotle* (pp. 161–191). Washington, D.C.: The Catholic University of America Press. } @InCollection{hyman, author = {Arthur Hyman}, editor = {O'Meara, Dominic J.}, title = {Aristotle's Theory of the Intellect and its Interpretation by {Averroes}}, date = 1981, booktitle = {Studies in {Aristotle}}, series = {Studies in Philosophy and the History of Philosophy}, number = 9, publisher = {The Catholic University of America Press}, location = {Washington, D.C.}, pages = {161-191}, keywords = {secondary}, hyphenation = {american}, indextitle = {Aristotle's Theory of the Intellect}, shorttitle = {Aristotle's Theory of the Intellect}, annotation = {An incollection entry with a series and number field}, } ^D --- nocite: "[@*]" references: - annote: An incollection entry with a series and number field author: - family: Hyman given: Arthur collection-number: 9 collection-title: Studies in philosophy and the history of philosophy container-title: Studies in Aristotle editor: - family: O'Meara given: Dominic J. id: hyman issued: 1981 keyword: secondary language: en-US page: 161-191 publisher: The Catholic University of America Press publisher-place: Washington, D.C. title: Aristotle's theory of the intellect and its interpretation by Averroes title-short: Aristotle's theory of the intellect type: chapter --- ``` pandoc-3.1.3/test/command/biblatex-iliad.md0000644000000000000000000000315007346545000016743 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Homer 2004) Homer. 2004. *Die Ilias*. Translated by Wolfgang Schadewaldt. 3rd ed. Düsseldorf; Zürich: Artemis & Winkler. Formatted with pandoc and apa.csl, 2013-10-23: (Homer, 2004) Homer. (2004). *Die Ilias*. (W. Schadewaldt, trans.) (3rd ed.). Düsseldorf; Zürich: Artemis & Winkler. } @Book{iliad, author = {Homer}, title = {Die Ilias}, date = 2004, translator = {Schadewaldt, Wolfgang}, introduction = {Latacz, Joachim}, edition = 3, publisher = {Artemis \& Winkler}, location = {D{\"u}sseldorf and Z{\"u}rich}, hyphenation = {german}, sorttitle = {Ilias}, indextitle = {Ilias, Die}, shorttitle = {Ilias}, annotation = {A German translation of the \emph{Iliad}. Note the translator and introduction fields and the format of the location field in the database file. Also note the sorttitle and indextitle fields}, } ^D --- nocite: "[@*]" references: - annote: A German translation of the *Iliad*. Note the translator and introduction fields and the format of the location field in the database file. Also note the sorttitle and indextitle fields author: - family: Homer edition: 3 id: iliad issued: 2004 language: de-DE publisher: Artemis & Winkler publisher-place: Düsseldorf; Zürich title: Die Ilias title-short: Ilias translator: - family: Schadewaldt given: Wolfgang type: book --- ``` pandoc-3.1.3/test/command/biblatex-inbook-title-booktitle-maintitle-series-2.md0000644000000000000000000000201507346545000025665 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @inbook{item1, Author = {Author, Al}, Bookauthor = {Bookauthor, Bob}, Booksubtitle = {Booksubtitle}, Booktitle = {Booktitle}, Booktitleaddon = {Booktitleaddon}, Date = {2011}, Hyphenation = {french}, Location = {Location}, Mainsubtitle = {Mainsubtitle}, Maintitle = {Maintitle}, Maintitleaddon = {Maintitleaddon}, Number = {3}, Publisher = {Publisher}, Series = {Series}, Subtitle = {Subtitle}, Title = {Title of the ``inbook'' Entry}, Titleaddon = {Titleaddon}, Volume = {4}} ^D --- nocite: "[@*]" references: - author: - family: Author given: Al collection-number: 3 collection-title: Series container-author: - family: Bookauthor given: Bob container-title: "Maintitle: Mainsubtitle. Maintitleaddon" id: item1 issued: 2011 language: fr-FR publisher: Publisher publisher-place: Location title: "Title of the \"inbook\" Entry: Subtitle. Titleaddon" type: chapter volume: 4 volume-title: "Booktitle: Booksubtitle. Booktitleaddon" --- ``` pandoc-3.1.3/test/command/biblatex-inbook-title-booktitle-maintitle-series.md0000644000000000000000000000166207346545000025535 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @inbook{item1, Author = {Author, Al}, Booksubtitle = {Booksubtitle}, Booktitle = {Booktitle}, Booktitleaddon = {Booktitleaddon}, Date = {2011}, Hyphenation = {french}, Location = {Location}, Mainsubtitle = {Mainsubtitle}, Maintitle = {Maintitle}, Maintitleaddon = {Maintitleaddon}, Number = {3}, Publisher = {Publisher}, Series = {Series}, Subtitle = {Subtitle}, Title = {Title of the ``inbook'' Entry}, Titleaddon = {Titleaddon}, Volume = {4}} ^D --- nocite: "[@*]" references: - author: - family: Author given: Al collection-number: 3 collection-title: Series container-title: "Maintitle: Mainsubtitle. Maintitleaddon" id: item1 issued: 2011 language: fr-FR publisher: Publisher publisher-place: Location title: "Title of the \"inbook\" Entry: Subtitle. Titleaddon" type: chapter volume: 4 volume-title: "Booktitle: Booksubtitle. Booktitleaddon" --- ``` pandoc-3.1.3/test/command/biblatex-inbook.md0000644000000000000000000001267607346545000017157 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ adapted from http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/examples/biblatex-examples.bib TODO / citeproc: in biblatex "inbook" entries, citeproc should suppress bookauthor = CSL container-author if identical with author. -- See annotation in kant:kpv. } @string{dtv = {Deutscher Taschenbuch-Verlag}} @inbook{kant:kpv, Annotation = {An edition of Kant's \emph{Collected Works}, volume five. This is an inbook entry which explicitly refers to the \emph{Critique of Practical Reason} only, not to the entire fifth volume. Note the author and bookauthor fields in the database file. By default, the bookauthor is omitted if the values of the author and bookauthor fields are identical}, Author = {Kant, Immanuel}, Bookauthor = {Kant, Immanuel}, Booktitle = {Kritik der praktischen Vernunft. Kritik der Urtheilskraft}, Date = 1968, Hyphenation = {german}, Location = {Berlin}, Maintitle = {Kants Werke. Akademie Textausgabe}, Pages = {1-163}, Publisher = {Walter de Gruyter}, Shorthand = {KpV}, Shorttitle = {Kritik der praktischen Vernunft}, Title = {Kritik der praktischen Vernunft}, Volume = 5} @inbook{kant:ku, Annotation = {An edition of Kant's \emph{Collected Works}, volume five. This is an inbook entry which explicitly refers to the \emph{Critique of Judgment} only, not to the entire fifth volume}, Author = {Kant, Immanuel}, Bookauthor = {Kant, Immanuel}, Booktitle = {Kritik der praktischen Vernunft. Kritik der Urtheilskraft}, Date = 1968, Hyphenation = {german}, Location = {Berlin}, Maintitle = {Kants Werke. Akademie Textausgabe}, Pages = {165-485}, Publisher = {Walter de Gruyter}, Shorthand = {KU}, Title = {Kritik der Urtheilskraft}, Volume = 5} @inbook{nietzsche:historie, Annotation = {A single essay from the critical edition of Nietzsche's works. This inbook entry explicitly refers to an essay found in the first volume. Note the title, booktitle, and maintitle fields. Also note the sorttitle and sortyear fields. We want this entry to be listed after the entry referring to the entire first volume}, Author = {Nietzsche, Friedrich}, Bookauthor = {Nietzsche, Friedrich}, Booktitle = {Die Geburt der Tragödie. Unzeitgemäße Betrachtungen I--IV. Nachgelassene Schriften 1870--1973}, Date = 1988, Editor = {Colli, Giorgio and Montinari, Mazzino}, Hyphenation = {german}, Indexsorttitle = {Vom Nutzen und Nachtheil der Historie fur das Leben}, Indextitle = {Vom Nutzen und Nachtheil der Historie für das Leben}, Location = {München and Berlin and New York}, Mainsubtitle = {Kritische Studienausgabe}, Maintitle = {Sämtliche Werke}, Pages = {243-334}, Publisher = dtv # { and Walter de Gruyter}, Shorttitle = {Vom Nutzen und Nachtheil der Historie}, Sorttitle = {Werke-01-243}, Sortyear = {1988-2}, Subtitle = {Vom Nutzen und Nachtheil der Historie für das Leben}, Title = {Unzeitgemässe Betrachtungen. Zweites Stück}, Volume = 1} ^D --- nocite: "[@*]" references: - annote: An edition of Kant's *Collected Works*, volume five. This is an inbook entry which explicitly refers to the *Critique of Practical Reason* only, not to the entire fifth volume. Note the author and bookauthor fields in the database file. By default, the bookauthor is omitted if the values of the author and bookauthor fields are identical author: - family: Kant given: Immanuel container-author: - family: Kant given: Immanuel container-title: Kants Werke. Akademie Textausgabe id: "kant:kpv" issued: 1968 language: de-DE page: 1-163 publisher: Walter de Gruyter publisher-place: Berlin title: Kritik der praktischen Vernunft title-short: Kritik der praktischen Vernunft type: chapter volume: 5 volume-title: Kritik der praktischen Vernunft. Kritik der Urtheilskraft - annote: An edition of Kant's *Collected Works*, volume five. This is an inbook entry which explicitly refers to the *Critique of Judgment* only, not to the entire fifth volume author: - family: Kant given: Immanuel container-author: - family: Kant given: Immanuel container-title: Kants Werke. Akademie Textausgabe id: "kant:ku" issued: 1968 language: de-DE page: 165-485 publisher: Walter de Gruyter publisher-place: Berlin title: Kritik der Urtheilskraft type: chapter volume: 5 volume-title: Kritik der praktischen Vernunft. Kritik der Urtheilskraft - annote: A single essay from the critical edition of Nietzsche's works. This inbook entry explicitly refers to an essay found in the first volume. Note the title, booktitle, and maintitle fields. Also note the sorttitle and sortyear fields. We want this entry to be listed after the entry referring to the entire first volume author: - family: Nietzsche given: Friedrich container-author: - family: Nietzsche given: Friedrich container-title: "Sämtliche Werke: Kritische Studienausgabe" editor: - family: Colli given: Giorgio - family: Montinari given: Mazzino id: "nietzsche:historie" issued: 1988 language: de-DE page: 243-334 publisher: Deutscher Taschenbuch-Verlag; Walter de Gruyter publisher-place: München; Berlin; New York title: "Unzeitgemässe Betrachtungen. Zweites Stück: Vom Nutzen und Nachtheil der Historie für das Leben" title-short: Vom Nutzen und Nachtheil der Historie type: chapter volume: 1 volume-title: Die Geburt der Tragödie. Unzeitgemäße Betrachtungen I--IV. Nachgelassene Schriften 1870--1973 --- ``` pandoc-3.1.3/test/command/biblatex-incollection-2.md0000644000000000000000000000550107346545000020504 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{adapted from http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/examples/biblatex-examples.bib} @string{hup = {Harvard University Press}} @incollection{westfahl:space, Annotation = {A cross-referenced article from a collection. This is an incollection entry with a crossref field. Note the subtitle and indextitle fields}, Author = {Westfahl, Gary}, Crossref = {westfahl:frontier}, Hyphenation = {american}, Indextitle = {True Frontier, The}, Pages = {55-65}, Subtitle = {Confronting and Avoiding the Realities of Space in {American} Science Fiction Films}, Title = {The True Frontier}} @incollection{gaonkar:in, Author = {Gaonkar, Dilip Parameshwar}, Booktitle = {Alternative Modernities}, Date = 2001, Editor = {Gaonkar, Dilip Parameshwar}, Isbn = {0-822-32714-7}, Location = {Durham and London}, Pages = {1-23}, Publisher = {Duke University Press}, Title = {On Alternative Modernities}} @collection{westfahl:frontier, Annotation = {This is a collection entry. Note the format of the location field as well as the subtitle and booksubtitle fields}, Booksubtitle = {The Frontier Theme in Science Fiction}, Booktitle = {Space and Beyond}, Date = 2000, Editor = {Westfahl, Gary}, Hyphenation = {american}, Location = {Westport, Conn. and London}, Publisher = {Greenwood}, Subtitle = {The Frontier Theme in Science Fiction}, Title = {Space and Beyond}} ^D --- nocite: "[@*]" references: - annote: A cross-referenced article from a collection. This is an incollection entry with a crossref field. Note the subtitle and indextitle fields author: - family: Westfahl given: Gary container-title: "Space and beyond: The frontier theme in science fiction" editor: - family: Westfahl given: Gary id: "westfahl:space" issued: 2000 language: en-US page: 55-65 publisher: Greenwood publisher-place: Westport, Conn.; London title: "The true frontier: Confronting and avoiding the realities of space in American science fiction films" title-short: The true frontier type: chapter - author: - family: Gaonkar given: Dilip Parameshwar container-title: Alternative modernities editor: - family: Gaonkar given: Dilip Parameshwar id: "gaonkar:in" isbn: 0-822-32714-7 issued: 2001 page: 1-23 publisher: Duke University Press publisher-place: Durham; London title: On alternative modernities type: chapter - annote: This is a collection entry. Note the format of the location field as well as the subtitle and booksubtitle fields editor: - family: Westfahl given: Gary id: "westfahl:frontier" issued: 2000 language: en-US publisher: Greenwood publisher-place: Westport, Conn.; London title: "Space and beyond: The frontier theme in science fiction" title-short: Space and beyond type: book --- ``` pandoc-3.1.3/test/command/biblatex-incollection.md0000644000000000000000000001035007346545000020343 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{adapted from http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/examples/biblatex-examples.bib} @string{hup = {Harvard University Press}} @incollection{brandt, Annotation = {An incollection entry with a series and a number. Note the format of the printed name and compare the useprefix option in the options field as well as vangennep. Also note the indextitle, and indexsorttitle fields}, Author = {von Brandt, Ahasver and Hoffmann, Erich}, Booktitle = {Europa im Hoch- und Spätmittelalter}, Date = 1987, Editor = {Seibt, Ferdinand}, Hyphenation = {german}, Indexsorttitle = {Nordischen Lander von der Mitte des 11. Jahrhunderts bis 1448}, Indextitle = {Nordischen Länder von der Mitte des 11.~Jahrhunderts bis 1448, Die}, Location = {Stuttgart}, Number = 2, Options = {useprefix=false}, Pages = {884-917}, Publisher = {Klett-Cotta}, Series = {Handbuch der europäischen Geschichte}, Shorttitle = {Die nordischen Länder}, Title = {Die nordischen Länder von der Mitte des 11.~Jahrhunderts bis 1448}} @incollection{hyman, Annotation = {An incollection entry with a series and number field}, Author = {Hyman, Arthur}, Booktitle = {Studies in {Aristotle}}, Date = 1981, Editor = {O'Meara, Dominic J.}, Hyphenation = {american}, Indextitle = {Aristotle's Theory of the Intellect}, Keywords = {secondary}, Location = {Washington, D.C.}, Number = 9, Pages = {161-191}, Publisher = {The Catholic University of America Press}, Series = {Studies in Philosophy and the History of Philosophy}, Shorttitle = {Aristotle's Theory of the Intellect}, Title = {Aristotle's Theory of the Intellect and its Interpretation by {Averroes}}} @incollection{pines, Annotation = {A typical incollection entry. Note the indextitle field}, Author = {Pines, Shlomo}, Booktitle = {Studies in Medieval {Jewish} History and Literature}, Date = 1979, Editor = {Twersky, Isadore}, Hyphenation = {american}, Indextitle = {Limitations of Human Knowledge According to Al-Farabi, ibn Bajja, and Maimonides, The}, Keywords = {secondary}, Location = {Cambridge, Mass.}, Pages = {82-109}, Publisher = hup, Shorttitle = {Limitations of Human Knowledge}, Title = {The Limitations of Human Knowledge According to {Al-Farabi}, {ibn Bajja}, and {Maimonides}}} ^D --- nocite: "[@*]" references: - annote: An incollection entry with a series and a number. Note the format of the printed name and compare the useprefix option in the options field as well as vangennep. Also note the indextitle, and indexsorttitle fields author: - dropping-particle: von family: Brandt given: Ahasver - family: Hoffmann given: Erich collection-number: 2 collection-title: Handbuch der europäischen Geschichte container-title: Europa im Hoch- und Spätmittelalter editor: - family: Seibt given: Ferdinand id: brandt issued: 1987 language: de-DE page: 884-917 publisher: Klett-Cotta publisher-place: Stuttgart title: Die nordischen Länder von der Mitte des 11. Jahrhunderts bis 1448 title-short: Die nordischen Länder type: chapter - annote: An incollection entry with a series and number field author: - family: Hyman given: Arthur collection-number: 9 collection-title: Studies in philosophy and the history of philosophy container-title: Studies in Aristotle editor: - family: O'Meara given: Dominic J. id: hyman issued: 1981 keyword: secondary language: en-US page: 161-191 publisher: The Catholic University of America Press publisher-place: Washington, D.C. title: Aristotle's theory of the intellect and its interpretation by Averroes title-short: Aristotle's theory of the intellect type: chapter - annote: A typical incollection entry. Note the indextitle field author: - family: Pines given: Shlomo container-title: Studies in medieval Jewish history and literature editor: - family: Twersky given: Isadore id: pines issued: 1979 keyword: secondary language: en-US page: 82-109 publisher: Harvard University Press publisher-place: Cambridge, Mass. title: The limitations of human knowledge according to Al-Farabi, [ibn Bajja]{.nocase}, and Maimonides title-short: Limitations of human knowledge type: chapter --- ``` pandoc-3.1.3/test/command/biblatex-inproceedings.md0000644000000000000000000000540007346545000020512 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{adapted from http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/examples/biblatex-examples.bib} @string{cup = {Cambridge University Press}} @inproceedings{moraux, Annotation = {This is a typical inproceedings entry. Note the booksubtitle, shorttitle, indextitle, and indexsorttitle fields. Also note the eventdate field.}, Author = {Moraux, Paul}, Booktitle = {Aristotle on Mind and the Senses}, Booktitleaddon = {Proceedings of the Seventh Symposium Aristotelicum}, Date = 1979, Editor = {Lloyd, G. E. R. and Owen, G. E. L.}, Eventdate = 1975, Hyphenation = {french}, Indexsorttitle = {De Anima dans la tradition grecque}, Indextitle = {\emph{De Anima} dans la tradition grècque, Le}, Keywords = {secondary}, Location = {Cambridge}, Pages = {281-324}, Publisher = cup, Shorttitle = {\emph{De Anima} dans la tradition grècque}, Subtitle = {Quelques aspects de l'interpretation du traité, de Theophraste à Themistius}, Title = {Le \emph{De Anima} dans la tradition grècque}} @inproceedings{salam, Author = {Salam, Abdus}, Booksubtitle = {Relativistic groups and analyticity}, Booktitle = {Elementary particle theory}, Booktitleaddon = {Proceedings of the Eighth {Nobel} Symposium}, Date = 1968, Editor = {Svartholm, Nils}, Eventdate = {1968-05-19/1968-05-25}, Location = {Stockholm}, Pages = {367-377}, Publisher = {Almquist \& Wiksell}, Title = {Weak and Electromagnetic Interactions}, Venue = {Aspenäsgarden, Lerum}} ^D --- nocite: "[@*]" references: - annote: This is a typical inproceedings entry. Note the booksubtitle, shorttitle, indextitle, and indexsorttitle fields. Also note the eventdate field. author: - family: Moraux given: Paul container-title: Aristotle on Mind and the Senses. Proceedings of the Seventh Symposium Aristotelicum editor: - family: Lloyd given: G. E. R. - family: Owen given: G. E. L. event-date: 1975 id: moraux issued: 1979 keyword: secondary language: fr-FR page: 281-324 publisher: Cambridge University Press publisher-place: Cambridge title: "Le *De Anima* dans la tradition grècque: Quelques aspects de l'interpretation du traité, de Theophraste à Themistius" title-short: "*De Anima* dans la tradition grècque" type: paper-conference - author: - family: Salam given: Abdus container-title: "Elementary particle theory: Relativistic groups and analyticity. Proceedings of the eighth Nobel symposium" editor: - family: Svartholm given: Nils event-date: 1968-05-19/1968-05-25 event-place: Aspenäsgarden, Lerum id: salam issued: 1968 page: 367-377 publisher: Almquist & Wiksell publisher-place: Stockholm title: Weak and electromagnetic interactions type: paper-conference --- ``` pandoc-3.1.3/test/command/biblatex-issue288.md0000644000000000000000000000147007346545000017256 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @thesis{Leavitt_2016, location = {{Los Angeles, CA}}, title = {Upvoting the News: {{Breaking}} News Aggregation, Crowd Collaboration, and Algorithm-Driven Attention on Reddit.Com}, timestamp = {2017-04-06T14:13:22Z}, langid = {english}, institution = {{University of Southern California}}, type = {Dissertation}, author = {Leavitt, Alex}, date = {2016-08}, } ^D --- nocite: "[@*]" references: - author: - family: Leavitt given: Alex genre: Dissertation id: Leavitt_2016 issued: 2016-08 language: en-US publisher: University of Southern California publisher-place: Los Angeles, CA title: "Upvoting the news: Breaking news aggregation, crowd collaboration, and algorithm-driven attention on reddit.com" title-short: Upvoting the news type: thesis --- ``` pandoc-3.1.3/test/command/biblatex-itzhaki.md0000644000000000000000000000511707346545000017331 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Itzhaki 1996) Itzhaki, Nissan. 1996. “Some Remarks on ’t Hooft’s S-matrix for Black Holes” (version 1). March 11. Formatted with pandoc and apa.csl, 2013-10-23: (Itzhaki, 1996) Itzhaki, N. (1996, March 11). Some remarks on ’t Hooft’s S-matrix for black holes. NOTES: - biblio2yaml: - eprinttype = {arxiv}, eprint = {hep-th/9603067}, should be converted to a url: http://arxiv.org/abs/hep-th/9603067 (prefix http://arxiv.org/abs/ seems to work for all arxiv material) - citeproc: - obtaining correct case of "'t Hooft's" in title is possible but awkward: '{t Hooft's} works; {'t Hooft}'s or '{t Hooft}'s do not } @Online{itzhaki, author = {Itzhaki, Nissan}, title = {Some remarks on '{t Hooft's} {S}-matrix for black holes}, date = {1996-03-11}, version = 1, hyphenation = {american}, eprinttype = {arxiv}, eprint = {hep-th/9603067}, annotation = {An online reference from arXiv. Note the eprint and eprinttype fields. Also note that the arXiv reference is transformed into a clickable link if hyperref support has been enabled}, abstract = {We discuss the limitations of 't Hooft's proposal for the black hole S-matrix. We find that the validity of the S-matrix implies violation of the semi-classical approximation at scales large compared to the Planck scale. We also show that the effect of the centrifugal barrier on the S-matrix is crucial even for large transverse distances.}, } ^D --- nocite: "[@*]" references: - abstract: We discuss the limitations of 't Hooft's proposal for the black hole S-matrix. We find that the validity of the S-matrix implies violation of the semi-classical approximation at scales large compared to the Planck scale. We also show that the effect of the centrifugal barrier on the S-matrix is crucial even for large transverse distances. annote: An online reference from arXiv. Note the eprint and eprinttype fields. Also note that the arXiv reference is transformed into a clickable link if hyperref support has been enabled author: - family: Itzhaki given: Nissan id: itzhaki issued: 1996-03-11 language: en-US title: Some remarks on '[t Hooft's]{.nocase} S-matrix for black holes type: webpage url: "https://arxiv.org/abs/hep-th/9603067" version: 1 --- ``` pandoc-3.1.3/test/command/biblatex-jaffe.md0000644000000000000000000000426107346545000016740 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Jaffé 1885–1888) Jaffé, Philipp, ed. 1885–1888. *Regesta Pontificum Romanorum ab condita ecclesia ad annum post Christum natum \mcxcviii\*. 2nd ed. 2. Leipzig. Formatted with pandoc and apa.csl, 2013-10-23: (Jaffé, 1885–1888) Jaffé, P. (Ed.). (1885–1888). *Regesta Pontificum Romanorum ab condita ecclesia ad annum post Christum natum \mcxcviii\* (2nd ed., 1-2). Leipzig. NOTES: - biblatex conversion: - hyphenation = {latin} - citeproc: - "vols." is missing - works in Zotero - This does not show up in the tests from the citeproc test suite that currently fail. - "\ needs to be fixed. - maybe add markdown syntax ^^small caps^^ ? - in pandoc "plain" output, small caps could be converted to uppercase chars: "MCXCVIII" would definitely look better here. } @Collection{jaffe, editor = {Jaff{\'e}, Philipp}, title = {Regesta Pontificum Romanorum ab condita ecclesia ad annum post Christum natum \textsc{mcxcviii}}, date = {1885/1888}, editora = {Loewenfeld, Samuel and Kaltenbrunner, Ferdinand and Ewald, Paul}, edition = 2, volumes = 2, location = {Leipzig}, editoratype = {redactor}, indextitle = {Regesta Pontificum Romanorum}, shorttitle = {Regesta Pontificum Romanorum}, annotation = {A collection entry with edition and volumes fields. Note the editora and editoratype fields}, hyphenation = {latin}, } ^D --- nocite: "[@*]" references: - annote: A collection entry with edition and volumes fields. Note the editora and editoratype fields edition: 2 editor: - family: Jaffé given: Philipp id: jaffe issued: 1885/1888 language: la number-of-volumes: 2 publisher-place: Leipzig title: Regesta Pontificum Romanorum ab condita ecclesia ad annum post Christum natum [mcxcviii]{.smallcaps} title-short: Regesta Pontificum Romanorum type: book --- ``` pandoc-3.1.3/test/command/biblatex-jcg.md0000644000000000000000000000211207346545000016421 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (“Semantic 3D Media and Content” 2011) “Semantic 3D Media and Content.” 2011. *Computers and Graphics* 35 (4). Formatted with pandoc and apa.csl, 2013-10-23: (“Semantic 3D media and content,” 2011) Semantic 3D media and content. (2011). *Computers and Graphics*, *35*(4). NOTES: - output looks OK even if indistinguishable from article without page numbers } @Periodical{jcg, title = {Computers and Graphics}, year = 2011, issuetitle = {Semantic {3D} Media and Content}, volume = 35, number = 4, issn = {0097-8493}, annotation = {This is a periodical entry with an issn field.}, } ^D --- nocite: "[@*]" references: - annote: This is a periodical entry with an issn field. container-title: Computers and Graphics id: jcg issn: 0097-8493 issue: 4 issued: 2011 title: Semantic 3D media and content type: article-journal volume: 35 --- ``` pandoc-3.1.3/test/command/biblatex-kant-kpv.md0000644000000000000000000000513507346545000017421 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Kant 1968) Kant, Immanuel. 1968. “Kritik der praktischen Vernunft.” In *Kants Werke. Akademie Textausgabe*, by Immanuel Kant, 5:1–163. Berlin: Walter de Gruyter. Formatted with pandoc and apa.csl, 2013-10-23: (Kant, 1968) Kant, I. (1968). Kritik der praktischen Vernunft. In *Kants Werke. Akademie Textausgabe* (Vol. 5, pp. 1–163). Berlin: Walter de Gruyter. NOTES: - citeproc - support for the not yet official "volume-title" is missing - csl style file - if author and container-author are identical, container-author should be suppressed (apparently csl style file issue; zotero shows same behaviour) } @InBook{kant:kpv, title = {Kritik der praktischen Vernunft}, date = 1968, author = {Kant, Immanuel}, booktitle = {Kritik der praktischen Vernunft. Kritik der Urtheilskraft}, bookauthor = {Kant, Immanuel}, maintitle = {Kants Werke. Akademie Textausgabe}, volume = 5, publisher = {Walter de Gruyter}, location = {Berlin}, pages = {1-163}, shorthand = {KpV}, hyphenation = {german}, shorttitle = {Kritik der praktischen Vernunft}, annotation = {An edition of Kant's \emph{Collected Works}, volume five. This is an inbook entry which explicitly refers to the \emph{Critique of Practical Reason} only, not to the entire fifth volume. Note the author and bookauthor fields in the database file. By default, the bookauthor is omitted if the values of the author and bookauthor fields are identical}, } ^D --- nocite: "[@*]" references: - annote: An edition of Kant's *Collected Works*, volume five. This is an inbook entry which explicitly refers to the *Critique of Practical Reason* only, not to the entire fifth volume. Note the author and bookauthor fields in the database file. By default, the bookauthor is omitted if the values of the author and bookauthor fields are identical author: - family: Kant given: Immanuel container-author: - family: Kant given: Immanuel container-title: Kants Werke. Akademie Textausgabe id: "kant:kpv" issued: 1968 language: de-DE page: 1-163 publisher: Walter de Gruyter publisher-place: Berlin title: Kritik der praktischen Vernunft title-short: Kritik der praktischen Vernunft type: chapter volume: 5 volume-title: Kritik der praktischen Vernunft. Kritik der Urtheilskraft --- ``` pandoc-3.1.3/test/command/biblatex-kant-ku.md0000644000000000000000000000411407346545000017234 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Kant 1968) Kant, Immanuel. 1968. “Kritik der Urtheilskraft.” In *Kants Werke. Akademie Textausgabe*, by Immanuel Kant, 5:165–485. Berlin: Walter de Gruyter. Formatted with pandoc and apa.csl, 2013-10-23: (Kant, 1968) Kant, I. (1968). Kritik der Urtheilskraft. In *Kants Werke. Akademie Textausgabe* (Vol. 5, pp. 165–485). Berlin: Walter de Gruyter. NOTES: - citeproc - support for the not yet official "volume-title" is missing - CSL style file - if author and container-author are identical, container-author should be suppressed (apparently csl style file issue; zotero shows same behaviour) } @InBook{kant:ku, title = {Kritik der Urtheilskraft}, date = 1968, author = {Kant, Immanuel}, booktitle = {Kritik der praktischen Vernunft. Kritik der Urtheilskraft}, bookauthor = {Kant, Immanuel}, maintitle = {Kants Werke. Akademie Textausgabe}, volume = 5, publisher = {Walter de Gruyter}, location = {Berlin}, pages = {165-485}, shorthand = {KU}, hyphenation = {german}, annotation = {An edition of Kant's \emph{Collected Works}, volume five. This is an inbook entry which explicitly refers to the \emph{Critique of Judgment} only, not to the entire fifth volume}, } ^D --- nocite: "[@*]" references: - annote: An edition of Kant's *Collected Works*, volume five. This is an inbook entry which explicitly refers to the *Critique of Judgment* only, not to the entire fifth volume author: - family: Kant given: Immanuel container-author: - family: Kant given: Immanuel container-title: Kants Werke. Akademie Textausgabe id: "kant:ku" issued: 1968 language: de-DE page: 165-485 publisher: Walter de Gruyter publisher-place: Berlin title: Kritik der Urtheilskraft type: chapter volume: 5 volume-title: Kritik der praktischen Vernunft. Kritik der Urtheilskraft --- ``` pandoc-3.1.3/test/command/biblatex-kastenholz.md0000644000000000000000000001267307346545000020055 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Kastenholz and Hünenberger 2006) Kastenholz, M. A., and Philippe H. Hünenberger. 2006. “Computation of Methodologyindependent Ionic Solvation Free Energies from Molecular Simulations: I. the Electrostatic Potential in Molecular Liquids.” *J. Chem. Phys.* 124. doi:[10.1063/1.2172593](https://doi.org/10.1063/1.2172593 "10.1063/1.2172593"). Formatted with pandoc and apa.csl, 2013-10-23: (Kastenholz & Hünenberger, 2006) Kastenholz, M. A., & Hünenberger, P. H. (2006). Computation of methodologyindependent ionic solvation free energies from molecular simulations: I. the electrostatic potential in molecular liquids. *J. Chem. Phys.*, *124*. doi:[10.1063/1.2172593](https://doi.org/10.1063/1.2172593 "10.1063/1.2172593") NOTES: - biblio2xaml - fix conversion of "\hyphen” - the string "doi:" should not appear as part of the content of the "doi" field } @string{ jchph = {J.~Chem. Phys.} } @Article{kastenholz, author = {Kastenholz, M. A. and H{\"u}nenberger, Philippe H.}, title = {Computation of methodology\hyphen independent ionic solvation free energies from molecular simulations}, journaltitle = jchph, date = 2006, subtitle = {I. {The} electrostatic potential in molecular liquids}, volume = 124, eid = 124106, doi = {10.1063/1.2172593}, hyphenation = {american}, indextitle = {Computation of ionic solvation free energies}, annotation = {An article entry with an eid and a doi field. Note that the \textsc{doi} is transformed into a clickable link if hyperref support has been enabled}, abstract = {The computation of ionic solvation free energies from atomistic simulations is a surprisingly difficult problem that has found no satisfactory solution for more than 15 years. The reason is that the charging free energies evaluated from such simulations are affected by very large errors. One of these is related to the choice of a specific convention for summing up the contributions of solvent charges to the electrostatic potential in the ionic cavity, namely, on the basis of point charges within entire solvent molecules (M scheme) or on the basis of individual point charges (P scheme). The use of an inappropriate convention may lead to a charge-independent offset in the calculated potential, which depends on the details of the summation scheme, on the quadrupole-moment trace of the solvent molecule, and on the approximate form used to represent electrostatic interactions in the system. However, whether the M or P scheme (if any) represents the appropriate convention is still a matter of on-going debate. The goal of the present article is to settle this long-standing controversy by carefully analyzing (both analytically and numerically) the properties of the electrostatic potential in molecular liquids (and inside cavities within them).}, } ^D --- nocite: "[@*]" references: - abstract: The computation of ionic solvation free energies from atomistic simulations is a surprisingly difficult problem that has found no satisfactory solution for more than 15 years. The reason is that the charging free energies evaluated from such simulations are affected by very large errors. One of these is related to the choice of a specific convention for summing up the contributions of solvent charges to the electrostatic potential in the ionic cavity, namely, on the basis of point charges within entire solvent molecules (M scheme) or on the basis of individual point charges (P scheme). The use of an inappropriate convention may lead to a charge-independent offset in the calculated potential, which depends on the details of the summation scheme, on the quadrupole-moment trace of the solvent molecule, and on the approximate form used to represent electrostatic interactions in the system. However, whether the M or P scheme (if any) represents the appropriate convention is still a matter of on-going debate. The goal of the present article is to settle this long-standing controversy by carefully analyzing (both analytically and numerically) the properties of the electrostatic potential in molecular liquids (and inside cavities within them). annote: An article entry with an eid and a doi field. Note that the [doi]{.smallcaps} is transformed into a clickable link if hyperref support has been enabled author: - family: Kastenholz given: M. A. - family: Hünenberger given: Philippe H. container-title: J. Chem. Phys. doi: 10.1063/1.2172593 id: kastenholz issued: 2006 language: en-US title: "Computation of methodology-independent ionic solvation free energies from molecular simulations: I. The electrostatic potential in molecular liquids" title-short: Computation of methodology-independent ionic solvation free energies from molecular simulations type: article-journal volume: 124 --- ``` pandoc-3.1.3/test/command/biblatex-knuth-ct-a.md0000644000000000000000000000407007346545000017636 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Knuth 1984) Knuth, Donald E. 1984. *Computers & Typesetting*. Vol. A. Reading, Mass.: Addison-Wesley. Formatted with pandoc and apa.csl, 2013-10-23: (Knuth, 1984) Knuth, D. E. (1984). *Computers & typesetting* (Vol. A). Reading, Mass.: Addison-Wesley. NOTES: - volume-title currently not implemented by chicago-author-date.csl and apa.csl. } @Book{knuth:ct:a, author = {Knuth, Donald E.}, title = {The {\TeX} book}, date = 1984, maintitle = {Computers \& Typesetting}, volume = {A}, publisher = {Addison-Wesley}, location = {Reading, Mass.}, hyphenation = {american}, sortyear = {1984-1}, sorttitle = {Computers & Typesetting A}, indexsorttitle= {The TeXbook}, indextitle = {\protect\TeX book, The}, shorttitle = {\TeX book}, annotation = {The first volume of a five-volume book. Note the sorttitle and sortyear fields. We want this volume to be listed after the entry referring to the entire five-volume set. Also note the indextitle and indexsorttitle fields. Indexing packages that don't generate robust index entries require some control sequences to be protected from expansion}, } ^D --- nocite: "[@*]" references: - annote: The first volume of a five-volume book. Note the sorttitle and sortyear fields. We want this volume to be listed after the entry referring to the entire five-volume set. Also note the indextitle and indexsorttitle fields. Indexing packages that don't generate robust index entries require some control sequences to be protected from expansion author: - family: Knuth given: Donald E. id: "knuth:ct:a" issued: 1984 language: en-US publisher: Addison-Wesley publisher-place: Reading, Mass. title: Computers & typesetting type: book volume: A volume-title: The TeX book --- ``` pandoc-3.1.3/test/command/biblatex-knuth-ct-b.md0000644000000000000000000000301407346545000017634 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2015-03-08: (Knuth 1986) Knuth, Donald E. 1986. *Computers & Typesetting*. Vol. B. Reading, Mass.: Addison-Wesley. Formatted with pandoc and apa.csl, 2015-03-08: (Knuth, 1986) Knuth, D. E. (1986). *Computers & typesetting* (Vol. B). Reading, Mass.: Addison-Wesley. NOTES: - volume-title currently not implemented by chicago-author-date.csl and apa.csl. } @Book{knuth:ct:b, author = {Knuth, Donald E.}, title = {\TeX: {T}he Program}, date = 1986, maintitle = {Computers \& Typesetting}, volume = {B}, publisher = {Addison-Wesley}, location = {Reading, Mass.}, hyphenation = {american}, sortyear = {1986-1}, sorttitle = {Computers & Typesetting B}, indexsorttitle= {TeX: The Program}, shorttitle = {\TeX}, annotation = {The second volume of a five-volume book. Note the sorttitle and sortyear fields. Also note the indexsorttitle field}, } ^D --- nocite: "[@*]" references: - annote: The second volume of a five-volume book. Note the sorttitle and sortyear fields. Also note the indexsorttitle field author: - family: Knuth given: Donald E. id: "knuth:ct:b" issued: 1986 language: en-US publisher: Addison-Wesley publisher-place: Reading, Mass. title: Computers & typesetting title-short: TeX type: book volume: B volume-title: "TeX: The program" --- ``` pandoc-3.1.3/test/command/biblatex-knuth-ct-c.md0000644000000000000000000000276607346545000017652 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2015-03-08: (Knuth 1986) Knuth, Donald E. 1986. *Computers & Typesetting*. Vol. C. Reading, Mass.: Addison-Wesley. Formatted with pandoc and apa.csl, 2015-03-08: (Knuth, 1986) Knuth, D. E. (1986). *Computers & typesetting* (Vol. C). Reading, Mass.: Addison-Wesley. NOTES: - volume-title currently not implemented by chicago-author-date.csl and apa.csl. } @Book{knuth:ct:c, author = {Knuth, Donald E.}, title = {The {METAFONTbook}}, date = 1986, maintitle = {Computers \& Typesetting}, volume = {C}, publisher = {Addison-Wesley}, location = {Reading, Mass.}, hyphenation = {american}, sortyear = {1986-2}, sorttitle = {Computers & Typesetting C}, indextitle = {METAFONTbook, The}, shorttitle = {{METAFONTbook}}, annotation = {The third volume of a five-volume book. Note the sorttitle and sortyear fields as well as the indextitle field}, } ^D --- nocite: "[@*]" references: - annote: The third volume of a five-volume book. Note the sorttitle and sortyear fields as well as the indextitle field author: - family: Knuth given: Donald E. id: "knuth:ct:c" issued: 1986 language: en-US publisher: Addison-Wesley publisher-place: Reading, Mass. title: Computers & typesetting type: book volume: C volume-title: The METAFONTbook --- ``` pandoc-3.1.3/test/command/biblatex-knuth-ct-d.md0000644000000000000000000000306407346545000017643 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2015-03-08: (Knuth 1986) Knuth, Donald E. 1986. *Computers & Typesetting*. Vol. D. Reading, Mass.: Addison-Wesley. Formatted with pandoc and apa.csl, 2015-03-08: (Knuth, 1986) Knuth, D. E. (1986). *Computers & typesetting* (Vol. D). Reading, Mass.: Addison-Wesley. NOTES: - biblio2yaml - Should letters following a colon, such as the "T" in "{{METAFONT}: {T}he Program}" be protected by default? -- I'm not sure ... - volume-title currently not implemented by chicago-author-date.csl and apa.csl. } @Book{knuth:ct:d, author = {Knuth, Donald E.}, title = {{METAFONT}: {T}he Program}, date = 1986, maintitle = {Computers \& Typesetting}, volume = {D}, publisher = {Addison-Wesley}, location = {Reading, Mass.}, hyphenation = {american}, sortyear = {1986-3}, sorttitle = {Computers & Typesetting D}, shorttitle = {{METAFONT}}, annotation = {The fourth volume of a five-volume book. Note the sorttitle and sortyear fields}, } ^D --- nocite: "[@*]" references: - annote: The fourth volume of a five-volume book. Note the sorttitle and sortyear fields author: - family: Knuth given: Donald E. id: "knuth:ct:d" issued: 1986 language: en-US publisher: Addison-Wesley publisher-place: Reading, Mass. title: Computers & typesetting title-short: METAFONT type: book volume: D volume-title: "METAFONT: The program" --- ``` pandoc-3.1.3/test/command/biblatex-knuth-ct-e.md0000644000000000000000000000255307346545000017646 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2015-03-08: (Knuth 1986) Knuth, Donald E. 1986. *Computers & Typesetting*. Vol. E. Reading, Mass.: Addison-Wesley. Formatted with pandoc and apa.csl, 2015-03-08: (Knuth, 1986) Knuth, D. E. (1986). *Computers & typesetting* (Vol. E). Reading, Mass.: Addison-Wesley. NOTES: - volume-title currently not implemented by chicago-author-date.csl and apa.csl. } @Book{knuth:ct:e, author = {Knuth, Donald E.}, title = {Computer Modern Typefaces}, date = 1986, maintitle = {Computers \& Typesetting}, volume = {E}, publisher = {Addison-Wesley}, location = {Reading, Mass.}, hyphenation = {american}, sortyear = {1986-4}, sorttitle = {Computers & Typesetting E}, annotation = {The fifth volume of a five-volume book. Note the sorttitle and sortyear fields}, } ^D --- nocite: "[@*]" references: - annote: The fifth volume of a five-volume book. Note the sorttitle and sortyear fields author: - family: Knuth given: Donald E. id: "knuth:ct:e" issued: 1986 language: en-US publisher: Addison-Wesley publisher-place: Reading, Mass. title: Computers & typesetting type: book volume: E volume-title: Computer modern typefaces --- ``` pandoc-3.1.3/test/command/biblatex-knuth-ct-related.md0000644000000000000000000000314507346545000021040 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Knuth 1984–1986) Knuth, Donald E. 1984–1986. *Computers & Typesetting*. 5. Reading, Mass.: Addison-Wesley. Formatted with pandoc and apa.csl, 2013-10-23: (Knuth, 1984–1986) Knuth, D. E. (1984–1986). *Computers & typesetting* (1-5). Reading, Mass.: Addison-Wesley. NOTES: - biblio2yaml - related = {...}, relatedtype = {multivolume}, -- no counterpart in CSL - citeproc - term "vols." missing } @Book{knuth:ct:related, author = {Knuth, Donald E.}, title = {Computers \& Typesetting}, date = {1984/1986}, volumes = 5, publisher = {Addison-Wesley}, location = {Reading, Mass.}, hyphenation = {american}, sortyear = {1984-0}, sorttitle = {Computers & Typesetting}, indexsorttitle= {Computers & Typesetting}, related = {knuth:ct:a,knuth:ct:b,knuth:ct:c,knuth:ct:d,knuth:ct:e}, relatedtype = {multivolume}, annotation = {A five-volume book cited as a whole and related to its individual volumes. Note the related and relatedtype fields}, } ^D --- nocite: "[@*]" references: - annote: A five-volume book cited as a whole and related to its individual volumes. Note the related and relatedtype fields author: - family: Knuth given: Donald E. id: "knuth:ct:related" issued: 1984/1986 language: en-US number-of-volumes: 5 publisher: Addison-Wesley publisher-place: Reading, Mass. title: Computers & typesetting type: book --- ``` pandoc-3.1.3/test/command/biblatex-knuth-ct.md0000644000000000000000000000247607346545000017430 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Knuth 1984–1986) Knuth, Donald E. 1984–1986. *Computers & Typesetting*. 5. Reading, Mass.: Addison-Wesley. Formatted with pandoc and apa.csl, 2013-10-23: (Knuth, 1984–1986) Knuth, D. E. (1984–1986). *Computers & typesetting* (1-5). Reading, Mass.: Addison-Wesley. NOTES: - citeproc - term "vols." is missing } @Book{knuth:ct, author = {Knuth, Donald E.}, title = {Computers \& Typesetting}, date = {1984/1986}, volumes = 5, publisher = {Addison-Wesley}, location = {Reading, Mass.}, hyphenation = {american}, sortyear = {1984-0}, sorttitle = {Computers & Typesetting}, indexsorttitle= {Computers & Typesetting}, annotation = {A five-volume book cited as a whole. This is a book entry, note the volumes field}, } ^D --- nocite: "[@*]" references: - annote: A five-volume book cited as a whole. This is a book entry, note the volumes field author: - family: Knuth given: Donald E. id: "knuth:ct" issued: 1984/1986 language: en-US number-of-volumes: 5 publisher: Addison-Wesley publisher-place: Reading, Mass. title: Computers & typesetting type: book --- ``` pandoc-3.1.3/test/command/biblatex-kowalik.md0000644000000000000000000000357707346545000017337 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Kowalik and Isard 1995) Kowalik, F., and M. Isard. 1995. “Estimateur d’un défaut de fonctionnement d’un modulateur en quadrature et étage de modulation l’utilisant.” French patent request. Formatted with pandoc and apa.csl, 2013-10-23: (Kowalik & Isard, 1995) Kowalik, F., & Isard, M. (1995, January 11). Estimateur d’un défaut de fonctionnement d’un modulateur en quadrature et étage de modulation l’utilisant. French patent request. } @Patent{kowalik, author = {Kowalik, F. and Isard, M.}, title = {Estimateur d'un d{\'e}faut de fonctionnement d'un modulateur en quadrature et {\'e}tage de modulation l'utilisant}, number = 9500261, date = {1995-01-11}, type = {patreqfr}, hyphenation = {french}, indextitle = {Estimateur d'un d{\'e}faut de fonctionnement}, annotation = {This is a patent entry for a French patent request with a full date. The number is given in the number field. Note the format of the type and date fields in the database file. Compare almendro, laufenberg, and sorace}, } ^D --- nocite: "[@*]" references: - annote: This is a patent entry for a French patent request with a full date. The number is given in the number field. Note the format of the type and date fields in the database file. Compare almendro, laufenberg, and sorace author: - family: Kowalik given: F. - family: Isard given: M. genre: French patent request id: kowalik issued: 1995-01-11 language: fr-FR number: 9500261 title: Estimateur d'un défaut de fonctionnement d'un modulateur en quadrature et étage de modulation l'utilisant type: patent --- ``` pandoc-3.1.3/test/command/biblatex-kullback-related.md0000644000000000000000000000242007346545000021066 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Kullback 1997) Kullback, Solomon. 1997. *Information Theory and Statistics*. New York: Dover Publications. Formatted with pandoc and apa.csl, 2013-10-23: (Kullback, 1997) Kullback, S. (1997). *Information theory and statistics*. New York: Dover Publications. NOTES: - related = {kullback}, relatedtype = {origpubin}, -- not possible in CSL } @Book{kullback:related, author = {Kullback, Solomon}, title = {Information Theory and Statistics}, year = 1997, publisher = {Dover Publications}, location = {New York}, hyphenation = {american}, related = {kullback}, relatedtype = {origpubin}, annotation = {A reprint of the kullback entry. Note the format of the related and relatedtype fields}, } ^D --- nocite: "[@*]" references: - annote: A reprint of the kullback entry. Note the format of the related and relatedtype fields author: - family: Kullback given: Solomon id: "kullback:related" issued: 1997 language: en-US publisher: Dover Publications publisher-place: New York title: Information theory and statistics type: book --- ``` pandoc-3.1.3/test/command/biblatex-kullback-reprint.md0000644000000000000000000000307507346545000021140 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Kullback 1997) Kullback, Solomon. 1997. *Information Theory and Statistics*. New York: Dover Publications. Formatted with pandoc and apa.csl, 2013-10-23: (Kullback, 1997) Kullback, S. (1997). *Information theory and statistics*. New York: Dover Publications. NOTES: Formatted with chicago-author-date-TEST-20131018.csl (Kullback [1959] 1997) Kullback, Solomon. (1959) 1997. *Information Theory and Statistics*. New York: Dover Publications. } @Book{kullback:reprint, author = {Kullback, Solomon}, title = {Information Theory and Statistics}, year = 1997, publisher = {Dover Publications}, location = {New York}, origyear = 1959, origpublisher= {John Wiley \& Sons}, hyphenation = {american}, annotation = {A reprint of the kullback entry. Note the format of origyear and origpublisher. These fields are not used by the standard bibliography styles}, } ^D --- nocite: "[@*]" references: - annote: A reprint of the kullback entry. Note the format of origyear and origpublisher. These fields are not used by the standard bibliography styles author: - family: Kullback given: Solomon id: "kullback:reprint" issued: 1997 language: en-US original-date: 1959 original-publisher: John Wiley & Sons publisher: Dover Publications publisher-place: New York title: Information theory and statistics type: book --- ``` pandoc-3.1.3/test/command/biblatex-kullback.md0000644000000000000000000000161307346545000017453 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Kullback 1959) Kullback, Solomon. 1959. *Information Theory and Statistics*. New York: John Wiley & Sons. Formatted with pandoc and apa.csl, 2013-10-23: (Kullback, 1959) Kullback, S. (1959). *Information theory and statistics*. New York: John Wiley & Sons. } @Book{kullback, author = {Kullback, Solomon}, title = {Information Theory and Statistics}, year = 1959, publisher = {John Wiley \& Sons}, location = {New York}, hyphenation = {american}, } ^D --- nocite: "[@*]" references: - author: - family: Kullback given: Solomon id: kullback issued: 1959 language: en-US publisher: John Wiley & Sons publisher-place: New York title: Information theory and statistics type: book --- ``` pandoc-3.1.3/test/command/biblatex-laufenberg.md0000644000000000000000000000665107346545000020004 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Laufenberg et al. 2006) Laufenberg, Xaver, Dominique Eynius, Helmut Suelzle, Stephan Usbeck, Matthias Spaeth, Miriam Neuser-Hoffmann, Christian Myrzik, et al. 2006. “Elektrische Einrichtung und Betriebsverfahren.” European patent. Formatted with pandoc and apa.csl, 2013-10-23: (Laufenberg et al., 2006) Laufenberg, X., Eynius, D., Suelzle, H., Usbeck, S., Spaeth, M., Neuser-Hoffmann, M., … Ebner, N. (2006, September 13). Elektrische Einrichtung und Betriebsverfahren. European patent. NOTES: - biblio2yaml - Is there any equivalent of "holder" in CSL? } @Patent{laufenberg, author = {Laufenberg, Xaver and Eynius, Dominique and Suelzle, Helmut and Usbeck, Stephan and Spaeth, Matthias and Neuser-Hoffmann, Miriam and Myrzik, Christian and Schmid, Manfred and Nietfeld, Franz and Thiel, Alexander and Braun, Harald and Ebner, Norbert}, title = {Elektrische Einrichtung und Betriebsverfahren}, number = 1700367, date = {2006-09-13}, holder = {{Robert Bosch GmbH} and {Daimler Chrysler AG} and {Bayerische Motoren Werke AG}}, type = {patenteu}, hyphenation = {german}, annotation = {This is a patent entry with a holder field. Note the format of the type and location fields in the database file. Compare almendro, sorace, and kowalik}, abstract = {The invention relates to an electric device comprising a generator, in particular for use in the vehicle electric system of a motor vehicle and a controller for controlling the generator voltage. The device is equipped with a control zone, in which the voltage is controlled and zones, in which the torque is controlled. The invention also relates to methods for operating a device of this type.}, file = {http://v3.espacenet.com/textdoc?IDX=EP1700367}, } ^D --- nocite: "[@*]" references: - abstract: The invention relates to an electric device comprising a generator, in particular for use in the vehicle electric system of a motor vehicle and a controller for controlling the generator voltage. The device is equipped with a control zone, in which the voltage is controlled and zones, in which the torque is controlled. The invention also relates to methods for operating a device of this type. annote: This is a patent entry with a holder field. Note the format of the type and location fields in the database file. Compare almendro, sorace, and kowalik author: - family: Laufenberg given: Xaver - family: Eynius given: Dominique - family: Suelzle given: Helmut - family: Usbeck given: Stephan - family: Spaeth given: Matthias - family: Neuser-Hoffmann given: Miriam - family: Myrzik given: Christian - family: Schmid given: Manfred - family: Nietfeld given: Franz - family: Thiel given: Alexander - family: Braun given: Harald - family: Ebner given: Norbert genre: European patent id: laufenberg issued: 2006-09-13 language: de-DE number: 1700367 title: Elektrische Einrichtung und Betriebsverfahren type: patent --- ``` pandoc-3.1.3/test/command/biblatex-loh.md0000644000000000000000000000310207346545000016440 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Loh 1992) Loh, Nin C. 1992. “High-resolution Micromachined Interferometric Accelerometer.” Master’s thesis, Cambridge, Mass.: Massachusetts Institute of Technology. Formatted with pandoc and apa.csl, 2013-10-23: (Loh, 1992) Loh, N. C. (1992). *High-resolution micromachined interferometric accelerometer* (Master’s thesis). Massachusetts Institute of Technology, Cambridge, Mass. NOTES: - biblio2yaml - At some point, actual localization of "localization keys" will have to be implemented } @Thesis{loh, author = {Loh, Nin C.}, title = {High-Resolution Micromachined Interferometric Accelerometer}, type = {mathesis}, institution = {Massachusetts Institute of Technology}, date = 1992, location = {Cambridge, Mass.}, hyphenation = {american}, annotation = {This is a typical thesis entry for an MA thesis. Note the type field in the database file which uses a localization key}, } ^D --- nocite: "[@*]" references: - annote: This is a typical thesis entry for an MA thesis. Note the type field in the database file which uses a localization key author: - family: Loh given: Nin C. genre: Master's thesis id: loh issued: 1992 language: en-US publisher: Massachusetts Institute of Technology publisher-place: Cambridge, Mass. title: High-resolution micromachined interferometric accelerometer type: thesis --- ``` pandoc-3.1.3/test/command/biblatex-malinowski.md0000644000000000000000000000335007346545000020040 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Malinowski 1972) Malinowski, Bronisław. 1972. *Argonauts of the Western Pacific: An Account of Native Enterprise and Adventure in the Archipelagoes of Melanesian New Guinea*. 8th ed. London: Routledge and Kegan Paul. Formatted with pandoc and apa.csl, 2013-10-23: (Malinowski, 1972) Malinowski, B. (1972). *Argonauts of the Western Pacific: An account of native enterprise and adventure in the Archipelagoes of Melanesian New Guinea* (8th ed.). London: Routledge and Kegan Paul. } @Book{malinowski, author = {Malinowski, Bronis{\l}aw}, title = {Argonauts of the {Western Pacific}}, date = 1972, edition = 8, publisher = {Routledge {and} Kegan Paul}, location = {London}, hyphenation = {british}, subtitle = {An account of native enterprise and adventure in the {Archipelagoes of Melanesian New Guinea}}, shorttitle = {Argonauts}, annotation = {This is a book entry. Note the format of the publisher and edition fields as well as the subtitle field}, } ^D --- nocite: "[@*]" references: - annote: This is a book entry. Note the format of the publisher and edition fields as well as the subtitle field author: - family: Malinowski given: Bronisław edition: 8 id: malinowski issued: 1972 language: en-GB publisher: Routledge and Kegan Paul publisher-place: London title: "Argonauts of the Western Pacific: An account of native enterprise and adventure in the [Archipelagoes of Melanesian New Guinea]{.nocase}" title-short: Argonauts type: book --- ``` pandoc-3.1.3/test/command/biblatex-manual.md0000644000000000000000000000360107346545000017137 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{adapted from http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/examples/biblatex-examples.bib} @Manual{cms, title = {The {Chicago} Manual of Style}, date = 2003, subtitle = {The Essential Guide for Writers, Editors, and Publishers}, edition = 15, publisher = {University of Chicago Press}, location = {Chicago, Ill.}, isbn = {0-226-10403-6}, label = {CMS}, hyphenation = {american}, sorttitle = {Chicago Manual of Style}, indextitle = {Chicago Manual of Style, The}, shorttitle = {Chicago Manual of Style}, annotation = {This is a manual entry without an author or editor. Note the label field in the database file which is provided for author-year citation styles. Also note the sorttitle and indextitle fields. By default, all entries without an author or editor are alphabetized by title but we want this entry to be alphabetized under \enquote*{C} rather than \enquote*{T}. There's also an isbn field}, } ^D --- nocite: "[@*]" references: - annote: This is a manual entry without an author or editor. Note the label field in the database file which is provided for author-year citation styles. Also note the sorttitle and indextitle fields. By default, all entries without an author or editor are alphabetized by title but we want this entry to be alphabetized under 'C' rather than 'T'. There's also an isbn field edition: 15 id: cms isbn: 0-226-10403-6 issued: 2003 language: en-US publisher: University of Chicago Press publisher-place: Chicago, Ill. title: "The Chicago manual of style: The essential guide for writers, editors, and publishers" title-short: Chicago manual of style type: book --- ``` pandoc-3.1.3/test/command/biblatex-markey.md0000644000000000000000000000307107346545000017153 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Markey 2005) Markey, Nicolas. 2005. “Tame the BeaST: The B to X of BibTeX” (version 1.3). October 16. . Formatted with pandoc and apa.csl, 2013-10-23: (Markey, 2005) Markey, N. (2005, October 16). Tame the BeaST: The B to X of BibTeX. Retrieved October 01, 2006, from } @Online{markey, author = {Markey, Nicolas}, title = {Tame the {BeaST}}, date = {2005-10-16}, url = {http://tug.ctan.org/tex-archive/info/bibtex/tamethebeast/ttb_en.pdf}, subtitle = {The {B} to {X} of {BibTeX}}, version = {1.3}, urldate = {2006-10-01}, hyphenation = {american}, sorttitle = {Tame the Beast}, annotation = {An online entry for a tutorial. Note the format of the date field (yyyy-mm-dd) in the database file.}, } ^D --- nocite: "[@*]" references: - accessed: 2006-10-01 annote: An online entry for a tutorial. Note the format of the date field (yyyy-mm-dd) in the database file. author: - family: Markey given: Nicolas id: markey issued: 2005-10-16 language: en-US title: "Tame the BeaST: The B to X of BibTeX" title-short: Tame the BeaST type: webpage url: "http://tug.ctan.org/tex-archive/info/bibtex/tamethebeast/ttb_en.pdf" version: 1.3 --- ``` pandoc-3.1.3/test/command/biblatex-maron.md0000644000000000000000000000320607346545000016777 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Maron 2000) Maron, Monika. 2000. *Animal Triste*. Translated by Brigitte Goldstein. Lincoln: University of Nebraska Press. Formatted with pandoc and apa.csl, 2013-10-23: (Maron, 2000) Maron, M. (2000). *Animal triste*. (B. Goldstein, Trans.). Lincoln: University of Nebraska Press. NOTES: - origlanguage concatenated with translator, e.g. “translated from the German by …” not possible in CSL } @Book{maron, author = {Maron, Monika}, title = {Animal Triste}, date = 2000, translator = {Brigitte Goldstein}, origlanguage = {german}, publisher = {University of Nebraska Press}, location = {Lincoln}, hyphenation = {american}, shorttitle = {Animal Triste}, annotation = {An English translation of a German novel with a French title. In other words: a book entry with a translator field. Note the origlanguage field which is concatenated with the translator}, } ^D --- nocite: "[@*]" references: - annote: "An English translation of a German novel with a French title. In other words: a book entry with a translator field. Note the origlanguage field which is concatenated with the translator" author: - family: Maron given: Monika id: maron issued: 2000 language: en-US publisher: University of Nebraska Press publisher-place: Lincoln title: Animal triste title-short: Animal triste translator: - family: Goldstein given: Brigitte type: book --- ``` pandoc-3.1.3/test/command/biblatex-massa.md0000644000000000000000000000171407346545000016771 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Massa 2004) Massa, Werner. 2004. *Crystal Structure Determination*. 2nd ed. Berlin: Spinger. Formatted with pandoc and apa.csl, 2013-10-23: (Massa, 2004) Massa, W. (2004). *Crystal structure determination* (2nd ed.). Berlin: Spinger. } @Book{massa, author = {Werner Massa}, title = {Crystal structure determination}, date = 2004, edition = 2, publisher = {Spinger}, location = {Berlin}, hyphenation = {british}, annotation = {A book entry with an edition field}, } ^D --- nocite: "[@*]" references: - annote: A book entry with an edition field author: - family: Massa given: Werner edition: 2 id: massa issued: 2004 language: en-GB publisher: Spinger publisher-place: Berlin title: Crystal structure determination type: book --- ``` pandoc-3.1.3/test/command/biblatex-moore-related.md0000644000000000000000000000262207346545000020423 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Moore 1998) Moore, Gordon E. 1998. “Cramming More Components onto Integrated Circuits.” *Proceedings of the IEEE* 86 (1): 82–85. Formatted with pandoc and apa.csl, 2013-10-23: (Moore, 1998) Moore, G. E. (1998). Cramming more components onto integrated circuits. *Proceedings of the IEEE*, *86*(1), 82–85. NOTES: - "related = {moore}, relatedtype = {reprintfrom}," – no equivalent implemented in CSL } @Article{moore:related, author = {Moore, Gordon E.}, title = {Cramming more components onto integrated circuits}, journaltitle = {Proceedings of the {IEEE}}, year = 1998, volume = 86, number = 1, pages = {82-85}, hyphenation = {american}, related = {moore}, relatedtype = {reprintfrom}, annotation = {A reprint of Moore's law. Note the related and relatedtype fields}, } ^D --- nocite: "[@*]" references: - annote: A reprint of Moore's law. Note the related and relatedtype fields author: - family: Moore given: Gordon E. container-title: Proceedings of the IEEE id: "moore:related" issue: 1 issued: 1998 language: en-US page: 82-85 title: Cramming more components onto integrated circuits type: article-journal volume: 86 --- ``` pandoc-3.1.3/test/command/biblatex-moore.md0000644000000000000000000000200207346545000016775 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Moore 1965) Moore, Gordon E. 1965. “Cramming More Components onto Integrated Circuits.” *Electronics* 38 (8): 114–117. Formatted with pandoc and apa.csl, 2013-10-23: (Moore, 1965) Moore, G. E. (1965). Cramming more components onto integrated circuits. *Electronics*, *38*(8), 114–117. } @Article{moore, author = {Moore, Gordon E.}, title = {Cramming more components onto integrated circuits}, journaltitle = {Electronics}, year = 1965, volume = 38, number = 8, pages = {114-117}, hyphenation = {american}, } ^D --- nocite: "[@*]" references: - author: - family: Moore given: Gordon E. container-title: Electronics id: moore issue: 8 issued: 1965 language: en-US page: 114-117 title: Cramming more components onto integrated circuits type: article-journal volume: 38 --- ``` pandoc-3.1.3/test/command/biblatex-moraux.md0000644000000000000000000000562107346545000017201 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Moraux 1979) Moraux, Paul. 1979. “Le *De Anima* dans la tradition grècque: Quelques aspects de l’interpretation du traité, de Theophraste à Themistius.” In *Aristotle on Mind and the Senses. Proceedings of the Seventh Symposium Aristotelicum*, edited by G. E. R. Lloyd and G. E. L. Owen, 281–324. Cambridge: Cambridge University Press. Formatted with pandoc and apa.csl, 2013-10-23: (Moraux, 1979) Moraux, P. (1979). Le *De Anima* dans la tradition grècque: Quelques aspects de l’interpretation du traité, de Theophraste à Themistius. In G. E. R. Lloyd & G. E. L. Owen (eds.), *Aristotle on Mind and the Senses. Proceedings of the Seventh Symposium Aristotelicum* (pp. 281–324). Cambridge: Cambridge University Press. NOTES: - Since case (conversion) can only be specified per entry, not per field, for apa.csl the case of container-title would have to be adjusted manually. } @string{ cup = {Cambridge University Press} } @InProceedings{moraux, author = {Moraux, Paul}, editor = {Lloyd, G. E. R. and Owen, G. E. L.}, title = {Le \emph{De Anima} dans la tradition gr{\`e}cque}, date = 1979, booktitle = {Aristotle on Mind and the Senses}, subtitle = {Quelques aspects de l'interpretation du trait{\'e}, de Theophraste {\`a} Themistius}, booktitleaddon= {Proceedings of the Seventh Symposium Aristotelicum}, eventdate = 1975, publisher = cup, location = {Cambridge}, pages = {281-324}, keywords = {secondary}, hyphenation = {french}, indexsorttitle= {De Anima dans la tradition grecque}, indextitle = {\emph{De Anima} dans la tradition gr{\`e}cque, Le}, shorttitle = {\emph{De Anima} dans la tradition gr{\`e}cque}, annotation = {This is a typical inproceedings entry. Note the booksubtitle, shorttitle, indextitle, and indexsorttitle fields. Also note the eventdate field.}, } ^D --- nocite: "[@*]" references: - annote: This is a typical inproceedings entry. Note the booksubtitle, shorttitle, indextitle, and indexsorttitle fields. Also note the eventdate field. author: - family: Moraux given: Paul container-title: Aristotle on Mind and the Senses. Proceedings of the Seventh Symposium Aristotelicum editor: - family: Lloyd given: G. E. R. - family: Owen given: G. E. L. event-date: 1975 id: moraux issued: 1979 keyword: secondary language: fr-FR page: 281-324 publisher: Cambridge University Press publisher-place: Cambridge title: "Le *De Anima* dans la tradition grècque: Quelques aspects de l'interpretation du traité, de Theophraste à Themistius" title-short: "*De Anima* dans la tradition grècque" type: paper-conference --- ``` pandoc-3.1.3/test/command/biblatex-murray.md0000644000000000000000000000577507346545000017217 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Hostetler et al. 1998) Hostetler, Michael J., Julia E. Wingate, Chuan-Jian Zhong, Jay E. Harris, Richard W. Vachet, Michael R. Clark, J. David Londono, et al. 1998. “Alkanethiolate Gold Cluster Molecules with Core Diameters from 1.5 to 5.2 nm: Core and Monolayer Properties as a Function of Core Size.” *Langmuir* 14 (1): 17–30. Formatted with pandoc and apa.csl, 2013-10-23: (Hostetler et al., 1998) Hostetler, M. J., Wingate, J. E., Zhong, C.-J., Harris, J. E., Vachet, R. W., Clark, M. R., … Murray, R. W. (1998). Alkanethiolate gold cluster molecules with core diameters from 1.5 to 5.2 nm: Core and monolayer properties as a function of core size. *Langmuir*, *14*(1), 17–30. } @Article{murray, author = {Hostetler, Michael J. and Wingate, Julia E. and Zhong, Chuan-Jian and Harris, Jay E. and Vachet, Richard W. and Clark, Michael R. and Londono, J. David and Green, Stephen J. and Stokes, Jennifer J. and Wignall, George D. and Glish, Gary L. and Porter, Marc D. and Evans, Neal D. and Murray, Royce W.}, title = {Alkanethiolate gold cluster molecules with core diameters from 1.5 to 5.2~{nm}}, journaltitle = {Langmuir}, date = 1998, subtitle = {Core and monolayer properties as a function of core size}, volume = 14, number = 1, pages = {17-30}, hyphenation = {american}, indextitle = {Alkanethiolate gold cluster molecules}, shorttitle = {Alkanethiolate gold cluster molecules}, annotation = {An article entry with \arabic{author} authors. By default, long author and editor lists are automatically truncated. This is configurable}, } ^D --- nocite: "[@*]" references: - annote: An article entry with `\arabic{author}`{=latex} authors. By default, long author and editor lists are automatically truncated. This is configurable author: - family: Hostetler given: Michael J. - family: Wingate given: Julia E. - family: Zhong given: Chuan-Jian - family: Harris given: Jay E. - family: Vachet given: Richard W. - family: Clark given: Michael R. - family: Londono given: J. David - family: Green given: Stephen J. - family: Stokes given: Jennifer J. - family: Wignall given: George D. - family: Glish given: Gary L. - family: Porter given: Marc D. - family: Evans given: Neal D. - family: Murray given: Royce W. container-title: Langmuir id: murray issue: 1 issued: 1998 language: en-US page: 17-30 title: "Alkanethiolate gold cluster molecules with core diameters from 1.5 to 5.2 [nm]{.nocase}: Core and monolayer properties as a function of core size" title-short: Alkanethiolate gold cluster molecules type: article-journal volume: 14 --- ``` pandoc-3.1.3/test/command/biblatex-nietzsche-historie.md0000644000000000000000000000674307346545000021514 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Nietzsche 1988) Nietzsche, Friedrich. 1988. “Unzeitgemässe Betrachtungen. Zweites Stück: Vom Nutzen und Nachtheil der Historie für das Leben.” In *Sämtliche Werke: Kritische Studienausgabe*, by Friedrich Nietzsche, edited by Giorgio Colli and Mazzino Montinari, 1:243–334. München; Berlin; New York: Deutscher Taschenbuch-Verlag; Walter de Gruyter. Formatted with pandoc and apa.csl, 2013-10-23: (Nietzsche, 1988) Nietzsche, F. (1988). Unzeitgemässe Betrachtungen. Zweites Stück: Vom Nutzen und Nachtheil der Historie für das Leben. In G. Colli & M. Montinari (eds.), *Sämtliche Werke: Kritische Studienausgabe* (Vol. 1, pp. 243–334). München; Berlin; New York: Deutscher Taschenbuch-Verlag; Walter de Gruyter. } @string{ dtv = {Deutscher Taschenbuch-Verlag} } @InBook{nietzsche:historie, title = {Unzeitgem{\"a}sse Betrachtungen. Zweites St{\"u}ck}, date = 1988, author = {Nietzsche, Friedrich}, booktitle = {Die Geburt der Trag{\"o}die. Unzeitgem{\"a}{\ss}e Betrachtungen I--IV. Nachgelassene Schriften 1870--1973}, bookauthor = {Nietzsche, Friedrich}, editor = {Colli, Giorgio and Montinari, Mazzino}, subtitle = {Vom Nutzen und Nachtheil der Historie f{\"u}r das Leben}, maintitle = {S{\"a}mtliche Werke}, mainsubtitle = {Kritische Studienausgabe}, volume = 1, publisher = dtv # { and Walter de Gruyter}, location = {M{\"u}nchen and Berlin and New York}, pages = {243-334}, hyphenation = {german}, sortyear = {1988-2}, sorttitle = {Werke-01-243}, indexsorttitle= {Vom Nutzen und Nachtheil der Historie fur das Leben}, indextitle = {Vom Nutzen und Nachtheil der Historie f{\"u}r das Leben}, shorttitle = {Vom Nutzen und Nachtheil der Historie}, annotation = {A single essay from the critical edition of Nietzsche's works. This inbook entry explicitly refers to an essay found in the first volume. Note the title, booktitle, and maintitle fields. Also note the sorttitle and sortyear fields. We want this entry to be listed after the entry referring to the entire first volume}, } ^D --- nocite: "[@*]" references: - annote: A single essay from the critical edition of Nietzsche's works. This inbook entry explicitly refers to an essay found in the first volume. Note the title, booktitle, and maintitle fields. Also note the sorttitle and sortyear fields. We want this entry to be listed after the entry referring to the entire first volume author: - family: Nietzsche given: Friedrich container-author: - family: Nietzsche given: Friedrich container-title: "Sämtliche Werke: Kritische Studienausgabe" editor: - family: Colli given: Giorgio - family: Montinari given: Mazzino id: "nietzsche:historie" issued: 1988 language: de-DE page: 243-334 publisher: Deutscher Taschenbuch-Verlag; Walter de Gruyter publisher-place: München; Berlin; New York title: "Unzeitgemässe Betrachtungen. Zweites Stück: Vom Nutzen und Nachtheil der Historie für das Leben" title-short: Vom Nutzen und Nachtheil der Historie type: chapter volume: 1 volume-title: Die Geburt der Tragödie. Unzeitgemäße Betrachtungen I--IV. Nachgelassene Schriften 1870--1973 --- ``` pandoc-3.1.3/test/command/biblatex-nietzsche-ksa.md0000644000000000000000000000511407346545000020433 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Nietzsche 1988) Nietzsche, Friedrich. 1988. *Sämtliche Werke: Kritische Studienausgabe*. Edited by Giorgio Colli and Mazzino Montinari. 2nd ed. 15. München; Berlin; New York: Deutscher Taschenbuch-Verlag; Walter de Gruyter. Formatted with pandoc and apa.csl, 2013-10-23: (Nietzsche, 1988) Nietzsche, F. (1988). *Sämtliche Werke: Kritische Studienausgabe*. (G. Colli & M. Montinari, eds.) (2nd ed., 1-15). München; Berlin; New York: Deutscher Taschenbuch-Verlag; Walter de Gruyter. NOTES: - biblio2yaml - term "vols." missing } @string{ dtv = {Deutscher Taschenbuch-Verlag} } @Book{nietzsche:ksa, author = {Nietzsche, Friedrich}, title = {S{\"a}mtliche Werke}, date = 1988, editor = {Colli, Giorgio and Montinari, Mazzino}, edition = 2, volumes = 15, publisher = dtv # { and Walter de Gruyter}, location = {M{\"u}nchen and Berlin and New York}, hyphenation = {german}, sortyear = {1988-0}, sorttitle = {Werke-00-000}, indexsorttitle= {Samtliche Werke}, subtitle = {Kritische Studienausgabe}, annotation = {The critical edition of Nietzsche's works. This is a book entry referring to a 15-volume work as a whole. Note the volumes field and the format of the publisher and location fields in the database file. Also note the sorttitle and sortyear fields which are used to fine-tune the sorting order of the bibliography. We want this item listed first in the bibliography}, } ^D --- nocite: "[@*]" references: - annote: The critical edition of Nietzsche's works. This is a book entry referring to a 15-volume work as a whole. Note the volumes field and the format of the publisher and location fields in the database file. Also note the sorttitle and sortyear fields which are used to fine-tune the sorting order of the bibliography. We want this item listed first in the bibliography author: - family: Nietzsche given: Friedrich edition: 2 editor: - family: Colli given: Giorgio - family: Montinari given: Mazzino id: "nietzsche:ksa" issued: 1988 language: de-DE number-of-volumes: 15 publisher: Deutscher Taschenbuch-Verlag; Walter de Gruyter publisher-place: München; Berlin; New York title: "Sämtliche Werke: Kritische Studienausgabe" title-short: Sämtliche Werke type: book --- ``` pandoc-3.1.3/test/command/biblatex-nietzsche-ksa1.md0000644000000000000000000000553607346545000020524 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2015-03-08: (Nietzsche 1988) Nietzsche, Friedrich. 1988. *Sämtliche Werke: Kritische Studienausgabe*. Edited by Giorgio Colli and Mazzino Montinari. 2nd ed. Vol. 1. München; Berlin; New York: Deutscher Taschenbuch-Verlag; Walter de Gruyter. Formatted with pandoc and apa.csl, 2015-03-08: (Nietzsche, 1988) Nietzsche, F. (1988). *Sämtliche Werke: Kritische Studienausgabe*. (G. Colli & M. Montinari, eds., F. Nietzsche) (2nd ed., Vol. 1). München; Berlin; New York: Deutscher Taschenbuch-Verlag; Walter de Gruyter. NOTES: - volume-title currently not implemented by chicago-author-date.csl and apa.csl. } @string{ dtv = {Deutscher Taschenbuch-Verlag} } @Book{nietzsche:ksa1, author = {Nietzsche, Friedrich}, title = {Die Geburt der Trag{\"o}die. Unzeitgem{\"a}{\ss}e Betrachtungen I--IV. Nachgelassene Schriften 1870--1973}, date = 1988, editor = {Colli, Giorgio and Montinari, Mazzino}, maintitle = {S{\"a}mtliche Werke}, mainsubtitle = {Kritische Studienausgabe}, volume = 1, edition = 2, publisher = dtv # { and Walter de Gruyter}, location = {M{\"u}nchen and Berlin and New York}, hyphenation = {german}, sortyear = {1988-1}, sorttitle = {Werke-01-000}, indexsorttitle= {Samtliche Werke I}, bookauthor = {Nietzsche, Friedrich}, indextitle = {S{\"a}mtliche Werke I}, shorttitle = {S{\"a}mtliche Werke I}, annotation = {A single volume from the critical edition of Nietzsche's works. This book entry explicitly refers to the first volume only. Note the title and maintitle fields. Also note the sorttitle and sortyear fields. We want this entry to be listed after the entry referring to the entire edition}, } ^D --- nocite: "[@*]" references: - annote: A single volume from the critical edition of Nietzsche's works. This book entry explicitly refers to the first volume only. Note the title and maintitle fields. Also note the sorttitle and sortyear fields. We want this entry to be listed after the entry referring to the entire edition author: - family: Nietzsche given: Friedrich container-author: - family: Nietzsche given: Friedrich edition: 2 editor: - family: Colli given: Giorgio - family: Montinari given: Mazzino id: "nietzsche:ksa1" issued: 1988 language: de-DE publisher: Deutscher Taschenbuch-Verlag; Walter de Gruyter publisher-place: München; Berlin; New York title: "Sämtliche Werke: Kritische Studienausgabe" type: book volume: 1 volume-title: Die Geburt der Tragödie. Unzeitgemäße Betrachtungen I--IV. Nachgelassene Schriften 1870--1973 --- ``` pandoc-3.1.3/test/command/biblatex-online.md0000644000000000000000000000420207346545000017144 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{adapted from http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/examples/biblatex-examples.bib} @online{markey, Annotation = {An online entry for a tutorial. Note the format of the date field (yyyy-mm-dd) in the database file.}, Author = {Markey, Nicolas}, Date = {2005-10-16}, Hyphenation = {american}, Sorttitle = {Tame the Beast}, Subtitle = {The {B} to {X} of {BibTeX}}, Title = {Tame the {BeaST}}, Url = {http://tug.ctan.org/tex-archive/info/bibtex/tamethebeast/ttb_en.pdf}, Urldate = {2006-10-01}, Version = {1.3}, } @online{CTAN, Annotation = {This is an online entry. The \textsc{url}, which is given in the url field, is transformed into a clickable link if hyperref support has been enabled. Note the format of the urldate field (yyyy-mm-dd) in the database file. Also note the label field which may be used as a fallback by citation styles which need an author and\slash or a year}, Date = 2006, Hyphenation = {american}, Label = {CTAN}, Subtitle = {The {Comprehensive TeX Archive Network}}, Title = {{CTAN}}, Url = {http://www.ctan.org}, Urldate = {2006-10-01}, } ^D --- nocite: "[@*]" references: - accessed: 2006-10-01 annote: An online entry for a tutorial. Note the format of the date field (yyyy-mm-dd) in the database file. author: - family: Markey given: Nicolas id: markey issued: 2005-10-16 language: en-US title: "Tame the BeaST: The B to X of BibTeX" title-short: Tame the BeaST type: webpage url: "http://tug.ctan.org/tex-archive/info/bibtex/tamethebeast/ttb_en.pdf" version: 1.3 - accessed: 2006-10-01 annote: This is an online entry. The [url]{.smallcaps}, which is given in the url field, is transformed into a clickable link if hyperref support has been enabled. Note the format of the urldate field (yyyy-mm-dd) in the database file. Also note the label field which may be used as a fallback by citation styles which need an author and/or a year id: CTAN issued: 2006 language: en-US title: "CTAN: The Comprehensive TeX Archive Network" title-short: CTAN type: webpage url: "http://www.ctan.org" --- ``` pandoc-3.1.3/test/command/biblatex-options-url-false-doi-false.md0000644000000000000000000000215707346545000023113 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Entry contains url and doi fields; these should be discarded since the options field specifies url=false, doi=false. Exception: As in standard biblatex, in online entries url should never be discarded, even if options contains url=false. } @article{item1, Author = {Author, Andy}, Date = {2012}, Doi = {1234/5678.90}, Journal = {Journal}, Options = {url=false, doi=false}, Title = {Title, Any Entry Type Except online}, Url = {http://foo.bar} } @online{item2, Author = {Author, Andy}, Date = {2012}, Doi = {1234/5678.90}, Journal = {Journal}, Options = {url=false, doi=false}, Title = {Title, Entry Type online}, Url = {http://foo.bar} } ^D --- nocite: "[@*]" references: - author: - family: Author given: Andy container-title: Journal id: item1 issued: 2012 title: Title, any entry type except online type: article-journal - author: - family: Author given: Andy container-title: Journal id: item2 issued: 2012 title: Title, entry type online type: webpage url: "http://foo.bar" --- ``` pandoc-3.1.3/test/command/biblatex-padhye.md0000644000000000000000000001221507346545000017135 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Padhye, Firoiu, and Towsley 1999) Padhye, Jitendra, Victor Firoiu, and Don Towsley. 1999. “A Stochastic Model of TCP Reno Congestion Avoidance and Control.” Technical report 99-02. Amherst, Mass.: University of Massachusetts. Formatted with pandoc and apa.csl, 2013-10-23: (Padhye, Firoiu, & Towsley, 1999) Padhye, J., Firoiu, V., & Towsley, D. (1999). *A stochastic model of TCP Reno congestion avoidance and control* (technical report No. 99-02). Amherst, Mass.: University of Massachusetts. } @Report{padhye, author = {Padhye, Jitendra and Firoiu, Victor and Towsley, Don}, title = {A Stochastic Model of {TCP Reno} Congestion Avoidance and Control}, type = {techreport}, institution = {University of Massachusetts}, date = 1999, number = {99-02}, location = {Amherst, Mass.}, hyphenation = {american}, sorttitle = {A Stochastic Model of TCP Reno Congestion Avoidance and Control}, indextitle = {Stochastic Model of {TCP Reno} Congestion Avoidance and Control, A}, annotation = {This is a report entry for a technical report. Note the format of the type field in the database file which uses a localization key. The number of the report is given in the number field. Also note the sorttitle and indextitle fields}, abstract = {The steady state performance of a bulk transfer TCP flow (i.e., a flow with a large amount of data to send, such as FTP transfers) may be characterized by three quantities. The first is the send rate, which is the amount of data sent by the sender in unit time. The second is the throughput, which is the amount of data received by the receiver in unit time. Note that the throughput will always be less than or equal to the send rate due to losses. Finally, the number of non-duplicate packets received by the receiver in unit time gives us the goodput of the connection. The goodput is always less than or equal to the throughput, since the receiver may receive two copies of the same packet due to retransmissions by the sender. In a previous paper, we presented a simple model for predicting the steady state send rate of a bulk transfer TCP flow as a function of loss rate and round trip time. In this paper, we extend that work in two ways. First, we analyze the performance of bulk transfer TCP flows using more precise, stochastic analysis. Second, we build upon the previous analysis to provide both an approximate formula as well as a more accurate stochastic model for the steady state throughput of a bulk transfer TCP flow.}, file = {ftp://gaia.cs.umass.edu/pub/Padhey99-markov.ps}, } ^D --- nocite: "[@*]" references: - abstract: The steady state performance of a bulk transfer TCP flow (i.e., a flow with a large amount of data to send, such as FTP transfers) may be characterized by three quantities. The first is the send rate, which is the amount of data sent by the sender in unit time. The second is the throughput, which is the amount of data received by the receiver in unit time. Note that the throughput will always be less than or equal to the send rate due to losses. Finally, the number of non-duplicate packets received by the receiver in unit time gives us the goodput of the connection. The goodput is always less than or equal to the throughput, since the receiver may receive two copies of the same packet due to retransmissions by the sender. In a previous paper, we presented a simple model for predicting the steady state send rate of a bulk transfer TCP flow as a function of loss rate and round trip time. In this paper, we extend that work in two ways. First, we analyze the performance of bulk transfer TCP flows using more precise, stochastic analysis. Second, we build upon the previous analysis to provide both an approximate formula as well as a more accurate stochastic model for the steady state throughput of a bulk transfer TCP flow. annote: This is a report entry for a technical report. Note the format of the type field in the database file which uses a localization key. The number of the report is given in the number field. Also note the sorttitle and indextitle fields author: - family: Padhye given: Jitendra - family: Firoiu given: Victor - family: Towsley given: Don genre: technical report id: padhye issued: 1999 language: en-US number: 99-02 publisher: University of Massachusetts publisher-place: Amherst, Mass. title: A stochastic model of TCP Reno congestion avoidance and control type: report --- ``` pandoc-3.1.3/test/command/biblatex-patent.md0000644000000000000000000001333607346545000017163 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{adapted from http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/examples/biblatex-examples.bib TODO: Is there a CSL counterpart for the biblatex field "holder"?} @patent{almendro, Annotation = {This is a patent entry with a location field. The number is given in the number field. Note the format of the location field in the database file. Compare laufenberg, sorace, and kowalik}, Author = {Almendro, José L. and Martín, Jacinto and Sánchez, Alberto and Nozal, Fernando}, Date = 1998, Hyphenation = {german}, Location = {countryfr and countryuk and countryde}, Number = {EU-29702195U}, Title = {Elektromagnetisches Signalhorn}} @patent{kowalik, Annotation = {This is a patent entry for a French patent request with a full date. The number is given in the number field. Note the format of the type and date fields in the database file. Compare almendro, laufenberg, and sorace}, Author = {Kowalik, F. and Isard, M.}, Date = {1995-01-11}, Hyphenation = {french}, Indextitle = {Estimateur d'un défaut de fonctionnement}, Number = 9500261, Title = {Estimateur d'un défaut de fonctionnement d'un modulateur en quadrature et étage de modulation l'utilisant}, Type = {patreqfr}} @patent{laufenberg, Annotation = {This is a patent entry with a holder field. Note the format of the type and location fields in the database file. Compare almendro, sorace, and kowalik}, Author = {Laufenberg, Xaver and Eynius, Dominique and Suelzle, Helmut and Usbeck, Stephan and Spaeth, Matthias and Neuser-Hoffmann, Miriam and Myrzik, Christian and Schmid, Manfred and Nietfeld, Franz and Thiel, Alexander and Braun, Harald and Ebner, Norbert}, Date = {2006-09-13}, File = {http://v3.espacenet.com/textdoc?IDX=EP1700367}, Holder = {{Robert Bosch GmbH} and {Daimler Chrysler AG} and {Bayerische Motoren Werke AG}}, Hyphenation = {german}, Number = 1700367, Title = {Elektrische Einrichtung und Betriebsverfahren}, Type = {patenteu}, Abstract = {The invention relates to an electric device comprising a generator, in particular for use in the vehicle electric system of a motor vehicle and a controller for controlling the generator voltage. The device is equipped with a control zone, in which the voltage is controlled and zones, in which the torque is controlled. The invention also relates to methods for operating a device of this type.}} @patent{sorace, Annotation = {This is a patent entry with a holder field. Note the format of the type and date fields in the database file. Compare almendro, laufenberg, and kowalik}, Author = {Sorace, Ronald E. and Reinhardt, Victor S. and Vaughn, Steven A.}, Date = {1997-09-16}, Date-Modified = {2013-10-16 13:44:15 +0000}, Holder = {{Hughes Aircraft Company}}, Hyphenation = {american}, Number = 5668842, Title = {High-Speed Digital-to-{RF} Converter}, Type = {patentus}} ^D --- nocite: "[@*]" references: - annote: This is a patent entry with a location field. The number is given in the number field. Note the format of the location field in the database file. Compare laufenberg, sorace, and kowalik author: - family: Almendro given: José L. - family: Martín given: Jacinto - family: Sánchez given: Alberto - family: Nozal given: Fernando id: almendro issued: 1998 jurisdiction: France; United Kingdom; Germany language: de-DE number: EU-29702195U title: Elektromagnetisches Signalhorn type: patent - annote: This is a patent entry for a French patent request with a full date. The number is given in the number field. Note the format of the type and date fields in the database file. Compare almendro, laufenberg, and sorace author: - family: Kowalik given: F. - family: Isard given: M. genre: French patent request id: kowalik issued: 1995-01-11 language: fr-FR number: 9500261 title: Estimateur d'un défaut de fonctionnement d'un modulateur en quadrature et étage de modulation l'utilisant type: patent - abstract: The invention relates to an electric device comprising a generator, in particular for use in the vehicle electric system of a motor vehicle and a controller for controlling the generator voltage. The device is equipped with a control zone, in which the voltage is controlled and zones, in which the torque is controlled. The invention also relates to methods for operating a device of this type. annote: This is a patent entry with a holder field. Note the format of the type and location fields in the database file. Compare almendro, sorace, and kowalik author: - family: Laufenberg given: Xaver - family: Eynius given: Dominique - family: Suelzle given: Helmut - family: Usbeck given: Stephan - family: Spaeth given: Matthias - family: Neuser-Hoffmann given: Miriam - family: Myrzik given: Christian - family: Schmid given: Manfred - family: Nietfeld given: Franz - family: Thiel given: Alexander - family: Braun given: Harald - family: Ebner given: Norbert genre: European patent id: laufenberg issued: 2006-09-13 language: de-DE number: 1700367 title: Elektrische Einrichtung und Betriebsverfahren type: patent - annote: This is a patent entry with a holder field. Note the format of the type and date fields in the database file. Compare almendro, laufenberg, and kowalik author: - family: Sorace given: Ronald E. - family: Reinhardt given: Victor S. - family: Vaughn given: Steven A. genre: U.S. patent id: sorace issued: 1997-09-16 language: en-US number: 5668842 title: High-speed digital-to-RF converter type: patent --- ``` pandoc-3.1.3/test/command/biblatex-periodical.md0000644000000000000000000000121607346545000017775 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{excerpt from http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/examples/biblatex-examples.bib} @periodical{jcg, Annotation = {This is a periodical entry with an issn field.}, Issn = {0097-8493}, Issuetitle = {Semantic {3D} Media and Content}, Number = 4, Title = {Computers and Graphics}, Volume = 35, Year = 2011} ^D --- nocite: "[@*]" references: - annote: This is a periodical entry with an issn field. container-title: Computers and Graphics id: jcg issn: 0097-8493 issue: 4 issued: 2011 title: Semantic 3D media and content type: article-journal volume: 35 --- ``` pandoc-3.1.3/test/command/biblatex-piccato.md0000644000000000000000000000243707346545000017312 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Piccato 2001) Piccato, Pablo. 2001. *City of Suspects: Crime in Mexico City, 1900–1931*. Durham; London: Duke University Press. Formatted with pandoc and apa.csl, 2013-10-23: (Piccato, 2001) Piccato, P. (2001). *City of suspects: Crime in Mexico City, 1900–1931*. Durham; London: Duke University Press. } @Book{piccato, author = {Piccato, Pablo}, title = {City of Suspects}, date = 2001, publisher = {Duke University Press}, location = {Durham and London}, hyphenation = {american}, subtitle = {Crime in {Mexico City}, 1900--1931}, shorttitle = {City of Suspects}, annotation = {This is a book entry. Note the format of the location field in the database file}, } ^D --- nocite: "[@*]" references: - annote: This is a book entry. Note the format of the location field in the database file author: - family: Piccato given: Pablo id: piccato issued: 2001 language: en-US publisher: Duke University Press publisher-place: Durham; London title: "City of suspects: Crime in Mexico City, 1900--1931" title-short: City of suspects type: book --- ``` pandoc-3.1.3/test/command/biblatex-pines.md0000644000000000000000000000407607346545000017007 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Pines 1979) Pines, Shlomo. 1979. “The Limitations of Human Knowledge According to Al-Farabi, ibn Bajja, and Maimonides.” In *Studies in Medieval Jewish History and Literature*, edited by Isadore Twersky, 82–109. Cambridge, Mass.: Harvard University Press. Formatted with pandoc and apa.csl, 2013-10-23: (Pines, 1979) Pines, S. (1979). The limitations of human knowledge according to Al-Farabi, ibn Bajja, and Maimonides. In I. Twersky (Ed.), *Studies in medieval Jewish history and literature* (pp. 82–109). Cambridge, Mass.: Harvard University Press. } @string{ hup = {Harvard University Press} } @InCollection{pines, author = {Pines, Shlomo}, editor = {Twersky, Isadore}, title = {The Limitations of Human Knowledge According to {Al-Farabi}, {ibn Bajja}, and {Maimonides}}, date = 1979, booktitle = {Studies in Medieval {Jewish} History and Literature}, publisher = hup, location = {Cambridge, Mass.}, pages = {82-109}, keywords = {secondary}, hyphenation = {american}, indextitle = {Limitations of Human Knowledge According to {Al-Farabi}, {ibn Bajja}, and {Maimonides}, The}, shorttitle = {Limitations of Human Knowledge}, annotation = {A typical incollection entry. Note the indextitle field}, } ^D --- nocite: "[@*]" references: - annote: A typical incollection entry. Note the indextitle field author: - family: Pines given: Shlomo container-title: Studies in medieval Jewish history and literature editor: - family: Twersky given: Isadore id: pines issued: 1979 keyword: secondary language: en-US page: 82-109 publisher: Harvard University Press publisher-place: Cambridge, Mass. title: The limitations of human knowledge according to Al-Farabi, [ibn Bajja]{.nocase}, and Maimonides title-short: Limitations of human knowledge type: chapter --- ``` pandoc-3.1.3/test/command/biblatex-quotes.md0000644000000000000000000000255007346545000017204 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{excerpt from http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/examples/biblatex-examples.bib \mkbibquote{} should be replaced by a matching set of quotation marks that can be used by citeproc for quote substitution and flipflopping. English smart double quotation marks seem best, as they cannot be confused with apostrophes. \enquote{}, \enquote*{} should be replaced by a matching set of quotation marks, too: “foo”, ‘bar’. } @string{pup = {Princeton University Press}} @book{nussbaum, Annotation = {A book entry. Note the sorttitle and indexsorttitle fields and the markup of the quotes in the database file}, Author = {Nussbaum, Martha}, Date = 1978, Hyphenation = {american}, Indexsorttitle = {Aristotle's De Motu Animalium}, Keywords = {secondary}, Location = {Princeton}, Publisher = pup, Sorttitle = {Aristotle's De Motu Animalium}, Title = {Aristotle's \mkbibquote{De Motu Animalium}}} ^D --- nocite: "[@*]" references: - annote: A book entry. Note the sorttitle and indexsorttitle fields and the markup of the quotes in the database file author: - family: Nussbaum given: Martha id: nussbaum issued: 1978 keyword: secondary language: en-US publisher: Princeton University Press publisher-place: Princeton title: Aristotle's "De Motu Animalium" type: book --- ``` pandoc-3.1.3/test/command/biblatex-reese.md0000644000000000000000000000344607346545000016774 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Reese 1958) Reese, Trevor R. 1958. “Georgia in Anglo-Spanish Diplomacy, 1736-1739.” *William and Mary Quarterly, 3* 15: 168–190. Formatted with pandoc and apa.csl, 2013-10-23: (Reese, 1958) Reese, T. R. (1958). Georgia in Anglo-Spanish diplomacy, 1736-1739. *William and Mary Quarterly, 3*, *15*, 168–190. NOTES: - biblio2yaml - series field: still not entirely satisfactory. Could we map this to some existing CSL variable, and have the CSL styles handle this? "edition", maybe ?? } @Article{reese, author = {Reese, Trevor R.}, title = {Georgia in {Anglo-Spanish} Diplomacy, 1736-1739}, journaltitle = {William and Mary Quarterly}, date = 1958, series = 3, volume = 15, pages = {168-190}, hyphenation = {american}, annotation = {An article entry with a series and a volume field. Note the format of the series. If the value of the series field is an integer, this number is printed as an ordinal and the string \enquote*{series} is appended automatically}, } ^D --- nocite: "[@*]" references: - annote: An article entry with a series and a volume field. Note the format of the series. If the value of the series field is an integer, this number is printed as an ordinal and the string 'series' is appended automatically author: - family: Reese given: Trevor R. collection-title: 3rd series container-title: William and Mary Quarterly id: reese issued: 1958 language: en-US page: 168-190 title: Georgia in Anglo-Spanish diplomacy, 1736-1739 type: article-journal volume: 15 --- ``` pandoc-3.1.3/test/command/biblatex-report.md0000644000000000000000000001323507346545000017201 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{excerpt from http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/examples/biblatex-examples.bib TODO: Where to map "file" field? } @report{chiu, Annotation = {This is a report entry for a research report. Note the format of the type field in the database file which uses a localization key. The number of the report is given in the number field. Also note the sorttitle and indextitle fields}, Author = {Chiu, Willy W. and Chow, We Min}, Date = 1978, Hyphenation = {american}, Indextitle = {Hybrid Hierarchical Model, A}, Institution = {IBM}, Number = {RC-6947}, Sorttitle = {Hybrid Hierarchical Model of a Multiple Virtual Storage (MVS) Operating System}, Title = {A Hybrid Hierarchical Model of a {Multiple Virtual Storage} ({MVS}) Operating System}, Type = {resreport}} @report{padhye, Annotation = {This is a report entry for a technical report. Note the format of the type field in the database file which uses a localization key. The number of the report is given in the number field. Also note the sorttitle and indextitle fields}, Author = {Padhye, Jitendra and Firoiu, Victor and Towsley, Don}, Date = 1999, File = {ftp://gaia.cs.umass.edu/pub/Padhey99-markov.ps}, Hyphenation = {american}, Indextitle = {Stochastic Model of TCP Reno Congestion Avoidance and Control, A}, Institution = {University of Massachusetts}, Location = {Amherst, Mass.}, Number = {99-02}, Sorttitle = {A Stochastic Model of TCP Reno Congestion Avoidance and Control}, Title = {A Stochastic Model of {TCP Reno} Congestion Avoidance and Control}, Type = {techreport}, Abstract = {The steady state performance of a bulk transfer TCP flow (i.e., a flow with a large amount of data to send, such as FTP transfers) may be characterized by three quantities. The first is the send rate, which is the amount of data sent by the sender in unit time. The second is the throughput, which is the amount of data received by the receiver in unit time. Note that the throughput will always be less than or equal to the send rate due to losses. Finally, the number of non-duplicate packets received by the receiver in unit time gives us the goodput of the connection. The goodput is always less than or equal to the throughput, since the receiver may receive two copies of the same packet due to retransmissions by the sender. In a previous paper, we presented a simple model for predicting the steady state send rate of a bulk transfer TCP flow as a function of loss rate and round trip time. In this paper, we extend that work in two ways. First, we analyze the performance of bulk transfer TCP flows using more precise, stochastic analysis. Second, we build upon the previous analysis to provide both an approximate formula as well as a more accurate stochastic model for the steady state throughput of a bulk transfer TCP flow.}} ^D --- nocite: "[@*]" references: - annote: This is a report entry for a research report. Note the format of the type field in the database file which uses a localization key. The number of the report is given in the number field. Also note the sorttitle and indextitle fields author: - family: Chiu given: Willy W. - family: Chow given: We Min genre: research report id: chiu issued: 1978 language: en-US number: RC-6947 publisher: IBM title: A hybrid hierarchical model of a Multiple Virtual Storage (MVS) operating system type: report - abstract: The steady state performance of a bulk transfer TCP flow (i.e., a flow with a large amount of data to send, such as FTP transfers) may be characterized by three quantities. The first is the send rate, which is the amount of data sent by the sender in unit time. The second is the throughput, which is the amount of data received by the receiver in unit time. Note that the throughput will always be less than or equal to the send rate due to losses. Finally, the number of non-duplicate packets received by the receiver in unit time gives us the goodput of the connection. The goodput is always less than or equal to the throughput, since the receiver may receive two copies of the same packet due to retransmissions by the sender. In a previous paper, we presented a simple model for predicting the steady state send rate of a bulk transfer TCP flow as a function of loss rate and round trip time. In this paper, we extend that work in two ways. First, we analyze the performance of bulk transfer TCP flows using more precise, stochastic analysis. Second, we build upon the previous analysis to provide both an approximate formula as well as a more accurate stochastic model for the steady state throughput of a bulk transfer TCP flow. annote: This is a report entry for a technical report. Note the format of the type field in the database file which uses a localization key. The number of the report is given in the number field. Also note the sorttitle and indextitle fields author: - family: Padhye given: Jitendra - family: Firoiu given: Victor - family: Towsley given: Don genre: technical report id: padhye issued: 1999 language: en-US number: 99-02 publisher: University of Massachusetts publisher-place: Amherst, Mass. title: A stochastic model of TCP Reno congestion avoidance and control type: report --- ``` pandoc-3.1.3/test/command/biblatex-salam.md0000644000000000000000000000334407346545000016763 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Salam 1968) Salam, Abdus. 1968. “Weak and Electromagnetic Interactions.” In *Elementary Particle Theory: Relativistic Groups and Analyticity. Proceedings of the Eighth Nobel Symposium*, edited by Nils Svartholm, 367–377. Stockholm: Almquist & Wiksell. Formatted with pandoc and apa.csl, 2013-10-23: (Salam, 1968) Salam, A. (1968). Weak and electromagnetic interactions. In N. Svartholm (Ed.), *Elementary particle theory: Relativistic groups and analyticity. Proceedings of the eighth Nobel symposium* (pp. 367–377). Stockholm: Almquist & Wiksell. } @InProceedings{salam, author = {Salam, Abdus}, editor = {Svartholm, Nils}, title = {Weak and Electromagnetic Interactions}, date = 1968, booktitle = {Elementary particle theory}, booksubtitle = {Relativistic groups and analyticity}, booktitleaddon= {Proceedings of the Eighth {Nobel} Symposium}, eventdate = {1968-05-19/1968-05-25}, venue = {Aspen{\"a}sgarden, Lerum}, publisher = {Almquist \& Wiksell}, location = {Stockholm}, pages = {367-377}, } ^D --- nocite: "[@*]" references: - author: - family: Salam given: Abdus container-title: "Elementary particle theory: Relativistic groups and analyticity. Proceedings of the eighth Nobel symposium" editor: - family: Svartholm given: Nils event-date: 1968-05-19/1968-05-25 event-place: Aspenäsgarden, Lerum id: salam issued: 1968 page: 367-377 publisher: Almquist & Wiksell publisher-place: Stockholm title: Weak and electromagnetic interactions type: paper-conference --- ``` pandoc-3.1.3/test/command/biblatex-sarfraz.md0000644000000000000000000000265407346545000017341 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Sarfraz and Razzak 2002) Sarfraz, M., and M. F. A. Razzak. 2002. “Technical Section: An Algorithm for Automatic Capturing of the Font Outlines.” *Computers and Graphics* 26 (5): 795–804. Formatted with pandoc and apa.csl, 2013-10-23: (Sarfraz & Razzak, 2002) Sarfraz, M., & Razzak, M. F. A. (2002). Technical section: An algorithm for automatic capturing of the font outlines. *Computers and Graphics*, *26*(5), 795–804. } @Article{sarfraz, author = {M. Sarfraz and M. F. A. Razzak}, title = {Technical section: {An} algorithm for automatic capturing of the font outlines}, year = 2002, volume = 26, number = 5, pages = {795-804}, issn = {0097-8493}, journal = {Computers and Graphics}, annotation = {An article entry with an issn field}, } ^D --- nocite: "[@*]" references: - annote: An article entry with an issn field author: - family: Sarfraz given: M. - family: Razzak given: M. F. A. container-title: Computers and Graphics id: sarfraz issn: 0097-8493 issue: 5 issued: 2002 page: 795-804 title: "Technical section: An algorithm for automatic capturing of the font outlines" title-short: Technical section type: article-journal volume: 26 --- ``` pandoc-3.1.3/test/command/biblatex-shore.md0000644000000000000000000000302507346545000017002 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Shore 1991) Shore, Bradd. 1991. “Twice-born, Once Conceived: Meaning Construction and Cultural Cognition.” *American Anthropologist, New Series* 93 (1) (March): 9–27. Formatted with pandoc and apa.csl, 2013-10-23: (Shore, 1991) Shore, B. (1991). Twice-born, once conceived: Meaning construction and cultural cognition. *American Anthropologist, new series*, *93*(1), 9–27. } @Article{shore, author = {Shore, Bradd}, title = {Twice-Born, Once Conceived}, journaltitle = {American Anthropologist}, date = {1991-03}, subtitle = {Meaning Construction and Cultural Cognition}, series = {newseries}, volume = 93, number = 1, pages = {9-27}, annotation = {An article entry with series, volume, and number fields. Note the format of the series which is a localization key}, } ^D --- nocite: "[@*]" references: - annote: An article entry with series, volume, and number fields. Note the format of the series which is a localization key author: - family: Shore given: Bradd collection-title: New series container-title: American Anthropologist id: shore issue: 1 issued: 1991-03 page: 9-27 title: "Twice-born, once conceived: Meaning construction and cultural cognition" title-short: Twice-born, once conceived type: article-journal volume: 93 --- ``` pandoc-3.1.3/test/command/biblatex-sigfridsson.md0000644000000000000000000001070607346545000020220 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Sigfridsson and Ryde 1998) Sigfridsson, Emma, and Ulf Ryde. 1998. “Comparison of Methods for Deriving Atomic Charges from the Electrostatic Potential and Moments.” *Journal of Computational Chemistry* 19 (4): 377–395. doi:[10.1002/(SICI)1096-987X(199803)19:4\<377::AID-JCC1\>3.0.CO;2-P](https://doi.org/10.1002/(SICI)1096-987X(199803)19:4<377::AID-JCC1>3.0.CO;2-P "10.1002/(SICI)1096-987X(199803)19:4<377::AID-JCC1>3.0.CO;2-P"). Formatted with pandoc and apa.csl, 2013-10-23: (Sigfridsson & Ryde, 1998) Sigfridsson, E., & Ryde, U. (1998). Comparison of methods for deriving atomic charges from the electrostatic potential and moments. *Journal of Computational Chemistry*, *19*(4), 377–395. doi:[10.1002/(SICI)1096-987X(199803)19:4\<377::AID-JCC1\>3.0.CO;2-P](https://doi.org/10.1002/(SICI)1096-987X(199803)19:4<377::AID-JCC1>3.0.CO;2-P "10.1002/(SICI)1096-987X(199803)19:4<377::AID-JCC1>3.0.CO;2-P") NOTES: - biblio2xaml - the string "doi:" should not appear as part of the content of the "doi" field } @Article{sigfridsson, author = {Sigfridsson, Emma and Ryde, Ulf}, title = {Comparison of methods for deriving atomic charges from the electrostatic potential and moments}, journaltitle = {Journal of Computational Chemistry}, date = 1998, volume = 19, number = 4, pages = {377-395}, doi = {10.1002/(SICI)1096-987X(199803)19:4<377::AID-JCC1>3.0.CO;2-P}, hyphenation = {american}, indextitle = {Methods for deriving atomic charges}, annotation = {An article entry with volume, number, and doi fields. Note that the \textsc{doi} is transformed into a clickable link if hyperref support has been enabled}, abstract = {Four methods for deriving partial atomic charges from the quantum chemical electrostatic potential (CHELP, CHELPG, Merz-Kollman, and RESP) have been compared and critically evaluated. It is shown that charges strongly depend on how and where the potential points are selected. Two alternative methods are suggested to avoid the arbitrariness in the point-selection schemes and van der Waals exclusion radii: CHELP-BOW, which also estimates the charges from the electrostatic potential, but with potential points that are Boltzmann-weighted after their occurrence in actual simulations using the energy function of the program in which the charges will be used, and CHELMO, which estimates the charges directly from the electrostatic multipole moments. Different criteria for the quality of the charges are discussed.}, } ^D --- nocite: "[@*]" references: - abstract: "Four methods for deriving partial atomic charges from the quantum chemical electrostatic potential (CHELP, CHELPG, Merz-Kollman, and RESP) have been compared and critically evaluated. It is shown that charges strongly depend on how and where the potential points are selected. Two alternative methods are suggested to avoid the arbitrariness in the point-selection schemes and van der Waals exclusion radii: CHELP-BOW, which also estimates the charges from the electrostatic potential, but with potential points that are Boltzmann-weighted after their occurrence in actual simulations using the energy function of the program in which the charges will be used, and CHELMO, which estimates the charges directly from the electrostatic multipole moments. Different criteria for the quality of the charges are discussed." annote: An article entry with volume, number, and doi fields. Note that the [doi]{.smallcaps} is transformed into a clickable link if hyperref support has been enabled author: - family: Sigfridsson given: Emma - family: Ryde given: Ulf container-title: Journal of Computational Chemistry doi: "10.1002/(SICI)1096-987X(199803)19:4\\<377::AID-JCC1\\>3.0.CO;2-P" id: sigfridsson issue: 4 issued: 1998 language: en-US page: 377-395 title: Comparison of methods for deriving atomic charges from the electrostatic potential and moments type: article-journal volume: 19 --- ``` pandoc-3.1.3/test/command/biblatex-sorace.md0000644000000000000000000000306307346545000017140 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Sorace, Reinhardt, and Vaughn 1997) Sorace, Ronald E., Victor S. Reinhardt, and Steven A. Vaughn. 1997. “High-speed Digital-to-RF Converter.” U.S. patent. Formatted with pandoc and apa.csl, 2013-10-23: (Sorace, Reinhardt, & Vaughn, 1997) Sorace, R. E., Reinhardt, V. S., & Vaughn, S. A. (1997, September 16). High-speed digital-to-RF converter. U.S. patent. } @Patent{sorace, author = {Sorace, Ronald E. and Reinhardt, Victor S. and Vaughn, Steven A.}, title = {High-Speed Digital-to-{RF} Converter}, number = 5668842, date = {1997-09-16}, holder = {{Hughes Aircraft Company}}, type = {patentus}, hyphenation = {american}, annotation = {This is a patent entry with a holder field. Note the format of the type and date fields in the database file. Compare almendro, laufenberg, and kowalik}, } ^D --- nocite: "[@*]" references: - annote: This is a patent entry with a holder field. Note the format of the type and date fields in the database file. Compare almendro, laufenberg, and kowalik author: - family: Sorace given: Ronald E. - family: Reinhardt given: Victor S. - family: Vaughn given: Steven A. genre: U.S. patent id: sorace issued: 1997-09-16 language: en-US number: 5668842 title: High-speed digital-to-RF converter type: patent --- ``` pandoc-3.1.3/test/command/biblatex-spiegelberg.md0000644000000000000000000000360007346545000020151 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Spiegelberg 1969) Spiegelberg, Herbert. 1969. ““Intention” und “Intentionalität” in der Scholastik, bei Brentano und Husserl.” *Studia Philosophica* 29: 189–216. Formatted with pandoc and apa.csl, 2013-10-23: (Spiegelberg, 1969) Spiegelberg, H. (1969). “Intention” und “Intentionalität” in der Scholastik, bei Brentano und Husserl. *Studia Philosophica*, *29*, 189–216. NOTES: - citeproc - flipflopping of quotes incorrect } @Article{spiegelberg, author = {Spiegelberg, Herbert}, title = {\mkbibquote{Intention} und \mkbibquote{Intentionalit{\"a}t} in der Scholastik, bei Brentano und Husserl}, journaltitle = {Studia Philosophica}, date = 1969, volume = 29, pages = {189-216}, hyphenation = {german}, sorttitle = {Intention und Intentionalitat in der Scholastik, bei Brentano und Husserl}, indexsorttitle= {Intention und Intentionalitat in der Scholastik, bei Brentano und Husserl}, shorttitle = {Intention und Intentionalit{\"a}t}, annotation = {An article entry. Note the sorttitle and indexsorttitle fields and the markup of the quotes in the database file}, } ^D --- nocite: "[@*]" references: - annote: An article entry. Note the sorttitle and indexsorttitle fields and the markup of the quotes in the database file author: - family: Spiegelberg given: Herbert container-title: Studia Philosophica id: spiegelberg issued: 1969 language: de-DE page: 189-216 title: "\"Intention\" und \"Intentionalität\" in der Scholastik, bei Brentano und Husserl" title-short: Intention und Intentionalität type: article-journal volume: 29 --- ``` pandoc-3.1.3/test/command/biblatex-springer.md0000644000000000000000000000223107346545000017511 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Springer 1950) Springer, Otto. 1950. “Mediaeval Pilgrim Routes from Scandinavia to Rome.” *Mediaeval Studies* 12: 92–122. Formatted with pandoc and apa.csl, 2013-10-23: (Springer, 1950) Springer, O. (1950). Mediaeval pilgrim routes from Scandinavia to Rome. *Mediaeval Studies*, *12*, 92–122. } @Article{springer, author = {Springer, Otto}, title = {Mediaeval Pilgrim Routes from {Scandinavia} to {Rome}}, journaltitle = {Mediaeval Studies}, date = 1950, volume = 12, pages = {92-122}, hyphenation = {british}, shorttitle = {Mediaeval Pilgrim Routes}, annotation = {A plain article entry}, } ^D --- nocite: "[@*]" references: - annote: A plain article entry author: - family: Springer given: Otto container-title: Mediaeval Studies id: springer issued: 1950 language: en-GB page: 92-122 title: Mediaeval pilgrim routes from Scandinavia to Rome title-short: Mediaeval pilgrim routes type: article-journal volume: 12 --- ``` pandoc-3.1.3/test/command/biblatex-strings.md0000644000000000000000000000215707346545000017360 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{excerpt from http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/examples/biblatex-examples.bib} @string{anch-ie = {Angew.~Chem. Int.~Ed.}} @article{herrmann, Author = {Herrmann, Wolfgang A. and Öfele, Karl and Schneider, Sabine K. and Herdtweck, Eberhardt and Hoffmann, Stephan D.}, Date = 2006, Hyphenation = {english}, Indextitle = {Carbocyclic carbene as an efficient catalyst, A}, Journaltitle = anch-ie, Number = 23, Pages = {3859-3862}, Title = {A Carbocyclic Carbene as an Efficient Catalyst Ligand for {C--C} Coupling Reactions}, Volume = 45} ^D --- nocite: "[@*]" references: - author: - family: Herrmann given: Wolfgang A. - family: Öfele given: Karl - family: Schneider given: Sabine K. - family: Herdtweck given: Eberhardt - family: Hoffmann given: Stephan D. container-title: Angew. Chem. Int. Ed. id: herrmann issue: 23 issued: 2006 language: en-US page: 3859-3862 title: A carbocyclic carbene as an efficient catalyst ligand for C--C coupling reactions type: article-journal volume: 45 --- ``` pandoc-3.1.3/test/command/biblatex-test-case-conversion.md0000644000000000000000000000553307346545000021743 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ - bibtex and biblatex - expect titles in title case - styles use titles as is, or convert them to sentence case - strings wrapped {} are not converted - all CSL styles at and - expect titles in sentence case - styles use titles as is, or convert them to title case - except for (hardcoded) list of stop words, see - citeproc-js (MLZ only?) also recognizes a markup syntax for suppressing title-case changes on a range of text (see ): - `lowercase` - Proposal: - When converting to yaml, convert English titles to sentence case, - for all strings wrapped in {} where {} is not part of a latex command, ... - ... when starting with an uppercase letter: suppress conversion, remove the {} - ... when starting with a lowercase letter ("nm", "iPod"): suppress conversion, replace the {} with - Note: Camel case ("iPod") needs to be protected in bibtex/biblatex anyway; the only "extension" (wrt bibtex/biblatex specs) we'd be introducing is wrapping lowercase-only strings in {}, something that is never necessary on the latex side but won't break anything there either. - citeproc-hs/pandoc-citeproc should be modified to honour this new syntax and suppress conversion to title case for strings wrapped in ``. - Expected output, using one of the title-case CSL styles, here chicago-author-date.csl: Author, Ann. 2013. “A Title, in English, with a Proper Name and an ACRONYM and a camelCase Word and Some Units, 400 nm, 3 cm, and a Quote, *Alea iacta est*.” *Journal*. } @article{item1, Author = {Author, Ann}, Date = {2013}, Hyphenation = {english}, Journaltitle = {Journal}, Title = {A Title, in {English}, with a {Proper Name} and an {ACRONYM} and a {camelCase} Word and Some Units, 400~{nm}, 3~{cm}, and a Quote, \textit{{Alea} {iacta est}}} } ^D --- nocite: "[@*]" references: - author: - family: Author given: Ann container-title: Journal id: item1 issued: 2013 language: en-US title: A title, in English, with a Proper Name and an ACRONYM and a [camelCase]{.nocase} word and some units, 400 [nm]{.nocase}, 3 [cm]{.nocase}, and a quote, *Alea [iacta est]{.nocase}* type: article-journal --- ``` pandoc-3.1.3/test/command/biblatex-textnormal.md0000644000000000000000000000033107346545000020054 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @book{item1, Title = {The Title \textnormal{of this book}}, } ^D --- nocite: "[@*]" references: - id: item1 title: The title [of this book]{.nodecor} type: book --- ``` pandoc-3.1.3/test/command/biblatex-thesis.md0000644000000000000000000000456207346545000017170 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{excerpted from http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/examples/biblatex-examples.bib TODO: Uppercase letters following hyphens need to be converted to lowercase, too (e.g., "r" in "High-Resolution". -- Same for citeproc when doing title-case conversion!) } @thesis{geer, Annotation = {This is a typical thesis entry for a PhD thesis. Note the type field in the database file which uses a localization key. Also note the format of the printed name and compare the useprefix option in the options field as well as vangennep}, Author = {de Geer, Ingrid}, Date = 1985, Hyphenation = {british}, Institution = {Uppsala Universitet}, Location = {Uppsala}, Options = {useprefix=false}, Subtitle = {The {Orkney} Earldom of the Twelfth Century. {A} Musicological Study}, Title = {Earl, Saint, Bishop, Skald~-- and Music}, Type = {phdthesis}} @thesis{loh, Annotation = {This is a typical thesis entry for an MA thesis. Note the type field in the database file which uses a localization key}, Author = {Loh, Nin C.}, Date = 1992, Hyphenation = {american}, Institution = {Massachusetts Institute of Technology}, Location = {Cambridge, Mass.}, Title = {High-Resolution Micromachined Interferometric Accelerometer}, Type = {mathesis}} ^D --- nocite: "[@*]" references: - annote: This is a typical thesis entry for a PhD thesis. Note the type field in the database file which uses a localization key. Also note the format of the printed name and compare the useprefix option in the options field as well as vangennep author: - dropping-particle: de family: Geer given: Ingrid genre: PhD thesis id: geer issued: 1985 language: en-GB publisher: Uppsala Universitet publisher-place: Uppsala title: "Earl, saint, bishop, skald -- and music: The Orkney earldom of the twelfth century. A musicological study" title-short: Earl, saint, bishop, skald -- and music type: thesis - annote: This is a typical thesis entry for an MA thesis. Note the type field in the database file which uses a localization key author: - family: Loh given: Nin C. genre: Master's thesis id: loh issued: 1992 language: en-US publisher: Massachusetts Institute of Technology publisher-place: Cambridge, Mass. title: High-resolution micromachined interferometric accelerometer type: thesis --- ``` pandoc-3.1.3/test/command/biblatex-title-and-shorttitle.md0000644000000000000000000000462507346545000021751 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ TODO: Slight inconsistency: When a biblatex “title” field contains a colon, the part before the colon is mapped to CSL “title-short”. When there’s a biblatex “title” and a “subtitle” field, CSL “title-short” is not set, though it would make at least as much sense to map “title” (without “subtitle”) to CSL “title-short” in this case. CSL “container-title-short” could also be set - from biblatex “shortjournal” - for inbook, incollection etc. from the “shorttitle” field of the cross-referenced book, collection etc. entry (see item5, item6) ... but it might not really be worth it, “container-title-short” not being used once in my sample of 70+ CSL styles. } @book{item4, Shorttitle = {The Shorttitle}, Subtitle = {And a Subtitle, in Two Separate Fields; plus a Separate “Shorttitle” Field}, Title = {The Title: With a Colon in the “Title” Field}} @book{item3, Subtitle = {And a Subtitle, in two separate fields}, Title = {The Title: With a Colon in the “title” field}} @book{item2, Subtitle = {The Subtitle, In Two Separate fields}, Title = {The Title}} @book{item1, Title = {The Title: And the Subtitle, all in the “title” Field}} @inbook{item5, Title = {The inbook Title: And the Subtitle, all in the “title” Field}, Crossref = {item6}} @book{item6, Title = {The Title: And the Subtitle, all in the “title” Field}, Shorttitle = {The Shorttitle}, } ^D --- nocite: "[@*]" references: - id: item4 title: "The title: With a colon in the \"title\" field: And a subtitle, in two separate fields; plus a separate \"shorttitle\" field" title-short: The shorttitle type: book - id: item3 title: "The title: With a colon in the \"title\" field: And a subtitle, in two separate fields" title-short: The title type: book - id: item2 title: "The title: The subtitle, in two separate fields" title-short: The title type: book - id: item1 title: "The title: And the subtitle, all in the \"title\" field" title-short: The title type: book - container-title: "The title: And the subtitle, all in the \"title\" field" id: item5 title: "The inbook title: And the subtitle, all in the \"title\" field" title-short: The inbook title type: chapter - id: item6 title: "The title: And the subtitle, all in the \"title\" field" title-short: The shorttitle type: book --- ``` pandoc-3.1.3/test/command/biblatex-vangennep-related.md0000644000000000000000000000307207346545000021263 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (van Gennep 1909) van Gennep, Arnold. 1909. *Les rites de passage*. Paris: Nourry. Formatted with pandoc and apa.csl, 2013-10-23: (van Gennep, 1909) van Gennep, A. (1909). *Les rites de passage*. Paris: Nourry. NOTES: - biblio2yaml - "related = {vizedom:related}, relatedtype = {bytranslator}": no equivalent implemented in CSL - "options = {useprefix}," is shorthand for "options = {useprefix=true}," } @Book{vangennep:related, author = {van Gennep, Arnold}, title = {Les rites de passage}, date = 1909, publisher = {Nourry}, location = {Paris}, options = {useprefix}, hyphenation = {french}, related = {vizedom:related}, relatedtype = {bytranslator}, sorttitle = {Rites de passage}, indextitle = {Rites de passage, Les}, shorttitle = {Rites de passage}, annotation = {A variant of the vangennep entry related to its translation. Note the format of the related and relatedtype fields}, } ^D --- nocite: "[@*]" references: - annote: A variant of the vangennep entry related to its translation. Note the format of the related and relatedtype fields author: - family: Gennep given: Arnold non-dropping-particle: van id: "vangennep:related" issued: 1909 language: fr-FR publisher: Nourry publisher-place: Paris title: Les rites de passage title-short: Rites de passage type: book --- ``` pandoc-3.1.3/test/command/biblatex-vangennep-trans.md0000644000000000000000000000322307346545000020770 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (van Gennep 1960) van Gennep, Arnold. 1960. *The Rites of Passage*. Translated by Monika B. Vizedom and Gabrielle L. Caffee. University of Chicago Press. Formatted with pandoc and apa.csl, 2013-10-23: (van Gennep, 1960) van Gennep, A. (1960). *The rites of passage*. (M. B. Vizedom & G. L. Caffee, Trans.). University of Chicago Press. } @Book{vangennep:trans, author = {van Gennep, Arnold}, title = {The Rites of Passage}, year = 1960, translator = {Vizedom, Monika B. and Caffee, Gabrielle L.}, language = {english}, origlanguage = {french}, publisher = {University of Chicago Press}, options = {useprefix}, indextitle = {Rites of Passage, The}, sorttitle = {Rites of Passage}, shorttitle = {Rites of Passage}, hyphenation = {american}, annotation = {A translation of the vangennep entry. Note the translator and origlanguage fields. Compare with the vangennep:related entry.}, } ^D --- nocite: "[@*]" references: - annote: "A translation of the vangennep entry. Note the translator and origlanguage fields. Compare with the vangennep:related entry." author: - family: Gennep given: Arnold non-dropping-particle: van id: "vangennep:trans" issued: 1960 language: en-US publisher: University of Chicago Press title: The rites of passage title-short: Rites of passage translator: - family: Vizedom given: Monika B. - family: Caffee given: Gabrielle L. type: book --- ``` pandoc-3.1.3/test/command/biblatex-vangennep.md0000644000000000000000000000250007346545000017640 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (van Gennep 1909) van Gennep, Arnold. 1909. *Les rites de passage*. Paris: Nourry. Formatted with pandoc and apa.csl, 2013-10-23: (van Gennep, 1909) van Gennep, A. (1909). *Les rites de passage*. Paris: Nourry. } @Book{vangennep, author = {van Gennep, Arnold}, title = {Les rites de passage}, date = 1909, publisher = {Nourry}, location = {Paris}, options = {useprefix}, hyphenation = {french}, sorttitle = {Rites de passage}, indextitle = {Rites de passage, Les}, shorttitle = {Rites de passage}, annotation = {A book entry. Note the format of the printed name and compare the useprefix option in the options field as well as brandt and geer}, } ^D --- nocite: "[@*]" references: - annote: A book entry. Note the format of the printed name and compare the useprefix option in the options field as well as brandt and geer author: - family: Gennep given: Arnold non-dropping-particle: van id: vangennep issued: 1909 language: fr-FR publisher: Nourry publisher-place: Paris title: Les rites de passage title-short: Rites de passage type: book --- ``` pandoc-3.1.3/test/command/biblatex-vazques-de-parga-mvbook.md0000644000000000000000000000364407346545000022340 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Vázques de Parga, Lacarra, and Uría Ríu 1993) Vázques de Parga, Luis, José María Lacarra, and Juan Uría Ríu. 1993. *Las Peregrinaciones a Santiago de Compostela*. 3. Pamplona: Iberdrola. Formatted with pandoc and apa.csl, 2013-10-23: (Vázques de Parga, Lacarra, & Uría Ríu, 1993) Vázques de Parga, L., Lacarra, J. M., & Uría Ríu, J. (1993). *Las Peregrinaciones a Santiago de Compostela* (1-3). Pamplona: Iberdrola. NOTES: - citeproc - term "vols." missing } @mvbook{vazques-de-parga, author = {V{\'a}zques{ de }Parga, Luis and Lacarra, Jos{\'e} Mar{\'i}a and Ur{\'i}a R{\'i}u, Juan}, title = {Las Peregrinaciones a Santiago de Compostela}, date = 1993, volumes = 3, note = {Ed. facs. de la realizada en 1948--49}, publisher = {Iberdrola}, location = {Pamplona}, hyphenation = {spanish}, sorttitle = {Peregrinaciones a Santiago de Compostela}, indextitle = {Peregrinaciones a Santiago de Compostela, Las}, shorttitle = {Peregrinaciones}, annotation = {A multivolume book cited as a whole. This is a book entry with volumes, note, sorttitle, and indextitle fields}, } ^D --- nocite: "[@*]" references: - annote: A multivolume book cited as a whole. This is a book entry with volumes, note, sorttitle, and indextitle fields author: - family: Vázques de Parga given: Luis - family: Lacarra given: José María - family: Uría Ríu given: Juan id: vazques-de-parga issued: 1993 language: es-ES note: Ed. facs. de la realizada en 1948--49 number-of-volumes: 3 publisher: Iberdrola publisher-place: Pamplona title: Las Peregrinaciones a Santiago de Compostela title-short: Peregrinaciones type: book --- ``` pandoc-3.1.3/test/command/biblatex-vazques-de-parga.md0000644000000000000000000000364107346545000021042 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Vázques de Parga, Lacarra, and Uría Ríu 1993) Vázques de Parga, Luis, José María Lacarra, and Juan Uría Ríu. 1993. *Las Peregrinaciones a Santiago de Compostela*. 3. Pamplona: Iberdrola. Formatted with pandoc and apa.csl, 2013-10-23: (Vázques de Parga, Lacarra, & Uría Ríu, 1993) Vázques de Parga, L., Lacarra, J. M., & Uría Ríu, J. (1993). *Las Peregrinaciones a Santiago de Compostela* (1-3). Pamplona: Iberdrola. NOTES: - citeproc - term "vols." missing } @Book{vazques-de-parga, author = {V{\'a}zques{ de }Parga, Luis and Lacarra, Jos{\'e} Mar{\'i}a and Ur{\'i}a R{\'i}u, Juan}, title = {Las Peregrinaciones a Santiago de Compostela}, date = 1993, volumes = 3, note = {Ed. facs. de la realizada en 1948--49}, publisher = {Iberdrola}, location = {Pamplona}, hyphenation = {spanish}, sorttitle = {Peregrinaciones a Santiago de Compostela}, indextitle = {Peregrinaciones a Santiago de Compostela, Las}, shorttitle = {Peregrinaciones}, annotation = {A multivolume book cited as a whole. This is a book entry with volumes, note, sorttitle, and indextitle fields}, } ^D --- nocite: "[@*]" references: - annote: A multivolume book cited as a whole. This is a book entry with volumes, note, sorttitle, and indextitle fields author: - family: Vázques de Parga given: Luis - family: Lacarra given: José María - family: Uría Ríu given: Juan id: vazques-de-parga issued: 1993 language: es-ES note: Ed. facs. de la realizada en 1948--49 number-of-volumes: 3 publisher: Iberdrola publisher-place: Pamplona title: Las Peregrinaciones a Santiago de Compostela title-short: Peregrinaciones type: book --- ``` pandoc-3.1.3/test/command/biblatex-video.md0000644000000000000000000000034107346545000016766 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @video{x1,title={blah}} @movie{x2,title={blah}} ^D --- nocite: "[@*]" references: - id: x1 title: Blah type: motion_picture - id: x2 title: Blah type: motion_picture --- ``` pandoc-3.1.3/test/command/biblatex-vizedom-related.md0000644000000000000000000000310307346545000020752 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Vizedom and Caffee 1960) Vizedom, Monika B., and Gabrielle L. Caffee, trans. 1960. *The Rites of Passage*. University of Chicago Press. Formatted with pandoc and apa.csl, 2013-10-23: (Vizedom & Caffee, 1960) Vizedom, M. B., & Caffee, G. L. (Trans.). (1960). *The rites of passage*. University of Chicago Press. NOTES: - biblio2yaml - "related = {vangennep}, relatedtype = {translationof}": no equivalent implemented in CSL } @Book{vizedom:related, title = {The Rites of Passage}, year = 1960, translator = {Vizedom, Monika B. and Caffee, Gabrielle L.}, language = {english}, publisher = {University of Chicago Press}, hyphenation = {american}, options = {usetranslator}, related = {vangennep}, relatedtype = {translationof}, indextitle = {Rites of Passage, The}, sorttitle = {Rites of Passage}, shorttitle = {Rites of Passage}, annotation = {A translated work from vangennep. Note the format of the related and relatedtype fields}, } ^D --- nocite: "[@*]" references: - annote: A translated work from vangennep. Note the format of the related and relatedtype fields id: "vizedom:related" issued: 1960 language: en-US publisher: University of Chicago Press title: The rites of passage title-short: Rites of passage translator: - family: Vizedom given: Monika B. - family: Caffee given: Gabrielle L. type: book --- ``` pandoc-3.1.3/test/command/biblatex-wassenberg.md0000644000000000000000000000536207346545000020030 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Wassenberg and Sanders 2010) Wassenberg, Jan, and Peter Sanders. 2010. “Faster Radix Sort via Virtual Memory and Write-combining” (version 1). August 17. Formatted with pandoc and apa.csl, 2013-10-23: (Wassenberg & Sanders, 2010) Wassenberg, J., & Sanders, P. (2010, August 17). Faster radix sort via virtual memory and write-combining. NOTES: - biblio2yaml - "eprinttype = {arxiv}, eprintclass = {cs.DS}, eprint = {1008.2849v1}" should be used to reconstruct a Url: http://arxiv.org/abs/1008.2849v1 ("cs.DS" does not seem to be essential) } @Online{wassenberg, author = {Wassenberg, Jan and Sanders, Peter}, title = {Faster Radix Sort via Virtual Memory and Write-Combining}, date = {2010-08-17}, version = 1, hyphenation = {american}, eprinttype = {arxiv}, eprintclass = {cs.DS}, eprint = {1008.2849v1}, annotation = {A recent online reference from arXiv using the new (April 2007 onward) identifier format. Note the eprint, eprinttype, and eprintclass fields. Also note that the arXiv reference is transformed into a clickable link if hyperref support has been enabled}, abstract = {Sorting algorithms are the deciding factor for the performance of common operations such as removal of duplicates or database sort-merge joins. This work focuses on 32-bit integer keys, optionally paired with a 32-bit value. We present a fast radix sorting algorithm that builds upon a microarchitecture-aware variant of counting sort}, } ^D --- nocite: "[@*]" references: - abstract: Sorting algorithms are the deciding factor for the performance of common operations such as removal of duplicates or database sort-merge joins. This work focuses on 32-bit integer keys, optionally paired with a 32-bit value. We present a fast radix sorting algorithm that builds upon a microarchitecture-aware variant of counting sort annote: A recent online reference from arXiv using the new (April 2007 onward) identifier format. Note the eprint, eprinttype, and eprintclass fields. Also note that the arXiv reference is transformed into a clickable link if hyperref support has been enabled author: - family: Wassenberg given: Jan - family: Sanders given: Peter id: wassenberg issued: 2010-08-17 language: en-US title: Faster radix sort via virtual memory and write-combining type: webpage url: "https://arxiv.org/abs/1008.2849v1" version: 1 --- ``` pandoc-3.1.3/test/command/biblatex-weinberg.md0000644000000000000000000000153607346545000017471 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Weinberg 1967) Weinberg, Steven. 1967. “A Model of Leptons.” *Phys. Rev. Lett.* 19: 1264–1266. Formatted with pandoc and apa.csl, 2013-10-23: (Weinberg, 1967) Weinberg, S. (1967). A model of leptons. *Phys. Rev. Lett.*, *19*, 1264–1266. } @Article{weinberg, author = {Weinberg, Steven}, title = {A Model of Leptons}, journaltitle = {Phys.~Rev.~Lett.}, date = 1967, volume = 19, pages = {1264-1266}, } ^D --- nocite: "[@*]" references: - author: - family: Weinberg given: Steven container-title: Phys. Rev. Lett. id: weinberg issued: 1967 page: 1264-1266 title: A model of leptons type: article-journal volume: 19 --- ``` pandoc-3.1.3/test/command/biblatex-westfahl-frontier.md0000644000000000000000000000273207346545000021331 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Westfahl 2000) Westfahl, Gary, ed. 2000. *Space and Beyond: The Frontier Theme in Science Fiction*. Westport, Conn.; London: Greenwood. Formatted with pandoc and apa.csl, 2013-10-23: (Westfahl, 2000) Westfahl, G. (Ed.). (2000). *Space and beyond: The frontier theme in science fiction*. Westport, Conn.; London: Greenwood. } @Collection{westfahl:frontier, editor = {Westfahl, Gary}, title = {Space and Beyond}, date = 2000, subtitle = {The Frontier Theme in Science Fiction}, publisher = {Greenwood}, location = {Westport, Conn. and London}, hyphenation = {american}, booktitle = {Space and Beyond}, booksubtitle = {The Frontier Theme in Science Fiction}, annotation = {This is a collection entry. Note the format of the location field as well as the subtitle and booksubtitle fields}, } ^D --- nocite: "[@*]" references: - annote: This is a collection entry. Note the format of the location field as well as the subtitle and booksubtitle fields editor: - family: Westfahl given: Gary id: "westfahl:frontier" issued: 2000 language: en-US publisher: Greenwood publisher-place: Westport, Conn.; London title: "Space and beyond: The frontier theme in science fiction" title-short: Space and beyond type: book --- ``` pandoc-3.1.3/test/command/biblatex-westfahl-space.md0000644000000000000000000000626607346545000020602 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Westfahl 2000a) (Westfahl 2000b) Westfahl, Gary. 2000a. “The True Frontier: Confronting and Avoiding the Realities of Space in American Science Fiction Films.” In *Space and Beyond: The Frontier Theme in Science Fiction*, edited by Gary Westfahl, 55–65. Westport, Conn.; London: Greenwood. ———, ed. 2000b. *Space and Beyond: The Frontier Theme in Science Fiction*. Westport, Conn.; London: Greenwood. Formatted with pandoc and apa.csl, 2013-10-23: (Westfahl, 2000) (Westfahl, 2000) Westfahl, G. (2000). The true frontier: Confronting and avoiding the realities of space in American science fiction films. In G. Westfahl (Ed.), *Space and beyond: The frontier theme in science fiction* (pp. 55–65). Westport, Conn.; London: Greenwood. Westfahl, G. (Ed.). (2000). *Space and beyond: The frontier theme in science fiction*. Westport, Conn.; London: Greenwood. } @InCollection{westfahl:space, author = {Westfahl, Gary}, title = {The True Frontier}, subtitle = {Confronting and Avoiding the Realities of Space in {American} Science Fiction Films}, pages = {55-65}, crossref = {westfahl:frontier}, hyphenation = {american}, indextitle = {True Frontier, The}, annotation = {A cross-referenced article from a collection. This is an incollection entry with a crossref field. Note the subtitle and indextitle fields}, } @Collection{westfahl:frontier, editor = {Westfahl, Gary}, title = {Space and Beyond}, date = 2000, subtitle = {The Frontier Theme in Science Fiction}, publisher = {Greenwood}, location = {Westport, Conn. and London}, hyphenation = {american}, booktitle = {Space and Beyond}, booksubtitle = {The Frontier Theme in Science Fiction}, annotation = {This is a collection entry. Note the format of the location field as well as the subtitle and booksubtitle fields}, } ^D --- nocite: "[@*]" references: - annote: A cross-referenced article from a collection. This is an incollection entry with a crossref field. Note the subtitle and indextitle fields author: - family: Westfahl given: Gary container-title: "Space and beyond: The frontier theme in science fiction" editor: - family: Westfahl given: Gary id: "westfahl:space" issued: 2000 language: en-US page: 55-65 publisher: Greenwood publisher-place: Westport, Conn.; London title: "The true frontier: Confronting and avoiding the realities of space in American science fiction films" title-short: The true frontier type: chapter - annote: This is a collection entry. Note the format of the location field as well as the subtitle and booksubtitle fields editor: - family: Westfahl given: Gary id: "westfahl:frontier" issued: 2000 language: en-US publisher: Greenwood publisher-place: Westport, Conn.; London title: "Space and beyond: The frontier theme in science fiction" title-short: Space and beyond type: book --- ``` pandoc-3.1.3/test/command/biblatex-wilde.md0000644000000000000000000000313507346545000016770 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Wilde 1899) Wilde, Oscar. 1899. *The Importance of Being Earnest: A Trivial Comedy for Serious People*. English and American Drama of the Nineteenth Century. Leonard Smithers and Company. Formatted with pandoc and apa.csl, 2013-10-23: (Wilde, 1899) Wilde, O. (1899). *The importance of being earnest: A trivial comedy for serious people*. Leonard Smithers and Company. NOTES: - biblio2yaml - From "eprint = {4HIWAAAAYAAJ}, eprinttype = {googlebooks}", a url could be reconstructed, shortest form: http://books.google.com?id=4HIWAAAAYAAJ } @Book{wilde, author = {Wilde, Oscar}, title = {The Importance of Being Earnest: {A} Trivial Comedy for Serious People}, year = 1899, series = {English and American drama of the Nineteenth Century}, publisher = {Leonard Smithers {and} Company}, eprint = {4HIWAAAAYAAJ}, eprinttype = {googlebooks}, annotation = {A book with eprint and eprinttype fields.}, } ^D --- nocite: "[@*]" references: - annote: A book with eprint and eprinttype fields. author: - family: Wilde given: Oscar collection-title: English and american drama of the nineteenth century id: wilde issued: 1899 publisher: Leonard Smithers and Company title: "The importance of being earnest: A trivial comedy for serious people" title-short: The importance of being earnest type: book url: "https://books.google.com?id=4HIWAAAAYAAJ" --- ``` pandoc-3.1.3/test/command/biblatex-worman.md0000644000000000000000000000242507346545000017170 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Worman 2002) Worman, Nancy. 2002. *The Cast of Character: Style in Greek Literature*. Austin: University of Texas Press. Formatted with pandoc and apa.csl, 2013-10-23: (Worman, 2002) Worman, N. (2002). *The cast of character: Style in Greek literature*. Austin: University of Texas Press. } @Book{worman, author = {Worman, Nancy}, title = {The Cast of Character}, date = 2002, publisher = {University of Texas Press}, location = {Austin}, hyphenation = {american}, sorttitle = {Cast of Character}, indextitle = {Cast of Character, The}, subtitle = {Style in {Greek} Literature}, shorttitle = {Cast of Character}, annotation = {A book entry. Note the sorttitle and indextitle fields}, } ^D --- nocite: "[@*]" references: - annote: A book entry. Note the sorttitle and indextitle fields author: - family: Worman given: Nancy id: worman issued: 2002 language: en-US publisher: University of Texas Press publisher-place: Austin title: "The cast of character: Style in Greek literature" title-short: Cast of character type: book --- ``` pandoc-3.1.3/test/command/biblatex-yoon.md0000644000000000000000000000313207346545000016645 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @comment{ Adapted from biblatex-example.bib Formatted with pandoc and chicago-author-date.csl, 2013-10-23: (Yoon et al. 2006) Yoon, Myeong S., Dowook Ryu, Jeongryul Kim, and Kyo Han Ahn. 2006. “Palladium Pincer Complexes with Reduced Bond Angle Strain: Efficient Catalysts for the Heck Reaction.” *Organometallics* 25 (10): 2409–2411. Formatted with pandoc and apa.csl, 2013-10-23: (Yoon, Ryu, Kim, & Ahn, 2006) Yoon, M. S., Ryu, D., Kim, J., & Ahn, K. H. (2006). Palladium pincer complexes with reduced bond angle strain: Efficient catalysts for the Heck reaction. *Organometallics*, *25*(10), 2409–2411. } @Article{yoon, author = {Yoon, Myeong S. and Ryu, Dowook and Kim, Jeongryul and Ahn, Kyo Han}, title = {Palladium pincer complexes with reduced bond angle strain: efficient catalysts for the {Heck} reaction}, journaltitle = {Organometallics}, date = 2006, volume = 25, number = 10, pages = {2409-2411}, indextitle = {Palladium pincer complexes}, } ^D --- nocite: "[@*]" references: - author: - family: Yoon given: Myeong S. - family: Ryu given: Dowook - family: Kim given: Jeongryul - family: Ahn given: Kyo Han container-title: Organometallics id: yoon issue: 10 issued: 2006 page: 2409-2411 title: "Palladium pincer complexes with reduced bond angle strain: Efficient catalysts for the Heck reaction" title-short: Palladium pincer complexes with reduced bond angle strain type: article-journal volume: 25 --- ``` pandoc-3.1.3/test/command/biblio.bib0000644000000000000000000000071307346545000015467 0ustar0000000000000000@Book{item1, author="John Doe", title="First Book", year="2005", address="Cambridge", publisher="Cambridge University Press" } @Article{item2, author="John Doe", title="Article", year="2006", journal="Journal of Generic Studies", volume="6", pages="33-34" } @InCollection{пункт3, author="John Doe and Jenny Roe", title="Why Water Is Wet", booktitle="Third Book", editor="Sam Smith", publisher="Oxford University Press", address="Oxford", year="2007" } pandoc-3.1.3/test/command/bibtex-basic.md0000644000000000000000000000223707346545000016432 0ustar0000000000000000``` % pandoc -f biblatex -t markdown -s @Book{item1, author="John Doe", title="First Book", year="2005", address="Cambridge", publisher="Cambridge University Press" } @Article{item2, author="John Doe", title="Article", year="2006", journal="Journal of Generic Studies", volume="6", pages="33-34" } @InCollection{пункт3, author="John Doe and Jenny Roe", title="Why Water Is Wet", booktitle="Third Book", editor="Sam Smith", publisher="Oxford University Press", address="Oxford", year="2007" } ^D --- nocite: "[@*]" references: - author: - family: Doe given: John id: item1 issued: 2005 publisher: Cambridge University Press publisher-place: Cambridge title: First book type: book - author: - family: Doe given: John container-title: Journal of Generic Studies id: item2 issued: 2006 page: 33-34 title: Article type: article-journal volume: 6 - author: - family: Doe given: John - family: Roe given: Jenny container-title: Third book editor: - family: Smith given: Sam id: пункт3 issued: 2007 publisher: Oxford University Press publisher-place: Oxford title: Why water is wet type: chapter --- ``` pandoc-3.1.3/test/command/bioethics.csl0000644000000000000000000001701607346545000016231 0ustar0000000000000000 pandoc-3.1.3/test/command/chap1/0000755000000000000000000000000007346545000014544 5ustar0000000000000000pandoc-3.1.3/test/command/chap1/spider.png0000644000000000000000000002106607346545000016545 0ustar0000000000000000PNG  IHDRxa gAMA abKGD̿ pHYs  tIME+SR !UIDATxw`ս?W,F!#^\mnZ{իWjWZq * $%0RPO'<缟>yTHDRA_XCȧHT{C{,7e[*Ҭ; OV۠Idu[V3-s:4krѲݦ]P^p,Ԇ$ Hc(]1$@&oS.-Z@y #ԭJ3 MjݯɾGuϣD́O-kRxZI0IyS<t3>S=i}Xl0EꌴT ޶ mvV=\3SSgd\[eƹGk'7ֽzJ-tO94*3T/[5V˜1xۃТO@IѦ{[j,Te6BwF&$I[i_РHr q}lkԢ] sN,Dȷ )p "^ -z[3MHI.0L.zbrwHR5_D h_syڴXk~re:"_Qb.ꭶ^B'eꪯ(Y`ӤE ͷT#ە: Mjnj9NT Y \cڮMbXL4AgZi /`GbnG{d}!Jo[MB\ t\eCպ6]]'][M[IqJ{to?y&.#m MFh=J4띮AT)]:w pRr_ՎA'J”)Bhwm]kqzx@C ͷ$LS~V턞d}.υ?ۭ4TF(8H5ZC?wIEu0tӿpfN*1NI.L;RI9L<͑,AWhnms5JoRUKH4titff~PVZCP^ 4P\e`TdꮳklW^q^m]sv%)T9Q:Mxm͢XXVmgWL3(7<=ܦdmy^K3rU ϑAjWlWmr AF՘3*2\f̶6ˑ##Fp_lB>',e8] W"^{YxU_&ۍmmnCH_E|u)79M'f"+r@wCT٥,读6EJ.ruOk+ߙ)u^SY .J7DfQ [YNk#pZi ' \[agm? vtVI4͋*:SB]eᑙznB ubC[BI=G2Io.nPexzHuDؠZm" <Xx-faig٭R-M8NwvIum3f[d>?o $Z,_ɶWRW.2 j-He V6HK ^Mn!WV,Mv}mVVk8(zq  b&ZIHoyF̐~Pg:{<1l5^O5 UB9Jx&[$QVVڠcM^~*K­`cF Ѫiʝ\Zg<&Ukbە:,릋U)$uR-W`fvqb$ pXZ2ۑfHܠb*vURL,Ͱ^ڥ "MͶ~,f!CyX(#h"6vYwL"^M> s;]avIARq-5V2t#V0EI*d}IZi;hM4E55nsmQrq%$E<di$gI7.6󪽋RW'hs4;rt)VR[xZOpyzU;8}:O 5uzEu.5;"nA+04z8C(uvNIۢ5n4ܓ't.Q/˝]A2P}]bh3/hSer`m>6Z=ofdOB:,TM2:y^7[%G?eqEǯr>wV1gU)?-]%"VB12zD=b0O|o}SlQT*.!6tib  A$m>"RO"֫galnxRaFr}+Yo!2s] ,!V9j &*pYvZ`TjUl [ FP$4N)5Y!z,(>˱ݏ>lwdt$av7a勇ݮrCjAWSQ7]kr{o^c'vB=B Y J4"~.p$NY=р0ev).ԾS-Rn/ګn됻<< s=NJmmA;ժ3WZs${i%Or+ %-߇"Dx "r,#`QJIfש< gళ{.2ZIJD1R!p`3XŲ @O/J4H71^L:haG}ڵ뤗]O-,3(|4.C?4_LE1ם%_vB#("EXZc!EՍCV,-AO'>4<EKB)\fMM4h$Yr$4y~&*>Q@:UJ &uI2XKM2Sa?b?%kw@Ol$H0Z[bY rCzِ- ӯYZZbZ!.0e,pztS2Lj0SN%G2)V3v/ܞc^'D8]j2P5 qYB\Le^=j(-Fbo-Pn5OWHKDjz87XJS  ζԍv[pZ. z.urb1VIJiYY)\EY#r~(}at,1Qev=Oqʄ+LVicrsQNWPu{Z=D:]&YFf]HzFI jJVG01f*VUt*0SM5Zb̒O^VcyQ2AsnDݣ:YZꐕ~MyF[RyB$kbV1c~iSyJ/X䃣*B::q]`@7^|_j{,(Uv8P M|n\d} pSq֩@cWxߡn!\iqr0‹VnY!A4+su?Gs&_;߻4pC%1`T(O;c3~dyV U6˳Z޶iz#"MVY4F'd}Ⲣ,44w 5by"Nt2CFⱣ0~e\ozDHv(ƹ]MvHm,Z6tM>UfrIRLhscwa[L+tQqv\0fbNG}Wǐl*7+Nq4X(K4sfJ!Q:ieaT]+"PwYHq1~cG/H%smت; 5}B=+Vxɇ="9^5en@|1|fb/Q:MNhEjcm“Q5[-MW, g4u"P] )l%*}N0YHNU T_kM9a]Bӭ0*5GiŇSYlT#4k2$\N#[ػƾO.K)tsv)0r|< /69yRwNʮʔ!~CZzd^y 1Q҉CP(ם/JSEj1[uXѽڇ(?QzHjErJ m~>JM8eQڄk>w-ސgI-hTP S#Qg!BmLqH \&zJKxXl=5\_7S"S,EH=z\︌iFY\'_Eاz!'̝!m1M Z-JZsF CUg :jd; ?!y"䛌qZLsg.K?W8l5CqTC p Zq!PH-ۊ-Fc֪pp˴RgQkR]NT[Hչ3o2SuJE\T5re00Tnʧ."dZ7JB_{i|D9PG!gA*{7X:seywRt]RodZ,N7_5F`I切}#ߐ\1UY걾xny"Vf] G0#V1`k֭w"[κgݔ+GMYyKQ3cr`krdRONA_ܟ sҶDwav̉`)ĝi$^˙'\a0nÍ^ʙԑ9C's*9? nOKPc}q.7ss9G22@HtV0f~q}of-ile@$=UťViZkI{%bfiѳU՛\A2BSV`;߮L֧z.]BcO$>Bh6PSe7T[ 7OP I;T ZMjB_,C-HVaXVkVnצn9MD} j%Yx'2FZ(x & &re{3~  RS%FS퐑v#zT33ļ56Mpp ̚lz[2 5lΰT}u^\n-7;~+TFjƽ\w,.b!>b;)ø?P]Ţ~cvg٥Ƹݥy\aRʼMאaܙ-s=_܎oweY٭zC#"8fL 5Qs8,xChLw/R)m h3$j209/btu؃*:)*X[r)M$>6=ּühM7Sǯo5b{JaD|U>Xn_~w}F{iKD| `Uf/#<SHi/wfdX:M"i6`'z2V&|4 GۘojJZv}z"p۴K3IܭI{;dg-m%I^/a[wpEm3'|uK;2emEl,3$-bk ؘқ.W41'Yg~UX8-} ;$zlz P z"1RWjpg<_df)dd)ZVwQxTwmw-їZm/UUi6 W]j/ ex%~_:tb_^NuEb˗u 5dp 2fS(Nتi8h1яi^vFߦfA +Z%^[a:7)%|]nO&`߿%HU gr9~揮0@ePqM=|8p"vD\co׷} ScsJu )i{jrX~VSՂiU!jKy=hB#;,2WuZA?t͇:o@tIFLpf^|.iVl Zo/ZR͘y`o j:?w_ pandoc-3.1.3/test/command/chicago-author-date-with-original-date-and-status.csl0000644000000000000000000004475207346545000025646 0ustar0000000000000000 pandoc-3.1.3/test/command/chicago-fullnote-bibliography.csl0000644000000000000000000013331407346545000022154 0ustar0000000000000000 pandoc-3.1.3/test/command/chicago-note-bibliography.csl0000644000000000000000000007656307346545000021305 0ustar0000000000000000 pandoc-3.1.3/test/command/chinese-gb7714-2005-numeric.csl0000644000000000000000000001732307346545000020634 0ustar0000000000000000 pandoc-3.1.3/test/command/cite-in-inline-note.md0000644000000000000000000000104507346545000017641 0ustar0000000000000000``` % pandoc -t native foo^[bar [@doe]] ^D [ Para [ Str "foo" , Note [ Para [ Str "bar" , Space , Cite [ Citation { citationId = "doe" , citationPrefix = [] , citationSuffix = [] , citationMode = NormalCitation , citationNoteNum = 1 , citationHash = 0 } ] [ Str "[@doe]" ] ] ] ] ] ``` pandoc-3.1.3/test/command/citeproc-17.md0000644000000000000000000000024707346545000016132 0ustar0000000000000000``` % pandoc -t csljson --- references: - id: foo type: book title: "Hi & Low" ... ^D [ { "id": "foo", "title": "Hi & Low", "type": "book" } ] ``` pandoc-3.1.3/test/command/citeproc-20.md0000644000000000000000000000106107346545000016117 0ustar0000000000000000``` % pandoc --citeproc -t plain Lorem ipsum dolor sit amet^[Consectetur adipisicing elit: «sed do eiusmod tempor incididunt» [@doe_1989, 15].]. --- csl: command/chicago-fullnote-bibliography.csl suppress-bibliography: true references: - id: doe_1989 author: - family: Doe given: John issued: - year: 1989 publisher: ABC publisher-place: New York title: Tempor type: book ... ^D Lorem ipsum dolor sit amet[1]. [1] Consectetur adipisicing elit: «sed do eiusmod tempor incididunt» (John Doe, Tempor (New York: ABC, 1989), 15). ``` pandoc-3.1.3/test/command/citeproc-7a.md0000644000000000000000000000101007346545000016177 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: command/chicago-fullnote-bibliography.csl references: - id: test title: Test author: family: Doe given: John --- Test [@test, 12]. Test [@test, 12]. Test.^[asdfasdf] Test [@test, 12]. ^D Test.[^1] Test.[^2] Test.[^3] Test.[^4] ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-test .csl-entry} Doe, John. "Test," n.d. ::: ::: [^1]: John Doe, "Test," n.d., 12. [^2]: Doe, 12. [^3]: asdfasdf [^4]: Doe, "Test," 12. ``` pandoc-3.1.3/test/command/citeproc-7b.md0000644000000000000000000000061007346545000016205 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: command/bioethics.csl references: - id: test title: Test author: family: Doe given: John --- Irrelevant.^[note] Test [@test, 12]. Test.^[asdfasdf] Test [@test, 12]. ^D Irrelevant.[^1] Test.[^2] Test.[^3] Test.[^4] [^1]: note [^2]: J. Doe. ***Test***: 12. [^3]: asdfasdf [^4]: Doe (cited n. 2) : 12. ``` pandoc-3.1.3/test/command/citeproc-87.md0000644000000000000000000000164307346545000016142 0ustar0000000000000000``` % pandoc --citeproc -Mlang=it-IT -t markdown-citations Foo [@a 50: «Disse: "bar"»]. «Disse: "baz"» --- suppress-bibliography: true references: - id: a author: - literal: Aristotele title: Metafisica type: book ... ^D Foo (Aristotele, s.d., 50: «Disse: "bar"»). «Disse: "baz"» ``` The Quoted is passed to citeproc as a Span ("",["csl-quoted"],[]) so that flipflopping and localization occur. ``` % pandoc -C -t plain -Mlang=en --- references: - id: a author: - literal: Aristotele title: Metafisica et "Physica" type: article-journal ... Foo [@a 50]. ^D Foo (Aristotele, n.d., 50). Aristotele. n.d. “Metafisica Et ‘Physica’.” ``` ``` % pandoc -C -t plain -Mlang=it --- references: - id: a author: - literal: Aristotele title: Metafisica et "Physica" type: article-journal ... Foo [@a 50]. ^D Foo (Aristotele, s.d., 50). Aristotele. s.d. «Metafisica et “Physica”». ``` pandoc-3.1.3/test/command/citeproc-author-in-text-suffix.md0000644000000000000000000000131407346545000022071 0ustar0000000000000000``` % pandoc -t native @a [p. 33; @b] ^D [ Para [ Cite [ Citation { citationId = "a" , citationPrefix = [] , citationSuffix = [ Str "p.\160\&33" ] , citationMode = AuthorInText , citationNoteNum = 1 , citationHash = 0 } , Citation { citationId = "b" , citationPrefix = [] , citationSuffix = [] , citationMode = NormalCitation , citationNoteNum = 1 , citationHash = 0 } ] [ Str "@a" , Space , Str "[p." , Space , Str "33;" , Space , Str "@b]" ] ] ] ``` pandoc-3.1.3/test/command/corrupt.svg0000644000000000000000000000107107346545000015766 0ustar0000000000000000Lorem ipsum dolor sit amet etiam. A pede dolor neque pretium luctus pharetra vel rutrum. Orci nonummy ac. At eu est tempor proin wisi. Nunc tincidunt proin. Suspendisse lorem commodo. Integer diam diam semper commodo dictum et tellus eu ultrices nec erat pulvinar porttitor nulla nulla mauris orci libero eros elementum et possimus voluptate. Velit morbi et. Luctus diam in. Lorem tincidunt sem dolor rerum mauris. Dis taciti posuere pellentesque sed rutrum. Lectus donec fusce in dictum pede. In etiam congue. Aliquam aliquet elit arcu mauris enim. Risus at enim. pandoc-3.1.3/test/command/csv.md0000644000000000000000000000523707346545000014674 0ustar0000000000000000``` % pandoc -f csv -t native Fruit,Price,Quantity Apple,25 cents,33 """Navel"" Orange","35 cents",22 ,,45 ^D [ Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Fruit" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Price" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Quantity" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Apple" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "25" , Space , Str "cents" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "33" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "\"Navel\"" , Space , Str "Orange" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "35" , Space , Str "cents" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "22" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "45" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ``` pandoc-3.1.3/test/command/defaults-inheritance-1.md0000644000000000000000000000007307346545000020326 0ustar0000000000000000``` % pandoc -d command/defaults3 # Header ^D # Header ``` pandoc-3.1.3/test/command/defaults-inheritance-2.md0000644000000000000000000000017007346545000020325 0ustar0000000000000000``` % pandoc -d command/defaults6 2>&1 ^D Error: Circular defaults file reference in 'command/defaults7.yaml' => 63 ``` pandoc-3.1.3/test/command/defaults-inheritance-3.md0000644000000000000000000000010207346545000020321 0ustar0000000000000000``` % pandoc -d command/defaults8

    Header

    ^D # Header ``` pandoc-3.1.3/test/command/defaults1.yaml0000644000000000000000000000004107346545000016317 0ustar0000000000000000include-in-header: command/A.txt pandoc-3.1.3/test/command/defaults2.yaml0000644000000000000000000000006407346545000016325 0ustar0000000000000000include-in-header: - command/B.txt - command/C.txt pandoc-3.1.3/test/command/defaults3.yaml0000644000000000000000000000010307346545000016320 0ustar0000000000000000defaults: - command/defaults4 - command/defaults5 to: markdown pandoc-3.1.3/test/command/defaults4.yaml0000644000000000000000000000005307346545000016325 0ustar0000000000000000from: html defaults: - command/defaults5 pandoc-3.1.3/test/command/defaults5.yaml0000644000000000000000000000003007346545000016321 0ustar0000000000000000from: markdown to: html pandoc-3.1.3/test/command/defaults6.yaml0000644000000000000000000000004007346545000016323 0ustar0000000000000000defaults: - command/defaults7 pandoc-3.1.3/test/command/defaults7.yaml0000644000000000000000000000004007346545000016324 0ustar0000000000000000defaults: - command/defaults6 pandoc-3.1.3/test/command/defaults8.yaml0000644000000000000000000000004707346545000016334 0ustar0000000000000000from: html defaults: command/defaults9 pandoc-3.1.3/test/command/defaults9.yaml0000644000000000000000000000001507346545000016330 0ustar0000000000000000to: markdown pandoc-3.1.3/test/command/din-1505-2.csl0000644000000000000000000004245007346545000015561 0ustar0000000000000000 pandoc-3.1.3/test/command/docbook-bibliography.md0000644000000000000000000000170607346545000020167 0ustar0000000000000000``` % pandoc -f docbook -t native --quiet Document References [1] First reference [2] Second reference [3] Third reference ^D [ Header 1 ( "" , [] , [] ) [ Str "Document" , Space , Str "References" ] , Para [ Span ( "refTheFirst" , [] , [] ) [] , Str "[1]" , Space , Str "First" , Space , Str "reference" ] , Para [ Span ( "refTheSecond" , [] , [] ) [] , Str "[2]" , Space , Str "Second" , Space , Str "reference" ] , Para [ Span ( "refTheThird" , [] , [] ) [] , Str "[3]" , Space , Str "Third" , Space , Str "reference" ] ] ``` pandoc-3.1.3/test/command/dots.md0000644000000000000000000000020407346545000015037 0ustar0000000000000000``` % pandoc -f latex -t native \dots \ldots \vdots ^D [ Para [ Str "\8230" ] , Para [ Str "\8230" ] , Para [ Str "\8942" ] ] ``` pandoc-3.1.3/test/command/duplicate_attributes.md0000644000000000000000000000032107346545000020306 0ustar0000000000000000``` % pandoc [span]{.foobar style="color:blue" class="zip" style="color:red"} ^D 2> [WARNING] Ignoring duplicate attribute style="color:red".

    span

    ``` pandoc-3.1.3/test/command/emoji.md0000644000000000000000000000041507346545000015175 0ustar0000000000000000``` % pandoc -t markdown+emoji -f markdown+emoji :smile: ^D :smile: ``` ``` % pandoc -t markdown-emoji -f markdown+emoji :smile: ^D 😄 ``` ``` % pandoc -t gfm -f markdown+emoji :smile: ^D :smile: ``` ``` % pandoc -t gfm-emoji -f markdown+emoji :smile: ^D 😄 ``` pandoc-3.1.3/test/command/empty_paragraphs.md0000644000000000000000000000341007346545000017436 0ustar0000000000000000``` % pandoc -f native -t docx -o - | pandoc -f docx -t native [Para [Str "hi"], Para [], Para [], Para [Str "lo"]] ^D [ Para [ Str "hi" ] , Para [ Str "lo" ] ] ``` ``` % pandoc -f native -t docx+empty_paragraphs -o - | pandoc -f docx -t native [Para [Str "hi"], Para [], Para [], Para [Str "lo"]] ^D [ Para [ Str "hi" ] , Para [ Str "lo" ] ] ``` ``` % pandoc -f native -t docx -o - | pandoc -f docx+empty_paragraphs -t native [Para [Str "hi"], Para [], Para [], Para [Str "lo"]] ^D [ Para [ Str "hi" ] , Para [ Str "lo" ] ] ``` ``` % pandoc -f native -t docx+empty_paragraphs -o - | pandoc -f docx+empty_paragraphs -t native [Para [Str "hi"], Para [], Para [], Para [Str "lo"]] ^D [ Para [ Str "hi" ] , Para [] , Para [] , Para [ Str "lo" ] ] ``` ``` % pandoc -f native -t html5 [Para [Str "hi"], Para [], Para [], Para [Str "lo"]] ^D

    hi

    lo

    ``` ``` % pandoc -f native -t html5+empty_paragraphs [Para [Str "hi"], Para [], Para [], Para [Str "lo"]] ^D

    hi

    lo

    ``` ``` % pandoc -f html+empty_paragraphs -t native

    hi

    lo

    ^D [ Para [ Str "hi" ] , Para [] , Para [] , Para [ Str "lo" ] ] ``` ``` % pandoc -f html -t native

    hi

    lo

    ^D [ Para [ Str "hi" ] , Para [ Str "lo" ] ] ``` ``` % pandoc -f native -t opendocument+empty_paragraphs [Para [Str "hi"], Para [], Para [], Para [Str "lo"]] ^D hi lo ``` ``` % pandoc -f native -t opendocument [Para [Str "hi"], Para [], Para [], Para [Str "lo"]] ^D hi lo ``` pandoc-3.1.3/test/command/figures-context.md0000644000000000000000000000243207346545000017221 0ustar0000000000000000# Figure with one image, caption and label ``` % pandoc -t context -f html
    The Mandrill, a photo used in image processing tests.
    ^D \startplacefigure[title={\quotation{The Mandrill}, a photo used in image processing tests.}] {\externalfigure[mandrill.jpg]} \stopplacefigure ``` # Nested figures ``` % pandoc -t context -f html
    The Mandrill is a commonly used test image.
    Another test image. This one is called peppers.
    Signal processing test images.
    ^D \startplacefigure[reference=test-images,title={Signal processing test images.}] \startfloatcombination \startplacefigure[reference=mandrill,title={\quotation{The Mandrill} is a commonly used test image.}] {\externalfigure[../testing/mandrill.jpg]} \stopplacefigure \startplacefigure[reference=peppers,title={Another test image. This one is called \quotation{peppers}.}] {\externalfigure[../testing/peppers.webp]} \stopplacefigure \stopfloatcombination \stopplacefigure ``` pandoc-3.1.3/test/command/figures-fb2.md0000644000000000000000000000073407346545000016211 0ustar0000000000000000``` % pandoc -f native -t fb2 [Figure ("fig-id",[],[]) (Caption Nothing []) [Para [Str "content"]]] ^D unrecognisedpandoc<p />

    content

    ``` pandoc-3.1.3/test/command/figures-haddock.md0000644000000000000000000000017007346545000017127 0ustar0000000000000000``` % pandoc -f native -t haddock [Figure ("fig-id",[],[]) (Caption Nothing []) [Para [Str "content"]]] ^D content ``` pandoc-3.1.3/test/command/figures-html.md0000644000000000000000000000332707346545000016505 0ustar0000000000000000# Writer HTML5 figure with caption and content. ``` % pandoc -f native -t html5 [Figure ("fig-id",[],[]) (Caption Nothing [Plain [Str "caption"]]) [Para [Str "content"]]] ^D

    content

    caption
    ``` HTML5 figure with NO caption and content. ``` % pandoc -f native -t html5 [Figure ("fig-id",[],[]) (Caption Nothing []) [Para [Str "content"]]] ^D

    content

    ``` HTML4 figure with caption and content. ``` % pandoc -f native -t html4 [Figure ("fig-id",[],[]) (Caption Nothing [Plain [Str "caption"]]) [Para [Str "content"]]] ^D

    content

    caption
    ``` HTML4 figure with NO caption and content. ``` % pandoc -f native -t html4 [Figure ("fig-id",[],[]) (Caption Nothing []) [Para [Str "content"]]] ^D

    content

    ``` # Reader Figure with caption and multiple elements. ``` % pandoc -f html -t native
    • ITEM
    CAP2
    ^D [ Figure ( "" , [ "important" ] , [] ) (Caption Nothing [ Plain [ Str "CAP2" ] ]) [ Plain [ Image ( "" , [] , [] ) [] ( "../media/rId25.jpg" , "" ) ] , BulletList [ [ Plain [ Str "ITEM" ] ] ] ] ] ``` Figure without caption. ``` % pandoc -f html -t native
    • ITEM
    ^D [ Figure ( "" , [ "important" ] , [] ) (Caption Nothing []) [ Plain [ Image ( "" , [] , [] ) [] ( "../media/rId25.jpg" , "" ) ] , BulletList [ [ Plain [ Str "ITEM" ] ] ] ] ] ``` pandoc-3.1.3/test/command/figures-jats.md0000644000000000000000000000153507346545000016501 0ustar0000000000000000Figure float with caption at the figure level. ``` % pandoc -f native -t jats [Figure ("fig-id",[],[]) (Caption Nothing [Para [Str "Caption"]]) [Para [Str "Text"], Para [Image ("fig-id-2",[],[]) [] ("foo.png", "fig:")]]] ^D

    Caption

    Text

    ``` Figure float with caption and alt text. ``` % pandoc -f native -t jats [Figure ("fig-id",[],[]) (Caption Nothing [Para [Str "Caption"]]) [Para [Str "Text"], Para [Image ("fig-id-2",[],[]) [Str "alt"] ("foo.png", "fig:")]]] ^D

    Caption

    Text

    alt
    ``` pandoc-3.1.3/test/command/figures-jira.md0000644000000000000000000000030107346545000016453 0ustar0000000000000000A figure with title ``` % pandoc -f native -t jira [Figure ("fig-id",[],[("title","This is the title")]) (Caption Nothing []) []] ^D {panel:title=This is the title} {anchor:fig-id} {panel} ``` pandoc-3.1.3/test/command/figures-latex.md0000644000000000000000000000366107346545000016657 0ustar0000000000000000# Figure with one image, caption and label ``` % pandoc -f latex -t native \begin{document} \begin{figure} \includegraphics{../../media/rId25.jpg} \caption{CAP} \label{LAB} \end{figure} \end{document} ^D [ Figure ( "LAB" , [] , [] ) (Caption Nothing [ Plain [ Str "CAP" ] ]) [ Plain [ Image ( "" , [] , [] ) [] ( "../../media/rId25.jpg" , "" ) ] ] ] ``` # Nested figures ``` % pandoc -f latex -t native \begin{figure} \begin{subfigure}[b]{0.5\textwidth} \begin{subfigure}[b]{0.5\textwidth} \centering \includegraphics{test/media/rId25.jpg} \caption{CAP1.1} \end{subfigure} \begin{subfigure}[b]{0.5\textwidth} \centering \includegraphics{test/media/rId25.jpg} \caption{CAP1.2} \end{subfigure} \caption{CAP1} \label{fig:inner1} \end{subfigure} \begin{subfigure}[b]{0.5\textwidth} \includegraphics{test/media/rId25.jpg} \caption{CAP2} \label{fig:inner2} \end{subfigure} \caption{CAP} \label{fig:outer} \end{figure} ^D [ Figure ( "fig:outer" , [] , [] ) (Caption Nothing [ Plain [ Str "CAP" ] ]) [ Figure ( "fig:inner1" , [] , [] ) (Caption Nothing [ Plain [ Str "CAP1" ] ]) [ Figure ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "CAP1.1" ] ]) [ Plain [ Image ( "" , [] , [] ) [] ( "test/media/rId25.jpg" , "" ) ] ] , Figure ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "CAP1.2" ] ]) [ Plain [ Image ( "" , [] , [] ) [] ( "test/media/rId25.jpg" , "" ) ] ] ] , Figure ( "fig:inner2" , [] , [] ) (Caption Nothing [ Plain [ Str "CAP2" ] ]) [ Plain [ Image ( "" , [] , [] ) [] ( "test/media/rId25.jpg" , "" ) ] ] ] ] ``` pandoc-3.1.3/test/command/figures-markdown.md0000644000000000000000000000050007346545000017351 0ustar0000000000000000Figure float with caption at the figure level. ``` % pandoc -f native -t markdown [Figure ("fig-id",[],[]) (Caption Nothing [Para [Str "Caption"]]) [Para [Image ("",[],[]) [] ("foo.png", "fig:")]]] ^D

    Caption

    ``` pandoc-3.1.3/test/command/figures-mediawiki.md0000644000000000000000000000042707346545000017502 0ustar0000000000000000Figure float with caption at the figure level. ``` % pandoc -f native -t mediawiki [Figure ("fig-id",[],[]) (Caption Nothing [Para [Str "Caption"]]) [Para [Image ("",[],[]) [] ("foo.png", "fig:")]]] ^D
    [[File:foo.png|thumb|none]]
    ``` pandoc-3.1.3/test/command/figures-org.md0000644000000000000000000000035607346545000016327 0ustar0000000000000000``` % pandoc -f native -t org [Figure ("fig-id",[],[]) (Caption Nothing []) [Para [Str "content"]]] ^D <> content ``` ``` % pandoc -f native -t org [Figure ("",[],[]) (Caption Nothing []) [Para [Str "content"]]] ^D content ``` pandoc-3.1.3/test/command/figures-rst.md0000644000000000000000000000035407346545000016346 0ustar0000000000000000Figure float with caption at the figure level. ``` % pandoc -f native -t rst [Figure ("fig-id",[],[]) (Caption Nothing [Para [Str "Caption"]]) [Para [Image ("",[],[]) [] ("foo.png", "fig:")]]] ^D .. figure:: foo.png :alt: fig: ``` pandoc-3.1.3/test/command/figures-texinfo.md0000644000000000000000000000473307346545000017217 0ustar0000000000000000Figure float with caption at the figure level. ``` % pandoc -f native -t texinfo [Figure ("fig-id",[],[]) (Caption Nothing [Para [Str "Caption"]]) [Para [Image ("",[],[]) [] ("foo.png", "fig:")]]] ^D @node Top @top Top @float Figure @image{foo,,,,png} @caption{Caption} @end float ``` Float that has no caption and doesn't contain a `SimpleFigure` ``` % pandoc -f native -t texinfo [Figure ("fig-id",[],[]) (Caption Nothing []) [Para [Image ("",[],[]) [] ("foo.png", "")]]] ^D @node Top @top Top @float @image{foo,,,,png} @end float ``` Table float with caption at the figure level. ``` % pandoc -f native -t texinfo [Figure ("fig-id",[],[]) (Caption Nothing [Para [Str "Caption"]]) [Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidthDefault) ,(AlignDefault,ColWidthDefault) ,(AlignDefault,ColWidthDefault)] (TableHead ("",[],[]) [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Fruit"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Price"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Quantity"]]]]) [(TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Apple"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "25",Space,Str "cents"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "33"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "\"Navel\"",Space,Str "Orange"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "35",Space,Str "cents"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "22"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "45"]]]])] (TableFoot ("",[],[]) [])]] ^D @node Top @top Top @float Table @multitable {"Navel" Orange} {35 cents} {Quantity} @headitem Fruit @tab Price @tab Quantity @item Apple @tab 25 cents @tab 33 @item "Navel" Orange @tab 35 cents @tab 22 @item 45 @end multitable @caption{Caption} @end float ``` Float the isn't a table nor a figure. ``` % pandoc -f native -t texinfo [Figure ("fig-id",[],[]) (Caption Nothing [Para[ Str "Caption"]]) [Para [Str "Content"]]] ^D @node Top @top Top @float Content @caption{Caption} @end float ``` pandoc-3.1.3/test/command/figures-textile.md0000644000000000000000000000063707346545000017220 0ustar0000000000000000``` % pandoc -f native -t textile [Figure ("fig-id",[],[]) (Caption Nothing [Para [Str "Caption"]]) [Para [Image ("",[],[]) [] ("foo.png", "")]]] ^D
    Caption
    !foo.png!
    ``` ``` % pandoc -f native -t textile [Figure ("fig-id",[],[]) (Caption Nothing []) [Para [Image ("",[],[]) [] ("foo.png", "")]]] ^D
    !foo.png!
    ``` pandoc-3.1.3/test/command/figures-xwiki.md0000644000000000000000000000022507346545000016666 0ustar0000000000000000``` % pandoc -f native -t xwiki [Figure ("fig-id",[],[]) (Caption Nothing []) [Para [Str "content"]]] ^D ((( {{id name="fig-id" /}}content ))) ``` pandoc-3.1.3/test/command/figures-zimwiki.md0000644000000000000000000000017207346545000017217 0ustar0000000000000000``` % pandoc -f native -t zimwiki [Figure ("fig-id",[],[]) (Caption Nothing []) [Para [Str "content"]]] ^D content ``` pandoc-3.1.3/test/command/file1.txt0000644000000000000000000000022007346545000015303 0ustar0000000000000000# Zed [foo]: bar [foo] and [Zed](#zed) and [other Zed](command/file2.txt#zed) and [other file](command/file2.txt) and [foreign Zed](c.md#zed) pandoc-3.1.3/test/command/file2.txt0000644000000000000000000000003207346545000015305 0ustar0000000000000000## Zed [foo]: baz [foo] pandoc-3.1.3/test/command/gfm.md0000644000000000000000000001013707346545000014645 0ustar0000000000000000gfm tests: ``` % pandoc -f gfm -t native | Fruit | Price | | ----- | ----: | | apple | 0.13 | | orange|1.12| ^D [ Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignRight , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Fruit" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Price" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "apple" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "0.13" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "orange" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1.12" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ``` ``` % pandoc -f gfm -t native ~~stricken out~~ ^D [ Para [ Strikeout [ Str "stricken" , Space , Str "out" ] ] ] ``` ``` % pandoc -f gfm -t native # Header ## Header # -foo-bar_baz ^D [ Header 1 ( "header" , [] , [] ) [ Str "Header" ] , Header 2 ( "header-1" , [] , [] ) [ Str "Header" ] , Header 1 ( "-foo-bar_baz" , [] , [] ) [ Str "-foo-bar_baz" ] ] ``` ``` % pandoc -f gfm -t native My:thumbsup:emoji:heart: ^D [ Para [ Str "My" , Span ( "" , [ "emoji" ] , [ ( "data-emoji" , "thumbsup" ) ] ) [ Str "\128077" ] , Str "emoji" , Span ( "" , [ "emoji" ] , [ ( "data-emoji" , "heart" ) ] ) [ Str "\10084\65039" ] ] ] ``` ``` % pandoc -f gfm -t native "hi" ^D [ Para [ Str "\"hi\"" ] ] ``` ``` % pandoc -f gfm+smart -t native "hi" ^D [ Para [ Quoted DoubleQuote [ Str "hi" ] ] ] ``` ``` % pandoc -t gfm -f native [Table ("",[],[]) (Caption Nothing [Plain [Str "The",Space,Str "caption."]]) [(AlignDefault,ColWidthDefault) ,(AlignRight,ColWidthDefault)] (TableHead ("",[],[]) [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Fruit"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Price"]]]]) [(TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "apple"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "0.13"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "orange"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1.12"]]]])] (TableFoot ("",[],[]) [])] ^D | Fruit | Price | |--------|------:| | apple | 0.13 | | orange | 1.12 | The caption. ``` ``` % pandoc -f gfm-smart -t gfm+smart “hi” ^D "hi" ``` ``` % pandoc -f gfm+smart -t gfm-smart "hi" ^D “hi” ``` ``` % pandoc -f gfm+smart -t gfm+smart "hi" ^D "hi" ``` ``` % pandoc -f gfm+hard_line_breaks -t native hi hi ^D [ Para [ Str "hi" , LineBreak , Str "hi" ] ] ``` ``` % pandoc -f gfm -t native - [ ] foo - [x] bar ^D [ BulletList [ [ Plain [ Str "\9744" , Space , Str "foo" ] ] , [ Plain [ Str "\9746" , Space , Str "bar" ] ] ] ] ``` ``` % pandoc -f gfm-task_lists -t native - [ ] foo - [x] bar ^D [ BulletList [ [ Plain [ Str "[" , Space , Str "]" , Space , Str "foo" ] ] , [ Plain [ Str "[x]" , Space , Str "bar" ] ] ] ] ``` ``` % pandoc -f gfm -t gfm - [ ] foo - [x] bar ^D - [ ] foo - [x] bar ``` pandoc-3.1.3/test/command/harvard-university-of-kent.csl0000644000000000000000000002064407346545000021470 0ustar0000000000000000 pandoc-3.1.3/test/command/hspace.md0000644000000000000000000000254407346545000015342 0ustar0000000000000000`\hspace` and `\vspace` should count as both block and inline. Here they need to be inline: ``` % pandoc -f markdown+raw_tex -t native \begin{figure} \includegraphics{lalune.jpg} \caption{lalune \hspace{2em} \vspace{1em} bloo} \end{figure} ^D [ RawBlock (Format "tex") "\\begin{figure}\n\\includegraphics{lalune.jpg}\n\\caption{lalune \\hspace{2em} \\vspace{1em} bloo}\n\\end{figure}" ] ``` Here block: ``` % pandoc -f markdown+raw_tex -t native \begin{tabular}[t]{cc|c} \(P\) & \(Q\) & \(P\wedge Q\)\\ \hline T & T &\\ T & F &\\ F & T &\\ F & F &\\ \end{tabular} \hspace{1em} \begin{tabular}[t]{cc|c} \(P\) & \(Q\) & \(P\vee Q\)\\ \hline T & T &\\ T & F &\\ F & T &\\ F & F &\\ \end{tabular} ^D [ RawBlock (Format "tex") "\\begin{tabular}[t]{cc|c}\n\\(P\\) & \\(Q\\) & \\(P\\wedge Q\\)\\\\\n\\hline\nT & T &\\\\\nT & F &\\\\\nF & T &\\\\\nF & F &\\\\\n\\end{tabular}\n\\hspace{1em}\n\\begin{tabular}[t]{cc|c}\n\\(P\\) & \\(Q\\) & \\(P\\vee Q\\)\\\\\n\\hline\nT & T &\\\\\nT & F &\\\\\nF & T &\\\\\nF & F &\\\\\n\\end{tabular}" ] ``` ``` % pandoc -f markdown+raw_tex -t native hi\hspace{1em}there ^D [ Para [ Str "hi" , RawInline (Format "tex") "\\hspace{1em}" , Str "there" ] ] ``` ``` % pandoc -f markdown+raw_tex -t native hi \hspace{1em} there ^D [ Para [ Str "hi" ] , RawBlock (Format "tex") "\\hspace{1em}" , Para [ Str "there" ] ] ``` pandoc-3.1.3/test/command/html-read-figure.md0000644000000000000000000000302607346545000017227 0ustar0000000000000000``` % pandoc -f html -t native
    bar
    ^D [ Figure ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "bar" ] ]) [ Plain [ Image ( "" , [] , [] ) [] ( "foo.png" , "voyage" ) ] ] ] ``` ``` % pandoc -f html -t native
    bar
    ^D [ Figure ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "bar" ] ]) [ Plain [ Image ( "" , [] , [] ) [] ( "foo.png" , "voyage" ) ] ] ] ``` ``` % pandoc -f html -t native
    ^D [ Figure ( "" , [] , [] ) (Caption Nothing []) [ Plain [ Image ( "" , [] , [] ) [] ( "foo.png" , "voyage" ) ] ] ] ``` ``` % pandoc -f html -t native

    bar
    ^D [ Figure ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "bar" ] ]) [ Para [ Image ( "" , [] , [] ) [] ( "foo.png" , "voyage" ) ] ] ] ``` ``` % pandoc -f html -t native
    this is ignored
    bar baz
    ^D [ Figure ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "bar" , Space , Strong [ Str "baz" ] ] ]) [ Plain [ Image ( "" , [] , [] ) [ Str "this" , Space , Str "is" , Space , Str "ignored" ] ( "foo.png" , "voyage" ) ] ] ] ``` pandoc-3.1.3/test/command/html-trim-definition-list-terms.md0000644000000000000000000000046507346545000022243 0ustar0000000000000000``` % pandoc -f html -t native
    foo bar
    baz
    test
    ^D [ DefinitionList [ ( [ Str "foo" , SoftBreak , Str "bar" , LineBreak , Str "baz" ] , [ [ Plain [ Str "test" ] ] ] ) ] ] ``` pandoc-3.1.3/test/command/html-writer-a-in-a.md0000644000000000000000000000032507346545000017410 0ustar0000000000000000a is not allowed inside a in HTML, so we remove links in link text: ``` % pandoc -f native -t html [ Link ("",[],[]) [Link ("",[],[]) [Str "Lo"] ("url2","") ] ("url","") ] ^D
    Lo ``` pandoc-3.1.3/test/command/hyphenat.md0000644000000000000000000000206607346545000015716 0ustar0000000000000000``` % pandoc -f latex -t native electromagnetic\hyp{}endioscopy ^D [ Para [ Str "electromagnetic-endioscopy" ] ] ``` ``` % pandoc -f latex -t native C\colonhyp\bshyp{}Windows\bshyp ^D [ Para [ Str "C:\173\\\173Windows\\\173" ] ] ``` ``` % pandoc -f latex -t native \fshyp{}usr\fshyp{}share\fshyp ^D [ Para [ Str "/\173usr/\173share/\173" ] ] ``` ``` % pandoc -f latex -t native \fshyp{}home\fshyp{}schrieveslaach\fshyp\dothyp{}m2 ^D [ Para [ Str "/\173home/\173schrieveslaach/\173.\173m2" ] ] ``` ``` % pandoc -f latex -t native \nohyphens{Pneumonoultramicroscopicsilicovolcanoconiosis} ^D [ Para [ Str "Pneumonoultramicroscopicsilicovolcanoconiosis" ] ] ``` ``` % pandoc -f latex -t native \textnhtt{Pneumonoultramicroscopicsilicovolcanoconiosis} ^D [ Para [ Code ( "" , [] , [] ) "Pneumonoultramicroscopicsilicovolcanoconiosis" ] ] ``` ``` % pandoc -f latex -t native \nhttfamily{Pneumonoultramicroscopicsilicovolcanoconiosis} ^D [ Para [ Code ( "" , [] , [] ) "Pneumonoultramicroscopicsilicovolcanoconiosis" ] ] ``` pandoc-3.1.3/test/command/ieee.csl0000644000000000000000000002626507346545000015175 0ustar0000000000000000 pandoc-3.1.3/test/command/ifstrequal.md0000644000000000000000000000035307346545000016252 0ustar0000000000000000``` % pandoc -f latex -t native \ifstrequal{a}{b}{yes}{\emph{no}} \newcommand{\h}[1]{\ifstrequal{#1}{a}{\'a}{#1}} \h{a} \h{b} ^D [ Para [ Emph [ Str "no" ] , SoftBreak , Str "\225" , SoftBreak , Str "b" ] ] ``` pandoc-3.1.3/test/command/indented-fences.md0000644000000000000000000000043707346545000017131 0ustar0000000000000000````` % pandoc -t native ```haskell let x = y in y ``` ^D [ CodeBlock ( "" , [ "haskell" ] , [] ) "let x = y\nin y" ] ````` ````` % pandoc -t native ~~~ {.haskell} let x = y in y + y + y ~~~ ^D [ CodeBlock ( "" , [ "haskell" ] , [] ) " let x = y\nin y +\ny +\ny" ] ````` pandoc-3.1.3/test/command/inkscape-cube.svg0000644000000000000000000001211707346545000017004 0ustar0000000000000000 image/svg+xml pandoc-3.1.3/test/command/input-with-endinput.md0000644000000000000000000000034307346545000020026 0ustar0000000000000000``` % pandoc --from=latex -t native \begin{document} Visible \include{command/bar-endinput} Visible \end{document} ^D [ Para [ Str "Visible" ] , Para [ Emph [ Str "hi" , Space , Str "there" ] ] , Para [ Str "Visible" ] ] ``` pandoc-3.1.3/test/command/issue160.csl0000644000000000000000000000154407346545000015636 0ustar0000000000000000 pandoc-3.1.3/test/command/issue437.csl0000644000000000000000000000153007346545000015640 0ustar0000000000000000 pandoc-3.1.3/test/command/issue58.csl0000644000000000000000000004346207346545000015571 0ustar0000000000000000 pandoc-3.1.3/test/command/jats-figure-alt-text.md0000644000000000000000000000064107346545000020053 0ustar0000000000000000``` % pandoc -f jats -t native

    bar

    alternative-decription
    ^D [ Figure ( "fig-1" , [] , [] ) (Caption Nothing [ Plain [ Str "bar" ] ]) [ Plain [ Str "alternative-decription" ] , Para [ Image ( "" , [] , [] ) [ Str "baz" ] ( "foo.png" , "" ) ] ] ] ``` pandoc-3.1.3/test/command/latex-center.md0000644000000000000000000000023307346545000016463 0ustar0000000000000000# `\begin{center}` ``` % pandoc -f latex -t native \begin{center} Hello \end{center} ^D [ Div ( "" , [ "center" ] , [] ) [ Para [ Str "Hello" ] ] ] ``` pandoc-3.1.3/test/command/latex-color.md0000644000000000000000000000643607346545000016334 0ustar0000000000000000# `\textcolor{}{}` ``` % pandoc -f latex -t native Hello \textcolor{red}{World} ^D [ Para [ Str "Hello" , Space , Span ( "" , [] , [ ( "style" , "color: red" ) ] ) [ Str "World" ] ] ] ``` ``` % pandoc -f latex -t native \textcolor{red}{Hello} World ^D [ Para [ Span ( "" , [] , [ ( "style" , "color: red" ) ] ) [ Str "Hello" ] , Space , Str "World" ] ] ``` ``` % pandoc -f latex -t native Hello \textcolor{blue}{\textbf{World}} ^D [ Para [ Str "Hello" , Space , Span ( "" , [] , [ ( "style" , "color: blue" ) ] ) [ Strong [ Str "World" ] ] ] ] ``` ``` % pandoc -f latex -t native Hello \textcolor{blue}{\textbf{World}}. ^D [ Para [ Str "Hello" , Space , Span ( "" , [] , [ ( "style" , "color: blue" ) ] ) [ Strong [ Str "World" ] ] , Str "." ] ] ``` ``` % pandoc -f latex -t native \textcolor{orange}{ \begin{itemize} \item Item 1 \item Item 2 \end{itemize} } ^D [ Div ( "" , [] , [ ( "style" , "color: orange" ) ] ) [ BulletList [ [ Para [ Str "Item" , Space , Str "1" ] ] , [ Para [ Str "Item" , Space , Str "2" ] ] ] ] ] ``` ``` % pandoc -f latex -t native \textcolor{blue}{ \begin{itemize} \item Item 1 \item Item 2 \end{itemize} } some more text ^D [ Div ( "" , [] , [ ( "style" , "color: blue" ) ] ) [ BulletList [ [ Para [ Str "Item" , Space , Str "1" ] ] , [ Para [ Str "Item" , Space , Str "2" ] ] ] ] , Para [ Str "some" , Space , Str "more" , Space , Str "text" ] ] ``` # `\colorbox{}{}` ``` % pandoc -f latex -t native Hello \colorbox{red}{World} ^D [ Para [ Str "Hello" , Space , Span ( "" , [] , [ ( "style" , "background-color: red" ) ] ) [ Str "World" ] ] ] ``` ``` % pandoc -f latex -t native \colorbox{red}{Hello} World ^D [ Para [ Span ( "" , [] , [ ( "style" , "background-color: red" ) ] ) [ Str "Hello" ] , Space , Str "World" ] ] ``` ``` % pandoc -f latex -t native Hello \colorbox{blue}{\textbf{World}} ^D [ Para [ Str "Hello" , Space , Span ( "" , [] , [ ( "style" , "background-color: blue" ) ] ) [ Strong [ Str "World" ] ] ] ] ``` ``` % pandoc -f latex -t native Hello \colorbox{blue}{\textbf{World}}. ^D [ Para [ Str "Hello" , Space , Span ( "" , [] , [ ( "style" , "background-color: blue" ) ] ) [ Strong [ Str "World" ] ] , Str "." ] ] ``` ``` % pandoc -f latex -t native \colorbox{orange}{ \begin{minipage}{\textwidth} \begin{itemize} \item Item 1 \item Item 2 \end{itemize} \end{minipage} } ^D [ Div ( "" , [] , [ ( "style" , "background-color: orange" ) ] ) [ BulletList [ [ Para [ Str "Item" , Space , Str "1" ] ] , [ Para [ Str "Item" , Space , Str "2" ] ] ] ] ] ``` ``` % pandoc -f latex -t native \colorbox{blue}{ \begin{minipage}{\textwidth} \begin{itemize} \item Item 1 \item Item 2 \end{itemize} \end{minipage} } some more text ^D [ Div ( "" , [] , [ ( "style" , "background-color: blue" ) ] ) [ BulletList [ [ Para [ Str "Item" , Space , Str "1" ] ] , [ Para [ Str "Item" , Space , Str "2" ] ] ] ] , Para [ Str "some" , Space , Str "more" , Space , Str "text" ] ] ``` pandoc-3.1.3/test/command/latex-command-comment.md0000644000000000000000000000012207346545000020256 0ustar0000000000000000``` % pandoc -f latex -t native \emph% {hi} ^D [ Para [ Emph [ Str "hi" ] ] ] ``` pandoc-3.1.3/test/command/latex-fontawesome.md0000644000000000000000000000032107346545000017530 0ustar0000000000000000``` % pandoc -f latex -t native Check: \faCheck ^D [ Para [ Str "Check:" , Space , Str "\10003" ] ] ``` ``` % pandoc -f latex -t native Close: \faClose ^D [ Para [ Str "Close:" , Space , Str "\10007" ] ] ``` pandoc-3.1.3/test/command/latex-tabular-column-specs.md0000644000000000000000000000463707346545000021257 0ustar0000000000000000See https://groups.google.com/forum/#!topic/pandoc-discuss/_VXtqihCyDU. ``` % pandoc -f latex -t native \begin{tabular}{>{$}l<{$}>{$}l<{$} >{$}l<{$}} \toprule & f1 & f2 \\ \midrule e & 0.5 & 4 \\ f & 0.5 & 5,5 \\ \bottomrule \end{tabular} ^D [ Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Math InlineMath "" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Math InlineMath "f1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Math InlineMath "f2" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Math InlineMath "e" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Math InlineMath "0.5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Math InlineMath "4" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Math InlineMath "f" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Math InlineMath "0.5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Math InlineMath "5,5" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ``` pandoc-3.1.3/test/command/le-tapuscrit-note.csl0000644000000000000000000004343507346545000017643 0ustar0000000000000000 pandoc-3.1.3/test/command/lettrine.md0000644000000000000000000000055007346545000015720 0ustar0000000000000000``` % pandoc -f latex -t native \lettrine{A}{category} is \lettrine[lhang=0.17]{A}{category} is ^D [ Para [ Span ( "" , [ "lettrine" ] , [] ) [ Str "A" ] , SmallCaps [ Str "category" ] , Space , Str "is" ] , Para [ Span ( "" , [ "lettrine" ] , [] ) [ Str "A" ] , SmallCaps [ Str "category" ] , Space , Str "is" ] ] ``` pandoc-3.1.3/test/command/lists-inside-definition.md0000644000000000000000000000166307346545000020635 0ustar0000000000000000This inserts an empty `\item[]` when a list occurs at the beginning of a definition list definition; otherwise the list may start on the line with the label, which looks terrible. See https://tex.stackexchange.com/questions/192480/force-itemize-inside-description-onto-a-new-line ``` % pandoc -t latex Definition : 1. list 2. list ^D \begin{description} \item[Definition] \begin{enumerate} \def\labelenumi{\arabic{enumi}.} \tightlist \item[] \item list \item list \end{enumerate} \end{description} ``` ``` % pandoc -t latex Definition : Foo 1. list 2. list ^D \begin{description} \item[Definition] Foo \begin{enumerate} \def\labelenumi{\arabic{enumi}.} \tightlist \item list \item list \end{enumerate} \end{description} ``` ``` % pandoc -t latex Definition : - list - list ^D \begin{description} \item[Definition] \begin{itemize} \tightlist \item[] \item list \item list \end{itemize} \end{description} ``` pandoc-3.1.3/test/command/locators.csl0000644000000000000000000000354407346545000016107 0ustar0000000000000000 pandoc-3.1.3/test/command/lstlisting.md0000644000000000000000000000222407346545000016266 0ustar0000000000000000``` % pandoc -f latex -t native \begin{lstlisting}[language=Java, caption={Java Example}, label=lst:Hello-World] public class World { public static void main(String[] args) { System.out.println("Hello World"); } } \end{lstlisting} ^D [ CodeBlock ( "lst:Hello-World" , [ "java" ] , [ ( "language" , "Java" ) , ( "caption" , "Java Example" ) , ( "label" , "lst:Hello-World" ) ] ) "public class World {\n public static void main(String[] args) {\n System.out.println(\"Hello World\");\n }\n}" ] ``` ``` % pandoc -f latex -t native \begin{lstlisting}[language=Java, escapechar=|, caption={Java Example}, label=lst:Hello-World] public class World { public static void main(String[] args) { System.out.println("Hello World"); } } \end{lstlisting} ^D [ CodeBlock ( "lst:Hello-World" , [ "java" ] , [ ( "language" , "Java" ) , ( "escapechar" , "|" ) , ( "caption" , "Java Example" ) , ( "label" , "lst:Hello-World" ) ] ) "public class World {\n public static void main(String[] args) {\n System.out.println(\"Hello World\");\n }\n}" ] ``` pandoc-3.1.3/test/command/macro-defs-in-preamble.md0000644000000000000000000000060407346545000020303 0ustar0000000000000000``` % pandoc -s -f latex-latex_macros -t native \documentclass[11pt]{article} \newcommand{\vara}{\alpha} \newcommand{\varb}{b} \begin{document} $\vara \varb$ \end{document} ^D Pandoc Meta { unMeta = fromList [] } [ RawBlock (Format "latex") "\\newcommand{\\vara}{\\alpha}" , RawBlock (Format "latex") "\\newcommand{\\varb}{b}" , Para [ Math InlineMath "\\vara \\varb" ] ] ``` pandoc-3.1.3/test/command/macros.md0000644000000000000000000000405707346545000015364 0ustar0000000000000000``` % pandoc -f markdown+latex_macros -t markdown+raw_tex-raw_attribute \newcommand{\my}{\phi} $\my+\my$ ^D \newcommand{\my}{\phi} $\phi+\phi$ ``` ``` % pandoc -f markdown-latex_macros -t markdown+raw_tex-raw_attribute \newcommand{\my}{\phi} $\my+\my$ ^D \newcommand{\my}{\phi} $\my+\my$ ``` `\let` macros should be expanded at point of definition, while `\newcommand` macros should be expanded at point of use: ``` % pandoc -f latex -t latex \let\a\b \def\b{\emph{ouk}} \a a ^D a̱ ``` ``` % pandoc -f latex -t latex \newcommand{\a}{\b} \newcommand{\b}{\emph{ouk}} \a a ^D \emph{ouk}a ``` ``` % pandoc -f latex -t latex \def\BDpos{} \def\BDneg{-} \def\beq{\begin{align}} \def\eeq{\end{align}} \def\e#1{\emph{#1}} \def\f#1#2{\emph{#1--#2}} $5\BDneg 6\BDpos 7$ \beq x &= y\\ \eeq \e{hi} \f{hi}{ok} ^D \(5-67\) \[\begin{aligned} x &= y\\ \end{aligned}\] \emph{hi} \emph{hi--ok} ``` ``` % pandoc -f markdown+latex_macros -t markdown+raw_tex-raw_attribute \newcommand{\my}{\phi} \begin{equation} \my+\my \end{equation} ^D \newcommand{\my}{\phi} \begin{equation} \phi+\phi \end{equation} ``` ``` % pandoc -f markdown-latex_macros -t markdown+raw_tex-raw_attribute \newcommand{\my}{\phi} \begin{equation} \my+\my \end{equation} ^D \newcommand{\my}{\phi} \begin{equation} \my+\my \end{equation} ``` ``` % pandoc -f markdown+latex_macros -t markdown+raw_tex-raw_attribute \newcommand{\my}{\emph{a}} \my ^D \newcommand{\my}{\emph{a}} \emph{a} ``` ``` % pandoc -f latex -t plain \def\bar{hello} \let\fooi\bar \def\fooii{\bar} \fooi +\fooii \def\bar{goodbye} \fooi +\fooii ^D hello+hello hello+goodbye ``` ``` % pandoc -f latex -t plain \def\txt{a} \def\foo{\txt} \let\bar\foo \bar % -> a \def\txt{b} \bar % -> b \def\foo{OH} \bar % -> b ^D a b b ``` ``` % pandoc -f latex -t plain \def\aaa{aaa} \def\bbb{x\aaa} \edef\ccc{y\aaa} \def\aaa{AAA} \bbb \ccc ^D xAAAyaaa ``` ``` % pandoc -f latex -t plain \gdef\aaa{aaa} \gdef\bbb{x\aaa} \xdef\ccc{y\aaa} \gdef\aaa{AAA} \bbb \ccc ^D xAAAyaaa ``` pandoc-3.1.3/test/command/make-section-column-divs.md0000644000000000000000000000052607346545000020712 0ustar0000000000000000For reference see https://groups.google.com/d/msgid/pandoc-discuss/cef24253-7731-417c-a1ee-48153c4344bf%40googlegroups.com ``` % pandoc ::: columns ::: column # A a ::: ::: column # B b ::: ::: ^D

    A

    a

    B

    b

    ``` pandoc-3.1.3/test/command/md-abbrevs.md0000644000000000000000000000061707346545000016120 0ustar0000000000000000Pandoc recognizes an abbreviation and inserts a nonbreaking space (among other things, this prevents a sentence-ending space from being inserted in LaTeX output). ``` % pandoc -t native Mr. Bob ^D [ Para [ Str "Mr.\160Bob" ] ] ``` If you don't want this to happen you can escape the period: ``` % pandoc -t native Hi Mr\. Bob ^D [ Para [ Str "Hi" , Space , Str "Mr." , Space , Str "Bob" ] ] ``` pandoc-3.1.3/test/command/mmd-metadata.md0000644000000000000000000000040707346545000016426 0ustar0000000000000000``` % pandoc -f markdown_mmd -t markdown -s Title: Blah blah blah Author: Doo de Doo Base Header Level: 1 Bibliography: Pubs.bib Lang: en-GB body ^D --- author: Doo de Doo baseheaderlevel: 1 bibliography: Pubs.bib lang: en-GB title: Blah blah blah --- body ``` pandoc-3.1.3/test/command/modern-humanities-research-association.csl0000644000000000000000000003465607346545000024025 0ustar0000000000000000 pandoc-3.1.3/test/command/multiple-metadata-blocks.md0000644000000000000000000000033607346545000020760 0ustar0000000000000000If multiple blocks define a field, the first is used. ``` % pandoc -s -t native --- foo: bar ... --- foo: bim ... ^D Pandoc Meta { unMeta = fromList [ ( "foo" , MetaInlines [ Str "bim" ] ) ] } [] ``` pandoc-3.1.3/test/command/nested-spanlike.md0000644000000000000000000000023307346545000017156 0ustar0000000000000000``` % pandoc -f markdown -t html [test]{.foo .underline #bar .smallcaps .kbd} ^D

    test

    ``` pandoc-3.1.3/test/command/nested-table-to-asciidoc-6942.md0000644000000000000000000000351107346545000021237 0ustar0000000000000000A table within a table should be converted into a table within table ``` % pandoc -f html -t asciidoc NestedTables
    a1 a2
    b
    c d
    ^D [width="100%",cols="50%,50%",] |=== a| [cols=",",] !=== !a1 !a2 !=== |b |c |d |=== ``` A table within a table within a table cannot be converted because asciidoc only supports two levels of tables. The table on level 3 is thus converted to level 2 and a warning is produced ``` % pandoc -f html -t asciidoc --verbose NestedTables
    a1
    1 2
    b
    c d
    ^D 2> [INFO] Not rendering Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidth 0.5),(AlignDefault,ColWidth 0.5)] (TableHead ("",[],[]) []) [TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "a1"]],Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidthDefault),(AlignDefault,ColWidthDefault)] (TableHead ("",[],[]) []) [TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1"]],Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "2"]]]]] (TableFoot ("",[],[]) [])]]]] (TableFoot ("",[],[]) []) [width="100%",cols="50%,50%",] |=== a| [width="100%",cols="50%,50%",] !=== !a1 ! !=== |b |c |d |=== ``` pandoc-3.1.3/test/command/newif.md0000644000000000000000000000072407346545000015205 0ustar0000000000000000``` % pandoc -f latex -t plain \iftrue should print \iftrue should print \else should not print A \fi \else should not print B \fi \iffalse should not print C \else \iftrue should print \else should not print D \fi \fi \newif\ifepub \ifepub should not print E \fi \epubtrue \ifepub should print \else should not print F \fi \epubfalse \ifepub should not print G \else should print \fi ^D should print should print should print should print should print ``` pandoc-3.1.3/test/command/oscola.csl0000644000000000000000000005761707346545000015553 0ustar0000000000000000 pandoc-3.1.3/test/command/pandoc-citeproc-118.md0000644000000000000000000000102107346545000017445 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- references: - director: family: Hitchcock given: Alfred id: nbn issued: year: 1959 language: 'en-US' publisher: 'Metro-Goldwyn-Mayer' publisher-place: USA title: North by Northwest type: motion_picture --- [@nbn] is a spy thriller film. ^D (Hitchcock 1959) is a spy thriller film. ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-nbn .csl-entry} Hitchcock, Alfred, dir. 1959. *North by Northwest*. USA: Metro-Goldwyn-Mayer. ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-119.md0000644000000000000000000000221007346545000017447 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- bibliography: 'command/averroes.bib' csl: command/apa.csl --- @averroes/bland; @averroes/hannes; @averroes/hercz References {#references .unnumbered} ========== ^D Averroes (1982); Averroes (1892); Averroes (1869) # References {#references .unnumbered} ::: {#refs .references .csl-bib-body .hanging-indent line-spacing="2"} ::: {#ref-averroes/hercz .csl-entry} Averroes. (1869). *Drei Abhandlungen über die Conjunction des separaten Intellects mit dem Menschen: Von Averroes (Vater und Sohn), aus dem Arabischen übersetzt von Samuel Ibn Tibbon*. (J. Hercz, Ed. & Trans.). Berlin: S. Hermann. ::: ::: {#ref-averroes/hannes .csl-entry} Averroes. (1892). *Des Averroës Abhandlung: "Über die Möglichkeit der Conjunktion" oder "Über den materiellen Intellekt"*. (L. Hannes, Ed. & Trans.). Halle an der Saale: C. A. Kaemmerer. ::: ::: {#ref-averroes/bland .csl-entry} Averroes. (1982). *The epistle on the possibility of conjunction with the active intellect by Ibn Rushd with the commentary of Moses Narboni*. (K. P. Bland, Ed. & Trans.). New York: Jewish Theological Seminary of America. ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-13.md0000644000000000000000000000070507346545000017367 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: 'command/chicago-note-bibliography.csl' references: - author: family: Author given: - Ann container-title: Journal id: item1 issued: - year: 2011 title: Title type: 'article-newspaper' --- Foo [@item1]. ^D Foo.[^1] ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-item1 .csl-entry} Author, Ann. "Title." *Journal*, 2011. ::: ::: [^1]: Author, "Title." ``` pandoc-3.1.3/test/command/pandoc-citeproc-136.md0000644000000000000000000000071007346545000017451 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- references: - id: stanze type: book issued: - year: 1547 title: Stanze in lode della donna brutta publisher-place: Florence language: it-IT ... @stanze is an anoynymous work. ^D *Stanze in lode della donna brutta* (1547) is an anoynymous work. ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-stanze .csl-entry} *Stanze in lode della donna brutta*. 1547. Florence. ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-14.md0000644000000000000000000000362507346545000017374 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- references: - author: family: Pelikan given: Jaroslav container-title: 'The Christian tradition: A history of the development of doctrine' id: CTv1c2 issued: - year: 1971 language: 'en-US' page: '34-56' publisher: University of Chicago Press publisher-place: Chicago title: Chapter two type: chapter volume: 1 volume-title: 'The emergence of the Catholic tradition (100--600)' - author: family: Pelikan given: Jaroslav container-title: 'The Christian tradition: A history of the development of doctrine' id: CTv1 issued: - year: 1971 language: 'en-US' publisher: University of Chicago Press publisher-place: Chicago title: 'The emergence of the Catholic tradition (100--600)' type: book volume: 1 - author: family: Pelikan given: Jaroslav id: CT issued: - year: 1971 language: 'en-US' publisher: University of Chicago Press publisher-place: Chicago title: 'The Christian tradition: A history of the development of doctrine' type: book --- Foo [@CT, 1:12]. Bar [@CTv1, 12]. Baz [@CTv1c2, 12]. References {#references .unnumbered} ========== ^D Foo (Pelikan 1971b, 1:12). Bar (Pelikan 1971c, 1:12). Baz (Pelikan 1971a, 12). # References {#references .unnumbered} ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-CTv1c2 .csl-entry} Pelikan, Jaroslav. 1971a. "Chapter Two." In *The Christian Tradition: A History of the Development of Doctrine*, 1:34--56. Chicago: University of Chicago Press. ::: ::: {#ref-CT .csl-entry} ---------. 1971b. *The Christian Tradition: A History of the Development of Doctrine*. Chicago: University of Chicago Press. ::: ::: {#ref-CTv1 .csl-entry} ---------. 1971c. *The Emergence of the Catholic Tradition (100--600)*. *The Christian Tradition: A History of the Development of Doctrine*. Vol. 1. Chicago: University of Chicago Press. ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-152.md0000644000000000000000000000244707346545000017460 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: command/apa.csl references: - URL: 'http://geekfeminism.wikia.com/wiki/Geek_Feminism' accessed: day: 10 month: 4 year: 2013 container-title: Geek Feminism custom2: ok.mm id: Feminism2013gf issued: day: 10 month: 4 year: 2013 keyword: gender title: Geek Feminism type: webpage - URL: 'http://geekfeminism.wikia.com/wiki/Category:Communities' accessed: day: 19 month: 10 year: 2011 container-title: Geek Feminism custom2: gender.mm id: Feminism2011ces issued: day: 14 month: 8 year: 2011 keyword: gender title: Communities type: 'entry-encyclopedia' --- Test ==== I have two citations [@Feminism2013gf; @Feminism2011ces]. References ========== ^D # Test I have two citations ("Communities," 2011; "Geek Feminism," 2013). # References {#references .unnumbered} ::: {#refs .references .csl-bib-body .hanging-indent line-spacing="2"} ::: {#ref-Feminism2011ces .csl-entry} Communities. (2011, August 14). In *Geek Feminism*. Retrieved from ::: ::: {#ref-Feminism2013gf .csl-entry} Geek Feminism. (2013, April 10). *Geek Feminism*. Retrieved April 10, 2013, from ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-160.md0000644000000000000000000000110407346545000017444 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: command/issue160.csl references: - author: - family: Doe given: Jane citation-label: Jane11 id: item1 issued: year: 2011 title: A book type: book --- No citation-label ----------------- Foo [@item1]. Expected -------- > Foo \[Jane11\]. > > \[Jane11\] Jane Doe. A book. 2011. ^D ## No citation-label Foo \[Jane11\]. ## Expected > Foo \[Jane11\]. > > \[Jane11\] Jane Doe. A book. 2011. ::: {#refs .references .csl-bib-body} ::: {#ref-item1 .csl-entry} \[Jane11\] Jane Doe. A book. 2011. ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-175.md0000644000000000000000000000133107346545000017454 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- references: - author: - family: Doe given: Jane container-title: A magazine id: item1 issued: - month: 1 year: 2011 - month: 2 year: 2011 page: '33-44' title: A title type: 'article-magazine' --- Missing en-dash between months ------------------------------ Foo [@item1]. Expected -------- > Doe, Jane. 2011. "A Title." *A Magazine*, January--February. ^D ## Missing en-dash between months Foo (Doe 2011). ## Expected > Doe, Jane. 2011. "A Title." *A Magazine*, January--February. ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-item1 .csl-entry} Doe, Jane. 2011. "A Title." *A Magazine*, January--February 2011. ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-197.md0000644000000000000000000000110207346545000017454 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: 'command/chicago-fullnote-bibliography.csl' nocite: '@test' references: - editor: - family: Abelard given: Peter id: test issued: date-parts: - - 1989 publisher: Clarendon Press publisher-place: Oxford title: Test type: book --- This is a test [@test]. ^D This is a test.[^1] ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-test .csl-entry} Abelard, Peter, ed. *Test*. Oxford: Clarendon Press, 1989. ::: ::: [^1]: Peter Abelard, ed., *Test* (Oxford: Clarendon Press, 1989). ``` pandoc-3.1.3/test/command/pandoc-citeproc-213.md0000644000000000000000000000112107346545000017442 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: 'command/harvard-university-of-kent.csl' references: - author: - family: Doe given: Ann collection-title: The collection title dimensions: 789 pp. id: doe1 issued: - year: 1999 publisher: The publisher title: Title type: book --- Foo [@doe1]. References {#references .unnumbered} ========== ^D Foo (Doe 1999). # References {#references .unnumbered} ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-doe1 .csl-entry} Doe, A. (1999). *Title*. The collection title. The publisher. 789 pp. ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-25.md0000644000000000000000000000074707346545000017400 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- references: - author: - family: Author given: Al id: item1 issued: date-parts: - - 1998 title: 'foo bar baz: bazbaz foo' type: 'article-journal' --- Foo [@item1]. References {#references .unnumbered} ========== ^D Foo (Author 1998). # References {#references .unnumbered} ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-item1 .csl-entry} Author, Al. 1998. "Foo Bar Baz: Bazbaz Foo." ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-250.md0000644000000000000000000000043507346545000017452 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- link-citations: true references: - author: family: Doe id: doe title: Title --- [@doe] ^D ([Doe, n.d.](#ref-doe)) ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-doe .csl-entry} Doe. n.d. "Title." ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-27.md0000644000000000000000000000130107346545000017365 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: command/science.csl references: - author: - family: AuthorOne given: Joe - family: AuthorTwo given: Jill container-title: Some Journal id: AuthorOne2014 issue: X issued: date-parts: - - 2014 page: 'XXXX-YYYY' title: Sample Title type: 'article-journal' volume: XX --- Minimal example =============== Here is some text that needs a citation [@AuthorOne2014]. ^D # Minimal example Here is some text that needs a citation (*1*). ::: {#refs .references .csl-bib-body} ::: {#ref-AuthorOne2014 .csl-entry} [1. ]{.csl-left-margin}[J. AuthorOne, J. AuthorTwo, *Some Journal*, in press.]{.csl-right-inline} ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-292.md0000644000000000000000000000116107346545000017455 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: 'command/sage-harvard.csl' references: - author: family: Doe id: doe issued: year: 2007 type: article - author: family: Zoe id: zoe issued: - year: 2009 type: article - author: family: Roe id: roe issued: - year: 2007 type: article --- [@zoe; @roe; see for comparison @doe, p. 3] ^D (Roe, 2007; Zoe, 2009; see for comparison Doe, 2007: 3) ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-doe .csl-entry} Doe (2007). ::: ::: {#ref-roe .csl-entry} Roe (2007). ::: ::: {#ref-zoe .csl-entry} Zoe (2009). ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-301.md0000644000000000000000000000100507346545000017441 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- references: - id: test title: Essays presented to N.R. Ker (On Art) - id: test2 title: '*Test:* An experiment: An abridgement' --- @test; @test2 ^D "Essays Presented to N.R. Ker (On Art)" (n.d.); "*Test:* An Experiment: An Abridgement" (n.d.) ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-test .csl-entry} "Essays Presented to N.R. Ker (On Art)." n.d. ::: ::: {#ref-test2 .csl-entry} "*Test:* An Experiment: An Abridgement." n.d. ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-307.md0000644000000000000000000000116507346545000017456 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- lang: 'fr-FR' references: - author: - family: Bazin given: André container-title: Cahiers du cinéma id: bazin_cybernetique_1954 issue: 36 issued: date-parts: - - 1954 - 6 page: '22-27' title: 'La Cybernétique d''André Cayatte' type: 'article-journal' --- Bonjour[@bazin_cybernetique_1954] ! ^D Bonjour(Bazin 1954) ! ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-bazin_cybernetique_1954 .csl-entry} Bazin, André. 1954. « La Cybernétique d'André Cayatte ». *Cahiers du cinéma*, nᵒ 36 (juin): 22‑27. ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-31.md0000644000000000000000000000207307346545000017367 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: command/oscola.csl references: - DOI: 10.1086/504343 author: - family: Olson given: Hope A. container-title: Library Quarterly id: item1 issue: 1 issued: date-parts: - - 2006 page: '19-35' title: 'Codes, costs, and critiques: The organization of information in *Library Quarterly*, 1931--2004' title-short: 'Codes, costs, and critiques' type: 'article-magazine' volume: 76 - id: item2 title: Second title --- Foo [@item1]. Bar [@item2]. Baz [@item1]. ^D Foo.[^1] Bar.[^2] Baz.[^3] ::: {#refs .references .csl-bib-body} ::: {#ref-item1 .csl-entry} Olson HA, '[Codes, Costs, and Critiques: The Organization of Information in *Library Quarterly*, 1931--2004](https://doi.org/10.1086/504343)' (2006) 76 *Library Quarterly* 19 ::: ::: {#ref-item2 .csl-entry} 'Second Title' ::: ::: [^1]: Hope A Olson, 'Codes, Costs, and Critiques: The Organization of Information in *Library Quarterly*, 1931--2004' (2006) 76 *Library Quarterly* 19. [^2]: 'Second Title'. [^3]: Olson (n 1). ``` pandoc-3.1.3/test/command/pandoc-citeproc-312.md0000644000000000000000000000571307346545000017455 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: command/apa.csl nocite: '@*' references: - author: - literal: NN id: 'Y' issued: - year: 1950 title: 'Date: Year' title-short: Date type: webpage - author: - literal: NN id: Y/Y issued: - year: 1951 - year: 1952 title: 'Date range: Year' title-short: Date range type: webpage - author: - literal: NN id: YM issued: - month: 1 year: 1953 title: 'Date: Year+month' title-short: Date type: webpage - author: - literal: NN id: YM/YM issued: - month: 1 year: 1954 - month: 2 year: 1955 title: 'Date range: Year+month' title-short: Date range type: webpage - author: - literal: NN id: YM/YM_same issued: - month: 1 year: 1956 - month: 2 year: 1956 title: 'Date range: Year+month, same year' title-short: Date range type: webpage - author: - literal: NN id: YMD issued: - day: 15 month: 1 year: 1958 title: 'Date: Year+month+day' title-short: Date type: webpage - author: - literal: NN id: YMD/YMD issued: - day: 15 month: 1 year: 1959 - day: 16 month: 2 year: 1960 title: 'Date range: Year+month+day' title-short: Date range type: webpage - author: - literal: NN id: YMD/YMD_same issued: - day: 15 month: 1 year: 1961 - day: 16 month: 1 year: 1962 title: 'Date range: Year+month+day, same month' title-short: Date range type: webpage - author: - literal: NN id: YS issued: - season: 3 year: 1963 title: 'Date: Year+season' title-short: Date type: webpage - author: - literal: NN id: YS/YS issued: - season: 1 year: 1964 - season: 4 year: 1965 title: 'Date range: Year+season' title-short: Date range type: webpage - author: - literal: NN id: YS/YS_same issued: - season: 2 year: 1966 - season: 4 year: 1966 title: 'Date range: Year+season, same year' title-short: Date range type: webpage --- ^D ::: {#refs .references .csl-bib-body .hanging-indent line-spacing="2"} ::: {#ref-Y .csl-entry} NN. (1950). Date: Year. ::: ::: {#ref-Y/Y .csl-entry} NN. (1951--1952). Date range: Year. ::: ::: {#ref-YM .csl-entry} NN. (1953, January). Date: Year+month. ::: ::: {#ref-YM/YM .csl-entry} NN. (1954--1955, January--February). Date range: Year+month. ::: ::: {#ref-YM/YM_same .csl-entry} NN. (1956, January--February). Date range: Year+month, same year. ::: ::: {#ref-YMD .csl-entry} NN. (1958, January 15). Date: Year+month+day. ::: ::: {#ref-YMD/YMD .csl-entry} NN. (1959--1960, January 15--February 16). Date range: Year+month+day. ::: ::: {#ref-YMD/YMD_same .csl-entry} NN. (1961--1962, January 15--16). Date range: Year+month+day, same month. ::: ::: {#ref-YS .csl-entry} NN. (1963, Autumn). Date: Year+season. ::: ::: {#ref-YS/YS .csl-entry} NN. (1964--1965, Spring--Winter). Date range: Year+season. ::: ::: {#ref-YS/YS_same .csl-entry} NN. (1966, Summer--Winter). Date range: Year+season, same year. ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-320.md0000644000000000000000000001054707346545000017455 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: command/apa.csl references: - author: - family: Benjamin given: A. S. id: itemA1 - author: - family: Yaakov given: D. non-dropping-particle: ben id: itemA2 - author: - family: Brown given: J. R. id: itemA3 - author: - family: Browning given: A. R. id: itemA4 - author: - family: Girard given: 'J.-B.' id: itemA5 - author: - family: 'Girard-Perregaux' given: A. S. id: itemA6 - author: - family: Ibn Abdulaziz given: T. id: itemA7 - author: - family: Ibn Nidal given: A. K. M. id: itemA8 - author: - family: López given: M. E. id: itemA9 - author: - family: López de Molina given: G. id: itemA10 - author: - family: Singh given: Y. id: itemA11 - author: - family: Singh Siddhu given: N. id: itemA12 - author: - family: Villafuerte given: S. A. id: itemA13 - author: - family: 'Villa-Lobos' given: J. id: itemA14 - author: - family: Macalister given: Donald id: itemB1 - author: - family: MacAlister given: Paul id: itemB2 - author: - family: Macauley given: Catharine id: itemB3 - author: - family: Macmillan given: Harold id: itemB4 - author: - family: Madison given: James id: itemB5 - author: - family: McAllister given: Ward id: itemB6 - author: - family: McAuley given: Catherine id: itemB7 - author: - family: McMillan given: Edwin M. id: itemB8 - author: - family: 'Sainte-Beuve' given: 'Charles-Augustin' id: itemC1 - author: - family: 'Saint-Gaudens' given: Augustus id: itemC2 - author: - family: 'Saint-Saëns' given: Camille id: itemC3 - author: - dropping-particle: de family: San Martin given: José id: itemC4 - author: - family: St. Denis given: Ruth id: itemC5 - author: - family: St. Laurent given: Louis Stephen id: itemC6 --- Foo [@itemA1; @itemA2; @itemA3; @itemA4; @itemA5; @itemA6; @itemA7; @itemA8; @itemA9; @itemA10; @itemA11; @itemA12; @itemA13; @itemA14]. Foo [@itemB1; @itemB2; @itemB3; @itemB4; @itemB5; @itemB6; @itemB7; @itemB8]. Foo [@itemC1; @itemC2; @itemC3; @itemC4; @itemC5; @itemC6]. ^D Foo (ben Yaakov, n.d.; Benjamin, n.d.; Brown, n.d.; Browning, n.d.; Girard, n.d.; Girard-Perregaux, n.d.; Ibn Abdulaziz, n.d.; Ibn Nidal, n.d.; López de Molina, n.d.; López, n.d.; Singh Siddhu, n.d.; Singh, n.d.; Villafuerte, n.d.; Villa-Lobos, n.d.). Foo (Macalister, n.d.; MacAlister, n.d.; Macauley, n.d.; Macmillan, n.d.; Madison, n.d.; McAllister, n.d.; McAuley, n.d.; McMillan, n.d.). Foo (Sainte-Beuve, n.d.; Saint-Gaudens, n.d.; Saint-Saëns, n.d.; San Martin, n.d.; St. Denis, n.d.; St. Laurent, n.d.). ::: {#refs .references .csl-bib-body .hanging-indent line-spacing="2"} ::: {#ref-itemA2 .csl-entry} ben Yaakov, D. (n.d.). ::: ::: {#ref-itemA1 .csl-entry} Benjamin, A. S. (n.d.). ::: ::: {#ref-itemA3 .csl-entry} Brown, J. R. (n.d.). ::: ::: {#ref-itemA4 .csl-entry} Browning, A. R. (n.d.). ::: ::: {#ref-itemA5 .csl-entry} Girard, J.-B. (n.d.). ::: ::: {#ref-itemA6 .csl-entry} Girard-Perregaux, A. S. (n.d.). ::: ::: {#ref-itemA7 .csl-entry} Ibn Abdulaziz, T. (n.d.). ::: ::: {#ref-itemA8 .csl-entry} Ibn Nidal, A. K. M. (n.d.). ::: ::: {#ref-itemA10 .csl-entry} López de Molina, G. (n.d.). ::: ::: {#ref-itemA9 .csl-entry} López, M. E. (n.d.). ::: ::: {#ref-itemB1 .csl-entry} Macalister, D. (n.d.). ::: ::: {#ref-itemB2 .csl-entry} MacAlister, P. (n.d.). ::: ::: {#ref-itemB3 .csl-entry} Macauley, C. (n.d.). ::: ::: {#ref-itemB4 .csl-entry} Macmillan, H. (n.d.). ::: ::: {#ref-itemB5 .csl-entry} Madison, J. (n.d.). ::: ::: {#ref-itemB6 .csl-entry} McAllister, W. (n.d.). ::: ::: {#ref-itemB7 .csl-entry} McAuley, C. (n.d.). ::: ::: {#ref-itemB8 .csl-entry} McMillan, E. M. (n.d.). ::: ::: {#ref-itemC1 .csl-entry} Sainte-Beuve, C.-A. (n.d.). ::: ::: {#ref-itemC2 .csl-entry} Saint-Gaudens, A. (n.d.). ::: ::: {#ref-itemC3 .csl-entry} Saint-Saëns, C. (n.d.). ::: ::: {#ref-itemC4 .csl-entry} San Martin, J. de. (n.d.). ::: ::: {#ref-itemA12 .csl-entry} Singh Siddhu, N. (n.d.). ::: ::: {#ref-itemA11 .csl-entry} Singh, Y. (n.d.). ::: ::: {#ref-itemC5 .csl-entry} St. Denis, R. (n.d.). ::: ::: {#ref-itemC6 .csl-entry} St. Laurent, L. S. (n.d.). ::: ::: {#ref-itemA13 .csl-entry} Villafuerte, S. A. (n.d.). ::: ::: {#ref-itemA14 .csl-entry} Villa-Lobos, J. (n.d.). ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-320a.md0000644000000000000000000000307307346545000017612 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- references: - author: - family: ʾUdhrī given: Jamīl non-dropping-particle: 'al-' note: ayn id: item1 - author: - family: ʿUdhrī given: Jamīl non-dropping-particle: 'al-' note: hamza id: item2 - author: - family: '\''Udhrī' given: Jamīl non-dropping-particle: 'al-' note: straight apostrophe id: item3 - author: - family: '‘Udhrī' given: Jamīl non-dropping-particle: 'al-' note: inverted apostrophe = opening single curly quote (for ayn) id: item4 - author: - family: '’Udhrī' given: Jamīl non-dropping-particle: 'al-' note: apostrophe = closing single curly quote (for hamza) id: item5 - author: - family: Uch given: Ann id: item6 - author: - family: Uebel given: Joe id: item7 - author: - family: Zzz given: Zoe id: item8 --- Foo [@item1; @item2; @item3; @item4; @item5; @item6; @item7; @item8]. ^D Foo (al-ʾUdhrī, n.d.; al-ʿUdhrī, n.d.; al-\'Udhrī, n.d.; al-'Udhrī, n.d.a, n.d.b; Uch, n.d.; Uebel, n.d.; Zzz, n.d.). ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-item6 .csl-entry} Uch, Ann. n.d. ::: ::: {#ref-item1 .csl-entry} ʾUdhrī, Jamīl al-. n.d. ::: ::: {#ref-item2 .csl-entry} ʿUdhrī, Jamīl al-. n.d. ::: ::: {#ref-item3 .csl-entry} \'Udhrī, Jamīl al-. n.d. ::: ::: {#ref-item4 .csl-entry} 'Udhrī, Jamīl al-. n.d.a. ::: ::: {#ref-item5 .csl-entry} ---------. n.d.b. ::: ::: {#ref-item7 .csl-entry} Uebel, Joe. n.d. ::: ::: {#ref-item8 .csl-entry} Zzz, Zoe. n.d. ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-322.md0000644000000000000000000000141107346545000017445 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: command/annales.csl references: - author: - family: Timmory given: François container-title: 'L''Écran français' id: timmory\_\_justice_1950 issue: 272 issued: - day: 25 month: 9 year: 1950 language: 'fr-FR' page: 12 title: '*Justice est faite* : soyons justes' type: 'article-journal' --- Foo [@timmory__justice_1950]. ^D Foo.[^1] ::: {#refs .references .csl-bib-body} ::: {#ref-timmory__justice_1950 .csl-entry} François [Timmory]{.smallcaps}, « *Justice est faite* : soyons justes », *L'Écran français*, 1950, nᵒ 272, p. 12. ::: ::: [^1]: François [Timmory]{.smallcaps}, « *Justice est faite* : soyons justes », *L'Écran français*, 1950, nᵒ 272, p. 12. ``` pandoc-3.1.3/test/command/pandoc-citeproc-325.md0000644000000000000000000000063507346545000017457 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- references: - author: - family: Smith given: John id: item1 type: book - author: - family: Smith given: John id: item2 type: book --- [@item1; @item2] ^D (Smith, n.d.a, n.d.b) ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-item1 .csl-entry} Smith, John. n.d.a. ::: ::: {#ref-item2 .csl-entry} ---------. n.d.b. ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-327.md0000644000000000000000000000451307346545000017460 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: 'command/chinese-gb7714-2005-numeric.csl' references: - ISSN: '1003-1111' URL: 'http://kns.cnki.net/kns/detail/detail.aspx?QueryID=4&CurRec=4&recid=&FileName=CHAN201706006&DbName=CJFDLAST2018&DbCode=CJFQ&yx=Y&pr=&URLID=21.1110.S.20171129.1725.006' abstract: '为了解辽东湾海域底栖动物次级生产力水平和时空分布特点,根据2007年的4月和10月辽东湾海域大型底栖动物调查数据,运用Brey经验公式计算大型底栖动物次级生产力和P/B值,并结合海洋生物指数方法对辽东湾海域进行生境适宜性评价。分析结果表明,该海域大型底栖动物年平均次级生产力为5.59g/(m\~2·年),年平均P/B值为3.16,辽东湾大型底栖动物次级生产力空间分布呈现出自沿岸向中部递增的趋势,P/B值空间分布与底栖动物次级生产力相反,呈现出自沿岸向中部递减的趋势,群落组成中以个体小、生活史短、代谢快的底栖动物为主。' accessed: - day: 27 month: 3 year: 2018 author: - family: 李 given: 轶平 - family: 于 given: 旭光 - family: 孙 given: 明 - family: 郭 given: 栋 - family: 段 given: 妍 - family: 董 given: 婧 container-title: 水产科学 id: LiLiaoDongWanHaiYuDiQiDongWuCiJiShengChanLiYanJiuJiShengJingGuaYiXingPingJie2017 issue: 06 issued: - year: 2017 keyword: '次级生产力,大型底栖动物,海洋生物指数方法,AMBI,macrozoobenthos,P/B value,P/B值,secondary productivity' language: 中文; page: '728-734' title: 辽东湾海域底栖动物次级生产力研究及生境适宜性评价 type: 'article-journal' --- I referenced something here [@LiLiaoDongWanHaiYuDiQiDongWuCiJiShengChanLiYanJiuJiShengJingGuaYiXingPingJie2017] ^D I referenced something here^\[1\]^ ::: {#refs .references .csl-bib-body} ::: {#ref-LiLiaoDongWanHaiYuDiQiDongWuCiJiShengChanLiYanJiuJiShengJingGuaYiXingPingJie2017 .csl-entry} [\[1\] ]{.csl-left-margin}[李轶平, 于旭光, 孙明, 等. [辽东湾海域底栖动物次级生产力研究及生境适宜性评价](http://kns.cnki.net/kns/detail/detail.aspx?QueryID=4&CurRec=4&recid=&FileName=CHAN201706006&DbName=CJFDLAST2018&DbCode=CJFQ&yx=Y&pr=&URLID=21.1110.S.20171129.1725.006)\[J\]. 水产科学, 2017(6): 728--734.]{.csl-right-inline} ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-338.md0000644000000000000000000000153607346545000017464 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: 'command/din-1505-2.csl' lang: de nocite: '@*' pagetitle: Citation references: - ISBN: '978-3-642-32078-1' author: - family: Wolfinger given: Christine edition: '11., vollst. überarb. Aufl.' id: 'item-1' issued: - year: 2013 keyword: UNIX; LINUX number-of-pages: 'XVIII, 529 S. : Ill., graph. Darst.' publisher: Springer Vieweg publisher-place: 'Berlin \[u.a.\]' title: 'Keine Angst vor Linux, Unix: ein Lehrbuch für Linux- und Unix-Anwender' type: book --- ^D ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-item-1 .csl-entry} [Wolfinger, Christine]{.smallcaps}: *Keine Angst vor Linux, Unix: ein Lehrbuch für Linux- und Unix-Anwender*. 11., vollst. überarb. Aufl. Aufl. Berlin \[u.a.\] : Springer Vieweg, 2013 --- ISBN 978-3-642-32078-1 ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-351.md0000644000000000000000000000070307346545000017452 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: 'command/zeitschrift-fur-kunstgeschichte.csl' references: - editor: - family: Nietzsche given: Friedrich id: Nie72 issued: - year: 1872 title: Die geburt type: book --- @Nie72 ^D Friedrich Nietzsche (ed.)[^1] ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-Nie72 .csl-entry} Nietzsche, Friedrich (ed.), *Die geburt*, 1872. ::: ::: [^1]: *Die geburt*, 1872. ``` pandoc-3.1.3/test/command/pandoc-citeproc-356.md0000644000000000000000000000036307346545000017461 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- references: - author: - family: Alice id: foo issued: - year: 2042 other-ids: - bar - doz type: book --- [@bar] ^D 2> [WARNING] Citeproc: citation bar not found (**bar?**) ``` pandoc-3.1.3/test/command/pandoc-citeproc-360.md0000644000000000000000000000134607346545000017456 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: 'command/chicago-fullnote-bibliography.csl' references: - author: - family: 'L''Estrange' given: Michael - family: Merchant given: Stephen id: lestrange2017 issued: - day: 18 month: 7 year: 2017 language: 'en-US' title: 2017 Independent Intelligence Review title-short: Independent Intelligence Review type: report --- [@lestrange2017] ^D [^1] ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-lestrange2017 .csl-entry} L'Estrange, Michael, and Stephen Merchant. "2017 Independent Intelligence Review," July 18, 2017. ::: ::: [^1]: Michael L'Estrange and Stephen Merchant, "2017 Independent Intelligence Review," July 18, 2017. ``` pandoc-3.1.3/test/command/pandoc-citeproc-361.md0000644000000000000000000000145507346545000017460 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: command/locators.csl references: - id: citekey title: Title type: 'article-journal' - id: other title: Other type: 'article-journal' suppress-bibliography: true --- Content[@citekey] Content[@citekey, 1] Content[@citekey, 2] Content[@citekey, 2] Content[@citekey 2] Content[@citekey, p. 2] Content[@citekey p. 2] Content[@citekey] Content[@other] Content[@citekey, 3] Content[@citekey, 3] ^D Content[^1] Content[^2] Content[^3] Content[^4] Content[^5] Content[^6] Content[^7] Content[^8] Content[^9] Content[^10] Content[^11] [^1]: Title. [^2]: Ibid-with-locator {1}. [^3]: Ibid-with-locator {2}. [^4]: Ibid. [^5]: Ibid. [^6]: Ibid. [^7]: Ibid. [^8]: Subsequent. [^9]: Other. [^10]: Subsequent {3}. [^11]: Ibid. ``` pandoc-3.1.3/test/command/pandoc-citeproc-365.md0000644000000000000000000000171207346545000017460 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: 'command/le-tapuscrit-note.csl' references: - ISBN: '978-2-912573-52-0' author: - family: Le Gras given: Gwénaëlle call-number: 'Tolbiac - Rez de Jardin - Littérature et art - Magasin - 2010-82178' collection-title: 'Jeux d''acteurs' id: legras_michel_2010 issued: - year: 2010 language: fre number-of-pages: 128 publisher: Scope publisher-place: Paris source: 'BnF Catalogue général (http://catalogue.bnf.fr)' title: 'Michel Simon : l''art de la disgrâce' title-short: Michel Simon type: book --- Foo [@legras_michel_2010]. ^D Foo.[^1] ::: {#refs .references .csl-bib-body} ::: {#ref-legras_michel_2010 .csl-entry} [Le Gras]{.smallcaps} Gwénaëlle, *Michel Simon : l'art de la disgrâce*, Paris, Scope (coll. « Jeux d'acteurs »), 2010, 128 p. ::: ::: [^1]: Gwénaëlle Le Gras, *Michel Simon : l'art de la disgrâce*, Paris, Scope, 2010, 128 p. ``` pandoc-3.1.3/test/command/pandoc-citeproc-371.md0000644000000000000000000000114707346545000017457 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- references: - author: - family: Doe given: Jane id: item1 status: in press title: Title one type: book - author: - family: Doe given: Jane id: item2 issued: - year: 2018 title: Title two type: book --- Foo [@item2; @item1]. References {#references .unnumbered} ========== ^D Foo (Doe 2018, in press). # References {#references .unnumbered} ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-item2 .csl-entry} Doe, Jane. 2018. *Title Two*. ::: ::: {#ref-item1 .csl-entry} ---------. In press. *Title One*. ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-38.md0000644000000000000000000000065307346545000017400 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- references: - author: - family: Doe given: Ann - family: Doe given: Ben - family: Roe given: Ron id: a issued: date-parts: - - 2007 title: Title type: 'article-journal' --- @a ^D Doe, Doe, and Roe (2007) ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-a .csl-entry} Doe, Ann, Ben Doe, and Ron Roe. 2007. "Title." ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-386.md0000644000000000000000000000136107346545000017463 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: 'command/advanced-optical-materials.csl' references: - DOI: 10.1038/lsa.2012.20 ISSN: '2047-7538' author: - family: Ding given: K. - family: Ning given: C. Z. container-title: Light Sci. Appl. id: ding_metallic_2012 issue: 7 issued: - month: 7 year: 2012 page: 'e20-e20' title: 'Metallic subwavelength-cavity semiconductor nanolasers' type: 'article-journal' volume: 1 --- @ding_metallic_2012 ^D ^\[1\]^ ::: {#refs .references .csl-bib-body line-spacing="2"} ::: {#ref-ding_metallic_2012 .csl-entry} [\[1\] ]{.csl-left-margin}[[K. Ding, C. Z. Ning, *Light Sci. Appl.* **2012**, *1*, e20](https://doi.org/10.1038/lsa.2012.20).]{.csl-right-inline} ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-392.md0000644000000000000000000000075207346545000017463 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: command/vancouver.csl references: - author: - family: James given: M.R.C.E.L. id: james - author: - family: MacFarlane given: J. G. id: macfarlane --- @james; @macfarlane ^D (1); (2) ::: {#refs .references .csl-bib-body} ::: {#ref-james .csl-entry} [1. ]{.csl-left-margin}[James MRCEL. ]{.csl-right-inline} ::: ::: {#ref-macfarlane .csl-entry} [2. ]{.csl-left-margin}[MacFarlane JG. ]{.csl-right-inline} ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-399.md0000644000000000000000000000122507346545000017466 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: command/style399.csl references: - author: - family: One id: one - author: - family: Two id: two - author: - family: Three id: three - author: - family: Four id: four - author: - family: Five id: five - author: - family: Six id: six - author: - family: Seven id: seven - author: - family: Eight id: eight - author: - family: Nine id: nine - author: - family: Ten id: ten - author: - family: Eleven id: eleven --- Inline citation [@one; @two; @three; @four; @five; @six; @seven; @eight; @nine; @ten; @eleven]. ^D Inline citation \[1,2,3,4,5,6,7,8,9,10,11\]. ``` pandoc-3.1.3/test/command/pandoc-citeproc-401.md0000644000000000000000000000330007346545000017442 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- references: - id: haslanger2012SocialConstructionDebunking type: chapter author: - family: Haslanger given: Sally issued: - year: 2012 original-date: - year: 2003 title: 'Social Construction: The ‘Debunking’ Project' title-short: Social Construction container-title: 'Resisting Reality: Social Construction and Social Critique' publisher: Oxford University Press publisher-place: Oxford event-place: Oxford page: 113–138 ISBN: 978-0-19-989262-4 - id: haslanger2012FeminismMetaphysicsNegotiating type: chapter author: - family: Haslanger given: Sally issued: - year: 2012 original-date: - year: 2000 title: 'Feminism in Metaphysics: Negotiating the Natural' container-title: 'Resisting Reality: Social Construction and Social Critique' publisher: Oxford University Press publisher-place: Oxford event-place: Oxford page: 139–157 ISBN: 978-0-19-989262-4 language: en ... Haslanger [-@haslanger2012SocialConstructionDebunking; @haslanger2012FeminismMetaphysicsNegotiating] says... ^D Haslanger (\[2003\] 2012, \[2000\] 2012) says... ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-haslanger2012FeminismMetaphysicsNegotiating .csl-entry} Haslanger, Sally. (2000) 2012. "Feminism in Metaphysics: Negotiating the Natural." In *Resisting Reality: Social Construction and Social Critique*, 139--57. Oxford: Oxford University Press. ::: ::: {#ref-haslanger2012SocialConstructionDebunking .csl-entry} ---------. (2003) 2012. "Social Construction: The 'Debunking' Project." In *Resisting Reality: Social Construction and Social Critique*, 113--38. Oxford: Oxford University Press. ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-408.md0000644000000000000000000000114707346545000017460 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- references: - id: smith1 type: article-journal author: - family: Smith given: Mary issued: - year: 2019 title: Foo - id: smithsmith type: article-journal author: - family: Smith given: Mary - family: Smith given: John issued: - year: 2019 title: Foo bar ... [@smithsmith; @smith1] ^D (Smith and Smith 2019; Smith 2019) ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-smith1 .csl-entry} Smith, Mary. 2019. "Foo." ::: ::: {#ref-smithsmith .csl-entry} Smith, Mary, and John Smith. 2019. "Foo Bar." ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-416.md0000644000000000000000000000171207346545000017455 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations Blah blah [@item1; @item2; @item3]. # References {-} --- title: The Title references: - id: item1 type: article-newspaper author: - family: Doe given: J. issued: - year: 2010 month: 12 day: 13 title: The title - id: item2 type: article-newspaper author: - family: Doe given: J. issued: - year: 2007 month: 12 day: 12 - year: 2007 month: 12 day: 13 title: The title - id: item3 type: article-newspaper author: - family: Doe given: J. issued: - year: 2008 title: The title ... ^D Blah blah (Doe 2010, 2007, 2008). # References {#references .unnumbered} ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-item2 .csl-entry} Doe, J. 2007. "The Title," December 12--13, 2007. ::: ::: {#ref-item3 .csl-entry} ---------. 2008. "The Title," 2008. ::: ::: {#ref-item1 .csl-entry} ---------. 2010. "The Title," December 13, 2010. ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-437.md0000644000000000000000000000056507346545000017465 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: command/issue437.csl references: - author: - family: Smith given: John id: hirt2009 issued: - year: 2009 publisher: Publishing House publisher-place: Lausanne title: Some Book type: book --- > Here is a quote. [@hirt2009] ^D > Here is a quote.[^1] [^1]: John Smith, Some Book, Lausanne, 2009 ``` pandoc-3.1.3/test/command/pandoc-citeproc-47.md0000644000000000000000000000464707346545000017407 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- references: - author: - family: Doe given: A. id: doe issued: date-parts: - - 2000 title: Title type: book - author: - family: Doe given: A. - family: Poe given: A. id: doepoe issued: date-parts: - - 2000 title: Title type: book - editor: - family: Doe given: A. id: 'doe-ed' issued: date-parts: - - 2000 title: Title type: book - author: - family: Doe given: A. - family: Loe given: A. - family: Toe given: A. id: doeloetoe issued: date-parts: - - 2000 title: Title type: book --- Foo [@doe]. Bar [@doepoe]. Foo [@doe-ed]. Bar [@doeloetoe]. Expected output: > Doe, A. 2000a. Title. > > ---------, ed. 2000b. Title. > > Doe, A., A. Loe, and A. Toe. 2000. Title. > > Doe, A., and A. Poe. 2000. Title. (See CMoS, 16e, 15.16, "Single author versus several authors---reference list order": "Successive entries by two or more authors in which only the first author's name is the same are alphabetized according to the coauthors' last names (regardless of how many coauthors there are)." and 15.18, "The 3-em dash with edited, translated, or compiled works": "The chronological order is maintained, regardless of the added abbreviation. \[ed., trans., comp., or whatever\]" References {#references .unnumbered} ========== ^D Foo (Doe 2000a). Bar (Doe and Poe 2000). Foo (Doe 2000b). Bar (Doe, Loe, and Toe 2000). Expected output: > Doe, A. 2000a. Title. > > ---------, ed. 2000b. Title. > > Doe, A., A. Loe, and A. Toe. 2000. Title. > > Doe, A., and A. Poe. 2000. Title. (See CMoS, 16e, 15.16, "Single author versus several authors---reference list order": "Successive entries by two or more authors in which only the first author's name is the same are alphabetized according to the coauthors' last names (regardless of how many coauthors there are)." and 15.18, "The 3-em dash with edited, translated, or compiled works": "The chronological order is maintained, regardless of the added abbreviation. \[ed., trans., comp., or whatever\]" # References {#references .unnumbered} ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-doe .csl-entry} Doe, A. 2000a. *Title*. ::: ::: {#ref-doe-ed .csl-entry} ---------, ed. 2000b. *Title*. ::: ::: {#ref-doeloetoe .csl-entry} Doe, A., A. Loe, and A. Toe. 2000. *Title*. ::: ::: {#ref-doepoe .csl-entry} Doe, A., and A. Poe. 2000. *Title*. ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-51.md0000644000000000000000000000143707346545000017374 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- references: - author: - family: Doe given: John container-title: Journal of Something id: item1 issued: date-parts: - - 1987 - - 1988 page: '12-34' title: The title type: 'article-journal' volume: 3 - author: - family: Roe given: Ron container-title: Journal of Something id: item2 issued: date-parts: - - 1987 page: '12-34' title: The title type: 'article-journal' volume: 4 --- @item1; @item2 ^D Doe (1987--1988); Roe (1987) ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-item1 .csl-entry} Doe, John. 1987--1988. "The Title." *Journal of Something* 3: 12--34. ::: ::: {#ref-item2 .csl-entry} Roe, Ron. 1987. "The Title." *Journal of Something* 4: 12--34. ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-53.md0000644000000000000000000000142607346545000017374 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: command/archeologie-medievale.csl references: - title: Work A id: a issued: date-parts: - - 2000 author: - given: John family: Doe type: book - title: Work B id: b issued: date-parts: - - 1990 author: - given: Jane family: Roe type: book --- @a @a @b @b @a @a @b @b ^D Doe[^1] Doe[^2] Roe[^3] Roe[^4] Doe[^5] Doe[^6] Roe[^7] Roe[^8] ::: {#refs .references .csl-bib-body} ::: {#ref-a .csl-entry} [[Doe J.]{.smallcaps} ]{.csl-block} [2000, *Work A*,.]{.csl-left-margin} ::: ::: {#ref-b .csl-entry} [[Roe J.]{.smallcaps} ]{.csl-block} [1990, *Work B*,.]{.csl-left-margin} ::: ::: [^1]: 2000 [^2]: *Ibid.* [^3]: 1990 [^4]: *Ibid.* [^5]: 2000 [^6]: *Ibid.* [^7]: 1990 [^8]: *Ibid.* ``` pandoc-3.1.3/test/command/pandoc-citeproc-57.md0000644000000000000000000000146207346545000017400 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: 'command/chicago-author-date-with-original-date-and-status.csl' references: - author: - family: Faraday given: Carry container-title: Seven Trips beyond the Asteroid Belt editor: - family: Oring given: James id: 'Faraday-forthcoming' publisher: Launch Press publisher-place: 'Cape Canaveral, FL' status: forthcoming title: Protean photography type: chapter --- [@Faraday-forthcoming] References ========== ^D (Faraday, forthcoming) # References {#references .unnumbered} ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-Faraday-forthcoming .csl-entry} Faraday, Carry. Forthcoming. "Protean Photography." In *Seven Trips Beyond the Asteroid Belt*, edited by James Oring. Cape Canaveral, FL: Launch Press. ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-58.md0000644000000000000000000000122507346545000017376 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: command/issue58.csl references: - id: stanze issued: date-parts: - - 1547 language: 'it-IT' publisher-place: Florence title: Stanze in lode della donna brutta type: book --- In this item, the title replaces the (unknown) author (see 14.79) [@stanze, p. 12]. References ========== ^D In this item, the title replaces the (unknown) author (see 14.79) (*Stanze in lode della donna brutta* 1547, 12). # References {#references .unnumbered} ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-stanze .csl-entry} *Stanze in lode della donna brutta*. 1547. Florence. ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-61.md0000644000000000000000000000176607346545000017402 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: 'command/modern-humanities-research-association.csl' references: - author: - family: Doe given: John id: doe issued: date-parts: - - 1985 publisher: Publisher title: Title type: book - author: - family: Roe given: Rob id: roe issued: date-parts: - - 1985 publisher: Publisher title: Title type: book --- Text ==== Foo [@doe, VIII, 89] Foo [@roe, III, 89] Foo [@doe, LVIII, 89] Foo [@roe, MVIII, 89] Foo [@doe, CL, 89] References ========== ^D # Text Foo[^1] Foo[^2] Foo[^3] Foo[^4] Foo[^5] # References {#references .unnumbered} ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-doe .csl-entry} Doe, John, *Title* (Publisher, 1985) ::: ::: {#ref-roe .csl-entry} Roe, Rob, *Title* (Publisher, 1985) ::: ::: [^1]: John Doe, *Title* (Publisher, 1985), VIII, 89. [^2]: Rob Roe, *Title* (Publisher, 1985), III, 89. [^3]: Doe, LVIII, 89. [^4]: Roe, MVIII, 89. [^5]: Doe, CL, 89. ``` pandoc-3.1.3/test/command/pandoc-citeproc-64.md0000644000000000000000000000102707346545000017373 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- bibliography: - command/biblio.bib nocite: '[@*]' --- ^D ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-item1 .csl-entry} Doe, John. 2005. *First Book*. Cambridge: Cambridge University Press. ::: ::: {#ref-item2 .csl-entry} ---------. 2006. "Article." *Journal of Generic Studies* 6: 33--34. ::: ::: {#ref-пункт3 .csl-entry} Doe, John, and Jenny Roe. 2007. "Why Water Is Wet." In *Third Book*, edited by Sam Smith. Oxford: Oxford University Press. ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-65.md0000644000000000000000000000157507346545000017404 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- references: - ISBN: 3406493556 author: - family: Stotz given: Peter call-number: 'PA25 PA2616 .H24 Abt. 2, T. 5, Bd. 2, etc' collection-number: 2.5 collection-title: Handbuch der Altertumswissenschaft event-place: Munich first-reference-note-number: 1 id: 'stotz:1996handbuch' issued: literal: 1996_2004 language: de number-of-volumes: 5 publisher: Beck publisher-place: Munich source: Library of Congress ISBN title: Handbuch zur lateinischen Sprache des Mittelalters title-short: Handbuch type: book --- [@stotz:1996handbuch] ^D (Stotz 1996--2004) ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-stotz:1996handbuch .csl-entry} Stotz, Peter. 1996--2004. *Handbuch zur lateinischen Sprache des Mittelalters*. 5 vols. Handbuch der Altertumswissenschaft 2.5. Munich: Beck. ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-68.md0000644000000000000000000000364007346545000017402 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: 'command/chicago-fullnote-bibliography.csl' references: - ISBN: 0888441088 author: - family: Goering given: Joseph call-number: BV4009 .W55 1992 collection-number: 108 collection-title: Studies and Texts event-place: Toronto first-reference-note-number: 1 id: 'goering:1992william' issued: date-parts: - - 1992 publisher: Pontifical Institute of Mediaeval Studies publisher-place: Toronto source: toroprod.library.utoronto.ca Library Catalog title: 'William de Montibus (c. 1140--1213): The Schools and the Literature of Pastoral Care' title-short: William de Montibus type: book --- \... a prose commentary [the text of fol. 9r is printed in @goering:1992william, pp. 501--3]. \... a collection of verses with a formal prose commentary [excerpts from this text were previously printed in @goering:1992william, p. 508--14; it was also briefly described in @goering:1992william, pp. 141--42] \... and finally a note starting with a citation [@goering:1992william, pp. 141-42]. ^D \... a prose commentary.[^1] \... a collection of verses with a formal prose commentary[^2] \... and finally a note starting with a citation.[^3] ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-goering:1992william .csl-entry} Goering, Joseph. *William de Montibus (c. 1140--1213): The Schools and the Literature of Pastoral Care*. Studies and Texts 108. Toronto: Pontifical Institute of Mediaeval Studies, 1992. ::: ::: [^1]: The text of fol. 9r is printed in Joseph Goering, *William de Montibus (c. 1140--1213): The Schools and the Literature of Pastoral Care*, Studies and Texts 108 (Toronto: Pontifical Institute of Mediaeval Studies, 1992), 501--3. [^2]: Excerpts from this text were previously printed in Goering, 508--14; it was also briefly described in Goering, 141--42. [^3]: Goering, *William de Montibus*, 141--42. ``` pandoc-3.1.3/test/command/pandoc-citeproc-7.md0000644000000000000000000000072607346545000017315 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- references: - author: family: Author given: - Ann container-title: Journal id: item1 issued: - day: 24 month: 9 year: 2011 - day: 26 month: 9 year: 2011 title: Title type: 'article-magazine' --- @item1 ^D Author (2011) ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-item1 .csl-entry} Author, Ann. 2011. "Title." *Journal*, September 24--26, 2011. ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-70.md0000644000000000000000000000402107346545000017365 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- references: - ISBN: 9782503531465 author: - family: 'Dinkova-Bruun' given: Greti call-number: CB351 .F564 2009 collection-number: 50 collection-title: Textes et études du moyen âge container-title: 'Florilegium mediaevale: Études offertes à Jacqueline Hamesse à l''occasion de son éméritat' editor: - family: Meirinhos given: José Francisco - family: Weijers given: Olga event-place: 'Louvain-la-Neuve' first-reference-note-number: 1 id: 'bruun:2009samuel' issued: date-parts: - - 2009 language: fr page: '155--174' publisher: 'Fédération Internationale des Instituts d''Études Médiévales' publisher-place: 'Louvain-la-Neuve' source: Library of Congress ISBN title: 'Samuel Presbyter and the Glosses to His Versification of Psalm 1: An Anti-Church Invective?' title-short: Samuel Presbyter type: chapter - ISSN: '0362-1529' author: - family: Thorndike given: Lynn container-title: Traditio first-reference-note-number: 1 id: 'thorndike:1955unde' issued: date-parts: - - 1955 language: la note: 'ArticleType: research-article / Full publication date: 1955 / Copyright © 1955 Fordham University' page: '163--193' source: JSTOR title: Unde versus type: 'article-journal' volume: 11 --- [@thorndike:1955unde; @bruun:2009samuel] ^D (Thorndike 1955; Dinkova-Bruun 2009) ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-bruun:2009samuel .csl-entry} Dinkova-Bruun, Greti. 2009. "Samuel Presbyter and the Glosses to His Versification of Psalm 1: An Anti-Church Invective?" In *Florilegium mediaevale: Études offertes à Jacqueline Hamesse à l'occasion de son éméritat*, edited by José Francisco Meirinhos and Olga Weijers, 155--74. Textes et études du moyen âge 50. Louvain-la-Neuve: Fédération Internationale des Instituts d'Études Médiévales. ::: ::: {#ref-thorndike:1955unde .csl-entry} Thorndike, Lynn. 1955. "Unde versus." *Traditio* 11: 163--93. ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-75.md0000644000000000000000000000147107346545000017400 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: command/apa.csl references: - author: - family: Doe given: John id: test issued: date-parts: - - 2006 title: Test type: 'article-journal' volume: 81 --- [@test, p. 6] [@test, chap. 6] [@test, n. 6] [@test, pp. 34-36, 38-39] [@test, sec. 3] [@test, p.3] [@test, 33-35, 38-39] [@test, 14] [@test bk. VI] [@test, no. 6] [@test, nos. 6 and 7] ^D (Doe, 2006, p. 6) (Doe, 2006, Chapter 6) (Doe, 2006, n. 6) (Doe, 2006, pp. 34--36, 38--39) (Doe, 2006, sec. 3) (Doe, 2006, p. 3) (Doe, 2006, pp. 33--35, 38--39) (Doe, 2006, p. 14) (Doe, 2006, bk. VI) (Doe, 2006, no. 6) (Doe, 2006, no. 6 and 7) ::: {#refs .references .csl-bib-body .hanging-indent line-spacing="2"} ::: {#ref-test .csl-entry} Doe, J. (2006). Test, *81*. ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-76.md0000644000000000000000000000227307346545000017402 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- references: - author: - family: Author given: Al id: item1 issued: date-parts: - - 1998 title: 'foo bar baz: bazbaz bar foo' type: 'article-journal' - author: - family: Author given: Al id: item2 issued: date-parts: - - 1998 title: 'foo bar baz: the bazbaz bar foo' type: 'article-journal' - author: - family: Author given: Al id: item3 issued: date-parts: - - 1998 title: 'foo bar baz: a bazbaz bar foo' type: 'article-journal' - author: - family: Author given: Al id: item4 issued: date-parts: - - 1998 title: 'foo bar baz: an abazbaz bar foo' type: 'article-journal' --- @item1, @item2, @item3, @item4 ^D Author (1998c), Author (1998d), Author (1998a), Author (1998b) ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-item3 .csl-entry} Author, Al. 1998a. "Foo Bar Baz: A Bazbaz Bar Foo." ::: ::: {#ref-item4 .csl-entry} ---------. 1998b. "Foo Bar Baz: An Abazbaz Bar Foo." ::: ::: {#ref-item1 .csl-entry} ---------. 1998c. "Foo Bar Baz: Bazbaz Bar Foo." ::: ::: {#ref-item2 .csl-entry} ---------. 1998d. "Foo Bar Baz: The Bazbaz Bar Foo." ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-77.md0000644000000000000000000000222707346545000017402 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: 'command/chicago-fullnote-bibliography.csl' references: - author: - family: Doe given: 'John, III' parse-names: true id: item1 type: book - author: - family: van Gogh given: Vincent parse-names: true id: item2 type: book - author: - family: Humboldt given: Alexander von parse-names: true id: item3 type: book - author: - family: Bennett given: 'Frank G.,! Jr.' parse-names: true id: item4 type: book - author: - family: Dumboldt given: 'Ezekiel, III' parse-names: true id: item5 type: book --- [@item1; @item2; @item3; @item4; @item5] ^D [^1] ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-item4 .csl-entry} Bennett, Frank G., Jr., n.d. ::: ::: {#ref-item1 .csl-entry} Doe, John, III, n.d. ::: ::: {#ref-item5 .csl-entry} Dumboldt, Ezekiel, III, n.d. ::: ::: {#ref-item2 .csl-entry} Gogh, Vincent van, n.d. ::: ::: {#ref-item3 .csl-entry} Humboldt, Alexander von, n.d. ::: ::: [^1]: John Doe III, n.d.; Vincent van Gogh, n.d.; Alexander von Humboldt, n.d.; Frank G. Bennett, Jr., n.d.; Ezekiel Dumboldt III, n.d. ``` pandoc-3.1.3/test/command/pandoc-citeproc-82.md0000644000000000000000000000127207346545000017375 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: 'command/chicago-annotated-bibliography.csl' references: - URL: 'https://www.worldcat.org/' accessed: date-parts: - - 2014 - 9 - 19 author: - literal: OCLC first-reference-note-number: 1 id: OCLC_i1099 title: WorldCat type: webpage --- Title ===== Some text.[^1] [^1]: Comment regarding text, supported by citation [@OCLC_i1099]. ^D # Title Some text.[^1] ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-OCLC_i1099 .csl-entry} OCLC. "WorldCat." Accessed September 19, 2014. . ::: ::: [^1]: Comment regarding text, supported by citation (OCLC, "WorldCat"). ``` pandoc-3.1.3/test/command/pandoc-citeproc-87.md0000644000000000000000000000540107346545000017400 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- references: - URL: 'http://www.example.com' author: - family: Doe given: John container-title: The Web Site id: item1 issued: date-parts: - - 2006 - 10 - 26 title: Title type: webpage - URL: 'http://www.example.com' author: - family: Doe given: John container-title: The Web Site id: item2 issued: date-parts: - - 2006 - 10 - 26 - - 2006 - 11 - 27 title: Title type: webpage - URL: 'http://www.example.com' author: - family: Doe given: John container-title: The Web Site id: item2a issued: date-parts: - - 2006 - 10 - - 2006 - 11 title: Title type: webpage - URL: 'http://www.example.com' author: - family: Doe given: John container-title: The Web Site id: item2b issued: date-parts: - - 2006 - 12 - 31 - - 2007 - 1 - 1 title: Title type: webpage - URL: 'http://www.example.com' author: - family: Doe given: John container-title: The Newspaper id: item3 issued: date-parts: - - 2006 - 10 - 26 - - 2006 - 11 - 27 title: Title type: 'article-newspaper' - URL: 'http://www.example.com' author: - family: Doe given: John container-title: The Newspaper id: item3b issued: date-parts: - - 2006 - 10 - - 2006 - 11 title: Title type: 'article-newspaper' --- @item1 -- webpage, date @item2 -- webpage, date range @item2a -- webpage, date range YM @item2b -- webpage, date range across years @item3 -- article-newspaper @item3b -- article-newspaper YM References ========== ^D Doe (2006c) -- webpage, date Doe (2006d) -- webpage, date range Doe (2006a) -- webpage, date range YM Doe (2006--2007) -- webpage, date range across years Doe (2006e) -- article-newspaper Doe (2006b) -- article-newspaper YM # References {#references .unnumbered} ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-item2a .csl-entry} Doe, John. 2006a. "Title." The Web Site. October--November 2006. . ::: ::: {#ref-item3b .csl-entry} ---------. 2006b. "Title." *The Newspaper*, October--November 2006. . ::: ::: {#ref-item1 .csl-entry} ---------. 2006c. "Title." The Web Site. October 26, 2006. . ::: ::: {#ref-item2 .csl-entry} ---------. 2006d. "Title." The Web Site. October 26--November 27, 2006. . ::: ::: {#ref-item3 .csl-entry} ---------. 2006e. "Title." *The Newspaper*, October 26--November 27, 2006. . ::: ::: {#ref-item2b .csl-entry} ---------. 2006--2007. "Title." The Web Site. December 31, 2006--January 1, 2007. . ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-chicago-author-date.md0000644000000000000000000000514307346545000022755 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- bibliography: command/biblio.bib link-citations: true --- Pandoc with citeproc-hs ======================= [@nonexistent] @nonexistent @item1 says blah. @item1 [p. 30] says blah. @item1 [p. 30, with suffix] says blah. @item1 [-@item2 p. 30; see also @пункт3] says blah. In a note.[^1] A citation group [see @item1 chap. 3; also @пункт3 p. 34-35]. Another one [see @item1 p. 34-35]. And another one in a note.[^2] Citation with a suffix and locator [@item1 pp. 33, 35-37, and nowhere else]. Citation with suffix only [@item1 and nowhere else]. Now some modifiers.[^3] With some markup [*see* @item1 p. **32**]. References {#references .unnumbered} ========== [^1]: @пункт3 [p. 12] and a citation without locators [@пункт3]. [^2]: Some citations [see @item1 chap. 3; @пункт3; @item2]. [^3]: Like a citation without author: [-@item1], and now Doe with a locator [-@item2 p. 44]. ^D 2> [WARNING] Citeproc: citation nonexistent not found # Pandoc with citeproc-hs ([**nonexistent?**](#ref-nonexistent)) ([**nonexistent?**](#ref-nonexistent)) Doe ([2005](#ref-item1)) says blah. Doe ([2005, 30](#ref-item1)) says blah. Doe ([2005, 30](#ref-item1), with suffix) says blah. Doe ([2005](#ref-item1); [2006, 30](#ref-item2); see also [Doe and Roe 2007](#ref-пункт3)) says blah. In a note.[^1] A citation group (see [Doe 2005, chap. 3](#ref-item1); also [Doe and Roe 2007, 34--35](#ref-пункт3)). Another one (see [Doe 2005, 34--35](#ref-item1)). And another one in a note.[^2] Citation with a suffix and locator ([Doe 2005, 33, 35--37](#ref-item1), and nowhere else). Citation with suffix only ([Doe 2005](#ref-item1) and nowhere else). Now some modifiers.[^3] With some markup (*see* [Doe 2005, 32](#ref-item1)). # References {#references .unnumbered} ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-item1 .csl-entry} Doe, John. 2005. *First Book*. Cambridge: Cambridge University Press. ::: ::: {#ref-item2 .csl-entry} ---------. 2006. "Article." *Journal of Generic Studies* 6: 33--34. ::: ::: {#ref-пункт3 .csl-entry} Doe, John, and Jenny Roe. 2007. "Why Water Is Wet." In *Third Book*, edited by Sam Smith. Oxford: Oxford University Press. ::: ::: [^1]: Doe and Roe ([2007, 12](#ref-пункт3)) and a citation without locators ([Doe and Roe 2007](#ref-пункт3)). [^2]: Some citations (see [Doe 2005, chap. 3](#ref-item1); [2006](#ref-item2); [Doe and Roe 2007](#ref-пункт3)). [^3]: Like a citation without author: ([2005](#ref-item1)), and now Doe with a locator ([2006, 44](#ref-item2)). ``` pandoc-3.1.3/test/command/pandoc-citeproc-chicago-fullnote-bibliography.md0000644000000000000000000000615007346545000025040 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- bibliography: command/biblio.bib csl: 'command/chicago-fullnote-bibliography.csl' link-citations: true --- Pandoc with citeproc-hs ======================= [@nonexistent] @nonexistent @item1 says blah. @item1 [p. 30] says blah. @item1 [p. 30, with suffix] says blah. @item1 [-@item2 p. 30; see also @пункт3] says blah. In a note.[^1] A citation group [see @item1 chap. 3; also @пункт3 p. 34-35]. Another one [see @item1 p. 34-35]. And another one in a note.[^2] Citation with a suffix and locator [@item1 pp. 33, 35-37, and nowhere else]. Citation with suffix only [@item1 and nowhere else]. Now some modifiers.[^3] With some markup [*see* @item1 p. **32**]. References {#references .unnumbered} ========== [^1]: @пункт3 [p. 12] and a citation without locators [@пункт3]. [^2]: Some citations [see @item1 chap. 3; @пункт3; @item2]. [^3]: Like a citation without author: [-@item1], and again [-@item1], and now Doe with a locator [-@item2 p. 44]. ^D 2> [WARNING] Citeproc: citation nonexistent not found # Pandoc with citeproc-hs [^1] [^2] John Doe[^3] says blah. Doe[^4] says blah. Doe[^5] says blah. Doe[^6] says blah. In a note.[^7] A citation group.[^8] Another one.[^9] And another one in a note.[^10] Citation with a suffix and locator.[^11] Citation with suffix only.[^12] Now some modifiers.[^13] With some markup.[^14] # References {#references .unnumbered} ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-item2 .csl-entry} Doe, John. "Article." *Journal of Generic Studies* 6 (2006): 33--34. ::: ::: {#ref-item1 .csl-entry} ---------. *First Book*. Cambridge: Cambridge University Press, 2005. ::: ::: {#ref-пункт3 .csl-entry} Doe, John, and Jenny Roe. "Why Water Is Wet." In *Third Book*, edited by Sam Smith. Oxford: Oxford University Press, 2007. ::: ::: [^1]: [**Nonexistent?**](#ref-nonexistent) [^2]: [**Nonexistent?**](#ref-nonexistent) [^3]: [*First Book* (Cambridge: Cambridge University Press, 2005)](#ref-item1). [^4]: [30](#ref-item1). [^5]: [30](#ref-item1), with suffix. [^6]: [*First Book*](#ref-item1); ["Article," *Journal of Generic Studies* 6 (2006): 30](#ref-item2); see also [John Doe and Jenny Roe, "Why Water Is Wet," in *Third Book*, ed. Sam Smith (Oxford: Oxford University Press, 2007)](#ref-пункт3). [^7]: Doe and Roe, ["Why Water Is Wet," 12](#ref-пункт3) and a citation without locators ([Doe and Roe, "Why Water Is Wet"](#ref-пункт3)). [^8]: See [Doe, *First Book*, chap. 3](#ref-item1); also [Doe and Roe, "Why Water Is Wet," 34--35](#ref-пункт3). [^9]: See [Doe, *First Book*, 34--35](#ref-item1). [^10]: Some citations (see [Doe, chap. 3](#ref-item1); [Doe and Roe, "Why Water Is Wet"](#ref-пункт3); [Doe, "Article"](#ref-item2)). [^11]: [Doe, *First Book*, 33, 35--37](#ref-item1), and nowhere else. [^12]: [Doe, *First Book*](#ref-item1) and nowhere else. [^13]: Like a citation without author: (), and again (), and now Doe with a locator (["Article," 44](#ref-item2)). [^14]: *See* [Doe, *First Book*, 32](#ref-item1). ``` pandoc-3.1.3/test/command/pandoc-citeproc-ieee.md0000644000000000000000000000522507346545000020055 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- bibliography: command/biblio.bib csl: command/ieee.csl link-citations: true --- Pandoc with citeproc-hs ======================= [@nonexistent] @nonexistent @item1 says blah. @item1 [p. 30] says blah. @item1 [p. 30, with suffix] says blah. @item1 [-@item2 p. 30; see also @пункт3] says blah. In a note.[^1] A citation group [see @item1 chap. 3; also @пункт3 p. 34-35]. Another one [see @item1 p. 34-35]. And another one in a note.[^2] Citation with a suffix and locator [@item1 pp. 33, 35-37, and nowhere else]. Citation with suffix only [@item1 and nowhere else]. Now some modifiers.[^3] With some markup [*see* @item1 p. **32**]. References {#references .unnumbered} ========== [^1]: @пункт3 [p. 12] and a citation without locators [@пункт3]. [^2]: Some citations [see @item1 chap. 3; @пункт3; @item2]. [^3]: Like a citation without author: [-@item1], and now Doe with a locator [-@item2 p. 44]. ^D 2> [WARNING] Citeproc: citation nonexistent not found # Pandoc with citeproc-hs [**nonexistent?**](#ref-nonexistent) [**nonexistent?**](#ref-nonexistent) [\[1\]](#ref-item1) says blah. [\[1, p. 30\]](#ref-item1) says blah. [\[1, p. 30\]](#ref-item1), with suffix says blah. [\[1\]](#ref-item1), [\[2, p. 30\]](#ref-item2), see also [\[3\]](#ref-пункт3) says blah. In a note.[^1] A citation group see [\[1, Ch. 3\]](#ref-item1), also [\[3, pp. 34--35\]](#ref-пункт3). Another one see [\[1, pp. 34--35\]](#ref-item1). And another one in a note.[^2] Citation with a suffix and locator [\[1, pp. 33, 35--37\]](#ref-item1), and nowhere else. Citation with suffix only [\[1\]](#ref-item1) and nowhere else. Now some modifiers.[^3] With some markup *see* [\[1, p. 32\]](#ref-item1). # References {#references .unnumbered} ::: {#refs .references .csl-bib-body} ::: {#ref-item1 .csl-entry} [\[1\] ]{.csl-left-margin}[J. Doe, *First book*. Cambridge: Cambridge University Press, 2005.]{.csl-right-inline} ::: ::: {#ref-item2 .csl-entry} [\[2\] ]{.csl-left-margin}[J. Doe, "Article," *Journal of Generic Studies*, vol. 6, pp. 33--34, 2006.]{.csl-right-inline} ::: ::: {#ref-пункт3 .csl-entry} [\[3\] ]{.csl-left-margin}[J. Doe and J. Roe, "Why water is wet," in *Third book*, S. Smith, Ed. Oxford: Oxford University Press, 2007.]{.csl-right-inline} ::: ::: [^1]: [\[3, p. 12\]](#ref-пункт3) and a citation without locators [\[3\]](#ref-пункт3). [^2]: Some citations see [\[1, Ch. 3\]](#ref-item1), [\[2\]](#ref-item2), [\[3\]](#ref-пункт3). [^3]: Like a citation without author: [\[1\]](#ref-item1), and now Doe with a locator [\[2, p. 44\]](#ref-item2). ``` pandoc-3.1.3/test/command/pandoc-citeproc-locators-delimited.md0000644000000000000000000000504507346545000022732 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: command/locators.csl references: - id: citekey title: Title type: 'article-journal' suppress-bibliography: true --- See . Standard page range[@citekey {35-89, 102}] Alphanumeric[@citekey {abcdefg1234}] Kitchen sink[@citekey, {123(4)a-8(\[a\]12.398{8})}] Empty braces inside[@citekey, {{}}] Label specified[@citekey {p. a}] Should it work outside? No. [@citekey, p. {(a)}] Empty locator [@citekey, {}] Empty locator to force suffix[@citekey {} 123-35 numbers are suffix] Suffix generally [@citekey {123-35} numbers not, but text is suffix] With preceding comma[@citekey, {p. VI}] No commas before label[@citekey, {, p. (p. is not recognised)}] Trim white space[@citekey, { p. 9 }] Without delimiters[@citekey, suffix] With rendering label[@citekey {ss IV div 4 s 128L(7)(a)(i)-(iv), 129(5), 130(b)}] The text is apparently NOT verbatim; it is lightly processed as page numbers. [@citekey {no comma, no label, no nothing}] AGLC-style page \[para\] [@citekey {584 \[78\]}] Unbalanced curly { breaks the parse[@citekey {p. suffix{suffix}suffix] Unbalanced curly } ends early[@citekey {green}suffix}suffix] ^D See . Standard page range[^1] Alphanumeric[^2] Kitchen sink[^3] Empty braces inside[^4] Label specified[^5] Should it work outside? No.[^6] Empty locator[^7] Empty locator to force suffix[^8] Suffix generally[^9] With preceding comma[^10] No commas before label[^11] Trim white space[^12] Without delimiters[^13] With rendering label[^14] The text is apparently NOT verbatim; it is lightly processed as page numbers.[^15] AGLC-style page \[para\][^16] Unbalanced curly { breaks the parse[^17] Unbalanced curly } ends early[^18] [^1]: Title {35--89, 102}. [^2]: Ibid-with-locator {abcdefg1234}. [^3]: Ibid-with-locator {123(4)a--8(\[a\]12.398{8})}. [^4]: Ibid-with-locator {{}}. [^5]: Ibid-with-locator {a}. [^6]: Subsequent, p. {(a)}. [^7]: Ibid. [^8]: Ibid 123-35 numbers are suffix. [^9]: Ibid-with-locator {123--35} numbers not, but text is suffix. [^10]: Ibid-with-locator {VI}. [^11]: Ibid-with-locator {, p. (p. is not recognised)}. [^12]: Ibid-with-locator {9}. [^13]: Subsequent, suffix. [^14]: Ibid-with-locator ss {IV div 4 s 128L(7)(a)(i)--(iv), 129(5), 130(b)}. [^15]: Ibid-with-locator {no comma, no label, no nothing}. [^16]: Ibid-with-locator {584 \[78\]}. [^17]: Subsequent {p. suffix{suffix}suffix. [^18]: Ibid-with-locator {green}suffix}suffix. ``` pandoc-3.1.3/test/command/pandoc-citeproc-locators-integrated.md0000644000000000000000000000466407346545000023126 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: command/locators.csl references: - id: citekey title: Title type: 'article-journal' suppress-bibliography: true --- See . [@citekey, 89, and suffix] [@citekey, 89, perfect Ibid with suffix] [@citekey, 123-79, and suffix] [@citekey, xi, will be entirely suffix] [@citekey, p. xi, gives you a (page) locator xi] [@citekey, pp. VII, 89, gives you a (pages) locator VII, 89] [@citekey, p. VI, VII, VIII-IX, explicit romans] [@citekey \[89\]] [@citekey, p. \[89\]] [@citekey and nothing else] [@citekey, 123(4)\[5\]6, and suffix] [@citekey, 3(a), 4.4.8, \[7.6\], 7A(2)(a)(i)-(iv)] [@citekey, 4B.2a.i(3.4), and suffix] [@citekey, IV.2A, and suffix] [@citekey, \[28\], and suffix] [@citekey, \[39-52\], and suffix] [@citekey, \[39\]-\[52\], and suffix] [@citekey, s 123(4)(a)(iv), and suffix] [@citekey, ss 123(4)-(6), and suffix] [@citekey, \[13\], and suffix] [@citekey, p.3, and suffix] [@citekey, (13 entirely suffix] [@citekey, p.a entirely suffix] [@citekey, s (a) entirely suffix] ^D See . [^1] [^2] [^3] [^4] [^5] [^6] [^7] [^8] [^9] [^10] [^11] [^12] [^13] [^14] [^15] [^16] [^17] [^18] [^19] [^20] [^21] [^22] [^23] [^24] [^1]: Title {89}, and suffix. [^2]: Ibid, perfect Ibid with suffix. [^3]: Ibid-with-locator {123--79}, and suffix. [^4]: Subsequent, xi, will be entirely suffix. [^5]: Ibid-with-locator {xi}, gives you a (page) locator xi. [^6]: Ibid-with-locator {VII, 89}, gives you a (pages) locator VII, 89. [^7]: Ibid-with-locator {VI, VII, VIII--IX}, explicit romans. [^8]: Ibid-with-locator {\[89\]}. [^9]: Ibid. [^10]: Subsequent and nothing else. [^11]: Ibid-with-locator {123(4)\[5\]6}, and suffix. [^12]: Ibid-with-locator {3(a), 4.4.8, \[7.6\], 7A(2)(a)(i)--(iv)}. [^13]: Ibid-with-locator {4B.2a.i(3.4)}, and suffix. [^14]: Ibid-with-locator {IV.2A}, and suffix. [^15]: Ibid-with-locator {\[28\]}, and suffix. [^16]: Ibid-with-locator {\[39--52\]}, and suffix. [^17]: Ibid-with-locator {\[39\]--\[52\]}, and suffix. [^18]: Ibid-with-locator s {123(4)(a)(iv)}, and suffix. [^19]: Ibid-with-locator ss {123(4)--(6)}, and suffix. [^20]: Ibid-with-locator {\[13\]}, and suffix. [^21]: Ibid-with-locator {3}, and suffix. [^22]: Subsequent, (13 entirely suffix. [^23]: Ibid, p.a entirely suffix. [^24]: Ibid, s (a) entirely suffix. ``` pandoc-3.1.3/test/command/pandoc-citeproc-move-period-inside-quote.md0000644000000000000000000000225707346545000024002 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: 'command/chicago-fullnote-bibliography.csl' references: - DOI: 10.1038/171737a0 URL: 'http://www.nature.com/nature/journal/v171/n4356/abs/171737a0.html' accessed: day: 17 month: 6 year: 2008 author: - family: Watson given: J. D. - family: Crick given: F. H. C. container-title: Nature custom4: custom4 id: WatsonCrick1953 issue: 4356 issued: date-parts: - - 1953 - 4 - 25 language: 'en-US' note: this is a note original-date: year: 1951 page: '737-738' title: 'Molecular structure of nucleic acids: a structure for deoxyribose nucleic acid' title-short: Molecular structure of nucleic acids type: 'article-journal' volume: 171 suppress-bibliography: true --- Here is a "test citation" [@WatsonCrick1953]. Here is a test citation [@WatsonCrick1953]. ^D Here is a "test citation."[^1] Here is a test citation.[^2] [^1]: J. D. Watson and F. H. C. Crick, "Molecular Structure of Nucleic Acids: A Structure for Deoxyribose Nucleic Acid," *Nature* 171, no. 4356 (April 25, 1953): 737--38, . [^2]: Watson and Crick. ``` pandoc-3.1.3/test/command/pandoc-citeproc-no-author.md0000644000000000000000000000254107346545000021060 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- references: - container-title: Magazine id: item1 issued: year: 2012 title: Title A type: 'article-magazine' - container-title: Magazine id: item2 issued: year: 2012 title: Title B type: 'article-magazine' - container-title: Magazine id: item3 issued: year: 2012 title: Title C type: 'article-magazine' - container-title: Magazine id: item4 issued: year: 2012 title: Title D type: 'article-magazine' - container-title: Newspaper id: item5 issued: year: 2012 title: Title E type: 'article-magazine' - container-title: Newspaper id: item6 issued: year: 2012 title: Title F type: 'article-magazine' --- @item1 [p. 3], @item2, @item3, @item4, @item5, @item6 ^D *Magazine* (2012a, 3), *Magazine* (2012b), *Magazine* (2012c), *Magazine* (2012d), *Newspaper* (2012a), *Newspaper* (2012b) ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-item1 .csl-entry} *Magazine*. 2012a. "Title A," 2012. ::: ::: {#ref-item2 .csl-entry} ---------. 2012b. "Title B," 2012. ::: ::: {#ref-item3 .csl-entry} ---------. 2012c. "Title C," 2012. ::: ::: {#ref-item4 .csl-entry} ---------. 2012d. "Title D," 2012. ::: ::: {#ref-item5 .csl-entry} *Newspaper*. 2012a. "Title E," 2012. ::: ::: {#ref-item6 .csl-entry} ---------. 2012b. "Title F," 2012. ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-number-of-volumes.md0000644000000000000000000000070207346545000022523 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- references: - author: family: Author given: - Al id: item1 issued: year: 2013 language: 'en-US' number-of-volumes: 2 publisher: Publisher publisher-place: Location title: Title type: book --- @item1 ^D Author (2013) ::: {#refs .references .csl-bib-body .hanging-indent} ::: {#ref-item1 .csl-entry} Author, Al. 2013. *Title*. 2 vols. Location: Publisher. ::: ::: ``` pandoc-3.1.3/test/command/pandoc-citeproc-page-range.md0000644000000000000000000000112307346545000021145 0ustar0000000000000000``` % pandoc --citeproc -t markdown-citations --- csl: 'command/chicago-fullnote-bibliography.csl' references: - URL: 'https://johnmacfarlane.net/vagueness.pdf' id: test1 - URL: 'https://pandoc.org' id: test2 - URL: 'https://johnmacfarlane.net' id: test3 suppress-bibliography: true --- Test 1 [@test1, pp. 93--101]. Test 2 [@test2, pp. 93--101]. Test 3 [@test3, pp. 93-101]. ^D Test 1.[^1] Test 2.[^2] Test 3.[^3] [^1]: N.d., 93--101, . [^2]: N.d., 93--101, . [^3]: N.d., 93--101, . ``` pandoc-3.1.3/test/command/parse-raw.md0000644000000000000000000000057307346545000016000 0ustar0000000000000000``` % pandoc -f latex+raw_tex -t markdown \emph{Hi \foo{there}} ^D *Hi `\foo{there}`{=latex}* ``` ``` % pandoc -f latex -t markdown \emph{Hi \foo{there}} ^D *Hi* ``` ``` % pandoc -f html+raw_html -t markdown Hi there ^D *Hi ``{=html}there``{=html}* ``` ``` % pandoc -f html -t markdown Hi there ^D *Hi there* ``` pandoc-3.1.3/test/command/refs.md0000644000000000000000000001263607346545000015041 0ustar0000000000000000``` % pandoc -f latex -t native Figure \ref{fig:1} ^D [ Para [ Str "Figure" , Space , Link ( "" , [] , [ ( "reference-type" , "ref" ) , ( "reference" , "fig:1" ) ] ) [ Str "[fig:1]" ] ( "#fig:1" , "" ) ] ] ``` ``` % pandoc -f latex -t native Figure \cref{fig:1} ^D [ Para [ Str "Figure" , Space , Link ( "" , [] , [ ( "reference-type" , "ref" ) , ( "reference" , "fig:1" ) ] ) [ Str "[fig:1]" ] ( "#fig:1" , "" ) ] ] ``` ``` % pandoc -f latex -t native Figure \vref{fig:1} ^D [ Para [ Str "Figure" , Space , Link ( "" , [] , [ ( "reference-type" , "ref+page" ) , ( "reference" , "fig:1" ) ] ) [ Str "[fig:1]" ] ( "#fig:1" , "" ) ] ] ``` ``` % pandoc -f latex -t native \autoref{fig:flowchart} ^D [ Para [ Link ( "" , [] , [ ( "reference-type" , "autoref" ) , ( "reference" , "fig:flowchart" ) ] ) [ Str "[fig:flowchart]" ] ( "#fig:flowchart" , "" ) ] ] ``` ``` % pandoc -f latex -t native Accuracy~\eqref{eq:Accuracy} is the proportion, measuring true results among all results. \begin{equation} \label{eq:Accuracy} Accuracy = \frac{t_p + t_n}{t_p + f_p + f_n + t_n} \end{equation} ^D [ Para [ Str "Accuracy\160" , Link ( "" , [] , [ ( "reference-type" , "eqref" ) , ( "reference" , "eq:Accuracy" ) ] ) [ Str "[eq:Accuracy]" ] ( "#eq:Accuracy" , "" ) , Space , Str "is" , Space , Str "the" , Space , Str "proportion," , Space , Str "measuring" , Space , Str "true" , Space , Str "results" , Space , Str "among" , Space , Str "all" , Space , Str "results." ] , Para [ Math DisplayMath "\\label{eq:Accuracy}\n Accuracy = \\frac{t_p + t_n}{t_p + f_p + f_n + t_n}" ] ] ``` ``` % pandoc -f latex -t native \begin{figure} \includegraphics{command/SVG_logo.svg} \caption{Logo} \label{fig:Logo} \end{figure} Figure \ref{fig:Logo} illustrated the SVG logo ^D [ Figure ( "fig:Logo" , [] , [] ) (Caption Nothing [ Plain [ Str "Logo" ] ]) [ Plain [ Image ( "" , [] , [] ) [] ( "command/SVG_logo.svg" , "" ) ] ] , Para [ Str "Figure" , Space , Link ( "" , [] , [ ( "reference-type" , "ref" ) , ( "reference" , "fig:Logo" ) ] ) [ Str "1" ] ( "#fig:Logo" , "" ) , Space , Str "illustrated" , Space , Str "the" , Space , Str "SVG" , Space , Str "logo" ] ] ``` ``` % pandoc -f latex -t native \chapter{One} \begin{figure} \includegraphics{command/SVG_logo.svg} \caption{Logo} \label{fig:Logo} \end{figure} \begin{figure} \includegraphics{command/SVG_logo2.svg} \caption{Logo2} \label{fig:Logo2} \end{figure} \chapter{Two} \section{Subone} \begin{figure} \includegraphics{command/SVG_logo3.svg} \caption{Logo3} \label{fig:Logo3} \end{figure} Figure \ref{fig:Logo} illustrated the SVG logo Figure \ref{fig:Logo2} illustrated the SVG logo Figure \ref{fig:Logo3} illustrated the SVG logo ^D [ Header 1 ( "one" , [] , [] ) [ Str "One" ] , Figure ( "fig:Logo" , [] , [] ) (Caption Nothing [ Plain [ Str "Logo" ] ]) [ Plain [ Image ( "" , [] , [] ) [] ( "command/SVG_logo.svg" , "" ) ] ] , Figure ( "fig:Logo2" , [] , [] ) (Caption Nothing [ Plain [ Str "Logo2" ] ]) [ Plain [ Image ( "" , [] , [] ) [] ( "command/SVG_logo2.svg" , "" ) ] ] , Header 1 ( "two" , [] , [] ) [ Str "Two" ] , Header 2 ( "subone" , [] , [] ) [ Str "Subone" ] , Figure ( "fig:Logo3" , [] , [] ) (Caption Nothing [ Plain [ Str "Logo3" ] ]) [ Plain [ Image ( "" , [] , [] ) [] ( "command/SVG_logo3.svg" , "" ) ] ] , Para [ Str "Figure" , Space , Link ( "" , [] , [ ( "reference-type" , "ref" ) , ( "reference" , "fig:Logo" ) ] ) [ Str "1.1" ] ( "#fig:Logo" , "" ) , Space , Str "illustrated" , Space , Str "the" , Space , Str "SVG" , Space , Str "logo" ] , Para [ Str "Figure" , Space , Link ( "" , [] , [ ( "reference-type" , "ref" ) , ( "reference" , "fig:Logo2" ) ] ) [ Str "1.2" ] ( "#fig:Logo2" , "" ) , Space , Str "illustrated" , Space , Str "the" , Space , Str "SVG" , Space , Str "logo" ] , Para [ Str "Figure" , Space , Link ( "" , [] , [ ( "reference-type" , "ref" ) , ( "reference" , "fig:Logo3" ) ] ) [ Str "2.1" ] ( "#fig:Logo3" , "" ) , Space , Str "illustrated" , Space , Str "the" , Space , Str "SVG" , Space , Str "logo" ] ] ``` ``` % pandoc -f latex -t native \label{section} Section \ref{section} ^D [ Para [ Span ( "section" , [] , [ ( "label" , "section" ) ] ) [] , Space , Str "Section" , Space , Link ( "" , [] , [ ( "reference-type" , "ref" ) , ( "reference" , "section" ) ] ) [ Str "[section]" ] ( "#section" , "" ) ] ] ``` pandoc-3.1.3/test/command/rst-links.md0000644000000000000000000000024607346545000016022 0ustar0000000000000000``` % pandoc -f rst `*ab*`_ .. _`*ab*`: foo ^D

    *ab*

    ``` ``` % pandoc -f rst `A B c`_ .. _A B C: foo ^D

    A B c

    ``` pandoc-3.1.3/test/command/sage-harvard.csl0000644000000000000000000001471007346545000016622 0ustar0000000000000000 pandoc-3.1.3/test/command/science.csl0000644000000000000000000002022607346545000015666 0ustar0000000000000000 pandoc-3.1.3/test/command/section-divs.md0000644000000000000000000000051007346545000016475 0ustar0000000000000000``` % pandoc --section-divs ::: {#hi .section .level1} # Hi ::: {#there .section .level2} ## there ::: ::: ::: {#ok .section .level1} Ok == ::: ^D

    Hi

    there

    Ok

    ``` pandoc-3.1.3/test/command/setext-fenced-div.md0000644000000000000000000000014607346545000017411 0ustar0000000000000000``` % pandoc -t native ::: {.cell} --- ::: ^D [ Div ( "" , [ "cell" ] , [] ) [ HorizontalRule ] ] ``` pandoc-3.1.3/test/command/shift-heading-level-by.md0000644000000000000000000000162007346545000020320 0ustar0000000000000000``` % pandoc --shift-heading-level-by 1 -t native -s --- title: My title ... # First heading ## Second ^D Pandoc Meta { unMeta = fromList [ ( "title" , MetaInlines [ Str "My" , Space , Str "title" ] ) ] } [ Header 2 ( "first-heading" , [] , [] ) [ Str "First" , Space , Str "heading" ] , Header 3 ( "second" , [] , [] ) [ Str "Second" ] ] ``` ``` % pandoc --shift-heading-level-by -1 -t native -s --- title: Old title ... # First heading ## Second # Another top-level heading ^D Pandoc Meta { unMeta = fromList [ ( "title" , MetaInlines [ Str "First" , Space , Str "heading" ] ) ] } [ Header 1 ( "second" , [] , [] ) [ Str "Second" ] , Para [ Str "Another" , Space , Str "top-level" , Space , Str "heading" ] ] ``` pandoc-3.1.3/test/command/short-caption.md0000644000000000000000000000170107346545000016663 0ustar0000000000000000``` % pandoc -f latex -t native \begin{table} \caption[short caption]{long caption} \begin{tabular}{ll} hi & hi \\ \end{tabular} \end{table} ^D [ Table ( "" , [] , [] ) (Caption (Just [ Str "short" , Space , Str "caption" ]) [ Plain [ Str "long" , Space , Str "caption" ] ]) [ ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "hi" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "hi" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ``` pandoc-3.1.3/test/command/sloppypar.md0000644000000000000000000000731507346545000016131 0ustar0000000000000000``` % pandoc -f latex+raw_tex -t native \begin{sloppypar} Sequi id qui facere et incidunt ut. Et fuga ut voluptate enim qui. Odit unde magni ipsam dicta modi. Modi soluta velit est aut aut possimus. Qui et temporibus explicabo. Esse ab ut quidem. Vel qui perspiciatis quae odio consectetur alias non sed. Quo consectetur libero omnis quos eius ad vel. \end{sloppypar} ^D [ Para [ Str "Sequi" , Space , Str "id" , Space , Str "qui" , Space , Str "facere" , Space , Str "et" , Space , Str "incidunt" , Space , Str "ut." , Space , Str "Et" , Space , Str "fuga" , Space , Str "ut" , Space , Str "voluptate" , Space , Str "enim" , Space , Str "qui." , Space , Str "Odit" , Space , Str "unde" , Space , Str "magni" , Space , Str "ipsam" , Space , Str "dicta" , Space , Str "modi." , Space , Str "Modi" , Space , Str "soluta" , Space , Str "velit" , Space , Str "est" , Space , Str "aut" , Space , Str "aut" , Space , Str "possimus." ] , Para [ Str "Qui" , Space , Str "et" , Space , Str "temporibus" , Space , Str "explicabo." , Space , Str "Esse" , Space , Str "ab" , Space , Str "ut" , Space , Str "quidem." , Space , Str "Vel" , Space , Str "qui" , Space , Str "perspiciatis" , Space , Str "quae" , Space , Str "odio" , Space , Str "consectetur" , Space , Str "alias" , Space , Str "non" , Space , Str "sed." , Space , Str "Quo" , Space , Str "consectetur" , Space , Str "libero" , Space , Str "omnis" , Space , Str "quos" , Space , Str "eius" , Space , Str "ad" , Space , Str "vel." ] ] ``` ``` % pandoc -f latex -t native \begin{sloppypar} Sequi id qui facere et incidunt ut. Et fuga ut voluptate enim qui. Odit unde magni ipsam dicta modi. Modi soluta velit est aut aut possimus. Qui et temporibus explicabo. Esse ab ut quidem. Vel qui perspiciatis quae odio consectetur alias non sed. Quo consectetur libero omnis quos eius ad vel. \end{sloppypar} ^D [ Para [ Str "Sequi" , Space , Str "id" , Space , Str "qui" , Space , Str "facere" , Space , Str "et" , Space , Str "incidunt" , Space , Str "ut." , Space , Str "Et" , Space , Str "fuga" , Space , Str "ut" , Space , Str "voluptate" , Space , Str "enim" , Space , Str "qui." , Space , Str "Odit" , Space , Str "unde" , Space , Str "magni" , Space , Str "ipsam" , Space , Str "dicta" , Space , Str "modi." , Space , Str "Modi" , Space , Str "soluta" , Space , Str "velit" , Space , Str "est" , Space , Str "aut" , Space , Str "aut" , Space , Str "possimus." ] , Para [ Str "Qui" , Space , Str "et" , Space , Str "temporibus" , Space , Str "explicabo." , Space , Str "Esse" , Space , Str "ab" , Space , Str "ut" , Space , Str "quidem." , Space , Str "Vel" , Space , Str "qui" , Space , Str "perspiciatis" , Space , Str "quae" , Space , Str "odio" , Space , Str "consectetur" , Space , Str "alias" , Space , Str "non" , Space , Str "sed." , Space , Str "Quo" , Space , Str "consectetur" , Space , Str "libero" , Space , Str "omnis" , Space , Str "quos" , Space , Str "eius" , Space , Str "ad" , Space , Str "vel." ] ] ``` pandoc-3.1.3/test/command/smart.md0000644000000000000000000000143407346545000015222 0ustar0000000000000000``` % pandoc -f markdown+smart -t markdown-smart "hi"...dog's breath---cat 5--6 ^D “hi”…dog’s breath—cat 5–6 ``` ``` % pandoc -f markdown+smart -t markdown+smart "hi"...dog's breath---cat 5--6 ^D "hi"...dog's breath---cat 5--6 ``` When we render literal quotes without smart, we need to escape: ``` % pandoc -f markdown-smart \ -t markdown+smart "hi"...dog's breath---cat 5--6 ^D \"hi\"\...dog\'s breath\-\--cat 5\--6 ``` ``` % pandoc -f markdown+smart -t rst-smart "hi"...dog's breath---cat 5--6 ^D “hi”…dog’s breath—cat 5–6 ``` ``` % pandoc -f markdown+smart -t rst+smart "hi"...dog's breath---cat 5--6 ^D "hi"...dog's breath---cat 5--6 ``` ``` % pandoc -f markdown-smart -t rst+smart "hi"...dog's breath---cat 5--6 ^D \"hi\"\...dog\'s breath\-\--cat 5\--6 ``` pandoc-3.1.3/test/command/style399.csl0000644000000000000000000000057507346545000015667 0ustar0000000000000000 pandoc-3.1.3/test/command/sub-file-chapter-1.tex0000644000000000000000000000020607346545000017560 0ustar0000000000000000\documentclass[main.tex]{subfiles} \begin{document} \section{Chapter 1} This is Chapter 1, provided in a sub file. \end{document} pandoc-3.1.3/test/command/sub-file-chapter-2.tex0000644000000000000000000000021507346545000017561 0ustar0000000000000000\documentclass[main.tex]{subfiles} \begin{document} \section{Chapter 2} This is Chapter 2, provided in a second sub file. \end{document} pandoc-3.1.3/test/command/svg.md0000644000000000000000000001271107346545000014673 0ustar0000000000000000``` % pandoc -f latex -t icml \includegraphics{command/corrupt.svg} ^D 2> [WARNING] Could not determine image size for command/corrupt.svg: could not determine image type $ID/Embedded ``` ``` % pandoc -f latex -t icml \includegraphics{command/SVG_logo.svg} ^D $ID/Embedded ``` ``` % pandoc -f latex -t icml \includegraphics{command/SVG_logo-without-xml-declaration.svg} ^D $ID/Embedded ``` ``` % pandoc -f latex -t icml \includegraphics{command/inkscape-cube.svg} ^D $ID/Embedded ``` pandoc-3.1.3/test/command/table-with-cell-align.md0000644000000000000000000000617307346545000020146 0ustar0000000000000000``` % pandoc -f docbook -t native --quiet 1 2 3 4 ^D [ Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignCenter (RowSpan 1) (ColSpan 1) [ Para [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignLeft (RowSpan 1) (ColSpan 1) [ Para [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignRight (RowSpan 1) (ColSpan 1) [ Para [ Str "3" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "4" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ``` ``` % pandoc -f native -t opendocument --quiet [Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidthDefault) ,(AlignDefault,ColWidthDefault) ,(AlignDefault,ColWidthDefault) ,(AlignDefault,ColWidthDefault)] (TableHead ("",[],[]) []) [(TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1) [Para [Str "1"]] ,Cell ("",[],[]) AlignLeft (RowSpan 1) (ColSpan 1) [Para [Str "2"]] ,Cell ("",[],[]) AlignRight (RowSpan 1) (ColSpan 1) [Para [Str "3"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "4"]]]])] (TableFoot ("",[],[]) [])] ^D 1 2 3 4 ``` pandoc-3.1.3/test/command/table-with-column-span.md0000644000000000000000000003450007346545000020366 0ustar0000000000000000``` % pandoc -f docbook -t native --quiet Octet no. 1 Octet no. 2 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Code A Code B ^D [ Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidth 6.25e-2 ) , ( AlignDefault , ColWidth 6.25e-2 ) , ( AlignDefault , ColWidth 6.25e-2 ) , ( AlignDefault , ColWidth 6.25e-2 ) , ( AlignDefault , ColWidth 6.25e-2 ) , ( AlignDefault , ColWidth 6.25e-2 ) , ( AlignDefault , ColWidth 6.25e-2 ) , ( AlignDefault , ColWidth 6.25e-2 ) , ( AlignDefault , ColWidth 6.25e-2 ) , ( AlignDefault , ColWidth 6.25e-2 ) , ( AlignDefault , ColWidth 6.25e-2 ) , ( AlignDefault , ColWidth 6.25e-2 ) , ( AlignDefault , ColWidth 6.25e-2 ) , ( AlignDefault , ColWidth 6.25e-2 ) , ( AlignDefault , ColWidth 6.25e-2 ) , ( AlignDefault , ColWidth 6.25e-2 ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignCenter (RowSpan 1) (ColSpan 8) [ Para [ Strong [ Str "Octet" , Space , Str "no." , Space , Str "1" ] ] ] , Cell ( "" , [] , [] ) AlignCenter (RowSpan 1) (ColSpan 8) [ Para [ Strong [ Str "Octet" , Space , Str "no." , Space , Str "2" ] ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignCenter (RowSpan 1) (ColSpan 1) [ Para [ Str "16" ] ] , Cell ( "" , [] , [] ) AlignCenter (RowSpan 1) (ColSpan 1) [ Para [ Str "15" ] ] , Cell ( "" , [] , [] ) AlignCenter (RowSpan 1) (ColSpan 1) [ Para [ Str "14" ] ] , Cell ( "" , [] , [] ) AlignCenter (RowSpan 1) (ColSpan 1) [ Para [ Str "13" ] ] , Cell ( "" , [] , [] ) AlignCenter (RowSpan 1) (ColSpan 1) [ Para [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignCenter (RowSpan 1) (ColSpan 1) [ Para [ Str "11" ] ] , Cell ( "" , [] , [] ) AlignCenter (RowSpan 1) (ColSpan 1) [ Para [ Str "10" ] ] , Cell ( "" , [] , [] ) AlignCenter (RowSpan 1) (ColSpan 1) [ Para [ Str "9" ] ] , Cell ( "" , [] , [] ) AlignCenter (RowSpan 1) (ColSpan 1) [ Para [ Str "8" ] ] , Cell ( "" , [] , [] ) AlignCenter (RowSpan 1) (ColSpan 1) [ Para [ Str "7" ] ] , Cell ( "" , [] , [] ) AlignCenter (RowSpan 1) (ColSpan 1) [ Para [ Str "6" ] ] , Cell ( "" , [] , [] ) AlignCenter (RowSpan 1) (ColSpan 1) [ Para [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignCenter (RowSpan 1) (ColSpan 1) [ Para [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignCenter (RowSpan 1) (ColSpan 1) [ Para [ Str "3" ] ] , Cell ( "" , [] , [] ) AlignCenter (RowSpan 1) (ColSpan 1) [ Para [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignCenter (RowSpan 1) (ColSpan 1) [ Para [ Str "1" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignCenter (RowSpan 1) (ColSpan 8) [ Para [ Str "Code" , Space , Str "A" ] ] , Cell ( "" , [] , [] ) AlignCenter (RowSpan 1) (ColSpan 8) [ Para [ Str "Code" , Space , Str "B" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ``` ``` % pandoc -f native -t opendocument --quiet [Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidth 6.25e-2) ,(AlignDefault,ColWidth 6.25e-2) ,(AlignDefault,ColWidth 6.25e-2) ,(AlignDefault,ColWidth 6.25e-2) ,(AlignDefault,ColWidth 6.25e-2) ,(AlignDefault,ColWidth 6.25e-2) ,(AlignDefault,ColWidth 6.25e-2) ,(AlignDefault,ColWidth 6.25e-2) ,(AlignDefault,ColWidth 6.25e-2) ,(AlignDefault,ColWidth 6.25e-2) ,(AlignDefault,ColWidth 6.25e-2) ,(AlignDefault,ColWidth 6.25e-2) ,(AlignDefault,ColWidth 6.25e-2) ,(AlignDefault,ColWidth 6.25e-2) ,(AlignDefault,ColWidth 6.25e-2) ,(AlignDefault,ColWidth 6.25e-2)] (TableHead ("",[],[]) []) [(TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 8) [Para [Strong [Str "Octet",Space,Str "no.",Space,Str "1"]]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 8) [Para [Strong [Str "Octet",Space,Str "no.",Space,Str "2"]]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "16"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "15"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "14"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "13"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "12"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "11"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "10"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "9"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "8"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "7"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "6"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "5"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "4"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "3"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "2"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "1"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 8) [Para [Str "Code",Space,Str "A"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 8) [Para [Str "Code",Space,Str "B"]]]])] (TableFoot ("",[],[]) [])] ^D Octet no. 1 Octet no. 2 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Code A Code B ``` pandoc-3.1.3/test/command/tabularx.md0000644000000000000000000002570507346545000015725 0ustar0000000000000000``` % pandoc -f latex -t native --quiet \begin{tabularx}{\linewidth}{|c|c|c|} \hline Column Heading 1 & Column Heading 2 & Column Heading 3 \\ \hline Cell 1.1 & Cell 1.2 & Cell 1.3 \\ \hline Cell 2.1 & Cell 2.2 & Cell 2.3 \\ \hline Cell 3.1 & Cell 3.2 & Cell 3.3 \\ \hline \end{tabularx} ^D [ Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Column" , Space , Str "Heading" , Space , Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Column" , Space , Str "Heading" , Space , Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Column" , Space , Str "Heading" , Space , Str "3" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "1.1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "1.2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "1.3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "2.1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "2.2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "2.3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "3.1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "3.2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "3.3" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ``` ``` % pandoc -f latex -t native --quiet \begin{tabularx}{\linewidth}{|X|c|p{0.25\linewidth}|} \hline Column Heading 1 & Column Heading 2 & Column Heading 3 \\ \hline Cell 1.1 & Cell 1.2 & Cell 1.3 \\ \hline Cell 2.1 & Cell 2.2 & Cell 2.3 \\ \hline Cell 3.1 & Cell 3.2 & Cell 3.3 \\ \hline \end{tabularx} ^D [ Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignLeft , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignLeft , ColWidth 0.25 ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Column" , Space , Str "Heading" , Space , Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Column" , Space , Str "Heading" , Space , Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Column" , Space , Str "Heading" , Space , Str "3" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "1.1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "1.2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "1.3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "2.1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "2.2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "2.3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "3.1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "3.2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "3.3" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ``` ``` % pandoc -f latex -t native --quiet \begin{tabularx}{\linewidth}{|b{0.25\linewidth}|c|m{0.25\linewidth}|} \hline Column Heading 1 & Column Heading 2 & Column Heading 3 \\ \hline Cell 1.1 & Cell 1.2 & Cell 1.3 \\ \hline Cell 2.1 & Cell 2.2 & Cell 2.3 \\ \hline Cell 3.1 & Cell 3.2 & Cell 3.3 \\ \hline \end{tabularx} ^D [ Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignLeft , ColWidth 0.25 ) , ( AlignCenter , ColWidthDefault ) , ( AlignLeft , ColWidth 0.25 ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Column" , Space , Str "Heading" , Space , Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Column" , Space , Str "Heading" , Space , Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Column" , Space , Str "Heading" , Space , Str "3" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "1.1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "1.2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "1.3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "2.1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "2.2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "2.3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "3.1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "3.2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "3.3" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ``` pandoc-3.1.3/test/command/tasklist.md0000644000000000000000000000327207346545000015734 0ustar0000000000000000tests adapted from ``` % pandoc - [ ] foo - [x] bar ^D
    ``` ``` % pandoc - [x] foo - [ ] bar - [x] baz - [ ] bim ^D
    ``` custom html task list test: ``` % pandoc - [ ] unchecked - plain item - [x] checked paragraph 1. [ ] ordered unchecked 2. [] plain item 3. [x] ordered checked paragraph - [ ] list item with a second paragraph - [x] checked ^D
    • plain item

    paragraph

    1. [] plain item

    paragraph

    • second paragraph

    ``` latex task list test: ``` % pandoc -t latex - [ ] foo bar baz - [x] ok ^D \begin{itemize} \item[$\square$] foo bar baz \item[$\boxtimes$] ok \end{itemize} ``` round trip: ``` % pandoc -f markdown -t markdown - [ ] foo - [x] bar ^D - [ ] foo - [x] bar ``` pandoc-3.1.3/test/command/tex-group.md0000644000000000000000000000022107346545000016017 0ustar0000000000000000``` % pandoc -f latex -t html \newenvironment{foo}% {\emph\bgroup}% {\egroup} \begin{foo} hi \end{foo} ^D

    hi

    ``` pandoc-3.1.3/test/command/three.txt0000644000000000000000000000003607346545000015417 0ustar00000000000000001st line. 2nd line. 3rd line. pandoc-3.1.3/test/command/toc.md0000644000000000000000000000052207346545000014656 0ustar0000000000000000``` % pandoc -s --toc -t markdown # A ## b # B ## b ::: interior # C ## cc # D ::: ::: blue # E ## e ::: ^D - [A](#a){#toc-a} - [b](#b){#toc-b} - [B](#b-1){#toc-b-1} - [b](#b-2){#toc-b-2} - [E](#e){#toc-e} - [e](#e-1){#toc-e-1} # A ## b # B ## b ::: interior # C ## cc # D ::: ::: blue # E ## e ::: ``` pandoc-3.1.3/test/command/translations.md0000644000000000000000000000071407346545000016615 0ustar0000000000000000``` % pandoc -f latex -t native -M lang=en \figurename\ 2 ^D [ Para [ Str "Figure\160\&2" ] ] ``` ``` % pandoc -f latex -t native -M lang=de-DE \figurename\ 2 ^D [ Para [ Str "Abbildung\160\&2" ] ] ``` ``` % pandoc -f latex -t native -M lang=en \setmainlanguage{german} \figurename 2 ^D [ Para [ Str "Abbildung2" ] ] ``` ``` % pandoc -f latex -t native -M lang=sr \figurename~2 \figurename. ^D [ Para [ Str "Slika\160\&2" , SoftBreak , Str "Slika." ] ] ``` pandoc-3.1.3/test/command/unicode-collation.md0000644000000000000000000000320307346545000017500 0ustar0000000000000000``` % pandoc --citeproc -t plain --- lang: en-US csl: command/apa.csl references: - id: a1 type: book author: - family: Ubina given: A. John issued: 1985 - id: a2 type: book author: - family: Über given: Aglaia issued: 1996 - id: a3 type: book author: - family: Oñate given: José issued: 1985 - id: a4 type: book author: - family: Onush given: Frank issued: 2002 - id: a5 type: book author: - family: O'Neil given: Timothy issued: 2010 --- [@a1;@a2;@a3;@a4;@a5] ^D (O’Neil, 2010; Oñate, 1985; Onush, 2002; Über, 1996; Ubina, 1985) O’Neil, T. (2010). Oñate, J. (1985). Onush, F. (2002). Über, A. (1996). Ubina, A. J. (1985). ``` ``` % pandoc --citeproc -t plain --- lang: es csl: command/apa.csl references: - id: a1 type: book author: - family: Ubina given: A. John issued: 1985 - id: a2 type: book author: - family: Über given: Aglaia issued: 1996 - id: a3 type: book author: - family: Oñate given: José issued: 1985 - id: a4 type: book author: - family: Onush given: Frank issued: 2002 - id: a5 type: book author: - family: O'Neil given: Timothy issued: 2010 --- [@a1;@a2;@a3;@a4;@a5] ^D (O’Neil, 2010; Onush, 2002; Oñate, 1985; Über, 1996; Ubina, 1985) O’Neil, T. (2010). Onush, F. (2002). Oñate, J. (1985). Über, A. (1996). Ubina, A. J. (1985). ``` ``` % pandoc -C -t plain --- nocite: '@*' lang: fr-FR-u-kb-true references: - id: cote author: cote - id: côte author: côte - id: coté author: coté - id: côté author: côté ... ^D cote. s. d. côte. s. d. coté. s. d. côté. s. d. ``` pandoc-3.1.3/test/command/vancouver.csl0000644000000000000000000002722707346545000016275 0ustar0000000000000000 pandoc-3.1.3/test/command/vars-and-metadata.md0000644000000000000000000000023307346545000017361 0ustar0000000000000000Variables should not leak into metadata in the Markdown writer: ``` % pandoc -t markdown -Vfoo=1 -Vbar=2 -s --- foo: x ... zib ^D --- foo: x --- zib ``` pandoc-3.1.3/test/command/video-audio.md0000644000000000000000000000104307346545000016275 0ustar0000000000000000``` % pandoc -f markdown-implicit_figures -t html ![](./test.mp4) ![Your browser does not support video.](foo/test.webm){width=300} ![](test.mp3) ![](./test.pdf) ![](./test.jpg) ^D

    ``` pandoc-3.1.3/test/command/wikilinks_title_after_pipe.md0000644000000000000000000000336507346545000021504 0ustar0000000000000000# CommonMark ## Reader ``` % pandoc --from commonmark_x+wikilinks_title_after_pipe -t html --columns 90 [[https://example.org]] [[https://example.org|title]] [[name of page]] [[name of page|title]] ^D

    https://example.org

    title

    name of page

    title

    ``` ## Writer ``` % pandoc -t commonmark_x+wikilinks_title_after_pipe -f html

    https://example.org

    title

    Home

    Title

    ^D [[https://example.org]] [[https://example.org|title]] [[Home]] [[Name%20of%20page|Title]] ``` # Markdown ## Reader ``` % pandoc --from markdown+wikilinks_title_after_pipe -t html --columns 90 [[https://example.org]] [[https://example.org|title]] [[name of page]] [[name of page|title]] ^D

    https://example.org

    title

    name of page

    title

    ``` ## Writer ``` % pandoc -t markdown+wikilinks_title_after_pipe -f html

    https://example.org

    title

    Home

    Title

    ^D [[https://example.org]] [[https://example.org|title]] [[Home]] [[Name%20of%20page|Title]] ``` pandoc-3.1.3/test/command/wikilinks_title_before_pipe.md0000644000000000000000000000364207346545000021643 0ustar0000000000000000# CommonMark ## Reader ``` % pandoc -f commonmark+wikilinks_title_before_pipe -t html --columns 90 [[https://example.org]] [[title|https://example.org]] [[Name of page]] [[Title|Name of page]] ^D

    https://example.org

    title

    Name of page

    Title

    ``` ## Writer ``` % pandoc -t commonmark_x+wikilinks_title_before_pipe -f html

    https://example.org

    title

    Home

    Title

    ^D [[https://example.org]] [[title|https://example.org]] [[Home]] [[Title|Name%20of%20page]] ``` ## Regular links should still work ``` % pandoc -f commonmark+wikilinks_title_before_pipe -t html [Title](Name%20of%20page) ^D

    Title

    ``` # Markdown ## Reader ``` % pandoc -f markdown+wikilinks_title_before_pipe -t html --columns 90 [[https://example.org]] [[title|https://example.org]] [[Name of page]] [[Title|Name of page]] ^D

    https://example.org

    title

    Name of page

    Title

    ``` ## Writer ``` % pandoc -t markdown+wikilinks_title_before_pipe -f html

    https://example.org

    title

    Home

    Title

    ^D [[https://example.org]] [[title|https://example.org]] [[Home]] [[Title|Name%20of%20page]] ``` pandoc-3.1.3/test/command/write18.md0000644000000000000000000000041607346545000015376 0ustar0000000000000000Handle \write18{..} as raw tex: ``` % pandoc -t native \write18{git --version} ^D [ RawBlock (Format "tex") "\\write18{git --version}" ] ``` ``` % pandoc -f latex+raw_tex -t native \write18{git --version} ^D [ RawBlock (Format "latex") "\\write18{git --version}" ] ``` pandoc-3.1.3/test/command/yaml-metadata-blocks.md0000644000000000000000000000473507346545000020076 0ustar0000000000000000``` % pandoc -s -t native --- foobar_: this should be ignored foo: bar_: as should this --- ^D Pandoc Meta { unMeta = fromList [ ( "foo" , MetaMap (fromList []) ) ] } [] ``` ``` % pandoc -s -t native --- # For precedence, see multiple-metadata-blocks.md and vars-and-metadata.md # For Bools, see also 4819.md # For Multiline strings, see yaml-with-chomp.md int: 7 float: 1.5 scientific: 3.7e-5 bool: true more: False nothing: null empty: [] nested: int: 8 float: 2.5 bool: true more: False nothing: null empty: [] scientific: 3.7e-5 --- ^D Pandoc Meta { unMeta = fromList [ ( "bool" , MetaBool True ) , ( "empty" , MetaList [] ) , ( "float" , MetaInlines [ Str "1.5" ] ) , ( "int" , MetaInlines [ Str "7" ] ) , ( "more" , MetaBool False ) , ( "nested" , MetaMap (fromList [ ( "bool" , MetaBool True ) , ( "empty" , MetaList [] ) , ( "float" , MetaInlines [ Str "2.5" ] ) , ( "int" , MetaInlines [ Str "8" ] ) , ( "more" , MetaBool False ) , ( "nothing" , MetaString "" ) , ( "scientific" , MetaInlines [ Str "3.7e-5" ] ) ]) ) , ( "nothing" , MetaString "" ) , ( "scientific" , MetaInlines [ Str "3.7e-5" ] ) ] } [] ``` ``` % pandoc -s -t native --- array: - foo: bar - bool: True --- ^D Pandoc Meta { unMeta = fromList [ ( "array" , MetaList [ MetaMap (fromList [ ( "foo" , MetaInlines [ Str "bar" ] ) ]) , MetaMap (fromList [ ( "bool" , MetaBool True ) ]) ] ) ] } [] ``` ``` % pandoc -s -t native --metadata-file command/yaml-metadata.yaml --- title: document --- ^D Pandoc Meta { unMeta = fromList [ ( "other" , MetaInlines [ Emph [ Str "markdown" ] , Space , Str "value" ] ) , ( "title" , MetaInlines [ Str "document" ] ) ] } [] ``` ``` % pandoc -s -t native --metadata-file command/yaml-metadata.yaml -M title=cmdline ^D Pandoc Meta { unMeta = fromList [ ( "other" , MetaInlines [ Emph [ Str "markdown" ] , Space , Str "value" ] ) , ( "title" , MetaString "cmdline" ) ] } [] ``` pandoc-3.1.3/test/command/yaml-metadata.yaml0000644000000000000000000000005407346545000017153 0ustar0000000000000000--- title: file other: _markdown_ value --- pandoc-3.1.3/test/command/yaml-with-chomp.md0000644000000000000000000000035507346545000017114 0ustar0000000000000000``` % pandoc -s -t native --- ml: |- TEST BLOCK ... ^D Pandoc Meta { unMeta = fromList [ ( "ml" , MetaInlines [ Str "TEST" , LineBreak , Str "BLOCK" ] ) ] } [] ``` pandoc-3.1.3/test/command/zeitschrift-fur-kunstgeschichte.csl0000644000000000000000000003254007346545000022600 0ustar0000000000000000 pandoc-3.1.3/test/creole-reader.native0000644000000000000000000005015707346545000016063 0ustar0000000000000000Pandoc Meta { unMeta = fromList [] } [ Header 1 ( "" , [] , [] ) [ Str "Top-level heading (1)" ] , Header 2 ( "" , [] , [] ) [ Str "This a test for creole 0.1 (2)" ] , Header 3 ( "" , [] , [] ) [ Str "This is a Subheading (3)" ] , Header 4 ( "" , [] , [] ) [ Str "Subsub (4)" ] , Header 5 ( "" , [] , [] ) [ Str "Subsubsub (5)" ] , Para [ Str "The" , Space , Str "ending" , Space , Str "equal" , Space , Str "signs" , Space , Str "should" , Space , Str "not" , Space , Str "be" , Space , Str "displayed:" ] , Header 1 ( "" , [] , [] ) [ Str "Top-level heading (1)" ] , Header 2 ( "" , [] , [] ) [ Str "This a test for creole 0.1 (2)" ] , Header 3 ( "" , [] , [] ) [ Str "This is a Subheading (3)" ] , Header 4 ( "" , [] , [] ) [ Str "Subsub (4)" ] , Header 5 ( "" , [] , [] ) [ Str "Subsubsub (5)" ] , Para [ Str "You" , Space , Str "can" , Space , Str "make" , Space , Str "things" , Space , Strong [ Str "bold" ] , Space , Str "or" , Space , Emph [ Str "italic" ] , Space , Str "or" , Space , Strong [ Emph [ Str "both" ] ] , Space , Str "or" , Space , Emph [ Strong [ Str "both" ] ] , Str "." ] , Para [ Str "Character" , Space , Str "formatting" , Space , Str "extends" , Space , Str "across" , Space , Str "line" , Space , Str "breaks:" , Space , Strong [ Str "bold," , Space , Str "this" , Space , Str "is" , Space , Str "still" , Space , Str "bold." , Space , Str "This" , Space , Str "line" , Space , Str "deliberately" , Space , Str "does" , Space , Str "not" , Space , Str "end" , Space , Str "in" , Space , Str "star-star." ] ] , Para [ Str "Not" , Space , Str "bold." , Space , Str "Character" , Space , Str "formatting" , Space , Str "does" , Space , Str "not" , Space , Str "cross" , Space , Str "paragraph" , Space , Str "boundaries." ] , Para [ Str "You" , Space , Str "can" , Space , Str "use" , Space , Link ( "" , [] , [] ) [ Str "internal links" ] ( "internal links" , "" ) , Space , Str "or" , Space , Link ( "" , [] , [] ) [ Str "external links" ] ( "http://www.wikicreole.org" , "" ) , Str "," , Space , Str "give" , Space , Str "the" , Space , Str "link" , Space , Str "a" , Space , Link ( "" , [] , [] ) [ Str "different" ] ( "internal links" , "" ) , Space , Str "name." ] , Para [ Str "Here's" , Space , Str "another" , Space , Str "sentence:" , Space , Str "This" , Space , Str "wisdom" , Space , Str "is" , Space , Str "taken" , Space , Str "from" , Space , Link ( "" , [] , [] ) [ Str "Ward Cunningham's" ] ( "Ward Cunningham's" , "" ) , Space , Link ( "" , [] , [] ) [ Str "Presentation at the Wikisym 06" ] ( "http://www.c2.com/doc/wikisym/WikiSym2006.pdf" , "" ) , Str "." ] , Para [ Str "Here's" , Space , Str "a" , Space , Str "external" , Space , Str "link" , Space , Str "without" , Space , Str "a" , Space , Str "description:" , Space , Link ( "" , [] , [] ) [ Str "http://www.wikicreole.org" ] ( "http://www.wikicreole.org" , "" ) ] , Para [ Str "Be" , Space , Str "careful" , Space , Str "that" , Space , Str "italic" , Space , Str "links" , Space , Str "are" , Space , Str "rendered" , Space , Str "properly:" , Space , Emph [ Link ( "" , [] , [] ) [ Str "My Book Title" ] ( "http://my.book.example/" , "" ) ] ] , Para [ Str "Free" , Space , Str "links" , Space , Str "without" , Space , Str "braces" , Space , Str "should" , Space , Str "be" , Space , Str "rendered" , Space , Str "as" , Space , Str "well," , Space , Str "like" , Space , Link ( "" , [] , [] ) [ Str "http://www.wikicreole.org/" ] ( "http://www.wikicreole.org/" , "" ) , Space , Str "and" , Space , Link ( "" , [] , [] ) [ Str "http://www.wikicreole.org/users/~example" ] ( "http://www.wikicreole.org/users/~example" , "" ) , Str "." ] , Para [ Str "Creole1.0" , Space , Str "specifies" , Space , Str "that" , Space , Link ( "" , [] , [] ) [ Str "http://bar" ] ( "http://bar" , "" ) , Space , Str "and" , Space , Link ( "" , [] , [] ) [ Str "ftp://bar" ] ( "ftp://bar" , "" ) , Space , Str "should" , Space , Str "not" , Space , Str "render" , Space , Str "italic," , Space , Str "something" , Space , Str "like" , Space , Str "foo:" , Emph [ Str "bar" , Space , Str "should" , Space , Str "render" , Space , Str "as" , Space , Str "italic." ] ] , Para [ Str "You" , Space , Str "can" , Space , Str "use" , Space , Str "this" , Space , Str "to" , Space , Str "draw" , Space , Str "a" , Space , Str "line" , Space , Str "to" , Space , Str "separate" , Space , Str "the" , Space , Str "page:" ] , HorizontalRule , Para [ Str "You" , Space , Str "can" , Space , Str "use" , Space , Str "lists," , Space , Str "start" , Space , Str "it" , Space , Str "at" , Space , Str "the" , Space , Str "first" , Space , Str "column" , Space , Str "for" , Space , Str "now," , Space , Str "please..." ] , Para [ Str "unnumbered" , Space , Str "lists" , Space , Str "are" , Space , Str "like" ] , BulletList [ [ Plain [ Str "item" , Space , Str "a" ] ] , [ Plain [ Str "item" , Space , Str "b" ] ] , [ Plain [ Strong [ Str "bold" , Space , Str "item" , Space , Str "c" ] ] ] ] , Para [ Str "blank" , Space , Str "space" , Space , Str "is" , Space , Str "also" , Space , Str "permitted" , Space , Str "before" , Space , Str "lists" , Space , Str "like:" ] , BulletList [ [ Plain [ Str "item" , Space , Str "a" ] ] , [ Plain [ Str "item" , Space , Str "b" ] ] , [ Plain [ Str "item" , Space , Str "c" ] , BulletList [ [ Plain [ Str "item" , Space , Str "c.a" ] ] ] ] ] , Para [ Str "or" , Space , Str "you" , Space , Str "can" , Space , Str "number" , Space , Str "them" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Link ( "" , [] , [] ) [ Str "item 1" ] ( "item 1" , "" ) ] ] , [ Plain [ Str "item" , Space , Str "2" ] ] , [ Plain [ Emph [ Space , Str "italic" , Space , Str "item" , Space , Str "3" , Space ] ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "item" , Space , Str "3.1" ] ] , [ Plain [ Str "item" , Space , Str "3.2" ] ] ] ] ] , Para [ Str "up" , Space , Str "to" , Space , Str "five" , Space , Str "levels" ] , BulletList [ [ Plain [ Str "1" ] , BulletList [ [ Plain [ Str "2" ] , BulletList [ [ Plain [ Str "3" ] , BulletList [ [ Plain [ Str "4" ] , BulletList [ [ Plain [ Str "5" ] ] ] ] ] ] ] ] ] ] ] , BulletList [ [ Plain [ Str "You" , Space , Str "can" , Space , Str "have" , Space , Str "multiline" , Space , Str "list" , Space , Str "items" ] ] , [ Plain [ Str "this" , Space , Str "is" , Space , Str "a" , Space , Str "second" , Space , Str "multiline" , Space , Str "list" , Space , Str "item" ] ] ] , Para [ Str "You" , Space , Str "can" , Space , Str "use" , Space , Str "nowiki" , Space , Str "syntax" , Space , Str "if" , Space , Str "you" , Space , Str "would" , Space , Str "like" , Space , Str "do" , Space , Str "stuff" , Space , Str "like" , Space , Str "this:" ] , CodeBlock ( "" , [] , [] ) "Guitar Chord C:\n\n||---|---|---|\n||-0-|---|---|\n||---|---|---|\n||---|-0-|---|\n||---|---|-0-|\n||---|---|---|" , Para [ Str "You" , Space , Str "can" , Space , Str "also" , Space , Str "use" , Space , Str "it" , Space , Str "inline" , Space , Str "nowiki" , Space , Code ( "" , [] , [] ) " in a sentence " , Space , Str "like" , Space , Str "this." ] , Header 1 ( "" , [] , [] ) [ Str "Escapes" ] , Para [ Str "Normal" , Space , Str "Link:" , Space , Link ( "" , [] , [] ) [ Str "http://wikicreole.org/" ] ( "http://wikicreole.org/" , "" ) , Space , Str "-" , Space , Str "now" , Space , Str "same" , Space , Str "link," , Space , Str "but" , Space , Str "escaped:" , Space , Str "http://wikicreole.org/" ] , Para [ Str "Normal" , Space , Str "asterisks:" , Space , Str "**not" , Space , Str "bold**" ] , Para [ Str "a" , Space , Str "tilde" , Space , Str "alone:" , Space , Str "~" ] , Para [ Str "a" , Space , Str "tilde" , Space , Str "escapes" , Space , Str "itself:" , Space , Str "~xxx" ] , Header 3 ( "" , [] , [] ) [ Str "Creole 0.2" ] , Para [ Str "This" , Space , Str "should" , Space , Str "be" , Space , Str "a" , Space , Str "flower" , Space , Str "with" , Space , Str "the" , Space , Str "ALT" , Space , Str "text" , Space , Str "\"this" , Space , Str "is" , Space , Str "a" , Space , Str "flower\"" , Space , Str "if" , Space , Str "your" , Space , Str "wiki" , Space , Str "supports" , Space , Str "ALT" , Space , Str "text" , Space , Str "on" , Space , Str "images:" ] , Para [ Image ( "" , [] , [] ) [ Str "here is a red flower" ] ( "Red-Flower.jpg" , "" ) ] , Header 3 ( "" , [] , [] ) [ Str "Creole 0.4" ] , Para [ Str "Tables" , Space , Str "are" , Space , Str "done" , Space , Str "like" , Space , Str "this:" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "header" , Space , Str "col1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "header" , Space , Str "col2" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "col1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "col2" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "you" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "can" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "also" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "align" , LineBreak , Str "it." ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "You" , Space , Str "can" , Space , Str "format" , Space , Str "an" , Space , Str "address" , Space , Str "by" , Space , Str "simply" , Space , Str "forcing" , Space , Str "linebreaks:" ] , Para [ Str "My" , Space , Str "contact" , Space , Str "dates:" , LineBreak , Str "Pone:" , Space , Str "xyz" , LineBreak , Str "Fax:" , Space , Str "+45" , LineBreak , Str "Mobile:" , Space , Str "abc" ] , Header 3 ( "" , [] , [] ) [ Str "Creole 0.5" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Header" , Space , Str "title" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Another" , Space , Str "header" , Space , Str "title" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Code ( "" , [] , [] ) " //not italic text// " ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Code ( "" , [] , [] ) " **not bold text** " ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Emph [ Str "italic" , Space , Str "text" ] ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Strong [ Space , Str "bold" , Space , Str "text" , Space ] ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Header 3 ( "" , [] , [] ) [ Str "Creole 1.0" ] , Para [ Str "If" , Space , Str "interwiki" , Space , Str "links" , Space , Str "are" , Space , Str "setup" , Space , Str "in" , Space , Str "your" , Space , Str "wiki," , Space , Str "this" , Space , Str "links" , Space , Str "to" , Space , Str "the" , Space , Str "WikiCreole" , Space , Str "page" , Space , Str "about" , Space , Str "Creole" , Space , Str "1.0" , Space , Str "test" , Space , Str "cases:" , Space , Link ( "" , [] , [] ) [ Str "WikiCreole:Creole1.0TestCases" ] ( "WikiCreole:Creole1.0TestCases" , "" ) , Str "." ] , HorizontalRule , Para [ Str "The" , Space , Str "above" , Space , Str "test" , Space , Str "document" , Space , Str "was" , Space , Str "found" , Space , Str "on" , Space , Link ( "" , [] , [] ) [ Str "http://www.wikicreole.org/wiki/Creole1.0TestCases" ] ( "http://www.wikicreole.org/wiki/Creole1.0TestCases" , "" ) , Space , Str "and" , Space , Str "downloaded" , Space , Str "from" , Space , Link ( "" , [] , [] ) [ Str "http://www.wikicreole.org/attach/Creole1.0TestCases/creole1.0test.txt" ] ( "http://www.wikicreole.org/attach/Creole1.0TestCases/creole1.0test.txt" , "" ) , Str "." ] , Para [ Str "The" , Space , Str "Creole" , Space , Str "Wiki" , Space , Str "is" , Space , Str "licensed:" , Space , Str "Copyright" , Space , Str "(C)" , Space , Str "by" , Space , Str "the" , Space , Str "contributors." , Space , Str "Some" , Space , Str "rights" , Space , Str "reserved," , Space , Str "license" , Space , Link ( "" , [] , [] ) [ Str "https://creativecommons.org/licenses/by-sa/1.0/" ] ( "BY-SA" , "" ) , Str "." ] ] pandoc-3.1.3/test/creole-reader.txt0000644000000000000000000000650207346545000015407 0ustar0000000000000000= Top-level heading (1) == This a test for creole 0.1 (2) === This is a Subheading (3) ==== Subsub (4) ===== Subsubsub (5) The ending equal signs should not be displayed: = Top-level heading (1) = == This a test for creole 0.1 (2) == === This is a Subheading (3) === ==== Subsub (4) ==== ===== Subsubsub (5) ===== You can make things **bold** or //italic// or **//both//** or //**both**//. Character formatting extends across line breaks: **bold, this is still bold. This line deliberately does not end in star-star. Not bold. Character formatting does not cross paragraph boundaries. You can use [[internal links]] or [[http://www.wikicreole.org|external links]], give the link a [[internal links|different]] name. Here's another sentence: This wisdom is taken from [[Ward Cunningham's]] [[http://www.c2.com/doc/wikisym/WikiSym2006.pdf|Presentation at the Wikisym 06]]. Here's a external link without a description: [[http://www.wikicreole.org]] Be careful that italic links are rendered properly: //[[http://my.book.example/|My Book Title]]// Free links without braces should be rendered as well, like http://www.wikicreole.org/ and http://www.wikicreole.org/users/~example. Creole1.0 specifies that http://bar and ftp://bar should not render italic, something like foo://bar should render as italic. You can use this to draw a line to separate the page: ---- You can use lists, start it at the first column for now, please... unnumbered lists are like * item a * item b * **bold item c** blank space is also permitted before lists like: * item a * item b * item c ** item c.a or you can number them # [[item 1]] # item 2 # // italic item 3 // ## item 3.1 ## item 3.2 up to five levels * 1 ** 2 *** 3 **** 4 ***** 5 * You can have multiline list items * this is a second multiline list item You can use nowiki syntax if you would like do stuff like this: {{{ Guitar Chord C: ||---|---|---| ||-0-|---|---| ||---|---|---| ||---|-0-|---| ||---|---|-0-| ||---|---|---| }}} You can also use it inline nowiki {{{ in a sentence }}} like this. = Escapes = Normal Link: http://wikicreole.org/ - now same link, but escaped: ~http://wikicreole.org/ Normal asterisks: ~**not bold~** a tilde alone: ~ a tilde escapes itself: ~~xxx === Creole 0.2 === This should be a flower with the ALT text "this is a flower" if your wiki supports ALT text on images: {{Red-Flower.jpg|here is a red flower}} === Creole 0.4 === Tables are done like this: |=header col1|=header col2| |col1|col2| |you |can | |also |align\\ it. | You can format an address by simply forcing linebreaks: My contact dates:\\ Pone: xyz\\ Fax: +45\\ Mobile: abc === Creole 0.5 === |= Header title |= Another header title | | {{{ //not italic text// }}} | {{{ **not bold text** }}} | | //italic text// | ** bold text ** | === Creole 1.0 === If interwiki links are setup in your wiki, this links to the WikiCreole page about Creole 1.0 test cases: [[WikiCreole:Creole1.0TestCases]]. ---- The above test document was found on http://www.wikicreole.org/wiki/Creole1.0TestCases and downloaded from http://www.wikicreole.org/attach/Creole1.0TestCases/creole1.0test.txt. The Creole Wiki is licensed: Copyright (C) by the contributors. Some rights reserved, license [[BY-SA|https://creativecommons.org/licenses/by-sa/1.0/]]. pandoc-3.1.3/test/docbook-chapter.docbook0000644000000000000000000000210007346545000016531 0ustar0000000000000000 Test Chapter This chapter uses recursive sections.
    Like a Sect1 This section is like a Sect1.
    Like a Sect2 This section is like a Sect2.
    Like a Sect3 This section is like a Sect3.
    Like a Sect4 This section is like a Sect4.
    Like a Sect5 This section is like a Sect5.
    Would be like a Sect6 This section would be like a Sect6, if there was one.
    Would be like a Sect7 This section would be like a Sect7, if there was one.
    pandoc-3.1.3/test/docbook-chapter.native0000644000000000000000000000560107346545000016410 0ustar0000000000000000Pandoc Meta { unMeta = fromList [] } [ Header 1 ( "" , [] , [] ) [ Str "Test" , Space , Str "Chapter" ] , Para [ Str "This" , Space , Str "chapter" , Space , Str "uses" , Space , Str "recursive" , Space , Str "sections." ] , Header 2 ( "" , [] , [] ) [ Str "Like" , Space , Str "a" , Space , Str "Sect1" ] , Para [ Str "This" , Space , Str "section" , Space , Str "is" , Space , Str "like" , Space , Str "a" , Space , Str "Sect1." ] , Header 3 ( "" , [] , [] ) [ Str "Like" , Space , Str "a" , Space , Str "Sect2" ] , Para [ Str "This" , Space , Str "section" , Space , Str "is" , Space , Str "like" , Space , Str "a" , Space , Str "Sect2." ] , Header 4 ( "" , [] , [] ) [ Str "Like" , Space , Str "a" , Space , Str "Sect3" ] , Para [ Str "This" , Space , Str "section" , Space , Str "is" , Space , Str "like" , Space , Str "a" , Space , Str "Sect3." ] , Header 5 ( "" , [] , [] ) [ Str "Like" , Space , Str "a" , Space , Str "Sect4" ] , Para [ Str "This" , Space , Str "section" , Space , Str "is" , Space , Str "like" , Space , Str "a" , Space , Str "Sect4." ] , Header 6 ( "" , [] , [] ) [ Str "Like" , Space , Str "a" , Space , Str "Sect5" ] , Para [ Str "This" , Space , Str "section" , Space , Str "is" , Space , Str "like" , Space , Str "a" , Space , Str "Sect5." ] , Header 7 ( "" , [] , [] ) [ Str "Would" , Space , Str "be" , Space , Str "like" , Space , Str "a" , Space , Str "Sect6" ] , Para [ Str "This" , Space , Str "section" , Space , Str "would" , Space , Str "be" , Space , Str "like" , Space , Str "a" , Space , Str "Sect6," , Space , Str "if" , Space , Str "there" , Space , Str "was" , Space , Str "one." ] , Header 8 ( "" , [] , [] ) [ Str "Would" , Space , Str "be" , Space , Str "like" , Space , Str "a" , Space , Str "Sect7" ] , Para [ Str "This" , Space , Str "section" , Space , Str "would" , Space , Str "be" , Space , Str "like" , Space , Str "a" , Space , Str "Sect7," , Space , Str "if" , Space , Str "there" , Space , Str "was" , Space , Str "one." ] ] pandoc-3.1.3/test/docbook-reader.docbook0000644000000000000000000010503107346545000016354 0ustar0000000000000000 ]>
    Pandoc Test Suite John MacFarlane Anonymous July 17, 2006 This is a set of tests for pandoc. Most of them are adapted from John Gruber’s markdown test suite. Headers Level 2 with an <ulink url="/url">embedded link</ulink> Level 3 with <emphasis>emphasis</emphasis> Level 4 Level 5 Hi. Level 1 Level 2 with <emphasis>emphasis</emphasis> Level 3 with no blank line Level 4 An unnumbered section. Level 2 with no blank line Paragraphs Here’s a regular paragraph. In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item. Here’s one with a bullet. * criminey. Block Quotes E-mail style:
    This is a block quote. It is pretty short.
    Code in a block quote: sub status { print "working"; } sub status { print "working with line numbers"; } % ls A list: item one item two Nested block quotes:
    nested
    nested
    This should not be a block quote: 2 > 1. And a following paragraph.
    Code Blocks Code: ---- (should be four hyphens) sub status { print "working"; } this code block is indented by one tab And: this code block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{ Lists Unordered Asterisks loose: asterisk 1 asterisk 2 asterisk 3 Asterisks tight: Plus 1 Plus 2 Plus 3 Ordered First Second Third and tight: One Two Three Multiple paragraphs: Item 1, graf one. Item 1. graf two. The quick brown fox jumped over the lazy dog’s back. Item 2. Item 3. Nested Tab Tab Tab Here’s another: First Second: Fee Fie Foe Third Same thing but with paragraphs: First Second: Fee Fie Foe Third Tabs and spaces this is a list item indented with tabs this is a list item indented with spaces this is an example list item indented with tabs this is an example list item indented with spaces Fancy list markers begins with 2 and now 3 with a continuation sublist with roman numerals, starting with 4 more items a subsublist a subsublist Nesting: Upper Alpha Upper Roman. Decimal start with 6 Lower alpha with paren Autonumbering: Autonumber. More. Nested. Should not be a list item: M.A. 2007 B. Williams Callout Simple. A __letrec is equivalent to a normal Haskell &let;. &GHC; compiled the body of our list comprehension into a loop named go_s1YC. If our &case; expression matches the empty list, we return the empty list. This is reassuringly familiar. Definition Lists apple red fruit orange orange fruit banana yellow fruit Multiple blocks with italics: apple red fruit contains seeds, crisp, pleasant to taste orange orange fruit { orange code block }
    orange block quote
    Multiple definitions, loose: apple red fruit computer orange orange fruit bank Blank line after term, indented marker, alternate markers: apple red fruit computer orange orange fruit sublist sublist
    Inline Markup This is emphasized, and so is this. This is strong, and so is this. An emphasized link. This is strong and em. So is this word. This is strong and em. So is this word. This is code: >, $, \, \$, <html>. More code: Class and Type Referencing a man page: nix.conf5 This is strikeout. Superscripts: abcd ahello ahello there. Subscripts: H2O, H23O, Hmany of themO. These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d. Smart quotes, ellipses, dashes Hello, said the spider. Shelob is my name. A, B, and C are letters. He said, I want to go. Were you alive in the 70’s? Some dashes: one—two — three—four — five. Dashes between numbers: 5–7, 255–66, 1987–1999. Ellipses…and…and…. e = m c 2 1 e = m c 2 e = m c 2 Special Characters Here is some unicode: I hat: Î o umlaut: ö section: § set membership: ∈ copyright: © AT&T has an ampersand in their name. AT&T is another way to write it. This & that. 4 < 5. 6 > 5. Backslash: \ Backtick: ` Asterisk: * Underscore: _ Left brace: { Right brace: } Left bracket: [ Right bracket: ] Left paren: ( Right paren: ) Greater-than: > Hash: # Period: . Bang: ! Plus: + Minus: - Links Explicit Just a URL. URL and title. URL and title. URL and title. URL and title URL and title with_underscore nobody@nowhere.net Empty. Reference Foo bar. Foo bar. Foo bar. With embedded [brackets]. b by itself should be a link. Indented once. Indented twice. Indented thrice. This should [not][] be a link. [not]: /url Foo bar. Foo biz. With ampersands Here’s a link with an ampersand in the URL. Here’s a link with an amersand in the link text: AT&T. Here’s an inline link. Here’s an inline link in pointy braces. Autolinks With an ampersand: http://example.com/?foo=1&bar=2 In a list? http://example.com/ It should. An e-mail address: nobody@nowhere.net
    Blockquoted: http://example.com/
    Auto-links should not occur here: <http://example.com/> or here: <http://example.com/>
    Images From Voyage dans la Lune by Georges Melies (1902):
    lalune fig caption lalune alt text shadowed by fig caption
    Here is a movie icon. And here a second movie alt text icon. And here a third movie alt text icon. lalune no figure alt text
    Footnotes Here is a footnote reference, Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document. and another. Here’s the long note. This one contains multiple blocks. Subsequent blocks are indented to show that they belong to the footnote (as with list items). { <code> } If you want, you can indent every line, but you can also be lazy and just indent the first line of each block. This should not be a footnote reference, because it contains a space.[^my note] Here is an inline note. This is easier to type. Inline notes may contain links and ] verbatim characters, as well as [bracketed text].
    Notes can go in quotes. In quote.
    And in list items. In list. This paragraph should not be part of the note, as it is not indented.
    Tables Simple table with caption: Demonstration of simple table syntax. Right Left Center Default 12 12 12 12 123 123 123 123 1 1 1 1
    Simple table without caption: Right Left Center Default 12 12 12 12 123 123 123 123 1 1 1 1 Simple table indented two spaces: Demonstration of simple table syntax. Right Left Center Default 12 12 12 12 123 123 123 123 1 1 1 1
    Multiline table with caption: Here's the caption. It may span multiple lines. Centered Header Left Aligned Right Aligned Default aligned First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here's another one. Note the blank line between rows.
    Multiline table without caption: Centered Header Left Aligned Right Aligned Default aligned First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here's another one. Note the blank line between rows. Table without column headers: 12 12 12 12 123 123 123 123 1 1 1 1 Multiline table without column headers: First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here's another one. Note the blank line between rows. An Example Procedure A Step Another Step Substeps can be nested indefinitely deep. A Final Step
    Index terms In the simplest case, index termsindex term consists of just a <primary> element, but index termmulti-level they can also consist of a <primary> and <secondary> element, and index termmulti-level3-level can even include a <tertiary> term. Index terms can also refer to other index terms: index cross referencingindex termcross referencesindex cross referencingexclusively, using the <see> tag; or index cross referencingcross referencing as a reference to related terms, using the <seealso> tag. foodbig baguette supremeNested content in index term elements is flattened. Abbreviated title Abbr. title
    pandoc-3.1.3/test/docbook-reader.native0000644000000000000000000022333107346545000016226 0ustar0000000000000000Pandoc Meta { unMeta = fromList [ ( "author" , MetaList [ MetaInlines [ Str "John" , Space , Str "MacFarlane" ] , MetaInlines [ Str "Anonymous" ] ] ) , ( "date" , MetaInlines [ Str "July" , Space , Str "17," , Space , Str "2006" ] ) , ( "title" , MetaInlines [ Str "Pandoc" , Space , Str "Test" , Space , Str "Suite" ] ) ] } [ Para [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "set" , Space , Str "of" , Space , Str "tests" , Space , Str "for" , Space , Str "pandoc." , Space , Str "Most" , Space , Str "of" , Space , Str "them" , Space , Str "are" , Space , Str "adapted" , Space , Str "from" , Space , Str "John" , SoftBreak , Str "Gruber\8217s" , Space , Str "markdown" , Space , Str "test" , Space , Str "suite." ] , Header 1 ( "headers" , [] , [] ) [ Str "Headers" ] , Header 2 ( "level-2-with-an-embedded-link" , [] , [] ) [ Str "Level" , Space , Str "2" , Space , Str "with" , Space , Str "an" , Space , Link ( "" , [] , [] ) [ Str "embedded" , Space , Str "link" ] ( "/url" , "" ) ] , Header 3 ( "level-3-with-emphasis" , [] , [] ) [ Str "Level" , Space , Str "3" , Space , Str "with" , Space , Emph [ Str "emphasis" ] ] , Header 4 ( "level-4" , [] , [] ) [ Str "Level" , Space , Str "4" ] , Header 5 ( "level-5" , [] , [] ) [ Str "Level" , Space , Str "5" ] , Para [ Str "Hi." ] , Header 1 ( "level-1" , [] , [] ) [ Str "Level" , Space , Str "1" ] , Header 2 ( "level-2-with-emphasis" , [] , [] ) [ Str "Level" , Space , Str "2" , Space , Str "with" , Space , Emph [ Str "emphasis" ] ] , Header 3 ( "level-3" , [] , [] ) [ Str "Level" , Space , Str "3" ] , Para [ Str "with" , Space , Str "no" , Space , Str "blank" , Space , Str "line" ] , Header 4 ( "" , [ "unnumbered" ] , [] ) [ Str "Level" , Space , Str "4" ] , Para [ Str "An" , Space , Str "unnumbered" , Space , Str "section." ] , Header 2 ( "level-2" , [] , [] ) [ Str "Level" , Space , Str "2" ] , Para [ Str "with" , Space , Str "no" , Space , Str "blank" , Space , Str "line" ] , Header 1 ( "paragraphs" , [] , [] ) [ Str "Paragraphs" ] , Para [ Str "Here\8217s" , Space , Str "a" , Space , Str "regular" , Space , Str "paragraph." ] , Para [ Str "In" , Space , Str "Markdown" , Space , Str "1.0.0" , Space , Str "and" , Space , Str "earlier." , Space , Str "Version" , Space , Str "8." , Space , Str "This" , Space , Str "line" , Space , Str "turns" , Space , Str "into" , Space , Str "a" , Space , Str "list" , SoftBreak , Str "item." , Space , Str "Because" , Space , Str "a" , Space , Str "hard-wrapped" , Space , Str "line" , Space , Str "in" , Space , Str "the" , Space , Str "middle" , Space , Str "of" , Space , Str "a" , Space , Str "paragraph" , Space , Str "looked" , Space , Str "like" , SoftBreak , Str "a" , Space , Str "list" , Space , Str "item." ] , Para [ Str "Here\8217s" , Space , Str "one" , Space , Str "with" , Space , Str "a" , Space , Str "bullet." , Space , Str "*" , Space , Str "criminey." ] , Header 1 ( "block-quotes" , [] , [] ) [ Str "Block" , Space , Str "Quotes" ] , Para [ Str "E-mail" , Space , Str "style:" ] , BlockQuote [ Para [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "block" , Space , Str "quote." , Space , Str "It" , Space , Str "is" , Space , Str "pretty" , Space , Str "short." ] ] , BlockQuote [ Para [ Str "Code" , Space , Str "in" , Space , Str "a" , Space , Str "block" , Space , Str "quote:" ] , CodeBlock ( "" , [] , [] ) "sub status {\n print \"working\";\n}" , CodeBlock ( "" , [ "numberLines" ] , [] ) "sub status {\n print \"working with line numbers\";\n}" , CodeBlock ( "" , [] , [] ) "% ls" , Para [ Str "A" , Space , Str "list:" ] , OrderedList ( 1 , Decimal , DefaultDelim ) [ [ Para [ Str "item" , Space , Str "one" ] ] , [ Para [ Str "item" , Space , Str "two" ] ] ] , Para [ Str "Nested" , Space , Str "block" , Space , Str "quotes:" ] , BlockQuote [ Para [ Str "nested" ] ] , BlockQuote [ Para [ Str "nested" ] ] ] , Para [ Str "This" , Space , Str "should" , Space , Str "not" , Space , Str "be" , Space , Str "a" , Space , Str "block" , Space , Str "quote:" , Space , Str "2" , Space , Str ">" , Space , Str "1." ] , Para [ Str "And" , Space , Str "a" , Space , Str "following" , Space , Str "paragraph." ] , Header 1 ( "code-blocks" , [] , [] ) [ Str "Code" , Space , Str "Blocks" ] , Para [ Str "Code:" ] , CodeBlock ( "" , [] , [] ) "---- (should be four hyphens)\n\nsub status {\n print \"working\";\n}\n\nthis code block is indented by one tab" , Para [ Str "And:" ] , CodeBlock ( "" , [] , [] ) " this code block is indented by two tabs\n\nThese should not be escaped: \\$ \\\\ \\> \\[ \\{" , Header 1 ( "lists" , [] , [] ) [ Str "Lists" ] , Header 2 ( "unordered" , [] , [] ) [ Str "Unordered" ] , Para [ Str "Asterisks" , Space , Str "loose:" ] , BulletList [ [ Para [ Str "asterisk" , Space , Str "1" ] ] , [ Para [ Str "asterisk" , Space , Str "2" ] ] , [ Para [ Str "asterisk" , Space , Str "3" ] ] ] , Para [ Str "Asterisks" , Space , Str "tight:" ] , BulletList [ [ Plain [ Str "Plus" , Space , Str "1" ] ] , [ Plain [ Str "Plus" , Space , Str "2" ] ] , [ Plain [ Str "Plus" , Space , Str "3" ] ] ] , Header 2 ( "ordered" , [] , [] ) [ Str "Ordered" ] , OrderedList ( 1 , Decimal , DefaultDelim ) [ [ Para [ Str "First" ] ] , [ Para [ Str "Second" ] ] , [ Para [ Str "Third" ] ] ] , Para [ Str "and" , Space , Str "tight:" ] , OrderedList ( 1 , Decimal , DefaultDelim ) [ [ Plain [ Str "One" ] ] , [ Plain [ Str "Two" ] ] , [ Plain [ Str "Three" ] ] ] , Para [ Str "Multiple" , Space , Str "paragraphs:" ] , OrderedList ( 1 , Decimal , DefaultDelim ) [ [ Para [ Str "Item" , Space , Str "1," , Space , Str "graf" , Space , Str "one." ] , Para [ Str "Item" , Space , Str "1." , Space , Str "graf" , Space , Str "two." , Space , Str "The" , Space , Str "quick" , Space , Str "brown" , Space , Str "fox" , Space , Str "jumped" , Space , Str "over" , Space , Str "the" , Space , Str "lazy" , Space , Str "dog\8217s" , SoftBreak , Str "back." ] ] , [ Para [ Str "Item" , Space , Str "2." ] ] , [ Para [ Str "Item" , Space , Str "3." ] ] ] , Header 2 ( "nested" , [] , [] ) [ Str "Nested" ] , BulletList [ [ Para [ Str "Tab" ] , BulletList [ [ Para [ Str "Tab" ] , BulletList [ [ Para [ Str "Tab" ] ] ] ] ] ] ] , Para [ Str "Here\8217s" , Space , Str "another:" ] , OrderedList ( 1 , Decimal , DefaultDelim ) [ [ Para [ Str "First" ] ] , [ Para [ Str "Second:" ] , BulletList [ [ Para [ Str "Fee" ] ] , [ Para [ Str "Fie" ] ] , [ Para [ Str "Foe" ] ] ] ] , [ Para [ Str "Third" ] ] ] , Para [ Str "Same" , Space , Str "thing" , Space , Str "but" , Space , Str "with" , Space , Str "paragraphs:" ] , OrderedList ( 1 , Decimal , DefaultDelim ) [ [ Para [ Str "First" ] ] , [ Para [ Str "Second:" ] , BulletList [ [ Para [ Str "Fee" ] ] , [ Para [ Str "Fie" ] ] , [ Para [ Str "Foe" ] ] ] ] , [ Para [ Str "Third" ] ] ] , Header 2 ( "tabs-and-spaces" , [] , [] ) [ Str "Tabs" , Space , Str "and" , Space , Str "spaces" ] , BulletList [ [ Para [ Str "this" , Space , Str "is" , Space , Str "a" , Space , Str "list" , Space , Str "item" , Space , Str "indented" , Space , Str "with" , Space , Str "tabs" ] ] , [ Para [ Str "this" , Space , Str "is" , Space , Str "a" , Space , Str "list" , Space , Str "item" , Space , Str "indented" , Space , Str "with" , Space , Str "spaces" ] , BulletList [ [ Para [ Str "this" , Space , Str "is" , Space , Str "an" , Space , Str "example" , Space , Str "list" , Space , Str "item" , Space , Str "indented" , Space , Str "with" , Space , Str "tabs" ] ] , [ Para [ Str "this" , Space , Str "is" , Space , Str "an" , Space , Str "example" , Space , Str "list" , Space , Str "item" , Space , Str "indented" , Space , Str "with" , Space , Str "spaces" ] ] ] ] ] , Header 2 ( "fancy-list-markers" , [] , [] ) [ Str "Fancy" , Space , Str "list" , Space , Str "markers" ] , OrderedList ( 2 , Decimal , DefaultDelim ) [ [ Para [ Str "begins" , Space , Str "with" , Space , Str "2" ] ] , [ Para [ Str "and" , Space , Str "now" , Space , Str "3" ] , Para [ Str "with" , Space , Str "a" , Space , Str "continuation" ] , OrderedList ( 4 , LowerRoman , DefaultDelim ) [ [ Para [ Str "sublist" , Space , Str "with" , Space , Str "roman" , Space , Str "numerals," , Space , Str "starting" , Space , Str "with" , Space , Str "4" ] ] , [ Para [ Str "more" , Space , Str "items" ] , OrderedList ( 1 , UpperAlpha , DefaultDelim ) [ [ Para [ Str "a" , Space , Str "subsublist" ] ] , [ Para [ Str "a" , Space , Str "subsublist" ] ] ] ] ] ] ] , Para [ Str "Nesting:" ] , OrderedList ( 1 , UpperAlpha , DefaultDelim ) [ [ Para [ Str "Upper" , Space , Str "Alpha" ] , OrderedList ( 1 , UpperRoman , DefaultDelim ) [ [ Para [ Str "Upper" , Space , Str "Roman." ] , OrderedList ( 6 , Decimal , DefaultDelim ) [ [ Para [ Str "Decimal" , Space , Str "start" , Space , Str "with" , Space , Str "6" ] , OrderedList ( 3 , LowerAlpha , DefaultDelim ) [ [ Para [ Str "Lower" , Space , Str "alpha" , Space , Str "with" , Space , Str "paren" ] ] ] ] ] ] ] ] ] , Para [ Str "Autonumbering:" ] , OrderedList ( 1 , Decimal , DefaultDelim ) [ [ Para [ Str "Autonumber." ] ] , [ Para [ Str "More." ] , OrderedList ( 1 , Decimal , DefaultDelim ) [ [ Para [ Str "Nested." ] ] ] ] ] , Para [ Str "Should" , Space , Str "not" , Space , Str "be" , Space , Str "a" , Space , Str "list" , Space , Str "item:" ] , Para [ Str "M.A.\160\&2007" ] , Para [ Str "B." , Space , Str "Williams" ] , Header 2 ( "callout" , [] , [] ) [ Str "Callout" ] , Para [ Str "Simple." ] , BulletList [ [ Para [ Str "A" , Space , Code ( "" , [] , [] ) "__letrec" , Space , Str "is" , Space , Str "equivalent" , Space , Str "to" , Space , Str "a" , Space , Str "normal" , SoftBreak , Str "Haskell" , Space , Str "LET." ] ] , [ Para [ Str "GHC" , Space , Str "compiled" , Space , Str "the" , Space , Str "body" , Space , Str "of" , Space , Str "our" , Space , Str "list" , Space , Str "comprehension" , Space , Str "into" , SoftBreak , Str "a" , Space , Str "loop" , Space , Str "named" , Space , Code ( "" , [] , [] ) "go_s1YC" , Str "." ] ] , [ Para [ Str "If" , Space , Str "our" , Space , Str "CASE" , Space , Str "expression" , Space , Str "matches" , Space , Str "the" , Space , Str "empty" , Space , Str "list," , Space , Str "we" , SoftBreak , Str "return" , Space , Str "the" , Space , Str "empty" , Space , Str "list." , Space , Str "This" , Space , Str "is" , Space , Str "reassuringly" , SoftBreak , Str "familiar." ] ] ] , Header 1 ( "definition-lists" , [] , [] ) [ Str "Definition" , Space , Str "Lists" ] , DefinitionList [ ( [ Str "apple" ] , [ [ Para [ Str "red" , Space , Str "fruit" ] ] ] ) , ( [ Str "orange" ] , [ [ Para [ Str "orange" , Space , Str "fruit" ] ] ] ) , ( [ Str "banana" ] , [ [ Para [ Str "yellow" , Space , Str "fruit" ] ] ] ) ] , Para [ Str "Multiple" , Space , Str "blocks" , Space , Str "with" , Space , Str "italics:" ] , DefinitionList [ ( [ Emph [ Str "apple" ] ] , [ [ Para [ Str "red" , Space , Str "fruit" ] , Para [ Str "contains" , Space , Str "seeds," , Space , Str "crisp," , Space , Str "pleasant" , Space , Str "to" , Space , Str "taste" ] ] ] ) , ( [ Emph [ Str "orange" ] ] , [ [ Para [ Str "orange" , Space , Str "fruit" ] , CodeBlock ( "" , [] , [] ) "{ orange code block }" , BlockQuote [ Para [ Str "orange" , Space , Str "block" , Space , Str "quote" ] ] ] ] ) ] , Para [ Str "Multiple" , Space , Str "definitions," , Space , Str "loose:" ] , DefinitionList [ ( [ Str "apple" ] , [ [ Para [ Str "red" , Space , Str "fruit" ] ] , [ Para [ Str "computer" ] ] ] ) , ( [ Str "orange" ] , [ [ Para [ Str "orange" , Space , Str "fruit" ] ] , [ Para [ Str "bank" ] ] ] ) ] , Para [ Str "Blank" , Space , Str "line" , Space , Str "after" , Space , Str "term," , Space , Str "indented" , Space , Str "marker," , Space , Str "alternate" , Space , Str "markers:" ] , DefinitionList [ ( [ Str "apple" ] , [ [ Para [ Str "red" , Space , Str "fruit" ] ] , [ Para [ Str "computer" ] ] ] ) , ( [ Str "orange" ] , [ [ Para [ Str "orange" , Space , Str "fruit" ] , OrderedList ( 1 , Decimal , DefaultDelim ) [ [ Para [ Str "sublist" ] ] , [ Para [ Str "sublist" ] ] ] ] ] ) ] , Header 1 ( "inline-markup" , [] , [] ) [ Str "Inline" , Space , Str "Markup" ] , Para [ Str "This" , Space , Str "is" , Space , Emph [ Str "emphasized" ] , Str "," , Space , Str "and" , Space , Str "so" , Space , Emph [ Str "is" , SoftBreak , Str "this" ] , Str "." ] , Para [ Str "This" , Space , Str "is" , Space , Strong [ Str "strong" ] , Str "," , Space , Str "and" , Space , Str "so" , SoftBreak , Strong [ Str "is" , Space , Str "this" ] , Str "." ] , Para [ Str "An" , Space , Emph [ Link ( "" , [] , [] ) [ Str "emphasized" , Space , Str "link" ] ( "/url" , "" ) ] , Str "." ] , Para [ Strong [ Emph [ Str "This" , Space , Str "is" , Space , Str "strong" , Space , Str "and" , SoftBreak , Str "em." ] ] ] , Para [ Str "So" , Space , Str "is" , Space , Strong [ Emph [ Str "this" ] ] , Space , Str "word." ] , Para [ Strong [ Emph [ Str "This" , Space , Str "is" , Space , Str "strong" , Space , Str "and" , SoftBreak , Str "em." ] ] ] , Para [ Str "So" , Space , Str "is" , Space , Strong [ Emph [ Str "this" ] ] , Space , Str "word." ] , Para [ Str "This" , Space , Str "is" , Space , Str "code:" , Space , Code ( "" , [] , [] ) ">" , Str "," , Space , Code ( "" , [] , [] ) "$" , Str "," , SoftBreak , Code ( "" , [] , [] ) "\\" , Str "," , Space , Code ( "" , [] , [] ) "\\$" , Str "," , SoftBreak , Code ( "" , [] , [] ) "" , Str "." ] , Para [ Str "More" , Space , Str "code:" , Space , Code ( "" , [] , [] ) "Class" , Space , Str "and" , Space , Code ( "" , [] , [] ) "Type" ] , Para [ Str "Referencing" , Space , Str "a" , Space , Str "man" , Space , Str "page:" , Space , Code ( "" , [ "citerefentry" ] , [] ) "nix.conf(5)" ] , Para [ Strikeout [ Str "This" , Space , Str "is" , SoftBreak , Emph [ Str "strikeout" ] , Str "." ] ] , Para [ Str "Superscripts:" , Space , Str "a" , Superscript [ Str "bc" ] , Str "d" , SoftBreak , Str "a" , Superscript [ Emph [ Str "hello" ] ] , SoftBreak , Str "a" , Superscript [ Str "hello\160there" ] , Str "." ] , Para [ Str "Subscripts:" , Space , Str "H" , Subscript [ Str "2" ] , Str "O," , Space , Str "H" , Subscript [ Str "23" ] , Str "O," , SoftBreak , Str "H" , Subscript [ Str "many\160of\160them" ] , Str "O." ] , Para [ Str "These" , Space , Str "should" , Space , Str "not" , Space , Str "be" , Space , Str "superscripts" , Space , Str "or" , Space , Str "subscripts," , Space , Str "because" , Space , Str "of" , Space , Str "the" , Space , Str "unescaped" , SoftBreak , Str "spaces:" , Space , Str "a^b" , Space , Str "c^d," , Space , Str "a~b" , Space , Str "c~d." ] , Header 1 ( "smart-quotes-ellipses-dashes" , [] , [] ) [ Str "Smart" , Space , Str "quotes," , Space , Str "ellipses," , Space , Str "dashes" ] , Para [ Quoted DoubleQuote [ Str "Hello," ] , Space , Str "said" , Space , Str "the" , Space , Str "spider." , Space , Quoted DoubleQuote [ Quoted SingleQuote [ Str "Shelob" ] , Space , Str "is" , Space , Str "my" , SoftBreak , Str "name." ] ] , Para [ Quoted DoubleQuote [ Str "A" ] , Str "," , Space , Quoted DoubleQuote [ Str "B" ] , Str "," , Space , Str "and" , Space , Quoted DoubleQuote [ Str "C" ] , Space , Str "are" , Space , Str "letters." ] , Para [ Quoted DoubleQuote [ Str "He" , Space , Str "said," , Space , Quoted SingleQuote [ Str "I" , Space , Str "want" , Space , Str "to" , Space , Str "go." ] ] , Space , Str "Were" , Space , Str "you" , Space , Str "alive" , Space , Str "in" , Space , Str "the" , SoftBreak , Str "70\8217s?" ] , Para [ Str "Some" , Space , Str "dashes:" , Space , Str "one\8212two" , Space , Str "\8212" , Space , Str "three\8212four" , Space , Str "\8212" , Space , Str "five." ] , Para [ Str "Dashes" , Space , Str "between" , Space , Str "numbers:" , Space , Str "5\8211\&7," , Space , Str "255\8211\&66," , Space , Str "1987\8211\&1999." ] , Para [ Str "Ellipses\8230and\8230and\8230." ] , Header 1 ( "math" , [] , [] ) [] , Para [ Math DisplayMath "e = mc^{2}" , Math DisplayMath "1" , SoftBreak , Math InlineMath "e = mc^{2}" , SoftBreak , Math DisplayMath "e = mc^{2}" ] , Header 1 ( "special-characters" , [] , [] ) [ Str "Special" , Space , Str "Characters" ] , Para [ Str "Here" , Space , Str "is" , Space , Str "some" , Space , Str "unicode:" ] , BulletList [ [ Para [ Str "I" , Space , Str "hat:" , Space , Str "\206" ] ] , [ Para [ Str "o" , Space , Str "umlaut:" , Space , Str "\246" ] ] , [ Para [ Str "section:" , Space , Str "\167" ] ] , [ Para [ Str "set" , Space , Str "membership:" , Space , Str "\8712" ] ] , [ Para [ Str "copyright:" , Space , Str "\169" ] ] ] , Para [ Str "AT&T" , Space , Str "has" , Space , Str "an" , Space , Str "ampersand" , Space , Str "in" , Space , Str "their" , Space , Str "name." ] , Para [ Str "AT&T" , Space , Str "is" , Space , Str "another" , Space , Str "way" , Space , Str "to" , Space , Str "write" , Space , Str "it." ] , Para [ Str "This" , Space , Str "&" , Space , Str "that." ] , Para [ Str "4" , Space , Str "<" , Space , Str "5." ] , Para [ Str "6" , Space , Str ">" , Space , Str "5." ] , Para [ Str "Backslash:" , Space , Str "\\" ] , Para [ Str "Backtick:" , Space , Str "`" ] , Para [ Str "Asterisk:" , Space , Str "*" ] , Para [ Str "Underscore:" , Space , Str "_" ] , Para [ Str "Left" , Space , Str "brace:" , Space , Str "{" ] , Para [ Str "Right" , Space , Str "brace:" , Space , Str "}" ] , Para [ Str "Left" , Space , Str "bracket:" , Space , Str "[" ] , Para [ Str "Right" , Space , Str "bracket:" , Space , Str "]" ] , Para [ Str "Left" , Space , Str "paren:" , Space , Str "(" ] , Para [ Str "Right" , Space , Str "paren:" , Space , Str ")" ] , Para [ Str "Greater-than:" , Space , Str ">" ] , Para [ Str "Hash:" , Space , Str "#" ] , Para [ Str "Period:" , Space , Str "." ] , Para [ Str "Bang:" , Space , Str "!" ] , Para [ Str "Plus:" , Space , Str "+" ] , Para [ Str "Minus:" , Space , Str "-" ] , Header 1 ( "links" , [] , [] ) [ Str "Links" ] , Header 2 ( "explicit" , [] , [] ) [ Str "Explicit" ] , Para [ Str "Just" , Space , Str "a" , Space , Link ( "" , [] , [] ) [ Str "URL" ] ( "/url/" , "" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , Space , Str "and" , Space , Str "title" ] ( "/url/" , "" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , Space , Str "and" , Space , Str "title" ] ( "/url/" , "" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , Space , Str "and" , Space , Str "title" ] ( "/url/" , "" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , Space , Str "and" , Space , Str "title" ] ( "/url/" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , Space , Str "and" , Space , Str "title" ] ( "/url/" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "with_underscore" ] ( "/url/with_underscore" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "nobody@nowhere.net" ] ( "mailto:nobody@nowhere.net" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "Empty" ] ( "" , "" ) , Str "." ] , Header 2 ( "reference" , [] , [] ) [ Str "Reference" ] , Para [ Str "Foo" , Space , Link ( "" , [] , [] ) [ Str "bar" ] ( "/url/" , "" ) , Str "." ] , Para [ Str "Foo" , Space , Link ( "" , [] , [] ) [ Str "bar" ] ( "/url/" , "" ) , Str "." ] , Para [ Str "Foo" , Space , Link ( "" , [] , [] ) [ Str "bar" ] ( "/url/" , "" ) , Str "." ] , Para [ Str "With" , Space , Link ( "" , [] , [] ) [ Str "embedded" , Space , Str "[brackets]" ] ( "/url/" , "" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "b" ] ( "/url/" , "" ) , Space , Str "by" , Space , Str "itself" , Space , Str "should" , Space , Str "be" , Space , Str "a" , Space , Str "link." ] , Para [ Str "Indented" , Space , Link ( "" , [] , [] ) [ Str "once" ] ( "/url" , "" ) , Str "." ] , Para [ Str "Indented" , Space , Link ( "" , [] , [] ) [ Str "twice" ] ( "/url" , "" ) , Str "." ] , Para [ Str "Indented" , Space , Link ( "" , [] , [] ) [ Str "thrice" ] ( "/url" , "" ) , Str "." ] , Para [ Str "This" , Space , Str "should" , Space , Str "[not][]" , Space , Str "be" , Space , Str "a" , Space , Str "link." ] , CodeBlock ( "" , [] , [] ) "[not]: /url" , Para [ Str "Foo" , Space , Link ( "" , [] , [] ) [ Str "bar" ] ( "/url/" , "" ) , Str "." ] , Para [ Str "Foo" , Space , Link ( "" , [] , [] ) [ Str "biz" ] ( "/url/" , "" ) , Str "." ] , Header 2 ( "with-ampersands" , [] , [] ) [ Str "With" , Space , Str "ampersands" ] , Para [ Str "Here\8217s" , Space , Str "a" , Space , Link ( "" , [] , [] ) [ Str "link" , Space , Str "with" , Space , Str "an" , SoftBreak , Str "ampersand" , Space , Str "in" , Space , Str "the" , Space , Str "URL" ] ( "http://example.com/?foo=1&bar=2" , "" ) , Str "." ] , Para [ Str "Here\8217s" , Space , Str "a" , Space , Str "link" , Space , Str "with" , Space , Str "an" , Space , Str "amersand" , Space , Str "in" , Space , Str "the" , Space , Str "link" , Space , Str "text:" , SoftBreak , Link ( "" , [] , [] ) [ Str "AT&T" ] ( "http://att.com/" , "" ) , Str "." ] , Para [ Str "Here\8217s" , Space , Str "an" , Space , Link ( "" , [] , [] ) [ Str "inline" , Space , Str "link" ] ( "/script?foo=1&bar=2" , "" ) , Str "." ] , Para [ Str "Here\8217s" , Space , Str "an" , Space , Link ( "" , [] , [] ) [ Str "inline" , Space , Str "link" , Space , Str "in" , Space , Str "pointy" , SoftBreak , Str "braces" ] ( "/script?foo=1&bar=2" , "" ) , Str "." ] , Header 2 ( "autolinks" , [] , [] ) [ Str "Autolinks" ] , Para [ Str "With" , Space , Str "an" , Space , Str "ampersand:" , SoftBreak , Link ( "" , [] , [] ) [ Str "http://example.com/?foo=1&bar=2" ] ( "http://example.com/?foo=1&bar=2" , "" ) ] , BulletList [ [ Para [ Str "In" , Space , Str "a" , Space , Str "list?" ] ] , [ Para [ Link ( "" , [] , [] ) [ Str "http://example.com/" ] ( "http://example.com/" , "" ) ] ] , [ Para [ Str "It" , Space , Str "should." ] ] ] , Para [ Str "An" , Space , Str "e-mail" , Space , Str "address:" , Space , Link ( "" , [] , [] ) [ Str "nobody@nowhere.net" ] ( "mailto:nobody@nowhere.net" , "" ) ] , BlockQuote [ Para [ Str "Blockquoted:" , SoftBreak , Link ( "" , [] , [] ) [ Str "http://example.com/" ] ( "http://example.com/" , "" ) ] ] , Para [ Str "Auto-links" , Space , Str "should" , Space , Str "not" , Space , Str "occur" , Space , Str "here:" , SoftBreak , Code ( "" , [] , [] ) "" ] , CodeBlock ( "" , [] , [] ) "or here: " , Header 1 ( "images" , [] , [] ) [ Str "Images" ] , Para [ Str "From" , Space , Quoted DoubleQuote [ Str "Voyage" , Space , Str "dans" , Space , Str "la" , Space , Str "Lune" ] , Space , Str "by" , Space , Str "Georges" , Space , Str "Melies" , Space , Str "(1902):" ] , Figure ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "lalune" , Space , Str "fig" , Space , Str "caption" ] ]) [ Plain [ Image ( "" , [] , [] ) [ Str "lalune" , Space , Str "alt" , Space , Str "text" , Space , Str "shadowed" , Space , Str "by" , Space , Str "fig" , Space , Str "caption" ] ( "lalune.jpg" , "" ) ] ] , Para [ Str "Here" , Space , Str "is" , Space , Str "a" , Space , Str "movie" , Space , Image ( "" , [] , [] ) [] ( "movie.jpg" , "" ) , Space , Str "icon." , SoftBreak , Str "And" , Space , Str "here" , Space , Str "a" , Space , Str "second" , Space , Str "movie" , Space , Image ( "" , [] , [] ) [ Str "alt" , Space , Str "text" ] ( "movie.jpg" , "" ) , Space , Str "icon." , SoftBreak , Str "And" , Space , Str "here" , Space , Str "a" , Space , Str "third" , Space , Str "movie" , Space , Image ( "" , [] , [] ) [ Str "alt" , Space , Str "text" ] ( "movie.jpg" , "" ) , Space , Str "icon." ] , Para [ Image ( "" , [] , [] ) [ Str "lalune" , Space , Str "no" , Space , Str "figure" , Space , Str "alt" , Space , Str "text" ] ( "lalune.jpg" , "" ) ] , Header 1 ( "footnotes" , [] , [] ) [ Str "Footnotes" ] , Para [ Str "Here" , Space , Str "is" , Space , Str "a" , Space , Str "footnote" , Space , Str "reference," , Note [ Para [ Str "Here" , Space , Str "is" , Space , Str "the" , Space , Str "footnote." , Space , Str "It" , Space , Str "can" , Space , Str "go" , Space , Str "anywhere" , Space , Str "after" , Space , Str "the" , Space , Str "footnote" , Space , Str "reference." , SoftBreak , Str "It" , Space , Str "need" , Space , Str "not" , Space , Str "be" , Space , Str "placed" , Space , Str "at" , Space , Str "the" , Space , Str "end" , Space , Str "of" , Space , Str "the" , Space , Str "document." ] ] , Space , Str "and" , Space , Str "another." , Note [ Para [ Str "Here\8217s" , Space , Str "the" , Space , Str "long" , Space , Str "note." , Space , Str "This" , Space , Str "one" , Space , Str "contains" , Space , Str "multiple" , Space , Str "blocks." ] , Para [ Str "Subsequent" , Space , Str "blocks" , Space , Str "are" , Space , Str "indented" , Space , Str "to" , Space , Str "show" , Space , Str "that" , Space , Str "they" , Space , Str "belong" , Space , Str "to" , Space , Str "the" , SoftBreak , Str "footnote" , Space , Str "(as" , Space , Str "with" , Space , Str "list" , Space , Str "items)." ] , CodeBlock ( "" , [] , [] ) " { }" , Para [ Str "If" , Space , Str "you" , Space , Str "want," , Space , Str "you" , Space , Str "can" , Space , Str "indent" , Space , Str "every" , Space , Str "line," , Space , Str "but" , Space , Str "you" , Space , Str "can" , Space , Str "also" , Space , Str "be" , Space , Str "lazy" , Space , Str "and" , SoftBreak , Str "just" , Space , Str "indent" , Space , Str "the" , Space , Str "first" , Space , Str "line" , Space , Str "of" , Space , Str "each" , Space , Str "block." ] ] , Space , Str "This" , Space , Str "should" , Space , Emph [ Str "not" ] , Space , Str "be" , Space , Str "a" , Space , Str "footnote" , Space , Str "reference," , SoftBreak , Str "because" , Space , Str "it" , Space , Str "contains" , Space , Str "a" , Space , Str "space.[^my" , Space , Str "note]" , Space , Str "Here" , Space , Str "is" , Space , Str "an" , Space , Str "inline" , Space , Str "note." , Note [ Para [ Str "This" , Space , Str "is" , Space , Emph [ Str "easier" ] , Space , Str "to" , Space , Str "type." , Space , Str "Inline" , Space , Str "notes" , Space , Str "may" , Space , Str "contain" , SoftBreak , Link ( "" , [] , [] ) [ Str "links" ] ( "http://google.com" , "" ) , Space , Str "and" , Space , Code ( "" , [] , [] ) "]" , SoftBreak , Str "verbatim" , Space , Str "characters," , Space , Str "as" , Space , Str "well" , Space , Str "as" , Space , Str "[bracketed" , Space , Str "text]." ] ] ] , BlockQuote [ Para [ Str "Notes" , Space , Str "can" , Space , Str "go" , Space , Str "in" , Space , Str "quotes." , Note [ Para [ Str "In" , Space , Str "quote." ] ] ] ] , OrderedList ( 1 , Decimal , DefaultDelim ) [ [ Para [ Str "And" , Space , Str "in" , Space , Str "list" , Space , Str "items." , Note [ Para [ Str "In" , Space , Str "list." ] ] ] ] ] , Para [ Str "This" , Space , Str "paragraph" , Space , Str "should" , Space , Str "not" , Space , Str "be" , Space , Str "part" , Space , Str "of" , Space , Str "the" , Space , Str "note," , Space , Str "as" , Space , Str "it" , Space , Str "is" , Space , Str "not" , Space , Str "indented." ] , Header 1 ( "tables" , [] , [] ) [ Str "Tables" ] , Para [ Str "Simple" , Space , Str "table" , Space , Str "with" , Space , Str "caption:" ] , Table ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "Demonstration" , Space , Str "of" , Space , Str "simple" , Space , Str "table" , Space , Str "syntax." ] ]) [ ( AlignRight , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Right" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Left" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Center" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Default" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Simple" , Space , Str "table" , Space , Str "without" , Space , Str "caption:" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignRight , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Right" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Left" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Center" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Default" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Simple" , Space , Str "table" , Space , Str "indented" , Space , Str "two" , Space , Str "spaces:" ] , Table ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "Demonstration" , Space , Str "of" , Space , Str "simple" , Space , Str "table" , Space , Str "syntax." ] ]) [ ( AlignRight , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Right" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Left" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Center" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Default" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Multiline" , Space , Str "table" , Space , Str "with" , Space , Str "caption:" ] , Table ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "Here's" , Space , Str "the" , Space , Str "caption." , Space , Str "It" , Space , Str "may" , Space , Str "span" , Space , Str "multiple" , Space , Str "lines." ] ]) [ ( AlignCenter , ColWidth 0.2 ) , ( AlignLeft , ColWidth 0.2 ) , ( AlignRight , ColWidth 0.3 ) , ( AlignLeft , ColWidth 0.3 ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Centered" , Space , Str "Header" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Left" , Space , Str "Aligned" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Right" , Space , Str "Aligned" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Default" , Space , Str "aligned" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "First" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "row" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12.0" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Example" , Space , Str "of" , Space , Str "a" , Space , Str "row" , Space , Str "that" , Space , Str "spans" , Space , Str "multiple" , Space , Str "lines." ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Second" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "row" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5.0" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Here's" , Space , Str "another" , Space , Str "one." , Space , Str "Note" , Space , Str "the" , Space , Str "blank" , Space , Str "line" , Space , Str "between" , Space , Str "rows." ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Multiline" , Space , Str "table" , Space , Str "without" , Space , Str "caption:" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignCenter , ColWidth 0.1 ) , ( AlignLeft , ColWidth 0.2 ) , ( AlignRight , ColWidth 0.3 ) , ( AlignLeft , ColWidth 0.4 ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Centered" , Space , Str "Header" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Left" , Space , Str "Aligned" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Right" , Space , Str "Aligned" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Default" , Space , Str "aligned" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "First" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "row" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12.0" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Example" , Space , Str "of" , Space , Str "a" , Space , Str "row" , Space , Str "that" , Space , Str "spans" , Space , Str "multiple" , Space , Str "lines." ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Second" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "row" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5.0" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Here's" , Space , Str "another" , Space , Str "one." , Space , Str "Note" , Space , Str "the" , Space , Str "blank" , Space , Str "line" , Space , Str "between" , Space , Str "rows." ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Table" , Space , Str "without" , Space , Str "column" , Space , Str "headers:" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignRight , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignRight , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Multiline" , Space , Str "table" , Space , Str "without" , Space , Str "column" , Space , Str "headers:" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignCenter , ColWidth 0.25 ) , ( AlignLeft , ColWidth 0.25 ) , ( AlignRight , ColWidth 0.25 ) , ( AlignLeft , ColWidth 0.25 ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "First" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "row" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12.0" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Example" , Space , Str "of" , Space , Str "a" , Space , Str "row" , Space , Str "that" , Space , Str "spans" , Space , Str "multiple" , Space , Str "lines." ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Second" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "row" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5.0" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Here's" , Space , Str "another" , Space , Str "one." , Space , Str "Note" , Space , Str "the" , Space , Str "blank" , Space , Str "line" , Space , Str "between" , Space , Str "rows." ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , BulletList [ [ Para [ Str "A" , Space , Str "Step" ] ] , [ Para [ Str "Another" , Space , Str "Step" ] , Para [ Str "Substeps" , Space , Str "can" , Space , Str "be" , Space , Str "nested" , Space , Str "indefinitely" , Space , Str "deep." ] ] , [ Para [ Str "A" , Space , Str "Final" , Space , Str "Step" ] ] ] , Header 1 ( "indexterms" , [] , [] ) [ Str "Index" , Space , Str "terms" ] , Para [ Str "In" , Space , Str "the" , Space , Str "simplest" , Space , Str "case," , Space , Str "index" , Space , Str "terms" , Span ( "" , [ "indexterm" ] , [ ( "primary" , "index term" ) ] ) [] , Space , Str "consists" , Space , Str "of" , Space , Str "just" , Space , Str "a" , Space , Code ( "" , [] , [] ) "" , Space , Str "element," , Space , Str "but" , Space , Span ( "" , [ "indexterm" ] , [ ( "primary" , "index term" ) , ( "secondary" , "multi-level" ) ] ) [] , Space , Str "they" , Space , Str "can" , Space , Str "also" , Space , Str "consist" , Space , Str "of" , Space , Str "a" , Space , Code ( "" , [] , [] ) "" , Space , Str "and" , Space , Code ( "" , [] , [] ) "" , Space , Str "element," , Space , Str "and" , Space , Span ( "" , [ "indexterm" ] , [ ( "primary" , "index term" ) , ( "secondary" , "multi-level" ) , ( "tertiary" , "3-level" ) ] ) [] , Space , Str "can" , Space , Str "even" , Space , Str "include" , Space , Str "a" , Space , Code ( "" , [] , [] ) "" , Space , Str "term." ] , Para [ Str "Index" , Space , Str "terms" , Space , Str "can" , Space , Str "also" , Space , Str "refer" , Space , Str "to" , Space , Str "other" , Space , Str "index" , Space , Str "terms:" , Space , Span ( "" , [ "indexterm" ] , [ ( "primary" , "index cross referencing" ) ] ) [] , Span ( "" , [ "indexterm" ] , [ ( "primary" , "index term" ) , ( "secondary" , "cross references" ) , ( "see" , "index cross referencing" ) ] ) [] , Str "exclusively," , Space , Str "using" , Space , Str "the" , Space , Code ( "" , [] , [] ) "" , Space , Str "tag;" , Space , Str "or" , Space , Span ( "" , [ "indexterm" ] , [ ( "primary" , "index cross referencing" ) , ( "seealso" , "cross referencing" ) ] ) [] , Space , Str "as" , Space , Str "a" , Space , Str "reference" , Space , Str "to" , Space , Str "related" , Space , Str "terms," , Space , Str "using" , Space , Str "the" , Space , Code ( "" , [] , [] ) "" , Space , Str "tag." ] , Para [ Span ( "" , [ "indexterm" ] , [ ( "primary" , "food" ) , ( "secondary" , "big baguette supreme" ) ] ) [] , Str "Nested" , Space , Str "content" , Space , Str "in" , Space , Str "index" , Space , Str "term" , Space , Str "elements" , Space , Str "is" , Space , Str "flattened." ] , Header 1 ( "titleabbrev" , [] , [ ( "titleabbrev" , "Abbr. title" ) ] ) [ Str "Abbreviated" , Space , Str "title" ] ] pandoc-3.1.3/test/docbook-xref.docbook0000644000000000000000000000607107346545000016062 0ustar0000000000000000 An Example Book XRef Samples This paragraph demonstrates several features of XRef. A straight link generates the cross-reference text: . A link to an element with an XRefLabel: . A link with an EndTerm: . A link to an cmdsynopsis element: . A link to an funcsynopsis element: . A link to a figure element: . A link to a table element: . A link to a part element: . A link to a book element: . The Second Chapter Some content here Later Part The Third Chapter Some content here The Fourth Chapter Chapter 4 Some content here chgrp -R -H -L -P -f group file int max int int1 int int2
    The Pythagorean Theorem Illustrated An illustration of the Pythagorean Theorem
    Supported features by version Version Feat Free no
    pandoc-3.1.3/test/docbook-xref.native0000644000000000000000000002103107346545000015721 0ustar0000000000000000Pandoc Meta { unMeta = fromList [ ( "title" , MetaInlines [ Str "An" , Space , Str "Example" , Space , Str "Book" ] ) ] } [ Header 2 ( "ch01" , [] , [] ) [ Str "XRef" , Space , Str "Samples" ] , Para [ Str "This" , Space , Str "paragraph" , Space , Str "demonstrates" , Space , Str "several" , Space , Str "features" , Space , Str "of" , SoftBreak , Str "XRef." ] , BulletList [ [ Para [ Str "A" , Space , Str "straight" , Space , Str "link" , Space , Str "generates" , Space , Str "the" , SoftBreak , Str "cross-reference" , Space , Str "text:" , Space , Link ( "" , [] , [] ) [ Str "The" , Space , Str "Second" , Space , Str "Chapter" ] ( "#ch02" , "" ) , Str "." ] ] , [ Para [ Str "A" , Space , Str "link" , Space , Str "to" , Space , Str "an" , Space , Str "element" , Space , Str "with" , Space , Str "an" , SoftBreak , Str "XRefLabel:" , SoftBreak , Link ( "" , [] , [] ) [ Str "Chapter" , Space , Str "the" , Space , Str "Third" ] ( "#ch03" , "" ) , Str "." ] ] , [ Para [ Str "A" , Space , Str "link" , Space , Str "with" , Space , Str "an" , SoftBreak , Str "EndTerm:" , SoftBreak , Link ( "" , [] , [] ) [ Str "Chapter" , Space , Str "4" ] ( "#ch04" , "" ) , Str "." ] ] , [ Para [ Str "A" , Space , Str "link" , Space , Str "to" , Space , Str "an" , SoftBreak , Str "cmdsynopsis" , Space , Str "element:" , Space , Link ( "" , [] , [] ) [ Str "chgrp" ] ( "#cmd01" , "" ) , Str "." ] ] , [ Para [ Str "A" , Space , Str "link" , Space , Str "to" , Space , Str "an" , SoftBreak , Str "funcsynopsis" , Space , Str "element:" , Space , Link ( "" , [] , [] ) [ Str "max" ] ( "#func01" , "" ) , Str "." ] ] , [ Para [ Str "A" , Space , Str "link" , Space , Str "to" , Space , Str "a" , SoftBreak , Str "figure" , Space , Str "element:" , Space , Link ( "" , [] , [] ) [ Str "The" , Space , Str "Pythagorean" , Space , Str "Theorem" , Space , Str "Illustrated" ] ( "#fig01" , "" ) , Str "." ] ] , [ Para [ Str "A" , Space , Str "link" , Space , Str "to" , Space , Str "a" , SoftBreak , Str "table" , Space , Str "element:" , Space , Link ( "" , [] , [] ) [ Str "Supported" , Space , Str "features" , Space , Str "by" , Space , Str "version" ] ( "#table01" , "" ) , Str "." ] ] , [ Para [ Str "A" , Space , Str "link" , Space , Str "to" , Space , Str "a" , SoftBreak , Str "part" , Space , Str "element:" , Space , Link ( "" , [] , [] ) [ Str "Later" , Space , Str "Part" ] ( "#part01" , "" ) , Str "." ] ] , [ Para [ Str "A" , Space , Str "link" , Space , Str "to" , Space , Str "a" , SoftBreak , Str "book" , Space , Str "element:" , Space , Link ( "" , [] , [] ) [ Str "An" , Space , Str "Example" , Space , Str "Book" ] ( "#book01" , "" ) , Str "." ] ] ] , Header 2 ( "ch02" , [] , [] ) [ Str "The" , Space , Str "Second" , Space , Str "Chapter" ] , Para [ Str "Some" , Space , Str "content" , Space , Str "here" ] , Header 1 ( "part01" , [] , [] ) [ Str "Later" , Space , Str "Part" ] , Header 2 ( "ch03" , [] , [] ) [ Str "The" , Space , Str "Third" , Space , Str "Chapter" ] , Para [ Str "Some" , Space , Str "content" , Space , Str "here" ] , Header 2 ( "ch04" , [] , [ ( "titleabbrev" , "Chapter 4" ) ] ) [ Str "The" , Space , Str "Fourth" , Space , Str "Chapter" ] , Para [ Str "Some" , Space , Str "content" , Space , Str "here" ] , Plain [ Str "chgrp" ] , Plain [ Str "-R" ] , Plain [ Str "-H" ] , Plain [ Str "-L" ] , Plain [ Str "-P" ] , Plain [ Str "-f" ] , Plain [ Str "group" ] , Plain [ Str "file" ] , Plain [ Str "int" ] , Plain [ Str "max" ] , Plain [ Str "int" ] , Plain [ Str "int1" ] , Plain [ Str "int" ] , Plain [ Str "int2" ] , Figure ( "fig01" , [] , [] ) (Caption Nothing [ Plain [ Str "The" , Space , Str "Pythagorean" , Space , Str "Theorem" , Space , Str "Illustrated" ] ]) [ Plain [ Image ( "" , [] , [] ) [ Str "An" , Space , Str "illustration" , Space , Str "of" , Space , Str "the" , Space , Str "Pythagorean" , Space , Str "Theorem" ] ( "figures/pythag.png" , "" ) ] ] , Table ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "Supported" , Space , Str "features" , Space , Str "by" , Space , Str "version" ] ]) [ ( AlignDefault , ColWidth 0.5 ) , ( AlignDefault , ColWidth 0.5 ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Version" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Feat" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Free" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "no" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] pandoc-3.1.3/test/docx/0000755000000000000000000000000007346545000013067 5ustar0000000000000000pandoc-3.1.3/test/docx/0_level_headers.docx0000644000000000000000000010451207346545000016772 0ustar0000000000000000PK!r  [Content_Types].xml (ĖQo0ߑ"NBMDMcۑ} GR)9߽z4Ur>hgsv-XV:6g7VYZY5mYX<JH~k!-="XL`g(ĮH"f3\ȾTI SWY ig@X6_]7~ fˉao.b*lIrj),l0%b 6iD_, |uZ^t٢yǯ;!Y,}{C/h>PK!h̶ word/_rels/document.xml.rels (MO0 H*wuuҮ0,u?DTߓX]rdGvm? @BɘD J m|sGL&TbC K&/*[IX=PjxPU I`hMъOwѝ2^&6j[ȗViZpxT|#@bO 2 '+3<$!dȁ%[:69ߛt\^E0-imWJBh\.h蛢[ ;#'g$غTC\. *ȍX-傈&>sW>A%>ljZSK = W@Iʎ)KS8ߜp85ЯO9ol֍vZbȕM2@^`S'GLܟYM.:81:'GKѣl PK!Q '/word/document.xmlXn8}_`{bK]$Nh NgZm!(icodgx%vҸ`/\3>kEґMFr|$ IR:rT8a3 Y'4 P& FJll`E"(L<XdEܖqP!ބk".2 e3!.ώ@{Fd4HnAwkհth:*%Cy|'=v34X*VQV ĕuiT$rw!?g8V w#ԋX[Cn`̎‡Pi=IHj~*p"^YNLezWƒyg:yA vlE24`xL'<ڸ~3YYŧq͟p3ry`zJK4ge,= I`jMbP?Ա7̪IMMNX'@wJk)t gSݾGMABts OjA-kE$Y=I_##Q?hHU8n߲jH0 ̂ 2 ^xO2#l|S-d3u61ȒJ Jt7xV}=;I3!0C^(z-o[4.( LFn&]uTVs6,4A \M #\0mE룠Y.d=pLW  K~؛5 *mBvmPe yW>WMSJc3&m,1 ѧ7ԞGAq8ɗ ({oAqY *:#O!?&n}閪ޣz~R9T\ϖ97$[AeZZ5;zپa@TVp=V.|2E3U}Wu{@8SIDǗ 9P$ sןMX]s6+?|L fMo[OEmnhoz_ i={o_C`oycn42os ;zZ%ddn6L43XKp3;y0N9[iz`nq횔$qImmݙ1|<k9[ 7x.Yrjkbn 5`[ϖzk ,gIvGi^&Ze %p4X $X Tx: @Bӑi[=oTQ?#2٬mYkyƪɴjwW["' ׳xsko+ZxAܔ/ # deaQ`/~]tȵ8AGjT$E֦ è(L |]v_.Yl GEpioU}."U:n0dO~Uq.Ԑ妯Fg:V ^@#uo39wdrVNv*F~RW"saWK*QfNSi^qUVӉHzs3>ʚuílI%ɫ<7m;̄dO3#,w-s\3z+vNP -sPiB,?/8&GuAwy<'^fSq;9Ry<ˠfC7|w؃PK! word/header3.xml]o0'? _m ТCjj*wUK ~$U#89y6ߔx[$,<b9/08ҐpC ܧ_,۸.g['ZľQ+^yΩo, 읐0(}滟0a"bpN ˬ94lk'1:ښnO,X؝wؚ: 0ٺ iلe&T؈4"t]B58\\SN]8Enex S) 8:qsIVs. BZ q ;G,FA6%ː!']Q\󴢈鶢+18S%6.AR^5%C\#`Rol%l( 3.;T'{Q)kJ(l\f͡f3\}=בeʼE[Sg&[wSBC`\„E89'ӄ|ɞ#y GkÊ7mƓldBkH"Ś K m]?oT[W?ˊ3Yn5\Ĵr9&!R[k7Cv,zX!&}'X/6(G1g2`LO@Gnj~:?PK!N 9word/footer3.xmlUn@}=xBRY ŬE |}g}J Q_lk/gΙ93؊p0 zx\&jUD~g7w3%+qCF_ܗaj҄N"YC7I3='Jm/QWi'/,[KJ1 3hJsRYS׵Atlȋ[5Ȱ!trWšPjow7*Y .m^ %M뽌Ĭ9'b#\IN%5+{w/΃ᆰ#"p -r|,5f@uGGC{+ayU'1͉'y%Eʠ9G !Η寈Pڿo] {`:Ab^x{Ê̔vR`ǀ[%0)$<:I-Z 8BV&e `-iX#CBlŢBw ߺ98]qnjn;\pG%ȹ4(h n8l8𻃟k#)(sx0*y+CbP*m2Sgݎns4SWWgWs֎qN&t<9CUB9\!ׂʈXQzdW[U69KڶOPK!`?Zword/header2.xmln0E`hB!Qը]8Dz 4_dx;|)EP1c9a(d\mRv?AuDeDb)2ˋy |Ii tĆSrRSk0}(֧#"prL͔ϕKb>J=tM_sֳYF%;AAPtvKaF.~E)fĆ -8-/ZQz2G_uARtuhObefב1h9{%p5`N+aq0s zy'1k58{'6ml}U>2UB Np+4R68 #R rT~ړxL[4֚> `4U8<R!n TTsv$YPN~ o+F5KhY]Ϯf-H ֳ +ZAJÀKS Tbv^]88ۆ{BR&u*`#xm"CK GMϒo[z[TmH4P3 Hݽm SeV"Z ȹ6h@+#T,DZKC3Evd^x'@ʤLu3l ζ v UGtc 7Rc?PK!HnKOword/footer2.xmlUn0?ےZȁ7A.8@KԂpÐP: b=Q g޼7nv{5S*pDcyX*Sʕd13C_6QfCoiF'1)Ց`(PFev(,+7 R[0c0=55hJ32Z3Uk'-%/bRzBs:B1xwv+TIFq䠤)J}q)J,JG"jFx`ROIF9 P?#1}E3Z'~U鑎.C{#3v򎥙NFO$S.-GFM8\G 5WL`v3_pb=zi=v֔A)ˀ%*cB1M2)e;.EzvK^_Dě=&g%]x8+si!Ģ9Fij!`eyRpG.#rwM~YM٩`4A_$+\9j/7T%be9F]F{ρ?۶CsJFHy hG,j^$YET'~k¦[ђL e/)a~uD9JӐm3 8v-wmTmվ.s|B[P۷7PK!nword/header4.xmlUn0w@. EYUlS^DK XIeO?SQUI[߰MS#0gpKyY_k( Y g(mê L:iJE*-jNq*⹞ SZCVCz8:E1ÕsIVs. BXAP[0<da/h6 %a' rޮrӊ"[FW"b4pJ,6^f,%5%þFo|N66G 3ad]%]Ǯ{/;b!F H8Phk[6{8b3y2oٞE+@ix_0.aB; 6 4d?#yο"zfkn/M-N25$cMpkX{ϔƛe÷i͙ƬBg+GSjL`%.Jm$`٧<];V3-~_~JY5mvN»vt)P7 j~^_PK!fword/footnotes.xmln 4e~Qj9o?Zmu1:oC;0{e)cF" 3|?I<2%fV'9E.HII(uV¢܏jy5ڌޱOƢ΅OܑNih$X9Zͽ]QWeFnWT~la0%d'4ꅚ%VhwVAGnW.PTZo#R+ eiR,:$ֺ& )Su(8ٌlH}h껯_bN%HQ3\Annhkutflvaj"u n$H+@?`TǓ#ഈoL{$ ,%hk8ה0'q3ZȜW?Ҡmsqt>X;jj(]TPK!0C)word/theme/theme1.xmlYOo6w toc'vuر-MniP@I}úama[إ4:lЯGRX^6؊>$ !)O^rC$y@/yH*񄴽)޵߻UDb`}"qۋJחX^)I`nEp)liV[]1M<OP6r=zgbIguSebORD۫qu gZo~ٺlAplxpT0+[}`jzAV2Fi@qv֬5\|ʜ̭NleXdsjcs7f W+Ն7`g ȘJj|h(KD- dXiJ؇(x$( :;˹! I_TS 1?E??ZBΪmU/?~xY'y5g&΋/ɋ>GMGeD3Vq%'#q$8K)fw9:ĵ x}rxwr:\TZaG*y8IjbRc|XŻǿI u3KGnD1NIBs RuK>V.EL+M2#'fi ~V vl{u8zH *:(W☕ ~JTe\O*tHGHY}KNP*ݾ˦TѼ9/#A7qZ$*c?qUnwN%Oi4 =3N)cbJ uV4(Tn 7_?m-ٛ{UBwznʜ"Z xJZp; {/<P;,)''KQk5qpN8KGbe Sd̛\17 pa>SR! 3K4'+rzQ TTIIvt]Kc⫲K#v5+|D~O@%\w_nN[L9KqgVhn R!y+Un;*&/HrT >>\ t=.Tġ S; Z~!P9giCڧ!# B,;X=ۻ,I2UWV9$lk=Aj;{AP79|s*Y;̠[MCۿhf]o{oY=1kyVV5E8Vk+֜\80X4D)!!?*|fv u"xA@T_q64)kڬuV7 t '%;i9s9x,ڎ-45xd8?ǘd/Y|t &LILJ`& -Gt/PK!eword/settings.xmlY[s~?U?ySqnk'~րf2 J޳/Эn}}SS=rW\ٟo QVr.?Vgbmj3W~>=W gMq:(խ/.oa >aa tLU۪cYt5AIySRbZvUf O%SQ oB0?T]?kk600+y;#z^w[9{|'@'Eԣ 5Nы?/ƽ/*-kAhQ1̐ESl[CRmw2/!㲀 A:ZB3(8׵Ϣ {ȬH12L)yX83˕*Qik~Z̫Zq F,֚Y]obhfTqdTW3:Y͖˷T}r$/ԈRW =I/6;bV*'W(ёf=V}}ۂaX36*7$+n#G߱VbA)ʪ>KթdGo*3fϳ?TUWk@&Uۃ VmDaAo:V1R3(cpPBx(:v_>u D8{\'( ^V :rW {\9j {N o pJ8 ٸ Qhx:9k,Y zq1=վ8YSkd"ǯw7/E JLa1F;U[QǤ2Cjy,9{1@!z#iYw't^ 1y.+u+٫R@-Z^dnaoMhu S G]b7 Ǧ]#gvU[Bju4[T?hÀ8j 4j bfLi[ZZ(^I8KN|FSb^=q)Ds`~Q-R{-u@xXdVð^ !ah}5[7œ^cV#ܛ6 '©6u#JAVx-`=4(TnXBC:Q浖44wPrK2/ebvuIbl׋Bx4፶ȲcHh'('/72+8R"q8qCx4 <c\&v\?FerhLfc~D6?h!EJpmxdM}ANy4Csv3' Pmq(7s^Q"'o^HIFQ$|NpK 7F8$DQسʢhjCr(0mN}IphϷ7R;(j?ǖ(A9h;vF;t'E*$pkyxA.xVvHn, Zh#L+er/ PD [BEQG#'sT&p YG 'Vc J88Q9q#Al9QĶr4cB\sCġkeGR'-8Qm'`9 S<)-2q AZ~'I)qQԶ)~ H];+ AY4hEQ1,9AfWzޑ2&f$/ьھb?oBYh[pµ% r;99BV pRHz) 䑛(I wwy)$^%?'y J^\/y2^RoPŃY]SEZ~;uO2mR}ِ<3/`PA!G`ЁCg jkX6=O29O*e^Ĩ#X)7DUGl]q.| %!S.Vyqptb?lL-3fٌt=4#۟\v$:>Q#N#~%ĕgwёn}L(JӬ\)n\=nl'D't^SX0RU-b@Żt&*Y? n>M'W5WFZ5YļH|qP֠V#=ڗ<\l7*[5P5RWs+gYspVj9;m4-XfvAzΙԧJj xe[->?vg"dpB;('m=`:4G:NQxW¶זWY[ߣ &xl_%;`a7(4EQKkz|nQ_NVˉ O6Ք?Ů4܂SG <| Fi;A"rH)d{2v4+aX&k1S3uơlDhsw Kemd$p@PSng@rOޮPpL˓d|YXUm0BM3d` :3XPg$\z}vzJʕ?TBoXq>چM{|#m; O5klSs?Ug8W0CB\Oyn{oU,"zH 1k_x$ܒγkXln0`>)_ڇ} IVxmA]g54XǩZ VVpM'\;xⅮ}rؘxq#Yp ǟPwb%Vyah 񸎼֛Ƙdڸo/[Ea- l$P 5O#|Ue]@`؎ԙ;o֝yPn;4`Qq\ Z ؟|R ĸ-cjr]2r]Rlh뾾L#ѵ/t(ҲobO61kÊ7N\cWi sLP1!#ѮV?jb]˝Ip1>Ԯ*WK+r q[)/tZL$TUQ;)mYrبΐmҬbU.9AgfBu vt`}?:ZڊNZG\P-gǾpU"D+;Z˴kl ; in# 6Sc0uBH_hx>ӫv~jSڵ0z 鳋1yH]6|ZoKV$ GmDfW {aMY6lVCN]j Jވk"?D"Q Xc VH{ __@ARWŅ3v׋sE]B}%hnԗ  ]fcTx4svvKs*;03e  nX9'$`ЄiVȷ{FO!&4q ޚA$k3=n kXp]*X@ .a.gI1ahOpaetyU( >\T_ͅ}j(֫4cpMܷFۻHCDbfuOg8&g~PIhqZ)? Uʇ,䂍^;84VhR]T烝n3ԓ.6ѣɇ"<jW",w-!Rt VCneUKbQ <ܲgZ8: xv϶$"4{InO~لtY͈ mIiܞ*$4_@2-$ﵠٹY]هi!,'9Ja.ku(}k64cfްڔi8RsF+t8{7!"[δnR*gr=Y N9 )Y"7$6yÜ M2K3ƳZgp(:Hc)c5qCB:N#"x{@qRCi`=okz C{9OIX!ѷ}z)aE[K I? }.[l7zro({LF }Aoaէ6ZWFFYPƮN[BD 7؃8"zޭTk =:\Te,.=6ufҹn1av#:yݹhmgGjBq߭Zd!D#wfW- BG뮄 Ų!=ص`yFE!q)nZxZA_R>KR +TlRf(|}Jזj/I d88l8AxhrqQ6bjȚ3NlHh))1!. (u˒d'Z*Xl j#Q.MyΊF/CC)!x:4v4SAzQmf%ODxq p$imVM+אB)-ԭEmf[uPX0fʇ]&Q-2h]=PEnљDѠ\AwWY-<3O<3AH=0T+Noe%%5TCg6Zmc6Aڹ@_A_Em/m̢A}׈]=O82AL;BٱÎPldz *,|hw>b`[Ť> #hLj>m!x<x*G\lEUHߔP>I|n?D̡dPjλz6 LX歴rlٽ',hx>w\CY"m([a.f&!n DK4`f!G?; I@ N>/`.<\uAUXqIP>okȷ7P}m^ӪBA怆r@>Ѥ2HUKaOgߋ8_&͝,asN<ڎnڝ;lD-6uxdSt|J)F=,jL<"_4nX& T {rOn?%2RāZ)cLxD䧷%›LJનǷi2f"N]uMٖXRž_-7Y^™lbBXRo5ɴK祎\,eoǜmn"K {Gn|mF]lP.!S I 2Scv>M"A6E ww_$8S(7:%H-:lUU5`fYc|$V}D,RDohȞYKvnRR } ;ឺLٮW`  ﴅʮ ;5?_YIZw4G|5i GvM62ȱTOk2KRgS=&%iM&6,`ըZmhv(II[k.;"roqNs^_QAזTwXdYzUI|u>` IlsUËd'yLXH" ]xM_~͋ZI"d9V[k|XbU D9M.(?WY㭣m{y`|;k{;[YPܵ?A:~v@m_Ds} _0ih< 2} Pыo&a6E`8f䂾\bU{0^_>:;>Ź_[[+>R\d Iƌ܌.]dyR~  g6szL7jژ0v3AwLp&X4S@}>@8vyoq͉7~x,u!h?L8u2q|L0xZΙ1gno'cZƒ0Ʉs7 .#) D,l3YwixF`5[Bɛ$Ȯh-Ĺ7'S4W!}$l#5fc>GEm!9y4$5ٟ+mWp׾a/|f,_ot.SD뷫gYs 5m|h(N1 5X$Ϛ oo?D3}/PhboNe=N؍gL.h}.e]o p*yK%Q +g6/pϰևwGzݤ=]d̢3"avfы,\wDD"3<l]vv)2L~5?9fSv/l pI;6At<,bG <3/F>j=rz^0] rcO`AM&^ חC׌MH&=hΑMl5|?Z'#zhm]Zoz%~dq}Ąd]:D_لqr&+$9aAa/3;!|0}N\,7=ZY*Y賷o[?#O}Y>,l;en*5FzYUE`M¢?, _( |X,*Y,Z2tcfvL(Q-V ײg"q7mq ,&(Y˯^Y<_E'E.>Ж ʗ&X|ށ 1 q]Zz=իk·rsjewj!A~T}ZH5g›uR{̋9֊Q0g\%qkAhn{ 1/XW'9P9axkL$Ubtg#2a|<caĕ]@>R}os~_G7^2 6@ :0wItnCY2Kx-O Cdr>7 <+ |Fj'5YTjr9rrf<Yh/h]hΨ[|z)ꊉXI~3'd*P[X3>ZrvZP-T^x{h3䐚 alFF?%2N&Wê LE=Aj"J?S%a܂@]1culLoxT #;ւCMaeo'sY؝ςy9uUe"ME0yV2Nwb4Z~6quſ=C}[V5><2uE(@i*FR|6<{S-Y0RTDmؤgBp mb ̹;YtO#Q:H)xQǠi?m16`Mkꢹ߾y?Mƶ,]$uBd|9,WFJF#_/zҚ&ղ?'?OW!Y'~ w bhc7HOuB*j9ACdt$MlUx>$hCjؚVtKiCH ?ҰIR pkI޵9 p#uN ADa]R̕ .C+:0,S +Qp ٬lAOo hɡ:=ѡ0(.(ȷOH_ 7p|eJSQƧ͇RQL<}/|kf&Qi>vÜN:>6!Vop9bP]O9q4axάu|~˔e'D?"ybP3Tݶ?o|6Ŭ* :K05P иlLFA4P@5VYddm 9ٍ8W\J&u Zcm;~LXUkjNe=ć fULqG8GJrGvb+۫ , gjC֦ToHvdcHt!I4uGQS%1"I P|2l":NJBwn)!ը"HlJ4& ̆ nJّs*!t.sy-,IRJGzR J'7tI𳔄ΦtrCco1l;sVdSY2hydH=8WK]H1cO3;oW哯+ Pʵ~oSPB ^&} \c;m ӵU9EM1~m̠HVbhŁ-953Y\)+^q~X\ȯT,uW ⠺WڔJ1P oh=/؅t0 i[+K$ьtg@Ǯݑ@/zkkcJO 20.-?U<3cy>1]Id*sV["Nٯs6 cP {$y&z2E%Fmr4Rh^œo_[S̙1,ô33[q/U#;uuR.Rӕ VS{{̦< i;$\9d\+Oxg"L f&6'e ns'{w*";$QXX]|g6Ԗ4tIu]j^W WLRKC-a`8e"h u ٪tH]L/R|+. ;*j+VӍ$tvr,U7r|T <Ǿi,l[0s3%PF U4e^{xeśt#@ٚ*ȗӯ:I {q<ϊn sn05InJ2hG):$p3IhW:ffyIƚ_GeH.9ir{I+*auB( _GֿCtB"TF$B$h)HH5ZCrՃ FdLl\! v׉$  UЗL^'2o{]:TgT'2w{"E=>@aB 4Jڽ)Vە4_4"}Dz#2(K҈4hZ,怹 .hBU9ef%-fVrFPPK!t?9z(customXml/_rels/item1.xml.rels (1 ;ܝxxYt23iS(O+,1 ?¬S4T5(zG?)'2=l,D60& +Jd2:Yw#u]otm@aCo J6 wE0X(\|̔6(`x k PK!XU(customXml/itemProps1.xml $( j0 CuSj3ul8!팍wNq'IHߏӗOvvCtD QNL* }~jpD!:.Q,5tNgW=+ UPU:׻CUsI~,m:(1GafeӰwވ;e#.|LЮy~_Uqx_U_'/p?^PK!\(customXml/item1.xml $( I /-JN-VNIM.IM .IUq pԋQR %bJ 9yVIJ%%Vzy@ (]??--39%?475DL?)3)'3?( jUч{Ǝ PK!xyZ;F%docProps/core.xml !(N0w$!NXI::T e_[رlCڷI"F]6Ug*D30l+ҬJ|F3PxooJa]g>&㙰څ`^@sEst[l[9!3!pǃ0RLJQ 41(a8l+V`Ln)ʼn{5}g}1ƈ)~{z|GMv%~Z)@$O]C!%RpcWenjkqЬP[DeCwN$?c9+,חPK!#cword/fontTable.xmlԖ]o0'? ChFM[bKkĚ?؆60 96{~yY!JS)&a|€L.XN4 bdn//>~8/ǹFcM•18t"cYT8$/sʨF BðJ"f֜㞏aQ d+ZJfDkf|>إӽDfJjcȏ(;€gK!3`WixQ ʱ|.XHMbh`6 1 Gh4 # [auL|8ǜmUc jU`Ex|KhX9VGbǑdq$syN<ȳ Ï|쁘QNtpCHh$R8Kۉ! \M kNӸ4DΪH+s8mZ #A_C 1]R=!Ll[WX e`M/ +n,9ckEAgL[$i/:\.j[79'EY"5?(;,պI=-͵} ^+zX?@urK@$ë绔^X>@%JO;Ȍ@?_CKC[+٪x}VPkOwg3s ^o>qnڅէ 3:Wι9~u(yR]ٞkOmU3{XDX%z~]iJ[H;KHT6__PK!lӑword/webSettings.xmlJ0;ܷie)mD<6Ʉu}z eo21w8 J,.̝zyoT!Ʉx Щ#Wڬ0G19t'gZXk PK!ӋOa=word/stylesWithEffects.xmlmS8}CH4P3m60Z|~ pV;wcUcoWһa<$2Z'}=,GNg}^KS D6&$6gã??k.,z22p| !HOR鈩$P@ v(;õU?DNMR6h;A:|0h"|=nl7M6^^fhFLmTLzpdՈFhMFhDFh$wD##1-\*:ճZw" U(tƹe {HXqTo%|\rzX.Dgό@wVK`M ؘN8_;S|do 72ygQY]FsMmhA=\f{Ya)7$vڲ򰴢L#xX#u@hX+$Z}c{"29XdY]LZde Z o"_-}A!'7rvjMk`tU5oVAv'hFohFw?d:ݧ-FU >OT.";n}|5`tI>yׅ$uq^b'˕5 vWT\Q=xQ_*-3&˃Q=-#+ʼfߙ: >)9G~d \.y)[pᶸe?3c A i_ :3NOtZ,aDמ3Pu|TAI+[KRu}uI-oOPK!$2docProps/app.xml (Mo0  %iH1A6gMa$Hl׏YwO2%ׯM0D2yV2*]|ͳHʖvc~-?upqBب8LBݰ[_$\+-}ü86-N|8zP`kE(﷏7#zhT:gp4(gc3`B Dgj*˫7F+b}U"KA %c ]n,\  jG9Itj\RuDCƻVy@jr!7xg?U$2?`%0uNk>R{s[sX6,Ar-)1p✮=!>T|7d2tcv>j΢OpiQt;&5xy t8A6XOp:bwXj>&=wTNf1ڜbKJ+;wϒB; @dpRۘ<SRpcs/䗘tb+6>A!J~oIȒmc1VR RzuO\(oքr8`{C2_.r!繓!ezܦ+7iFMem̧\!Ip>NiL+?Y XwBDh'v" .sDXb?;A ʝc4֝H_Ems,:H-U{O/I$Z!o}PK!N _rels/.rels (j0 @ѽQN/c[ILj<]aGӓzsFu]U ^[x1xp f#I)ʃY*D i")c$qU~31jH[{=E~ f?3-޲]Tꓸ2j),l0/%b zʼn, /|f\Z?6!Y_o]APK!Dword/_rels/document.xml.rels (N0Hw@AN/WW7؎ Ǣj*kg>{jZ- b`sS4<s$u![Q[IMwN@M=qtPX%ɗ?e|knx]![`%ަ,M+t&;ZI[! 8ԑ~>!d<^ʃ,1B2^N{GF}"&7jI!iJ)v6QZ 7$SϙrtGQ#?PK!P6/word/document.xmlZmo8~BehmR/,A`ہh[,jI:P[4Qt/2[g3C~(=2Az@Ly&H*Zf%;1L O0rJE)Usߗ--TpɧEOy+. *S&%|Zonc)pN =$llG6m6O V ګܠqerboUu6 =6g͠EH4G[XD؍h#gn%Yм?98/c`3f3Ωj-nKP5:a紂HóY  H13ZV@Ê z{HFMU쫪 l?Bt˾GxxGn`ve~u@RG5)> HRL,BW=t~f9oQ+-8~ZWXQ\+*N|rZٳCYUI&1@ HHqTR!ZBy NaDDkHbJ$|U9@Hزmm>lY?ړ6T+_I'%q|$NԒTWպ`'5gLJj& }15Ǩ坮WhDBIL CfAHKj#7ġ@r:$#nR*՞f:BTޅpp .hC.8EHB4;:|B6xt&`  bEVb nAq{/xx}^^]󛳚.nnC` WL< IxczCP|7;dN\Lb\qX%BmSA,l7vb;5Tи٣A94R*DD+t^'8"Kj nu|#h18a\Lt bdH'CB)j 6\;kĵ-&g?ɽA;}z=;>1s#X'6@mr%䭫-%A%If$Ӵsv&0.hmL^n|6W W/H vp;[v8XJnYOOE(]*)mAl'PK!U5Qword/theme/theme1.xmlYn6w tOOPeݒEv%-kJ4H:Q  ]L!FRE..P u?9x޻DcPI{z1t<cHhzq݅G"E>GB̏Uf9eߔ YeI5fJHQĹrIS!p\zk#"傫sY/yHqbzuBvxՍ{l VX2~@.nF? Q$gZp}=lu ooTx14@E1`hנk߶vе ׳@~3CtLN1H!6-ya=3@nH>cR \-vOQJ9t2la@x;h1\)h>&20A9@B[q=NxbgH.ZMɼ,]e؜=J\F%"VÅ1̈<"u<_ 82 "bĹ[ZtO~Fd\SH,La6wryjb3D!xLwHmZx0I4$HEeVY@Dz*O:`n8U\il2LanR .vCZȖ6ܮ+皁tyϛʛ,fs+݄${^$V/2g\ !O *a 8kLKnF[#%׭}|_ft"ʾ‰`U I<,(*1b3cqQܒV~*($NS .oLgeW$*I>uo6Rh9@ԩ֏wJݷXҽuݵ;%n ,jZjS;n4> W: J]y@'/k.@Z=e-a#+N0MVf(׆+f{,grDC;ͪT߃XC7CXFe16V+pЩt֠2lx.57C5TZ0V~ZZ|uPK! 17word/settings.xml[n/w0|]s>q IP'@KMD^gSֻom^Yo0$Żn<./jX˟*W0uvpo_n4Ѵm;lWOӴ>m{jw;qNxm_WaokW~5a ;94nZN 0OpmFywĻ</`eV| y8Áݜ w_'h9g˯) /}ߏx͛0Jb(a^qE!fzH"N},Ft-mr8[2Ȳ0t?,D~3u#}nռlyK6z>L!24"0MB_Ӱl,lw$ev{D=y3щwYVwvEga7GJPnZRQQBi WZS)0`Ֆ27֜U`NN 樲Üj]&#LAQ[ waL4\!$8#ρr3B(!pT6UDC Kk˩)ZA1ł Uv  m4:|NC<ڎC󹯭˚%&.X6!^In@a\ŠϱR;MYi+Rġ次 mȸFJ̩u]湲׾" cP3qepeXQ[cDpWʠ0qU5Jă=m1t 䴐J]tq:cbB oK0FL[9S&w J %ssTᛯ7W ?_nǾx;'r=ϸi{?WWGm723t{=,7ouӌo?5/э}y{y|w^kAϻENyjw2]|7Tݵ)򷧫Qx7ݽmr?>M u;s(NX0qĖ,>x籏|S' O}ӯc-Gیlmt۱e"Wo2nSb ym_',a}tJ 4Wu uPK3'O+lc\word/styles.xmlUT Bs]Bs]ux d]r8Ҿߪ}v/2(Zϖě&N6YPx'x GEwDO"G~p9|`ʼn݀rD:N[)@ym__\ޖ''aZMҟ΍<ۻ?y頀v$L RD[h}iG#qvzx;+vјn-ʠa.&8y?4rWA*%V 69zo=I~Fg+熆Il=vc' ;?{w -!n\ž--QXӋi77Nye_ FW}eV)^]E.{~w'ՎTWrMK]\/?G>R,;5 í&mIKLdU\!LFeA~#{ii2ݲ ϪQ oˬCجFVy8s=yMAz4-N ?\!.5q$ƆƑGb*h%q$Ƒ1Gz2-}v7t.L<]!{J;nA Mpn[2}jamJ&Jw}47L`$y\&SnxksJ5t9,( uNo$H\]S<ID"*f H`+D~kĺV3 <̴M y2oT~HSu*kveC-q6tWG535QsgMyϚcPs:}*¬MO|eec)RY5Lź<6g3G^cEr9Qzەo~,Lbw̱W<7vz{hEӁTK3?2r9v7r~G!zy"iuKMrNJVV>[* x+Qp@6T6TeBBBPa}* QT  B B B B Uql/dmmm8CU *DA*@*@*@*@*@*dmmmMCq *DQ1T6T6T6T6T6T2TP]P! P!P!P W1TbmmmmmeBBB6,,e G F|K7 a{#l ה~HAU,E-fqgyOxt}t'9S r*N5Ai:_:6AfvY.RI_Gr*$ۼ5WGs<3W s'sǵ'=4֛6ufr6\IsI#eOЗF9O) X9a9̰TK5DPS PjTCLj"`Vwr%:JjF5|aX!jFjL5RTC,K5DPS PjT(M5DR TC%:JjFuEQAWB*3WQ!Zj+FKbRxԢ%=hQ-Z|EKBbբ%!jђj\$ZPբ%ոhIJ5.Zj-RT%ոhIDsVT㢥VqR+ոhIN5.ZQDT%՚/dhj\J5.ZSDT%ոhID5.ZRZEKT%9ոhID5.ZQDT%)ոhj\J$ZxlŰқ=a[s̬RI*V*N*.g .& 8{sSNw(}=,[!<ҌN#uK/tf_է ̄%^ /Ϗ*a.ee%b:vW=yd)I7d ]c[7R+!1MVlîk>\*+WL I`o[P=W]Vfl?rI_yˣJh¿Wcƶ>m)I>m|&*.-+lK=MEkOG%A px˩k\ſܱso~M߱߱I~}}][M̯J5XJIOH*GT@L$ cZ5=W`^@ܨ2yPS(5Y)Oܰ?YRJeܒ'R'&ɟw.1h8Ɏ#.sSJLMTW%&fTbT}*)`gͤJ033]%Q{1='%J\$s]gftAy0815 t!waޅ.s3Ng5: U^ʔ;tKUŁ?N0q?NJ$9(kXEkɯkhkw²v-mβziboI~-L۳ }\3x,t"o;(o\ wӽVXyh83,,h6\GҬfw{wSd5zǭ|WyyC|u22bQg30iĐ'+dҳ5mekjKaO\Zgv<筲|eU(E${*oǢ7$Or $:䥆4\hM4d$B$+xcK.!랹WƳUJ@g;323\J`vbXdq5[Sj:su1z^NJ:f^S \LiptzFDvqFUQuꐎUXZkSz͘zu}eT ƫΰ_T78-U9^w 77fyHhXpUH$DI{eڗRd[ Q uF>7Cu6|4o98|5[z}"Vl(j3K~!kCүwI;.k$R+KtGsc@JRM%)&QTRGq2&9EQgy7q'd\\bw).tίzwR/c:>^loHu N6/QG-(Ì)Msx/dBefpƺˎU{lYZ"7^N#LJ!Ml[IItfJlE7f Z"nULtcqF̉s:5e;~'^-"^NAڌ oLq{+4Z(^JϪDBG[[ bX*䯴Dɜ54E"TSz3փ8O1:#!Z~U|}ݖ9*CɋL,f`+Pm_h[6Cɋt_MāgH2 {Hk fnei&1TVjUŢF]XXģl%=D6![}nusR[>4 `}ҺsØSAMYӟLwC6٢rzHM_H\yzw|tp{bρ"MsSٵZ62x~@=\4i!&xڥ!p]PqY6.*.4yq&Ýɋ:Mv6>y~^8Ze)svCC3ºKy/]TB^deeAՐb_ϗYwuu~+~r/}Eo+Uw[l%I6o3RϲsDF27jjӺㆆ8ۀG?-` iie"77m WM{o]R2ǡJQ37e[lZr`Z~߳/qkpE?tw^4ֿE!o~Ӽ!!3Z[AaŖx{QU*-%8Zzrvi+Y1,|9XSDk!/#1bDF˫܌Ɣ Sm1PPØA1"Վ'ia(z~`ׂ©Z~5^jiA۪ʯ{J=3yf N~j.G{J D60o,W0H9X)ctl'_uݓ|P=;6w#w Ev d*yB1ߪ kPK!yjword/numbering.xml]r6L;Elt;>Ѧvtw1 YX #8KB>_N^h-|ñG]t;֝a?Won4{ Fo^ͫ[{c-v:e;;Y  o9A߇L5{h8x46{Xa]-0i;86#8Ƴo!n EW幸7āL8׆,hPٖ-bkq'`iO XeK2Gd  23Xa'M \V$;}l=g&F? ]`H&\聖~{h;0ጠ:Nh0h ?4=x:OwQAMlXBV3G](|wJ` ;m‡5c۷$3SsLvܽq 9J qIsOmmC 0Zz\!)$ʬvm-_$-_Ga}/(&{wPK!N(customXml/item1.xml $( A 0EAr#]t!*r$&dB2޾AJO=N!WhYg||d%aZa Xu/\\Vޅܪr/sBa &/̴r:*ͤwCE$gLCj|CΈD 훣 "z-,}(S*3 jrA$yJ26e Vq0c3圊wMQ `^--JFTkș''Ll``HI-)Wd`On B*2M|X`dYq8΄.aDHM=sMan6-@-Ԁq gjUv,5Q,lc/D#t{2o٫_FZ6ئWDg3L0rSTц?uZj"!b;n䖈uHM"F2W*#=VFA#Yp9}Z/!ϰÍ=عdA6Ul$V @~#I%ӺS /gT̿4IM ^7~W&< fyVhs:0!,$}| *Jx~ 3c" QNC3Ue9Ƨ.NDmqQ:sFJ>ŻsIDOwrp}1B;L=;ta[=p,*i/2KktͲvneYUA~|PK!Zk word/webSettings.xmlN0EHC}DM+U !I,lOd &}R +:O?VX:!a7  2/;wijJU­^ c.@ kK$V_Bdƭ}ly DŽ3̀uqD à<z{bcT802A2ӫc%?hM>l=or+*_oTtn{U/sq΁l"wr^צnTm@NZB廚F( O?,{$UpuV@2EP;TA/ME,*(Yd[]v`" !n^AgǴ>J.TQ.X"mؘ66>  qO˴e.c@RP!u[y)v0J-5`ݺރ р߸|3t{h'z*/yNKZ&s߁|SSլo8.azCPK-!$L})[Content_Types].xmlPK-!N _rels/.relsPK-!Dword/_rels/document.xml.relsPK-!P6/3 word/document.xmlPK-!U5Qword/theme/theme1.xmlPK-! 17word/settings.xmlPK3'O+lc\$word/styles.xmlUTBs]ux dPK-!t?9z(x;customXml/_rels/item1.xml.relsPK-!yj~=word/numbering.xmlPK-!SU'FcustomXml/itemProps1.xmlPK-!zY fGdocProps/core.xmlPK-!N-JcustomXml/item1.xmlPK-!i^?Kword/fontTable.xmlPK-!Zk 1Nword/webSettings.xmlPK-!'OdocProps/app.xmlPKRpandoc-3.1.3/test/docx/adjacent_codeblocks.native0000644000000000000000000000652007346545000020243 0ustar0000000000000000[Para [Str "Next,",Space,Str "open",Space,Str "the",Space,Str "terminal",Space,Str "window.",Space,Str "Using",Space,Str "the",Space,Str "terminal",Space,Str "window,",Space,Str "run",Space,Str "the",Space,Str "\"ifconfig",Space,Str "-a\"",Space,Str "command",Space,Str "to",Space,Str "list",Space,Str "all",Space,Str "the",Space,Str "interfaces",Space,Str "on",Space,Str "your",Space,Str "system,",Space,Str "as",Space,Str "shown",Space,Str "here."] ,CodeBlock ("",[],[]) "# ifconfig -a\neth0 Link encap:Ethernet HWaddr 00:0c:29:69:12:7c \n inet addr:172.16.0.108 Bcast:172.16.0.255 Mask:255.255.255.0\n inet6 addr: fc00:660:0:1:20c:29ff:fe69:127c/64 Scope:Global\n inet6 addr: fe80::20c:29ff:fe69:127c/64 Scope:Link\n UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1\n RX packets:9859 errors:0 dropped:0 overruns:0 frame:0\n TX packets:1399 errors:0 dropped:0 overruns:0 carrier:0\n collisions:0 txqueuelen:1000 \n RX bytes:1920894 (1.8 MiB) TX bytes:233088 (227.6 KiB)\n Interrupt:19 Base address:0x2000 \n\nlo Link encap:Local Loopback \n inet addr:127.0.0.1 Mask:255.0.0.0\n inet6 addr: ::1/128 Scope:Host\n UP LOOPBACK RUNNING MTU:65536 Metric:1\n RX packets:372 errors:0 dropped:0 overruns:0 frame:0\n TX packets:372 errors:0 dropped:0 overruns:0 carrier:0\n collisions:0 txqueuelen:0 \n RX bytes:22320 (21.7 KiB) TX bytes:22320 (21.7 KiB)\n\nwlan0 Link encap:Ethernet HWaddr 00:c0:ca:85:00:ba \n UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1\n RX packets:0 errors:0 dropped:0 overruns:0 frame:0\n TX packets:0 errors:0 dropped:0 overruns:0 carrier:0\n collisions:0 txqueuelen:1000 \n RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)" ,Para [Str "The",Space,Str "ALFA",Space,Str "wireless",Space,Str "card",Space,Str "is",Space,Str "represented",Space,Str "by",Space,Str "the",Space,Str "\"wlan0\"",Space,Str "interface."] ,Para [Str "In",Space,Str "addition",Space,Str "to",Space,Str "the",Space,Str "interfaces",Space,Str "shown",Space,Str "in",Space,Str "the",Space,Str "ifconfig",Space,Str "output,",Space,Str "there",Space,Str "is",Space,Str "another",Space,Str "interface",Space,Str "known",Space,Str "as",Space,Str "the",Space,Emph [Str "wireless",Space,Str "physical",Space,Str "interface"],Str ".",Space,Str "We",Space,Str "can",Space,Str "identify",Space,Str "this",Space,Str "interface",Space,Str "by",Space,Str "listing",Space,Str "the",Space,Str "contents",Space,Str "of",Space,Str "the",Space,Str "/sys/class/ieee80211",Space,Str "directory,",Space,Str "as",Space,Str "shown."] ,CodeBlock ("",[],[]) "# ls /sys/class/ieee80211/\nphy0" ,Para [Str "The",Space,Str "\"phy0\"",Space,Str "interface",Space,Str "is",Space,Str "the",Space,Str "parent",Space,Str "interface",Space,Str "used",Space,Str "to",Space,Str "create",Space,Str "child",Space,Str "interfaces.",Space,Str "Note",Space,Str "that",Space,Str "if",Space,Str "you",Space,Str "unplug",Space,Str "and",Space,Str "replug",Space,Str "the",Space,Str "USB",Space,Str "interface,",Space,Str "the",Space,Str "\"phy\"",Space,Str "interface",Space,Str "number",Space,Str "will",Space,Str "increment",Space,Str "by",Space,Str "one",Space,Str "until",Space,Str "you",Space,Str "reboot",Space,Str "your",Space,Str "system."]] pandoc-3.1.3/test/docx/already_auto_ident.docx0000644000000000000000000002041707346545000017606 0ustar0000000000000000PKFD ]$[Content_Types].xmlN0E|E-Jܲ@5*Q>u&_g*h̽WL; 8t˜}_6-n&󽇘P9[!GΣ\1s,U*@z KKw="XL`*֘sK,yjj ﵒ̛*?:@Ǟɍ-?hM6=q|=XSAD7aHo](HĬ*%trmh$}pb$=_$vm0EZ$lFfس"Xh;^ #'I%)x?\w>ղ6kƮ5 ʞ~kdIwPKFD? _rels/.relsJA >Ő{7*"^ЛH}0!#ZGr;R|̛ GcVw5R&=t0[b'T9֟!I O1}qѶ(?0u 7}|; |sGFJT2kT,d3\h<@#HP:lhv".lѕ:i˃Kun$b77*Ei 0`r~?PKFDz0word/_rels/document.xml.relsӻN0N(邐NrrE)зE8E ,ٲ7o5Ot~4Z@P7u/z}my$)Lh= k0g}3>3uH:㔤0t==U[v@yɪ4|1A?>]۵ܮ-UH0 x2~&"$1n!d _XfG"N-錦JΎ k`?9._!mh6Wq g PKFD4o}word/_rels/footnotes.xml.relsMA! Et]c0z+B(1_.{^y3n88L /$~ݟa]v7Cјш: șt*eWi-`%x .?PKFDOihword/numbering.xmlŕn0 { FiU[NӴC6RPhsBPŅ &ߎīEpJJf(ȣJ&o_SYKو*p{!򜡓1c] zVTBP)A ,+U֪*֐)8}?0P(RFxw]!If%Z3D!Yy؆D -v"{Ck6b+L7Ss饏y7{99=tKYcDvW7PVx"边[]uv &(,$,A,10$0a „I<&&Ma(6 :|Q?&/9|w_Q qg4Y6b/ǃoZ<$L )yQ!yPwo;vleDS)>ČQSu$T+|\璬j@wl/lwk_]JD vjI@O6- +hGjv6hBݚzZ-F@IO-{T;H o9嵝?ㅧ ( Q8ubDa'fYhK+_32/F8rhP{DC^銹0cR^U /QbX#iҞt:W('F@6iqΝ&ݍ^_#& ,v>~M8v#H;E!ufW@哉s O0QN,41 Dy! u}z#(bGyCGbP]k?dFUw2JYwkN7<j[Rğ@B@Ff)p{95R[:iNiNrӜ6iӜQ#4Msͩ/PKFD(*bsword/footnotes.xmlj {"xϚC)ٽ,}FL>~- =D<_aj!xDc{/>?7qr-5%I^IIIfAerŻ̀CB0a{A(V&la9o lX܋44DU^Jǭz_b S}{i54P?֛!S/ﯿ=/PKFDudocProps/core.xmlmMK@ 26 "< u2Ѯޱj+$twdUSժ X?鮼Ub`zR*O-^Eb HN*>QIG _2F4*O D$h6V]$Hg#E7\s+8s5_/h~/嫥IGRCg+ leIK; PKDdNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PKD= word/theme/theme1.xmlYMo6Wl+u:E֦ CDKl(Q $ qaݰ ð@ l_EeSۊ5GKҾ|8"1iܵ أ>u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPKDҟVword/settings.xmlUMo0WD9/%|Z-PCBMwǙG!KN NjhO'f2[u 2fz꾿-[{w3 :Sw@ [Q%LLJ$aT1& Rt+3HKV'BҝԴ7l+`yz2m͆&_^pw+KWk+ n dM5yN3QF/!p E Sw߸]r "Ã6 25".@΀㋠VkE BNIay,pɸ{W<_4oC}t qFjGFٱ"9X$ 3BkoPo™89ԹPƦBA7o)KQJry\Lita` _1jv * 8źڽJit<gwG~1b/hp~vGC3iϟ 0*m128wyT$>BXj"w i%K'oY+𚜺dl1 wQ˚\l"6ߠmAgR!1#\ ɲӸFEa‰ bM\uOqCh].jkF\b[_c jlhamhh[r,Dr.sj԰ BxQm5ϙ6!d(FV/}PKDTΜword/webSettings.xml];0DrOl(M"L$loBAA9FS6/ ,Js-GJo$:+bG)1!VJ)-R4 @`M'a:h}T LqkwWa gsZ^;PKFD ]$[Content_Types].xmlPKFD? _rels/.relsPKFD~Fword/document.xmlPKFDz0@word/_rels/document.xml.relsPKFD4o}uword/_rels/footnotes.xml.relsPKFDOihword/numbering.xmlPKFDa|9word/styles.xmlPKFD(*bs word/footnotes.xmlPKFDudocProps/core.xmlPKDdNFddocProps/app.xmlPKD= nword/theme/theme1.xmlPKD{H: word/fontTable.xmlPKDҟVword/settings.xmlPKDTΜword/webSettings.xmlPKmpandoc-3.1.3/test/docx/already_auto_ident.native0000644000000000000000000000021607346545000020132 0ustar0000000000000000[Header 1 ("anchor-header",[],[]) [Str "Anchor",Space,Str "Header"] ,Para [Str "A",Space,Link ("",[],[]) [Str "link"] ("#anchor-header","")]] pandoc-3.1.3/test/docx/alternate_document_path.docx0000644000000000000000000002647607346545000020656 0ustar0000000000000000PKSe?N^TM[Content_Types].xml (MN0by[%n@5B%zי=; $mPi-Hɼy+㏷dk [CLڻ>g/[|Uv'l 1T%b"%XrQJ׸AW1oa+qK[l8o52D+Q=!F: 8'MG¡N"TF|dbc)JVZyQ}Ui +HؚXR^g;1Z_:#޹;/yw397pGHspq,CՎuwF#;~#/k\4WPKd?NC _rels/.rels (KN1 ytBM;z+D4%.H\ /uiQ^W?{Ša8h]4e\\fIM٥J(ftX̞J:c$&2w41}+Z?&1397`pl), =E榶 RJ]EY yg/@J?, zK4FF?R-ڏ-߅ WPK5L/Eŀ}&word/theme/theme1.xmlZo6@Z.l[h=2mDE=0vXvh]&[/Gd&kE#(E."1ښqN|:Ѥĸ0AB#k.~x^(D@#~@zst"7,B^I} IuBi >cRM'+~apFnqp 큛4P:-Wohacx9/xm ,t,˳;s[ \ fRҥ*WcRqEJ, nq^fcgSb"/@K7kp"$@Gw*g^gӱ1B\m<+8K?@n4%@I{hWɄb"D5 gUAPm͙,$rM?BWUYq+&* SڀA=0V <UVR5k0ZgHr5DU&{f"Uk͜!R7/QTUJZaddt HV7=FE7P\ޫ{,W3kT7Y\ݦn];1&dK 2LN5/:4?3nՋ0sr`)/GZkwMR'9d;Z~GR@o0:u&-}Bue $.7kQcjpwRX-YPw@\ u &gLϗie鵋Cxxaב$FWCEKlRR[*BM`|Tuu@d@ G-SI_;oa#w-;5[Tߥ3)`K}<?:?lt_RB=W&" erM!KTz5njva/*cy j@{8<΃|AViMG,fNҌgY8:y+[ߎW f`،&ڔv&W_Qы[ dgձ ,SSU6nE7Yx=.޳!wF %m/=8mݏE,J,e]-I]m'yv*DJ F5 Rڐq(o@GV}:PKSe?N)word/fontTable.xmlj0oEcNa,PcEEatx%v(^Y(k`T!#zi4Iْ3FmmJ 5%p,^w[((iBW$ V3If}݅pAVad]҈VB~ubk KDgUiGh;!Fx+;a (:1F# l\8M#:Ǜc/,7hVkFցLq]R-p9ˇd- Tɢ^s(Cө ڣ^ -YIAIK:Gal8niTIa"FΡ⦊JM1C wg}']b e'?3?Ϗ%[e@ζL&̤kH/I23; X֌ yZj|pm*).-]قl7=,)*IYků )Cǎ]ђWnfW"Pv\Wf) u]pK~ʮ2D):dSx<>=t!3 ue'Q>w'@ܯ[D@'3S̀r >`N| v1RpPKSe?NK5docProps/app.xml (n!_w.8F]h[l] :.w|Lg{BTx\Q 'x F1q+vjA36~D6ָMOc6W O65pbk&rE5}+AI.U*(U~ k%xcJ]S@.)ʭ,_:F{<)Rp ܌5\G!+mȁoy-)+]Dʾya3t|1. <{,3ԕtܩP"+(gGb/PKSe?N!6Nf*docProps/core.xml &(N0_Z(e,~^ibw%=>` uƛ9מ{:֕ ƖZe!@ -K Fy*;0X\FDfc@%B5(`jgW֖m۠( }+_*\ اe*mOhX%t)ioj$OH <v5Zm+0ev"0$k #atq&y?b(LFq20gS? W)Ǒ4foM~FuUy%}|w%d47Ph̏N ɬe]KRNA4׷2W&2嗛TTiGZ[?7"_7<`͸eOff(Ypv3-G] Կ.ĶrS5lVpC7gNFꀲk:|/Vыtb5XMo^ӟ^t@s*!hA:SN@o@KND`0kP$AsLT` SA<M.aލ2\ǭcs/ p,V0=TS|f>2x::["UU P@Jb" w:dhb)Q2Bjdi@KyyKΩK%!T|RbdgǔuOCkẙ՟'}GsTScf9L5V;<ՃTMz S`wxd{,>@=L*V@t]Xz&u (Hw)wr !=[*:E LC#Ȅ04Z j. j*iTl. Nhdƛ7C#o<^2bps%2e3*(kKZ*!roIW%L|E8 #maURRB޵t?*g4߈|#ÀͰM#{`2xrӜo">S`BX 2'n*θ :Dۉ;aZ |32~A2~AS5f`g _.xB޶cVvζm!o[2𶅫4m!i[p-8b m!o[2ul 1xB޶-k[@l 1Nm!o[2 m!g[PͶ-dm xۂm!ɶd[2 m!o[2pl 1xB޶-x|ֶ-8bl 1xB޶-dm xBζm!o[2zGjuFvK()Y۷Eva{'.|:o<]oNr{jНn0h̢w𷋂p;EtE Ƥu1j{NR7Î ܭ{u$ *y鈽_hhg7WDl!N %61XD;bvNV+A_; /8Z#ЊC3BqrW8D7g8d9*8V"ЊC8\V"C8ȮCZq@+n!]qU^#iɺU[%]ҫVqpMdU[;-czV1:W:WB;WvőU#l^u)L#ӫ^őUʮ82R^u)>"b;WVőUWqdzeW^u)LGW]ӫ^őUʮ82R^u)LGWVőUWqdzeW^u)LGW]#+Wqdzի->Jԯ맙n1nۨA.Ud\4 XQʪg6OxYӔm7?u{Iwm@T*K#OORiLSābJfB9O>j1)"޾}J?V9|0 EyzpV0mYf,S_PKSe?N !yFword/document2.xml (Xn0~(ks Sá&40Xul6vG+NbZQZutBBJ?$$ :Bb݅޻T0-*N\*GP8컅R<< Ty^b(d:Xa_q R[ml#'3&JP^ ͂ivcխ;CfK\;\z˨@eh0eӓ%Y>IJ$AXˆpzSIjg =*b(;qaצn w x\ 6\ϦߐMm;;ᵒVNzU}s":2)@L@%r_ ,ۑ$ېlЃWJ+< ټ;Vc3g$=XXm#ho,hd&d CT?ޖ^9u뤧POG*͝ZYWxƝɰ&IhAlg&+m< #ʶoj8J05VQVP)͘lk@@kvj1BUC[0ȈNsȫE2x%pjص XA|۠mmPKSe?NDword/_rels/document2.xml.rels (AN0ЫX'NJAM%pqؖgJXp$$T"ƒ{Ɵ8W{*Joz*8yzAszA]HG :(%GMRb}5kleE(ey/y䝢>O7aDWȜֱEV >6QzAlq܂y ],fiK4՜ N1 *Iq',"PK-d?N^TM[Content_Types].xmlPK-d?NC _rels/.relsPK-5L/Eŀ}&word/theme/theme1.xmlPK-Se?N" j L word/settings.xmlPK-d?N) word/fontTable.xmlPK-![m word/webSettings.xmlPK-Se?NK50docProps/app.xmlPK-Se?N!6NfdocProps/core.xmlPK-Se?N R|Bword/styles.xmlPK-Se?N !yFa%word/document2.xmlPK-Se?ND&)word/_rels/document2.xml.relsPK e*pandoc-3.1.3/test/docx/alternate_document_path.native0000644000000000000000000000070607346545000021173 0ustar0000000000000000Pandoc (Meta {unMeta = fromList []}) [Header 1 ("test",[],[]) [Str "Test"] ,Para [Str "This",Space,Str "is",Space,Emph [Str "italic"],Str ",",Space,Strong [Str "bold"],Str ",",Space,Underline [Str "underlined"],Str ",",Space,Emph [Underline [Str "italic",Space,Str "underlined"]],Str ",",Space,Strong [Underline [Str "bold",Space,Str "underlined"]],Str ",",Space,Emph [Strong [Underline [Str "bold",Space,Str "italic",Space,Str "underlined"]]],Str "."]] pandoc-3.1.3/test/docx/block_quotes.docx0000644000000000000000000002757107346545000016454 0ustar0000000000000000PK!ߤlT [Content_Types].xmlUT Udux j0E6J(ɢeh4NDeIh&8NC)i M133£x]l m}X?+9F@1]_ c)D^Js!JR_LF? M+urjW?g=]k?aqnN;N<~ y/PKqVR WLword/document.xmlUT UdUdux Xr6}LA~ 9NyLڜ~V%W!F_-_҄aZZ{Kpr60[@%H*RsFƖH?m)Oa M Lo2HmA%_ۄ&_,hB XU}+OoFeIPE2[wqX£$8mYZ3o[DU]0]h<Ki?~gYΘ"Lm?yNҪ 4629"ql7>TǟĖ9A7EP"XKJKVr- .V4FjŌM5''RYHz&m}`_>{?=уG6P]qS}z݋_Rgto>C>&9@;< PbbSlā1Ni +̰!UL{wC1VFÅѦ, 80 cIvw.qLM,! 8 1Q(}1ݥ- .Hu05d@LtFIAw7[wP3M_EBU`fbIXōWXȨ1UhRrw"åHq&[bRQ:sط$"{& ̹{GQg:#)6WF%xB9K}uھMМ 铱0z&q+:q;ϻqC|Q'jfQ/ͷ.>}& }s~ߜ漬Ͽ%Ϻ36S2&ܐY`߇l$a! Hp UndY$Jwv?`sN/jrCllY uAi5.0'R㚥J5oB JpVhḦ=g0  Sbb5{&%ɵ'ۋ UZIi Qdi0 kqUsV95wj0M_3n3`h&ӢrC-ВшxjlZS+wH ջopM Gd٦|g&yͯ5}m+X}=Nkfҝg~M/hTxlv<>*yxU_8[q)Z<;jn,q^ٮK!l(>7z3fL`EfbdrGL[:wQp9N. $lLXgHI\?Jgbfs|Ebʛ]fӺz]Vx6%9Tw]Aڳ]PK!L 9 word/settings.xmlUT Udux Vo6~AI8BN5AU=Smq%R4p}wǏ~ KEY:$|;w??(xxr_˻}*eܭSWERg i[!^!X4 %O q{1wӞcB6!lH!Oۅ\a6/1Wec?`eIvmbǨۇ Y#N)RX)8 FmgDgbKaЮƕOF0yF8f=cR'9rcŌTM,W"*1#~[Q#݁ =R{K$aEzBB90:Vt7?Nw{ U. L`<&HEjLi82ӭD ZژoPC#3-jp!,*$QjTەZ jJW;EѪY5 nA4zdG jEM$k cDY?g@ 6x˻Fiv ^+s# +tmIړYQRBfg%D0.OK`u{: R'!u Mzvea]b$Y7|Znf15=C:{IT}7횮| 7eߥhKTwCc]8# YjFqPN}ڳO5~{Q;D/;FJ/As/=sGeffQ]woùKɶҡ U#Nzlbk?Pa6 bMmY[4bkڦ-* n]FP*0LV;h@VCz%/Hv` пu(5h[,5M܋j9[&c? qvɲ` X崱%{\ߦ,AVYX NOJ  C DB%sT[h$"acŅFRLÆ{x.9o$y'Lhd{Vҿhš,!f?o÷8ҟhFmY;vRR Pa{LbHrDH~9wʺnok] ,bP)lDH/ծz [iW  aQ=1~Cw8b4Y߲*Y*,_g"_BSRѩ`f *ib mvmtjE1Hr \n1^jeTd!D {n#YW-28-%Ο0 ZY%e"wkG^Od :20ͭ?(hf=I1֜d)0ƮI`ȡ6xn z"6n'y8"'MT+Ad>rKM~p| L ?<4W#4d];,"^i*&.ߢK.i2$WWt"-,u:i[}#=eEʪ">gaU]N.ڪKՍ`]z[O~ޥo^&|iw5/Ӏ$jaf nY7bꕲ1)j}usZ~U\Yq*da?PK!18gword/webSettings.xmlUT Udux j!{ 7 an.RhFgRuttK.ٞTt>3+o 4ZpFQz--z(e~KbI;U:&T NdLǰNm3RXbes~b- VQj.^IDOi謵h-T@q9i<\AΨUbNuT d_`6 ^sadw/=Q׃鹯+%}%5p{wSck4u:;wXq\/Ӈb,ʥ=PK!#Q- a|word/styles.xmlUT Udux Ms8[!ѧe;5Δk8gl YIBKRv<~(5Aa0(Co_~3OR!ؗzߝ4cqB+O{~~yf!O=[fCK\X}I21yG,yZ2ZLE(h0 L҆" O_G<Ό}?"8]UZ^^d4Uœ1o0 EOd*{ՙĖWnG8>crDL7T8n (ʨ׾e[tY%r\6HQ}e"){q{^مG@,X|2\8K,xP T{y4;O~yUl/k-4lN?՗,<&t[r}US4WܳKεa[ǫͧW{ã;/ăY8 zogbGF+?"ߗ<`kb/ױ{|<5. W:kocG6bsc6,Ƭ~əNpqFEZm=s!zGvtV;ՎjG'oӿzG"TPq,jDs,bCs,ZBs,RAs,J@s,Xͱ)I`[{xpܸg7=ݸӹpvNxnn⬳Rf̸i,V,SON`VLĝi>3GQV]ÐЄau {i`0+^T|F5Dh р4qj Ѹ4q+hAd!_u  eJf1fj})z,a [-=}J zsچD7!rz-uݡQk#׆G$ >e^3<m`u6uEɠK_rhmemYeHW ZJ& ߼xʲΤktY<֪ZK*Z-Y*Rh?՗x٪sC&b]=;Atx!LFdH??ixD RL29ID$ C 7:, hh /8qƢUH-_T!X ޿Y"q!*Q=* /#92ufl2a}`u!KSa=̣nɣoP&uH7%lK p)e ÆG_1 })yFqTNdM,vea(%ѱc,+N{.:7>d>_0Ol|?Yr'7[nW1A˲`1;ú1O3b 7SLGxrxرyV:m˫:bV ,n#|OO!8!iIظɛcQ6؊8NB+P3WUZmbX1|Oh^-WT9Oѓ[oDB~Mr6P$L[sg]P΁L _F.7ZD[-J߬6>k `c7 `}AƂ͗A ;ڞWDCε^XcCEz/їn5-SsBrbQ@5`:}53]Oմ3o PK qV_rels/UT UdUdux PK qV docProps/UT UdUdux PK qVword/UT UdUdux PK qV word/_rels/UT UdUdux PK qV word/theme/UT UdUdux PK!ߤlT [Content_Types].xmlUTux PK!N _rels/.relsUTux PK!dQ1word/_rels/document.xml.relsUTux PKqVR WLword/document.xmlUTUdux PK!!Z,1 word/theme/theme1.xmlUTux PK!L 9 word/settings.xmlUTux PK![kdocProps/core.xmlUTux PK!Mword/fontTable.xmlUTux PK!18gword/webSettings.xmlUTux PK!#Q- a|word/styles.xmlUTux PK!q 'docProps/app.xmlUTux PK qVA(_rels/UTUdux PK qV A)docProps/UTUdux PK qVAI)word/UTUdux PK qV A)word/_rels/UTUdux PK qV A)word/theme/UTUdux PKQ*pandoc-3.1.3/test/docx/block_quotes.native0000644000000000000000000000315007346545000016770 0ustar0000000000000000[Header 2 ("some-block-quotes-in-different-ways",[],[]) [Str "Some",Space,Str "block",Space,Str "quotes,",Space,Str "in",Space,Str "different",Space,Str "ways"] ,Para [Str "This",Space,Str "is",Space,Str "the",Space,Str "proper",Space,Str "way,",Space,Str "with",Space,Str "a",Space,Str "style"] ,BlockQuote [Para [Str "I",Space,Str "don\8217t",Space,Str "know",Space,Str "why",Space,Str "this",Space,Str "would",Space,Str "be",Space,Str "in",Space,Str "italics,",Space,Str "but",Space,Str "so",Space,Str "it",Space,Str "appears",Space,Str "to",Space,Str "be",Space,Str "on",Space,Str "my",Space,Str "screen."]] ,Para [Str "And",Space,Str "this",Space,Str "is",Space,Str "also",Space,Str "a",Space,Str "proper",Space,Str "way,",Space,Str "with",Space,Str "a",Space,Str "different", Space, Str "style"] ,BlockQuote [Para [Str "This",Space,Str "is",Space,Str "called",Space,Str "the",Space,Str "Intense",Space,Str "Quote",Space,Str "style."]] ,Para [Str "And",Space,Str "this",Space,Str "is",Space,Str "the",Space,Str "way",Space,Str "that",Space,Str "most",Space,Str "people",Space,Str "do",Space,Str "it:"] ,BlockQuote [Para [Str "I",Space,Str "just",Space,Str "indented",Space,Str "this,",Space,Str "so",Space,Str "it",Space,Str "looks",Space,Str "like",Space,Str "a",Space,Str "block",Space,Str "quote.",Space,Str "I",Space,Str "think",Space,Str "this",Space,Str "is",Space,Str "how",Space,Str "most",Space,Str "people",Space,Str "do",Space,Str "block",Space,Str "quotes",Space,Str "in",Space,Str "their",Space,Str "documents."]] ,Para [Str "And",Space,Str "back",Space,Str "to",Space,Str "the",Space,Str "normal",Space,Str "style."]] pandoc-3.1.3/test/docx/char_styles.docx0000644000000000000000000004321307346545000016271 0ustar0000000000000000PK@!Qr[Content_Types].xmlIO0HWj#TkOCȞnIn)y}[ML!DlY%`Sڎs>|NYQX%*g!g ׽ bBjsV"Σ,9* F 1B~1VKg,X{n 10,y\Q9WZ 2|.@Vmѥ+MO,7>=Gk yd C |ɉ!Qvx(vIT٦bkXH<Ĵf.1( Foa~ܡUH;͡H#ˡV4$AwټoPK9L_rels/PK@!' _rels/.relsJ1Ͷ4ۋ0&dEԅeq>If9AR6x˪A^c}౽[\Ȍ<)8RMs~~ , g=s2*D !0u2~䪮d̀f[ ml !"2ؖ]D#V`/Q2i˿ j z!31-Oi4y H󕞳Yø߻'vxZlPK9L docProps/PK@! qdocProps/app.xmlRN0WYgEUPB=I:eNHӼ77φW/aWo7M]Q0Ѻ cc]}R_opc̎J%9])U@#tGdW뜡hG ΚB+SdO"XϊW/UQ<$zZG&{yFFߺ {-mgAhXs]awYwXb8$@oq uj oix3 8t0Z*SRo,F>=frqxՁdba!6{D^5Y^sZ5 JmzC'V߲w<3tsK py%Rh8=RҌT<<.f$G0a˺¢,;ð3L"b_u"aX\s`A}]3TՔךi%#e?::)2rt"Uȶc?AcŪJ.+?  qX}Y7ؔ=dJմ]4$LEGHE.K|Og?TZخ'cm&30y&T@8?yI.|#"rl^%-Ӹr &@ʇW⿑u Aͣpg՘|]i3d0L Theqy6d!jJ иLW XĿUlE K25iR)-kt%Re5Nu 9Tİz2j44a^n6v2cDPqʺft՗y)}^3'K бs\} ([W/ 5Py +RTE7<;(oB]Xg/SԸ_&yvTb=(a"4C2q;-K/v}TһՐR]y} t 4+A Uq*7u1 !uCHz=uP=]kR; >h/d荂ShF?2Kx|xD@86 ђn')5sJΧ9ikMKb*T]h㱄/nOF~L}b=Ko5HV(z ljfij󍀍/giK4cPZDeխ>ԣ |.`];Y[hf-/9Nݨ7} IaQ]vSZ"e?ʑ=W$[Hj֥.B>< XF2%^v ,' ˖ҙpPc>AV AogڙvOiw°Ɍ'iĪjbGHȤ %ޫMUdk[lubI{U$9t īP|c;cێnf1N۩Tdq'RK1"e ?gOmxtLk>hn6n}_[)wΰ;>"GA1T?jwZo]Գ{ۯ[?wԅ÷_^p6J8Kɪr":y#&eK +1ICnzxڦtJp=W~qFvo_[d 9gNvaG)_hk]n=<9Uu1j}#LFG^LVX ӳj`5Wydus(oaJadz H80g$ f؂b_LjHU䝌 ໝQx54eH54nϹXn,LrJ|ҍZ{刮7h .\3w)6X1nplhUyxQ (WLhkx3k掠c`<$;"8[ a~+J.uDwȥ /ngC3j)/5Zlymv6 7ۛRu]ݳp^P0U,$/fQG<"?;8rG4Ћ9["Aʞ1Xq * TNujߧ>d# y*8_\HE;COX oM,m8+i} DQsm*Rtq?t}jKM7G~Q}0eR}V?F.:JDA)6Y y2`݋ƦyޖB;YEx7EIBn1~8d d[{B.-D`g3承b~E/Ҋ-kR\S{{d[tz?O2b]6}VtCbw&hJ۟5VW t* AV[).'X-.1uUSOSXۥeR}J69ƪ`7 O3k|u^nSkו" BSg!E#% 'ꟛlɾU yp78jđi' 0Z:ʞ8^p!htj<AVdM+tW_LSV6٨|%l.݉ճ6E 9C[uh3b˿jt҇z/=Q5d/7B8! {S3D8 7?}O׺  ެ/'i6)>lClX]g 7yZk2\9,$nD& X+SQo`cn9׎T; mOe݌%&AHVusWu^ےj Ysv~|R[o'%pzM~"TxYfտj1爁6fVUH[%VrK'RۏBm5нq MzK02[Eِd`7mT } bmmC⍖a[h_adoq#Se YN1ۿH^XGZ!9 T=X:vt=޳!훪$ךeT \7<;y._l^Vl]g%LHC2m!y͕TgMؐ*:Ƚ3v5!7 3O/Y"0 `Z"`~ͻ-Ì(Dp*'0֠4t vԱAAiC<{aeV))89ܴsrr~z&0"Woqķ5-V5x6v@{BĖ cC"cm%/LV; OexA7 S{j/&219}>wN9½ڡc匲fА1j!nXi!6T>Tpb 2Zˈ&e3F(.V^m^k aYCsmޟlKlz_7r{ ^k3-k:v=ds)({S=o\Sx cSmZhw`ܯ2n[9,@)G~ ntCӪF1j͝6-1%,"Uq}\%yeǷ#Rb+YX\A݂UrNHe4#t%qePDS[zuY#;& PJ@Mп^L7\oqm[ILf +Mz8l4 -b[dOZ[STC;d+FgZad֐vذSa`S^]ӓE_v>yB)~Qljy76eS>*z%jƤw'2>̌͌]RCi8 vpklS͛dcÖvmEt^N /[Dw20 d{ WKRDu2"Rwr+՛\ҙ}9qGy#2) gO"iIsRnVR SZjByvck5v+ޫGw~?D\Cfׅ&\ɖH31 "Ri5{x77PI-֎2X !ş\h2:*çPq݂x^s:h׊Nw1駚*DR2B7 d8 ~9H'z? 򣩅Scjޯ|[¡,&cY`G]V kf)}{̈xlQ Ac;Ā~s$0]2kƛWs}e̛++ m#&m)?%'~oSJ+fUƛB+Ɓ맚*ͬ\0z7$3l o}&r&]ղ5j{{۳D:T/n=pdwRm'2HOs>9(?\8⌴ػ_dLʹ;g0;E((?-kfo޿7PK9Lword/PK9L word/_rels/PK@!huword/_rels/document.xml.relsN0HCw@AN/+qvubۑ1BgV;YZ/I,< A+]mi}v I aK8: ,NOKmHb j k4"E'y#(J_VQ!eٜ~{ɪW9$d;['_ Z`BBsҘlbJw<P1)A0~1w{[mc GA]ّzw)J3?_WϚ;PAyo`{PK@!B"word/document.xmlX[o0~$P֡P+0 y2C,۲2w zQBhI_ws5՟9k4|{EHrz=6 Nhje L#8& ҽb%LQD12BoK*֠;k.ρ`N)#! H%HU*S"CQX[MJ-+`xlA* Մd!rS<)€:rc`3@^5fl&nAQ(a؄~X%`:bo hBa_gŤ|q;wͷwJrFvXend1P@ \(`<،t'Н"Q:Y-9v`0uN.1SvP07F@b؝&2Fjכ\zo'Rfc,i%`TD&!ځ?ĘCceL!Y,V RT8XS9JFxeuu" NAb%@NSnu%PWg!cOO)xN9Be0dϥɉLr2jbG-'7Zb6jIkœ"A(ԽxF3kln_$-Tˡc4C?_l?ZKLqNm>5nn-)St9hwۜCo|53k}#"n8Y>t;5 63ՒԿ]cDf$|HS.SOKuX0 e3r( ('3j0< FY?&PK@!kxword/fontTable.xmlTn1W;|k/,KUxVr%{hꡕz WwTRC!gfo+Mu F em~BT4gh<v=kF{~ڊeh}َc\Q0%P,UԎbEIyƌ*! 4lalFXn6;mf찴q@BohHCƙ7@L}@ #%QXHK"ԩfmM=VP(6MNpq)_xuo .rFě /g5}F{T 喦JrLeV(|1'!{o䲕دǞa]<` ! vT'!ߵ6or}[.zށ·}-Nh˫PK@!Vword/settings.xmlVnF}/\Y-K9Pla5F|Q[ K1w*B>yxv>~br\u4 RW\K6&1U1#ͯ|hS ΑP eSYs&l6i'31RK/8Kx i:jPC%jw·z% BSe#A APZ=76d5!RvqVcqN{>.Zz )B\%z}A#v(|wع4SO@.d>J#+nHQߴ65%]+j`wO':}t_rXl {0<1IpupJTp: _ ?}OJTWY4 NGE ͈:9s.dFNF2?Df,evaFBEBDˌr]w$MGUr$dKQ̤nzG GPbdJWƼ-eid͂ IfY<(hV.eUq)d}Y_*x:%*bP_g\Pbdn+b͟YNULONѪ\/VmG4/rrR -F NidT ;ԲW[v zVӯ#..F.N]BJMb"E#iZ4RjEcíZ4sED18NUzRW~pG$YH'Aq 6({6tZYfi1YEm?PK@!>G.?word/stylesWithEffects.xmln8wtzKب[Y]:\mH Ins{JDBWέ M\LޱO2̛d:P-(jrX ZM}f|^ٚؠa?WB?︦\QF8>6wsYv@ Vh:~OC7G .ir.-@8& aPMmbr{Y7c޿=n<p1oǼ/ 7fyX8 7cy@8[7cy@8}G@A0oͼ,4p1oǼ pr7vyX8 7cgļPB3o Ǽ p1oǼ wn7cy@8=# 7fyX8 7cy@8 w;ϼ,pmD=ҩyXy9Ddzşx` bkMбWZ;^w; ه~M^}'̏waYO&:Y5'fuT4@SyUx e D6R.a3y;NO9;)~pIS,C,?3?xhŢ3 __6QE4soτ"nc^@g7NՉxFedv >AQǑ*ʄ*$F[ƻk!~w>3#XXw~m1'*aR V|ֱ߱ع[#5˩ *PK9L word/theme/PK@!!Z,word/theme/theme1.xmlYKo6w toeVuرۭM$niP@I|úama[إ4:lЯ)ΣM6IIÈ}"$qr.,Db4ABBRnjǤmMeB\m+T*Ym2yBbx6" "}ozbGqloF#h֧{ b%]/SdXIDv@-9TbX*xжjDz/%SKh5~) щ`X:͒=翈zݞSRg췜Δʇ5֬5jqW+ \j+͍zߜE;J+ ՕfBFt22%d5#4f([ˮ>Vr- .V4FjŌM5''RYHz&m}`_>{?=уG6P]qS}z݋_Rgto>C>&9@;< PbbSlā1Ni +̰!UL{wC1VFÅѦ, 80 cIvw.qLM,! 8 1Q(}1ݥ- .Hu05d@LtFIAw7[wP3M_EBU`fbIXōWXȨ1UhRrw"åHq&[bRQ:sط$"{& ̹{GQg:#)6WF%xB9K}uھMМ 铱0z&q+:q;ϻqC|Q'jfQ/ͷ.>}& }s~ߜ漬Ͽ%Ϻ36S2&ܐY`߇l$a! Hp UndY$Jwv?`sN/jrCllY uAi5.0'R㚥J5oB JpVhḦ=g0  Sbb5{&%ɵ'ۋ UZIi Qdi0 kqUsV95wj0M_3n3`h&ӢrC-ВшxjlZS+wH ջopM Gd٦|g&yͯ5}m+X}=Nkfҝg~M/hTxlv<>*yxU_8[q)Z<;jn,q^ٮK!l(>7z3fL`EfbdrGL[:wQp9N. $lLXgHI\?Jgbfs|Ebʛ]fӺz]Vx6%9Tw]Aڳ]PK@!ʳCword/webSettings.xmlQK0wP)k _PYzm\eu r\@!P2/TRP^eL茧:Ms}-$?9%pVcJS5pNi$)ôInK'}SwK{g!e^G"RM͗h3ndYAq)oAl$>ryX^UzE@4WюRk,aG.?3word/stylesWithEffects.xmlPK9L Aa:word/theme/PK@!!Z,:word/theme/theme1.xmlPK@!ʳC@word/webSettings.xmlPK^Bpandoc-3.1.3/test/docx/char_styles.native0000644000000000000000000000122307346545000016615 0ustar0000000000000000[Para [Emph [Str "This",Space,Str "is",Space,Str "all",Space,Str "in",Space,Str "an"],Space,Emph [Strong [Str "italic",Space,Str "style"],Str "."]] ,Para [Emph [Str "This",Space,Str "is",Space,Str "an",Space,Str "italic"],Space,Str "style",Space,Emph [Str "with",Space,Str "some"],Space,Str "words",Space,Emph [Str "unitalicized."]] ,Para [Strong [Str "This",Space,Str "is",Space,Str "all",Space,Str "in",Space,Str "a",Space,Emph [Str "strong",Space,Str "style"],Str "."]] ,Para [Strong [Str "This",Space,Str "is",Space,Str "a",Space,Str "strong"],Space,Str "style",Space,Strong [Str "with",Space,Str "some"],Space,Str "words",Space,Strong [Str "ubolded."]]] pandoc-3.1.3/test/docx/codeblock.docx0000644000000000000000000002042107346545000015672 0ustar0000000000000000PK]D ]$[Content_Types].xmlN0E|E-Jܲ@5*Q>u&_g*h̽WL; 8t˜}_6-n&󽇘P9[!GΣ\1s,U*@z KKw="XL`*֘sK,yjj ﵒ̛*?:@Ǟɍ-?hM6=q|=XSAD7aHo](HĬ*%trmh$}pb$=_$vm0EZ$lFfس"Xh;^ #'I%)x?\w>ղ6kƮ5 ʞ~kdIwPK]D? _rels/.relsJA >Ő{7*"^ЛH}0!#ZGr;R|̛ GcVw5R&=t0[b'T9֟!I O1}qѶ(?0u 7}|; |sGFJT2kT,:-rCVt):fvu{8PB՟9`R=mW0NK4-i0`ƞ1( ^6&2z%A9ц7NxIa-^v-Q#)9`r3uH:㔤0t==U[v@yɪ4|1A?>]۵ܮ-UH0 x2~&"$1n!d _XfG"N-錦JΎ k`?9._!mh6Wq g PK]D4o}word/_rels/footnotes.xml.relsMA! Et]c0z+B(1_.{^y3n88L /$~ݟa]v7Cјш: șt*eWi-`%x .?PK]Dkgword/numbering.xmlŕo0+HP,(P--v1\{i\ZtY3yLUQcm/R6"c dHkX)`3#$-6_2a*[;iq" CvKo1g>Ea_u_80 ghJ,ƿԖѴQ)3$|B&@݈P .  9YaE|!s U[Nwj4DtnPL_^ 7AuTw9T5_ `8*F-I/J.vwj%f{B}:ᦨnTtJ%d}| 1v\u+x\^%Y}]LQ}qY) vjiXG=z@Úh^g> tCvq@ [@/B/XƝrVP^3^xJbʉ«ה(FI 3>Ix8e_aiZ w-#%K\훣&{-Ӗh.@+)ONۙ$biXX?оz^';T0 q~Dů[n!įj=LJ''N4nPM0*8iߵǭ,{|}6Trlۮ)k;e}uT+&TC(_1Ncߝt:1. ۽=l IC*м>;Na{Wj<\ޯ qԯk)azKvZ)$xl jv뎨/,D";{M= wM9}ó-gHqh2n0̳*\=8/WMc>a)r4U+,V'ie괎h߫A&lPcڅyS/LI/DxF?5O^$(ΐCHw=ioPdO(dH(gƴ16 %Cyr,RiM: Ge~- =D<_aj!xDc{/>?7qr-5%I^IIIfAerŻ̀CB0a{A(V&la9o lX܋44DU^Jǭz_b S}{i54P?֛!S/ﯿ=/PK]DudocProps/core.xmlmMK@ 26 "< u2Ѯޱj+$twdUSժ X?鮼Ub`zR*O-^Eb HN*>QIG _2F4*O D$h6V]$Hg#E7\s+8s5_/h~/嫥IGRCg+ leIK; PK]DdNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK]D= word/theme/theme1.xmlYMo6Wl+u:E֦ CDKl(Q $ qaݰ ð@ l_EeSۊ5GKҾ|8"1iܵ أ>u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK]DҟVword/settings.xmlUMo0WD9/%|Z-PCBMwǙG!KN NjhO'f2[u 2fz꾿-[{w3 :Sw@ [Q%LLJ$aT1& Rt+3HKV'BҝԴ7l+`yz2m͆&_^pw+KWk+ n dM5yN3QF/!p E Sw߸]r "Ã6 25".@΀㋠VkE BNIay,pɸ{W<_4oC}t qFjGFٱ"9X$ 3BkoPo™89ԹPƦBA7o)KQJry\Lita` _1jv * 8źڽJit<gwG~1b/hp~vGC3iϟ 0*m128wyT$>BXj"w i%K'oY+𚜺dl1 wQ˚\l"6ߠmAgR!1#\ ɲӸFEa‰ bM\uOqCh].jkF\b[_c jlhamhh[r,Dr.sj԰ BxQm5ϙ6!d(FV/}PK]DTΜword/webSettings.xml];0DrOl(M"L$loBAA9FS6/ ,Js-GJo$:+bG)1!VJ)-R4 @`M'a:h}T LqkwWa gsZ^;PK]D ]$[Content_Types].xmlPK]D? _rels/.relsPK]D}word/document.xmlPK]Dz0dword/_rels/document.xml.relsPK]D4o}word/_rels/footnotes.xml.relsPK]DkgCword/numbering.xmlPK]DY.word/styles.xmlPK]D(*bs word/footnotes.xmlPK]DudocProps/core.xmlPK]DdNFddocProps/app.xmlPK]D= pword/theme/theme1.xmlPK]D{H: word/fontTable.xmlPK]DҟVword/settings.xmlPK]DTΜword/webSettings.xmlPKopandoc-3.1.3/test/docx/codeblock.native0000644000000000000000000000044307346545000016225 0ustar0000000000000000[Para [Str "This",Space,Str "is",Space,Str "some",Space,Str "code:"] ,CodeBlock ("",[],[]) "readDocx :: ReaderOptions\n -> B.ByteString\n -> Pandoc" ,Para [Str "from",Space,Str "the",Space,Str "beginning",Space,Str "of",Space,Str "the",Space,Str "docx",Space,Str "reader."]] pandoc-3.1.3/test/docx/comments.docx0000644000000000000000000004132507346545000015600 0ustar0000000000000000PK!إͣA[Content_Types].xml (Mo0  ]XEQa[vD'$Q?Q i4ŀM}ճw#l1T\Fcæ..DIZGW\-Q2-xK8Rc6mdTڀ\K Ђ ^]Cvg~ܑ$pY?ƫ*Fg"`sY%W9ykc Bth"ou5(nU_s|dA\Y/sjPCs1 !˄wۄ136z7{i ~':i{ 9zI'x$HHi1JOB@031 ʓ}0 |4Br P#Ճ9qNwҞmʼgəbiH8Mk<:~x`PK!N _rels/.rels (j0 @ѽQN/c[ILj<]aGӓzsFu]U ^[x1xp f#I)ʃY*D i")c$qU~31jH[{=E~ f?3-޲]Tꓸ2j),l0/%b zʼn, /|f\Z?6!Y_o]APK!2*9^Dword/_rels/document.xml.rels (N0EHC=qR<Դ@u&iD)K6} ^ΙhFj/A]&A#_,@afk.ּ9YF3j.9׽fU \Ao͜~Hj)#wT_cuaw?_PK!˼uword/endnotes.xmlԔn0@#?DCUD*#vU;q!!:OEd;q+]˕LQ4(`]^l&w(ȌJE˟?ud&c6Ii tL;eUTP9,pFQf-['u84̕مJO㯼lǨUF&b2$]6n=%q[`5CJAI[p=](?W^] aNl3?Og"co樹kG]7FUzh[6qid  lwRZBF0-'w``&8exIipۂnFػpeO`o615IUϚ#QjB0"cp`PrY<|jE2w`Ppɬ<ZS6\(p |08}L#_S^?ʎ:>/@_}^}?< t!N71M91ha nM#SXsHCf2)6}Af[SJzYt=K,샳 ml-TwlsȠyȔHN؈>t,= z[CrGjZ]ÉFPۈ]У澏L\"b* XÄ=(bɃ9 s!3!B DlnA{<1L )Ց}:cLq؏D.QnQa%Ae`5w12}޾#վ@m D8'c'8=Sd{.շO{!˰uG6ܺxkw[Hn tto/+V⪮$[cLȁǕs9p(UE-,.3p `p*"pq0\; dykZqS],'ri [xAɵ+/rKO2Q /wb}KpV3I m(5YC2!f^EqM[lE!pqbUyIGb>+(ʒ֧FY&[Դǻ;5V+7XҽuB붝o hV2jV9^Ksqާ^j&\}y]Ut"G\ Tk.'8*^k_AɭRK]ϫW^ʠ8zC`LrMt:_]FIF$}/PK!WU(customXml/itemProps1.xml $( Ak0 {j7K)k;Cc]]GI lgl9wxOHCÌ}rXʵ." QV"`mص2sDCS?8|뢨ʇ`U('v̳r+7" q6 A hdX mv=u] Hs6T o͒wp+h\uԮr>65Z+PK!﯑ word/styles.xml[sۺ;Sز|I2ĵD3EBjPI*ϧ/%(.3}%jwb/\%\QH<]_z3 "L0);=|ۯ/)ay inE~wpGK bRq.UXȏ`fHag<`>1fBd,DK+cڣu&"rWI[<1cZ(Θi4VpՀUv,%'~EMRcvs-"߅ylYBV\n.ҜE֍KO(//yGOGoT%acoS'W3=٫2<0;VvwI7# 5>=TЄD>:y[}Q 70h@˄7-U G=xZ #ݖ]E&3|V)qRroZg"T?9,HψU˭ibY$m\M$,T@0EG"w+TCj:yN_jK51Oc"lPqjDsbCsZBsRAsJ@s8q)SȕVO?$q|?ݏ8k|p_)HpIFLb56И᥁ 4fxa`ŌEF)C#rO* o6oHo:ֱci('7f4 peV۱>c۹SpOqLITz"WryJ\5H^5H`5o>i3ͬh&4L6vbxmpͳLX *#߶;e D=$e"ai2Y= &]$,#NLfKH?0Vj 3p=x4qj$A܋*3ch(ĊiVN YOD{{A`6yWBT'Yˆf/ >de˦zpç )<<%n6pT;{yΝPyT[wxgx"|9yP$USQ/ah#1Y04*F `:le:l:%h `OtǂQ噆Q噆Q噆Q}s9 ;XHt`!a`ebFiy7RQ'GlF5Ţh$Bm8ڲy>3}'.%aĖ"Y'm/E0]֫6peU77~6O,UQx3餿~Layyr;KnXmiuڰ0{hMk6}C̽)k*])o["+mK0<}mKp<t.Rw 3a5Z[]ce=52[]exyNK+-™Е0Vp 7hnB }&F#F j PCW?j 5lg7+j5Dʰl!d'?j 5aC PC6Ԑj5DyB dt!jHB 0(PCTW*J#Ԩ[Ie; [2,kj"xVK0VUqՒ47o܄atPtbuvBB/T7j\ 5Z 5Z 5ZrW-W-pvB:C:CܡUKmUKmUKmx@vbC:CܡUKmUKmUKmUKP㪥P㪥P%wqR[qR[qR[qՒ3Ըj3Ըj3Ԏj&/$?.L=ۺa&.AjNI`^Ie6' !l*Zʶ"$GS)m< ;;uAkwӞ.;C2j5i?|i6%Ѽi3,QrKOakv4a:>7lsgzp)?9]>ޜvRCC=3\z"~>to(Dnv3Ms,Dϼ~،9Kv~~KaF=^ɨ<7嵿ſG`xߟnmrK=c3^7Gn};Q@FC֙S󀻎"kcLϝơr6{W\ g~ιVMFq7.ZƓ0ڼ-苏C{l!XVw6rNƦ(hwt ^/-/¹y2ˊ/~5(kݼv #vaދkI#Teʺ^/ȿRJ25ot[E7Hk9m7妡z5}-d^ɦlB Tn#UzW"I7툽gXf?WGf tx)22) `9֍c9}bummve],zs90?̕z_^m'tjޠ(~:j mw/?PK!i!docProps/app.xml (Sn0 ?7JvEŐbm =k2 %Abf_?N"r {F TK+"%IЩ4Lc`le:#[u$xN$bĺUQi˓|ŧ Z7OZOK߁~Or. FEu*gw#;,Q6 U&;},I}-YC%bGrȆ ZqN˦&ະ;džΆ0= V'v.{]P$֥bËޙ9zxIP<2绽&'lsnb;bF Ei;@};'ixrq7׏օPK!t?9z(customXml/_rels/item1.xml.rels (ϱ0 hoPK)t;JGILcXji߾+t(QE]1hjP >N~j.G{J D60o,W0H9X)ctl'_uݓ|P=;6w#w Ev d*yB1ߪ kPK!K4word/people.xmlN M|8cup /ҕuoڮS3}Z8/d$$C.6#o[Ld7,"O3R`SJ=/f~%wSBQH.h.Wq↓.G;fjI?i`fnK5s ݲ 7RɰCv|3` #3i )ig wn^ia^:_J;4\,H!j}MϫʱxKҪs;1OH8dbD3iF]&<8Hj;Gy)<]o 8QKGoM<6*=)6:.֦vԪe.:>ed|9[|PK!5eX(customXml/item1.xml $( M 0}w9.\ BBn8@~$Ao 'r^FPK!)ϓword/fontTable.xmln0' !MJ6KJ.ǀ5l#',o!lh@ aTU&Bs޲hrIs8_CxFJ4 B1Zh,*bǮFɍ;1פs(&%_ )ZQ!h(e GZs1v[[YUO1L@JrknWQ8=IUP<}*lS|\I0M’Urc/Lޞ wy, ]3%1FtZ:^=]TWY`a#^IDI0xXI~QL nĭ=g ;#/R &x6Fbz&f53ȈKī?,1$ӑt| ^A_(c-d>9>@E&WYd-]2 Yb:f` PK!1u1Bword/commentsExtended.xml]o0?kA ͢xd@#H~Eď-1WsޞCdc%JSCm`EBy7.OP!8 h0L* `RG;`*C 8' >X -ҲoCX ؇/&ZsķH# ILb4SAz#{.QIWްQ!(Z4CPm$ 7u" Ω<_Q[%hUqB g=FĊmcQqRc:f!ρJEr` Fi9ڒOuw`|y5I Ȕ2YL/i:L"I\?ra594+[`/}h8u <4wyo87f)s^w/PK![m word/webSettings.xmlJ1;,Y-T>@ζL&̤kH/I23; X֌ yZj|pm*).-]قl7=,)*IYků )Cǎ]ђWnfW"Pv\Wf) u]pK~ʮ2D):dSx<>=t!3 ue'Q>w'@ܯ[D@'3S̀r >`N| v1RpPK!zdocProps/core.xml (QO0MKG;D15<Mb46m0\ lS78TFOI2`$-Tz5%y|E"\K^ S$"63WQ0iL6J@P\WrR _26%x.ƶ3RNihRP(&YijT~g,z(vjP4LJ檱<"g_ |%!7.D ypZ= *$C/ NY޲]pq S[#OXtyv(L)mgznsY28f׋!KqGboQX;8E2J}ANS_PK-!إͣA[Content_Types].xmlPK-!N _rels/.relsPK-!2*9^Dword/_rels/document.xml.relsPK-!,p  word/document.xmlPK-!˼u; word/endnotes.xmlPK-![dword/footnotes.xmlPK-!R%#word/theme/theme1.xmlPK-!ʅM word/comments.xmlPK-!Ct , word/settings.xmlPK-!WU%customXml/itemProps1.xmlPK-!﯑ e word/styles.xmlPK-!i!#.docProps/app.xmlPK-!t?9z(=1customXml/_rels/item1.xml.relsPK-!K4C3word/people.xmlPK-!5eX 5customXml/item1.xmlPK-!)ϓ6word/fontTable.xmlPK-!1u1B8word/commentsExtended.xmlPK-![m 9word/webSettings.xmlPK-!z8;docProps/core.xmlPK=pandoc-3.1.3/test/docx/comments.native0000644000000000000000000000306007346545000016123 0ustar0000000000000000[Para [Str "I",Space,Str "want",Space,Span ("",["comment-start"],[("id","0"),("author","Jesse Rosenthal"),("date","2016-05-09T16:13:00Z")]) [Str "I",Space,Str "left",Space,Str "a",Space,Str "comment."],Str "some",Space,Str "text",Space,Str "to",Space,Str "have",Space,Str "a",Space,Str "comment",Space,Span ("",["comment-end"],[("id","0")]) [],Str "on",Space,Str "it."] ,Para [Str "This",Space,Str "is",Space,Span ("",["comment-start"],[("id","1"),("author","Jesse Rosenthal"),("date","2016-05-09T16:13:00Z")]) [Str "A",Space,Str "comment",Space,Str "across",Space,Str "paragraphs."],Str "a",Space,Str "new",Space,Str "paragraph."] ,Para [Str "And",Space,Str "so",Span ("",["comment-end"],[("id","1")]) [],Space,Str "is",Space,Str "this."] ,Para [Str "One",Space,Span ("",["comment-start"],[("id","2"),("author","Jesse Rosenthal"),("date","2016-05-09T16:14:00Z")]) [Str "This",Space,Str "one",Space,Str "has",Space,Str "multiple",Space,Str "paragraphs.",LineBreak, Str "See?"],Str "more",Span ("",["comment-end"],[("id","2")]) [],Str ".",Space,Str "And",Space,Str "this",Space,Str "is",Space,Str "one",Space,Str "with",Space,Str "a",Space,Span ("",["comment-start"],[("id","3"),("author","Jesse Rosenthal"),("date","2016-06-22T14:35:00Z")]) [Str "Do",Space,Str "something."],Span ("",["comment-start"],[("id","4"),("author","Jesse Rosenthal"),("date","2016-06-22T14:36:00Z")]) [Str "Do",Space,Str "something",Space,Str "else."],Str "comment",Space,Str "in",Space,Str "a",Space,Str "comment",Span ("",["comment-end"],[("id","3")]) [Span ("",["comment-end"],[("id","4")]) []],Str "."]] pandoc-3.1.3/test/docx/comments_no_comments.native0000644000000000000000000000100707346545000020523 0ustar0000000000000000[Para [Str "I",Space,Str "want",Space,Str "some",Space,Str "text",Space,Str "to",Space,Str "have",Space,Str "a",Space,Str "comment",Space,Str "on",Space,Str "it."] ,Para [Str "This",Space,Str "is",Space,Str "a",Space,Str "new",Space,Str "paragraph."] ,Para [Str "And",Space,Str "so",Space,Str "is",Space,Str "this."] ,Para [Str "One",Space,Str "more.",Space,Str "And",Space,Str "this",Space,Str "is",Space,Str "one",Space,Str "with",Space,Str "a",Space,Str "comment",Space,Str "in",Space,Str "a",Space,Str "comment."]] pandoc-3.1.3/test/docx/comments_warning.docx0000644000000000000000000004126607346545000017331 0ustar0000000000000000PK!إͣA[Content_Types].xml (Mo0  ]XEQa[vD'$Q?Q i4ŀM}ճw#l1T\Fcæ..DIZGW\-Q2-xK8Rc6mdTڀ\K Ђ ^]Cvg~ܑ$pY?ƫ*Fg"`sY%W9ykc Bth"ou5(nU_s|dA\Y/sjPCs1 !˄wۄ136z7{i ~':i{ 9zI'x$HHi1JOB@031 ʓ}0 |4Br P#Ճ9qNwҞmʼgəbiH8Mk<:~x`PK!N _rels/.rels (j0 @ѽQN/c[ILj<]aGӓzsFu]U ^[x1xp f#I)ʃY*D i")c$qU~31jH[{=E~ f?3-޲]Tꓸ2j),l0/%b zʼn, /|f\Z?6!Y_o]APK!2*9^Dword/_rels/document.xml.rels (N0EHC=qR<Դ@u&iD)K6} ^ΙhFj/A]&n2kvG 4dKh,[$ּj6*V&uj'^#Fq;c(lpD][m88ZTNC{ojO͜Ff^7c!& A:rO,duq&Y/fp4a/u(]M"ݲ,n/ÝhFslOSGKWh м X}w$]o{/Wh7ERSO^Jf|]`4qr G f?p I aDFr{d tM4~lS|n51хm~Z_{'PK!˼uword/endnotes.xmlԔn0@#?DCUD*#vU;q!!:OEd;q+]˕LQ4(`]^l&w(ȌJE˟?ud&c6Ii tL;eUTP9,pFQf-['u84̕مJO㯼lǨUF&b2$]6n=%q[`5CJAI[p=](?W^] aNl3?Og"co樹kG]7FUzh[6qid  lwRZBF0-'w``&8exIipۂnFػpeO`o615IUϚ#QjB0"cp`PrY<|jE2w`Ppɬ<ZS6\(p |08}L#_S^?ʎ:>/@_}^}?< t!N71M91ha nM#SXsHCf2)6}Af[SJzYt=K,샳 ml-TwlsȠyȔHN؈>t,= z[CrGjZ]ÉFPۈ]У澏L\"b* XÄ=(bɃ9 s!3!B DlnA{<1L )Ց}:cLq؏D.QnQa%Ae`5w12}޾#վ@m D8'c'8=Sd{.շO{!˰uG6ܺxkw[Hn tto/+V⪮$[cLȁǕs9p(UE-,.3p `p*"pq0\; dykZqS],'ri [xAɵ+/rKO2Q /wb}KpV3I m(5YC2!f^EqM[lE!pqbUyIGb>+(ʒ֧FY&[Դǻ;5V+7XҽuB붝o hV2jV9^Ksqާ^j&\}y]Ut"G\ Tk.'8*^k_AɭRK]ϫW^ʠ8zC0XQ5+9S!`1k"L WʔqxA$)I7fnZkutrS} LV8hKw41v+V:Ϝ&^O R%$TF`*}vЏ2dnw2c4~!@x3"+t X1ZBs uۜѢ PʙJq0y@9~e[+w T}Q265H$Y{K$Za؉b?jG"t#$\t!I2 fd ErDNⓐU3wvnK)+] Bup7U"D5*RCzm9|5s(l%MVfE.%Mg1HH2"lݬlRN.FH2JKқ73A~V}5-7}O uEV{EPK!﯑ word/styles.xml[sۺ;Sز|I2ĵD3EBjPI*ϧ/%(.3}%jwb/\%\QH<]_z3 "L0);=|ۯ/)ay inE~wpGK bRq.UXȏ`fHag<`>1fBd,DK+cڣu&"rWI[<1cZ(Θi4VpՀUv,%'~EMRcvs-"߅ylYBV\n.ҜE֍KO(//yGOGoT%acoS'W3=٫2<0;VvwI7# 5>=TЄD>:y[}Q 70h@˄7-U G=xZ #ݖ]E&3|V)qRroZg"T?9,HψU˭ibY$m\M$,T@0EG"w+TCj:yN_jK51Oc"lPqjDsbCsZBsRAsJ@s8q)SȕVO?$q|?ݏ8k|p_)HpIFLb56И᥁ 4fxa`ŌEF)C#rO* o6oHo:ֱci('7f4 peV۱>c۹SpOqLITz"WryJ\5H^5H`5o>i3ͬh&4L6vbxmpͳLX *#߶;e D=$e"ai2Y= &]$,#NLfKH?0Vj 3p=x4qj$A܋*3ch(ĊiVN YOD{{A`6yWBT'Yˆf/ >de˦zpç )<<%n6pT;{yΝPyT[wxgx"|9yP$USQ/ah#1Y04*F `:le:l:%h `OtǂQ噆Q噆Q噆Q}s9 ;XHt`!a`ebFiy7RQ'GlF5Ţh$Bm8ڲy>3}'.%aĖ"Y'm/E0]֫6peU77~6O,UQx3餿~Layyr;KnXmiuڰ0{hMk6}C̽)k*])o["+mK0<}mKp<t.Rw 3a5Z[]ce=52[]exyNK+-™Е0Vp 7hnB }&F#F j PCW?j 5lg7+j5Dʰl!d'?j 5aC PC6Ԑj5DyB dt!jHB 0(PCTW*J#Ԩ[Ie; [2,kj"xVK0VUqՒ47o܄atPtbuvBB/T7j\ 5Z 5Z 5ZrW-W-pvB:C:CܡUKmUKmUKmx@vbC:CܡUKmUKmUKmUKP㪥P㪥P%wqR[qR[qR[qՒ3Ըj3Ըj3Ԏj&/$?.L=ۺa&.AjNI`^Ie6' !l*Zʶ"$GS)m< ;;uAkwӞ.;C2j5i?|i6%Ѽi3,QrKOakv4a:>7lsgzp)?9]>ޜvRCC=3\z"~>to(Dnv3Ms,Dϼ~،9Kv~~KaF=^ɨ<7嵿ſG`xߟnmrK=c3^7Gn};Q@FC֙S󀻎"kcLϝơr6{W\ g~ιVMFq7.ZƓ0ڼ-苏C{l!XVw6rNƦ(hwt ^/-/¹y2ˊ/~5(kݼv #vaދkI#Teʺ^/ȿRJ25ot[E7Hk9m7妡z5}-d^ɦlB Tn#UzW"I7툽gXf?WGf tx)22) `9֍c9}bummve],zs90?̕z_^m'tjޠ(~:j mw/?PK!docProps/app.xml (Qo0ߑ״cQ9P'T!`nƹ4۲oʧ眴K;;Q;[l 5+?_ݲ"4BŎٝxoPC,,ꠗqF˖VZz$þtm;҃z>P+mSA6V\6N%X= LkԺ1'$F!/G?АhU'THw'n)5F+tVEb0)y'-(rɿj;rqw'IVtnJ| 2t#u; ](I]f!V2hial#Qk4T{҃嶾Iq8Kav`Q3UWXY=<^x?7LG1* PK!t?9z(customXml/_rels/item1.xml.rels (ϱ0 hoPK)t;JGILcXji߾+t(QE]1hjP >N~j.G{J D60o,W0H9X)ctl'_uݓ|P=;6w#w Ev d*yB1ߪ kPK!K4word/people.xmlN M|8cup /ҕuoڮS3}Z8/d$$C.6#o[Ld7,"O3R`SJ=/f~%wSBQH.h.Wq↓.G;fjI?i`fnK5s ݲ 7RɰCv|3` #3i )ig wn^ia^:_J;4\,H!j}MϫʱxKҪs;1OH8dbD3iF]&<8Hj;Gy)<]o 8QKGoM<6*=)6:.֦vԪe.:>ed|9[|PK!5eX(customXml/item1.xml $( M 0}w9.\ BBn8@~$Ao 'r^FPK!)ϓword/fontTable.xmln0' !MJ6KJ.ǀ5l#',o!lh@ aTU&Bs޲hrIs8_CxFJ4 B1Zh,*bǮFɍ;1פs(&%_ )ZQ!h(e GZs1v[[YUO1L@JrknWQ8=IUP<}*lS|\I0M’Urc/Lޞ wy, ]3%1FtZ:^=]TWY`a#^IDI0xXI~QL nĭ=g ;#/R &x6Fbz&f53ȈKī?,1$ӑt| ^A_(c-d>9>@E&WYd-]2 Yb:f` PK!j'~word/commentsExtended.xmln0AU"B[qnqx$u69yog>)TxS8cQc mP&8 hV`pߏp 5FjQP1BEpzn=J`A@8&$0!c* C.'.{QslÈ-brTv,VJB*Y >Gi0 ŭ uJ`Pi8D~Q~*R!C$\0Dy\$[d\q>eOh;~8}-ehzIw  3Ȗ̱Ywg ˮcNH]m3_.sPFur WSPK![m word/webSettings.xmlJ1;,Y-T>@ζL&̤kH/I23; X֌ yZj|pm*).-]قl7=,)*IYků )Cǎ]ђWnfW"Pv\Wf) u]pK~ʮ2D):dSx<>=t!3 ue'Q>w'@ܯ[D@'3S̀r >`N| v1RpPK!LEpdocProps/core.xml (QO0MKG7 YH`$1V*[ oop'zf}Y;(xBՄ/f &HMMʵ X'0fBΙRk(<|qmɜO7ltE#Zc9Fkt()x'ihP@ !1=lW`*z*veVU5s֬JU{Ł੓.docProps/app.xmlPK-!t?9z(V1customXml/_rels/item1.xml.relsPK-!K4\3word/people.xmlPK-!5eX$5customXml/item1.xmlPK-!)ϓ!6word/fontTable.xmlPK-!j'~38word/commentsExtended.xmlPK-![m 9word/webSettings.xmlPK-!LEp#;docProps/core.xmlPK=pandoc-3.1.3/test/docx/compact-style-removal.docx0000644000000000000000000002333707346545000020205 0ustar0000000000000000PKp)Oe݋ q&[Content_Types].xmlUn0+8顪HM?1Cb/,TU$M 1#&. I82}.^6L{!^RFt-Bbkt++w= `3,0zF,zj* %RU~ȍ؋%{Zp{x( oBZ-,?b I#6ϕR$B >]$R/S}.`a@?h}49),IJ_tA.pRTAtފKa*e@/rCsz3/`Iy[;h+Z(oDZ]uŁh,=Z{oPKp)O=^ _rels/.relsN1 E|E}S fAC|@xjB{B@Q2b81hV5( 6!t-,#mHU YC/ɛ\D^ O4Lrx妠֯NaǶ,GȈ_B6ܑhx}uΩC{M~Sy(&QJo=qF 4.5>.K}d87PKp)O(K)word/document.xml͔n {{K4EKzXUiUZ 02$o?>mz/xؼk SbL4NJv{oB0>P{[Rx'4skD_ x\8yZm+. $/P]'K4H\P+-9֯8r,&)V).iIΩAhBT? ϫNRAz4Z;-{jPY(*G.Χ&y^Lʾ)eܧ2Mo[TĢpAg#H?㬺>q=q3J^PKp)O/ڙword/_rels/document.xml.relsԽN0񝧰no(jҥB !b;@CK".|ٲ~u9dI 4u^˧Ac~v9tD#NvK̈ڗX%?ږB2MWg@q1h3P?> 9}+mrb S}$ ۙb>z˸ Y-iRTNblA pY0 (1Bbm2OPKp)O4o}word/_rels/footnotes.xml.relsMA! Et]c0z+B(1_.{^y3n88L /$~ݟa]v7Cјш: șt*eWi-`%x .?PKp)O2Va.word/numbering.xml͘[o0)=6`.JVմ! m34f#d9oNϑ^pj4S ,I.6w!xX?T%\iDbu,E,^2-Yi^2:yQH) Aȇ &fqSNHc1a$+Qxw;vV4G7Q cKf%el+!xyvד9O?ݤ/{S7Ci6;'0yV46엪щ Qgjf}soa{< H@zQ}YX00K2Ɲ`t & {a\cA߿? u!0,0?*'4CztK㱅(>%+שMxJ&n+^|4 8eaav 'mFCz lFCv 'mFCv 'm(FCv 'm4FC.-AN׀Po F=x:5ͭQT}M/sJƏk&VOraH< #CȸvdώoG&#Ln?PKp)O/` Nword/styles.xml\v8}Wxb մ5m)}5\G Hb'!楱A-hs{HDYlAxqָ?p'7)=k,O^B1zGhء1kZmRƇ Io@Sb <77>3 !eh M⦴1}x8ДSg aB/8@ @a\?\9rxk0v/7Yc@/R<\ӌzdc3)>/ _ ^ELA. 8~~b53 +3a8k"B{ZM.@K_KoGJlb&Ss=|\P_&Omd1i, G$5~2X3|69qɇQgi{mr:(`l[((fA[A; "0F4`7442R( qg NǣHt EVimwsYmweI̷)b.{CwH.h"6@Na1|8mlA@I^oMmJ>RTDObl: CiH`V 4<ڻ0 SrP#Mcڅ̙fό7!MI /S œtz1a zp nZ^q:hA%ʝ-\yLϬ88~bYL֠7XTRObɟTBg&(T (R6(FM8<͙wrlcqH.ƆPKp)O 2<rword/comments.xml {"xOM{XiKt@i#3&㯥qa[BN"33.0V%v[q7`_[).))GrJb JJ6{ Z:+=dBكQCv^, aW4CAh+Bv1΃ \4lD^-T 2P/e9Jb~a,}ЬK+ ftg BNʼn~Ka믯PKp)O-dHdocProps/core.xmlj0E -?4v-YPhJKwB$"iZ'_N+h1{hFR<.5 )$`l^d1a=z:p !:Fi;M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PKp)O煟docProps/custom.xml 0{"䮱="F/sw 4ِ]F at/$r< N.Zއkq]{hn #$v@"i0Z)2 \XL~ӬZgGzNUuVf%F_'^fGwOPKp)O= word/theme/theme1.xmlYMo6Wl+u:E֦ CDKl(Q $ qaݰ ð@ l_EeSۊ5GKҾ|8"1iܵ أ>u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPKp)O%\ word/settings.xmlV]s0}_VoFYNE3&I{Qt['9\W.Nn @i&ө۹\R*c˲5roL@1jݪ4t `TI-ӢR2I-jꮍɂv] R1xTQt+ 5mm OY7]oHݹ$v[]n.U\). dJR++ ֍9R,RDN8vMJAb{.9^K]LBC Tga"(J!fቤ<d܀BT<զ&TP֟U]m,K<iŐ-7/$ l\CQXsS,aY3BsP/̙8׾o⾪u f/C㫔Pkt찆c?1j * 7D^g,z[xf F;hvY4ᨷN`486̆37Z݁?oncfNDP,utQ,&Ν"i +D͌, 6&Vւp9tB~$'yHԪkr +=40&F6kjRn &fW"5| =6Wa:dFE`b'E=}=&* &3s=Hdkd !jgs6,+vKzϒ*Q: 9AdhRۘ%<%3RpcXp/X tb-I%uc3}@U?R&!#'.7ф{@{ P߸rreH9BKhNB4sSfmmrؕC AZN jx@$As'Q|3)C및ZwBU=10JCc ~ۜip>z aV.!>=6ϾTY:?PK!N _rels/.rels (j0 @ѽQN/c[ILj<]aGӓzsFu]U ^[x1xp f#I)ʃY*D i")c$qU~31jH[{=E~ f?3-޲]Tꓸ2j),l0/%b zʼn, /|f\Z?6!Y_o]APK!6Hhword/_rels/document.xml.rels (N0HC;qR T+p͏p֑XEIS|ܱvfݫ4 K]u<ȒJ* m+(Inɶ`#Vhxܖ-zt'6$7 UYz3U]qKu]w%FeU̒b,[8̾4d<H0K>uH 5-[}ػ, BB|AY, :PK!3&z  word/document.xmlV[o0~`彄0hPP y2XJQZIQ|9|;;|ZRm tD 0t{r cHp!kj/8d W Z!9t8#Zk&38TjZɍiP ;^7Xd*r;4si@NLHg0!:rmƙdFV1X0v{Q4zkLS(|ko&S.(.q1 n6v54Vy.S HN϶tԥ+B4mɤWWm7^뜸FaR4$h+WM ]9"qU*HT:vDݾa/4ï$f~ wj5ͩ.gӒ}x[:{a}UH2{wO+0.S ;RR1I9wS5Ls;yltojM/.DN5Zr\nCl(W=_lBG^߇|pޯRvV¿B/U4r,gZɛuAӖ48痩/+wDvl8!JPK!gкword/footnotes.xmln +, &j[+N>8F53py8v(/`oa N631MYAaa`?/_, QB!knycf%b:$ĀN嬊eUi+1` -Dz4J}gH/Q(ὄ li~ͭoh^Mm̀5=brԅd;Ai݅P5VC3rkҀ*e|Fٜ+bcuz\V^4/vA)?OK$sPbcoלwqGx;־ɧqb+Z=|I,SOߚ-O֑GNz32"g;:ZқV<,MgBWΣ7t):v;3qGn8r{ԟP@珒1>%SwwPK!:'word/endnotes.xmlN0HﭓjY jʁjWV| aJys98vhg7oOs_ K7vSEdzl5uIΒWV81͒Ғ:Z~xxZZBk:X$7}_ IjWAQ'_-;Y{ #!hq^w ?p` ܯ^PK!\Sword/theme/theme1.xmlYKoGWwŎ -PqwfI|XRUZPz" 4iZ*zAPA<~cf싗c'-v!Gç}O-ExD s r"VJ`M@wUTB_c6){^))]^psiU-QQKvg&Q L],;) 8$ QHBd)-uK>T6EmL.A)DWh qx|s 9s&e$Tf.xװ\J_rT0EsCK^eP9/"A'qԙ&Q<h+\!zqpߢk& K*MDDַK8ɋq 8314?5-pf"lpwnQK ?-}lyF;<~2ƌ\+KP:BF0ĕpfWQG815#!PKxe'okX.93 s"hE3XVʅV%ՌjrGMZ!c0#e0  Qf5$q,w7rg uTK3tof!-ow )`&-WkquwVժ9K"R!62[Kכ 퇳1Lbe0Вjt"b? Ѐ6*\mv`V.ܬ6f^j4YQ&Z:YA|6++L){f\uz).09P.F 8, AYh_k]oYhN"AȮ+S9 uj=MI Zy9cB}W/.6m^ +4Qz*,sَ5'\x) M}G9 鮦0_vJӬ7 8Xg5{uggypueD+whw@6sF̮fv+!%XGLZ:Kxfm WN'gSN\?80eb-F9oX:.[By˜ٻ˖+Le*#Jg&_ȤPK!'CJ word/settings.xmlV[s6~L:0Kv MvB Ie[&x$v{$[8&6t.|ho"O"zg"'|;)xx^˗DaALWMŤW3.D9!p>C,LiJЫ͈WJ>MdR(Fe"6iT"+zKL!ՎYc;gd$:C|"݃I3B +Ĩ ]hMzد'@tf@dRQw$HVuR R U " wXf6PҘ-ʂJ)~@/%KP#/D)9+A%7-VadKKBr"q(MK1$JT>w?x2QɆu"HkO9OpQGb;^'mrA%ܸGENE&I~#$o@N8KMUPtll.kSyv2\D~.N46Bh.4~oO@m纘gvڨ3Rfwexҩך+c$mQ@6U#4kr,Qaߴqdz.& dt1rw1(̇ƃER63^ Nk(w1p6z6ht\a򻍠_61 oT]ڡ/a%*W8'k$gZ?F+Jݒ5.rZʶb1K&#P#K)|QNV7˅ 67;*/h XFCG`t=(cA'0wPK!:word/webSettings.xmlN0 ;P徦.!n-8B\͑Oz>{ȎBʼPK C^W*dBg<hXmˋzfؾ@J3QWh54UZ 4AfOMg4O+K8λt뢸QG&P; wd!-:nom>G)vS$ r/ '1ǍJb'm8f%$LW"'PK!Aßword/styles.xml]]w(s?jldn͙i{%lk" >fBAnzၗ4D`pGAo_] 4q" LMD00@׃umߜn@(ـ LV'lA.(^Nŀ$&(h }#8]۴D{6A{FIM;  ft&mB?A)ZfagX(>ҿ6Q pn06UpxlnoQC>O(R H0|%cMM4` i6IC4JfiRb?l|2#5E ^` hq y5'̱'Z!-,3e(4E*߉ԤXQX_B y ׃!!~! Q\?M. sukNaP?-U#{<^(Q|h@<)W}7J\:¹r7N|CPNPN9A9wrJ@qaYo%BY2e{4c,:A[Cĉ`q |@?W=*O/ `<!`RT7Cyjs7_{=-YxB7Seh }+\M'8,_y;q0SY`*P /*8t2 S?$pZǝAGsF>hdH$$NHI_?}@XcҡhS!eOD;+rv4 ]|%#rso?CJyK@g-X:kB8u1s0sCPb$ A\1A\@\q@[WX` 0GK̕ΜN90W:`tF\錂[.xn ]it7lQG7\[lC(Ar/bsEWpV5^v@!ho=!>\(r:bvW:#JDfіD0MYVFl5K׆'7}?!)qj0HlyyF4 ~ f8Zv %dx 'cBMUBL5gwj2WEhQ6M XM3XP-$ֶ:.TJZuwj2mubSmGiDf.k[Imub5c]>b--b&ݩʴ։"OEAQlJjJm$%։(u!PJSiKEh}6xRw羨e +~Gh#8Wtwdъ|Kqp MK3nǡpeHO-=z(kPݨʽll:Q-tZL ՍjߋjjjLweTPݨ2[e[e[{NZTPQMZFZFZFDӝj32T7^TTT`S-CuZj@\vEnB2 \c!tdJ%4=){zSV|jaCY3F]{G#Rm-iZZTEK*%g=B'VV%=vђjhIE]焬N]J].ZRQm-TTEKZVV%=vђjhIE].ZRm-Rm-RN+: 6'^ŮX!Mx?wmxVRVE4㎢*pSq'*.@ 5crk{NQgn([݅IS}MJћH٭LoQYp+g_-W {F­BYxZ:(D>e-O'WfҺ*,| aS6ϸhhb+ѭ&:Ȅ\k *^&gW[L%S(ٹcEXG$1鳞8ӊQ;QPIwqn69 T?aBK7 Cnޟnk̰.GzczݐJ):צfX_[-uXkTlZ1!"* އP4 (l(Ej'l Eq6Bw 'be:)f( M]miAU5HaE2p)GaFB@J>qCK~b$A鍎U\-.|*W?.[o%T{FޢԔwӨO kS:)Y6}=,-I/,w;ؚClK;re J+xNV+'qόo2-]uB/̗ڀ=v6ڒG/mV>٪4#3KJzN3ԮձBųSEVK>^e~a: Kz 3XRWZ'?f`>5u^T|.QuQߧ<VfmF^q%=-)3jw8n+{RL Ro-g%v9ɞqο{ҪRɊq7[mJ[Oj47K{Dz;K9I(|p'l/ue6J*tM& eKR+:GyCz:)\+)NܣbI/k5iSjÊy<l*aoaI}Dp& CoߎO0ݝ3yw=1y?zm|j6tv9&$1"ϔ`#E ?iq@ &eV{IXaR5X^{%{~55= os|ѷw#?wĿPK-! j' z[Content_Types].xmlPK-!N _rels/.relsPK-!6Hhword/_rels/document.xml.relsPK-!3&z  2 word/document.xmlPK-!gкY word/footnotes.xmlPK-!:'Cword/endnotes.xmlPK-!\S;word/theme/theme1.xmlPK-!'CJ word/settings.xmlPK-!::word/webSettings.xmlPK-!Aßhword/styles.xmlPK-! Ļ;,word/numbering.xmlPK-!'uQ/docProps/core.xmlPK-!瀓1word/fontTable.xmlPK-!g<3docProps/app.xmlPKh6pandoc-3.1.3/test/docx/custom-style-roundtrip-end.native0000644000000000000000000000102407346545000021534 0ustar0000000000000000[Para [Str "This",Space,Str "is",Space,Str "a",Space,Str "test",Space,Str "of",Space,Str "custom-styles."] ,Para [Str "Here",Space,Str "is",Space,Str "something",Space,Emph [Str "emphasized"],Str ".",Space,Str "And",Space,Str "here",Space,Str "is",Space,Str "something",Space,Strong [Str "strong"],Str "."] ,BlockQuote [Para [Str "One",Space,Str "paragraph",Space,Str "of",Space,Str "text."] ,Para [Str "And",Space,Str "another",Space,Str "paragraph",Space,Str "of",Space,Emph [Str "really",Space,Str "cool"],Space,Str "text."]]] pandoc-3.1.3/test/docx/custom-style-with-styles.native0000644000000000000000000000144707346545000021247 0ustar0000000000000000[Div ("",[],[("custom-style","First Paragraph")]) [Para [Str "This",Space,Str "is",Space,Str "some",Space,Str "text."]] ,Div ("",[],[("custom-style","Body Text")]) [Para [Str "This",Space,Str "is",Space,Str "text",Space,Str "with",Space,Str "an",Space,Span ("",[],[("custom-style","Emphatic")]) [Str "emphasized"],Space,Str "text",Space,Str "style.",Space,Str "And",Space,Str "this",Space,Str "is",Space,Str "text",Space,Str "with",Space,Str "a",Space,Span ("",[],[("custom-style","Strengthened")]) [Str "strengthened"],Space,Str "text",Space,Str "style."]] ,Div ("",[],[("custom-style","My Block Style")]) [BlockQuote [Para [Str "Here",Space,Str "is",Space,Str "a",Space,Str "styled",Space,Str "paragraph",Space,Str "that",Space,Str "inherits",Space,Str "from",Space,Str "Block",Space,Str "Text."]]]] pandoc-3.1.3/test/docx/custom_style.native0000644000000000000000000000126507346545000017035 0ustar0000000000000000[Para [Str "This",Space,Str "is",Space,Str "a",Space,Str "test",Space,Str "of",Space,Str "custom-styles."] ,Para [Str "Here",Space,Str "is",Space,Str "something",Space,Span ("",[],[("custom-style","Emphatic")]) [Str "emphasized"],Str ".",Space,Str "And",SoftBreak,Str "here",Space,Str "is",Space,Str "something",Space,Span ("",[],[("custom-style","Strengthened")]) [Str "strong"],Str "."] ,Div ("",[],[("custom-style","My Block Style")]) [Para [Str "One",Space,Str "paragraph",Space,Str "of",Space,Str "text."] ,Para [Str "And",Space,Str "another",Space,Str "paragraph",Space,Str "of",Space,Span ("",[],[("custom-style","Emphatic")]) [Str "really",SoftBreak,Str "cool"],Space,Str "text."]]] pandoc-3.1.3/test/docx/deep_normalize.docx0000644000000000000000000004332307346545000016750 0ustar0000000000000000PK@!+G[Content_Types].xmlN0EHC-Jܲ@5*Qu&!~ȞI6h{8Ѥ7X2ʚuH)S}߳(0( A7^9MH=pu`[ҭ/Ko;;.A0c'ŬhqWEL8W*)ʼ:ehM.ޒ%\rp§Whi^8  /BS_Xʙ&Q<FJBܜBˤh̎ xRn*!`{d0A1$:ĕ6mOD»ĸ[VL.Fü$ܱp~ںiQ=cmI#o]1nCUvQ5u"Y<T/lO6_PK9L_rels/PK@!' _rels/.relsJ1Ͷ4ۋ0&dEԅeq>If9AR6x˪A^c}౽[\Ȍ<)8RMs~~ , g=s2*D !0u2~䪮d̀f[ ml !"2ؖ]D#V`/Q2i˿ j z!31-Oi4y H󕞳Yø߻'vxZlPK9L docProps/PK@!rdocProps/app.xmlRj0%fʆCS$Aۢ$I}u:V<< n^'_P..C`ua8ݷ*J}?evT*PZbF=foo:p_-|W~֗0}ocq5r$ѿPK@!_odocProps/core.xmlO0MnYH`$1V*[ n~^NEjB^DP\ V򾘅w$@ǔ`V0!@2noRn-Xm: x„ Y;gJ`ťs>+j߰~i iUkr(@9q/gց-ꆺ,;-GقeYAc9~JU͊R']YJϡp5mcn9m'@Uۚ5wUSV7t2 @nq-g9C7 G]". ;YlTmݴ"CJ*Ōd(80 (:? c4x5͐5PK9L-h"docProps/thumbnail.jpegYTȺCm+(LHsdnqVA $2$*62)3aH0I"  @"CS$q{]랇}YUP}Uq.^~*?kw5ThFKM]KM`PmS:7wTSߵۯjoSSOjߨoۡs>t=f{?WO]w|5?bߨ3WlNWMSꢥp(?+RP*,Z1FV]Cpݬ5 LW& $NC n'Qn ̖j=K49@GVk^++m/.kQ9-e˞}SU>(T=ϳ;ҳ=Pp~"75y69.XrV.Om`+_٧!xbrhl`LM"0ƂsNZq7뇖x.M->( I1 $)@c*2;̥s=FnaBɫA.<'e:EsҴ*1Ě0Nt념SE^"YzZﯴm z u ]Kϔ/o Ns<\H%7 XA^H;6Kr}͠طY6$.+h lWAxi; 9tjp͕l_$Ddf֒I?~o+1>lCsk"N#[L黳c_=oFˏZoX/BL('_%G%hclAk2)c.bS/q6 Wsd -wVD:J+ú.<;}-J5Lw8Ǿ8/&9)Ł#OAeN,%xc@4V@5 ߪ4~:|mu-8"O> Q:zISC\-/Ǭ"ۨ"lZDr¹W{LͲ:<*dt,ڶ4o7hR  (r}e=t"Z}S}X^5W ܎Uߒ|{̅٧Vy^vF?mUSꬅ=+ OYfQIrYO[^KG1K-W;1)*[ Ʉ|L=Ϭ3]5ļ^vN~t8ptB]ϤԴj+{۞G8ۛL TvظQȓ6 | pd t IqԂN 7x44 |tX ="EW>kDtVÈ(DZk|hMN"<A =v>/b⩦-+53V"LMZZg~is _9lx ~um?\U5G  ,_ c{z3.2/ҽ^]pV܀ČJ #bdh9Řm5­ajԒqG}"-ukNLm!?JapFRΚMh,#) 3!p}aw)9Hc)m}N>8іg,J4pЍز0], YTKiEv~fs0\Xi"䏒Ux6"ݣJPR<,vKg ҳ#wxЏ@1J-?C{ έ*褂8}}/[/z}̷Ǭqa#b񼋶Ʈ9qTc޲  JM 1qȳ﷎eu?ℽ' )QW1O})5FPdM{z5 z)ȧi;+qDˎ{|PX0H4[|6Z/EgSb f/{HaVV1@ʛXqӆ).tʝZiuZbCkT̢zV 9b(~q>d QZ2FrKlÛ|5'Ai/3IRT8x! ذ5yS?IOi"^3;mJЍfZFcw嬨Mn]ۭ4E[V˴V,¢fCO3 F!WNVCDUC 9xb,fO` ||dsRx裢\~Znzlݙ_U&IY;5(w0lGY'g$[qݭhm# ohPZ vTLruXz3-u$% i%V${U;xO4b-4YqZ2u}Sg((C/5x;۲7:®5~;oeN}kxr cVLiTJHIQw)Gg$5SPPx"\E_ B,4+׏~gȚ>!Bkyxy-lDot.hEa۳r{>*ODڇ ◲#M.N>Nɣ8hOϧNJ qNА^Kׁ`M"|qcw)ON8mo>68Lrw,E>&5MU6G[#s^yF، /,Ռl|+W} CZ~+3qGqD\ckRf~٦ǠբU%[ I<|ؿǿd=;S]D#s`Ue9G,j o76Шϫ̜X}8x8s5\bɠ9;YjBG(VI 'uGG8vg=UqL(1ɑ{+ ''<i%w 9m$<і XD~*b<-4̶?nUOi'^Y;Rř5v )So9w4~<{];xc-K.qE,CQOxyrvVilp!!-z2-{ 0 L$S3/6xBCMݫʩl+ywgp?;d=Hȱ40гٲ+rv$#Y*8?,u o6eƴK |KT{P;cյع[H`:5@>?  ﴦ){`ajwevw[꥝wo[NumPLbb048͌I!yi mc=:Bd2m&6xyY09Bap4(Hݩ穃*+~OQmY)95nE#|4;53组 ~K~MLyFG^2Z{YK'.-VlfZ<(eD %^`x,/fSı ߞKLuhj>t &;}ظ[ݧ#}u|q^3*avpN$]zʢ zUli}gl3oC^c^ޢKp;­`"; DF4Zl^;- <g!^jn;g?`UʜŻ\&:ח%ߝ։."8NĴK ȷ}DDB I֗TZܡ L _tFp[ \)"szj8 ,^TT\A (@.U WO*Uj/G>h\h T;:pO8Berɞ],|HD)8@ylXc -y<E2us1BZ׺z)gÎH^Ukx(9t+du2kE/TQ$#o7&H0ln~$.ьΟdV[G[f".X1i2luq[ot.i}v`|sh*P'm0@1 ৱe|`~Rs$/did:fkvs!Ext;%p"a)}K͓}lHAfG1ܻ&0KXx ۅcMZI/3o Į6kQz*098Bh9ĸZst(;N1Ecvz;)6fT62F E"%/&^S3@*}p`V̐fnO,o S٘pRQ>ش @Tf^۵myC tz|>&]Hrdh2fp,8),Hz@u\Ql*cI!Y;iM7I/ϳsdK7HIVL)L]舼YyzI*kY>/LOxyN%887@p}+m+\A+Rr,|P[[2\?Nz4U PK9Lword/PK9L word/_rels/PK@!wC#>word/_rels/document.xml.relsAO ߁pS7cFwQ]u3@{S%n=ȟҷX~ن}@;d8ڕ8CRPw /ˋ34!Ylq(yE 0-c|2U] LnN:٪!):d6&xGk7pd!|Lųn!C:ml!qQLϋϾPK@!6SD word/document.xmlW[o0~y%BE THF<$Js"(lZbw>s8u_Rf-TTrEDyA7md)yःDOw "%\[UJVaBR) PbHm1ѐ+!#s\'_eRD)+T¥4s6)1pP΄LC `fX)eT _,;h!yPb*y ¥_I6h2XfUhh22gJ`s!#ȸe:ua:ME6qaGQn^\ɋΥHr6>F}ѯ4-Qp,D%f*=YlciaIْUvNE52v>'TYbͨTbdIչGw^4OHQBbz,P%2IK,$􈘛?Xj@,8Nx`p {|EB xTGZ,=[łm]Xqr,;Psq > ' tXn设jp"$WQ^->QyD-oۼł 5VnZ bk~"IiMcfz#8ӻ-I$TԾg̨z1REa|{ 2 æk_-hElcƎ kw4+Y)*;DJ0k| 4UTj$ 뾜hcHw@zqF(W|6*8N fFep3,Farj@\UB.(zS,_3jEWn4Gaj$hE'& GUe7.VT$MlamĎ!F#Jj#JCo-#7HqF<}~xڣ2M*J[6*c*-H}HK(s(r\z֧}[{Z~_ޮ_ےV'p=~Dfz?PK@!CZ| word/numbering.xmln0'HE!RTZU:ei1NbdX~6vU$7??>su3"JS)2!2b? A"GL gOWu*J&zVC.pvk#9XI-7f%fC1kr?l %1|EB^CۧHDXF*POeqn5 d2jֲ2P*5{Z ŶPC ۔;KNi|EBh2oSլs׉|8Ew նyI+p8>cov$65=nn)Y/j8x\)_á`~Paj+Bkf{nGk[ZQrUog6!B*2Fq|/t19kex:%]asPt߲ET.8hl1'rzG͂/;lLk.~*PX,m-ۦ~5dM1yѼp /ɑxw17 ,OEh톳Y<8쇳r4pL9pShxi8UuH'S[rp9w;piO5OwOoUaur¥PK@!b{1 word/settings.xmlVnH}_iy fkȈ@MvqvU|VѠhy]TUTOߤ j o *9WEeӟ=cʙ  L>VkBXf`m&;dFi#kY3- fy( ыD}3F n3h|^ Y묔lq ́ƳFk(Vks $/.'7maXʍz)2 0 fBھe63SO6+&S䬷u;pLƳ|7a]q :PK@! D+:QgLNIRkEF$ 2ͳJ4qǢbڸwL㎼vlo42"n @p=? <[i7L5w$j`yx[l 7?H$&w|FIb yA++Xb=XaZ'ӛ[;ϚF+}`: | M#mظwyq ;=@aGg"~8zNIPq97_&pn(h&vnwPˊG 1pvCoG "7 xXh `7#x@8 /o'x@8 ooA4oG po(\<poG~x( 7&x@8 7#x@7#x@8=- 7&xX8 7#x@8 'x@8 ykCYgi.O U5aC{ ~KH =I#v:b dUf=9V*Hv-|~smh حIrhxn?) SʰJ2J UGPM*w?wTW<-ft OYۺqHU5!]Nm< ^ g\:o4} f3Gˢ{(KS/12Wc^~0$[UMwdU^P4pcۻ]є̧àU%UfMx@=bC6PK@!Sќq>word/stylesWithEffects.xmlR8j{&'HHj2S ́90Vl%VaK^I!O9mpE,-ɿlc{T*&_N/'羧4!S*ㇿz(S&4QAD%,B~# ZȰٯT*eh?r%$(ssFH)7'B&DC4~͔h6g1OVky+'&31 L,-dr%UBHWKR5s2*E^Ůީۤ_I6<(̏+H 2ŷ~mlJJjMo*hҔ[2J IȌgWxS(+ X+{(odqXe0vk0* 3.b9Cݓ6{> iBw,TgN>xO˖Ku,(?&47Sȓم 9ts:c$ft]4isbwF2!ANhф}caHQv ?w_{P Ċ0XZO3g9Ķd+&o8f^1Q"JAcPYVwSw3w]]br -| UQY45QYQƈ6FThD@Jx 2F9Z]a d)IyvP(Vs KLKa0sFD1 r[},lD371 h$J>?7KI82Ҟy !a͠7gJ7\J8h5^ *)428"͈"@.Ev!\[;k޽U Q;x]Bx2Q;x> 0onu-(ڂ-Xۂ-@M}`|m5jY1A@-~n~0;_sM6p|lẔm-@/ͱmlr.[pM¾ ھ `훯cy{L y7C1oǼ "7` yXh `7cy@8 7 3o Ǽ pM@A0oͼ,4p1oǼ pr7fyX8 7cgob y(h `7cy@8 7cy7C1oǼ y( 7fy@8 7cy@ 3o Ǽ Z{.O!U5a]{ CTR*) :ރvj1YSE{t,ץn*+zs!+}j:襻>a^n^ gg=6&:Y5'fUTV<* 75HY!*>Kd; ebәۛyk[ ~$RyYcX&y g~\Eg>xI{kL:??s~.I}j:t6Q?|̩,x BÝ:t}n{&ܖ&uPU*1_[&3îXXv0Keή7+0 }+OHK}PK9L word/theme/PK@!!Z,word/theme/theme1.xmlYKo6w toeVuرۭM$niP@I|úama[إ4:lЯ)ΣM6IIÈ}"$qr.,Db4ABBRnjǤmMeB\m+T*Ym2yBbx6" "}ozbGqloF#h֧{ b%]/SdXIDv@-9TbX*xжjDz/%SKh5~) щ`X:͒=翈zݞSRg췜Δʇ5֬5jqW+ \j+͍zߜE;J+ ՕfBFt22%d5#4f([ˮ>Vr- .V4FjŌM5''RYHz&m}`_>{?=уG6P]qS}z݋_Rgto>C>&9@;< PbbSlā1Ni +̰!UL{wC1VFÅѦ, 80 cIvw.qLM,! 8 1Q(}1ݥ- .Hu05d@LtFIAw7[wP3M_EBU`fbIXōWXȨ1UhRrw"åHq&[bRQ:sط$"{& ̹{GQg:#)6WF%xB9K}uھMМ 铱0z&q+:q;ϻqC|Q'jfQ/ͷ.>}& }s~ߜ漬Ͽ%Ϻ36S2&ܐY`߇l$a! Hp UndY$Jwv?`sN/jrCllY uAi5.0'R㚥J5oB JpVhḦ=g0  Sbb5{&%ɵ'ۋ UZIi Qdi0 kqUsV95wj0M_3n3`h&ӢrC-ВшxjlZS+wH ջopM Gd٦|g&yͯ5}m+X}=Nkfҝg~M/hTxlv<>*yxU_8[q)Z<;jn,q^ٮK!l(>7z3fL`EfbdrGL[:wQp9N. $lLXgHI\?Jgbfs|Ebʛ]fӺz]Vx6%9Tw]Aڳ]PK@!ʳCword/webSettings.xmlQK0wP)k _PYzm\eu r\@!P2/TRP^eL茧:Ms}-$?9%pVcJS5pNi$)ôInK'}SwK{g!e^G"RM͗h3ndYAq)oAl$>ryX^UzE@4WюRk,aword/_rels/document.xml.relsPK@!6SD 0!word/document.xmlPK@!6&gx$word/fontTable.xmlPK@!CZ| &word/numbering.xmlPK@!b{1 )word/settings.xmlPK@! 3word/stylesWithEffects.xmlPK9L Ai:word/theme/PK@!!Z,:word/theme/theme1.xmlPK@!ʳC@word/webSettings.xmlPKBpandoc-3.1.3/test/docx/deep_normalize.native0000644000000000000000000000121607346545000017274 0ustar0000000000000000[OrderedList (1,Decimal,OneParen) [[Para [Str "This",Space,Str "is",Space,Str "at",Space,Str "the",Space,Str "first",Space,Str "level"] ,OrderedList (1,LowerAlpha,DefaultDelim) [[Para [Str "This",Space,Str "is",Space,Str "at",Space,Str "the",Space,Str "second",Space,Str "level"] ,OrderedList (1,LowerRoman,DefaultDelim) [[Para [Str "This",Space,Str "is",Space,Emph [Str "at",Space,Strong [Str "the",Space,Span ("",["mark"],[]) [Str "th"],Str "i",Span ("",["mark"],[]) [Str "rd"],Space,Str "level"],Str ",",Space,Str "and",Space,Str "I",Space,Str "want",Space,Str "to"],Space,Str "test",Space,Str "normalization",Space,Str "here."]]]]]]]] pandoc-3.1.3/test/docx/definition_list.docx0000644000000000000000000002040707346545000017134 0ustar0000000000000000PK}D ]$[Content_Types].xmlN0E|E-Jܲ@5*Q>u&_g*h̽WL; 8t˜}_6-n&󽇘P9[!GΣ\1s,U*@z KKw="XL`*֘sK,yjj ﵒ̛*?:@Ǟɍ-?hM6=q|=XSAD7aHo](HĬ*%trmh$}pb$=_$vm0EZ$lFfس"Xh;^ #'I%)x?\w>ղ6kƮ5 ʞ~kdIwPK}D? _rels/.relsJA >Ő{7*"^ЛH}0!#ZGr;R|̛ GcVw5R&=t0[b'T9֟!I O1}qѶ(?0u 7}|; |sGFJT2kT,3uH:㔤0t==U[v@yɪ4|1A?>]۵ܮ-UH0 x2~&"$1n!d _XfG"N-錦JΎ k`?9._!mh6Wq g PK}D4o}word/_rels/footnotes.xml.relsMA! Et]c0z+B(1_.{^y3n88L /$~ݟa]v7Cјш: șt*eWi-`%x .?PK}D^{iword/numbering.xmlŕn0 {(5ᣔUU4M;tB"%%vo?'+tM\`bJ\@-צTň*Ju~iuYF7 e %3 bJKfaORU΍L)HHiB$+^CMv0Vܾ7=vE(Sk&9Fąd#l[._5D+&X ȭ]¡ۻxϯ} ݯy팅oʸ]urLN:ᙩ~#Չ/H0 "D ` 'a x%M Lc`i`t&10I`OGd8]g@_OkX)`3#$-6_2a*[;iq" CvKo1g>Ea_u_80 ghJ,ƿԖѴQ)3$|B&@݈P .  9YaE|!s U[Nwj4DtnPL_^ 7AuTw9T5_ `8*F-I/J.vwj%f{B}:ᦨnTtJ%d}| 1v\u+x\^%Y}]LQ}qY) vjiXG=z@Úh^g> tCvq@ [@/B/XƝrVP^3^xJbʉ«ה(FI 3>Ix8e_aiZ w-#%K\훣&{-Ӗh.@+)ONۙ$biXX?оz^';T0 q~Dů[n!įj=LJ''N4nPM0*8iߵǭ,{|}6Trlۮ)k;e}uT+&TC(_1Ncߝt:1. ۽=l IC*м>;Na{Wj<\ޯ qԯk)azKvZ)$xl jv뎨/,D";{M= wM9}ó-gHqh2n0̳*\=8/WMc>a)r4U+,V'ie괎h߫A&lPcڅyS/LI/DxF?5O^$(ΐCHw=ioPdO(dH(gƴ16 %Cyr,RiM: Ge~- =D<_aj!xDc{/>?7qr-5%I^IIIfAerŻ̀CB0a{A(V&la9o lX܋44DU^Jǭz_b S}{i54P?֛!S/ﯿ=/PK}DudocProps/core.xmlmMK@ 26 "< u2Ѯޱj+$twdUSժ X?鮼Ub`zR*O-^Eb HN*>QIG _2F4*O D$h6V]$Hg#E7\s+8s5_/h~/嫥IGRCg+ leIK; PK}DdNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK}D= word/theme/theme1.xmlYMo6Wl+u:E֦ CDKl(Q $ qaݰ ð@ l_EeSۊ5GKҾ|8"1iܵ أ>u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK}DҟVword/settings.xmlUMo0WD9/%|Z-PCBMwǙG!KN NjhO'f2[u 2fz꾿-[{w3 :Sw@ [Q%LLJ$aT1& Rt+3HKV'BҝԴ7l+`yz2m͆&_^pw+KWk+ n dM5yN3QF/!p E Sw߸]r "Ã6 25".@΀㋠VkE BNIay,pɸ{W<_4oC}t qFjGFٱ"9X$ 3BkoPo™89ԹPƦBA7o)KQJry\Lita` _1jv * 8źڽJit<gwG~1b/hp~vGC3iϟ 0*m128wyT$>BXj"w i%K'oY+𚜺dl1 wQ˚\l"6ߠmAgR!1#\ ɲӸFEa‰ bM\uOqCh].jkF\b[_c jlhamhh[r,Dr.sj԰ BxQm5ϙ6!d(FV/}PK}DTΜword/webSettings.xml];0DrOl(M"L$loBAA9FS6/ ,Js-GJo$:+bG)1!VJ)-R4 @`M'a:h}T LqkwWa gsZ^;PK}D ]$[Content_Types].xmlPK}D? _rels/.relsPK}Ddd#word/document.xmlPK}Dz0Xword/_rels/document.xml.relsPK}D4o}word/_rels/footnotes.xml.relsPK}D^{i7word/numbering.xmlPK}DY.word/styles.xmlPK}D(*bs word/footnotes.xmlPK}DudocProps/core.xmlPK}DdNFddocProps/app.xmlPK}D= fword/theme/theme1.xmlPK}D{H: word/fontTable.xmlPK}DҟV}word/settings.xmlPK}DTΜword/webSettings.xmlPKepandoc-3.1.3/test/docx/definition_list.native0000644000000000000000000000061507346545000017464 0ustar0000000000000000[DefinitionList [([Str "Term",Space,Str "1"], [[Para [Str "Definition",Space,Str "1"]]]) ,([Str "Term",Space,Str "2",Space,Str "with",Space,Emph [Str "inline",Space,Str "markup"]], [[Para [Str "Definition",Space,Str "2"] ,CodeBlock ("",[],[]) "{ some code, part of Definition 2 }" ,Para [Str "Third",Space,Str "paragraph",Space,Str "of",Space,Str "definition",Space,Str "2."]]])]] pandoc-3.1.3/test/docx/diagram.docx0000644000000000000000000005427407346545000015366 0ustar0000000000000000PK!"ǬF [Content_Types].xml (KO0"_UUmjR=ٵe}FXrY)7_ƙuVgFgr`'ehn "ł1O۽ǘl %9bb<ڴR`ep6O˯\8KhiA5WXB)|L[: k Ju`*B2U>~IVW^.J Jbv ~IQ|҉ʤù+K%ϯi>81+=y*3\:=a }_Eh(%!БGvxw3Q9؍=*Vp *H&r O 릳_$t {W W xJzfi].|?3WL11oD{c„&8icB;s7V2E6S>uO: }a QWPK!N _rels/.rels (j0 @ѽQN/c[ILj<]aGӓzsFu]U ^[x1xp f#I)ʃY*D i")c$qU~31jH[{=E~ f?3-޲]Tꓸ2j),l0/%b zʼn, /|f\Z?6!Y_o]APK!Jword/_rels/document.xml.rels (n0E!JHݴP[LBDIyyq|<c3k-g:E"ˋ%; .FlFTF!,rF9{Mhr\XBᦕaxPyFtk{k)GT& ZL(vcNlKs[qj"rVZ0GS!)mו&y0UDy]dr>^?s>bi?PK!am0M#Jword/document.xmlms8 /5u:f2sw㹤?@4E߯Jk~1}XvT6LTkۻumVD7m5 W).EE6ǻp@ ;N+ejС&kPFӐrrFhDn2Fs2u|sTKAh>jÑyT(k`KE_O lH謜x / }oZm\&2.OIH))4 '> pQ 3!9V0ño\cŶdL71U_/_g)-iOk{'+ tw^C9tܑ_)X=d8Eٿw=/}ڛ.?*OIpyZ>sg܈F sLxQxzE9כY@z?D,=#9e氙s[vr7}oФ*-΢_.p3& ܑ|T%£DcўNe3X]BΘP8AOy%$ޖ`nп(aDj][wmEzTc (a ܇mfỢl=, 6뀠 KYp?d S Tӕhʼp#YK0q_Գ" %~V7_-;r@.a8[8ST" -qo>wdƋg;)x0;Up,]h_=_H!2Cﺏ5XUZ)k m~$ۄ) (nixLk]n 8 dؕev/KQ ܁6ՂiV9OZm ֈ. t#a[ 6B%PBh9Gоp#ܾ3nfli=?wx8(z2_~ڮO۲~y?M#;^vh4jǗhՋrͬඹM?Fc9L WBD̊|aӢ;i`89XU&2Gd(&U KX9⚟nPէ\5tm}޽׳Q}~>Um}Ս`tB ]1~߯mUlQ$Y;Uݴb<.RVbW{Ⲛ4,SOMNG.Rg)&Ig%WqZt?)/=Y=]GU#,Y^>5{ޠST]x?ʋ|mʂ%3C(j*Q < +HBSVؤEќ6ż oǭT.JƑt jBhm|h[JAQ XxP;dVsWkVӳoJNEt> D-()RC 4%bP&US`wZAY/C`;b>q`bDQ&rEUTLŨb)[d)$"$.E-}!0+72% D 9r"9 (iguճSQ! 1$ID52:&M/fDs0ȅLi;#>ZbLL$2(VA#EgB80+5O'C}<"-1s-`[A mП~(f /_0?x=Yr_ۛL)5Pۢ:V}~CB[ݯM1<%v liryEz~v<{!bMC/' qCQ0D(-Uy]Vs['7٠2ȫ+qQ6BolUbww2'pn"JăID8_~_܅Қ]UUyqV^'DL)jeVƨ qT"z[7w8h- (E-'P8g3#68x("J@EPL.o{Tx*U J>/}H >9Al#њCc'o QqE&X HCGe,ńqo1K)@d^ȲNhH>O"XX Ir4@_kz0&lX(p2hl}1?6eGjbY~mm`a3 J32{F-7??S&&x{h͢fv֠"fC&= u9o&Gϣw$0³dILq,pN5).4c4w=˛PK!q7 word/footnotes.xmln0'"S' UWԻu 6~vBиp_˼=Q <±H(._x LpG<a0D{uK12P0Jh1wX0(6 ̅JN*O%rS 94j~.h<d#]Tx5*NU4:0ҙaq4F 0Rg;p;!c2>vrdN3jGQ1@ ,L&  ¤)IOP}?1M9T$\TΆdZAسz/ArW{ZR/ϲ"Q{7+%ÃRJnгTqaҳWyɀPǡ=KVqhؠg,ЉIҫ(*"R:QwdmClh6Krw¸UTmbR$mc8~r{fp(RܒCawk(-B2Bkrt/J<܋5Fklg?ji_=Mkӊl.3ݙ=FLVQclXpCo#4y~ ׫Iv)փ^PK!ULu word/endnotes.xmln0'"߃P Ulw=b5m0&?xdw JSW # ~>YOS NVD4x\PĄ\=:.$^CqFSFZl vK1P) /hmiP-Uxq!ǖ =\vA0 `TnȪHWƑ.i14뒖Hrbp!cdHĂ%2Ԝ,ӏj }",LX@&RҚ"V`x\O'=>W_%x7ePBpQt8KY 9 B=_)9_g巉D#gJRsܠaas׌eŀPǡ=[Oqhؠ(Sf(aW|AM;"&jN"GrF^49ڦk{ļdHipq[nl{ */ɱ܌+bsD 5}noc[$=(88WZ1%dt)Jfga-~ͮ\+b%hXg窰zPK!$:R\word/diagrams/drawing1.xmlXI6 tHԮAj6 <*L '?Mȟ8M%.;};}9h "w EwP4O yޘ iT+JpTC5pEIh%^ biEz 3L4hCM3(Ֆ0T9NFppi4ɺf1fb 2k*4G7Q D?bt~MoG'ձL[FC.PMo[F4 b!Vpjk7ɝa,Y❦ nsh mKk u&K{F]ftVUN]U0-8u7Q^?|^ɞ/AwB{^p'KK!T6Fw oC_/:H'2+u/ܕTU?7DQbxYc uX/ĆW m(j85⸨MqPˍmg+זq&"}@ Oy:QC~ӴHYL\h__ڥ|dɱ辯-rqz0yXn>qňAV/>p;ͽ*Fwݫ~cCe{=eUƑQ2eZY^dN'M Mǘ2,K3)A(LOrBGC5 o(n٘}D<3 W?/iᇋ88J#(NѥIl< DN rDRk"eb\~{i}CF}1PK!{ word/theme/theme1.xmlYKGzXk׮mRkiڵ0`r C %B 1C~ʂMTHi`®`Տ.͜p/悰ϕ\'C6"Iro ,-w{aOΣ; r#);Ţ0'07f!vw{%R!J7^䰣IY}(wmЈ=: -J-9[-FJ|^*7qz֫ia)Sgx l6-nls>^Ҧ̆9P7~5(m6R E$ tɯUnW1%[}`ݯ?۷ D̸H`f9#lS汑bۜX3 Øc4عuنgS+dKf+ȌUO.n,%-|kgmM̐U['F*%\Z;"6UasnM}26D 2lD g"8iUnl ŵ'&k+pT/{bNcO-7pUM|EM͒ 9i5Ͷ|VɜU2g]T2Y-h-֧>cB遜S't#0;ZhiAs 9m3ALYP8S&pVj}6JGsM@2k9eLGkJA뒀}LU r5$NE¢oe^Aꙸ樓 GOһm4]l p3I0c}}\jSؤQo|_$hbc8sU Ѵ'4)*S!&-w(~2BvRJCI wM2nJ]#%,}|_y'喑 s{ÙA4:vD`(^V!W ̊kjq-EtōO)\WtrLwe9 }%-5]9VY7X{=5n-BZAM1PFMjX[;oUIJԽ.D~BS_-Wi&УrO:3NZJ W^B_.u;`e?]?|^o!LE-_ޗ+NvjuX~oVZYm ^(4ZЭnfi׮^(APj%E,ԽJۍ~5|4/PK!yaword/diagrams/layout1.xmlYMs6w{Mɲ9cIj9B (dٿ>  /IVvq~i"BfM( tM$q&y>

    $x F irGg\TO'SHe`ݷ \Κ2cE괣E\fʙrpA>4ky܏}579$I:[lG}o7eV/,:(\)A% noKcՕ[L=b7zi>L8ݲf.a5;$DLx}&gG3^>+ 3ր{v1(N'^S #nOD}v>l&=m0SNZKByv=GGݍBK>VVGVӏQXK.1D?p}/ͪeq+)jD澎DWӴ6äJ%DehNIlfZ{ R]Hpzo~A2?P?v*wKNO b3y_+=2K2d?VE_$+ͩ} 龆bGöyQ {nmhmjөMZ}g(w7hݪ=J_ԳCA8U865~ˆY0ifNp X=?Q5lmire[ovl LOL/@b 7Ͽ"gPK!Yˤ Qword/diagrams/quickStyle1.xmlN0'"ߏM" >T !X8vR~vmB:&M\}ddōZd+ Ͼ: *9y▜tTTԺ'/xx'N}QNjiZV=r-iJ CFY=- mH EK~YdiԴhKtԸ`-=LwZѴOqwkN8ɓ9!馨^¨n8OS%8"IkW4dYi`W8>zrW\S)݊*1“qƑ_ NHQh5C`pt!(89 -hR<fZJxނE0\H$/aIc8,0 &xDb79F?Cpw%P0^G6*bH?_^x?PK!<4Aword/diagrams/colors1.xml]o0'?D_:Դǐ*Uդ8Nbձ3P|.$ sΉ8ǁuLp8!z|8RACK?S.=ɩn@T2u]"CytoE (BU{:>1(=\Đ0,McBP'* Ji\he+JؖhKe;A[cyL2bWM?[fˁo) ٓf1GOHE(cZaXaEil4*fq$oO)xҤ[ )qBTDaj(Sޘ%酝]`d1{c[{>b5uaqe:R6Rʗi!nJlQ-`k'[ 0j@ab1$PEvk7YѫVujezw\({cBy 7QYWbW95~P}rih~}qBv ` $mhuuYj_L8YmS%-)+qcryamĒS72ʧP,ǂ㭝 fk>}z pk{,{GzMմ-%mOv%ÊfŅDy@ 6:h~t?2%$ ܱ_WTPaj!ł(Ţ1+?*Y6nfm)Ha4nMd_fi2Y4%0j:g?]7.PK!S%zword/fontTable.xmln ',cOӨNu4iE=8F3`qHdٲj4 q|WMF$BsSJ)͜$.Yc(AyXw-*$axAjEb02Uݤo2'ײHPLUI.>UBZ he GZw 3lkVM)& M.@JrkTn' (LhX`: _f\1=#s,qf',8w3Q򣯩e sv wP#6Xn%g?RK WHf 3X#V@˴alǚ` +:N$y,i+ds8IhQ1+c[XӂMCO~!~PK!= zword/styles.xmlr8[i[N\Lَvx"gsH˜$>Ҿƾ )Anb%H 4Ir!ӓQPF"}88 eOF<8/^c Ix2x{;9a0Q\,܇,hɐtWt=D:SȠ+WC`!1>֌meisD㌗YX<*9׌붶e|n9QKk( RiHr\`_ J +"X2]ʴȃcBܫ$B4H,/NsZw{¼6HO,>4[u ֶ,}hͲvKNF<1ћ{2bTnX~z36JJ*y|v#GM dO6˄T8}ToD\(u`:9鏜G_BYWG/!_蔡LWmK:1WۭǬ~ΙΛ[i> -rMQ׉Du{NNd04R)O8599-99%9@Gsq8)dB+0(&׌tVk=-9Ǜ-W5ˣ{ZYv [+~5#hizڮ@ZZQWI%8 C}zfǨMM+7K`3;&i-y,{eKY]_K]j R|ՀU{9F hX)(s/B Z*D `8B{PP!G*D hBZi%THA "BPzqP=NG#THA "BP!-T@ "PB^BP!-T@ P=NG#THA "BP!-T@ "PB^BP!-T@ , Th**RBP!-T@ "BPP!-T@ "⳾Ez~~[Wu_QQMܬE81hᾩ7A4\vVԍot.g }-5-Aw%Xute_L]Iy(EMG+Xƻlm!і!lǖa[Þ4^>_ ]h܄j1F_ }&uwj(3&`] ^WC!01b] XW'g7jv5DNeXWCՐu ىw5Dy\ wXWCՐu5$x`] Qޮ(?W*jH/W!jse([Ee-C\r =%ڳZUs\d;M=7?c((?W㪥6W MW-9]:]:]ܮUKmUKmOnqRqRqՒոjոjոj'd'ոjոjj\j\j\j\t5Zt5Zt5ZrW-W-W-W-9]:]:]n I²"+ 6 eģ7^n?J[3 ו`k9:ZJͦpé{Qd|W2)S}:?ز]C:9˪](muqٽ3>ٯ.׫=rNn5<7껳|Nwo4 nlHlٔVZ݅٘TTOiw^z*?,sTfzUߎ,Hn4ohɷwzճ9W/_PK!\aydocProps/core.xml (Qk0%m,>M̱,jf$ZZWaoqs|v %( @2ŅLj>:*9-)jYq31e( 'I1=E[te[|BzsLEf5e;+pSGq @D'$gRM8PBYG1dl?JFG+`]QvQ??/oUC!]1@EY+s | PL1jV[3R>2#G>]R9SS̩@;Εӆ D8"OkudG:^-P$$L&+2njvQX&1Ng@we~SWj[_PK!$6o docProps/app.xml (Sn0?Ǵ$( Aȡi XI,J$An_ߥtSu٥סqfٜU`krUmU,&8 Ċ$lѯ8z3J[t. w]g4:2Eϯ9" ٤:N'9zғ A~K xơ3xfbvB g(O@*(@ xA'{RgEa0ڭG \𒊯xVP[fbUk*^v Q&;]I]껊ZV FYdӱl |drG2z |n!>tT4;zvJg;PWƚ?omڕ=x6z\Q$Ė҈r@QM'T`94A{;Vizrq=7)FPK!U(customXml/itemProps1.xml $( j0 ݵ9]W┴ױ®$36};uǝ'!}?*vD:D5q=3IViáZݕmܷ2ɘ|- EwO EI`V0cF7vL04 jVƵ+SuFƫjȆ-Qs7;B~]%-WsO UIyEPK!'!(customXml/item1.xml $( M0FBz.X~b[1!q_Mno \N}/Ml&Vf" pP*$싎V!$PBʠgp*H)$p&:@,eozkhjwGՁ0txN~j.G{J D60o,W0H9X)ctl'_uݓ|P=;6w#w Ev d*yB1ߪ kPK! )NN~word/webSettings.xml_k0Cɻ)Va ^`Ն%کsb.! SXj0 E eC.@b7YWORŠ\T1֙+pXSa# z*&8Mk,Kց] `YDO5h qs3 8bun/0/]?cv0$G;LO)Μ%sP2>ޫlcUT\~IMN޵wtڲį%ܶ\uCum bh AG?f PK-!"ǬF [Content_Types].xmlPK-!N _rels/.relsPK-!J.word/_rels/document.xml.relsPK-!am0M#J word/document.xmlPK-!(hC*Lword/diagrams/data1.xmlPK-!q7 word/footnotes.xmlPK-!ULu word/endnotes.xmlPK-!$:R\Dword/diagrams/drawing1.xmlPK-!{ n word/theme/theme1.xmlPK-!ya}'word/diagrams/layout1.xmlPK-!Yˤ Q-word/diagrams/quickStyle1.xmlPK-!<4Ai0word/diagrams/colors1.xmlPK-!)hT 3word/settings.xmlPK-!S%zW8word/fontTable.xmlPK-!= z:word/styles.xmlPK-!\ayGdocProps/core.xmlPK-!$6o =JdocProps/app.xmlPK-!UYMcustomXml/itemProps1.xmlPK-!'!NcustomXml/item1.xmlPK-!t?9z(OcustomXml/_rels/item1.xml.relsPK-! )NN~Qword/webSettings.xmlPKy-Spandoc-3.1.3/test/docx/diagram.native0000644000000000000000000000017107346545000015702 0ustar0000000000000000[Header 1 ("diagram-after",[],[]) [Str "Diagram",Space,Str "after:"] ,Para [Span ("",["diagram"],[]) [Str "[DIAGRAM]"]]] pandoc-3.1.3/test/docx/document-properties-short-desc.native0000644000000000000000000000111307346545000022354 0ustar0000000000000000Pandoc (Meta {unMeta = fromList [("author",MetaList [MetaInlines [Str "A.",Space,Str "M."]]),("description",MetaInlines [Str "Short",Space,RawInline (Format "html") "",Str "description",RawInline (Format "html") "",Space,Str "&."]),("keywords",MetaList [MetaInlines [Str "keyword",Space,Str "1"],MetaInlines [Str "keyword",Space,Str "2"]]),("subject",MetaInlines [Str "This",Space,Str "is",Space,Str "the",Space,Str "subject"]),("title",MetaInlines [Str "Testing",Space,Str "custom",Space,Str "properties"])]}) [Para [Str "Testing",Space,Str "document",Space,Str "properties"]] pandoc-3.1.3/test/docx/document-properties.native0000644000000000000000000000424207346545000020311 0ustar0000000000000000Pandoc (Meta {unMeta = fromList [("Company",MetaInlines [Str "My",Space,Str "Company"]),("Second Custom Property",MetaInlines [Str "Second",Space,Str "custom",Space,Str "property",Space,Str "value"]),("abstract",MetaBlocks [Plain [Str "Quite",Space,Str "a",Space,Str "long",Space,Str "description",SoftBreak,Str "spanning",Space,Str "several",Space,Str "lines"]]),("author",MetaList [MetaInlines [Str "A.",Space,Str "M."]]),("category",MetaInlines [Str "My",Space,Str "Category"]),("custom1",MetaInlines [Str "First",Space,Str "custom",Space,Str "property",Space,Str "value"]),("custom3",MetaInlines [Str "Escaping",Space,Str "amp",Space,Str "&",Space,Str "."]),("custom4",MetaInlines [Str "Escaping",Space,Str "LT,GT",Space,Str "<",Space,Str "asdf",Space,Str ">",Space,Str "<"]),("custom5",MetaInlines [Str "Escaping",Space,Str "html",Space,RawInline (Format "html") "",Str "asdf",RawInline (Format "html") ""]),("custom6",MetaInlines [Str "Escaping",Space,Emph [Str "MD"],Space,Str "\225",Space,Str "a"]),("custom9",MetaInlines [Str "Extended",Space,Str "chars:",Space,Str "\8364",Space,Str "\225",Space,Str "\233",Space,Str "\237",Space,Str "\243",Space,Str "\250",Space,Str "$"]),("description",MetaBlocks [Para [Str "Long",Space,Str "description",Space,Str "spanning",SoftBreak,Str "several",Space,Str "lines."],Plain [Str "This",Space,Str "is",Space,Str "\225",Space,Str "second",Space,RawInline (Format "html") "",Str "line",RawInline (Format "html") "",Str "."]]),("keywords",MetaList [MetaInlines [Str "keyword",Space,Str "1"],MetaInlines [Str "keyword",Space,Str "2"]]),("lang",MetaInlines [Str "en-US"]),("nested-custom",MetaList [MetaMap (fromList [("custom 7",MetaInlines [Str "Nested",Space,Str "Custom",Space,Str "value",Space,Str "7"])]),MetaMap (fromList [("custom 8",MetaInlines [Str "Nested",Space,Str "Custom",Space,Str "value",Space,Str "8"])])]),("subject",MetaInlines [Str "This",Space,Str "is",Space,Str "the",Space,Str "subject"]),("subtitle",MetaInlines [Str "This",Space,Str "is",Space,Str "a",Space,Str "subtitle"]),("title",MetaInlines [Str "Testing",Space,Str "custom",Space,Str "properties"])]}) [Para [Str "Testing",Space,Str "document",Space,Str "properties"]] pandoc-3.1.3/test/docx/drop_cap.docx0000644000000000000000000003646707346545000015555 0ustar0000000000000000PK@!Qr[Content_Types].xmlIO0HWj#TkOCȞnIn)y}[ML!DlY%`Sڎs>|NYQX%*g!g ׽ bBjsV"Σ,9* F 1B~1VKg,X{n 10,y\Q9WZ 2|.@Vmѥ+MO,7>=Gk yd C |ɉ!Qvx(vIT٦bkXH<Ĵf.1( Foa~ܡUH;͡H#ˡV4$AwټoPK9L_rels/PK@!' _rels/.relsJ1Ͷ4ۋ0&dEԅeq>If9AR6x˪A^c}౽[\Ȍ<)8RMs~~ , g=s2*D !0u2~䪮d̀f[ ml !"2ؖ]D#V`/Q2i˿ j z!31-Oi4y H󕞳Yø߻'vxZlPK9L docProps/PK@!SodocProps/app.xmlRN0WYgKK5U= iG$ؖ= ;i qOxG_=Q..]4uEDBuUE#J|evT*eWRbl<" ̽] ]G8R`i=3K4-x+jDOCKcȤO~c#[7>zp=5,\~e+)ygeƙK츺A2T-2Q7~0[ Ϙ AO{ɯ;@c rjDOKmV2\|p<]U’$O2zw>6Sol9IPK@!}ygldocProps/core.xmlQK0C{vuq :Q|mkߛ[g>|\OvUljL(&(T1yO;cJR+= W97^6` Ia͘3WP1<|qmŜOl tǷs6FrP +Ɩ@p %T$Ju`+!+.bOP`]Q?Tͬ8"ӶxD^5XrZ35kmz V<]2t3 ~sea+Q$-ѧa]{ ?><ΧM߅hYp$ ߘGA7C-~PK9L"W7kxdocProps/thumbnail.jpegXgTغi H/!# -X(H  $HBȵ@F$BB""DZBHI<Ǜw[>딵gG>( K-[~ ?Ak+`KΖ-um1;vپuO?<`[wnkҎ۶o٪k{T:eqD|Q:aVVأ+ӢJ`ɤarva#1wr&nvUݢɭzG5|@˛wh j皩DJo8IB19Xlv<!R\\2?@vGz}R7+N\ZJwN6caO}+>"7g.!\cԮvHk}*u^KGjk4 E~4n W:?YgSm: Q Msklc >(oi7{bv''Z^$FSr"r1G3dw W{3.v%tYEw {`F qY_zi2RzqʰɛBgV&_l\uU3s/Z\S䀓,aݯ+>]3@/J54A'0,5^hܐ3?J݃|8mrû!5j~&lG<*^f]^3}c"#Xb w׽y dOE\y%7b1I?o}<,kTŪ{N!<;IHd8M aF?F9ta-c4p;4h( QH4ݕhy:,"-EY}Bh>ælQs]7l~=Sͷ ʡ/WLjŽ,Պ,$"EG&|KqT"ZJ_Ԃ) KSnZ;?[Uk٪ʠ(8ZydzM/IwA6^u.99nj邳'iK엂g_`~1I `Y@@ 2xA+*uf[EP=w91 6B6k,֎J_@ 4EdG`8c-M~9!fvh41$_wyL=0݁I$js ol_=buN.'%#(Ȣ`/Z}d d(.-|qۛ ^_$sCn umfqdABinJ5fa=KnrIˁ3ӿ?v5.|gꡠž䟿0ޞ|~H6)JOz8Y04fF_Y?Z)46#$OE92uQ!%-)Je` I]K1fS:d ԾN]/ &3; R-ZM*~5_muI9CαgwG|{ O혵ڛXXHV9J٘ਣLC A̿NRE4[׷c :^M'#k=YR5^UAT.`n\Msuʡ{+6#2ltjT8\O o#416O,a Yn@1$ԯole00g4G.t2;眎h́. ET [{XU}@$GCW_7׼!ũ UXU1Jg}H1 nS7Cz(0 ( ׇF0GKp{N&Ez+DBݓt#GƟx3ͧ%S 6u[^?PGU.AJ(-ܗ闄,WYsKO}3~fπdV6J3q_ xŒتFlLp12xE),D4v-A)8]U\'p(؃H㟝 kÇRH^%>13Nq)}ĕMYӅLт_4ZJ*>Ωn8&8Z#+@C /SGرQ,T+cϷ-Whڷ Jt/xCuPr縉DXȂŊբ91+ͻjR(l:f_6Bp|S\fU`_8XMJ'7nF>tjy:ؖ#v[_50mA倜dnхE=('7):1zI #XT3\I#%8u> 5L~FCJ.Dv,ZSeEŰ܌ﵩQuH:A:ưF'!N5[T.0VGB?u|hQOF w52p pbLeI fV42R Q)Epu5$O&\k.<+џ\hN>Z V"5?]9紞 ,= G v&?nڅZ66K渨l#tb%ocWUYid1(l_Je8y |YcԠ2'iXt=P}HJَ_òvtsl|oװ5ôJՓ њtbR7h&?,/W27hvEƟ_lm2N؈Gy hi=-d?\o [` G[PN˨:A5Պ_ ?ۼ`} ٿ 72 tQ;'сm9#Bz6! ]֎h輖+.:eΘWq$XPJ`'X5wDK$<%x-&,Dz V "-^#PڛXnfz.!/H)d4_q^P4KvzuCK_`s'z_q=% !҈Ap8sI^>*fZ}|?PK9Lword/PK9L word/_rels/PK@!huword/_rels/document.xml.relsN0HCw@AN/+qvubۑ1BgV;YZ/I,< A+]mi}v I aK8: ,NOKmHb j k4"E'y#(J_VQ!eٜ~{ɪW9$d;['_ Z`BBsҘlbJw<P1)A0~1w{[mc GA]ّzw)J3?_WϚ;PAyo`{PK@!#m1 word/document.xmlWo0O8mGMڪMQ'e;_g U4m~{_..Y(gt}! 4r\GibsF"wC{9 cWaRʹ)nA'y$x%Z 1Q Λ Fʭ ~Zpdʶ/qAl&\H(S˕@.hN`ma֑,1:['ce^oPYfM7d 5Q D4`Wk͋vNnFPL-sӕ8sfJ q'i\j ,gM6ji_cPK@!kxword/fontTable.xmlTn1W;|k/,KUxVr%{hꡕz WwTRC!gfo+Mu F em~BT4gh<v=kF{~ڊeh}َc\Q0%P,UԎbEIyƌ*! 4lalFXn6;mf찴q@BohHCƙ7@L}@ #%QXHK"ԩfmM=VP(6MNpq)_xuo .rFě /g5}F{T 喦JrLeV(|1'!{o䲕دǞa]<` ! vT'!ߵ6or}[.zށ·}-Nh˫PK@!a Tword/settings.xmlVnF}/\Խ "6(X#iav)F.РO3=3_-jLd5Wuy35YT̈́VNN`?-8GnvD)eNΙ>nStcBtHkh_IlBy w3+ܨS0?[ ?,O6Xxf5ޫ$YhY0Gayv`v1ev3UeF?HvLh7P=J|UKshHa%bC#kn- C= tltO]&yɕ{2)hQ?1p=m艃YG5\fݍlO^et*u"&>WM]O{niDžVÒwo 4bg~l-"eĖ;Ј!z4=B_~n뷜iI"IÖ"4_7SMVgfZN_nOK;i\ PK@!CC:word/styles.xml[O8Wz)#˂2S>X$vv~KK!>hlϷ/_4MbO~7 (Db]҄$N'¯'euSJU`:΢Ihw:*JhFԾ)7s!3ͥ\t2"^$h6c)O~; k Q9蹈庌HEUrV[AVBƹU :K+042I\=*Lx[0ȢR3yF(<132ժ?k3T#1uu M %J*F+/겢>))U,PMI?Xe)u{l͌$$rozZvu^8\U^MYXjZ:TLnX_J&Qp< 4cW,i ybOBsrWԊXr?K1yL-'(ҢKܛ,w3%4uKKK %FGKhUo;|0D4v5i=bhl kDcX# nh5;#"R^7b{Z iuD$y`CaiXW{~]j)Š0YŔ9w#Jdurδߦ$Hc*;]`&sYo"4)M LM)moMÖ}.l42x"v;@pC?G`wvs FH/S= 6x2>(2on}Cux;bX~^r6_7S[U[Ϛ֎ Zfls)50y~tp;%@~ǥ<! ¹ ڹ( y@81 C1oǼ "7` yXh `7cy@8 7 3o Ǽ pS@A0oͼ,4p1oǼ p7o;ϼ,p1O1o41oǼ p1o߼<p1oǼb y(h `7cy@8 7cy!x `7c7y) =x>o~o5_tN% 3,{вA(6K(lڣ]iWtn*㽁^|.TȖ)7zvO\IexYO\t"?u˾ԊX6QQbXrNx -YeG'dݺ^ڽXE&>;((upP57bR|hn=͜ĎwjS.hF}Pb7` /:I%%N%gKho?|4hΈƢhΈƒhΈƄwF431#"R7bNkv*$+I$`r@a^hXTZ $ׁ0 @сK:Kξ xB7}@A7,}󷿣8^V@8 oqw7ϼ,p1o-y( 7fy@8 7cyF!x `7cyP@A3o ͼ,p1oǼ ͻgy@8 1o41oǼ p1o߼!x `7cyy( 7fy@8 7cy@ 3o Ǽ ٦4K*)  `ݣFEDQf>=TEnU7͓υl!sWeyU4\t`DP}T5VԒX6QQbX*x -UE"{WӰβߓ;r.*QPtiKp2ehYpZte 4Mۻt˳ Bk1U4"Ǜo]EAhsBQϑVRPK9L word/theme/PK@!!Z,word/theme/theme1.xmlYKo6w toeVuرۭM$niP@I|úama[إ4:lЯ)ΣM6IIÈ}"$qr.,Db4ABBRnjǤmMeB\m+T*Ym2yBbx6" "}ozbGqloF#h֧{ b%]/SdXIDv@-9TbX*xжjDz/%SKh5~) щ`X:͒=翈zݞSRg췜Δʇ5֬5jqW+ \j+͍zߜE;J+ ՕfBFt22%d5#4f([ˮ>Vr- .V4FjŌM5''RYHz&m}`_>{?=уG6P]qS}z݋_Rgto>C>&9@;< PbbSlā1Ni +̰!UL{wC1VFÅѦ, 80 cIvw.qLM,! 8 1Q(}1ݥ- .Hu05d@LtFIAw7[wP3M_EBU`fbIXōWXȨ1UhRrw"åHq&[bRQ:sط$"{& ̹{GQg:#)6WF%xB9K}uھMМ 铱0z&q+:q;ϻqC|Q'jfQ/ͷ.>}& }s~ߜ漬Ͽ%Ϻ36S2&ܐY`߇l$a! Hp UndY$Jwv?`sN/jrCllY uAi5.0'R㚥J5oB JpVhḦ=g0  Sbb5{&%ɵ'ۋ UZIi Qdi0 kqUsV95wj0M_3n3`h&ӢrC-ВшxjlZS+wH ջopM Gd٦|g&yͯ5}m+X}=Nkfҝg~M/hTxlv<>*yxU_8[q)Z<;jn,q^ٮK!l(>7z3fL`EfbdrGL[:wQp9N. $lLXgHI\?Jgbfs|Ebʛ]fӺz]Vx6%9Tw]Aڳ]PK@!ʳCword/webSettings.xmlQK0wP)k _PYzm\eu r\@!P2/TRP^eL茧:Ms}-$?9%pVcJS5pNi$)ôInK'}SwK{g!e^G"RM͗h3ndYAq)oAl$>ryX^UzE@4WюRk,a$hQW-TՊTǥ<:T\Kcy֡lpI@1U+r&5T/˜ Mc5ZLA"ܵU?'~搸Az,Ү|--'MO\~S]竃ųڼq1?(s;G,?oFL< ҄@>-B77b8)gΩp{襳 rc/%4?}J뮺Bw1`x6~PK!N _rels/.rels (JA a}7 "Hw"w̤ھ P^O֛;<aYՠ؛`GkxmPY[g Gΰino/<<1ⳆA$>"f3\ȾTI SWY ig@X6_]7~ fˉao.b*lIrj),l0%b 6iD_, |uZ^t٢yǯ;!Y,}{C/h>PK!iNFword/_rels/document.xml.rels (N0HC;q[Ԥ@8:VM\,Xv:U ֕h6,#1+M $l T!Wq +'Ν,@ c (Z/mk!D|4m{ͳy'_FJ (W -IJo*lF=)!n@RZt(6?wҽw}T(>h+19qї&3H=^¨O:?3ެ{F APt@[-1r';)!>րؔ|w 3?PK!޼word/document.xmlUn0?ǒ% A7A.F Z$@RVݯڜHe{oH7ghCHtLT)xwrc1hG p$jN BQY*kU&fid(hFF'bYרi|Po,4n#36߱"NtqPxZg1۬7n{(>|߼}iUWwUaEPR5F4܉Dsx,2߹ Ghŷ5;KF7L-Z#,E_j&JQk)7XY-\M9u/opq9eYC z|XsUTuD ]ƒԧ^jGTPR6-ޏ{N̸/\?=)sF> WOcq R쵵_: B-4˚b g0 SWX`=nC4-+@ki㼵߭ RڽiY[?efLRȲc]kZ Kj3`Œ\L=FnJ c#*Rl-9{U,F˯ưƗ&6#?m}OU}IL93]EZĠ5+QL€y<\9߿ zh4|2 ܚ}`Ժ%ӂD;@+IQ{"tYDMB3dYi/wF(]|ח?aηo׋ar# VWnn d3i Z*¨qS8P~IYgyEPK!word/footnotes.xmlĔn0+6V(6J[}ט`{,ۄw d xye+0)DȔ٤D>pLNzr G0>HIM(Vt$t~,F tz0>X+|[حԦ >9U\'Em߻%gƊ*K?ӱX\ʬņ6İ,ǺO<~>N?-<~1oVY'PzƄn^zIkˣ%c?Bi]٠~-R|@x-*f*yWҰ?KQ2pKyVˢAZAYr =w$B+{o7*-,>bp2-hӵR* 53^tfXS ,)~T6*[G9:qS\n݉!gTZESRe#/~zL* u.CbMΣ]TL,L0i"DEVC<#$3Qi[$͞Pf{Vp C:ONU _'sblx } .n328c]?Kfb!ֱ?.>hcυ]i#_BM^J%f1LLS~{+;w[i}cʓ;W7R@T0vé# Gmz6gOTB8.T n-JzoNν;/+xJN@  ᵶy ]ɋxa36< uȘ.߂ҝ N}6pqi{{1kֲMxQ:ɼ586g_c8@՗[@0(n` ' E2FR}l%~e,Tp=#ڭ=jCRھPb诊 +$n5TL_0z^N#m=PK!word/settings.xmlYKo0S$#!Q|>_mWQ7R>ieQ@{`Lӻa}xG&jo7CэCæw`ʹjW?fC6yl]qqV}Qi]Y#"-\֯Mwm;4 ct7,Wt^ Ϻ)N//윏.ft}e7SΒ\*pgH&]W*~j~g{3l25Miw#,POZ3oLyۏ>!Ue!qqŴ__ $Q:{3JOHLސ(MBGmv,5/t"fA=Ibqb1\',5KcXudJ+JP9r<:TsdND{{c;(!ՙ~ t:nnv*a;hm-OOO?K}PK!4-word/fontTable.xmln0'"ߗni7kن߉ndN|99?}ËVA8/aV]W7S̖)kD£w&k2jB3?0NnjnułH%1OPgqE!`^ bGk|)+rqVr=U맙4 Όz[,B;c(`W -:pI=7LZ䓨V3 *fjLSN- ~26Nd΋V.xR] <d3XcLW+*$GKP CY $>>OLrAa} AA: D\ Ē)qrū&I F u$2q+?"q b'f%7 td$>kwgcOF^:l,g@1 m™PEl[DsJ%_NDPK!\Gnword/styles.xml}rƒF?01cDw4m1vs")BCRn~ RvK*Go'|(߿lwW듇Ï?nc[}yvsl)wŪ}zzqlB"|+XӶ-ڷr|ڔ|I?(ǬXs0gC cؔ~7̏tD?P)qu{\|dw+@޷ɿbgϫݖ|ް5/׻mۇl(/RX7mqwlxsƮA&s Ų8|tG>+2*[~+_'Gi0'i -~_ † 3Am+G|L ?R|y'->or|z}ruE oc\Ddصe|Y9?(;a]\Os:#DD^r=hT(sꄉ'bİ9 %b|Ri6b&S(2bZ HcT@X-p4K1_* SihW.tv<:%yΩ* 㚁@^kB27HXhFx0V~ީwܭ]jI3l l{7i7L 80W:]*M:yAnю8w_|}@x+zr 57yQ.\ ys? ]}|Dw+RX+j+O$) c+EA)OBoZ{}27@b(>{N=y !ltZ2_ӧ4`Y,MmojIim繇{M`p<do }S/nwg&$Tuofn ,N,v~ޗ򉄿dY!.`T,/_t;FG"Bk+Gh OALXC$YZ@+Rh"~vy[ o'5B8/jA(FlSTs1¡E>3_pvT+T~}a&XbRkb65B$~&V0RߎđOVTTT/C^O{zcbnR*nWO~z~\o _O=pïӐ3ocS,S&" M.| `*b]F#n!cw&M/H_|7n"}Dd'@H!$M?>A{ KF MyO)5-d)~};=jpjFS{A.jMD'3WtJR bi,Ac?+(=0ɕVz>/ "Ew|\D Wr|Y  Ψ!QJ Qnd#`ipxQj7Kpt8b.%b5N#t!SS4rX2m9lFF3Z-VK0R(䇗$ɨ`D.I2?=N-t!SWK]Tw^Hh3Z-VK0Rh3J-%.I*D`RL$F/θ?0Ut]R@&RX2\-VK0Rh3Z-VK0Ԓ^Z $BD%L`$ɨpMЅL]-taR\-u!SRh3Z-VK0Rh3J-%.I*DTK0]aj)Kj KTK]R@&RX2\-VK0Rh3Z-VK0Ԓ^Z $BD%L`$L2NVla/(fV^e bqq*JܜJDĶ-n=Ħgd? `SE ڜu ښdeҭ p2³⿡zt88 ;îiYXxe|WKMꚮMm3lC$a-d؃L<1?Cw->wwd[ ax˴tq |_ƶ?mMk@ͺm \ -Hy5 ;n}X-Q_&0"]hC/ !^9o$~'Q?b]}̅t5_D[Wђd+ᵆ4gLB,02 J12IZ06i2VvX q9,YRuz<#x2ʅQkQ.^)8ن6$hjmFm*א#6SmH:R4jj.j+P5M*Rr*$澲2˩IRkIh;']ihCIvSJiŌô}lR7UV&&~ߡ%\֥KNKNрL!ՙDp<ɀ>pF )^r 썤[vK4e *pqƗlAPO1+?ڍɗN]V>fc 1Yl8vofhͫTW6nkj1iȣ<}~~mA;L71\3"8a /`9G%d7t" /Ѫ#Gbf (nf^ bZW/[9++|1!uvꗪizkQOK2&x͌7FȈsG̎zL͎xƄ˧TH%3"NYZ<#кmOgKZ+<шi C|t>aH{dZ1#MFS* thߨm82,MU7U:OcIVe7{Mb+qƜ)sYY]m܊KDd>C.UY"YSR}孑ˤ# Lmqi"Vav߀.FaK麉Er*['-Ǵ%\+#TӲHeHK"mĺhXz2b9HGmD:~;k0Rhin-эEn~P|wZg#UKd+#Cg 7p,V'<;UGϦzk08oQA*#>:{rzϘ>)`Nȳf[d'm S)QWa楥P#))5M\bґW*#1:e)*R!(VHTptV$R]^ٰ ǀ1X: h(՛R ZcZWe%€liS9mŚ0iOfd3ATق pj3n]e @Ă(52@fXVWY ;A]iPtt5sPyA+)#JPKQh. 5m hgE Fa>:>߫L}Hm HDU @| M^(o05a3H_GF]fc^eaIkwS".dHm[B$QDi!nrx0X&.XVg{ u!$9hz ؂Vӈ8Z8`E_]{2GI= "&Ы9*&1"ODU[ϏR&ƞEZEK#w-X'I?Zݐ06lpJM`puY_"&Q(#< 1bYeK)#._5'{y3 iJ=vRE`}c|=RFE+hղܸsyen˿&H ^E`Ajo-⸗PgnBi4@dE7*#؎TՉٹBɒZN${Zт]7Ifn%%n0ȳm>%uX"njLzDb۰ @]N}ń¦BuWVz ߲y~+![e#_Orɷ[M~/cX*Z %yh$9biwEy}?(fxH8ɞXs^<rל<ͪ>}gWh'nh+ݰI.jQ5%oy[ N Ĵ!2eɪ$M40)[ S+NfJ?ɂZh_65 W؄yMH-)""Pkc9laT$0:'SoTDD?}6 vO}?I(₵,Uk ⰾcpe-Y*c\jTs+r*W(?r朔ilgk3 mݍ,,ũm80A;4q債c:yl.mwA9f\3xѬ$^tFAȍZFn<#9>S3qg?=hnG'Ɂ*׳x4,W% HF*p,=?an:Т/ x0j.?_Tj|fp0їSE̘WR+̰ 8&bƼ.Va=$f0~gCa)awOx!b=i+oLX?0"ߵ<c79(1Zq솨UdP*, 7?2,և#nI]dSG?6,cnsIFel(-Gpl b#дƼAmEiЛALK`KQŰ(ŀ#zVQ](,ZaӮs6TN3l"Sf,aƮfO3ЮAE1԰y^v7ml< гsL\LwǗĄg Е"\ȫE,4%LI͆շjHo2 9tG,.B?V^+ScR`wbinpݑsqˊEU Ycx԰5vc Ce)?8W3ś3 YȃMbeA%ׯX\ӧ3dJNXafD,5?gHE4;a& SY;+՝8<1ZBht:ۗIy *=I틈yT))X3*vT XeI=q,ܩg$JďXm#^#-d8: êĒ2EWQz6!9#V=b]g?DY3ڈgN6kv @%C>| NmsniYe#֤g#8eJ&ݤ\Je2>xd_۫Qs~7k|'Du)sхS5i|V۱xn⒢rsHݗ8ì&KMa-8a:f1"(ΛW!2_'Z2!g2x*>Dx 8gkn-+smqf&qHuۯly$RU ,eJ;hVFz8h֗_o)ʬ@,l=r-cX.5N]HlO?[4d>j?əZQ@E77{ޕA2' sGX{U]p𚷿]<RVUѐN}[7LI͡+Cf+42h1xl 3?s؂!aƖ=B_)^Qеb_  U*/ Vq1YP@P;5dTVdA85U[j&Grdwy6bW[@a"ÉEG0{2E1e&VAHsB~ .:Q5/¶SG:g{Y{la0l@Z#9Ū$'b i"&/T]> /aH`JֱuxLHUK>T%3S51ޱ߰;ؑ&+[C`v) eKa8ODqK\O W!$K`H녮X"ڷ[ذI[en--HϏ*7Vy,1i38*hʫ5R9a\c4\Nj:f'p@%^z$?Bzk~{J:;6DʳuCV<{2

    kN,o9E^G]d*Up"!aOp18Ԧ'x"ݾÖxڦ?a1HYLE_+{̓C$ZTi=%\v6#7b#. L;pn޸D%~(!%٬pJ)1XFS.k>e+.J]JKUpڕO8,gs 1j?{+XNnّ$Su>Ml3k}G<-vG$|X)V?m@ORKN &uNS.{}ΎV nUĠf_e?^MRw~z/pz-NQ!6a "F\5:3⽯uMi6N[m?MEÖ t UuTE'"J.Z*ϫ0ᝤ6sߌg1pɶ\e[CD,ZGXd ۖ7QyF{S߱oP'H-YY&8||Yu>xKG'Nφ,ff^B[8% UUvܔ7lۛ`;8y*hU ;$s2y8tslg̔ht.3ezd? +'Ba@B$&D%xxyR;#T$ &A=*2&mPۗ*9&f|G;&r@ohov7+oQ}~7ŦxY5fP-_~[i=qG Zm3 ftl8,wnֺ/sz?j\73=\7 R[OոUnj˥;G4c]aL/9#֦CtZ%kZe`6p#g6K#3md8 {vJ {"AOObTFѺlSfw~a4WWa:nÿ< d{lAPۈo6boL S.e1~(r?6W7{x _@ѣ]Ý,^J(W_X*)z;8PZ}}_忕zy[W qu ~)Pۊ_!8lM^VÇO*i,t?ep" J~Қ c! ET5r-g*|ސ!P>/6`5[<"A \O/޴3]Hl$P5ym猑l"ِar rdTtXV"{z>^n&ۚ=gӺE\i1I?5VO[jC{e3Ss.>}-tz3刮%evdt|1.&|Dtpv9-L5{zs>=ə]佤=mu mhO;{Z)\Y]EYeO>lSĮ#g "L)/PS RlcgL~ 16wƐLs6fM/]gL`.q6]j—xⶤ*)u]&oΘ~?F1|7r5c:@qE֘4kP[cD53A_Φ[ * Sj~uUN t)5]tz}2IT!V^0>m]#1A 9T'u5ՠ^\ gf= *BU$Et^^mz`Yj6 +jU/6׮Aul jΠ?Sֺo|w4@whY&l_)_e@A5:ΠvS饥ޤ^Ԡ6׮Au jΠ P/͓/E?Ĕ IdPkߪ3m;[C}5> IWAm]#1A |6Z(ԺP۔5rz#K|WUUdP".B}v -L% j-T"@%,N%Ncy3d \ 1p)$ D&)$|^j0A.o T{Le@TeéO̫[ME}խƞsT0h+JE^]D0$_SXFͮ$)LFCp|)MAm~> 2gkScAwoY7e¥j9L«' މkx@[kJ,6qmY[|]s+evA*+ K͇,?d6߂)~)0|G +Y0Uq=n6-E+߮ ߫&cW `³bqy )eLҟ '#F&RYk)B2{C0=b{_$ y4kf5mF<~{#2C WaDZ(cE.q"y4>vqlVbX&d% J]JUvlQ$th8lAVĕ blBֲ>1-5Q77vwwEAؕ0i˦21v.SbV\@bZѬ]+Ϙ̀r0誡.5uub(,o-\x|^oV+w*h lB0XEwVq*J-n5v9|#]Db:Ű)f]br>"wb`;L)UajŔ1K]bPe1}g~ُ|r(e"rٛ 8`?|o#Db:v~>ݍ$ W '񅜬6CUWR&]}U> +ȕf6x"2ϯST\k~њ"ZL9vJ8x5?<Yvp񻯯rUSbj].Űn Yq'>vo& Њx k`%7RvPN a*; ]^ ߑ."1bػ.h|m6k~J~ce p7$xZ2N-͓k%|f.9V9&aH՟'*G K%vIb.j.^ʺKXɍ 1[@#]Db.v18uũ:3.\)vEChF.v ]@bx:Ւ9/Ǔt]]wQ_LnNjs|s/́E blb[m_9XEb 'Ț*qK͍̍8Tq#a:rq-Q ܹc"~ӜaX: HJ.Ax# Wsy898v1.A^o.$ BE_!5E8~_p$P+J{Brㆬqֹip/6i )y'4Gc,kN>W\U7 7+ad t! ָ"Jj&;X\I7 VTc YeaB֜JF} kԹ-T@ em`YSV;洦ViUbN+{Kz:5[9tIA^}r#Gk9{vZyUHi5 Nkx?N롐.viBjNkR0_RMxTL% ['A'9쉸,fp ^ꌇh}l/iFebp[G3~ʟ76IDF8I+۷; 5hF-D>iхfrJSVPi#Bאi'-h䈄`㈆I F'ɥYBo-g6׃[ 񌖵!fjM"_X8%hJ+l(@MJuÍ p^ڥڏ:I;DȚ {jBvilyAm+6_Rtxı]PSOdXCwmo*2"Rbt> Z7,iR̋Ψ&&-=r_̋sȁ<\ONmTYr7*SiK2x*+η5`I`2/\"X]eorSW\ 7ۂ;='}G;-Sv0y 2:.6/>\-xs ~!@,rn b6z2E}ە-3! eyd9g0e߿nY &N-C.DzTTGOq700 Xsa`'vd)}s^-Yq!DO*jWۀ,ho%QJ|b%Yw:2j'Q|}UV7z\SZy:'4?-z~qf^ F<@SruTD\oT|@cZ$tM&/T 10rʻM گON|nɾlO7L?-^ F|CoN Ql"no)? F sk|IXޥc)/Pݤ~}CS)~}؄P 5vToh;J zr Ma lJض M:7D)C7ԀyPAvGռfeްc)/ ٯoygdhO%D0zm0loJض M:7D)C7Dy Ky1_oygdhO%vŢoޮ-9)l47 z|CoN QPߣo F &5otaoرa ޑwF6vToh'ޢo)¶@S| *a74 D = b$߰zYFKy1_oygdhOٲX(mi nږ5DX! 7ǜ:y't_Dp]nRAnأv؀ER!U`Y@6MA@Zٻu$*)?zlɚ3UgRdg~2hG\<(h4@ 1qF PF_7Uuyf-z+Z!E:ķ:tBT,qWCV [bU̷r~C?~[/ x[5qZWZA%` =iݲU@}#mQׁ%]<(ynp'0up!AoN'SfZNI P,̃Q4($O䉥q# PGQ 6!a~SkɈZ#q朗j.S>jV6*u:*UYJHE3evYw$[,'_ǧ?65M*n9oz|bwxgE8Ⱦ|>8SAQ=Q1jL9uuU؀ILOrTrvG 1d |c 59J_B}Wkv].:L|8gW{ſo7kR ]5PC)*@iaZmG»Z឴>ڕT֬imIY'^&a2w,1ܱz={Qh W^\z,EJeTl[I7@+Bl; Tx^}4:ݞ=Nu$xي4%jkvӨhj ڨVc 9DK \vP`}gL]R*$}"\P_b]ܠF4{u>ΘoOo5"RTEGO­ctehIdV,7.lWm9֬N1L~o+@K=uȱ1$CxYuk`"Au,6FȢj5BD1 Lw4}>U!_ۛi<=*{G;mw*[\c2$Џߖ+4EQhv>}>ʘuE<ёwCV*`㢽wdoC"mHQ{G#0,;p9̛s;:~C.+57lje"{G'rNEJyQG:yYC*y4)hK6 ^QByGN}IIN*{G{G#U#Aü69FaVq%E7wAc.ٌ2jYG[Rnb(S\ u4G߶FۗbJߔeoGR=]MgOU ^QNpyG>㢭gRO;-`.&juGU  Ua5Bm<$ƍ`;UDwy(彣w$Z>H_EJyQG:yYC*y4)h;}xzDظuEّwC(9.ZAڗzޑ]wԽw44xGUm>1#ڰDYǕiܘQb;fOKC(Zy(tIuG9.:b&ץw3sG#h}eF-i^[dZrr۾ N˞}j{](^jz> 9 QNlhl0(ifZ\3O-/AD 'π8tVÅFZv:^oߗ_v):XyHT E 3‡.N3 Ρ H9ư#z҃sXly_[u5\}Q?R EULh+Fh<#a.j%'T?P+[- R?#aa1Ge-X}#,)h9,bQBqh諝5Lva1vJNsX,հXt'yJbQ_v=tVXsXˆ E񰰘XN-?3gl-\9,b= Sb crX-_ScQ?R EU-l/;0OhXGXu+"eX,1˰<aa.=aQXvcb9,6&lʟbŢA;,eXCm?;=[CE5WI/Oݒ"eX<=eW__״Vw AcS7yپ۝8_.'VO.RCկbV*&"RGF2(A|{U˙E Kn/um?/z0&fβ+"m$Ty)9,Xԗb}]=N%5С?ׂ^Í;p/~w]t9ЅAc}:N$Zgp2l#A2Ij2oe,mX[z[gli-MCze_5.?(#e ?d"@3yK[;0w ʭ|jQȗ-vYwWjsO^-;(1p\FAPR޹1#^|Y6>a&B cSo,OPKBek ӎ0ZcUZ.nMj-j K-jM5Ru0AAY3 PD٨)]<R9㦛,ff*RW C^u1:##DG*0o =XB5 1oͫHrO?f9|;TnHhI"Asܣwܖr4x첟]x 1#9, d?1@b6x;Eco'hvQ;꣆ mdwBv{}UШ Ab6x;Eco'xtq;棆+k]k3f7Hop vP f>jx{]B0H3w k 4bFs qDÎwP[wG oc2xVr3f7Hop vP gAG QD585/_Uf:_/fr]O:0}u;KVbwxņ@]pP²>pgVnū%; g0_H0_Z1 522"YҦyVflyHUr.`D+2C r2y S}w-[صLܥ4Вbuzcb$IH<,uwU6vS[*ё@m?&ʴfΝL'&&e5砚t1PmSha+ڰ4*]]fީ /WXe0%e/yyX xwGGQ,G1QK 6ёVjʮ 3yG= aUUo/' !\Ƌpe"HTYTcm͉6":*W4K}$h׉Nt$ҏϐ<,ܕ,U @P] 0ʴ/ʠ\{+#yd2+ա jl/Ҩre|e,yvʼ-W LuqIYC^֔[^MU=we.UɫGnwpF2c9װT>uW&f;A2 (2(W=J2QveRte}i 0`VHʕ$)\0%e/yYSny5UܕT%tW Q|LhCtePvePteDʤtl ա+ڰۋ4\df蚵{C#?ίNp}|!'Ǜ;IˠGsy9cf`fLe_v9Sp},V~7ŚԸ'|#pZ80ybYgOt`-W$U}is}cob;Dx1V^Ѹ>f `Ap}4(?Q^\_eׯrU>ޣYg[K_67x=.CwۇGC\2̂<'\ߋ 1 [*gv\\3KV~-H\u\vr:H׿1`03cAq}2p},V~+-Ǩ?̒=sFz^r괹I "ן=>QY01ӠD{q}c>fa[\QcTПcfɊ~oeq~u\Y/-}lyvKcQbߚHz'nͫ臢2:oϔR:3ExE]kl(tKUbZ%ά;;߸z\*ݕjdnhj|/ZFZv]G3:0$ 8 F74K( {.Y.ny]bW7oHZ x\sJ3!x ̔CwOJ;B=BDz[fe,de_Qj6]L+ u=z2 :֖}fL*qTg9PgFD:q(uy] =DVSfr=3soC*n??`|ԶWF9Ƹ[`լ9r5gDEA5{f3*q=dLe`p&9 =qx3{fe`:Dr`eό zY=3Em̲g6w==3gSh陕Uo;(ˍtVǼg6=f,{f̢ ,hg=i9CjgM^1gl-=3| g9!y*[Z< QΞY3;-,Όd),z̢͞6{f3˞Ym9K p={f3˞3Ku̲g6=5{f3*e,{f3gu*.ŷob;c=dB />1Ѧ$X.[k}cRG]+v1dz})}Sr۾ޓ.Fbj;*]wE٣7a Ty\񆻣-|~+]ԖNjK&Ӑ^?o כuA?fϐܺ=^ane?`4 t5|@KLb^jrbq#2DĖ6 V{hF L. *?.{3ZJCB-As{'^'CD-hFbd$ | L{<[*O !Svħ2#,cPv?ʹHC4kaΪEp;t'$,dY;쑞kA$[r2l85 ́$ ˉYL_n({ǠF]fE=c>Z7zM!K)a2RcR/%ޕkUP(U*b]Ԯeew/GjWh dmxZKdh ]\T{-Ɨq.]E?@} &BC C6ņ,-57 `B]HDh>\Yu2()~sT#0_7`$I7Q?b' ;͌(m4!=l3vPRCώIf-`PZ5I Đ)X{p e:DY["t t o#q8oX!¹J/DZN*1G \0j?)lب)=W D-2P㶨EnYrդCsQ\"Q{EzCZ%Am9xMfUc&@9yU"PBn9XEz /@ؔoYѯS h4S=5V.3KlU%XY] `2ɔ<  r%(9xX}IJpcΈ.ͻH'ӰTz^nKxYg(7z^09Z%& ՛(Xȥ:+FF4~!\4x{4N5#'x:(D!L!.,$cm +c=̯pMקg{u]t+6ņqZ\b.YԼ_R `T9#ѽQ5kc}݀2"Rm u/&bÂ6['?^ *U%2D>zb0?zqǘ %C:9!Ԩ)I%Z2D#[9%KM0ƵSsWk)˥ yA|ԍlTXYnHVPxΣ rİhFb2bMcbVih?;:8VT: 5Wc H99wkAXY|ſ_~.7Jf S+a6w4ݏra)0T}W6!;LY%(\uY#ZU'v[Fs85f@x}l۟FW$A7-W~kޠJ h&Oh2`2C:z.h%^J_TvO|zacR2C\[pMW8ok*{!ߦe9#bjҽݺOWnOR*{Vhq`CF5SV*XqJ88vb;DKDGMl^}uY]w~m>Wu 4-m-Y RQ͔f,Z 96uݔC^؝TUΗX:T% l@n@ \[(N?34ZjZ䵠B3\kNB@jpfL%Ye{lLÉ}-[m] H:d~Ѩx7 ^X2" Q~Ӫ=,gho Ă)}&K WiXJNc#Ũȭ&FXăp욻r [Bɐ)ףwNz^I?WhRUH-l-eWk.Ej[ĨSsNQGȼ+1U!r7+a Тi#"n)f[_m(,c!:P6&l)嬧{Bo 6ߵd!M/e !"64yN>N?01~ZACuH~y^pX*6.Ԏ(Ws VIJQJ?KɰJɫ=zԜdXͰCC,1xf(jRQh-,z,i/1Zbr9jZgQ&$ũ~<1Q@#cR">ha=>Vz1\Fe/L]^ 30 6̈́܏#l$LbI˔-cƁL%>̦VcgI{؝!1+NGc^RɯU60ן 1E3\p+yaoiZp.:U21_Pro ,+C=Ww# Z5eaEh6 T?{-K)C.&'YS r1Ȫ~Ub$NÍo_>) :$!)QJzP,3GaJb4 ێsܿ]s͎TG=emn MY8rl@ ufhm917VWR7lKdK "S2|+vfM! ; '|+(#% 6g *1EHnkQѲs*LJf!y(QP`up(l?̻ rC2IA,D7U˕!z9xtbNBL/F]Q {-kp!zyv`,{b4V*#$lbR'\ف|wRVRXPE~;Q KF1RAuEk(zb7ٌlJ"@ط\K7ݱH_WTˉ\\ɯ4R8f#tjޗC27+'}^6ebz$L4ս(,bL/ӯ&==ƔTΣ52n ܦ6,cf3qP 3g`hM:Q.RVX,{Ѕ(U4|\dv840uIj#'{m}ظoV*Bo7{H~ų)|\IN]?9gxOї;Z/lb4uk"b\W]{u[S]ߛk]F%YmmB#Iq DžYhy$ϫ/[Y_>ӾJ <0#0Sˑ 8F+K>UI0dIa 筺Y3?_2u4^wg%hƊ<zv;1 j3R-:pHnnܚf;<.zf=?b_l)_ȩ,zrƸrÁ_pWKRV?>U?EW}BvcYZURNĿz_~.7ۖtzzyqpHo!ZzmPK!~oword/stylesWithEffects.xml}rƲ:éH$%J>Kkx[vm񊜵!P6IE~ s( NUlҘ{_L7,__x|K׋|^eQoKdˣoߞmwVwOˣO?mw}>[lm~qf||rztMסuo|d!e7*}gq~yxc]4_<ާ~M1]PN#LҟIy*{z8jSt<)J82oIUɱk2"o#O5 u!eȎPĩmh{}{-)ol.]M%QC q៍VE@4%^'ȟ ƀwp@Y9?J.#4!Cu q 1bXi}Ȓp1? PRi7lL&S(2bZ HcX@X-p41_, cih/tv<:%yΩ*+A Ve0n$C80Ł+]`}ީw<߭]ۥiI3d ae{7iH7L 80W :]*M:y^nюxw}}@r@LWgj)!n!\Io K0~vA z&!j.z2W WH5 dTG.Oz9c SqJ.dA9LNl+ aӊ4;}JE0,̼&67) <`{S  7ylB;OUNڪ:73u G' h;Y9$_7]$f/ܴ `KE >[?j8;>+i^אwuW`wuv3Ib7f'b#uU^ R*p*sm A[t΂'~"A#\fW${xGj++?^׿|}Ym\ ԰"glVSlnL %pt07KVEɃ&8'ykx f?g5t}珽/ ɲWC]q X:?pMPfNFvN5#Iքާe&AǕ!H- N YzgqMn6:^(" B&8%-@tarS#hRq tc; I}Ko[}l p[};xҷ#G>Y%PT,x=r5? 7I7Xcg_|?v~1||=~zNC`&[ ߍD1|7]n\{Tt=1Ft18CBnjFߍ/I_|7n$}H⻑L{-x'OIkB$I0ͷ86[_( ϛ1kZs1Rn5v$!z_ 8\ ёO+agԕ~Pރ "WPz`+!5cn׃"˙+HAT93W.ә+9sQwΕUhɠ&[=s3K6`I|f=HӇO}#Slז!R s\emX8>*Ɓ7h; h"&;ֶқe@rlxCq?3ZbJ1vDZL `9EІ٧w !^#9o$›᤾'Qs.U̅t5D[Wђd+ᵚ4ͰgLB,02 J!2IZ$3JSeNzͰ e`sX$5xFd3+0 PFAi9 Fqh mAm2I, ی^(!Gm?Uې>et%#=ipUS՜[U Ԛ3(8j$THYA lC<, \P)K4Y H% Œd Gbc ׳},X.p dޒR,c͒άj#Tr$7+#@/1Dة4+t9UzK7\+nh;']ihCIvSriŌSiؤ;mYoër+LL:CKlK#B"B*3ʼn,xrˣ}  Rd&xkI+,;욬i2T<^/F 8bHW,h7zG_{8fS5Ocp͠dW(&K5p?S^lpIcҐGWy3v#oPcfDq0Cr Jx<"xGRe[Ο A k2eDjT.@aEw(/&"Ӡj椒B9 *fB-CHF]Bģt/1 .vʄ0q8Ї6 DYED䥉 Jx]6#ڍqDN`l|e6E_f{ļvg1%RID;6%D" aJ(-P._  Yõ#4Mb![U}4RM- Wj.u;3M 2/H%K%gky"U{A:Y.=c%']\<(a\_VQm{0bUR 2c/^³K0/Nr{d= W.X!#L(&d*g4[Wfghy {A'h{zwQ[,jU5pYI)ۈk `z5d, Ԧa 0^=I8ED;jm  gx-ljQDF9`0wO{"T# g EvUٞڙj!Uw\DCʘ/Uw\*Ê㺜?cU39'=tZ5:H.8Dw# |*vqj sN?u\9oXr#nKbd`ff.Ռ:^4+.U5}:CfFº>^ ohb'",D4?`*Kޝc'pt߹{'Fk]N1]g2#M>A'©2DRek"bU"))aAJ Z\Ja B5VCYR@8F0tTj%F^6/K2JKaUbI^"ѫn<=u+k r 1Ӯw,mijaNV6-kv @%C>| NmkiYe֤'#8eJ&$_Je2>x}d_+QsH7k|'Dq)sхךS%ީ|Vۡxn/⒢rsHݗqYM3LZ!xqtboDP7Y/yCd/LeBzdF>U|"xq>@ZVۼ98Ll j_-kH13)fWY)ڣRX_~bTh ˓=QcȵlL8u9#1<<"nѬv$QLN H\x*.5] 889O<ҫrbs* ݄s`UUZD*ӻҽIg Mj]2ѠAC3\.Oa j[#p~h{ DAnI.UK,Jb8'VJVy,g;H΂JؑD!LB'+ SޢVK 5j4Z,GrJ۫lvY Vi/IXL!2hYt4Y sB9*6I|nBoAE'Wv@-{P<_&6 b^q4Kv- -@w$\Z,jJKB1O8K_hWM6yQ RgxCS%cs`BbXp}Ur93U;C i5(nwܰ]6D0`Ypm+Hd߯;ϓJ[i 5]|EKA W\IL4ަt S@]Db V9i_cޭՓQ %$M`FUuSxUAF,'4[ug7`1RDu e4_b,$v74k`C<[w+g´}OjTA($È|葈s9&7qI0Z#˛7-^%MY$N e!ʞ%/?n=WR>(=y#u&u]/kEOtGJL6{D'l:͵!|^릩z9F8e!۬Ȟ& -4;&tX:Od0C+' jwԣSbͿ$zM׊jr(SEa EQqHk(1"WSq5U{TS(R2lEsJD♦ G^TEΖ ೽!q8MNV_ [H<7"۽$T #Y ǐYhأһbP-u" VxJ_-mjV_舗Kt |e1_Ge*fKzU-n 쨦b=8Ye9a4 4`CV_޿hfNEQ4_˼efu'2l =i,Էh󎯪S*:u՜gPrz,V)}^% Dqm3h'|lJ7ja}'Vn/Gu9ƿ^H"·de`Sg5 {x[[:>dt|2d1{eŷS._,]eu}^ Ƽ=gLq VŰC99'S_wC=&Lݖr:Ne,Yq$PaQ4 BĄ{~X;/U:bAE`.lN٣"#k2;f}ircb^wc"ZGCea̟fwʾeLJt]ljoŚןh;b"mۅDɭ6xcasmNx[ ^*pb7ẙd wR\լ:f/uΘ9 cԗx6Rbu.Xl -Y4֦o7yYÉf(+EgSJcu ξ?== ]R+Ek+j_&#Q͂JQyVthʒSM]$C(63q7~ޣTG /"p1`Oe`B}\c{qwN+=e1mu <%)ێ' uk07+*HݷUk4N{Z?ۋ'`'%HJPCo+y4?o_7zY ?(jqd/(Ik&pQ 5ϛH&c)pyC@6lwE lqTw pޣ?>+zPt!e B av3FkdCb˙ȑqSUickDRΓ}#S]v/XPD F￿@4P%t 6p%6?\a0ZU4=BgA_g *d2C?]q +Ȏ¡ aSMs,&ۘ-ә⽚ִѡִV=5owKt</]=0{:;G ukpp60;L2_=d wjL緧=՛#9ӗbOgWhӳ`KA%!ySدΠʩ.:&N/]fs0Vғ*Dj3Ƨ65kP{cD73A=j ΠԳܬ5}Eʀ:.Kk5ҽe6T,KͦrabaPM9#z;51ATѠgzJ#R^_ Of-1ՄU$R3 jgP9;[MY jTѠ `Pa ln<)]AHyhIʀ$ZVA%msIgLM9 jTѠo `PEԭ]ZƬ+YU"Te@A-GPy#TQ7o0465`P[d;b ;쒁pIj$GAl4ߓ*9bz hE;!RaC0m~Pm >bG0~l6EnOVzRh6(y_tq[Ma:'7NhU0-rSx ShrÕy3ǐR48*V?ȜMz4_Mi9ߥW;V%˄1 rWMO։kx@[cJ,&jи6}:+i E]1H|Ȣ[8EJ2-#w8EPYaS]P0V0]ՋcH)yd860$Ϛ]No ~W\Ѩ'Iմ%b+:D8h@\D.j9$jTu@kV64z\ fY‹dű[]X[c85(&v+VEDPlӡYc1{&&VX?#WZ3]U>hi)Ƶ4޵}- rإĮYM[֍]1K9.vQ6j4@pcKGv >b2غ7]u㳡[ ls/i!JZ/1`7ZũdHP*7eMX$vzSDͺإt6:l*$SԊ)cc+B(OQq.{FcK7<1}g~ُ|r|(fr8`/o=Db:v~>ݍ$ W '񙜬.6CUWR&]}U_ֆJ~~] ZV bD׶lTϵ}U r%SbECx5]gөyrɼ?v:P%^v*$ ayyjJrTb.].{xŬxH:zbgxz HL.2>;=;6>^ff]~T+.%vۍ]1K9zbeh,vñlQ,ʜ|<JLN.el F6>>7[iHW<.6c_q^^g rRO5Ude]-p(ǩFJ1t2➃[ s'D+9A7°tEg>Ó ]^/.GruqAo|:UsZ>ӊx=e:h{[wZ(Uve;u͖i]FtNQpsZ@ oim5Vǡ77ViUzN+sZ;W9=pyYbɩ\dZt_i=/FWƶFtNkNv}!M8"Ӫ7Ӝ֢1Zi=eћӊxi}Nkld?Ӻupr>sZuZ@ oim5VƷ32ZU&:iW^cMivN~lrlδ 9:{qZ76cnMZN=7U8 ߬ `{R&a{нC޿mڤ?慼3;qe!rJ-\xBUb@%͊3zo1+[gn|^R2ݥ*[qI`&eymb]dٗO~7e!Z\mD9c;xlQr]l*{rk&w<*­ D\E{8q{C˿JGev#^<+ඈ1fh?ommJm%\#wW6owjAlь8i[0| , ҰF!INЃ9 [*z59B;4;>COKhZl{-kC2U#Lq)--s%EޱqИ4QW¥\ xxuhj>$HL%B֔ܽPW,dfj6bC.%E~J<<"0qq8 jo'oݟaMuĀLt0f<+F LgT#=pk/AVsȁ<\NmTYtW*SiK2p+η5`#Q2oJD0RmʰJX.@Seox` *UV yTY%f:}*ĬsT~Щ*>UʔJTTx+η5`#|Q2oJDTRe(@]"dMy݋ Tt6Reyy8trХ^TJ ԰ *G)Nv!j.w%+Rerف:@T\{Jt(2UVYWé2xu=U}L)K2TPWokZrK7GHavde\k4N;.<9A? p9 7|d=o>W eyd9g0$?nY &N-C.Dz{TGOq70ݷh? Xsa`'vdɯ}s̕ ]1[:h;T6CL(?UԮ Y801nTIfҬ;@K\}Ⱦ ҈Tnfp=)-*:'?5z~qf y #h_ 4ǴHz0P7*Sޤ/XИ `v}B4wv \ mg{aٞ7a74 D&F b$߰;17\]]:8j7y_4Ư*VB<}ì^oXV9m=ưJض M:7D)C7ԀzPAvGĕgdްcJ FӮoX9 m7a 7#ö@c|Ca%T¶oh ԉ!J [ Haw&Jo7X~3#h֮X F߰qN z =FP v7TP'(e(o7T#]7:7X~3#h֟O ]n[Gl3S멲%kTIݛ-LYrIx_| @@ɏ;Lj6nt7  ᆀa9*U aMt*7d-1rÚ`4n^V!frJ/:' {w/'FoKúːж4eCXQmC@7_ׂ>?0;ᅟjC`M6e l QcU1`,[m*$j TV׵Uuyf-z+Z!E:ķ:tBT,qWCV -m*[xa 9}/WNN?ٗq-z8+-,qZ)Lx6muW4ruKp)+fLgX2HZYao3Tk xtX73Pf8w'QqL=Cj6Ms{yRjq8@ ;1q&"̕9WnUQ9q\q83Ĩ{ձFq (z_8ED\ p@/81q&"1i h0Wo6sV8镄T3杪ǘ 85o&ǹ]^KM8NIJV199S69`pH h0Wo6s68t6yd#cIbQDP 1"q|;69C3ǩHvPz8aGqqsuC8iG8:~qgUʧǩg'9qʲVmrNjϓSC糤> p@ !81q&"1fǙM/*ǩg'|8׿nguOOeIO~ssUtX}yJITE<yf)ZvLcceFQSY[9_i$:'`&;_*j;e,Ybu&K)>c[<9[~ މW鯩'hYa74m<[ E !J:% Y:!"d*L)ay8<"ncd (R&$ox{-QK:7~ 4uQ]bjG CFTWU'[jVOy{QFE[Ͷ+|"Ķ AeeATZG7H.[B^_jm:6j5BC mGAe{Gc"EFӣw#ަ){Gb5-Cj }"I]EfӇ郌 ^QyG>d&9.;j_{G6$r߆$uw8; "#(< ü9Q74;"QsǦ;Q,wt"Tu5WkHS.&0is8uE ԑw/(9.ZAڗzޑwԽw8^0TnjhjmfEWb^qczG4;:X ϙu%H/fyY[jm1ծP^G{m\m}.;MYj{!%_y(t_uEבwC(9.z/Խ#{[@f{~2VwTY<`PPEV#dFJBiܨ vϳCh.彣wDH)/H'/kH%֐v]"EyM~3}H7.=;|9E+HRO;wkf׷/ QfU#Aü69FaVq%E7wAJF;{G]rQάK0is8uEܑwC(9.;j_zGz#|~KW"rzzyy5`m\ 3/HӲj}^7ʭZzNi`hF::7Jge 5R9viow 7ڊ^kժuQoEUy_l%Uh y [kηx'aFlX|HꇪQ'oj2Z,!n71HTߝ٩= ]V5rbRݻCT藲4Eq[N鋼ޫv.JxBE w*k:*BBgLKԑk橅} #g5\jHˎO] Ou~v.?ş|΁0VUGL  G:?6wuUN?f'}[*]X5'dGCۨjT~bhi4#sHlQ ].sńڌUAv^Qu<,,f?GX1V!EXprX Osh4CcG$djGNa11l)爱^nV] Wjnox_TaTbQ *Sʫ@ψsXzI UaV >ψcsŢxXXQ-)r$b"/E_uq Zo/Pjg a119,6sXSK5,I^ǰXԗb}]k$nE0DbQu<,,f?Sfb9[,g-WwreXbC԰ØsveDpTaTbQ g;[,a.L-9,w݊Hazaa1y2,?9rX,xXssX,z.XI([,XajbE}9,E[aNabQu<,,+^_ $맿na2,Vמ[yW߲ϴVw AcS7i>۝8_SUSVZ!zwr1+O_)#|#Go` NuͽŪ̢WrU ^׷/um;/z0&fβ+"m$Ty)9,Xԗb}]=L%5С/kArZc?;[BY]栱AL'Oy-w3S8~ dVݑZpzzyy5^26_,?̿-=^-3q\ Dl/~sy2@_2WDj Bϥ]/zC;VP>5KRche;۬;vvw'l_r~X^߿?Tw.v̈>, eɀBԛ72< ԒiZ"´# XgiZ&ZEZSMT]~ y3LP7D C1Q6jJ+s&TrN&ك"u]<(yn 2Έ-~f&ё ̛qfk'PcB̛~*'Ұ\kg9Zlp6@m'hv|:ev >*y6d7$gvBv5<7Y.NL4 N@9)=xxTam^||c:_LQ%+Fjf;~bCZ .RktLDaYKk83+A/{*`I1x .)ׄV̱4~̢H/G^չ8dAR ؆{*ъ̐prr< z/j~T| ֤%v-.w) p{^;X)c#IR7RK]|U3ݩ6V0jfo LuqIYC^{ݑQ+*T' Q|nLԒ*htbmu jtھ+Ç!_QmO7HXU ?k&BWƱ"\#06*kU:Xe[00ns Hʕ:Mƒg -Zu"<8I3,!/K=we !e?+(T>qW&j!2 (2(W/EʈF9%$:12Au1Cۋ4\_K2k˕S]\R␗5WS|]KU[p]*Ll=X5,OݕhLʮ ʕwhk]]@_ 5"ՠ/Ҩre|e,IGʼ-W LuqIYC^֔[^MU=we.Uݕr*+9]]+c']-2)2.]*ۂyAu6":*W4'ϨՓ!HԝK-͊lw]h8:S|LVteZPvePteDʤz2Au!"`Xgq:*W)ܷlR80%8eMTy]we.U}W Q|LƹCtePve̟/ K, #8֨, "=^|yJ5WɈ.ߖÌ Ne00?m͢&v pYh_Zm f+ۻ \>B?" Xe7'։ic]kev}UaT{QMY2^'ڬd>Β [7ͯϬ Yb5vwooM4F\!fӽԛ);T+5 ʎ*PZl^`P.ZAmBުG'ccf&͇uw^\٭_?ܟNu.?_,L^eY03cY ![>ΰB||a'\Ǭ_^eE<<{a͸9N~QA%+fy~q\ߣwqV2h\^Y01ӠDaΔ1\3˰տ-_뮪r}fM&5Ic?H,\V9#LX>F>f=rIllq~u\?\L&7׸E4y\3 O0cfk\UϬh>F>f7r;W-^>׿1`03cAq}2p},V~?-Ǩ?̒=s&~ >r괹ǷA"׿N+Rq}, ̃iP\1\3˰տ-_늫r}fG1*1dE\ޣ\(:molz}Bg8_"4_3 0 >f(s}//` 2lo:<\r} s},Y3o7#?ίN;kreO-4nhL6J[I~yPRFR6RJt(Oл}r >@b=n*R0W_kęagTxWoc5q Sb^t M[}WEȷU Ԯ+({&Z9V"b E!%=bRjq IRr@if4PrBIS=y'VVX6|+쓙]ek`;Jͦ ){eG/ /_2Ar엉?QE=3N2\0,ֱ@̈(U'46˞~3\GjjLyfM2qHE-ޠ/7ږh>Gs8wl=5gvZݝHq7"vv}fLxfQE=3N2gv2})y $<3gagV!{fyϬ ,B\hAl=왱y]3^g&<͞Y̆cggl -=ҿʞYm}є Ƹg`celY=3Em̲g=3T_?_g^[>OO//&k~O飝ot 7SS~1Ui۬w'e;4j7oHHvVC2 Y&%&pSCgII #bv˅i:-r0ܰTi|˧& A{bC=, tљ6gT%b`YAPJ*JuIfd]!#uG9#1 K7bO[CHl $N-/bǃnWWyLLʌ$TOB6v" S;EНadGzla@f,6*,' g1mhΒnFg| jiJtIGckA6/=/·ԫJ]I{W2UwC݆TbwQӗ}߽]i1X:lͷjbw/ p1$tisQAh â_!tTB-Tj5j 0$x w!YpeM"|SPuH)Oϓ2n'dD^T043 nYnJֆXAKGj=;& aoh~vBNCi1&-:[.ԣC^`iI1eUn1$B8.!&âgSL7YmtXQLԂpL_s$yW4 Iſibeo}ulO:*i3lLAat?!L PMAV_لh 0A\gpNXf0JhWPl mώ!z֘ moQ_t\gz*՚?]ɀ '蹠{)}S=ꅍ73C_[L>Ipu[= YyLm[7z`-)A`l 峩.5yyu߭vV{CH^mKE*ӴPf)JmCFY4S9h),uSʒcyawSU9_bqS(7%S-rm 8LksEhׂO u΄ {s9$^@u?0ke(#oJcF>l>%vh-;غǙ u݄lɊ&W,Ԣz V%:@oTPcJMdZ^8Fpe33ޝEv:VXFZcz=R EMf*BIdC h|J7H:A'O+Aכ5?ܝtc`Vi+Yj*!Ճ!dz/ dg`CnSAęA;TW[WbB툂pl?' `\Au# DZxzأ'JI Mj*1d:CW[n6 VP(¢w2ޟ1c%&C;mz_qa~ lbGҚ\|N< 0[ =6.-cG.Cunt QT 1mL= KΔQ+41L2 n`TlZj%>Yk}gI3RΨtia9FU(ZEi3xc>]4e!Mgvi㫺\u,^aA /-q2pu7ҠUXʪ[Fm@qڒR>HibBJ}55 {ݎZLgL\%Z*FԚq9^NbѐïkI"bJzJ'2s,F8w5Hu\֖y ؤH'/ζWj [g[ijl&[֖scE~eyq-5xɶ$N 2Z-b[noZ_ b=_ݝ?i·R92\biC*Љ^dY5-?oT0˿Mdb-@ne <^G̼; 8$Bo/S\ic hI'6/rmհRKmƲ7j,F3za{[ޫݚ\S]Run7.AjkHe8.ԮBȣ'yZ}Uy1&ZԼe1r']YJ!K k8Ln,&a0"?a̗ނƘI1eSj[T." 5sU%wAE>jD2Q~|vl{H,2誔~EuǁŲAy::cO6lQooW4;쇀k'N>ǭ/ݺ or4^f\5`C"g9looKlZ ѓ PK!9]docProps/core.xml (Rn0W?D'A %Aj+NETV.C!$7x2N>?*:uB$E(P ESi]Lƴ X/EIm7ƎmAR Z[I}v e;~|Z-P9J$&$&eimm~ Ox6;iPK!mšword/webSettings.xmlSN0 }GP坥:$@&!@ > M6I%zŚl !jt%rkJ4?>gYL)aA6Ѵ+:UƌT\,,Y/8+=8JHnEIWtķRD}d ˬ, *CƧlFSzϬ+*$\y_P5%nߖnN;4@u~B SB Tޑ>9Ψ0^Hr Ҳ*І0føa!To7=p;L`6z쇯}hӯps4 g9-f x&>@X8~9ݵPK!eKg@word/numbering.xml\nFwҋY`Om_W`a Xbf83{O^$p)KEmi)%MRzuS_M },,i<^Di]:Q0=ǝd;U$r4yVvbR>]М-%Q4 .v=x܊QL-].r>! *PVH`<\G.pÌ1t6Xs! o/_ܷx^d{8LؘƖ |A3"\#xR,$ l/,M\p$ť8no\3{HKK{Mpg;vI,n(|h HD !~ڧRR-amڋ/2Wv~ݹ/5v{p]5- bV+N/o %Yy3 "MP~u/}z)^w^oV^eN}H2%/$;@!R|pbDelORҌ`~.P.TP+c7%& tq tjׅڦ^ܸN T ս/6] MG춷_M;B) R^xCG/(RE^m>=Ce&X.P VCa.Y\lvإ5;uѪ::3A,|pUe7njs9`Gk7A8::H=x,AGBk#jj+ /sx6W8 NrخeuKw*BQל"YvZo5!tlfʹ;Yu>L|' MD^Ժˉ9[U}'˖UGݚyN9ڀ~'K,ێ>򍆒;Y0"q3B+m]dvj ˫$߽w| jv$|LYyE^rM"r/{ġ}Ii@R ` DϮօ,R< *ArY$Zv84GO VwgDֳQΙP*+l(kd!tEK.sY6X0vco H b+6т#Ꭺ !,Z>v!̬;YB׷Rl5@PCkl^x2LZ3@vXΠۋYbRɄe5-PZgAUp!AHZQJ벆 yskp1׊e#( b@TBvVOI9p6t54) .`/E#-<*ۅ{+YG5Ѹ7ϣ*k Oa&gaiY/V02aEF9HXè 1EHz9 b=-?G~81 rL&  Ɨ3c. O>PK-!aDե[Content_Types].xmlPK-!N _rels/.relsPK-!iNFword/_rels/document.xml.relsPK-!޼ word/document.xmlPK-!:} word/endnotes.xmlPK-!word/footnotes.xmlPK-!9^(word/theme/theme1.xmlPK-!fword/settings.xmlPK-!4-pword/fontTable.xmlPK-!\Gnword/styles.xmlPK-!~oword/stylesWithEffects.xmlPK-!HsdocProps/app.xmlPK-!9]YdocProps/core.xmlPK-!mšword/webSettings.xmlPK-!eKg@word/numbering.xmlPKWpandoc-3.1.3/test/docx/dummy_item_after_list_item.native0000644000000000000000000000015307346545000021701 0ustar0000000000000000[OrderedList (1,Decimal,Period) [[Para [Str "One"] ,Para [Str "Two",LineBreak,LineBreak,Str "Three"]]]] pandoc-3.1.3/test/docx/dummy_item_after_paragraph.docx0000644000000000000000000021113207346545000021325 0ustar0000000000000000PK!aDե[Content_Types].xml (n0ED(,g@]tM#g&ȹpH]-֐_a5xZ}+Iy;@q?a4E=bIJz Na"xiBr5-dTZ<I<: 1=BV-->$hQW-TՊTǥ<:T\Kcy֡lpI@1U+r&5T/˜ Mc5ZLA"ܵU?'~搸Az,Ү|--'MO\~S]竃ųڼq1?(s;G,?oFL< ҄@>-B77b8)gΩp{襳 rc/%4?}J뮺Bw1`x6~PK!N _rels/.rels (JA a}7 "Hw"w̤ھ P^O֛;<aYՠ؛`GkxmPY[g Gΰino/<<1ⳆA$>"f3\ȾTI SWY ig@X6_]7~ fˉao.b*lIrj),l0%b 6iD_, |uZ^t٢yǯ;!Y,}{C/h>PK!iNFword/_rels/document.xml.rels (N0HC;q[Ԥ@8:VM\,Xv:U ֕h6,#1+M $l T!Wq +'Ν,@ c (Z/mk!D|4m{ͳy'_FJ (W -IJo*lF=)!n@RZt(6?wҽw}T(>h+19qї&3H=^¨O:?3ެ{F APt@[-1r';)!>րؔ|w 3?PK!]bword/document.xmlV[o0~`$PJ+TV y2X&!c~U^|;Wr}[p2%'QDJR&IU2\I:6F7ӯ_qH)t WL9=cK * F*s=DWʤ 'a"ZwۨhJS 2evL lV>t[2Q &Qi!t*P7֚&bl(JڂE='ւ*\>&3+H`u|~YLq8¾͖Lv0 np#>SOFОyd:o5{A. i?Rh bҍ_50lI$.jf4%wAfV2߹ sp k'7fK)DR_QɞӽxWAzP9mO39OTbNzRwj3ۇX }7}d:,9i`C)\A%J)iz gs̽̆- ̑ds0z/omW3GOqq2~ B}R/JՃ0^+؇w8~X?1,/=.sJlu҂B*/>S Œ\L=FnJ c#*Rl-9{U,F˯ưƗ&6#?m}OU}IL93]EZĠ5+QL€y<\9߿ zh4|2 ܚ}`Ժ%ӂD;@+IQ{"tYDMB3dYi/wF(]|ח?aηo׋ar# VWnn d3i Z*¨qS8P~IYgyEPK!word/footnotes.xmlĔn0+6V(6J[}ט`{,ۄw d xye+0)DȔ٤D>pLNzr G0>HIM(Vt$t~,F tz0>X+|[حԦ >9U\'Em߻%gƊ*K?ӱX\ʬņ6İ,ǺO<~>N?-<~1oVY'PzƄn^zIkˣ%c?Bi]٠~-R|@x-*f*yWҰ?KQ2pKyVˢAZAYr =w$B+{o7*-,>bp2-hӵR* 53^tfXS ,)~T6*[G9:qS\n݉!gTZESRe#/~zL* u.CbMΣ]TL,L0i"DEVC<#$3Qi[$͞Pf{Vp C:ONU _'sblx } .n328c]?Kfb!ֱ?.>hcυ]i#_BM^J%f1LLS~{+;w[i}cʓ;W7R@T0vé# Gmz6gOTB8.T n-JzoNν;/+xJN@  ᵶy ]ɋxa36< uȘ.߂ҝ N}6pqi{{1kֲMxQ:ɼ586g_c8@՗[@0(n` ' E2FR}l%~e,Tp=#ڭ=jCRھPb诊 +$n5TL_0z^N#m=PK! word/settings.xmlYKo0S<7x)nfa,ҳr nѶ0zRSZ],v_,Xb}_?|mVY]feswV7E^Z=~ÇqaihMZCY]m^ݺ×Cwo.]YV'3e]C۷èioo˽?[4YwִPfV\_mߗ]X5b{xeޑ~k|H@GBVQ|>_mWQ7R>ieQ@{`LqsxG&jCɍ}ö`ʹjW?f}yliaV}Qi]Y׫#"-&۶v1:QWK:bx[g]gCv.f)BÖ́OB%ov o@eh c$PܷDeH T \'B8&,f}ʤKQk)TqR TEh WKB)ֻsxUwЦ[Z,?PK!4-word/fontTable.xmln0'"ߗni7kن߉ndN|99?}ËVA8/aV]W7S̖)kD£w&k2jB3?0NnjnułH%1OPgqE!`^ bGk|)+rqVr=U맙4 Όz[,B;c(`W -:pI=7LZ䓨V3 *fjLSN- ~26Nd΋V.xR] <d3XcLW+*$GKP CY $>>OLrAa} AA: D\ Ē)qrū&I F u$2q+?"q b'f%7 td$>kwgcOF^:l,g@1 m™PEl[DsJ%_NDPK!\Gnword/styles.xml}rƒF?01cDw4m1vs")BCRn~ RvK*Go'|(߿lwW듇Ï?nc[}yvsl)wŪ}zzqlB"|+XӶ-ڷr|ڔ|I?(ǬXs0gC cؔ~7̏tD?P)qu{\|dw+@޷ɿbgϫݖ|ް5/׻mۇl(/RX7mqwlxsƮA&s Ų8|tG>+2*[~+_'Gi0'i -~_ † 3Am+G|L ?R|y'->or|z}ruE oc\Ddصe|Y9?(;a]\Os:#DD^r=hT(sꄉ'bİ9 %b|Ri6b&S(2bZ HcT@X-p4K1_* SihW.tv<:%yΩ* 㚁@^kB27HXhFx0V~ީwܭ]jI3l l{7i7L 80W:]*M:yAnю8w_|}@x+zr 57yQ.\ ys? ]}|Dw+RX+j+O$) c+EA)OBoZ{}27@b(>{N=y !ltZ2_ӧ4`Y,MmojIim繇{M`p<do }S/nwg&$Tuofn ,N,v~ޗ򉄿dY!.`T,/_t;FG"Bk+Gh OALXC$YZ@+Rh"~vy[ o'5B8/jA(FlSTs1¡E>3_pvT+T~}a&XbRkb65B$~&V0RߎđOVTTT/C^O{zcbnR*nWO~z~\o _O=pïӐ3ocS,S&" M.| `*b]F#n!cw&M/H_|7n"}Dd'@H!$M?>A{ KF MyO)5-d)~};=jpjFS{A.jMD'3WtJR bi,Ac?+(=0ɕVz>/ "Ew|\D Wr|Y  Ψ!QJ Qnd#`ipxQj7Kpt8b.%b5N#t!SS4rX2m9lFF3Z-VK0R(䇗$ɨ`D.I2?=N-t!SWK]Tw^Hh3Z-VK0Rh3J-%.I*D`RL$F/θ?0Ut]R@&RX2\-VK0Rh3Z-VK0Ԓ^Z $BD%L`$ɨpMЅL]-taR\-u!SRh3Z-VK0Rh3J-%.I*DTK0]aj)Kj KTK]R@&RX2\-VK0Rh3Z-VK0Ԓ^Z $BD%L`$L2NVla/(fV^e bqq*JܜJDĶ-n=Ħgd? `SE ڜu ښdeҭ p2³⿡zt88 ;îiYXxe|WKMꚮMm3lC$a-d؃L<1?Cw->wwd[ ax˴tq |_ƶ?mMk@ͺm \ -Hy5 ;n}X-Q_&0"]hC/ !^9o$~'Q?b]}̅t5_D[Wђd+ᵆ4gLB,02 J12IZ06i2VvX q9,YRuz<#x2ʅQkQ.^)8ن6$hjmFm*א#6SmH:R4jj.j+P5M*Rr*$澲2˩IRkIh;']ihCIvSJiŌô}lR7UV&&~ߡ%\֥KNKNрL!ՙDp<ɀ>pF )^r 썤[vK4e *pqƗlAPO1+?ڍɗN]V>fc 1Yl8vofhͫTW6nkj1iȣ<}~~mA;L71\3"8a /`9G%d7t" /Ѫ#Gbf (nf^ bZW/[9++|1!uvꗪizkQOK2&x͌7FȈsG̎zL͎xƄ˧TH%3"NYZ<#кmOgKZ+<шi C|t>aH{dZ1#MFS* thߨm82,MU7U:OcIVe7{Mb+qƜ)sYY]m܊KDd>C.UY"YSR}孑ˤ# Lmqi"Vav߀.FaK麉Er*['-Ǵ%\+#TӲHeHK"mĺhXz2b9HGmD:~;k0Rhin-эEn~P|wZg#UKd+#Cg 7p,V'<;UGϦzk08oQA*#>:{rzϘ>)`Nȳf[d'm S)QWa楥P#))5M\bґW*#1:e)*R!(VHTptV$R]^ٰ ǀ1X: h(՛R ZcZWe%€liS9mŚ0iOfd3ATق pj3n]e @Ă(52@fXVWY ;A]iPtt5sPyA+)#JPKQh. 5m hgE Fa>:>߫L}Hm HDU @| M^(o05a3H_GF]fc^eaIkwS".dHm[B$QDi!nrx0X&.XVg{ u!$9hz ؂Vӈ8Z8`E_]{2GI= "&Ы9*&1"ODU[ϏR&ƞEZEK#w-X'I?Zݐ06lpJM`puY_"&Q(#< 1bYeK)#._5'{y3 iJ=vRE`}c|=RFE+hղܸsyen˿&H ^E`Ajo-⸗PgnBi4@dE7*#؎TՉٹBɒZN${Zт]7Ifn%%n0ȳm>%uX"njLzDb۰ @]N}ń¦BuWVz ߲y~+![e#_Orɷ[M~/cX*Z %yh$9biwEy}?(fxH8ɞXs^<rל<ͪ>}gWh'nh+ݰI.jQ5%oy[ N Ĵ!2eɪ$M40)[ S+NfJ?ɂZh_65 W؄yMH-)""Pkc9laT$0:'SoTDD?}6 vO}?I(₵,Uk ⰾcpe-Y*c\jTs+r*W(?r朔ilgk3 mݍ,,ũm80A;4q債c:yl.mwA9f\3xѬ$^tFAȍZFn<#9>S3qg?=hnG'Ɂ*׳x4,W% HF*p,=?an:Т/ x0j.?_Tj|fp0їSE̘WR+̰ 8&bƼ.Va=$f0~gCa)awOx!b=i+oLX?0"ߵ<c79(1Zq솨UdP*, 7?2,և#nI]dSG?6,cnsIFel(-Gpl b#дƼAmEiЛALK`KQŰ(ŀ#zVQ](,ZaӮs6TN3l"Sf,aƮfO3ЮAE1԰y^v7ml< гsL\LwǗĄg Е"\ȫE,4%LI͆շjHo2 9tG,.B?V^+ScR`wbinpݑsqˊEU Ycx԰5vc Ce)?8W3ś3 YȃMbeA%ׯX\ӧ3dJNXafD,5?gHE4;a& SY;+՝8<1ZBht:ۗIy *=I틈yT))X3*vT XeI=q,ܩg$JďXm#^#-d8: êĒ2EWQz6!9#V=b]g?DY3ڈgN6kv @%C>| NmsniYe#֤g#8eJ&ݤ\Je2>xd_۫Qs~7k|'Du)sхS5i|V۱xn⒢rsHݗ8ì&KMa-8a:f1"(ΛW!2_'Z2!g2x*>Dx 8gkn-+smqf&qHuۯly$RU ,eJ;hVFz8h֗_o)ʬ@,l=r-cX.5N]HlO?[4d>j?əZQ@E77{ޕA2' sGX{U]p𚷿]<RVUѐN}[7LI͡+Cf+42h1xl 3?s؂!aƖ=B_)^Qеb_  U*/ Vq1YP@P;5dTVdA85U[j&Grdwy6bW[@a"ÉEG0{2E1e&VAHsB~ .:Q5/¶SG:g{Y{la0l@Z#9Ū$'b i"&/T]> /aH`JֱuxLHUK>T%3S51ޱ߰;ؑ&+[C`v) eKa8ODqK\O W!$K`H녮X"ڷ[ذI[en--HϏ*7Vy,1i38*hʫ5R9a\c4\Nj:f'p@%^z$?Bzk~{J:;6DʳuCV<{2

    kN,o9E^G]d*Up"!aOp18Ԧ'x"ݾÖxڦ?a1HYLE_+{̓C$ZTi=%\v6#7b#. L;pn޸D%~(!%٬pJ)1XFS.k>e+.J]JKUpڕO8,gs 1j?{+XNnّ$Su>Ml3k}G<-vG$|X)V?m@ORKN &uNS.{}ΎV nUĠf_e?^MRw~z/pz-NQ!6a "F\5:3⽯uMi6N[m?MEÖ t UuTE'"J.Z*ϫ0ᝤ6sߌg1pɶ\e[CD,ZGXd ۖ7QyF{S߱oP'H-YY&8||Yu>xKG'Nφ,ff^B[8% UUvܔ7lۛ`;8y*hU ;$s2y8tslg̔ht.3ezd? +'Ba@B$&D%xxyR;#T$ &A=*2&mPۗ*9&f|G;&r@ohov7+oQ}~7ŦxY5fP-_~[i=qG Zm3 ftl8,wnֺ/sz?j\73=\7 R[OոUnj˥;G4c]aL/9#֦CtZ%kZe`6p#g6K#3md8 {vJ {"AOObTFѺlSfw~a4WWa:nÿ< d{lAPۈo6boL S.e1~(r?6W7{x _@ѣ]Ý,^J(W_X*)z;8PZ}}_忕zy[W qu ~)Pۊ_!8lM^VÇO*i,t?ep" J~Қ c! ET5r-g*|ސ!P>/6`5[<"A \O/޴3]Hl$P5ym猑l"ِar rdTtXV"{z>^n&ۚ=gӺE\i1I?5VO[jC{e3Ss.>}-tz3刮%evdt|1.&|Dtpv9-L5{zs>=ə]佤=mu mhO;{Z)\Y]EYeO>lSĮ#g "L)/PS RlcgL~ 16wƐLs6fM/]gL`.q6]j—xⶤ*)u]&oΘ~?F1|7r5c:@qE֘4kP[cD53A_Φ[ * Sj~uUN t)5]tz}2IT!V^0>m]#1A 9T'u5ՠ^\ gf= *BU$Et^^mz`Yj6 +jU/6׮Aul jΠ?Sֺo|w4@whY&l_)_e@A5:ΠvS饥ޤ^Ԡ6׮Au jΠ P/͓/E?Ĕ IdPkߪ3m;[C}5> IWAm]#1A |6Z(ԺP۔5rz#K|WUUdP".B}v -L% j-T"@%,N%Ncy3d \ 1p)$ D&)$|^j0A.o T{Le@TeéO̫[ME}խƞsT0h+JE^]D0$_SXFͮ$)LFCp|)MAm~> 2gkScAwoY7e¥j9L«' މkx@[kJ,6qmY[|]s+evA*+ K͇,?d6߂)~)0|G +Y0Uq=n6-E+߮ ߫&cW `³bqy )eLҟ '#F&RYk)B2{C0=b{_$ y4kf5mF<~{#2C WaDZ(cE.q"y4>vqlVbX&d% J]JUvlQ$th8lAVĕ blBֲ>1-5Q77vwwEAؕ0i˦21v.SbV\@bZѬ]+Ϙ̀r0誡.5uub(,o-\x|^oV+w*h lB0XEwVq*J-n5v9|#]Db:Ű)f]br>"wb`;L)UajŔ1K]bPe1}g~ُ|r(e"rٛ 8`?|o#Db:v~>ݍ$ W '񅜬6CUWR&]}U> +ȕf6x"2ϯST\k~њ"ZL9vJ8x5?<Yvp񻯯rUSbj].Űn Yq'>vo& Њx k`%7RvPN a*; ]^ ߑ."1bػ.h|m6k~J~ce p7$xZ2N-͓k%|f.9V9&aH՟'*G K%vIb.j.^ʺKXɍ 1[@#]Db.v18uũ:3.\)vEChF.v ]@bx:Ւ9/Ǔt]]wQ_LnNjs|s/́E blb[m_9XEb 'Ț*qK͍̍8Tq#a:rq-Q ܹc"~ӜaX: HJ.Ax# Wsy898v1.A^o.$ BE_!5E8~_p$P+J{Brㆬqֹip/6i )y'4Gc,kN>W\U7 7+ad t! ָ"Jj&;X\I7 VTc YeaB֜JF} kԹ-T@ em`YSV;洦ViUbN+{Kz:5[9tIA^}r#Gk9{vZyUHi5 Nkx?N롐.viBjNkR0_RMxTL% ['A'9쉸,fp ^ꌇh}l/iFebp[G3~ʟ76IDF8I+۷; 5hF-D>iхfrJSVPi#Bאi'-h䈄`㈆I F'ɥYBo-g6׃[ 񌖵!fjM"_X8%hJ+l(@MJuÍ p^ڥڏ:I;DȚ {jBvilyAm+6_Rtxı]PSOdXCwmo*2"Rbt> Z7,iR̋Ψ&&-=r_̋sȁ<\ONmTYr7*SiK2x*+η5`I`2/\"X]eorSW\ 7ۂ;='}G;-Sv0y 2:.6/>\-xs ~!@,rn b6z2E}ە-3! eyd9g0e߿nY &N-C.DzTTGOq700 Xsa`'vd)}s^-Yq!DO*jWۀ,ho%QJ|b%Yw:2j'Q|}UV7z\SZy:'4?-z~qf^ F<@SruTD\oT|@cZ$tM&/T 10rʻM گON|nɾlO7L?-^ F|CoN Ql"no)? F sk|IXޥc)/Pݤ~}CS)~}؄P 5vToh;J zr Ma lJض M:7D)C7ԀyPAvGռfeްc)/ ٯoygdhO%D0zm0loJض M:7D)C7Dy Ky1_oygdhO%vŢoޮ-9)l47 z|CoN QPߣo F &5otaoرa ޑwF6vToh'ޢo)¶@S| *a74 D = b$߰zYFKy1_oygdhOٲX(mi nږ5DX! 7ǜ:y't_Dp]nRAnأv؀ER!U`Y@6MA@Zٻu$*)?zlɚ3UgRdg~2hG\<(h4@ 1qF PF_7Uuyf-z+Z!E:ķ:tBT,qWCV [bU̷r~C?~[/ x[5qZWZA%` =iݲU@}#mQׁ%]<(ynp'0up!AoN'SfZNI P,̃Q4($O䉥q# PGQ 6!a~SkɈZ#q朗j.S>jV6*u:*UYJHE3evYw$[,'_ǧ?65M*n9oz|bwxgE8Ⱦ|>8SAQ=Q1jL9uuU؀ILOrTrvG 1d |c 59J_B}Wkv].:L|8gW{ſo7kR ]5PC)*@iaZmG»Z឴>ڕT֬imIY'^&a2w,1ܱz={Qh W^\z,EJeTl[I7@+Bl; Tx^}4:ݞ=Nu$xي4%jkvӨhj ڨVc 9DK \vP`}gL]R*$}"\P_b]ܠF4{u>ΘoOo5"RTEGO­ctehIdV,7.lWm9֬N1L~o+@K=uȱ1$CxYuk`"Au,6FȢj5BD1 Lw4}>U!_ۛi<=*{G;mw*[\c2$Џߖ+4EQhv>}>ʘuE<ёwCV*`㢽wdoC"mHQ{G#0,;p9̛s;:~C.+57lje"{G'rNEJyQG:yYC*y4)hK6 ^QByGN}IIN*{G{G#U#Aü69FaVq%E7wAc.ٌ2jYG[Rnb(S\ u4G߶FۗbJߔeoGR=]MgOU ^QNpyG>㢭gRO;-`.&juGU  Ua5Bm<$ƍ`;UDwy(彣w$Z>H_EJyQG:yYC*y4)h;}xzDظuEّwC(9.ZAڗzޑ]wԽw44xGUm>1#ڰDYǕiܘQb;fOKC(Zy(tIuG9.:b&ץw3sG#h}eF-i^[dZrr۾ N˞}j{](^jz> 9 QNlhl0(ifZ\3O-/AD 'π8tVÅFZv:^oߗ_v):XyHT E 3‡.N3 Ρ H9ư#z҃sXly_[u5\}Q?R EULh+Fh<#a.j%'T?P+[- R?#aa1Ge-X}#,)h9,bQBqh諝5Lva1vJNsX,հXt'yJbQ_v=tVXsXˆ E񰰘XN-?3gl-\9,b= Sb crX-_ScQ?R EU-l/;0OhXGXu+"eX,1˰<aa.=aQXvcb9,6&lʟbŢA;,eXCm?;=[CE5WI/Oݒ"eX<=eW__״Vw AcS7yپ۝8_.'VO.RCկbV*&"RGF2(A|{U˙E Kn/um?/z0&fβ+"m$Ty)9,Xԗb}]=N%5С?ׂ^Í;p/~w]t9ЅAc}:N$Zgp2l#A2Ij2oe,mX[z[gli-MCze_5.?(#e ?d"@3yK[;0w ʭ|jQȗ-vYwWjsO^-;(1p\FAPR޹1#^|Y6>a&B cSo,OPKBek ӎ0ZcUZ.nMj-j K-jM5Ru0AAY3 PD٨)]<R9㦛,ff*RW C^u1:##DG*0o =XB5 1oͫHrO?f9|;TnHhI"Asܣwܖr4x첟]x 1#9, d?1@b6x;Eco'hvQ;꣆ mdwBv{}UШ Ab6x;Eco'xtq;棆+k]k3f7Hop vP f>jx{]B0H3w k 4bFs qDÎwP[wG oc2xVr3f7Hop vP gAG QD585/_Uf:_/fr]O:0}u;KVbwxņ@]pP²>pgVnū%; g0_H0_Z1 522"YҦyVflyHUr.`D+2C r2y S}w-[صLܥ4Вbuzcb$IH<,uwU6vS[*ё@m?&ʴfΝL'&&e5砚t1PmSha+ڰ4*]]fީ /WXe0%e/yyX xwGGQ,G1QK 6ёVjʮ 3yG= aUUo/' !\Ƌpe"HTYTcm͉6":*W4K}$h׉Nt$ҏϐ<,ܕ,U @P] 0ʴ/ʠ\{+#yd2+ա jl/Ҩre|e,yvʼ-W LuqIYC^֔[^MU=we.UɫGnwpF2c9װT>uW&f;A2 (2(W=J2QveRte}i 0`VHʕ$)\0%e/yYSny5UܕT%tW Q|LhCtePvePteDʤtl ա+ڰۋ4\df蚵{C#?ίNp}|!'Ǜ;IˠGsy9cf`fLe_v9Sp},V~7ŚԸ'|#pZ80ybYgOt`-W$U}is}cob;Dx1V^Ѹ>f `Ap}4(?Q^\_eׯrU>ޣYg[K_67x=.CwۇGC\2̂<'\ߋ 1 [*gv\\3KV~-H\u\vr:H׿1`03cAq}2p},V~+-Ǩ?̒=sFz^r괹I "ן=>QY01ӠD{q}c>fa[\QcTПcfɊ~oeq~u\Y/-}lyvKcQbߚHz'nͫ臢2:oϔR:3ExE]kl(tKUbZ%ά;;߸z\*ݕjdnhj|/ZFZv]G3:0$ 8 F74K( {.Y.ny]bW7oHZ x\sJ3!x ̔CwOJ;B=BDz[fe,de_Qj6]L+ u=z2 :֖}fL*qTg9PgFD:q(uy] =DVSfr=3soC*n??`|ԶWF9Ƹ[`լ9r5gDEA5{f3*q=dLe`p&9 =qx3{fe`:Dr`eό zY=3Em̲g6w==3gSh陕Uo;(ˍtVǼg6=f,{f̢ ,hg=i9CjgM^1gl-=3| g9!y*[Z< QΞY3;-,Όd),z̢͞6{f3˞Ym9K p={f3˞3Ku̲g6=5{f3*e,{f3gu*.ŷob;c=dB />1Ѧ$X.[k}cRG]+v1dz})}Sr۾ޓ.Fbj;*]wE٣7a Ty\񆻣-|~+]ԖNjK&Ӑ^?o כuA?fϐܺ=^ane?`4 t5|@KLb^jrbq#2DĖ6 V{hF L. *?.{3ZJCB-As{'^'CD-hFbd$ | L{<[*O !Svħ2#,cPv?ʹHC4kaΪEp;t'$,dY;쑞kA$[r2l85 ́$ ˉYL_n({ǠF]fE=c>Z7zM!K)a2RcR/%ޕkUP(U*b]Ԯeew/GjWh dmxZKdh ]\T{-Ɨq.]E?@} &BC C6ņ,-57 `B]HDh>\Yu2()~sT#0_7`$I7Q?b' ;͌(m4!=l3vPRCώIf-`PZ5I Đ)X{p e:DY["t t o#q8oX!¹J/DZN*1G \0j?)lب)=W D-2P㶨EnYrդCsQ\"Q{EzCZ%Am9xMfUc&@9yU"PBn9XEz /@ؔoYѯS h4S=5V.3KlU%XY] `2ɔ<  r%(9xX}IJpcΈ.ͻH'ӰTz^nKxYg(7z^09Z%& ՛(Xȥ:+FF4~!\4x{4N5#'x:(D!L!.,$cm +c=̯pMקg{u]t+6ņqZ\b.YԼ_R `T9#ѽQ5kc}݀2"Rm u/&bÂ6['?^ *U%2D>zb0?zqǘ %C:9!Ԩ)I%Z2D#[9%KM0ƵSsWk)˥ yA|ԍlTXYnHVPxΣ rİhFb2bMcbVih?;:8VT: 5Wc H99wkAXY|ſ_~.7Jf S+a6w4ݏra)0T}W6!;LY%(\uY#ZU'v[Fs85f@x}l۟FW$A7-W~kޠJ h&Oh2`2C:z.h%^J_TvO|zacR2C\[pMW8ok*{!ߦe9#bjҽݺOWnOR*{Vhq`CF5SV*XqJ88vb;DKDGMl^}uY]w~m>Wu 4-m-Y RQ͔f,Z 96uݔC^؝TUΗX:T% l@n@ \[(N?34ZjZ䵠B3\kNB@jpfL%Ye{lLÉ}-[m] H:d~Ѩx7 ^X2" Q~Ӫ=,gho Ă)}&K WiXJNc#Ũȭ&FXăp욻r [Bɐ)ףwNz^I?WhRUH-l-eWk.Ej[ĨSsNQGȼ+1U!r7+a Тi#"n)f[_m(,c!:P6&l)嬧{Bo 6ߵd!M/e !"64yN>N?01~ZACuH~y^pX*6.Ԏ(Ws VIJQJ?KɰJɫ=zԜdXͰCC,1xf(jRQh-,z,i/1Zbr9jZgQ&$ũ~<1Q@#cR">ha=>Vz1\Fe/L]^ 30 6̈́܏#l$LbI˔-cƁL%>̦VcgI{؝!1+NGc^RɯU60ן 1E3\p+yaoiZp.:U21_Pro ,+C=Ww# Z5eaEh6 T?{-K)C.&'YS r1Ȫ~Ub$NÍo_>) :$!)QJzP,3GaJb4 ێsܿ]s͎TG=emn MY8rl@ ufhm917VWR7lKdK "S2|+vfM! ; '|+(#% 6g *1EHnkQѲs*LJf!y(QP`up(l?̻ rC2IA,D7U˕!z9xtbNBL/F]Q {-kp!zyv`,{b4V*#$lbR'\ف|wRVRXPE~;Q KF1RAuEk(zb7ٌlJ"@ط\K7ݱH_WTˉ\\ɯ4R8f#tjޗC27+'}^6ebz$L4ս(,bL/ӯ&==ƔTΣ52n ܦ6,cf3qP 3g`hM:Q.RVX,{Ѕ(U4|\dv840uIj#'{m}ظoV*Bo7{H~ų)|\IN]?9gxOї;Z/lb4uk"b\W]{u[S]ߛk]F%YmmB#Iq DžYhy$ϫ/[Y_>ӾJ <0#0Sˑ 8F+K>UI0dIa 筺Y3?_2u4^wg%hƊ<zv;1 j3R-:pHnnܚf;<.zf=?b_l)_ȩ,zrƸrÁ_pWKRV?>U?EW}BvcYZURNĿz_~.7ۖtzzyqpHo!ZzmPK!~oword/stylesWithEffects.xml}rƲ:éH$%J>Kkx[vm񊜵!P6IE~ s( NUlҘ{_L7,__x|K׋|^eQoKdˣoߞmwVwOˣO?mw}>[lm~qf||rztMסuo|d!e7*}gq~yxc]4_<ާ~M1]PN#LҟIy*{z8jSt<)J82oIUɱk2"o#O5 u!eȎPĩmh{}{-)ol.]M%QC q៍VE@4%^'ȟ ƀwp@Y9?J.#4!Cu q 1bXi}Ȓp1? PRi7lL&S(2bZ HcX@X-p41_, cih/tv<:%yΩ*+A Ve0n$C80Ł+]`}ީw<߭]ۥiI3d ae{7iH7L 80W :]*M:y^nюxw}}@r@LWgj)!n!\Io K0~vA z&!j.z2W WH5 dTG.Oz9c SqJ.dA9LNl+ aӊ4;}JE0,̼&67) <`{S  7ylB;OUNڪ:73u G' h;Y9$_7]$f/ܴ `KE >[?j8;>+i^אwuW`wuv3Ib7f'b#uU^ R*p*sm A[t΂'~"A#\fW${xGj++?^׿|}Ym\ ԰"glVSlnL %pt07KVEɃ&8'ykx f?g5t}珽/ ɲWC]q X:?pMPfNFvN5#Iքާe&AǕ!H- N YzgqMn6:^(" B&8%-@tarS#hRq tc; I}Ko[}l p[};xҷ#G>Y%PT,x=r5? 7I7Xcg_|?v~1||=~zNC`&[ ߍD1|7]n\{Tt=1Ft18CBnjFߍ/I_|7n$}H⻑L{-x'OIkB$I0ͷ86[_( ϛ1kZs1Rn5v$!z_ 8\ ёO+agԕ~Pރ "WPz`+!5cn׃"˙+HAT93W.ә+9sQwΕUhɠ&[=s3K6`I|f=HӇO}#Slז!R s\emX8>*Ɓ7h; h"&;ֶқe@rlxCq?3ZbJ1vDZL `9EІ٧w !^#9o$›᤾'Qs.U̅t5D[Wђd+ᵚ4ͰgLB,02 J!2IZ$3JSeNzͰ e`sX$5xFd3+0 PFAi9 Fqh mAm2I, ی^(!Gm?Uې>et%#=ipUS՜[U Ԛ3(8j$THYA lC<, \P)K4Y H% Œd Gbc ׳},X.p dޒR,c͒άj#Tr$7+#@/1Dة4+t9UzK7\+nh;']ihCIvSriŌSiؤ;mYoër+LL:CKlK#B"B*3ʼn,xrˣ}  Rd&xkI+,;욬i2T<^/F 8bHW,h7zG_{8fS5Ocp͠dW(&K5p?S^lpIcҐGWy3v#oPcfDq0Cr Jx<"xGRe[Ο A k2eDjT.@aEw(/&"Ӡj椒B9 *fB-CHF]Bģt/1 .vʄ0q8Ї6 DYED䥉 Jx]6#ڍqDN`l|e6E_f{ļvg1%RID;6%D" aJ(-P._  Yõ#4Mb![U}4RM- Wj.u;3M 2/H%K%gky"U{A:Y.=c%']\<(a\_VQm{0bUR 2c/^³K0/Nr{d= W.X!#L(&d*g4[Wfghy {A'h{zwQ[,jU5pYI)ۈk `z5d, Ԧa 0^=I8ED;jm  gx-ljQDF9`0wO{"T# g EvUٞڙj!Uw\DCʘ/Uw\*Ê㺜?cU39'=tZ5:H.8Dw# |*vqj sN?u\9oXr#nKbd`ff.Ռ:^4+.U5}:CfFº>^ ohb'",D4?`*Kޝc'pt߹{'Fk]N1]g2#M>A'©2DRek"bU"))aAJ Z\Ja B5VCYR@8F0tTj%F^6/K2JKaUbI^"ѫn<=u+k r 1Ӯw,mijaNV6-kv @%C>| NmkiYe֤'#8eJ&$_Je2>x}d_+QsH7k|'Dq)sхךS%ީ|Vۡxn/⒢rsHݗqYM3LZ!xqtboDP7Y/yCd/LeBzdF>U|"xq>@ZVۼ98Ll j_-kH13)fWY)ڣRX_~bTh ˓=QcȵlL8u9#1<<"nѬv$QLN H\x*.5] 889O<ҫrbs* ݄s`UUZD*ӻҽIg Mj]2ѠAC3\.Oa j[#p~h{ DAnI.UK,Jb8'VJVy,g;H΂JؑD!LB'+ SޢVK 5j4Z,GrJ۫lvY Vi/IXL!2hYt4Y sB9*6I|nBoAE'Wv@-{P<_&6 b^q4Kv- -@w$\Z,jJKB1O8K_hWM6yQ RgxCS%cs`BbXp}Ur93U;C i5(nwܰ]6D0`Ypm+Hd߯;ϓJ[i 5]|EKA W\IL4ަt S@]Db V9i_cޭՓQ %$M`FUuSxUAF,'4[ug7`1RDu e4_b,$v74k`C<[w+g´}OjTA($È|葈s9&7qI0Z#˛7-^%MY$N e!ʞ%/?n=WR>(=y#u&u]/kEOtGJL6{D'l:͵!|^릩z9F8e!۬Ȟ& -4;&tX:Od0C+' jwԣSbͿ$zM׊jr(SEa EQqHk(1"WSq5U{TS(R2lEsJD♦ G^TEΖ ೽!q8MNV_ [H<7"۽$T #Y ǐYhأһbP-u" VxJ_-mjV_舗Kt |e1_Ge*fKzU-n 쨦b=8Ye9a4 4`CV_޿hfNEQ4_˼efu'2l =i,Էh󎯪S*:u՜gPrz,V)}^% Dqm3h'|lJ7ja}'Vn/Gu9ƿ^H"·de`Sg5 {x[[:>dt|2d1{eŷS._,]eu}^ Ƽ=gLq VŰC99'S_wC=&Lݖr:Ne,Yq$PaQ4 BĄ{~X;/U:bAE`.lN٣"#k2;f}ircb^wc"ZGCea̟fwʾeLJt]ljoŚןh;b"mۅDɭ6xcasmNx[ ^*pb7ẙd wR\լ:f/uΘ9 cԗx6Rbu.Xl -Y4֦o7yYÉf(+EgSJcu ξ?== ]R+Ek+j_&#Q͂JQyVthʒSM]$C(63q7~ޣTG /"p1`Oe`B}\c{qwN+=e1mu <%)ێ' uk07+*HݷUk4N{Z?ۋ'`'%HJPCo+y4?o_7zY ?(jqd/(Ik&pQ 5ϛH&c)pyC@6lwE lqTw pޣ?>+zPt!e B av3FkdCb˙ȑqSUickDRΓ}#S]v/XPD F￿@4P%t 6p%6?\a0ZU4=BgA_g *d2C?]q +Ȏ¡ aSMs,&ۘ-ә⽚ִѡִV=5owKt</]=0{:;G ukpp60;L2_=d wjL緧=՛#9ӗbOgWhӳ`KA%!ySدΠʩ.:&N/]fs0Vғ*Dj3Ƨ65kP{cD73A=j ΠԳܬ5}Eʀ:.Kk5ҽe6T,KͦrabaPM9#z;51ATѠgzJ#R^_ Of-1ՄU$R3 jgP9;[MY jTѠ `Pa ln<)]AHyhIʀ$ZVA%msIgLM9 jTѠo `PEԭ]ZƬ+YU"Te@A-GPy#TQ7o0465`P[d;b ;쒁pIj$GAl4ߓ*9bz hE;!RaC0m~Pm >bG0~l6EnOVzRh6(y_tq[Ma:'7NhU0-rSx ShrÕy3ǐR48*V?ȜMz4_Mi9ߥW;V%˄1 rWMO։kx@[cJ,&jи6}:+i E]1H|Ȣ[8EJ2-#w8EPYaS]P0V0]ՋcH)yd860$Ϛ]No ~W\Ѩ'Iմ%b+:D8h@\D.j9$jTu@kV64z\ fY‹dű[]X[c85(&v+VEDPlӡYc1{&&VX?#WZ3]U>hi)Ƶ4޵}- rإĮYM[֍]1K9.vQ6j4@pcKGv >b2غ7]u㳡[ ls/i!JZ/1`7ZũdHP*7eMX$vzSDͺإt6:l*$SԊ)cc+B(OQq.{FcK7<1}g~ُ|r|(fr8`/o=Db:v~>ݍ$ W '񙜬.6CUWR&]}U_ֆJ~~] ZV bD׶lTϵ}U r%SbECx5]gөyrɼ?v:P%^v*$ ayyjJrTb.].{xŬxH:zbgxz HL.2>;=;6>^ff]~T+.%vۍ]1K9zbeh,vñlQ,ʜ|<JLN.el F6>>7[iHW<.6c_q^^g rRO5Ude]-p(ǩFJ1t2➃[ s'D+9A7°tEg>Ó ]^/.GruqAo|:UsZ>ӊx=e:h{[wZ(Uve;u͖i]FtNQpsZ@ oim5Vǡ77ViUzN+sZ;W9=pyYbɩ\dZt_i=/FWƶFtNkNv}!M8"Ӫ7Ӝ֢1Zi=eћӊxi}Nkld?Ӻupr>sZuZ@ oim5VƷ32ZU&:iW^cMivN~lrlδ 9:{qZ76cnMZN=7U8 ߬ `{R&a{нC޿mڤ?慼3;qe!rJ-\xBUb@%͊3zo1+[gn|^R2ݥ*[qI`&eymb]dٗO~7e!Z\mD9c;xlQr]l*{rk&w<*­ D\E{8q{C˿JGev#^<+ඈ1fh?ommJm%\#wW6owjAlь8i[0| , ҰF!INЃ9 [*z59B;4;>COKhZl{-kC2U#Lq)--s%EޱqИ4QW¥\ xxuhj>$HL%B֔ܽPW,dfj6bC.%E~J<<"0qq8 jo'oݟaMuĀLt0f<+F LgT#=pk/AVsȁ<\NmTYtW*SiK2p+η5`#Q2oJD0RmʰJX.@Seox` *UV yTY%f:}*ĬsT~Щ*>UʔJTTx+η5`#|Q2oJDTRe(@]"dMy݋ Tt6Reyy8trХ^TJ ԰ *G)Nv!j.w%+Rerف:@T\{Jt(2UVYWé2xu=U}L)K2TPWokZrK7GHavde\k4N;.<9A? p9 7|d=o>W eyd9g0$?nY &N-C.Dz{TGOq70ݷh? Xsa`'vdɯ}s̕ ]1[:h;T6CL(?UԮ Y801nTIfҬ;@K\}Ⱦ ҈Tnfp=)-*:'?5z~qf y #h_ 4ǴHz0P7*Sޤ/XИ `v}B4wv \ mg{aٞ7a74 D&F b$߰;17\]]:8j7y_4Ư*VB<}ì^oXV9m=ưJض M:7D)C7ԀzPAvGĕgdްcJ FӮoX9 m7a 7#ö@c|Ca%T¶oh ԉ!J [ Haw&Jo7X~3#h֮X F߰qN z =FP v7TP'(e(o7T#]7:7X~3#h֟O ]n[Gl3S멲%kTIݛ-LYrIx_| @@ɏ;Lj6nt7  ᆀa9*U aMt*7d-1rÚ`4n^V!frJ/:' {w/'FoKúːж4eCXQmC@7_ׂ>?0;ᅟjC`M6e l QcU1`,[m*$j TV׵Uuyf-z+Z!E:ķ:tBT,qWCV -m*[xa 9}/WNN?ٗq-z8+-,qZ)Lx6muW4ruKp)+fLgX2HZYao3Tk xtX73Pf8w'QqL=Cj6Ms{yRjq8@ ;1q&"̕9WnUQ9q\q83Ĩ{ձFq (z_8ED\ p@/81q&"1i h0Wo6sV8镄T3杪ǘ 85o&ǹ]^KM8NIJV199S69`pH h0Wo6s68t6yd#cIbQDP 1"q|;69C3ǩHvPz8aGqqsuC8iG8:~qgUʧǩg'9qʲVmrNjϓSC糤> p@ !81q&"1fǙM/*ǩg'|8׿nguOOeIO~ssUtX}yJITE<yf)ZvLcceFQSY[9_i$:'`&;_*j;e,Ybu&K)>c[<9[~ މW鯩'hYa74m<[ E !J:% Y:!"d*L)ay8<"ncd (R&$ox{-QK:7~ 4uQ]bjG CFTWU'[jVOy{QFE[Ͷ+|"Ķ AeeATZG7H.[B^_jm:6j5BC mGAe{Gc"EFӣw#ަ){Gb5-Cj }"I]EfӇ郌 ^QyG>d&9.;j_{G6$r߆$uw8; "#(< ü9Q74;"QsǦ;Q,wt"Tu5WkHS.&0is8uE ԑw/(9.ZAڗzޑwԽw8^0TnjhjmfEWb^qczG4;:X ϙu%H/fyY[jm1ծP^G{m\m}.;MYj{!%_y(t_uEבwC(9.z/Խ#{[@f{~2VwTY<`PPEV#dFJBiܨ vϳCh.彣wDH)/H'/kH%֐v]"EyM~3}H7.=;|9E+HRO;wkf׷/ QfU#Aü69FaVq%E7wAJF;{G]rQάK0is8uEܑwC(9.;j_zGz#|~KW"rzzyy5`m\ 3/HӲj}^7ʭZzNi`hF::7Jge 5R9viow 7ڊ^kժuQoEUy_l%Uh y [kηx'aFlX|HꇪQ'oj2Z,!n71HTߝ٩= ]V5rbRݻCT藲4Eq[N鋼ޫv.JxBE w*k:*BBgLKԑk橅} #g5\jHˎO] Ou~v.?ş|΁0VUGL  G:?6wuUN?f'}[*]X5'dGCۨjT~bhi4#sHlQ ].sńڌUAv^Qu<,,f?GX1V!EXprX Osh4CcG$djGNa11l)爱^nV] Wjnox_TaTbQ *Sʫ@ψsXzI UaV >ψcsŢxXXQ-)r$b"/E_uq Zo/Pjg a119,6sXSK5,I^ǰXԗb}]k$nE0DbQu<,,f?Sfb9[,g-WwreXbC԰ØsveDpTaTbQ g;[,a.L-9,w݊Hazaa1y2,?9rX,xXssX,z.XI([,XajbE}9,E[aNabQu<,,+^_ $맿na2,Vמ[yW߲ϴVw AcS7i>۝8_SUSVZ!zwr1+O_)#|#Go` NuͽŪ̢WrU ^׷/um;/z0&fβ+"m$Ty)9,Xԗb}]=L%5С/kArZc?;[BY]栱AL'Oy-w3S8~ dVݑZpzzyy5^26_,?̿-=^-3q\ Dl/~sy2@_2WDj Bϥ]/zC;VP>5KRche;۬;vvw'l_r~X^߿?Tw.v̈>, eɀBԛ72< ԒiZ"´# XgiZ&ZEZSMT]~ y3LP7D C1Q6jJ+s&TrN&ك"u]<(yn 2Έ-~f&ё ̛qfk'PcB̛~*'Ұ\kg9Zlp6@m'hv|:ev >*y6d7$gvBv5<7Y.NL4 N@9)=xxTam^||c:_LQ%+Fjf;~bCZ .RktLDaYKk83+A/{*`I1x .)ׄV̱4~̢H/G^չ8dAR ؆{*ъ̐prr< z/j~T| ֤%v-.w) p{^;X)c#IR7RK]|U3ݩ6V0jfo LuqIYC^{ݑQ+*T' Q|nLԒ*htbmu jtھ+Ç!_QmO7HXU ?k&BWƱ"\#06*kU:Xe[00ns Hʕ:Mƒg -Zu"<8I3,!/K=we !e?+(T>qW&j!2 (2(W/EʈF9%$:12Au1Cۋ4\_K2k˕S]\R␗5WS|]KU[p]*Ll=X5,OݕhLʮ ʕwhk]]@_ 5"ՠ/Ҩre|e,IGʼ-W LuqIYC^֔[^MU=we.Uݕr*+9]]+c']-2)2.]*ۂyAu6":*W4'ϨՓ!HԝK-͊lw]h8:S|LVteZPvePteDʤz2Au!"`Xgq:*W)ܷlR80%8eMTy]we.U}W Q|LƹCtePve̟/ K, #8֨, "=^|yJ5WɈ.ߖÌ Ne00?m͢&v pYh_Zm f+ۻ \>B?" Xe7'։ic]kev}UaT{QMY2^'ڬd>Β [7ͯϬ Yb5vwooM4F\!fӽԛ);T+5 ʎ*PZl^`P.ZAmBުG'ccf&͇uw^\٭_?ܟNu.?_,L^eY03cY ![>ΰB||a'\Ǭ_^eE<<{a͸9N~QA%+fy~q\ߣwqV2h\^Y01ӠDaΔ1\3˰տ-_뮪r}fM&5Ic?H,\V9#LX>F>f=rIllq~u\?\L&7׸E4y\3 O0cfk\UϬh>F>f7r;W-^>׿1`03cAq}2p},V~?-Ǩ?̒=s&~ >r괹ǷA"׿N+Rq}, ̃iP\1\3˰տ-_늫r}fG1*1dE\ޣ\(:molz}Bg8_"4_3 0 >f(s}//` 2lo:<\r} s},Y3o7#?ίN;kreO-4nhL6J[I~yPRFR6RJt(Oл}r >@b=n*R0W_kęagTxWoc5q Sb^t M[}WEȷU Ԯ+({&Z9V"b E!%=bRjq IRr@if4PrBIS=y'VVX6|+쓙]ek`;Jͦ ){eG/ /_2Ar엉?QE=3N2\0,ֱ@̈(U'46˞~3\GjjLyfM2qHE-ޠ/7ږh>Gs8wl=5gvZݝHq7"vv}fLxfQE=3N2gv2})y $<3gagV!{fyϬ ,B\hAl=왱y]3^g&<͞Y̆cggl -=ҿʞYm}є Ƹg`celY=3Em̲g=3T_?_g^[>OO//&k~O飝ot 7SS~1Ui۬w'e;4j7oHHvVC2 Y&%&pSCgII #bv˅i:-r0ܰTi|˧& A{bC=, tљ6gT%b`YAPJ*JuIfd]!#uG9#1 K7bO[CHl $N-/bǃnWWyLLʌ$TOB6v" S;EНadGzla@f,6*,' g1mhΒnFg| jiJtIGckA6/=/·ԫJ]I{W2UwC݆TbwQӗ}߽]i1X:lͷjbw/ p1$tisQAh â_!tTB-Tj5j 0$x w!YpeM"|SPuH)Oϓ2n'dD^T043 nYnJֆXAKGj=;& aoh~vBNCi1&-:[.ԣC^`iI1eUn1$B8.!&âgSL7YmtXQLԂpL_s$yW4 Iſibeo}ulO:*i3lLAat?!L PMAV_لh 0A\gpNXf0JhWPl mώ!z֘ moQ_t\gz*՚?]ɀ '蹠{)}S=ꅍ73C_[L>Ipu[= YyLm[7z`-)A`l 峩.5yyu߭vV{CH^mKE*ӴPf)JmCFY4S9h),uSʒcyawSU9_bqS(7%S-rm 8LksEhׂO u΄ {s9$^@u?0ke(#oJcF>l>%vh-;غǙ u݄lɊ&W,Ԣz V%:@oTPcJMdZ^8Fpe33ޝEv:VXFZcz=R EMf*BIdC h|J7H:A'O+Aכ5?ܝtc`Vi+Yj*!Ճ!dz/ dg`CnSAęA;TW[WbB툂pl?' `\Au# DZxzأ'JI Mj*1d:CW[n6 VP(¢w2ޟ1c%&C;mz_qa~ lbGҚ\|N< 0[ =6.-cG.Cunt QT 1mL= KΔQ+41L2 n`TlZj%>Yk}gI3RΨtia9FU(ZEi3xc>]4e!Mgvi㫺\u,^aA /-q2pu7ҠUXʪ[Fm@qڒR>HibBJ}55 {ݎZLgL\%Z*FԚq9^NbѐïkI"bJzJ'2s,F8w5Hu\֖y ؤH'/ζWj [g[ijl&[֖scE~eyq-5xɶ$N 2Z-b[noZ_ b=_ݝ?i·R92\biC*Љ^dY5-?oT0˿Mdb-@ne <^G̼; 8$Bo/S\ic hI'6/rmհRKmƲ7j,F3za{[ޫݚ\S]Run7.AjkHe8.ԮBȣ'yZ}Uy1&ZԼe1r']YJ!K k8?~<@0 kkASk]`Pu~k-7,,D%,Bv; < -~''mZrILHLf+2&,M?fW@CdwPK!mšword/webSettings.xmlSN0 }GP坥:$@&!@ > M6I%zŚl !jt%rkJ4?>gYL)aA6Ѵ+:UƌT\,,Y/8+=8JHnEIWtķRD}d ˬ, *CƧlFSzϬ+*$\y_P5%nߖnN;4@u~B SB Tޑ>9Ψ0^Hr Ҳ*І0føa!To7=p;L`6z쇯}hӯps4 g9-f x&>@X8~9ݵPK!eKg@word/numbering.xml\nFwҋY`Om_W`a Xbf83{O^$p)KEmi)%MRzuS_M },,i<^Di]:Q0=ǝd;U$r4yVvbR>]М-%Q4 .v=x܊QL-].r>! *PVH`<\G.pÌ1t6Xs! o/_ܷx^d{8LؘƖ |A3"\#xR,$ l/,M\p$ť8no\3{HKK{Mpg;vI,n(|h HD !~ڧRR-amڋ/2Wv~ݹ/5v{p]5- bV+N/o %Yy3 "MP~u/}z)^w^oV^eN}H2%/$;@!R|pbDelORҌ`~.P.TP+c7%& tq tjׅڦ^ܸN T ս/6] MG춷_M;B) R^xCG/(RE^m>=Ce&X.P VCa.Y\lvإ5;uѪ::3A,|pUe7njs9`Gk7A8::H=x,AGBk#jj+ /sx6W8 NrخeuKw*BQל"YvZo5!tlfʹ;Yu>L|' MD^Ժˉ9[U}'˖UGݚyN9ڀ~'K,ێ>򍆒;Y0"q3B+m]dvj ˫$߽w| jv$|LYyE^rM"r/{ġ}Ii@R ` DϮօ,R< *ArY$Zv84GO VwgDֳQΙP*+l(kd!tEK.sY6X0vco H b+6т#Ꭺ !,Z>v!̬;YB׷Rl5@PCkl^x2LZ3@vXΠۋYbRɄe5-PZgAUp!AHZQJ벆 yskp1׊e#( b@TBvVOI9p6t54) .`/E#-<*ۅ{+YG5Ѹ7ϣ*k Oa&gaiY/V02aEF9HXè 1EHz9 b=-?G~81 rL&  Ɨ3c. O>PK-!aDե[Content_Types].xmlPK-!N _rels/.relsPK-!iNFword/_rels/document.xml.relsPK-!]b word/document.xmlPK-!: word/endnotes.xmlPK-!word/footnotes.xmlPK-!9^(word/theme/theme1.xmlPK-! word/settings.xmlPK-!4-word/fontTable.xmlPK-!\Gnword/styles.xmlPK-!~oword/stylesWithEffects.xmlPK-!?<vdocProps/app.xmlPK-!p.`{docProps/core.xmlPK-!mšword/webSettings.xmlPK-!eKg@word/numbering.xmlPK|pandoc-3.1.3/test/docx/dummy_item_after_paragraph.native0000644000000000000000000000061107346545000021654 0ustar0000000000000000[Para [Str "First",Space,Str "bullet",Space,Str "point",Space,Str "created",Space,Str "and",Space,Str "then",Space,Str "deleted"] ,Para [Str "A",Space,Str "normal",Space,Str "paragraph"] ,Para [Str "First",Space,Str "bullet",Space,Str "point",Space,Str "created",Space,Str "and",Space,Str "then",Space,Str "deleted",Space,Str "after",Space,Str "the",Space,Str "normal",Space,Str "paragraph"]] pandoc-3.1.3/test/docx/empty_field.docx0000644000000000000000000003375007346545000016257 0ustar0000000000000000PK!ߤlZ [Content_Types].xml (n0EUb袪*>-R{VǼQU l"%33Vƃښl w%=^i7+-d&0A6l4L60#ÒS OX*V$z33%p)O^ 5}nH"dsXgL`|ԟ|Prۃs?PWtt4Q+"wa|T\y,NU%-D/ܚXݞ('NǶlC[74U";9sFu%O0PadX!9AQɨPڀEu~慶HKPئ9TԆJL: ǚ%(af3X0̂ h[eY\Hw`^ Y#U ="q"OKaثh Թkn{OLIХhy$=ɈB;-zR҆\)}(4yZ0DWVZhN _Mct5Q1}v`${?y PK!Gvz0word/document.xml[[D~G?X~{z2%Z3+$䶫.oUu4O X2B E"",+ $ ~ ӝ=U>N6;]|:uU=ב:P{Y]ILl^ S=% 2졂CTSv6.w} Br &7؊]7.&%Ԅ 6_:C8so14]hS2C{# iEWr@@PSg'(\R@ Rz992!iH吒Hfɝup#*GT\̮ێzD0.!"IYrV rxa{.z>h^dArs t=ڲwEV9Dup9*<U?Կ&XD>#I\QKfL$f2&Z0GC1G# ' DZGUcŒPt2t$c棹:mf?(uy:pLJ$}4a[5MD$,"nў K[=~& bldZ)geQ TZתT J*Y[Rjd:YQh;lXFe;1\ħR Y$xT(fPnFj^2."w ʊ6VLtA_RQI5V(Co /Q]y VyRKKk!Z; yڿscsӿW8{{W߽}p;۰F*5<N+сS%(hM,zZ;,ULN|:j+BGف#i t|("$J/V$90,fώg5] F[C_u5Ȟ01^c{0qE 8%9Ա=O+Ҧ CqeƦ )S)âŗj-I"܁41n:Hd¢$f]LO`X ԶR^k/]#ɝo4mig8E<D}F^ a}bQ=+"T GmzN X6hz|U?8ް&;H8ic"^c%?S$Ʊi/c{_Ȇ@򸔑k2Lz9|p**9)m#&KULm!K,C7YMV 0@2<֭S"c24&iL>zx)?-~nkwfܽg;wG@og;d`fKM9>R̕wx%c3Q5oV8&ri!Gcu]f1;cƌMvUf@/ Ly߈d `E0oujVRHA^P^'>}gbJl8:Ό#;&.$LJi{0lms.h0mnv%u\7ͅ? Ags)c^;sl 5}o|c uįho(/:uVkx%((-. #hm9|VWnMk-wI6\Pj@q~o{(Pjխů-K2 `qе&AǠA&c~ʽ%/N>?}GnwQ_/߽yOxejZ8Sh}g/|x72%q$|0{;E7(HѠ,Vf 8θZ耗wq6eH' p#vNWX(LH?x6-np:\z1Th< )d#c5fwR⺏P2bd҆ մ4 ϷF`{H7ֹX e0e 2 .#u$fY2bbCHz6S^\idzDEf u=@H铱dҸ ´$CD}A%g[\ DL3ݖDݏ3<P:zҳ4~Eݝw\C_~T/[Pt=7 ){޴Ky.$o#aGS>peE-&1/·SpQd >LMѹB E&$[kٔlgK"6C½Ea l߆Di0DCC- !gm pg?o7;g0yn=ӛN^[pN妒(-py˹n/SXEhN՚q\n0#~)dQGi q]`f`^NNjuW=%׶޿ɏrheY}m9BACu6%pSS/Z*UkZ8PL&k-[Uj[[,MgĶOU+^)kk/'._>N1*<^rPfL31YNWZNb7lrJqS^> =3x6#^$5B@*4ajukCoG^>h7ڽf*kU^W|iMHnóVYݴVzvݽ?5yYWPK!F`zword/settings.xmlY[o8~_`u-R$%y&H8  oDJN-NӓAE_|s?P;cۼ.䍳\*X~VrvtQWby2Ǐt PQ2X٬mz0nԍ׶7RcJ]ˋ;夦XmT.f~YߏULr\Z4XBWقDq7~gaĕw&m[c{!#aNCޛF?Ƕ+siCЗӨ5*ҧ=qy;nJf\〿3gh7H/0il!38N'V/4vGtScE$!gț;2f,95en!^vf.lz]W?|vx>GO{8KDJ9Cl)ϐex>upxsP[y>C>j8BE(SCi"PDBD—6%GQ:r4 1w PDxADž#$I#Lh \ƄD& Q;n͍HF㢱va>%ڍ,pa e& aeC8Lp"@{Sh 8kz q<\N>z2:"tJD@ E-sBA;Xc t"DU%$wĉ'>g8Wzo<|Rx1^#aT'Pw] |shZ~!~[p/D3P|ԃ >^ׁ$АBz8ZE1aFF0 4qP"uЕ& ["/|I <荟C5Bh~T3n'r A3"C(C/QP[IC#7rӿnYaQ.w6׋wsmW33ښjR )&iwqYaQjf<_fDn炙M^uWy9n;KUڞ@*q:~{xv6S>nmX~:_vsfnŲ蟛H/LN0:bL3 ;34v41DO;cX>~}].1A7FOPqH@Lword/fontTable.xmln0@' E%U6ڤS'mc1sHfB0^ޖiÕLQ0c5y-K䚔JA.i5f*h kZ0AHULB2SZ :?7U"x1O,]+LZ7׬i)ZueEr G VFev*r(` 1C_L>༮aq_ىfEN?Ri*͞7wy&tuիpd2䖔)zTE2,Sqj;҂hÚ \d҆3"xdcU}xK4oѦ !1++ %j#Ad<_,H5_0"QPǁ1:ξr$qwjc!!p ЎBڙ ю;M#fy`d$?7?Hk9oQ F`"rf}157f):LΟ ^F8| }AțÕfPK!@9#word/webSettings.xml_O0ww Ab c~ݠ-Ombxarv9|B a*Kׅx["|,z(H,7&o` 1IJX;]Mu.% 8ECfӰNm=jXr80hx@uc/XtԚkCY@89e]@耄Ur1:Gi7r@aϘ ɑ)91d~][cP+Qלtprm -8K  ee-6/Ϗ<PK! (f ruword/styles.xmlKs8[߁[SL]k'ٜ!0&-H1~ 5AA/EoI,̙g{X$?~>|8ӳG~{o)#,>͋biw74#\ B}Ob'قlRVG5FٌJeFyaw%MQ|yC{C{2YH\~&ڔܰlG?6(9w6ksMoSܙkݺ ,6FLIL nR^[?dRg=}*ͽdB*mNOk$[9K9?sOƋi|yB]D7mK:1oDZ~NNy&48vfwsDu:{h^':y}|D'"< n8Ԉ8Ć8888q1S+ `?tD{7w>%q~ ߏ=qs?ݞj(bfB\4*pe0<=Q0Uf'#Ĉ>/tY4cSLSUG$I/ PҢiIgTRӐ2N#^f X'!I ˀ&e1"a:#Û&Hpc!E4[3ᵁ / fxe`0 ghjZq3Ըմ@V[M>nHMW]B_܎ {D-O75H(bX\-zpiWBpZTx9|hRߒHKpީU^])w&htֻHW&`2hoz"1Z9a+pYmfͫZ#K#Po *UNڞ"M M )v`|+|s3S[!/ g;ܡ0Ƒ_v2(܊6z ] E!`?~?4\-Po]N2K`֩H" DRRYIMߦ$ ^걜"NHV!?G"4f]4(şea.1媱>կO 5ήBu2%yΜwIyBwxWD*L ` 6 0xdžÆC\u3Is򄁅rup,'q,q*X% gA@7r,X83Pqf`BUDg37XP1g!M4BH"!YX^=3Vǿ4@\4"uU&6mm33_A܄t.҄JGܶ,H\_z]»e"̗mxoeSɮm?aۘo]фYPEackGۍWSqOKxvq%<Ǟ&mYvȧ@8銟e(Z+m!xEkRX_}?1*rS0rrSzʍI|'@7^RTנnBӍZQF7aֲ{{7wq#z' 7W&rR;7VpFe+hV'[AO p#z/P!-+7%T`%THA "BP 'Th**RBP!-T@ "B\;ͽ )hBZY/* R| )hBZ*D hBJK*D hV_* R| )hBZ*D hBJK*D hh qB>BB Z*D hBZ*0* hBDW|ַ]z:>nk6?i !/zMS&%jfk@~>Cs)TB޶EQWۖ`yԕ}mK0 u%]i 54c;̻e+G[p2e+[ǑNΛ=i|" ]a }դc(NszMF7O'X7 a7PfXW M\ 0(oWCabĺOnjs5ʰ!jv5D.!jHr5] Q~U2Րu5$`] ^WC!*ʚQq07![lzTKgd<%jv{nB_7 (:1xǺQhQ~UKmu5ZrW-uW-uW-]\\ퟜ/W㪥NW㪥NW%qRqRqRNNqRqՒոjոjոjոjj\j\j\v5Zjs5Zjs5Zjs5ZrW-uW-uW-)uF" k 2{?Hi-/k?3oJIhI?ѤuKgͦZ=f)Ƥ?fTl>-lh`&% dSPn?PK!C9xdocProps/app.xml (RN0#Q)R*BxI lٛ±-۠44q#Yxfcv&|>+ tJfVw'(^}*'{qS_ ;p{|3 PK-!ߤlZ [Content_Types].xmlPK-!N _rels/.relsPK-!)YXGword/_rels/document.xml.relsPK-!Gvz0< word/document.xmlPK-!x4word/theme/theme1.xmlPK-!F`zLword/settings.xmlPK-!:JpPdocProps/core.xmlPK-!>L!word/fontTable.xmlPK-!@9#e$word/webSettings.xmlPK-! (f ru%word/styles.xmlPK-!C9xc2docProps/app.xmlPK 5pandoc-3.1.3/test/docx/empty_field.native0000644000000000000000000000205207346545000016577 0ustar0000000000000000[Para [Str "\24076\26395\28145\20837\20102\35299\30340\35835\32773\21487\20197\21435\30475David",Space,Str "French",Space,Str "Belding\21644Kevin",Space,Str "J.",Space,Str "Mitchell\30340" ,Link ("",[],[]) [Str "Foundations",Space,Str "of",Space,Str "Analysis,",Space,Str "2nd",Space,Str "Edition"] ("https://books.google.com/books?id=sp_Zcb9ot90C&lpg=PR4&hl=zh-CN&pg=PA19#v=onepage&q&f=true",""),Str ",\21487\20174\&19\39029\30475\36215\65292\25110D.C.",Space,Str "Goldrei\30340",Space ,Link ("",[],[]) [Str "Classic",Space,Str "Set",Space,Str "Theory:",Space,Str "For",Space,Str "Guided",Space,Str "Independent",Space,Str "Study"] ("https://books.google.ae/books?id=dlc0DwAAQBAJ&lpg=PT29&hl=zh-CN&pg=PT26#v=onepage&q&f=true","") ,Str "\65292\20174\31532\20108\31456\30475\36215\65292\38405\35835\26102\35201\27880\24847\26412\25991\19982\36825\20123\20070\25152\19981\21516\30340\26159\24182\27809\26377\25226\23454\25968\30475\20316\26159\26377\29702\25968\38598\30340\20998\21106\12290"] ,Para [Str "Index:"] ,Para [Str "French,",Space,Str "1"]] pandoc-3.1.3/test/docx/enumerated_headings.docx0000644000000000000000000003037307346545000017747 0ustar0000000000000000PK!2oWf[Content_Types].xml (j0EѶJ(ɢeh4NDB81$14 {1ښl w%=^i7+-d&0A6l4L60#ÒS OX*V$:B~^Kڃ /PI~7$ iJ&B0ZDutOJK(HxG L+vdcӻW>*\XRmpZ}HwnMVn-")/ZwB`4 sDXj;A*ʝc֝4[S9> {V4pW&A|d?PK!N _rels/.rels (j0 @ѽQN/c[ILj<]aGӓzsFu]U ^[x1xp f#I)ʃY*D i")c$qU~31jH[{=E~ f?3-޲]Tꓸ2j),l0/%b zʼn, /|f\Z?6!Y_o]APK!word/_rels/document.xml.rels (j0{-;mC s)\[d{CcMZ}EJӃ3bgz;5$uoZ'ijA#zw7TbhXqЄ:-)HAVEH%w ȯ2ٮv#b?ٶi _mhFH6!SIIB4*\}u.l|!8[s˘fpf6 Y ٚx '~PK!=word/document.xmlĕn0'#DڸIz(`)J",. i+wŒ u ?.7T&EyT1Q)"Õ4E;j:$p*aZ֪ ))3='2~-uGA4JKBxXlA?IE8s9Յϱ^ol*fw#S"g{AnJ ~>&n;eޭ@״ R!YKIlyՏUxqZ  cg$^_&qc$pMK3ZuO*N+ν5i/bg VWqj41+8$_ !5^UJ{n[8+\:+ Qߡ49Tyn,FM˜-R@BϮcgƣ[51y5Q3y^j W{5 q$HLEɩg=උ\bia0O`ڥ3 ~dsJBLyNʽGuRZS6\(p |08}L#_S^?ʎ:>/@_}^}?< t!N71M91ha nM#SXsHCf2)6}Af[SJzYt=K,샳 ml-TwlsȠyȔHN؈>t,= z[CrGjZ]ÉFPۈ]У澏L\"b* XÄ=(bɃ9 s!3!B DlnA{<1L )Ց}:cLq؏D.QnQa%Ae`5w12}޾#վ@m D8'c'8=Sd{.շO{!˰uG6ܺxkw[Hn tto/+V⪮$[cLȁǕs9p(UE-,.3p `p*"pq0\; dykZqS],'ri [xAɵ+/rKO2Q /wb}KpV3I m(5YC2!f^EqM[lE!pqbUyIGb>+(ʒ֧FY&[Դǻ;5V+7XҽuB붝o hV2jV9^Ksqާ^j&\}y]Ut"G\ Tk.'8*^k_AɭRK]ϫW^ʠ8zCE7@}x1Jǵ.#Jl͆dq#v+J{SAp#r),=?AE#B +ĨspFы ]hUx߷S x@яDRA7$HVuR R U t#sXfp7PӾ YQi̖keJ)G/%K#/\}>kç@Js$ߐɪV5ei3.^[5U(98ӕCɝCo{$Vb>˭.ǣ%hlКE~=D! [[*C7,AAP@|] l/BaH(ZN洮8xgh%rl<,%xU0u( &FnoM~)ϿA%h/x307^bKHo2fobII"R yshfl6XE!RlMIRE2+wxB;Vߟ/x1<5hd.ېOI*Ny?jCq?\#0 mqҊ,j 8"h8hy?;WphtaЊ\ų+˝YҝLuX%1G,uVf= G*f;<Űo).Sv%L ر`db7LWHn5l´ˬ),HQz]5cGQ-I!U yُU\(R-X?;V?B?? ):7OJ(&?FQ7Wݑ?v F?'M'\ PK![m word/webSettings.xmlJ1;,Y-T>@ζL&̤kH/I23; X֌ yZj|pm*).-]قl7=,)*IYků )Cǎ]ђWnfW"Pv\Wf) u]pK~ʮ2D):dSx<>=t!3 ue'Q>w'@ܯ[D@'3S̀r >`N| v1RpPK!rek  _vword/styles.xmlmo6?IthY5)Y蘋$&ٯdK9C3S XҹDC9ϿoIacYLB|orQ?.YVqXDhL/, >(?4l9aQ7)0Id~=mdiJcNwE`_Y]bIⲹʊ|/]ķ%q^nm$hv\61sN"@*SD|o̟E@";=v":b("ڵHŅ๣W_J܃WN^{J#(=ShoP,>"]Âjpo3}!(-Mu,q&Yi0_>0_>0_>0_>0_>0_>0_>d6#Qo!}y7d%I,gOȋ܇YvXa*= EAxV8_"Iޚ&X>uwsn_:$aD,Iܑ'zQ訃0rIUexMep;KH1'S.vFbL*5G_ވܷ<gmDN,#9-#e4"|xFtgUq7r*]FZEYpFdms]1Yd`L+3+oT̳ 7ab2t$or?sD=~(8MV38qܳa=Ca56Qb=ZÖ`8 NR㪥NqRԸj,5ZjW-IڤrB6bܥUKR%ԸjMj\&5ZjW-UKR㪥NqՒYj\&5ZjW-IR㪥NqRԆjx`.0Wg釀x*,ZwͲ]]:ppն%϶}G[6_%8 .8#Oef4g0o΂WȽ3uB!4rpM3R/Su jEB)~nc˒7\KVm/yzKÿXIMtk MykT5.\I}1ʡH,{ ofe :RUwڶ{F3qp1M֎YbUfܶFF*YL?Uk\'Hmic< }/% /Q3u^[:K"YL~3 Y0nK;%"$x&F/?^쌗tRuӺ3޿C*gts7Rɻj;*^~}@n}U/mc#tw2_u,U[ ވ$R~oR SZ&75sKzfݹܬM ^9i,ʄg?ߠZ? $-TGЄD=55OYYg.F@'<$ꏁBKw˿L۶-=- 5‗k,¿l PblmWRV8>VN-zRN_Ϗ6HԺI'PΡni(sPrjQפؓr4wUd$^zQ!rIOBV3ś j-$ēz5oGVgГ՚hwacj}̤'+w/iZV|PK! x&qdocProps/core.xml (]o0?CAYbo6%sٲ=j'=;y{g(B͌-,2%XV( ,W 1/ BA sJ\QǔZ5ׅlf|6@Ga89  }+ཤޛB9(4 "zfLn/4_d.p=}˲ q#|~mKU{Ł1J M9t}Ƕ'.&2PH6LWAUFX7=&r#5wlGg=Zm!49ܮsĭ]}ZtFS?d5 Mv`~Zӡb'4PK!1 word/numbering.xml[O0';DHnFEai&>/뷟\L@RI{yBBbRx.nV P Hϟ.kV :LER: eGʀLpɷ*8 v3$#Vz ;3'8Nm8q"FSBͶ 1s hkln<@\؝v8/ OScj)<=, nǸ+G]c tˁԯz]Ȇ0s іm,Ah<$ D"1JR ]*d^{HeXZ1 u3(6Ž:n.ۤiG ڪF0f՘S0;O!m:6lC# .F;Hr#1Ad2I9G,c0ބ |ɳZzS_)xU|']H8V=&kOewQcy%X b2q \{5 -'C(wcf~ӰAdt |>pwkx0~7~ hoz\PK!# word/fontTable.xml]k0Fe2uJ&0(PӇQHvBb6=G?* Қd3JaJTe}qKlFT <̿~ 7Pj^LS fuyuM.r#4kœ;-S'Vvpm;g3k54fd HK,0" g4z\'X6 Nh?K4^}l53cƂȰgTEh5W/QA[@HfZ1u ={dP`aZ4_dH,1-1Z)!#g5ĉ%Srd]6+9 s|@/[W|!7'>||h"܈ebb9%g݌0 PK!docProps/app.xml (SMo0 0toxEEn(ӞUNȒ A_?N\e۩>GROO$-_Z[ &݂&SVӾ6n`V$TV;X#$v-߿D4 pivay;hUPQUH4nor:P_Q Uc =)*hUWwNjcTTL HJm!ə>I~|bSQir*xFMhXoqA/X~r*~7يjU؝LFn+e:@E2i%+Tc vP(l(HmHeeВ{|Lರ'—}Cof{N|_KJW{ޙ}N<%&T[S[/<ܭ47"K5ESm'OgsͿnW>MKuj?PK-!2oWf[Content_Types].xmlPK-!N _rels/.relsPK-!word/_rels/document.xml.relsPK-!= word/document.xmlPK-!R%# word/theme/theme1.xmlPK-!oE~m  word/settings.xmlPK-![m word/webSettings.xmlPK-!rek  _vword/styles.xmlPK-! x&q>#docProps/core.xmlPK-!1 %word/numbering.xmlPK-!# (word/fontTable.xmlPK-!*docProps/app.xmlPK -pandoc-3.1.3/test/docx/enumerated_headings.native0000644000000000000000000000023307346545000020270 0ustar0000000000000000[Header 1 ("h1",[],[]) [Str "H1"] ,Header 2 ("h2",[],[]) [Str "H2"] ,Header 3 ("h3",[],[]) [Str "H3"] ,Para [Str "And",Space,Str "some",Space,Str "text"]] pandoc-3.1.3/test/docx/german_styled_lists.docx0000644000000000000000000012566507346545000020040 0ustar0000000000000000PK!a'M[Content_Types].xml (V;o0?\ N"(,gh id Is1 ӭED}izfB캚tJe͞ +" D,l ξ\Mk 5kΣlX9V@ K+M&߹tbͦwЈU=?T̈́(O|/NGd[ŪzM-!{;>~xM ZA(WWN U].mk-a'6iJ#+@&";w0)Gc{4 ibb:_ [ؼ R唹 s+,.b\nUƖZ$G$uV<%맫,2J+H,Y../P1t/٢m\MIXSjyXנ܉F2ti;ˁG 5}8VYJ*&zW'޲F[-0ZR-DcWjqW}+x8ZL:qͷ\Z@t Y~mHOؼQD$$F7Wi%4$ܿ18X _Bojompp6t/$ Inu%?QdP[DD+hcGԇh/PK!h}H8word/document.xmlXO0~!;MB@D5önϓ8c[P&miA1i4s%gT&EŝT21߿X,R̥}4 ~9T!LR)G* CCrZ`)v,Beа: 8)- 5b r;x?3b3 I]`k:ROCߗj*l٘qfg/0>*HQQ9$ӂ7@y[_j^)REvE| ^ R|mzY++XfJmHF S8bEDa s6LW햚*[-FRQ)6[qbJ fQˡWՊQEAAۉ90Nhi,әJw}A9<8Gpɭ{ҍEd4T u}=ż1祘f$G4ZZk03䌢,'c?u^l鲟+QP=hlN)[+ }< %ΊSc-FKnq xoV)Oy~u]Kv5)Ǿ³te 6aQ_R`?u|rXv}PbulnhH;xwSR}G35M}ߋ]gRߦ>wv;&GA|ޘaR;w* y PK!'word/header1.xmlXYo6~/깉%_u@k$-ڗ(D$m%;CRM@ч97gF,5U > ( (OEb~ @3RNG_P%LuRt.I%->,Y9LEyRڪZ(J*RA՘5ѡW$h* ㍌]DBRxsJbP Pw+y%1l f_oĬGJ[uX< HeQiSsCXD*)7^K LnVie Ed׸g)RAkŕ32TP4^b`c5M&Un{.ԅ+X%]F@U6MZq$A&W .<`FP̼?S桠AI1 gsXpTB(~ A Y_ qW3GK3͍ 6cQJ,yaIF,7v)҉ jkhL)8"qJ >2'5MU0fNJ ErvOkؑK+8!0$mv!T 7s_lݏh2yI{nrF VjwRR9JÂX_O`]u GH &Y:Ips}*& _ԤK$Ɂ܍(ԢmQ"}J䄏nIp.z!AC-aֿ p$d}=[[`~uSp4֐O?PK!%8word/footer1.xmlUn0 ;vҮm:EE1mw٦!$9^,;1vˋk'[!m,KǏH J&tDTe/N)ɜUJBBwgM\8C[ڸYB8 ml xfU 2%BU1Wꍑm;{D!ٹTV vFע?Jѣx<\̰g;'Qu:ڔџh}(g]|TRPFzJ Emof_3+L%"oJ K+d_tI&Ɓ%4&GǓKo͠`ud|x2O[-ܴ{PzX+NB YfΏj!mY8,eۻ;ґ)? AO.9i^$szF;nrA?R0)-ȅ,YG8IsRK)Z=fWj299wc;ϰ#gHv)kڷR+j$ m9Q4cSzS`QK}mY 3;cF%!6ԱF'!Px]gr|c;)P?,4fPeˀ';y{OwfӖA˞kd'#8M' ̃%$˂L6'N ^ej#ڥXSC\Zo7k:8632Z4q}<6!kE(Ų7mH0HcY I-#&@?=*~)eXA״ u0{ "dk`RQq}gZQ^\̢R8+XJ_Rf܄H\9$ʈm2=3`xa(H@\X<;MsfЙPK -|/r/D,y\}2~jaoWp4 3`4{Qjδۯ”֊ i\Y$l8Ib2N%QYu-8Δ6|H>8;pHgvέ΅͈d| M֓E˟qIˏ"MTKd=OV ?yIt^V"?Nzp62i?Y}9?Exy_/fOBƀׁ{ U'sχ~@A6"vvQ}+sSٕ7{e…=r'RHf^ʻҡ8q"EI}D="RcrA`2[ʓLߕJm܃_-Yo+Ufk A~ٖC]cpvˍ3TBไ$6-+ UK'yP5?l}2O# zˆz@N4F6>LKPWKKH5JHZk2o[oB=0m=AE̦B ;bj!!dݏQBAjr<1 ~ki d^3L n"Cy\JwSivhY*%A} Q:L./3U!ư{G}6][ԠJ$h n(|C?Vv2u`w(; ulmխ~LU'+[r! M[qsEMBՅKdTmuUG=IɸB%Atf 'RqHaL7a.ye\QA2]w@ ېT@Fᯯ9σʺ wU̔pH%ʾ%,U`DQ^{ v Hu& qPAnE={} ۓ/f0*44oU$oœ?OǛknƬIS s,BٿS7^c,M }Dp/J*Iiuu[$2>[<' -z?d:٨kFgY,.ŏtvpkO{% ]&C,)T xqUR2F蹡:PK !* WWword/media/image1.pngPNG  IHDR$]. pHYs\A\AF> IDATxmřa=1B ? IL!Z Di7rC `>O}ΫFff4H E@N0fXLG1HݮlsN>PUUէOwUS/AD@D@D@D@D@D@D@)^RJIDK~տk> }\-7߼m;syr'ou o?s|aCcӱ;po['[J?t0mf) (XLN(*pꦖXV1߲?ؐVXA`tw> G2+[n1N&o-&UDc輕** ?>V'K)&rM__<7͖opZI'N<ыYPr8g/߿M$ɷLCс˨ oӞg0, οqN]t?3f?sjPqg]A!/=;Y܎CYfU ppN3ޅB6Zd[<'U*t,„^8wJod(Nic=9q=%2,h/Qo)!Z__nD޿]g %N>7eڡ)J%*v8W]~ꩧ]ܔv|I&G8Ih_`!_qYWhb;{{/`FY6Pp{ߞF̻h /Ԫ#Ku{7aG|Ǝ lc#!6,<˙Qg{vΞ;OUY#›f_u3hN18zmm{'sq7LRC9;:϶\P97ڜ9(#kСC>reTgJTU:eِ!+w^`5? x2-?OPw i1^hײ*tOnv(iYS/ix3O'r߅ݽ{7s{^|E\dɏ -!|ؽkSON 4%",h`YbRBs,q2^k &q.`D( 'ӖxB!ƉZ\sj78 ];2XDrׯ1aEu>|8OWP9% (oaHpbtxUtb3ۘ[V=Uuh{7iR:-&M0|r(WRdvE70*?rz)P;U8TnCہyp*N˝yBCc|9Q~k\n[b ^Ǫ/: .J[@Zr6z] Ȅk^Ѵ=Z pz^LH+'${&x+3;瑝CAiJ'E `Q4^ziyQz+.^Ǫ gB{~.CNi٥ȩ uʀ24C^$_;8]; Wcz*/ZyK<94Z`F,:0F q /D _ ,VuF6,;~.WwIv]՚Y.BECfw|ZlV<@l"=ǤБ_Zf{&V)!> * jH<, .˒Tk[U+bFt#M%6A+.1q&:Ny\Ym $9cMԊFݵjڶvA_.BAgPoh6փʞaT ۰f~g8dAKX)tKVz* Ei;?,.s2Eк&D`*q:cG+.)6ghP)L khm@cy <>s maR.H*|mwc5I"F_틢i.5 ٮqBljOv޻;V}Fdd(Ɇ8wM5MiU* xH[ۀLL.aar9r'ib;HrԲ2D`\A|=|^g0IX aU9K(&<⠱"̗F2F'(ksL`Sި`3:8:tWmy ! ^-Ës=gh}rmY4+c^{U82|XL){GЀyf}̥l-7"r[6ɝ疝X 㸵r(@lS<]+gϝӗχz-u޿ 5< _}Rګ7ƛǾyVsvf^e)(< U$yմZLg_%YE/ClӥȰWqu:.@&=lϚC՜>n=fOC`BA UBc@iǘp^}IXO^r)γM9Jr@IvV㡼DϹ'Nصk׀L,+̗Io4['+Ǩ"rhZW9"hܲ rbk3;deӃ["rDc?RikݏԇRL`qu=3D1F_ݗ_b6nj|yٶekuf!J, /dAsӱ`>6HŊ װI46>m<۞*FF3N:ɓ F &o2ՓaQ43E`ňmJe/5%Q!U.Z;"oqc #Ryk=F̋q`6gW/ʺ%B]Ę(Zf3AC"$p;?y;ϲw)52{{\k|_Җ˴/jυʨ/Ta8pRS@ܦ_5_ˤu`ʽcg,TJxxrj4vuN! L>=.0I&Cs+5UIX ds[۹kn0.nj D_35e,{P_0$9X ABcNESuKgLVf xw}`#w#/+.a-tv٢G 'JUL!x!zl=xQz:7?Ld N-K#V|ÏAPqYAf9°[w4rt#Λ-6KܹfN"; <䓽,7cV_(}#¹%{뭷rJ$3tz~С1*Llc:3y2x8M>ςwr/)i۳ s[:k2- fGK/[xx 3H0_~ %½wwGoU]QYK/G5 `Uxn\uDrM"54nqשg^`p *Qb{1oѕx_epk"Sft?6oAm]v҇})}(2Yѷ\g==8 `~o#Am4IDݶwܹ!UEjuD7ȁL11o𽼔(2 poxY'~3[g3C%΋`g#b#v3S3hO?4cw# k׮ǏG,`yb>e ;-V髵2 3Cޱ}{wQU?pe'X:ZtAy^AݜUJy6Rx"Q$_YAZ$vbjIeg6ۨ13`-eq^#ǹ|J]z.fO/],nbBu oFOt 197W; FOi3<޷ kT? ??Rdk.#u#;聑 2 @r][F.>4^ʺMH'Ϋ:F*4Oئ ۫jyy"SyEX9WU~'s^iUvt'@'ۤ{ݯčC?Cu*zdƿ?[O+Lt!9|x}JV5G#a5B^U^$rwU^Xo$x)7$#/-O&O=daJiSc*fNx&K9خ LH"+UlM\^!/+$M"(mMO!h > FדeqqtM$Tz.:OO5}#+dR s$\u *;ҒfS_n=l128o^)`uR2Ӱe3,ERv[, ^U:EA%AiN|Vby8dvD$cثk>ukI@*HVY[gv>.f3u//Wp.QM(m`~~ T2i UA_wAiwطJwp p&yZI"b^]zضޥ}^Zъe_w/\lzʽF󴝃8Vb\I xfgsk ~gvr [HDlȱ8Y UiHyfh=aqdĒ:琔sv#s͘ nv|[ljyT"dc4СY jlۺQD$Zwe.-&h^6+az.MPՍCw̺\(2օJe6͛]=s)>~x݌Ŷ:&R^ӳJ0 Q8ϡ oΜY9ٿm~ee)3Dkp,$])x4x@۝xKAebRn_{d27g$nsͫRb#=2י9OEcqѱ6۔Įsp )B?tjpGvpX m:im^ w먞g`nIԉгML6+jHrbM+ndvBL[5*EgSFkEK sUk$BM˗= #k(dGCWNMjnݿ Ŷwz#kٺFW &ϤP %Ei[->NDlS7pIu2qK~)[9"fhu ź7fga#_J[n57Ni*o 'O|;+u[wTD.Ekw}/<#P`Uq(|yTaP߹WO~aV?M -ȕZ>~¶Ӂ,B\)Ǐ\,' ?(ILW_O그5$3ڵbuu&9ߺL@ +#;< 8thMGlGTȚ]o"/.i8wY8CWԪmISicg;9{߶ucLGO 1_(+֫1[vSh]v݆.,,0Z7"8ɢh# 9rĿU)J7= W){]YkJ`b؎;wl5>t}w$m?\$seDAxWQ':kY赶&@1)ù3w07]b <3u.]3)Mgw| kޮlv\N,X7s6 s:| #~JuyM ֙-[{QVo)HBi5 &_(l9T3F/l6:{BUaSOszxƣS # X>X7i&)ϧ#s>*R^;kG_k-pKۿ''tK J=\ _;v4|Ř^氘.l E35=/MwaoWny]?WFo|u~:FN/8+1q76On ?^n|að y۾,{kLկuG(ZmNc6ӐX*nRS0*2qhqkM=^x!huۦ&SZus-RN=ͅGY~:M/_(Gg=f(pPdiia0VS`qc:ًz {nyڕItmcrsqn<ذX7Ҝ|S0y*kIsXrgtT&8x4z cPWF̊ːm2Hٷ> a‘s<:aS n>w+€f2$So[8~*ϧq-[npU._hB݈ׯoGz'&T h/xi}3Sua]eg zP.z?s_ UUNPl+rȿUFeW%x)dD(Z"bI!K/txq:cQ i BU9zRyL#E60׳bI$Mb:LP' f[ݍٍgF TBiQhw00r` X;K)mf摲橗a+[c (ւrhu{䂆l2`guƤ11{Ym-"[T3sxƢ.x{>tF: p$E.pjms{{k;=ú+-fH1M@Yrp\d:O?C :avZx{UOaₜk˥(Luyx޷Z4|ǃh@w [M-T0yDI,`:b,>zm}:/~]lW;Ыs$]6gȴиtG7\wcs # -~ px>#i3g{d nA^^1 =~xB('N+Һ7?li7xsr^L;Uzg^ԏgowkμkgIHwY9}O]AZ"nC噌ѢF!Nۿ'B^=v+ڂF{}C)VCx9܇dkJ8<6~ر{g09P([N 9~xځ=bSAu ?mpGl,XېgPtTq=_:ls~do|:yα|Os/X.b˿DzЋ M=Yǐ%n4|llXy{)svXu=n B%PnmY\`dnAS 9 x \0=N͸~܃ZHv&Ji6Ǭs6Fw;-qm{*ܡBceYcmMG6>x`T}L-^O-lu$ee-7kK;{oh^ð0 s!"Χ_SXcӲw42x-G089dd!t@lcs!Ou !߳UQ\FQ,C"׮}:b*#s,D1w协XqBVey~ٗ ȇ@ZKf#/\/Y3)dž-֫OB8yu+=ݳӕ" ogm岚>tBi*RHt ~: Y_l| kk vbcm)_LN܄֕ aշO#)v h$Gi[60T "J{曫_VPoSGdz_|P~i(T-T0BeL$]T*?ɬ֘C [|cuRD!6m=RAo.nN[oϴsD8:pݻQ3)æ_Qf\GIvu &'dw.@|^M'۞ˆ5Ɗ^n=4ۗ ?}\:w!&bz6]*bЗEu#sע}Y8l&4f=EG3ۆX/jM *$kz) ey.M?oĖɝp呎NKES$g09*.aSow}U'#@ML>)6>,?-FuއrKw_~  S a٥SUzKp,=>rIF 'IN=_k=#ՔSJMS>[[[;~ՑXDKlZK":MQnf8Az{tg9 ;8 l%W*ΒniXl{]>#͘U5%eV)@xݱh"eSbCf6J_au+ڌڂ{-% y\}\yIRKU"3s;,6fnw1L c ܋tKT>_hSz.-j<.9&XcZ}?ɡa-Y DTL#m`lr=[09J]Ǯv/ͷ_c-ֳNX&Y/u6]<ψf+qmrf|%EAQʻ'Tw'N|ߕ+WHDoXдh4aOe炶p/G: Z4nDy\o,N`md) kgofB.yҞ|^S=E<(m&ۃoTAho.PpLg7D;uر8H[C8LxZ'^O09J[+#;uKJ8y;/͏s0V-bǢ$m}Y-H')ڏxr: ]y#$2՚j9իuu@./NFH7;:bRJj-|(W1Ur>LN ϙC8y $nMc.'ۘg=f~R;~% g< "9sH^S2p ۞bs.<^6syM5ձƝS:Zem)v~ӉXe՘q &_Zg pcw;p7-J{f{NS&<O[rs,ΜC!!~kn`$Y+2fdwx~V+ 0hEi'Id|w;+ZeΉ}+hBV&Xq(Nª TlVo3]C%ݚQ&f(ʄhT2s;SOM阸^TߞaːU=jki8M$y y6s!? B}TlSA0&5ŽZ9-141,(bs5_O8E-are vwX#B9wOgDv/Y}Юm,&)8;Q9CQ֮?hzٲz:^Ez6vb\Uqkkv4:ƳWU|@G|6vX;~%s}?S:咐8Dx0~'g6G7+w@v`qhdr窼},ݗXzmV~%c9\b!l,s1d-*|m߹M/"XBy_x3i,;ڤh0c e{#Ov:L gufpLA\J8mr)Rٙp'0&oYWb-6g=뾶'|A~N mme6<wͰ~a ?zWUXCKRȳ=IP @Pz;=LW1ض T a@ U7TFWPdT\YE/GӐiVzJFukz-8Og]qcEeUV_kpɗdr&PmFrXWaw swj3tJoO9Шa'+D &gD4d~Hr&'pl?9cU*BL$j'0fn.i)<VJrcΨN^Xed̂I8ς!] 9_.v$@Ow};^ltqtsd޴:UR@h6NREaWwfiCwr9cLf/눪یWx˳ N?_hw<@l+n*'[u1=h]΋G$7Մkk=ơ:N8WnV?;Ӽ.Z(^<>ɋK=}WlkqU<*UV| @AیE]ئk\u\[&%]]SmP7j{MA` 8T/sbԣ6D?Wp/7;c\B/Ho _vO edv~Z ^p^2/V1T0*29gtxdMiӆpTʉtgQ>1"P`&%8QFn + K!VR[Hb}I6 C4›` iRSULZ5\L8ݻc ;rWfA/=wd2_R0y _?~nݰ57A2~/jC11I2p4%wvW0<%#*_"oZ<`3ѯ&"XNJ+_k$i>Q'ɝ>Jf?ɓ>.(m^ 2Yƭk[H&'Vѣaau:r\ v\MX߫O)Oc<бD.{etKxS%>2Y񎑆LQ^|n[6§te\n2`ekU*] Ij!s]ئ SwG"|{u!2PĽy͸}Gy"uC#`o"L23*/8,EY,foꩧ:^.Cd2L".-{aj#L{L&o8`8b =wW*6NgҪS~'䄛(*,Eݞ/.D+.`^Uؙ}ڙlmħv ɭ6uŐc[ߕی1ooTQLVyK e]ئkе5~k[E=#~s# {uضX& 2u" afn {z>>^FzwHW:^&@]d2 l@q{^T `unjǯ $V'Wb{R|Pm&wTfti< أk pСSY( ]vSܼ͛Zl]]`uW4x$ !|Em?路t LX&oWK3J|22w: @ Lti-ϙ3b -;]J.ebOdUZ᪾*rVx޳uq~E@zBX|F+k"C,f]^ O<-SG{f}ɭ I?h{ ,YxL=W;~ETEW_;V[&-dA0vE~x긑jd4ǿ]]g7p7?~|thnsskΞVk hBYݒ}^5fqEB/zsY&/ŐzxPcF>*.\`bMOɗ_:"^3vǞvpNYfG0` q"bϧ[O`ιusg^k%,`LpqO&yS>nlgwc.Z(nK1x\}bg0s*W4~/^`l&2m e(,S֙ \\yv'yJE)TܖI[*m)gٌ`Ӯxa-r4(sVE<<"1h?62;7*2]L#^e큧sil5L}9_Ov[}3pJq1rAfNFij. ox)se^B.}aTkS {gϝ?ޅ ,fT7 Fw':.޷V`,146Mc2=72<ޖt`Πr_yld7@@27A֖)텕##yHc0GF7S~UVFٙwݖ gY^G&6kb#⑭#Fvɭɭ/Ku|(R468='l{.=&y?AV{ Z-`avOGlS$~m:^1Uh 7>.⺹#6C߱e˭ȹeҊ&BQ=<e4 0ǥ˗y)V =wES2,5;wDodj}ozB/z6@|k_Z{:҈!9[V77$KZIM%pú˴M>)f+Ӵ)7x#Op3+MGC`BHsFuCiU3.JGN>_pSsA{Knz Rj&$N:.AQsmAfW@8h-1=7 7D?^2ImrLfm5Jud"=iarbb7i|o;6T=MOϽ`Y1ni%[E2Ҋ?sdΫCK2'Ni@vr@k L qla ?ٛ{&3iNH jkn)g@\}س' đoVgeLmwt#aZUvc\MIuBw vt:"*c{cv"iUC0-dܳ##i;3sOȂJԐHi򳤍"lCid4kO=(SVI35e$:#'X԰ءqMU'j*H>6(tN{W|6R.|0H%6k2p1=n- TM(8q lSS' W{u+Ί3%x3{VnTCXw$Wu$X L• \ܱ)r'\5$)ӋuC|?D(\./4Q2J7']r''MEh(DlA_' Jr<'XЂ@ֶY+Vb}E @awz3JC-J ZZ(`!Ms{~9TdJH2F!I4jΒz9䪪%fYl-hg1;ƮshN#Bjf=1LJע4ܭ:u$>IӬcΜ+畏SHZgv<$Wһe@.4H%O67~(h/dWn~PK!| H Wword/styles.xml\rۺL߁±(r9[qrrb{:ӛEAk!8Mb],@$Eqע$ׯ"4i}9"E=N{Go{Ny HL{D_Y} Eꀀ(=[*6gǩk/}oD8Y{\&k/ynx`Ax{ZLB//.cQ8JW&ͥ=S=bľHS:T^1&hI LXXnZ=g%AM{wb !C@{VBs%T,\?k~2 HOё'Qv_[88mPFݨ?sHWiJx2h^ O@0aHaMiSD}\';岆UU w>t),w$]dv>ߐ=jڣI=jڣ=jڣf5soCƪzA 쿗ykJO^=&fȴX>^39<,Y3jYyi +Ih~NB8\Ĺ_;wjm:8nUܭ0KW+3(,[ڬ6~IVXuba q/SGRki Wi/_ژ2~D^(0~r^(c}r [G^lRa,a|ʎ`A;|I#Dιfl[<@aC`6J\ƌ` Xq-MCLqY3󐭁?q־Y&ST84CvtY"3@%8LXl5 Ò̷l5@/ N/c D,"&ǁ  AE?9 B a 0`x^UKx,<0jg6{RTȚ)]g7PkdgYpbokTJ3PyvNult.*qoA6ޑuʢ9l%JEE(̽껓KE^= 8.yq W)^m.Xś\,/'(x;;/Kxk2hK3o;z,;'V3^֗i+~(@0$ mX^. 5ms05EioM||,w{> "s^>'f/alPUqc˫JW Ll) 38g*}yVa0/ Ac b74 Py/p<9Gc9 U~Jim܁цFvi!h LËL Cw!3}$+XE%N\ VzEWB2Y$aX7;h}PދCo!5桢O*Ǒ*dS}&gʆGC ֭"dy6kj.$ms@RߣԂ ~+P5<:\`m̞P]Ed/ho90_iOFj*k)L` qvwЀv)ϖ);ϲ..'m ;HWjV.6vSE;i5QWPsX6k{v^⯻R渗Ty֭5+*ܒ BO؊/hC8#M4 X_Lj-TͶ묐y8%~]'cX(h 8Um4o+\͜n[B) Y.rR>+HB>-x%jfUv'#IiӞBm^8(NAZU>ke-,Ej8(GmjY.Dmek|$^7EEs.z{:T?QÃ~ηp=UӒl G?rm Q:~K7淝,^B?R [ݕCeL {[fiTGӥZ7 ^jFuh)ٙ9a8VeۡM2y#eyG|v:?zy.ƒ|uJ+Gm NԽrYU\KkrY/erYY|}?PK!<3 E[word/stylesWithEffects.xml\R:ߪ}Wv/P9P3gڪrxql<ϾɾضZ,qܝnH,K_*p^DQxz{7='pQ({D_Y} Daz{eg+7}$JE΋Vb{5J$D _ܴ[EV\/CCG/ͬ.J `F9^^A_Ȏ8545&A `՗/k,73#c/@ǂ%+ևVg1ϠἇpsG yo2p^|.då?X17HzD/Zd WOĒ`ЕV$;-hҨ Tr e)\+z]R6PyBgTtq o%JR?B9x,ٮ1G͙Z{g4p\3T|v)q#bUmxe49,}Dry2ru^⥛nnq~KyD9p=HUى1Os±u?-3f2KV$gPlixGIVUba u2>Z_CHP? J )$Uq|es8:a4 dhvAl' ;K\xl(~ʶE 9 }.lTho@!k?eI tȳ_n2@6kp5:׻C6݆p 6]v~"5~  <lMn°$ o ;ʆU;^ِ6P=P֩d( XeC;؜ʙ;@ 3ꆼ @ݐ7&O ݑ7 Sm&- ɛv$({8-kM@aNuțpCb{PxEAQYG7|* lxc|P(~Re2ndș}v&ΟAҵ8Xy 9Fv7p#/FPL:BFW-BX=E%\C Mס,9Ln_YZJuхWBğ_*ok(GuPOgT|hRoMG%̧7ۆ޳(ˢU;: >̅eZ:uɯ ?9{EML@/(ix?LEioM|u=,w{=Cs^ >'Zg O_68PCje(Ղ8!S([TN8Ǻ?%I}*їZDav ac b74$Py/h<@c9 U~Jim܁FFuih LTNu;p`Kty>UCuTXk'b+Tk=被k! ,E\ 3*mMޢ,Z{Q6 a1 }‡[W]߫V! ڧ">Vl5PZ}ܺU2ٮ¨r׫HtS?ErS n( @tlu^in]S(̖P]Ed+ho90_i8iH2I'ِANإ<[<p =9+HB>-x%jfU.+#Ii+7FE~U)_Jf}HR -Uʹ?Kߥ8؞hN{$릶hΥק'#9<:9pb 05-p-kxt _x>ܚvx ᇷ<4[ql;T+aοQ9n6Fu4]ur楦n?[ʑcNf[J0J,9\w~o.'s.]x&SZ:jedW\u˪J沼]Zk\e c.-Րz-{;PK!ءmword/fontTable.xmlTKn0cQFnhE)H $e՗躋]ud+tO8N̛.RoŴJF(`1IՂeͦ'}K䂤JA÷o.A5K34B M 2&0VZ ?D U"#yb|j݆E1샢`Җf)0*ihV(ȴY \>"VFŶUEo"EOK4]hX IW| Ls"oϜ-CHjV$ϼ+%EF2,h цM`DtݠB-ՉTvs6[g'ni殗*%f#/+MQ p\#5EH1BK:&p1CW{" fkVx_ pW.Ts{t-|D$G-Ar@  T<s׻R#}Fxuゞܸܡc乱w9# iaa=9vի޶mAl}HJ)_=^wQheS6~dr㒧-FdpnhMO6;ގfPK!,d2fdocProps/core.xml (_K0C{dc2KہЊ[H`$۷7ke>} _9i:EpcV)A(Tp RtVU«k[+0N =~|~|wf;xYӾ4^ŷm%WWS~>F22*oRl!MRqkh|EGb1}'t%0 _z) +Y`,*kMIx1&{R 0-@nƤR@Xr|#E亁XSumPއ`bՓ'_Q8ɺ R$E Lq(SSPG͉ɭkDU`JqIG0XhcA|̒_$\;][ * k}|167ັKp͎7XL?+RCOuDgL]6;j;dOϡN^'G&x5lhW6ܲg]򑥏s߅`/̎9c PK-!a'M[Content_Types].xmlPK-!`N _rels/.relsPK-!jHword/_rels/document.xml.relsPK-!h}H8 word/document.xmlPK-!' word/header1.xmlPK-!%8Uword/footer1.xmlPK-!ϝword/endnotes.xmlPK-!&!Nword/_rels/header1.xml.relsPK-!CGCword/footnotes.xmlPK-!UQ0zword/theme/theme1.xmlPK- !* WWJ word/media/image1.pngPK-!zxword/settings.xmlPK-!ig~word/_rels/settings.xml.relsPK-!| H Wword/styles.xmlPK-!<3 E[Yword/stylesWithEffects.xmlPK-!ءmuword/fontTable.xmlPK-!,d2fdocProps/core.xmlPK-!9,9word/numbering.xmlPK-!NP word/webSettings.xmlPK-!HZdocProps/app.xmlPKpandoc-3.1.3/test/docx/german_styled_lists.native0000644000000000000000000000060207346545000020350 0ustar0000000000000000[BulletList [[Para [Str "One",Space,Str "level",Space,Str "of",Space,Str "the",Space,Str "list."]] ,[Para [Str "Second",Space,Str "level",Space,Str "of",Space,Str "the",Space,Str "list."] ,BulletList [[Para [Str "Next",Space,Str "level",Space,Str "of",Space,Str "the",Space,Str "list"]]]] ,[Para [Str "Back",Space,Str "to",Space,Str "the",Space,Str "top",Space,Str "level."]]]] pandoc-3.1.3/test/docx/golden/0000755000000000000000000000000007346545000014337 5ustar0000000000000000pandoc-3.1.3/test/docx/golden/block_quotes.docx0000644000000000000000000002351607346545000017717 0ustar0000000000000000PKAAVo%[Content_Types].xmlUn0kNz*$.6Rp@E;@* $3?fle5)&6SH%glup"j5!eDy"$ցJnHG_p'(N&w\Z`0ƚgOyO[YR&+HeTI2 &e/ Q⍒*h)< M||g}w~DJ%$nOhz$&fzO]sIfW$>2_Nxp7PKAAVTRv Uword/document.xmlUKn0@r( !J" ]ɱŚ)+^Oҡd9I. 4|͛ E]S^ij⼯E]hS uUE٢q:dEOZU'Kᬩw;\jW;Hj':ЈyV8;jI>e*[vl+i-@]}z}8yƟEnWqk+h}%k⌻[,u c]r,{U) [5 a3gC`^C'1d0"mcZha=` 7CFؗU\kVXܷ:?E`3R?^LF-sf w~Lvݲ"(X`6H'ad]D(-DInv,?85JG%cqTX)A5%tKnQ)kasx $*>J}V;%Qɮ F&ǹ>;OOuYNUL[< Rdd]楚O|(-Z=PKAAVufword/_rels/document.xml.relsN W!NͲdZӏX3uo/Y:7\6rz`o|o"ˁQM+߬`Y? )~,,1^@G4>rUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PKAAVLKword/numbering.xml _p_ڈf/&n6=-&@ iCR/LۋeJ$0a̪?[uF*Rgc!zVLܩR{U*תʘֶRpb#AK ]OzF|5<9MRͶD,nO2~hU[ns f,863s7w#ENV.9ehLe?`\yF}g`z | !,I|Ȣ1![LOͽ& l&`$ӓ?'= yo[}\lPKAAVDRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPKAAViKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PKAAVnqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPKAAV%&GdocProps/core.xmln0_%= Y!ZqjJj՛e/"mkEgOi*Vry8\_&=FA<׿PKAAVdNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PKAAVy%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPKAAV-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛz$&fzO]sIfW$>2_Nxp7PK!ƔEZword/document.xmlŔQO ǿ cp.{uq;זp`ҮhM4m/3*,rżX^t9Cp"˼H?E6ΕHFIU!Pgj6ΌԖs R+X $H΅42}Z;hY1&F+Be(4@hRIqvhI!OYAxVg*c{;q\aFb{74kM7:&+M>%ɊU#th 車;_<ڳz4A0y HCT~*#+6<Ԓh &KYD1!S=GɎ͖`\TO6b5eζLIhXm3,E_"32*ө\}ޓwPK!ufword/_rels/document.xml.relsN W!NͲdZӏX3uo/Y:7\6rz`o|o"ˁQM+߬`Y? )~,,1^@G4>rUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK!LKword/numbering.xml _p_ڈf/&n6=-&@ iCR/LۋeJ$0a̪?[uF*Rgc!zVLܩR{U*תʘֶRpb#AK ]OzF|5<9MRͶD,nO2~hU[ns f,863s7w#ENV.9ehLe?`\yF}g`z | !,I|Ȣ1![LOͽ& l&`$ӓ?'= yo[}\lPK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛz$&fzO]sIfW$>2_Nxp7PK!" word/document.xmlVn0X~E!XڦzѸPkr-%_JRذ]֨r!pg;35kɔ30Җ kx߯m^Z`z˳ E-(.k-t1Bit n@B@ ԂܾRl{4yJvKw\C44m@Jy70mqlawAzk~yX7.BOkb2{+/} s;_}g0S+tfO$BK,o: 1 0")Q# FlyAX,OxS)5 ^4K~K7L<%x*!0౷I!YrNVl;Hq'E[<}y#Y7Onºt1k[a/HP6b2ߪ^"]鳉 iId~PK!ufword/_rels/document.xml.relsN W!NͲdZӏX3uo/Y:7\6rz`o|o"ˁQM+߬`Y? )~,,1^@G4>rUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK!LKword/numbering.xml _p_ڈf/&n6=-&@ iCR/LۋeJ$0a̪?[uF*Rgc!zVLܩR{U*תʘֶRpb#AK ]OzF|5<9MRͶD,nO2~hU[ns f,863s7w#ENV.9ehLe?`\yF}g`z | !,I|Ȣ1![LOͽ& l&`$ӓ?'= yo[}\lPK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!1vN{word/comments.xmlݔM  #VD*j׽Fq@K/vLڪn[zfٽH`ת*T[RHv3FK ;#CkHVڀ N[I}tж5V7\"-L% 6unqijhbXԇE7]*2[%7V;$ 'yG)bݐgxТ^Yk ^ÛA{{no0 <~?)Hh png:P IgTzpe':/I&Yu23Sl4G**xZQݤSVO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛz$&fzO]sIfW$>2_Nxp7PK!0 word/document.xml͕ak0>a┖Xslfn';vG q e`$l=z^޿Z5@\|xy巙y}ehw9m3]4Iؖ 1k3oiHy qN>-g*EQYx)G] !ĺ4|:f,@19Ѹzkr2^AYp?ug_9ÚE56mLXֆ̖Lo9Y-~]r02ڔx%PvǂnFzurUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK!LKword/numbering.xml _p_ڈf/&n6=-&@ iCR/LۋeJ$0a̪?[uF*Rgc!zVLܩR{U*תʘֶRpb#AK ]OzF|5<9MRͶD,nO2~hU[ns f,863s7w#ENV.9ehLe?`\yF}g`z | !,I|Ȣ1![LOͽ& l&`$ӓ?'= yo[}\lPK!1Sword/styles.xml\r۸߯`q1Ir\qMFJIH˜$xAЎ/@HN*f48}d[o\a7 Ay35߿{tgkR\zl(+MȆ؎<ްte#[fSޞ0qm yC`AҐ׈:rO*LKq44.@h#b!s?D&!#j!"ǁ~^ L}-r- }܊c[ U9`P@`kf>{1d^u&N Fjf_E`Dn#@ǂTׂlä+$QH'(Fg~fHzʽ7YJ֨K:kȊ:a=QݠYٶBԅ-KZ7oh~0)^Gbt"I H- ݢxue]JOlK lbƒ;Yێln`^n:|:/vvBtdt:-#6]PʼfDI1WĤ<[Lj(m["Pǡ{kvmn[o+m[vTh5joaˏKesX1?UYqEOWpeacCZfƸqx_͞/%u_.x5"",\PP:%hc HZkGŠ]1TJoiٯ\)GG7V)LWץafx,K5ldbTxU^t(4m(z֘g'*(7{11*5В=_c^$eYU|v؃vdz-R Xg*ZIP nj/? `[SYOwgPLڤ8أ+ i7OՖ{ulo<~*N XI|r'YbOf JjmBܞ&*jfq8BQ[Q~h+T 0-CiU9/;pլ4O^AOuԌX1,MZkjS,9=Y׉{A7b)¡nP7ASO %c4-9.MƶƶH챴yP2=c//yPbXX"->S++OC0uU%F*XBsKY?-#Uk7p mXVvT[Z8QL6AmB8k[%i4&{Vnad:~mκ~{(ڋugik(5y4i%;q}bHeM!`%D^>?.!3)tloaA~+%G.>x3LP ) YR~nXqdMAQ-qDl"g7l2-D'!泏+mѢ|~1Hi&1B*? 4K,k/]wjag6G}1+s&8:7.T9d~עemO9ԂNyz|1em2܊SŽZ@cmqtF$̨ڠ 5Ophט\nן+L{\ d&j~8cQ[S4h'A+`8xK澏(J;"$^Gni;qfc_ᆅ3 Grro0W!܈ LƀbWLpg\rL?PK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛz$&fzO]sIfW$>2_Nxp7PK!E?word/document.xmlWn0~lRBM*OEhcٱ ^c'm%QB&8csvhIA2NsD?OoO7S|v{ YBBڞK/:R纒D4+RP@g7 R%;nwJ CFU@ cKe&N+: # U+PKL.`UIf|GySF@^*_/C$_+sMQbros@9 8]vggiS_s_ʾd :)PIaIS$O1U~!~!-ͅڑSg{5Pv j?,cnq7Am$5j;LfM:N M4iJى =u νHPB:jPՇLo8v 8ІhSm"8Jdm#EIHU/e'Q0sjə qXZ/5(q>sgPK!C:&Vword/_rels/document.xml.relsR WaҪ4F 2 SM^4iH.ܰd~6^vk"I)%t٪:͚78i#~rm#cN4 KJ[m ^[y$uU8JPx,z>%2v_.(ɹ3:籠ES8Hk*f902ҌܺfM]^I:$]`iĄ 14udR2XyLq1o&랎0HAG+L$}-g-\;Ea]PK!LKword/numbering.xml _p_ڈf/&n6=-&@ iCR/LۋeJ$0a̪?[uF*Rgc!zVLܩR{U*תʘֶRpb#AK ]OzF|5<9MRͶD,nO2~hU[ns f,863s7w#ENV.9ehLe?`\yF}g`z | !,I|Ȣ1![LOͽ& l&`$ӓ?'= yo[}\lPK!Tword/styles.xml\r۸߯`q1Ir\qMFJIH˜$xAЎ/@HN*f48}do\a7 Ay35߿{tgkR\zl(+MȆ؎<ްte#[fSޞ0qm yC`AҐ׈:rO*LKq44.@h#b!s?D&!#j!"ǁ~^ L}-r- }܊c[ U9`P@`kf>{1d^u&N Fjf_E`Dn#@ǂTׂlä+$QH'(Fg~fHzʽ7YJ֨K:kȊ:a=QݠYٶBԅ-KZ7oh~0)^Gbt"I H- ݢxue]JOlK lbƒ;Yێln`^n:|:/vvBtdt:-#6]PʼfDI1WĤ<[Lj(m["Pǡ{kvmn[o+m[vTh5joaˏKesX1?UYqEOWpeacCZfƸqx_͞/%u_.x5"",\PP:%hc HZkGŠ]1TJoiٯ\)GG7V)LWץafx,K5ldbTxU^t(4m(z֘g'*(7{11*5В=_c^$eYU|v؃vdz-R Xg*ZIP nj/? `[SYOwgPLڤ8أ+ i7OՖ{ulo<~*N XI|r'YbOf JjmBܞ&*jfq8BQ[Q~h+T 0-CiU9/;pլ4O^AOuԌX1,MZkjS,9=Y׉{A7b)¡nP7ASO %c4-9.MƶƶH챴yP2=c//y~y`VEd^ wH,@ȖTi)e UՕ!vA:媒kcd w,9%,X5qHW6 +NI-c -(`&6 AD !ҵ4ZssEVw=~w02Rl6Og]=R: 糴5 D{<洒T¸>R$M~r2d|~3a?h [߇Dw  B@[ hw%$ h3hX 탋OwP˼S15p Gfم !OʹxjbJe`ҖxN -;oY$ l.ߟ$䦞9,k/]wjag6G}1+s&8:7.T9d~;עemO9ԂNyz|1em2܊SŽZ@cmqtF$̨ڠ 5Ophט\nן+L{oLqJѣOԣ= Z X2}\nFQY41% =rSMVgE&4)-2ɲVvG%>&!SS9S.Pg$k5c]ߤ"[-%QGow?K&jAz7D&NOUjO's);,Zծ%ag:nX?xT/'ǭ*#\;$ё1w ^_ yKwPK!|֢word/footnotes.xmln0E {[A!X&Ȳjd9p$%_R\%p[n{Apf;1m.8qR|}|a,DvD4Pl}eA`Uآc UtFj!l.89c5luovЭNql<Ƈ3jc& F-Ny[ݸ˯`-uMg5F@.o`||SP$1O/^b$æ.e>y|Z(-"$&m;ŌsSutW_KAu|rfB t:_4?CRHdήUIQsMchYM-8pu6ZZVpR_5!aȵ9%TPK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛz$&fzO]sIfW$>2_Nxp7PKRL/word/document.xmlVj0N7L[lv?@҈$n+v@SBB<ҙ3ȋGD Wl¼6e&L.rѦ9ÑmNU $-هT-Rn 8tϓ,ֲ6bч`Q # W# }vUmȆXIÂ' uڳ Øy/cΒrZ}gk8vu(:#=`F.+ ot#Lx%I$r?C%0uV*Ȅ%p@vɈqE֎QO\G 2)q#'t jʗ[XCW^Ю~19=Kt 51Qb5A7a_";ٛ.AF@6?KBl> WS>$9=;qjE&wʻ'X/Ӌ6wqk'=@dtka* ~I^v ~ 秇Cᄌp-PKRufword/_rels/document.xml.relsN W!NͲdZӏX3uo/Y:7\6rz`o|o"ˁQM+߬`Y? )~,,1^@G4>rUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PKR word/numbering.xmlY]o@+ʇ`jM7&#:|2պ{+F @Mg[ g7ywф!W*bDZxdY"ZCDŐؒq+-(,Jrm۷Tpmj %o"Fb a$r, f騀!(LJF[EW9ĊbbSSuަN ㋘ v`k` ZzК7W ;Ua (l$lނMea, ׹nuWΒDC=їKk buI4zZQCzό치s!9䏄{wOi)TGg8/ӰIDa [ uR"M4 ߞ<!f.v  Pu3o^p2*1=2TܐمcY1g2Tِمz ]hDW V'ؼlfV'ؔdfWvtZrs?sN9m\MD[?6PKRT^word/styles.xml]v8=<%Ql{O$ IlSKnE@^,Ru4߻ Yxwg0zqih0k/|.(ڽCkC$Q}-`=ܒ)޽DqehFA co a@]{مڳڳػhn%ÌOc~询X0is_[`kY{~@. ltEb7 >H?׾{ZJf [}{3`Xa$]tlq0t?* UY ^D YQr'x1ԻFa.GG+z8޵=@e/cHѺNzNbR) Lr} q2!Nej{(KW^DCnuthKR'0ji4.Ʉ8*,]mx-Eus-JNa0h^'] q*KWTFY2&Zt뤫/F[*ҝa.קѼN'Tt=eL<6ZIW ^T.1^] D Q;OTO5='j}:twzݺC4f!H"kF% TbRqf=Zcȸٟq̸ f\ƸӃq;*VG'W!`Un+8=W3bud\`U0}'ZXW:2>ϸ f\3Btc\՝q#`U0*D7XWZ8hN< %.5 W*e+LbJfcz1czUItq`zUxn1b^2LWӫzƁU#vq`z80jd^3LWUӫ*NӫFƁU#q`zU80b^U1LjWӫFƁU=q`zU80b^2LWץW\kH3$q~A/E/;ʏ8Kg驭3Q2\X?$!?{{ ~Dh\t~;6>}r<&gɮKsueO~釛Y>_Wrt4d" jp{!Jx}V~{S-"t~6O!'f~8x1;޷U"&D"kI|UdZ\%l|D2dr"1T$YHҋ@Drr"H O!ONȟAȟ)ӿd$0iaY nePw g YRRS޺e!cYB췽823u:&lJ.UQ #wECUGGF]Hd&V QƉsI&_VV&>hw^we_Y넙 1¶JB*(1'5dR裪G7xNSdoTr#ٱmUO~}śxXQ9vlJcd*`JfuKZ%ǿt}I{}(SuiUAZONqǿhfD]/ѥwULpD)9~խda$.E>WW^_%e)|~#(EF"oҗaU*Ro@)iMOǹfK֐ {uz}{XvakN4Idp)’wRsC{'d] $ru*vy~X49)X;5\ }*_ڟM7%^zDsYaAh.옳j1u,[/[aUu/Pi[˘If)ه/1_$}Cdɸw =q]lO̦VFjlEkCߺ+H$3Vnc=ZHҝdze$H^RDC JY#d4g#G~*xav}i]ؾytC/4~?ԍ<3=0秌uvr ~ wu/~YmA-P["U5L Ar6;;Cn~ؿ vxsܖ>R{+_;B%6}x Vq979 4b@ijjpl9Pݦ(l:J{W<;^]~|>>=]gQ,}OKGyG#l~P!?-q1@~+ «BqlV.-JV\,N[(ǧ͚4UYla *f_cn@tAķPK!g<docProps/app.xmlRMO0 #YZ`6!9J6ZDI]G)F/gY,K4ҖԋtSܝ\I”B[Ð#x֡ CB&,&FwX "̨lRYߊH*%qeG&,`єX0w񿤥Vt8:-"~R(lP-1WQc9!wOBF2&9:lOJzl֤6mҿFUxl£2! a^^n`-%m+`i['LlcBroVccG۰q]~UlN^e>aR5X^{%{~55= os|ѷw#?wĿPKRy%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<Gç}O-ExD s r"VJ`M@wUTB_c6){^))]^psiU-QQKvg&Q L],;) 8$ QHBd)-uK>T6EmL.A)DWh qx|s 9s&e$Tf.xװ\J_rT0EsCK^eP9/"A'qԙ&Q<h+\!zqpߢk& K*MDDַK8ɋq 8314?5-pf"lpwnQK ?-}lyF;<~2ƌ\+KP:BF0ĕpfWQG815#!PKxe'okX.93 s"hE3XVʅV%ՌjrGMZ!c0#e0  Qf5$q,w7rg uTK3tof!-ow )`&-WkquwVժ9K"R!62[Kכ 퇳1Lbe0Вjt"b? Ѐ6*\mv`V.ܬ6f^j4YQ&Z:YA|6++L){f\uz).09P.F 8, AYh_k]oYhN"AȮ+S9 uj=MI Zy9cB}W/.6m^ +4Qz*,sَ5'\x) M}G9 鮦0_vJӬ7 8Xg5{uggypueD+whw@6sF̮fv+!%XGLZ:Kxfm WN'gSN\?80eb-F9oX:.[By˜ٻ˖+Le*#Jg&_ȤPK!瀓word/fontTable.xmln0' !]Ji7p 8y I7%ҪQwQnv ɌHnki6P]ݐ<35Sֈ}X!r zq v`N3S5sc^~^ .ئ\||aB5Zo]9V#O3i$;iɝt ##@X M"d?s4JNP蘱 *MiFtߌ^/I<,-s ȸqôTCff,tK 7XšV ِd$) dv93DE7?o$ &# O#%&n忍ˍLIlgLT^K7H޾7J3*`S,_BZs]GQ_"b1 `PKR Y0word/settings.xmlUMo0 W>/~XeHA_?ʖvbz||I9dhV|DE]EYtyq. XK2KJke^bfkVhT. ZFAeEd,#/WQ+L਍.kA2K)R&t'2d؅$DDo%W2j55jP|'祥Ӊ\HLe&rL)F5)RWko׶p*XW[ igT$I=V=^|"_EӹŘxyL] {m0W2SW ذdHqN"E#v;dNvlK1ؖCl>Z-] He߭㕣|r^e ߌ_Z+nC8Pig,\mk}`YjuZixYKAjHɴf|({>:} WZnT~CrwopEAP@qU4z̎_ɥb hdzTdB mt- ~ԏzχ.cPtҍ:7Q l];JϢ h3Sd:zQL5%XopOXnn(azK_Mޠnjonh GQ;4Yz`Vw_ch pecj\Pi3oPkz$VvЕwPK!:word/webSettings.xmlN0 ;P徦.!n-8B\͑Oz>{ȎBʼPK C^W*dBg<hXmˋzfؾ@J3QWh54UZ 4AfOMg4O+K8λt뢸QG&P; wd!-:nom>G)vS$ r/ '1ǍJb'm8f%$LW"'PKRo%[Content_Types].xmlPKRw _rels/.relsPKRL/word/document.xmlPKRufword/_rels/document.xml.relsPKRٌ#m|Lword/_rels/footnotes.xml.relsPKR word/numbering.xmlPKRT^ word/styles.xmlPKRiKVword/footnotes.xmlPKRnqword/comments.xmlPKRZ"GdocProps/core.xmlPK-!g<docProps/app.xmlPKRy%docProps/custom.xmlPK-!\SZword/theme/theme1.xmlPK-!瀓%word/fontTable.xmlPKR Y0'word/settings.xmlPK-!:+word/webSettings.xmlPK .,pandoc-3.1.3/test/docx/golden/definition_list.docx0000644000000000000000000002322207346545000020402 0ustar0000000000000000PK!o%[Content_Types].xmlUn0kNz*$.6Rp@E;@* $3?fle5)&6SH%glup"j5!eDy"$ցJnHG_p'(N&w\Z`0ƚgOyO[YR&+HeTI2 &e/ Q⍒*h)< M||g}w~DJ%$nOhz$&fzO]sIfW$>2_Nxp7PK!vEword/document.xmlMO0 J3[q=đ '0i2$.I}^I~kB|2ofWznexKی4I,A 7G &HZJE-NWjLP=E$F/G !uRY705t@ʹ ?Ӟ2LIjk شQ!ThiU BP>k<G_lᖺοTڴUwP(4gf|vCw Sg[pP/ OΩnZ#˟UT,nj}xRRT~wX-po$@:RԐWP %\0+3,פi_*ʣ8eL"d'[~PK!ufword/_rels/document.xml.relsN W!NͲdZӏX3uo/Y:7\6rz`o|o"ˁQM+߬`Y? )~,,1^@G4>rUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK!LKword/numbering.xml _p_ڈf/&n6=-&@ iCR/LۋeJ$0a̪?[uF*Rgc!zVLܩR{U*תʘֶRpb#AK ]OzF|5<9MRͶD,nO2~hU[ns f,863s7w#ENV.9ehLe?`\yF}g`z | !,I|Ȣ1![LOͽ& l&`$ӓ?'= yo[}\lPK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛz$&fzO]sIfW$>2_Nxp7PK!{aiXword/document.xmlj0_Er_cw1TGnPXY<րQ׷_ыЛ$3!]G-Wdl',#m!c_⍽.-l4XERν@ [&Y,Z Kr-a#F߃e$lL&> A}h6c tD-h-i!NOL?GI-;}hCYSBpQ:7Mҷ-}uòá|ұK[Qgl2 _Ꝑ1[`<zsƓO )&>s5uC!'rUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK!LKword/numbering.xml _p_ڈf/&n6=-&@ iCR/LۋeJ$0a̪?[uF*Rgc!zVLܩR{U*תʘֶRpb#AK ]OzF|5<9MRͶD,nO2~hU[ns f,863s7w#ENV.9ehLe?`\yF}g`z | !,I|Ȣ1![LOͽ& l&`$ӓ?'= yo[}\lPK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK!ߞcdocProps/core.xmlN0 _%mMBth'&!QRo k(unH>$?qd/X'u=(B̃|΂˄IjeK%I)u]ڋkmGj IQ e!KUgP ($JE]-$ \E{qN`4Q3PB?W/oUCY;䵀eHQb,~tDjEQ[Ui}U pJM[-QpeEc-tR:K \z[84$%r1}l +ӧ|~q#㴋?m-OPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛz$&fzO]sIfW$>2_Nxp7PK!.Ħu word/document.xmlՖj0_(ò8Pz[($X۷_ٱmС ~|F>m(i_wxmจʡ s($݀U\;y'5Em滴81c-: 7  cԘ@ WCWΨ5=2w7rUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK!LKword/numbering.xml _p_ڈf/&n6=-&@ iCR/LۋeJ$0a̪?[uF*Rgc!zVLܩR{U*תʘֶRpb#AK ]OzF|5<9MRͶD,nO2~hU[ns f,863s7w#ENV.9ehLe?`\yF}g`z | !,I|Ȣ1![LOͽ& l&`$ӓ?'= yo[}\lPK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK!SdocProps/core.xmlN )Hm`+'1f7g3ϲ/i;c&\pi};|֬`#Ҧ]e}~]ZJZ:!̄JUAtAn[-s.i(@AG-db鶾KJREI,× rBDgqwA/0 px\?M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!O,7docProps/custom.xmlOo0򄦜FRJvw M8i;+ddf ,eMLBOd`GI9-oZ@9ezmu.H(㙌R)tKR#9Lf𢠘5a]wV*^:[ߦ9uC:*:&CQ+֧4H4p_ލK]'-`&Z vjYR5=#y6rX{6~G0g9$ޛcȡp*CUKF] 8t" ۖ**ζ*Q uK d2"Gnh#l Zb$ZD`:T\W^`R+@2/`_p4MRym @<$&A}K%|S}tOb7)U$:7N+{EUEYI%'ZPK!= word/theme/theme1.xmlYMo6Wl+u:E֦ CDKl(Q $ qaݰ ð@ l_EeSۊ5GKҾ|8"1iܵ أ>u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛz$&fzO]sIfW$>2_Nxp7PK!4' word/document.xmlՖn0 _E FbCb=fӱPJӷ}j:`.b_ eG7! V:it9gJ}.U@{FEUsm.A 7342JxSXL-#*|~*!502cW@yBxҺfb~Fu@3-}D^DޯZo`עRՀV&^e'0׃ˤ/jY4 7-\L RP:6=6@!(bD~e8NͣY"8+;Rf2&|-cTiP@ ŭU.GTyhGkv '6(`ab.~v00>8RՈ5\ep6˫69ljQ(uoԑXq6cĩJF^js7j3+GttR'aOakp;F7nFm Cʼa+sΊԄŰi9lZ æMgS׫7PK!ufword/_rels/document.xml.relsN W!NͲdZӏX3uo/Y:7\6rz`o|o"ˁQM+߬`Y? )~,,1^@G4>rUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK!LKword/numbering.xml _p_ڈf/&n6=-&@ iCR/LۋeJ$0a̪?[uF*Rgc!zVLܩR{U*תʘֶRpb#AK ]OzF|5<9MRͶD,nO2~hU[ns f,863s7w#ENV.9ehLe?`\yF}g`z | !,I|Ȣ1![LOͽ& l&`$ӓ?'= yo[}\lPK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4ϚG#MA*O8./Ra9PK!w _rels/.relsMN1 Fy Bi7RwXg&QB=! ]trsq1h6-(&Zz oIj .U[B0[bT8ԟ.fORDzƋLNAm^Ž] EȈ_Jܳhx٢,7 Ω{`NRYos_)Qӕ>z$&fzO]sIfW$>2_Nxp7PK! word/document.xmlX]s(+ &rIvw4FHb#@r}/HW7uts/pђ+$ˆ+s jiBr+kRB,D7\\$6yc4IES"PE!@\5cA uJ4v@^P#)VnĴL;2x,y,e=ص~冶lo#f9c/I i;mBsmƺkjhihLfdmPm(n ,9}ԨP)\_!$^ַG[g8N0euBO6PP.7ִ^(~_SYe9u "*{ct[q[I6/0hD]LCZ< p*-D[3d͏,TFNc*W>Z3NR9\'dcZ"߁|!.?!OS+j~6'xoʻ{z7ÁB{Vm@8Bz \a6L#O`!WTT\C`G)F29փ)F|@2N_dL^%c_2,dLY2gOG?O6<y}?X(wMƛ;n u7Q"Ԉ|H@yitI,0]I_5m70p W^ZOK#ƼAq :81Y.sz&N3ѴhQ?3}T5dߔ훂S\JX2~","\cFr&Ԇ_~3n#cSKZ.:Zam` \ ݼo%VSD#⧥6H~M ͣ@A#9OfoPK!ٌ#m|word/_rels/footnotes.xml.relsMA! EBw.1n` V Pb<,]~n>4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK!LKword/numbering.xml _p_ڈf/&n6=-&@ iCR/LۋeJ$0a̪?[uF*Rgc!zVLܩR{U*תʘֶRpb#AK ]OzF|5<9MRͶD,nO2~hU[ns f,863s7w#ENV.9ehLe?`\yF}g`z | !,I|Ȣ1![LOͽ& l&`$ӓ?'= yo[}\lPK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK!בk[Content_Types].xmlPK!w _rels/.relsPK! word/document.xmlPK!8word/_rels/document.xml.relsPK!ٌ#m|word/_rels/footnotes.xml.relsPK!LKword/numbering.xmlPK!DR word/styles.xmlPK!iKword/footnotes.xmlPK!nq.word/comments.xmlPK! ) ,G6docProps/core.xmlPK!dNFd~docProps/app.xmlPK!y%docProps/custom.xmlPK!= word/theme/theme1.xmlPK!{H: word/fontTable.xmlPK!-/B޶ word/settings.xmlPK!TΜ#word/webSettings.xmlPK!i\??$word/media/rId20.jpgPKN!dpandoc-3.1.3/test/docx/golden/inline_code.docx0000644000000000000000000002312507346545000017471 0ustar0000000000000000PK!o%[Content_Types].xmlUn0kNz*$.6Rp@E;@* $3?fle5)&6SH%glup"j5!eDy"$ցJnHG_p'(N&w\Z`0ƚgOyO[YR&+HeTI2 &e/ Q⍒*h)< M||g}w~DJ%$nOhz$&fzO]sIfW$>2_Nxp7PK!X_word/document.xml]k0JȽ֋czj'anPy,Gݑ+k*4/(#l̾.E,+L )2VTJƼ[&Z{-6Nw(^Ќ`l* rTf+z@SfL+6̄噒ͤSSq{hڤT 7xTဗ{q=IE4X7{8u@bk>l8=rǸw\@E[rUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK!LKword/numbering.xml _p_ڈf/&n6=-&@ iCR/LۋeJ$0a̪?[uF*Rgc!zVLܩR{U*תʘֶRpb#AK ]OzF|5<9MRͶD,nO2~hU[ns f,863s7w#ENV.9ehLe?`\yF}g`z | !,I|Ȣ1![LOͽ& l&`$ӓ?'= yo[}\lPK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛword/_rels/document.xml.relsPK!ٌ#m||word/_rels/footnotes.xml.relsPK!LK$word/numbering.xmlPK!DRword/styles.xmlPK!iKword/footnotes.xmlPK!nqword/comments.xmlPK! ) ,GdocProps/core.xmlPK!dNFddocProps/app.xmlPK!y%docProps/custom.xmlPK!= iword/theme/theme1.xmlPK!{H: word/fontTable.xmlPK!-/B޶word/settings.xmlPK!TΜe!word/webSettings.xmlPK 3"pandoc-3.1.3/test/docx/golden/inline_formatting.docx0000644000000000000000000002341107346545000020727 0ustar0000000000000000PK!o%[Content_Types].xmlUn0kNz*$.6Rp@E;@* $3?fle5)&6SH%glup"j5!eDy"$ցJnHG_p'(N&w\Z`0ƚgOyO[YR&+HeTI2 &e/ Q⍒*h)< M||g}w~DJ%$nOhz$&fzO]sIfW$>2_Nxp7PK!8n word/document.xmlVn0ϛjBn>G3il5l!EѾ`.g̜9F^߿*I@'rE hn ˌ?/~ͺM kړ.m3Zyo$qXb>[إ\M9ƾ>ZpDǓN~vPK!ufword/_rels/document.xml.relsN W!NͲdZӏX3uo/Y:7\6rz`o|o"ˁQM+߬`Y? )~,,1^@G4>rUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK!LKword/numbering.xml _p_ڈf/&n6=-&@ iCR/LۋeJ$0a̪?[uF*Rgc!zVLܩR{U*תʘֶRpb#AK ]OzF|5<9MRͶD,nO2~hU[ns f,863s7w#ENV.9ehLe?`\yF}g`z | !,I|Ȣ1![LOͽ& l&`$ӓ?'= yo[}\lPK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4ϚG#MA*O8./Ra9PK!w _rels/.relsMN1 Fy Bi7RwXg&QB=! ]trsq1h6-(&Zz oIj .U[B0[bT8ԟ.fORDzƋLNAm^Ž] EȈ_Jܳhx٢,7 Ω{`NRYos_)Qӕ>z$&fzO]sIfW$>2_Nxp7PK!Դ" word/document.xmlWmo0+?- Ɛsm۲ݦ/[;F7$|tQJ2Vu:joG't8\Y W.2Zxo$q6pom<.4͍CR&nmR2hS>FO&y@  bA2v0EY6PGV;=G\iLmy)[}v(ZrܲjOy `*sӟכ4ieMF6N7~)TɌ^ Y6+'ArCda Qc‘&cO.>hT()D>4_d?bNj] GGjdI^_+ 8M-"LDj}w@nz"gzA %4"_(QQx"KcM0ϙgdf32Vjg edrL,lj5"(`j U,w(Yt{8 E*Lo^ 3!E[:e|dFOI6:ԚФUrstS, X,N4;+䰕Ufx9dW/G*<xu_4Ab[O|<)~v93@D_!o-_8}I^K<[.rN 4YO3PK!S{f#<word/_rels/document.xml.relsR0W.Uk)EX0Vڷ7JK͗%Q5 Fgt.L)Gr  WDֈ#cAqO*cGhky[QJz v.?9Ք|DbWPK!Z/ڸ/word/_rels/footnotes.xml.rels 0 W)NAE^d>@鲮mJ[( <#Rk;W.`±[,"(L 4H,$W|.' N`PK!LKword/numbering.xml _p_ڈf/&n6=-&@ iCR/LۋeJ$0a̪?[uF*Rgc!zVLܩR{U*תʘֶRpb#AK ]OzF|5<9MRͶD,nO2~hU[ns f,863s7w#ENV.9ehLe?`\yF}g`z | !,I|Ȣ1![LOͽ& l&`$ӓ?'= yo[}\lPK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK!בk[Content_Types].xmlPK!w _rels/.relsPK!Դ" word/document.xmlPK!S{f#<word/_rels/document.xml.relsPK!Z/ڸ/word/_rels/footnotes.xml.relsPK!LKword/numbering.xmlPK!DR word/styles.xmlPK!iKword/footnotes.xmlPK!nq,word/comments.xmlPK! ) ,G4docProps/core.xmlPK!dNFd|docProps/app.xmlPK!y%docProps/custom.xmlPK!= word/theme/theme1.xmlPK!{H: word/fontTable.xmlPK!-/B޶ word/settings.xmlPK!TΜ#word/webSettings.xmlPK!i\??$word/media/rId20.jpgPKNdpandoc-3.1.3/test/docx/golden/link_in_notes.docx0000644000000000000000000002346307346545000020061 0ustar0000000000000000PK!o%[Content_Types].xmlUn0kNz*$.6Rp@E;@* $3?fle5)&6SH%glup"j5!eDy"$ցJnHG_p'(N&w\Z`0ƚgOyO[YR&+HeTI2 &e/ Q⍒*h)< M||g}w~DJ%$nOhz$&fzO]sIfW$>2_Nxp7PK!;Lword/document.xmln0 _R8LSE8=@4RGi/-)IR+/6_:`Еb1ENceܱUl֫P,8b E_R݀Ua\HVqL4,ʼn\P3k4agmq$3)m~?6)#U_~U|kyqۋS y~4w>ER +RGR>\5t),WJ Pb}hLRCAģ&2A +St*2.yOq鋼7PK!'Xword/_rels/document.xml.relsAo BOۺfe[.J0umXbvh^yy z{cV)MP.Sݭv6 Q6 b̘-FJ}hy lKfdӨJ𢋽7S+SjveBIM )\/%,;0$DL/ ,_ƃgВJ+xx) @7 ^p8 |oVZFKи& [:{)=K/.`PK!N /word/_rels/footnotes.xml.rels 0 W)Ddv"Jme:"(Y8a K~PK!LKword/numbering.xml _p_ڈf/&n6=-&@ iCR/LۋeJ$0a̪?[uF*Rgc!zVLܩR{U*תʘֶRpb#AK ]OzF|5<9MRͶD,nO2~hU[ns f,863s7w#ENV.9ehLe?`\yF}g`z | !,I|Ȣ1![LOͽ& l&`$ӓ?'= yo[}\lPK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!word/footnotes.xmln 'jevoU}5a@0:UJsP@Nd25TuޠWqT{[qdZ`BC‡#  <=]Yr-a/`) (_ _ t-`>4zeBÚTJ:FfJ?ǨE7m qhC\YKbbV+tloW0N~K*XD9x+Hx$ªY<6.7{!G1!_ݳBj~E}PK!]*syN+g ch$o>e J}v7hFOxꋔEMMYhH WPK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛz$&fzO]sIfW$>2_Nxp7PK!C word/document.xmlVo0W,)j6uyrX?t6s;T2`[!1ﻻrgY Zt2SBeN?' #^٬i$#m@Fɜ˴XpJT2hBp DWFbmKalD9]T"Gm%\ˬC K<:U' d/@jsơw&m In+p:RgtJ/$䔩D(XTB %2mx rXS0[[˙5{:`7@gĤ _$,"b;ƽ@ )riؘb[n `otL{ g`Rzsu0bYW I OV8)g_)] pe0KoG:<&i8g`= A7FxB8;ޅ"1_ ޛ1>$v4SKP,KubvޯCqt [C% ZC^ϫt> PK!O\+B word/_rels/document.xml.rels]O0࿲k a0?tgaYڃ¿4ƛzۧMt;hSJXF,%1TvĦ jASV eVOYB#L-(ASr# (r`Ao/畄m~(j۬A[> Y"Y ]% CMah_G8&"L' No_ы}KrTu 9зX':!8Ʊ@RHߊS[!b̷M)N3=tY|Go` <4ϳ<,o^ak*_l oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛword/fontTable.xmlPK!-/B޶ word/settings.xmlPK!TΜ"word/webSettings.xmlPK #pandoc-3.1.3/test/docx/golden/lists.docx0000644000000000000000000002404007346545000016354 0ustar0000000000000000PK!o%[Content_Types].xmlUn0kNz*$.6Rp@E;@* $3?fle5)&6SH%glup"j5!eDy"$ցJnHG_p'(N&w\Z`0ƚgOyO[YR&+HeTI2 &e/ Q⍒*h)< M||g}w~DJ%$nOhz$&fzO]sIfW$>2_Nxp7PK!6>} word/document.xml͖ώ0_@vU%{شjo+>.XcݷmJQC7r Mη30%Je9S?Lbj0x>6cW֠۠*$-|c#IKXsN7q$F_bUJZkBje9odUUIQ:\aQtRtYmriB\2I?V+ʷޮ$ uE z) Lɜ 9w!2<ȨQ·/4m H:3l10~ /cfΊ2X[! 1ɠ&Ӕt͒9M2.B{\=qF]øz][Q܏ U t]dG$$l} RV. ixBHt*feB~#51q6]>[fſ>v?PK!ufword/_rels/document.xml.relsN W!NͲdZӏX3uo/Y:7\6rz`o|o"ˁQM+߬`Y? )~,,1^@G4>rUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK!C word/numbering.xml]n0ǯ1$*Rjw &Ht{=ڞd|T4c'xfȞ _+R;TVZZwntCx.ߚ3Yהypq0k#%O()/J{hv.# /h獪lp`u!dvd6 d 9!O:O6@'@N@?^xI7uҬsoV)!q"\/x+`%=P&vJ:LBUCx Veb@7>XI>)Oo5Vi_h%HIѮv!W;5z:N=D-kSQکkҶFeSֵ/~ի^AYz.nniino)t{^uyݱeY<|YUM\ajW|!҄4]o֎tĽw&M4nxݤI7ۻ>{w{{s4nW%x]_pPK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛ} word/document.xmlPK!ufword/_rels/document.xml.relsPK!ٌ#m|word/_rels/footnotes.xml.relsPK!C word/numbering.xmlPK!DRj word/styles.xmlPK!iKSword/footnotes.xmlPK!nqword/comments.xmlPK! ) ,GdocProps/core.xmlPK!dNFddocProps/app.xmlPK!y%{docProps/custom.xmlPK!= 4word/theme/theme1.xmlPK!{H: word/fontTable.xmlPK!-/B޶K word/settings.xmlPK!TΜ0#word/webSettings.xmlPK #pandoc-3.1.3/test/docx/golden/lists_continuing.docx0000644000000000000000000002352407346545000020617 0ustar0000000000000000PK!o%[Content_Types].xmlUn0kNz*$.6Rp@E;@* $3?fle5)&6SH%glup"j5!eDy"$ցJnHG_p'(N&w\Z`0ƚgOyO[YR&+HeTI2 &e/ Q⍒*h)< M||g}w~DJ%$nOhz$&fzO]sIfW$>2_Nxp7PK!b\*word/document.xml͔j0 _%uҋ1B(=8~9cCJ,$GE$d$p(9%wmK']qy(H)u5Xa:_^L`ipiE7izC5L=U%OD#BP(滾]-4(H&P+-9ʯ8|L&*V1.d vhQtV" _|SG'Ko7TJB2UnrUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK!a$Mword/numbering.xmlřn0_Y Qi՛JV{}ndd~}SQT"3G_c? nLeq"}D&2 (;zˢyomhxɫQ"o,?7oi8_ö[۞QG,k#ת} wRqLF(YӓYā7 <vLrz2jN3=d.xӓ9'_]߸)!]{]ּ߳l oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛz$&fzO]sIfW$>2_Nxp7PK!<word/document.xmlN0 _e}KB:$4&  K5ZGNڲ'!ƀK&N7/Fj fl:I\mƞf1oeeQ>m2VRν,?A6HFJ[ Pg4%7BYc9, %a   t)@r~a*i% =a,ѤJoTDmL3mӆqNe9:%/ ĨPѱ]闇C}k]52k=jZIc>lNdc?b;!!ch +E2B_ : 136)"^H (|/)0rUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK! word/numbering.xml͗j0_~&b1vQ IZuw`,VȐJsNQ$HRC"/ؒJ~6f*Y(1_*,O#"d R<[<h&.XUː-Xˬ2y%%ό JkFKjx_fL˂R" =լ"%={OkZV| 1 ۮp`qtl y=YE:dɜݓ  6uxwd;\wߏ滖m^7C囡Pkf(|3Z#y!tr}æ0k_ _?&PK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛz$&fzO]sIfW$>2_Nxp7PK!λrYword/document.xml͔n _%ޒt4EM{X5iJ F$ۏ|}Hݪ\ Nm oZ%@'$[$C)ͱ /{ݬha|]AjmN- *@|#Ks]L2a5*nJ B|!8B1v.Ҡ |B-*2ju]^7-zk*+uJ>|:;q婷vCV%]2UpT,Ma~D<B﷠مoA3 õ]+ bQ8 WAwiKR nҸ'Dxl7PK!ufword/_rels/document.xml.relsN W!NͲdZӏX3uo/Y:7\6rz`o|o"ˁQM+߬`Y? )~,,1^@G4>rUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK!a'" word/numbering.xmln0_!U=lVTC 1qoO@C>*ub<31/Ɨ׏96TY#ۢ<)Ҍ/"Kh__]n|ϩV6Rɒq9*VWkcY"]"eYE <θ]q"s.ix&f}S-T5=P6{Z֡ںscVe#wm.ۀ1*3_Ikdu_#5_meMI̋vި Ä@\d.!dda!#<߁͓t|dct ͓D ]ݽ6kRbm*4u.XK=Nh~hZMF8k6q!'m ؜n^nfŊ-TJ*~w@M+6-c mXlӂMv6-m !۰)`ODSNO?ê[~,U6 Tp 4m!n@uhFM;nws]}CRsv$$44n?i~Ґ~ҌI&'M4^=ޏwwn4nPK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛz$&fzO]sIfW$>2_Nxp7PK!SZ%word/document.xml͔j0 _%uҋ1BB)=8mI=rr`ۍX?IUT tLFeL"a8~$ =A~vTzxVQLeD::yL8MEo~'4uq HǏ?(cc_v Y\|7!xXn׫y]]~ZܟpDJy7PK!ufword/_rels/document.xml.relsN W!NͲdZӏX3uo/Y:7\6rz`o|o"ˁQM+߬`Y? )~,,1^@G4>rUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK!} EMword/numbering.xmlřn0_YMVݽ>7A 2?SQT"3G_c?sfTTI*D&28<%R}QdkhOy/Ҍ JQ!q&ӈ湚 [b&՚6/dJn\=Z̦IIV..OZQѶzlcSkQϼh%c87oi8_[۞G"j R|>fqLFBfMOfBf߀!ddkBȖӓ96ӓ-M n@N?=|wC۽.kywnծw)QCֽM?6mb@X'?b\&vZyMrH؇6 @r )ڗh&}h wELbfk鏯澒!X8,ǑqǑƑ|^߽^2{wL{wL{wL{[u/g?PK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛz$&fzO]sIfW$>2_Nxp7PK!;Ĕkword/document.xmlXn0~@~QJ[WbҪvk Vl'4/g6M4m#͐Ҕ$kFwws|M I8I!6o.{q~v!G3<~61bR4%1򄧘齈 S3"LGXJ G&+ "ʀ D8D*I*+4>1f+%Hp#CKիIiRˬE* gٖL0biD xX-ZA@pbؚ} #_z `i\u RsL̵ʃPe FOX̱q~U%X´k$B+(T4/R,niP5]^U0 4f@*թ->]g6Lڈ'RJߩ])>f5Iq}(^qƑ> qs=#u#ײ L I$M7BQ1-HR.AB f{^&vG Q0rG8qx5rUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK!LKword/numbering.xml _p_ڈf/&n6=-&@ iCR/LۋeJ$0a̪?[uF*Rgc!zVLܩR{U*תʘֶRpb#AK ]OzF|5<9MRͶD,nO2~hU[ns f,863s7w#ENV.9ehLe?`\yF}g`z | !,I|Ȣ1![LOͽ& l&`$ӓ?'= yo[}\lPK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛword/fontTable.xmlPK!-/B޶ word/settings.xmlPK!TΜ"word/webSettings.xmlPK #pandoc-3.1.3/test/docx/golden/notes.docx0000644000000000000000000002337607346545000016361 0ustar0000000000000000PK!o%[Content_Types].xmlUn0kNz*$.6Rp@E;@* $3?fle5)&6SH%glup"j5!eDy"$ցJnHG_p'(N&w\Z`0ƚgOyO[YR&+HeTI2 &e/ Q⍒*h)< M||g}w~DJ%$nOhz$&fzO]sIfW$>2_Nxp7PK!fword/document.xmlN0 _nUt F4qx-=!!cĭikX3UXj)\\.D5`9 z5ԫst`^d$WڤRxpIYv0 VVp=!\G !h$}4,Ėl>fF+B|L!:C4Q-#EV$!?d|ϻq &=T@˄rRW_Qf;o%s ?5D88746ÈxP2ZZPK!ufword/_rels/document.xml.relsN W!NͲdZӏX3uo/Y:7\6rz`o|o"ˁQM+߬`Y? )~,,1^@G4>rUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK!LKword/numbering.xml _p_ڈf/&n6=-&@ iCR/LۋeJ$0a̪?[uF*Rgc!zVLܩR{U*תʘֶRpb#AK ]OzF|5<9MRͶD,nO2~hU[ns f,863s7w#ENV.9ehLe?`\yF}g`z | !,I|Ȣ1![LOͽ& l&`$ӓ?'= yo[}\lPK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!p%word/footnotes.xmlݔn } }oUeK[>0fXnm1A0Ռl4چg`vھ4q߷"A``C=7| rA `dآc=z#).wΣ"ό⮪ #c`﵂TG 0JAаGo<igJy-oɌnU+ةiCrC{V7x \AZO]ëqii*f݋,Y+~g1|̲}H8wuO4$dž?^v cgUǿ!ěbKQeetupR68jWiXoYV5gst`6^].^Ғa]‹EhPK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛz$&fzO]sIfW$>2_Nxp7PK!word/document.xmln0} wV`)@6E45 bHKqC-)$m."o87Of-P0ؔ" i0[j5꽃&f| EW]28.Cg$"oi+;jqZ:e1b1l$& !*ag|hX=5ň9 nL+8M#EtGS&:ƳTNxgX^`Lp(R!>ÊGrUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK!LKword/numbering.xml _p_ڈf/&n6=-&@ iCR/LۋeJ$0a̪?[uF*Rgc!zVLܩR{U*תʘֶRpb#AK ]OzF|5<9MRͶD,nO2~hU[ns f,863s7w#ENV.9ehLe?`\yF}g`z | !,I|Ȣ1![LOͽ& l&`$ӓ?'= yo[}\lPK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛz$&fzO]sIfW$>2_Nxp7PK!Jword/document.xmlTn1 BgPin $Zm!zv/^ Wse%[3;艳S :usyE/φD]=r?vԮ6M;1QMdE~"QS]ixAM0=0q. ewᏂ09,;lGةʡNsܔ}{@cDZDpx(10/țDʏ8Hh5?+/ mSsY!1IYxuٻ 5u*1e'NkB,cXߤ/:B${.cDg3 V4sAC\R-(y:Zzf2ekUSR#^"L锼 ԯUytQ ̕vBǴTfu[ _ }-~+C]xt+]8*zv<*&2KQ7YIfڱƎcd6 JI ++Y(sU=Ј%\V@{e\[_`v]T&]V<5?C|PK!ufword/_rels/document.xml.relsN W!NͲdZӏX3uo/Y:7\6rz`o|o"ˁQM+߬`Y? )~,,1^@G4>rUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK!LKword/numbering.xml _p_ڈf/&n6=-&@ iCR/LۋeJ$0a̪?[uF*Rgc!zVLܩR{U*תʘֶRpb#AK ]OzF|5<9MRͶD,nO2~hU[ns f,863s7w#ENV.9ehLe?`\yF}g`z | !,I|Ȣ1![LOͽ& l&`$ӓ?'= yo[}\lPK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛz$&fzO]sIfW$>2_Nxp7PK!(mword/document.xmlTo W"ShVUZ{jgqB:.;5uJҽpwFc4Kv~&L{x4n7mQ8i},ڒByTkd<}ՀNRrq[* (cs_q͝4 4k `$HRqmB٠d@5wF!Die0#qvkF< exQ'0$mp^N}N"-vv08||ճh-ٓ\ڤm% Xr B+J`oҢ+w`7'?J_^/Lw}Qc0D|\%//G&*_0 %z}f1a_QYz=x+=}]wO jEYpPK!ufword/_rels/document.xml.relsN W!NͲdZӏX3uo/Y:7\6rz`o|o"ˁQM+߬`Y? )~,,1^@G4>rUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK!LKword/numbering.xml _p_ڈf/&n6=-&@ iCR/LۋeJ$0a̪?[uF*Rgc!zVLܩR{U*תʘֶRpb#AK ]OzF|5<9MRͶD,nO2~hU[ns f,863s7w#ENV.9ehLe?`\yF}g`z | !,I|Ȣ1![LOͽ& l&`$ӓ?'= yo[}\lPK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛz$&fzO]sIfW$>2_Nxp7PK!Y): word/document.xmlV]o0+WEL-X'B xv5#I)҇ľ\%W׏FO ^9ٔʮs+rj‰Ho}dXez ҁLXAQ@g43vI W 4WJA@"M"cI@jnQOl.'5l0J LY%!!S^;cpw R imJ= ϸrf 9y+4!-q[ɜTI0d2>8#K?ui#)t6vt=uw7<]$G{~M@vpNexO`$FJI">!SyLVXXd>`^IKC 7K 8qik7J7zAh/s,iQ_U7gZD+xٷ O*XY>84}?hPK!ufword/_rels/document.xml.relsN W!NͲdZӏX3uo/Y:7\6rz`o|o"ˁQM+߬`Y? )~,,1^@G4>rUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK!e/Bword/numbering.xml͘]n0,Jy, t޺KJАt&>GgVCe"Bdf#$O3Я]]^얢k*UR \"bql)Y^PsJ 2-dвTaǶ}LV3^M62Kj}kn˼fU6~UY[oc SkzDhWk^ 1Z7a:'}~{SL|m=Bvm,6wN-x̙!>5@2oz2׷!d<t6 '|fv2Ĝ<>Vwy|!͐ǃfAs3rz y=hnӹG-k:~YսRdJt( ON~|723;7|`e/>PK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛz$&fzO]sIfW$>2_Nxp7PK!Hword/document.xmlXR0k3 xL iZ(<+ųY_Ci@}l]Ξ]::#30\ =T&=?N(q&+=ojmLRSplAR0 r I :f A7 Ij=;m@`[`ZLyj42PQ K6zlX˨Bf|ӊͼ>Z>dzh<W Zt WV zF:YTI KV;4nō#*S,ȐON`t lJ*r 4SNEƜۥn%@dCpe0!=F%4-g )^TO,h-kmJJ%%oۿ} U*Jj$hߡS!~ܝ؁re&,O) tow٦ r ~λm?o0ˎ ,{Aj'taa`y}PK!ufword/_rels/document.xml.relsN W!NͲdZӏX3uo/Y:7\6rz`o|o"ˁQM+߬`Y? )~,,1^@G4>rUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK!LKword/numbering.xml _p_ڈf/&n6=-&@ iCR/LۋeJ$0a̪?[uF*Rgc!zVLܩR{U*תʘֶRpb#AK ]OzF|5<9MRͶD,nO2~hU[ns f,863s7w#ENV.9ehLe?`\yF}g`z | !,I|Ȣ1![LOͽ& l&`$ӓ?'= yo[}\lPK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛz$&fzO]sIfW$>2_Nxp7PK!gv,word/document.xmlXR0kS<-YIȒg%w} B=Ųu9{v}^w"ɜZ^;9>ʣX,LiMyB͞N±Z|IkSЌp a$T(IcYM.ETA=/P~"hg:*iV7'w'`AkVЧxT-p͠u/OX}gՠWiEYBavc)XG"y]T_)G}KGSљ?4=Xiy fNeT-'Rj92)eh.n8̹w? AˤL(,\*q$27+ln 3c]uf qW} p9c^k$p}-D=JSt}{T nck:Mf=D\NE;A`ŖCKbXI^c*U`c |GEƄ]#4pЩ(X ]]hE!IVܨq;R:E d N"}Xr]]/"@3TQn9]jQVB7dwXf i[2h^Ns.R6[LTgA[mY[7U$U$/-?-zERVZ+EnN Y|L_fҊM|?~m?#[lj^[l^vd3Vs8kK gr>hAPK!ufword/_rels/document.xml.relsN W!NͲdZӏX3uo/Y:7\6rz`o|o"ˁQM+߬`Y? )~,,1^@G4>rUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK!LKword/numbering.xml _p_ڈf/&n6=-&@ iCR/LۋeJ$0a̪?[uF*Rgc!zVLܩR{U*תʘֶRpb#AK ]OzF|5<9MRͶD,nO2~hU[ns f,863s7w#ENV.9ehLe?`\yF}g`z | !,I|Ȣ1![LOͽ& l&`$ӓ?'= yo[}\lPK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛword/footnotes.xmlPK!nqword/comments.xmlPK! ) ,GdocProps/core.xmlPK!dNFddocProps/app.xmlPK!y%fdocProps/custom.xmlPK!= word/theme/theme1.xmlPK!{H: kword/fontTable.xmlPK!-/B޶6 word/settings.xmlPK!TΜ#word/webSettings.xmlPK #pandoc-3.1.3/test/docx/golden/tables_separated_with_rawblock.docx0000644000000000000000000002325307346545000023444 0ustar0000000000000000PK!o%[Content_Types].xmlUn0kNz*$.6Rp@E;@* $3?fle5)&6SH%glup"j5!eDy"$ցJnHG_p'(N&w\Z`0ƚgOyO[YR&+HeTI2 &e/ Q⍒*h)< M||g}w~DJ%$nOhz$&fzO]sIfW$>2_Nxp7PK!,NTword/document.xmlUn0[ U5[VC^5k_'pMqJe5z-`(jq.gp,_]JaPK[3{6`Ԫ/;a* &jSkE/`=>BޘZw_#\={_QVo2 1ʗC]]L8_`)ɴcBqIEnz!F5 \Ne1a0OlVSb=OPK!ufword/_rels/document.xml.relsN W!NͲdZӏX3uo/Y:7\6rz`o|o"ˁQM+߬`Y? )~,,1^@G4>rUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK!LKword/numbering.xml _p_ڈf/&n6=-&@ iCR/LۋeJ$0a̪?[uF*Rgc!zVLܩR{U*תʘֶRpb#AK ]OzF|5<9MRͶD,nO2~hU[ns f,863s7w#ENV.9ehLe?`\yF}g`z | !,I|Ȣ1![LOͽ& l&`$ӓ?'= yo[}\lPK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛz$&fzO]sIfW$>2_Nxp7PK!/0F word/document.xmlM  @jeHM/{0̇bNU"Yaއbz օcޫFsP()!i뼊 B9k"zMbhF9Fg |{0iفBG!wn] -Aͨ;1dž*RiQ_)z-vZ(=Y?қyPTt[xCzoC>6h/㜦a.AL{:*VLaB6P{C2+fgbQKaZ=Ζ^eO@DT~svXKQR~sy|yL;0w; WcK>iĜ 8'Zi~PK!ufword/_rels/document.xml.relsN W!NͲdZӏX3uo/Y:7\6rz`o|o"ˁQM+߬`Y? )~,,1^@G4>rUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK!LKword/numbering.xml _p_ڈf/&n6=-&@ iCR/LۋeJ$0a̪?[uF*Rgc!zVLܩR{U*תʘֶRpb#AK ]OzF|5<9MRͶD,nO2~hU[ns f,863s7w#ENV.9ehLe?`\yF}g`z | !,I|Ȣ1![LOͽ& l&`$ӓ?'= yo[}\lPK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛz$&fzO]sIfW$>2_Nxp7PK!Sxz#word/document.xmlMk0ݑ8^zʓX`}0Xɿ]Z60m̧6Ogױ0k\HXzOMVM0'XI嚷DQ L NE!T>(r&b0RN|N['ky `P;C^BZL 5?Wr`H@ N])6+f7 }Kf Fk #`|n'4aqMXVjb1N>b2NJQyDH=G33l4T/֧mʭE e" Mu%կRTRQ R'b~g[p/z2_#^;PK!ufword/_rels/document.xml.relsN W!NͲdZӏX3uo/Y:7\6rz`o|o"ˁQM+߬`Y? )~,,1^@G4>rUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK!LKword/numbering.xml _p_ڈf/&n6=-&@ iCR/LۋeJ$0a̪?[uF*Rgc!zVLܩR{U*תʘֶRpb#AK ]OzF|5<9MRͶD,nO2~hU[ns f,863s7w#ENV.9ehLe?`\yF}g`z | !,I|Ȣ1![LOͽ& l&`$ӓ?'= yo[}\lPK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛz$&fzO]sIfW$>2_Nxp7PK!8word/document.xmlMk0ݱPLRJ)f/{SI,|_Ca"m  @ \=i _9#5#!A_Rtl7P%gQmdQU(S.M>Uc"x~#}j!-ԟXH{\YI'-I{6 PK!ufword/_rels/document.xml.relsN W!NͲdZӏX3uo/Y:7\6rz`o|o"ˁQM+߬`Y? )~,,1^@G4>rUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK!LKword/numbering.xml _p_ڈf/&n6=-&@ iCR/LۋeJ$0a̪?[uF*Rgc!zVLܩR{U*תʘֶRpb#AK ]OzF|5<9MRͶD,nO2~hU[ns f,863s7w#ENV.9ehLe?`\yF}g`z | !,I|Ȣ1![LOͽ& l&`$ӓ?'= yo[}\lPK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛz$&fzO]sIfW$>2_Nxp7PK!֍word/document.xmlێ0_>q+U YU]2n` 4`5ƤJԤ47|>}vb +J=T {mR9TD Pȗـa<ظW;4+PytB8Ogn,ck-%0C!x/auhˌZ-WJ:SNlfGoY79A[hǣ55=wIחJ@3cKPK!ufword/_rels/document.xml.relsN W!NͲdZӏX3uo/Y:7\6rz`o|o"ˁQM+߬`Y? )~,,1^@G4>rUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK!LKword/numbering.xml _p_ڈf/&n6=-&@ iCR/LۋeJ$0a̪?[uF*Rgc!zVLܩR{U*תʘֶRpb#AK ]OzF|5<9MRͶD,nO2~hU[ns f,863s7w#ENV.9ehLe?`\yF}g`z | !,I|Ȣ1![LOͽ& l&`$ӓ?'= yo[}\lPK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!M%Htword/comments.xmloK0ƿJ-HY;kщCz].v~{Ӵ *co=d;.du20K~x^=] iC> cZ"Wpe Zu`BOtok [0m%aoe?AP x-|V9hd=bAhmh6P̔%%b]7iiI!.qVXS BPQg{s}{HXdw,ֆ[|9N^07 +Ӭ?Xƫ-?aӼB^7Da8KŠz`SiwBBULdICIɣ~6PK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛz$&fzO]sIfW$>2_Nxp7PK!i[Q(word/document.xmlN0_@IbDy8%M <I"PUɺu|ѤٜNi+v\y1k҉6o1ksZ3PpL6*x kg4HKftc0B@jbX+#t 6P8tUg=epO=v7Q1^ [8~n\ zwvZ6kR/b0Cυ̩Ik;'/_O Y p|rUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK!LKword/numbering.xml _p_ڈf/&n6=-&@ iCR/LۋeJ$0a̪?[uF*Rgc!zVLܩR{U*תʘֶRpb#AK ]OzF|5<9MRͶD,nO2~hU[ns f,863s7w#ENV.9ehLe?`\yF}g`z | !,I|Ȣ1![LOͽ& l&`$ӓ?'= yo[}\lPK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4Ϛz$&fzO]sIfW$>2_Nxp7PK!;A* word/document.xmlݖn0Ey,*"Amk$N_a (BtQ;s=%AJFh> ЄI.}6gu(Z & cCs&)ͤKb#dVhPp x‚pzQi)[x=B:&xP 2QS)(R;J>.`4A8KWWs:l '{lD Urln- 6Êp0vKd@2$mv C e X4:۪Z܈ۗgҟbJKt\\?슷@{_s8Kz۴t@i v~èB>PK!ufword/_rels/document.xml.relsN W!NͲdZӏX3uo/Y:7\6rz`o|o"ˁQM+߬`Y? )~,,1^@G4>rUZ̎hBiӒ£k(իl/||\diLM+Yuhu.jPJZ$S\`4qp,_I};\`]ԇ1U5#u{WD3T* 21[JMd\~PK!LKword/numbering.xml _p_ڈf/&n6=-&@ iCR/LۋeJ$0a̪?[uF*Rgc!zVLܩR{U*תʘֶRpb#AK ]OzF|5<9MRͶD,nO2~hU[ns f,863s7w#ENV.9ehLe?`\yF}g`z | !,I|Ȣ1![LOͽ& l&`$ӓ?'= yo[}\lPK!DRword/styles.xml\Ks8`鰷%gJk37R3HB$A;_!"E:4 hhϟkl oyЧ`0F w({Iouz{ a2h>0B۷p"FԑUieZKxКA=|!1R9C*;_;kh/[R[& Vsuᆳz~Rʺxߗ b#:H  1X\qybF02Ƭb1ȧ鄛gl?BgEY R%XA}BA ";; # Aw>˫K-Lc6gƘIי8>;/k+F>~9,r pI_`A 'H.bOPB>d~fHzʽ7YJ֨K:kȊ:aQYٶFԅ-KZ7oh~0+~Ffa1|NltV$}kS.KQ\1RR2fXZ]`cLɂX:uѢz2G˹9/BX{P!'sȢh+2o'Dڤ88+ i7jK S:}yvS?{R'VH֡_sjmBܾ&*qv1Q[Q~h+T0-Ck3r\PwYUi#{ WKfzGy?lr[Skb͎K!ؓux0-@B־Ax<*l u*zJ(iQvϴtRSh#Vħ"$':~3"aFEmL4;6 0Ѯ1]7Iڠ0X)zqO~Dv6hE0cgR3΢a) odMg#|ȷh$Z):6I6tjwɤl\ϔŧz .ZX_'NwIQǟaD-@O @`^z:V9՞};lhETmO`4Wea G}Q応w~Sp%U';$щ1w  ^ Ny|KPK!iKword/footnotes.xmln0 _NCw&R=@BD6d{l]MGl}! _Z돵x;/bTʒSk3RJҽq6O)N)el6DT)`6{У3 bD_^P\+ϔ˳(-VOK[jd-zG/O?ObɟBg&(T (Rٶ(fM8<͙l*97ȹWu[|{cCW 5_PK!nqword/comments.xml W S=ER  4BƑX%$28c5[b]#* vZqtL YV 1%%sGn2!uX( A;/0 ġ !;.b"gX %1J0oV^3YG:YopfSqx)l0^(JPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!dNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK!-/B޶word/settings.xmlUMS0Wx|n drwY^ǚó㦿+ۊR$zv\\T2Za:qB:~z>Wʂsوڮ:WIbyS&4%nSÍE."x01AfJp4֔nƍZ7,dRmp-v=u'rdxIL%W2ڷj 5R|oks LæFj(4M(|gZx6ҿ]$ϬHHU@ B̟Y]Sd8ۚG|[iNG,`g#v[l|K1V}|]HiZ(n5z_@^W|5}B]3P_(IOCӗ*";Xjc=Ja̱[dJ1.iook6qap*dt,ϜC?|X(n _t&:N״֒Fכqgz|!K+FR' hduո6Fae{jV hw ?Uy2"[]3`}%G]OBU4ϚIڜ9cFق CŪ_܅&@}V3Ȏ?1PK9L_rels/PK@!' _rels/.relsJ1Ͷ4ۋ0&dEԅeq>If9AR6x˪A^c}౽[\Ȍ<)8RMs~~ , g=s2*D !0u2~䪮d̀f[ ml !"2ؖ]D#V`/Q2i˿ j z!31-Oi4y H󕞳Yø߻'vxZlPK9L docProps/PK@!E&]docProps/app.xmlRJ0 Cݗ>E<9$6&!Yn֪7{ڙM3Cmt+lUSWu0:8LM\=O!b"b 7@OzQ=oFE S/BYAI6ͱ7BoYO_鿢&/?zZSt+h1R##g, B2Y6 .& 1:qr診Uz y) [/Ү-!X?6TT>Z9S.#o<؆˒s\Dz4l+܂-hk.?w}Eqzr}j(PK@!`7\docProps/core.xmlQO0M2bD͞\btF[mo[M L|]-28BAH- RIQ-뫌)OFi0N 5[)-!s\:[`G":!9`*8TbArV5.Zqt[1뺎ꤳcz|F lwg"Gccf:e;%~+~PK9Ly'docProps/thumbnail.jpeggTKVAT&UE@:RU@,ЄTI$4l"`B$ H( E)Jgms:|9k>]3\3yرcw¦S5'OSނ!4WP,Xa&>lyd ޾u8ި4,&Ѹ0UUryb}{0czazZ0ծ&jrQ-T9a|oތNʁLPTɰĉ!*?t\)}=xb55%z?5e*Ie2%6DwtC sNE: uT 6?mϭtý(C`W'GbB@mL2C34 =ؚeqi /.OԇԆa}x}qqS>?Q}m 4ֽ>l?;;# ܟ?hl9d؝@ #%vP$wMAMbYD5+6}S1 )ь5LlxëӼlNUQC(R-RaxM("=]q g%gND~N/Kmwz -j~ZNNE婟㱞w88ȾC Y/|#)7>a]" Aj&t O*`F#k-KAM{͝QLY\e-#>p~4LKP[jn,{=BchS;g%-VU9|%kk#Tj!s@(\uO*@o shǞ^u4B H\wIrnRu-9#oK"daM0o-|Odo]ssҲ]B~P2iWAzwc,=}UivR,3Jxxx^<#KTf֖b/1&-U Knk" :7Gg7M\XyΕ^Vhe(6!7dў<&2 ޡGiz߈youqM5}z,|k@OX5U*%} V'[b+J F|7:=YBAIQ1bZs[G={Ìo vVBgK$枊  ]i yKk"gZʝwkn︥wꦫ=ӘWjW6z&gHɻ.2qR}oӓ"D8_q)ƕ^]t]q8Of; uAlxiώT-Z`:j~QMˑ:_Bs:E:^.L] aLӐ{_z(incnFtFAlD}+GSG)N!gSmeŶ:Ƌp9*9hI$eݫx/{WnapXV|X!A-p3cUvCe\HEIahz,)x5H Q?>w%lh]ϵ4 jE>Zw yם)PQ \}UkcOnUy~61ldD|lϳ-[r`sQ7a26mR˦)v,,<_e6)&R{ `XXL)pCAڳߎ|DS 6FOap:K/N>}UScUm3ϡMH{bd6՝%=a? "Wk*'8NH.Nާfx?}mb^þS{/.34gx^,ʝpxoBTҹ gU@ƭ[-r=Ҙ֡[hCO#|YfiwWj$囓ƫgz.|۶_䳺}^T>\s{q F$aq8Z%KC4kb]ˉ;-0C+rZ2_BԣT *rŰJeUxvEZI5-оyxTr]h3`xJ\X('~ez`wӛt]r{ t<|p{Kxc}ŨzF[:zϦڧ و :w5Q'1rƆV鸁WrC'fU8~Kxi5ƺ/}9y6p| ђ2#E`)ͩW[7>8 'J32SM3Pl8ϳGKI_EԮQIW!Idq{se}?!]4 _N7YYo ]m;,cD\[툢bAݺ"w=vyFUt-7UD%뜵EL 8. A̋zu? <륰)vpA wiD_2櫯 KvjwL TDu;ze1UQVq4W+]T}@M5*"* Ы([L1HD],Dŵ[z:nfdo AހӋ.e,wa4Mu ]AV{ˡmԴ *E)aDž5fd%t~P"+FMQ}h+|@&҂_AbCՕ,䋿 4v%V[Lfպylhɒ䲈c6G@3ޟ%8+"A}0i[EŽo]ӉuڇcFbVQVye߄~oɂ|湤P2HdSM]U٩VqE/nSm|Yvuɼ#TaxEu8QMI@ḷtkUa'PJitA5C!YҡGIuH"gI^S#Wh ngm7d ՟8 }u}UA  J,޶}[aP~lyVD4A9D3:~΍idQ@ԹXZ!h9}AϾ9x yJ;y4r ZT CMdȉib' ձɰES썰HzQ.| >Q)@KEwdX+ZZ v`TX*I{ Wx%+[D@3=p~d%# zT:cڋSeOӏ Z,[i`ݤf/NkzV+ $Hx*Mky|jo\%N(<Y6B;xmtD.ih mRXN$'m!#2]&b[^-h"%VOUvNQhZhאô[Ԃݔ.yazB_P1yaT<2} 33;<n+4j\i!h%rsik!]ʗ4O/l~ΡFor0KLL=ED PϬX6K j"B`Ȍ!rI*lNj^Ӫ=|yQg,GF͡7[-;1so\X~Ixݺ#5'#j!_PdU|q%FGӍb{4iiUi,[4 Uh@XCu]\aFng_M?َ$y!1gBR+K>N7*ԔuJ0Y!uM#Mw \Mm7.WЛn4(MeAmͨxOX<. k%wNnq絸$>:chτַ&ݛLCy`39xS.bWOXfraMlv)і1?z^5pVqu$ҕqP-CE5~?S:ω#AkݪsN$*ж឵IyPd3o&Q1m>:ك㭘dFdu_k1=nl¬N1SsJU` [г5̅Ӊ;05PCx2!(M:cubjf`뇉L簗]5~]J1Ւ2^f%49'`bps`يXYya ⓬FUٵf;z/ 42@I(l|6DBJ#ޭGYA'v!׋sي aa\ɶ0bD䚎_kT%h dw~҇C7㵭u!oV\C>6GMg? ?܄3;cv8/0c-@&Cq 3|[Л%\:4H hu.򞽗rIôjSV\-Xn)%.+9bv ](yb Eڒ oh&IY6Nи3GVMҒ;dd7]w~faJRR|̂$͐>;*w =F~ͿZv@l(/ha>KB\YxLr[O4i|m9R6Q Gtg?3 =z}uBfN>aWdD˥*R(2v-f-ύàCe0G2 qntuu5raXi7IG͵'v.mEBCn T*A!Z&شɨv'N>ܡ.一OۻչHnU% n[Ri91)-2ӍkR?.,^b z;X2"3FYܬx _*V:~MfVsP^RdS9M;c˓{,p^+:[%PYMNeZ3>ElʺE qȨ_VU6-MT^IU)!c bD~+k7$zAr EEX[C2j pBoء2yE7LJ\uuީCK~'W6k% ?^  4ժ YUC(B&Hύ%Ur=-Wc1word/_rels/document.xml.relsj0E}-;}PJlB E?, `hu`r{Ϡ| Va;E@g|ݻVsA]w`DMyy~D9-Qő98ůUyRPK@!SJ<aword/document.xmlUۊ0}/N65qBB~b˶%il7|KJ’BX9shdo~Ȓ4XULO WNcro(TJxLҧw6JuRK 1-lRpBh3X$Zz:D=ɒq Go8t3m$\=#g@D)>4imT4p''BQ#Ba0]C:y% ؿeCc1$mGڤ wqb  (&G$sTr+m .`-vؼ'X6Oh%ZW[ѸA%w肩Jn^{)%02@ H+ Pp Fr /xeFz5B&k\w ń.Ǵ U0? #V t^1]QN#\=x|prX~8# Α̎ȅYc%8k27FE&'-pΕQFGM\fP1GGJvl29 ޛ_oD$Jz]=#`xOxATY%}B{7VOG݉\P۞Q:*9z>aCJ wցZl R4&s@6)TG92zIͽB'U=$v$-L>Sd59"jP}GDό8|'.cH#\'5w/D"lad})Xk Y[靅aS8YY-XkrZ Z=Zmx4oYυОK-ה+h}ǧĭb> hr; -@?тvJZ܎K ι xB87s@A;7,sQ,@n/+ pc,@m7#x@8 xEoA4oG po'x@8 ᧈ7 xXh `7#x@8 7.fxX8 7#ރOoA4oG po]<poG" x(h `7#x@8 7#x!x `7#6e ը]xk9o5_tF%!ѱ\'VoI0M&2Ѿ*/.)poA|~rfOTUEhOa\_6e5-U~c:ࢎt "(BM uuRYRKy|~{7<]T~ ߻H^9biR}ź.9RbX*xѲ*e_ !jr/Z*'A!X5Vlky\t]"af=ѩyݝSi~n;%|}oᛕFoLμNgw9|JOA:gQ2xsSuW&E\+!5`F&ڛlʕsS-$]Acղ>1)_=<;~Ç~6HKzG_Rgtɋo>Gާ!9D< @M`KlDNd J[c̰& @&{)j psĖQ䛍d3S(^&aPr쓈(QZ6u|=ژSҧeAC Ի͙I&9(#aU`fRIX)H1*097n)RA}8zDJm1.{\m6H 9ב|06L@~$E1/d urߥDmmߡ~`nH]bF'ql/_|DJEYpѷs7(!)=律h=/KSnCq/\xBRԘ-LT8* p f_}b.`-ԝ%)9 ^6]/tKP=Q3V̀KZ:fkΉl-NՕZf:3%yLKTh5 G Z|ɦs&'.&ɕ$E:;Ss,e a dQrUkq&UsWU+΢K&b!&A&|M9$Lެ^س%!qՂ0G;D6ndQ _ v#o+,pM<}.|HG{JCqP΅SgKB mY\ u{`Y$.!|YJH.t**yx/br>7U)yvԒ]_͝?َ!ɩ痨C܏F|plo=gIJ({iG&3J1t!Ѥ3)6@{!X?]0O7Bvp!1-ΤM-gEbl )3v)[PH::9eylS#%pg3=mPK@!Yiword/webSettings.xmlAK@BC{уHhR RoEu3ivg^y|+L=ZhO.=Јz|b>Q0ln6-1 IWzXT9 f/;^d<ǀ3wW3%Z2HN?#`>%'&>GmZ|PK@!^E_T[Content_Types].xmlPK9LA_rels/PK@!' _rels/.relsPK9L AdocProps/PK@!E&]docProps/app.xmlPK@!`7\docProps/core.xmlPK9Ly'docProps/thumbnail.jpegPK9LAword/PK9L Aword/_rels/PK@!>1 word/_rels/document.xml.relsPK@!SJ<a|NYQX%*g!g ׽ bBjsV"Σ,9* F 1B~1VKg,X{n 10,y\Q9WZ 2|.@Vmѥ+MO,7>=Gk yd C |ɉ!Qvx(vIT٦bkXH<Ĵf.1( Foa~ܡUH;͡H#ˡV4$AwټoPK9L_rels/PK@!' _rels/.relsJ1Ͷ4ۋ0&dEԅeq>If9AR6x˪A^c}౽[\Ȍ<)8RMs~~ , g=s2*D !0u2~䪮d̀f[ ml !"2ؖ]D#V`/Q2i˿ j z!31-Oi4y H󕞳Yø߻'vxZlPK9L docProps/PK@!ndocProps/app.xmlRN0W?D""4kJ#{X8eNHӼ7ƆW/aWo7M]Q0Ѻ伮 cc]}R_.DJ$BsPF,it1sb9C<X6EL=I`=+^WEm4ihiLiolB}F[wSǘSPs3 3ȲY}L%v\ݢqcIHEm kix 8C_qLDN-=io#UG! uU’_$O2zw>7>So6 {$i_PK@!aldocProps/core.xmlQO0MKG70D15<Ib46mlow_צ};(xBՄ/f- 1%XLL뫔k /VNޤ0fBΙRk(<|qmO7ltEcZc9F+ah:#9*fkZ 8 Pi鯻9ر/ٻvhvjإcر/;ٿkٱ·;;w>h]{wܷ_#G;epl[mogǞ]ܷm񗛝;vڽc]h{3fe;gH[CܩKTg^Qc;)5:j~ ٦ XoZ9w{? Z<Z~ ŭX1g\TE{ {5:I-dPτgkF;%JsBa=GxwV㠡+̄SBPw򵶸TďkNl뾢(Q%bL3ʬ_o-0d>AZ>!#G'lLRC(oE>㴉AWQ>1K`xVT\Eo 4'k ힽ8gvx 1 \zf̋Z~o;zn IƌmIg9m_BYAv"hYnM\ vF8  Ae [.DZ Ug3A*TLq@9%,Ԧ(esS$)7dۨ% ҄nLFP%v{j_r_jmG%ܜiPH Ѡ"e'/m,7 "" bƹtǔͤEW:*̱iNemE4*xJяU.~ 7 v-"QDJB42e6"iYdR\DZ_I(}ki%(ciR>K*M;`~xqJ&1{ sЉ\ I 0'}dTPaRUkv[-S"č-b("4 bŎ-)"!60N"nQVQdrUP{Spc/2`/5`WrZпeǎ(qD,bj -Oq#*(F-/]kD5u #*hQXyfp_لAש*4{a#=ATax9EvborP(v1 @?+R;?%rX aqDO`9$ T;K 9I8'>J5Ҟ;"*ԯA Qko=pJ™l7_ eU!& `7!KgġZcRRŸuva,AU3mQ},ᔏ5[dXB*9Q{ϗ4{ )r7_Ό)-.d-Z)[$ m 4u)5g@9Oz}us&e ntH`{6qe܈ŢBdxmGe L莫Ig[Gߐi g/NpS%۝U/x]r^]]EkY$e N=cۣYǸ שQ<9a+7;' qOfd g2VdL6V$Y7ha&~irr΂jxq*!EG4\#FJoZFJ|QT*xG;.tkSc*# "#ⰜL%bB~fZ贪akpb A@Xȷ˸ƭ&^*+0# EÞqhn%ìP!G1*)D!;6RYsQG381͇E?S+r#T'nW~xHdyYY>:$-^d|t,!~Gާl:XUYQV[ÍѨf,_:aNl{[1xW\8j9kCu*|pȶׂ9Vl8s,.*}9- Tqvu~pqڤ=I<~M*F|Ɗ_Q 0om͆4[^=oJ^K u)ɴ]K9tI%W|nJ=53u7T& 4pTxtt]DݏpZΞD?ofzt@>`J5 ҹg$B&ϫ.u3+JHZ7լ16kDpXbf:X)_~7QHYYOĴx|,W8oš 2,⋬ {y0o-MEMdkJ@{= UϝI) T ~ m٭ŽNzr.[]d'*_Ʈ ] ] SDX905=?oGm!}UN+򙻪p"M-^ Bhe]9! r\n41b L6P-kK͟׆oELs1w?ڢOA-NJróTsu[rp\/;4 c9첈v}Z!^9\0 3c2"ۭ7t^N]K]bulG\;zrÒ_!+s(I&E^OI2 aހ^h> ~G^-Q'1GqFows;o j7 ۥ½PF^[hADYx+ *Jv)c/҂Q|6[hO8c}@ ť 1Y0ĸm4Nss]jY$ޙ2( .Wop z慓k=?w9-\X蜑Nq3ǶS7w}G (Ov,r VAKvw2R$|vzM{}Ѡ'ygJQ:8פԥiӭ OGfSqfw`̷}vKF+Ugq1YKgu56.M}^R,8/ o^Ғw̺x=*ɼcS-kvl-TĎYȌ I'O?|ɶ}CBtSci8ު1CL#JڅjA^Rý{ Imoy5-GG ˏ##lcm`rg D,pG^U:3>~ʷU3)W{1EdRkzʄĶ$kG{raf<I9B-@b :l$r&X ζ(1H+*s\Tq=0YfOޡO Բ9SLTam^LJu]]jL:~Us=2թ5%yhncn|P y/k~YȖ}mNpu.r Rw5$gLD F*h?^|hM~shmѧXp]i^lS->{cEGr7d7F@D4[nu{ʒMVq|2Y)Z,/swWu%yP)?d&SШw/%NϤlw$w~u>J뢣2V?b >,^_.asU+ +6‘{K֮IY^MD*%JUOm yDT#JQ~A] ]QѼao.5A *qE!,mqƖ>uSvgc0usO3+Ͻ"rH/7ͦ/%J&),Bp& ?FUǕ3dIݝe6}Ov ;xiEY.NMeC OO-I)uؤ3u iPXfߠ'n9#},}$WWxqFQSui{}[N' ]&B%^ZFپcIDz|{g?g%') /Jp&爢$hPpP:\}FcqtTCC.Nt V$R7%GՊ1݆`L qD^-|m~^{GA?.WqfcY9=vXZAG{Kuv"ڮb&skW '-k}ۨ }tE8;߆uy`0ߕV,.44c !VfH#lMDS6ȃCfi\~rs{]Qu]4$׈NpgF1*nɚjO<[ht{JF-9bʥo9C05zxQ#O$,v[P.r8NC,%]_֩3[܃z~KyhOwihPK9Lword/PK9L word/_rels/PK@!huword/_rels/document.xml.relsN0HCw@AN/+qvubۑ1BgV;YZ/I,< A+]mi}v I aK8: ,NOKmHb j k4"E'y#(J_VQ!eٜ~{ɪW9$d;['_ Z`BBsҘlbJw<P1)A0~1w{[mc GA]ّzw)J3?_WϚ;PAyo`{PK׽Fpxz- word/document.xmlWn0 }ƗI`)l@tȲ- IG͂ٺ}D<::)zgd%B\JIŘcXJt+ w"\(KB`]^.qcɅ9U18GV.rۮcaVY ~٣yd)+y9Q"CF8)H:관h[YXݢo!upi;41[f G[:CLWn31+`e3rv1Nnȃ0@L0euS \pP"V"{  Vll?(C*uD!18(,MߞՐ[cx`[cKӫ!Di8Kb#5lã4$z+"b h3}L?Z;toz-#S__Y9y:D$E$oV|DIґ_1Vf3)uL5?-ZF%Tb&-GtFխ/?gPK@!BMword/fontTable.xmlSn0 (YI#rХC>MSQ$eǫw>Bѡm d+3%; % <]\^K̘\Ep5MQvCuDMЊh,|q1Z9yep쇡vtsm$q4P*O%q|w0 54眲7V)χ `!lsm&єY o擄-MIN:wxLs#O#gR@҆hDhHD 'P-6#"E8 >]|Fz#-m7ΉbAItb%˧P-g(EIHnU>F9f}qу8_H'zNx9P<ػԻ&Qܺ#co[adH$WjfJV> 0&hɓs ]g);@˵'4tf|~\'똪 l_>s ΑPesY͓s&l6\k'nFSc9^ra,yҠʻC+Vwz+D<%oU#Aq m {n?NOhw~8<`PW`-=@o>]!p+BZꞗp\ۍJAjKR`u&#S/z]8Xk@ JX|L"|jXFGVN21*"BV[raEʡѮiwM"Eò< 8x6PP?57wP`$J+]oA~s$H7ij5<;.Az,R]cA?P[?*ٟ, H"oIhhU,ȅčCyi- EWGSm:քz%.dL}!@|bYBp 3IIh )#fM{J0g 00aB/ǘ![p `|d2^ #OP[J!vy2.fE; uda6.*!m(=DUJcpQb Xr(!R'**R׸@l8!Ľތ n-E"`.A\>w;-ioAj~zO7(i3^ _cA,,8ƂV'g;<'>.%J؅^@ /j &>E,0j RPP#1$LPRQos$2VH<,& 85!&0/+k;(d;J`g!=(7^C}:Z%5bBjSpp},svTPŤ% 0,Q{JY?$V)p5QC̩n?DDJg;9yOtwWٮ`%],^p=ry;|U%Pkx 9iW䤙Yos@3^=N p֔T7tamAS59Z$'^(qt5J*sPhѬuomگkuUI&uJ{|H^?au!ۄ8ijܥst~&6c/@@ۛ;Z 5CDw a!{h w5 Ѿw { EjmCt`%D *ZuL楀XQSi'KYX}+ҜﯦpL8#'8ZO1;@}Wm9eM mFr[قi,ql6 Y&њ [ml+Hӯc|dݗ%;ǧTHñy׶-cؾ<ږItl?SioW#?TZA(G8Ft4 ]\%\l\Zqᵜv|wvF%v.0oqN=T,,|# U匋Q<( 񸈎ψl|?k_rl/D8|qh ` 1?6 4-$䜻q^KP_C9gz^MUs';UM +v K?N0#Ea aG| >g3v>4fפY09 뇐 2UDj-Mw,XGq+)a,ՈH;04V5T2YynҕF'1oU$vzyə-I~FTDMNa+[kQ%$J&Z:#&m;- %c$+Ѐ]1ϣzs?4[Lޡ̣ ɔһxri5MՆDWmr/:`#;) թ~蚻虻86w7w10w14wqr1w4X֢4(DE)j-J^kQZtpI\9}Z+@Cdߺ%<- (MrkpZo<΃^ɸyEW꜃_οP-|h~#z/D t? 9?0h[￱Ҝ{3s1[`y4~  _?H$-N]Wr䩁6j6`Kl65tdm4rcYXb{ oL_aLCI-kmẔd6- @/_űll2[.pM aPMmWdcG ~1 @]o G pAPBo G poG_QpxX8 7#޽7oA4oG po\!x `7#xx( 7&x@8 7#x@]o G pĻ& 7&xX8 7#x@8 w=O,pj O-ҩyXi4t') y тV$Ŧ>1cά+Z9^·V[ׅ"j?G_yKg^qG SVĚQSbbX*gܯ$)QC-Sgc^cDۜe5RFVn 2m)*~+a!ɓLOh+)qF7$/bYl2/?\zӕ޶,חt4{ GOqb&vb?N/ѩ4+Y_K6½${q0d϶&rB9ʄ ջv>W%N8reӭL.ftq~O W qc*,5dlr k7e*jULw&cWIbN/\Ie>"TL4;ԗP* zOQBVr- .V4FjŌM5''RYHz&m}`_>{?=уG6P]qS}z݋_Rgto>C>&9@;< PbbSlā1Ni +̰!UL{wC1VFÅѦ, 80 cIvw.qLM,! 8 1Q(}1ݥ- .Hu05d@LtFIAw7[wP3M_EBU`fbIXōWXȨ1UhRrw"åHq&[bRQ:sط$"{& ̹{GQg:#)6WF%xB9K}uھMМ 铱0z&q+:q;ϻqC|Q'jfQ/ͷ.>}& }s~ߜ漬Ͽ%Ϻ36S2&ܐY`߇l$a! Hp UndY$Jwv?`sN/jrCllY uAi5.0'R㚥J5oB JpVhḦ=g0  Sbb5{&%ɵ'ۋ UZIi Qdi0 kqUsV95wj0M_3n3`h&ӢrC-ВшxjlZS+wH ջopM Gd٦|g&yͯ5}m+X}=Nkfҝg~M/hTxlv<>*yxU_8[q)Z<;jn,q^ٮK!l(>7z3fL`EfbdrGL[:wQp9N. $lLXgHI\?Jgbfs|Ebʛ]fӺz]Vx6%9Tw]Aڳ]PK@!ʳCword/webSettings.xmlQK0wP)k _PYzm\eu r\@!P2/TRP^eL茧:Ms}-$?9%pVcJS5pNi$)ôInK'}SwK{g!e^G"RM͗h3ndYAq)oAl$>ryX^UzE@4WюRk,a*\XRmpZ}HwnMVn-")/ZwB`4 sDXj;A*ʝc֝4[S9> {V4pW&A|d?PK!N _rels/.rels (j0 @ѽQN/c[ILj<]aGӓzsFu]U ^[x1xp f#I)ʃY*D i")c$qU~31jH[{=E~ f?3-޲]Tꓸ2j),l0/%b zʼn, /|f\Z?6!Y_o]APK!word/_rels/document.xml.rels (j0{-;mC s)\[d{CcMZ}EJӃ3bgz;5$uoZ'ijA#zw7TbhXqЄ:-)HAVEH%w ȯ2ٮv#b?ٶi _mhFH6!SIIB4*\}u.l|!8[s˘fpf6 Y ٚx '~PK!O word/document.xmlVn0?;+&Ms(ɹ)J"Hʊ]4@Ā/ ,gwv9 D*=~X$2Ĥ pGLxN3+N BVx֪4 . GSG2)&Q-u $nfJKL_"t5TDK͑G]DMkʨw %CCom3x4aQ6ˎd-g]i5ը'<&oG6cQGqL/}vpDEC9Hn2y_UV{-+ճfN;"J3*qPњADP:\@YlF)tbM^DqIf[QGmE!pv}NwϜ֠ btOҤ%I0k&-c( &L?oE5BŒy1IV֪qcpbN`%5'eTv!"Qt7rZ6FV֙eUOmL.eQsGh`fE*:Y5gQoM(w#ubqLz@iY1@|% %zWhMi?9r`1455 OB_-$gJ,%H˯Rf@648oDV K, l0I^0 p3^j‘Qm2#f>e4 M{gH[8=3IR@DdD޵ -QkZW dVmh*71. [kj[77*R32>(=mbhPXS),F),ڝ0s7j.Kp֚Oz_Iu Weg~ Q~A&Q/d@ȷ{[3 kMKUsWĶmhUI5GP-7%qb>p&Q5MӬic,Bu4!*sQ)Ṧ5w4rEGnqͰ"P0*fs;ACPŗӠֲV P#t`I=T2`,J|덺0m.`ԾHg=|֟Nl0~ PK![m word/webSettings.xmlJ1;,Y-T>@ζL&̤kH/I23; X֌ yZj|pm*).-]قl7=,)*IYků )Cǎ]ђWnfW"Pv\Wf) u]pK~ʮ2D):dSx<>=t!3 ue'Q>w'@ܯ[D@'3S̀r >`N| v1RpPK!2ߦ+aYk4C-cI+e]oc~O#i̐+I:r SkP_Ȫwc?Xf7W _e?c|鍩3O"8y#OydJ<4%x3N:E'9D媜tx-E0R?B 8li?ս灗#C\TS]eP"(5 Cck|5$&YƬPy[|Oxy +.qL2-V< V<2ᐜ.e71̗ K󥁂y:e::%3ÿ<̗)/?S0_~`l.b /3$OI y[iIN\ލ"nHy:8.qDLgު&Y>(c=[ 8ʲ~63u'G*\$ G4n+򶌧Wt.`X71íՂf>߯gi2+UEʣkƻۍ73^GKXv,fyӚe[<#]#zgq6/Z7Hk&۸a&*AO^Dޡ$+QW'ssp8ܛ*hږ%om2KܼlI4#>ȾQ{I5o6PnhGҔ(]m%Khmީ5ϳ~+t=x/ Y[O&wmre5++B`UƧ*+]\O,㳒y٤%g6]e([D mR?Y}˨sajS۶L>Ǵrx ЉhsEkLVCkyyvm՘ťt{W"b +R?\ؽLOʧIZS5v);C~ }=a:Y׳;:iXd[n#訏~ozELͿ4jb[r=X.߸|c|y"6y`"Ř(6Kd"'dUN j]w$=2M0#ua >/n\Y=v2nc L fr(:W;ԸR~S?1ل}UDvҠPC gJCAV}֮jvY :xzGIV\G4INiD?'RZb%{ǯߵyTʩ7,a=YeToVj-F=׉A}mQ 뱰~{ N~su ^n,>ޖ<}CpfS6s]AƯ9InWߵL^3 AxclPm 5>tkd){PK!vC7docProps/core.xml (N0Y TUJTJ,*faא8m{TK@o xp,Q9T=D|x>'< NAQ" Yd+c4+$ ?$LŬ] `O&fjf֪cfS3 鋇ΩbE1F'Zk`:"Z 9Dg 3  d@JkA݆F ;WtYgFt²,Z#mj(d+(M8 ^>2'Gl{%>f-tꮫ+w[]'wSܝq/~Ocu .вee^0-f:n{7j8 KIdaW;?9nMYV~}:B0"!B>xc# 0_ a>q h+PK!vC9j!word/numbering.xmlZˎ6?(aM St-˴MD$3L>_(E~%wL9S͆/%yIϻ_qB#Jw$ ] Z=zV'1Y)%ph=z/vsDÎA.K֚l`y81J'tD w-l|M` ?l*so4DᘋWq̾l;=9g :6 JwPYh{M 2Ce6%eizƵv4-Nu]fLXkP _W(R#^3>Hpȡc#juܗU3q~gtfɗ"U|<`>LD N+BYImW'[2 fE޵ҭ^͐~2cF@o6GH#!D(iګu[?Z|(li͹(VƉxYGQ'ٷX}{uNgLȌ!1G[<ό10Y#6^ǚܜߞ߾_˛ oѺϏX; N'tuq^+#NSվ)'/-81L巋燆"҈ <<7Dnh!'[=#}gD*`^^;J騂v`궯]Jܖ]G%L_TYo[`X V[*qzEV.pTPK! word/fontTable.xmlԔۊ0 }qNf%u7P(n鵢ȱFěN&)1ZHG3xQ2r ){ ff%zJ~ш~!+=څI+T ;(@%+ZsjC 2BEZ%Ƣ:U5S5>S%~@< !0#gE"yo* IMnX "LmSYߊHVrߢ:f M^q~-mqrǡiu@@aЅjψDO/ P_^H`#i%EP[iҭ_{O<6L/ȗ9иy%t@`?,l!96T6.ortNfdwsGX%, <ӿӧ]Sc=%N2OPK-!2oWf[Content_Types].xmlPK-!N _rels/.relsPK-!word/_rels/document.xml.relsPK-!O  word/document.xmlPK-!:K word/theme/theme1.xmlPK-!-)2O hword/settings.xmlPK-![m word/webSettings.xmlPK-!nxPd 0y9$gti|P s 3=& Ó:5;ߦ1iЕ IilUI-?9o9Ih&;!n˧ht!F$\#N3 WKK3H6Uptgk[S{.S9v<׵(}v?H@8M+qPK!N _rels/.rels (j0 @ѽQN/c[ILj<]aGӓzsFu]U ^[x1xp f#I)ʃY*D i")c$qU~31jH[{=E~ f?3-޲]Tꓸ2j),l0/%b zʼn, /|f\Z?6!Y_o]APK!Dword/_rels/document.xml.rels (N0EH5{@PnR>M&!~{L+h* /ZsbV/=AY#r`hj( x5(`bzDPeȬC_Z뵤8;Y"ϗOP1٦75jtx۶ }FwH&aO,RɜBTy~.w>,nS:P%/I)tF}XdqGV~PK!nR word/document.xmlVKo6 tIc[:N ]^Z$IoR~dٸKCqoSS ӆK1 Q@dE9 } G1RIc&8mˬm I**LVgZY؋L6=YǣYO|$.8h1Ldԟu?I[Ek~%baߎb\fpZ/ЎqWF|*toA\vS&AhL6(pp`U*Os'}373ya.llw;[|[ljȃQg(AJOe[9kVV 0vBJ{,[떝Lx uw 0Ho50 KuP.NiNPK !-yYYword/media/image1.jpgJFIFHH@"zޔczqK{(=8CA^hPqq)s94{d{w9C=(8RH .A@ Ӛ^=J:Rqis@$cIӚq' ๢AcP\wu84cP2>``v4zNM!?J:IGF9+8'CF惌Tp1IߊPn>SQF*8@с0;tOF23Eg4uRsi(9z1Όh4cތ{Q4˚:Qhsw^d⎣(osGQAP=(=9*ڊO9CҁźR)@G4>(ւ(֏zfJ)1җhyH)1h8~4ctiO=8}h^hA8ǵSF=J8 PzRg R3@ 4ё@8ўh݁Q@OzL❻JLڀ}=isOΌ( /OCџh$JL=@8&OA  A?J7zNhOZ7qڌ?:M&p)sg@ 9tҍJ3GџaF~4gF Kџh@ JNya@ zҌwҍ;<s3)=)r0hdgUN:ENbtzbiwqp´{W o^5{n$B{W&F.ٖsJ:Z23Qa8?tsN&~Qg@4i3€ y ғ<tJ=:QaRF~nߝǵ&sK&y(')s({Q;Q{ѓqyBO/9h=;sF8I 4HX2Ihq9'ѓ zHI'"=i63i3@ {ѷ9( A4 QϿHILQ >'Tc9RdLS@ 13ތz6Q:ѓ*Lw.9ɥ4җL3O&O'5[(n֥ z縡]&PA&*zK LM?k 肿ek0'T|15RZ֐<;q\&plk+u^pXN~'xҢMoa*LSW|Vv}(:L:1ۭ.:)}\cȣ$x)8* 8\{@ >'(P=IiKwb;(>FH@ QIz(C@u/G9Ê;i_֌x?(1ך1@qF=#Z:\4`rZ)xޓ1@ ސQ`\ⓌQz6Z^ })1Z6qJqF3ހcތ{`4H( {1w)#(ǽ/Fw/JQLsF;J9Z1^ӭVl6֠Da5a[_2xáLca*]%& ipSߠxwU[2,+H3y9k|KNHby1B}KUxt w#0m-d;@597ǛDEv8u|68Lю)S] g4`֍?/ uȤڌ:s)JA\RbJ0}hq@ ތF( Qҕ'zIvFR?).j?' 8nRCu4F}K@_Ҍ(ғ>)x_Ҍ{u/^|Pnϵ/CNJ7phϧzSZCwP@Ҁw>ng(Z\QMhqG?.?€wFԽ{@ (qG~O=s7ѿPwAqyid2YzzSU`R4Jڢ8&6Ǵ^0I~5)qsGa'6JIl$r =Vd2v0\nLZkUn[4i8)Q5O{5t:Æ&-K<2K0qpi_*^j]|M"gHR+Iࢻ6#6.% &`}{x15㨠g?QP7RR4c4nQpJ7{R?&zfԧ94q?&zQF@]ԛQ4g7ZzRn &:т?TqFIPq@#@o)gր 1玴nҀ.Fzѻ'?Q}g7z<J1RQ?JLJ6uiwPcQhh_J0{0IQќ}h1nK.84BzR@ 7|.NV9 R4I$VP\:xr7Z+(߆ K~]P:KY3MiZl{z&5Rw:#ц梞Auaӊ%m!^ey:i&zskiqڹX?N: ͧrٳ-g5 ~mSq{ng/\o+uh߳9V:#WZ1hPO><1F8(?LQקҀK7~SZvE"n>أPylQZ:?J]3I?Z1Fyhvu?moFyxpjPOր 3"_4f K@ ? ?''FM.?m99FnmG~m9sIs@)BƛM)Ƞ*?!ߥ;PWNiA>) J? PO@ 摆4zaaLxr)]Ur?JME@ ֛,iUr9k7o-ɅI隊#,|)yUZ+:jN잝cn=[r?U[{7A'^p DOZ6I'o推Emюȝ<||ÊeU&^1Uu+5Ey:nI(W.srQU'r)gQz5@#o1=s,FN3>4EF%װ$ՓRq |ͬxMk1ɮ'T𶴶ls{rQSv5fk%:}\? j KoF!)Zqvb9Sivsʗ+^oj Jӵ(s&x;oi:s@\I3@(?:((=A_ǡ$Q&9PRݱ1!8=xn=)14 .@&9q@ Z sRm"o=(3)A#ڀ bc .}n: M(ǡfzTgkOl0AHGfڕ֏~+SK#e(zMo&wpΥgDculѕo6 W[AC;Z6G1RuFPWZb'IoJ+ nx}gĖQ4 Byo,2mM/5,&_~We=S;B:xNΔ3k͵ƯOV]k]Of""xH'XI^o~Iw'qyVVGfirfcW{V},).\_Q[3u=iAϥt((#w^?C c Wc~^#e *SQcvB-|3^>pL]/u3dv%VnښYoҊzOҽg?Daz'*;[n\r:-nIHn Ѷ|@pKXzY|?p8%#v:s hm|O8[ZFuEK[rY=ת?!l^SS:54"~udzQ\sI џj]vn>}EsҀ9"o_K AE;Q@ }hqI !'ipZ0xDI)9'ު]91,*HI:nI7o/rFsN} Dft<1ibz,-rn<{&7Yā_qZQnؙa*-:1ғk6Yo~;q M5trJCJLҝ:8h4vր IPA3ȤSrsGKKǭ794d ^74s/K@ H Fp0(W$nOSP9y4'^oQXNq]NB5_ hkHljTmift+dmQI2L8To$r. k;vy\&Rq^6#N\TeRIE]5SS^Y1[6+9o|Gа^Uys1C<⚸:8'h7d3tWu]jnY3\֠'5 \E4U=:Qәq'(˂) pOY02{7m݁#ِq5 zҶY^,a~W0)d{p3MR&-R $J9 Ð9!Үo. L̠`:[0?jHmhth4FZK{ltc[' qQjS]VP~w\(Z}廄fV1 zU;EaEr^z4ӶMJ~+j|_UerA9hslx#Ҽ6!X9V7s^UUqꎪZXNx'?F*[_wC}w9_eWد~~aXo>1O~q,bT3 B~s lWsh?zZݢXq 3}}*RWOCFPn2VhoK(9z$LG4RPsqFiF3A4R(ipižgPmƞtnJM>H'c[T3@$*M[|JЖȠ{T%1)J bcksڹ'I2 9^}f]Z+u q5:ד^2;)qgp.-|R0#ixNlH1n #n=NUjLٰj,ڮƚugN}ǯ ~\Uw8թ~UYD:l NH57O@NkJVLh٣).iԚ1y6&.}k~"ibuWa|/5SElC:/T-{$R>qfWʽd\($81;pQcLcl/zʱijZٻx쌯!@FOSRFnЗ9S?*чKDk7y9zʞ8]1k7'jj!=ꮚ-D&P>b;k>_g[=*{-6]r"$?;گgO|Թ{G'xzRQ8Kڿ.N:qQ43W6EnȀ*2du++=^,G-}ѝuF.浪<"m>~Wp+늻-rAE?C_)=͘=;ڮ45 Z4xXV* 4q~4XПpk^V=Kgv`Bg>;0.#֔k:\sjߞ2?:OTTi+-P8_|SwzbMԊkvJLMpyUMy~*i>GT短|gX."]g.Fckٻ(PLξ,lڽr!< ԼE>T}U>^[Isq1hڦm[٧l^1i%r ]%qlv:,[?Jh}ZϱP ;Sqlv^񲁞n^G\TD!%9=j{Pwѷa9;XέՇ*Qz v6db݉=4T!t@"amUj5U :UI˦;uL~dՊO-NB8\28;!00FY[Mhynb Yd4ni*5F/v/ylG/UR6 .P[͹@TY\ ҥPQA qڻ /-HG``R=MPJT1ftIf_Zf^탌c7gXSp֩V[\+tug8*٩p35MP:⡓]@x.;RMeJ,J7Ҩ\0~־mJV_HkF%loֻoe4n&C(Yj5~>g9ȩf]>> 4kIN܁$lez0u OB"|cfUl<~W:5g?AߍBi14Rt(7`zҀu.oPQ;ќ.sQHǦjLsA8 П⦵]^)0sE9wr3YB3ҷ.fM6zffȠEW&:VQ- $PtN~Z*FGJlǽW{5է/;#%ϖۡ)}8X8kǫBOۏOJܒAК%ǡ=wB]Nr}0u uKyWU ^#ѣӥj9_Ҳٮlmcc]SyG*_-U':hVGNՓ%az01?S\@8V^SM';7_ūc"9pO";rx3wv\^9j'y۲Rxo{Y{SLmS\욂'd$ Sύufuu\PaTF)Kl0e$1ɭ 7&y :UILtȚdTzLUJUe67t<^1n1'PWI[xji9u&XGB 漜4>^9 =VVd[cx⼎k}U) R]I_>qA̅|=;D[d/IlL 2{Ԓ0K1ڷգ7I63- WLOsVq$l ۥ,Jf<]Tpciem(}LыԹII5'~?Lc ɱV=k7uK QL/Ԏ\Vo- v|5z1>F.֤R߹ ٝݝ]pM ;F~^JZ(ι#֪G -9sTf׼97Qmo-XnVtTug:GMwugX^jA(.XKjOJhM"53Z0؊m<Z=kϩdkrFUd޹\sPZgTkIGE4&y-"ikƫ\qsmq! zk{Xsڢkxy^TUh9^3UI)WNpVkypU0G nk +Kgϣsȯ#ԥi56$8ZVD 9/`*Os%*{U05ǗkjxMD'xxlBs`C0ڭv,n@<8n01sYYH.{/+7ݭ6'6JӬiGA>6~oLJ1x_GkN^458 4Uݻ -Jrέi%PI; ˜+b c JǑ0~yOM(5 y2RsZAE633e'8Mv ѯ-yS%$gμ|5"Ciɿ`yYpW_~ߴ^˹n|wpjlLk 4c$Oq E~x×+?РCp䪝 <]5ٿ`9;4y?"m%7gt2FA]?׊m^9ᛧ 51vMGƳQZa1m6U;d1%qf=kMYUmGFZENG5Ԗ:g^6H>ϡ4/AIT G6z{+TiںΡO*)T`^q8l]n)8r=럞t*)ĚÖf׆5O 0;en2޾&7Zu}H 9g}hKSQqd_zA_QCFQ}Jp&2EE}c@4g:j1&9LP:Rt ȤK֐Qϭ(G4#*UsPF} FN&LU>$Utۑk R:Tǒ͉UčRY[.;!R] y4 ]?֌1URB(/7y ^3g-ח*ޖ:Iw2?ֵT}83}?n1^ukxJr:cZH},#qsƔX&f Ԉ9^=<-i\}z 𝼑"GnJ |*^/c! N;F ?CJ#(A]+³Y!/kh/3K8c'aӥ[|ko Gp8p~#$? FzWU\_O̩Sz:N\A]]lUFFMx}-X[ِ7 cjSc #e4.iSդ֭orxSz-.n]G o||h~0Ҽ<4`lY+n])\~"_iO:鶜*I,d%բ#䲬,GݾxFRBk3ӂaq7{'¬J_7|;55m(zgOi?!q +03RE&r1@9=( RLQAQF=(#pZ Z9'z0:Q3z⎔1A'^9# ۚ~t*g3!;Umǩl 95H:%͚|}*+m8Jsz 14URV;ϤQG-4ֱ!gLTw8U&47',v_?9Qڜna C5Bk U˱'YwU5ה;iAI`lV۳]ɜə9=+qU==52 Ҽ_^uW]5uHUxbb^k{~|WEGJ݃Qz2E*ƫbIZap9'2kՅWqQ#r61sEz+w6mU#wxQ0"ɷ`G;4eea\+žPx'1##j MBЅ.zїQ\1U5\[~-•4ȶr*D9)Vo ?tWNS:kq[2"FHҹ"xJܶ`w\/Il@Ƹ M뻽zl/c+P㨯0-X㞕:_Ls}Si Oa^VEUs$gxrj׳j{]8F=ΰmxZ37/R{wnv NCgBw>-6|܀>溽J0 7TqK_6$zC$sчKkg 5r̛~HY. `ʞVՔlF}N!ƵNsrKVՍ&4WIa Th%_ 8>>#ܧs޾ :4tG,d&5Ȓ@uPֲ3h|句aAEI~fN23V(9MоsS;Ps6tg Yڔp5b)A.jiM(atjgĒ:r}kk'K ozuKr-R2Oz)`"\-^UDZWKr$EnsݪgYT.$i;kW^Jq9 k ༬zZeyW 5Ľv=hVQ'{{T,ִ y>VqP~ʖYW۫ϠMBo3 pbJfF?JqsP u\SIu$jM?eH˛kG&B^:活ǖSRpuwlYHo~ {|^#Ih>rQ,?50"ҸmMx+fҖ*Ҹ <כac*S]=|yFQsV{GJb( XeQc Ҹ%vDݗEC2}j& ֡2P9_Qcr{ nYONbsֳ\8}>Cר5B|cˬ捜 ׂ9;a(|?*A=+I!jbSS:>tPFMt9; TOrwmR~& CrwzLw >vnyd;#3]I{bo!\}Ns%"-V]͆Xv@3+.eKTeO@+u9Pn-1=³c[;Af+hRQ7ZRb`/n,02 zg=A(Tu=/C2̨^1m{,g{ΤSfnu <eW1byQ*?5`qQƻW)J!5I9R})Q5Rh4c JS^=i'=iy掘ւh1~tCh”x2D.:Imdc{hv2sޡk TߝnsLd =}96U$Ж[N+]H؉xRś*dTKdz ۀիNqҩ,t8 Cv䁽?B#,dzbt~a mZĝr\ߩҼ3*08< {.k8XsK(ks]tabFOI:]-bW#1-$'SRKCֳnu<._GWivxZh>Ƽ.%26V͓P pMx{*0(9rO54ۉm,>.FʼY`jTz&^g+.ٮO`Wj1S(UqF*kdS/Up̢jhm\{`S,=+_-;g/Í.NZm3ѥN( @A` '"Xjd*+\]?yGf_M>Һ:Pv52#A8mѩiu=擡ZՍ5=" HIwg 5ө*#MO)RqrTUHͭR p]AIHؘ кDm% Nĉ2O^1\E4PE^=!I8)E٣qN6/Ka>9=+ 3,?u+~'k:-[f': k]6u >Y 1،uOI,]Cg)hlLDRxfB ,+Ԯ$E\[VjnMDE۞UUu]n.5/{<¦ xψV|b8A'8Vrӎoa'k;[dV,q,w$KNjK3\SN5V&.>Q4`STQs AR;bs/8i:PsJqA<ڀA&HjwR=>go$RǽP^@}{{v uKތ hiGLPsFNi4Z?J3Gh5NPry:̍҇ ̆Cҙ;,ՙ}*˃&D8nwSNL͸!$Y.NZ#bxB&zWed=*F\nbIɩ_6A flJ9yH$yJ˰SUDvb Dx"Sc*L(W+ |M俲f{՘|8[&@t$О2VZn}֭on {9⢚q(֩-IJ#ǽXXJe$!j"ވ\lMpk0@#5Ջu?wFMʗl=_HH3(9VkOݮ+tT֘L=;Eb*ǑA fin{CU>fI֨&-+- \G|*(zzVMsbA$׏\wMlT8ksF J#' }6YFy.[kTF>Y#• cVZ•3z4R\?@R#'qQ5'o͊iq+ݡE[TyUy ̋>D2=ɦu:J? >{۽v)clc5ڃ>tOZum,)5GklHz9{ٸ,3)K#yrsV̩f=s^|6C5@mHgkMZa(x_ϭvҥVKDs?<' %[۽̌z(sWi귷uF9xn[o'kKzT{5gLCzCD*U: S=(=G@1_ ކPC8ރ+B+Xے=kh)yx9EMnwR2{gp6W. r5~l}V AkףUUWJ'u8( (y3 .: tIؠ0.h33izv'TvC\̚Ŀw"W"@Mʃ]`)JNQHӅ$jgRMs~.gK?FvI?ˑ渱5Bڅ)UGfONɋNy=쵲#^߲}~EέGvBQld]OAL[Ll `1xZrdp:QO ﱿ%#xb+f ? ѷrǧjőtP]v},Nx?tJ^bC\(N:2X^)jYЌpEO{dž՝H`hC{)q96ΌzPF(w@?;RNZZ@ G>m)zKAPwPM!QOfC[X l` I*&싾@ Ҳ[hf5~CXt'Bu9z|m{{f ɯCӭ`WYilugKǩd ;qKDz掜gfO҂}#Rh;z9#@r RWuZŤmC֭La?/ L֡F1aE-N-pɚNiudbI8}j^9첌\U;%h׻fw8$=\czB$bg{[;HV?&1djH-/#nI沱Ԫ9N0Vva,(r+أmqĨ,2yhykbD3VdlW K4P~ qQJ@68FNzU w4TU٧/ӁU\n4TR8*yV_ @[ֵ.\y5VNxUK&7[0WM1Pۭ**|un%FP:dbPzP0Mќ )Iڎ\h4>Tq(F~h{{Q~`IQPdO=*R7~5rc?#$VLZVbJAck -ʾQ`!@sLӂƴRG{W\Q Gqu<>McO>`⁂;?hJN?Kހ!B \0踫2)=]|)6@;B4qS4ȅLEc(vt'o"1XlV -G@+%E7yˤJy06Ҝq:J#6EWlj]"\2OJ&ȉyYIsiZznbe0r{6fi7J*a{N8 vS^q'z(=hQߓHϠsG\QG\Rh4v@֊Lq(ǽ 'J\~uG֎h=yZ1AMQ(ڃҀ`9)NMVGֱOJԹf{S#XUQE$8QԳ[$8gԾʢ•F?*\{s֏3 F=*L/>`dt:~T}i1H;A=)zǽqގ@F Qh~Ʀ8@ʼnP ;/?:/$#>΂:A4T2FI<ڥA@ʍIL3aՓCԮklv@GZNPh Qh>h!ǹڐ~c/h4u(1?t{c4A@ QIϦh<␜Q/NhgK3@sFy49&ޕA=~;Ri2yN9Rfvi3K_?8qϵ7qJO4{Rh^֝4!J~{~433 4Q&}4#J>((gJOz\i2qϭhc}):>!?1?xPOL~(h'3ϵ)h)3JNEHxO4qjp~&xZ:(?uG({1?.GI4u旰mE)<@PK!0C)word/theme/theme1.xmlYKoGWwŎ -Pqwf UpT*z(Ro=Tm@~T- zcTߏ/^3tDA}۞22J >5( 6CNd tY9?C K-j>^eb bj mg>9]NNkl^-Sn ~},t)cZ{ʳʆ;faKvi (6NP6l.t-e|zPh2Z@x) Cή8ߘ& U)eWFe;\`Md}up<kxN˅%- I_TS 1x㋧ɽ''~9+8 TϿWn,~ Te೯ѳo>2Oc"urx 9x=~ib' %Nq*'ѱpmb{^߱>XQj[=Y MWI.eG.ٝv)4-mhD,5$! =>"AvR˯{\B)jctIl]1eRmfjsbKl$Tf.Yn NqkXE.%'·.D:$n@tKݫz3{lHȅ9/#w8uLH E1ʩ+D!8Y[X~umߤ,AXJp'la^1M^ָΝI8 ٷݝl;r|^o.w]F:G[*Ѕ҈=# BPZ%/ZWr4[SPpbQ4DBS d_vY-ye>S+9 Guk=MI=ϝ1u',m^x0ѯ*Kөڬc-7W~զpMA 7>oD eK1 @l1Yec,9g ]rqo|dGWWKRȘ?Y|pdh̔4p)L>DCPK!r word/settings.xmlVr6}LA"ibN.TkdB@P6(Y߻ Sv܌L+R?2:8` 敨 ͂/p AFTp< NX1PpuƪY7Ffá!}!$nbU F`RJiD8܈Y(u.BF*%kT-q[q SAp'R{ozp~TāQw7{~xKz@*QaA 9z}+0#w:|$/hJZ莔 ']nv\(TR`%3kW!I* p:C mak)u$(Fb@O/q65ޢ{TFHP: {D-\BoK0KNthI4 )ڡ1٠lDm"o|kಉ^}œ(^C1缾m!эOd0?O12 <ufM5pg YU(L,#ILW!z.!2'!'Gte2>)bXlZR=,xah9R4ð4Ca^J4E ɶ^%NΒpsG,5s5xP9fh9N9]/%F5AO~hHUaل7Hʖ.&fn5|ݥ%8,i1wA-C/KL.{Yei/y٨lle{K;|+(G\߉G{$]8  ?51CGh[yM|k1,{A~2;ֿŮC+ ~&N"a<Bahs ]Al1d`eʕMm?`--x2IbyhMt^/oPK![m word/webSettings.xmlJ1;,Y-T>@ζL&̤kH/I23; X֌ yZj|pm*).-]قl7=,)*IYků )Cǎ]ђWnfW"Pv\Wf) u]pK~ʮ2D):dSx<>=t!3 ue'Q>w'@ܯ[D@'3S̀r >`N| v1RpPK!`docProps/core.xml (|]K0C}s6]ъ]Hκ`$ۿ7.'{d]][0V6*G$Q7B2Go2EuL V5 r*:十gh0N "z*A9IDbBr5\Y9۶Iozz[ fLIWOsPv<\vSu+q`-/nXῖ.Vv;1q '@O%ILnxNHAftgWY X 8 Ӕ$@?PK!Ѵ sword/styles.xmlĝMs8[5Δ8kƉ'r&g$IBÏ_HI`dR? IQ$~,22bA,X,S~1xۯyee\e/W'y|PGղ$Bn/\ ;e.MM?l |%"1F7bppr;-fl{vg.=MŽlo|U=^l2 /X(L;lZp\J[ ӓo^Vn+ 9]>,' 6~{ȄT_ c[E<>Ey=zLBYӑI8n^BMKn܄j%9 m#LQ[{,| [5tV UCo[52eC"KeD 8܈8̆8888q1HS+ d?td{;w1}w?܏{j)EoM,RY/i,U,SAg$;If@ܛ2zw ]rLŬT=ݷ`5dxLBTz$Y r'Ou_d@rfkYfkp K:<% \Qu\8/zvwɣ_͓̦eL7K .dC(2Is=6<6<%L#8%gxDD&Q)a`T2F*@oX_ӱ`S*HDWy,UUUU~ tt Is@1NgU9-VͶ%*)O۲h*ePnqw3;"7c'7܈6}?>c&MEtRV7.8uN-Ҝ6f8vn܈yr#:DpԔt܈Γ7[xl}f+Hz܈7mT@J@{RFQ!mT } )>FQ!mT@"FQ=p/B ڨ6*Dj֋= qF>FB ڨ6*D hBڨ2*2* hBڨխF8xBQ!mT@"FQ!mT@{RFQ!mTsQa<Ψ0ǨcTHA"FQ!mT@"PF^FQ!mThk#YO7_;;FvG-{fuJʧCSotI,9EnsW"P>^c{R}/f G]#9#AwԖv$Xu;v$8 MƗ/nf#mV ᶙ 6[ǁ;ЖMhKKr:*U=7nJO'/V؍ +QԐ%5K QRCpbJ X'g7Kj(? +5$`=N-5DI wX!+5$`/_jU2ZjHJ X!Kj6Y Q [E; [ hj"xVKPjM語UF7֍B+FI7W-9UKR㪥VqՒ[j\$5ZjrvUKR㪥VqՒ[j\$5ZjW-5IKZUKnqRԸjIj\$5ZrJZUKR%ԸjIj\$5ZjW-9UKR㪥VyLmI>\. n놙 "]zP= GR՛M U&6U[aI_A]c~uaO`zHחBm\lwF1TsuN]=TC?wiF/By߳rḩEh47g|f& '`ٙe0xW__vvCpSiw6M}ﲹwK5W#T+_.nkٓB߿9;}QpV/x\&L|ڇcF~,^z]y&,sfΡnS.XK%_&&RHj^/PK!w,Yword/fontTable.xmln0'"ߗ8?*T--.ڋ=1ۑmvI}'%߱t\^=[0m}0j嬏GK$J>Z1].{x_}[|И bj*e҂Xx3_u^P%Rb'ܮ*l).*8e6k&ٺ-Oq[*=M8Hr?A#VFE):ʬ`{;43w>Τd|34({˞$ CY!%R@mA>!&\ݿ|DL8#"xڪfɍ )4 k*/>LpaJ9Ѿ)н+u SSh=|vk~NgKIۦA٘@B]*')% 2/Hezƫ#bc{[U{ʉ\0=);F5:idU|3HwR/4&1t\@,9nZq2-|"<"xSД$oY<=m߫ualU1+ϖPS˦"LntpOu=lnG:\=ؐW͎ O>9.LB'S;5D>+( ~PK!$docProps/app.xml (Sn0 ?7JmEŐba[mϜL'dIؠ׏vOIUGL\TMh߯}꣨2okq,7jBDs>Ł(=gڐ: i/CZ7EӪ.: IPu pPHBǐ@mN/JN{YB-UwѪWrZSts%T}~1` ^L 8u .uPF[iuDC!U.E2fOb(H]̔tmɱ{8-beaOz/7他F0= V'vw ]#7e/^zx a\P;bG2-? "gs߉P?gs :xƟGPK-!ddS[Content_Types].xmlPK-!N _rels/.relsPK-!Dword/_rels/document.xml.relsPK-!nR  word/document.xmlPK- !-yYY word/media/image1.jpgPK-!0C)gword/theme/theme1.xmlPK-!r mword/settings.xmlPK-![m qword/webSettings.xmlPK-!`sdocProps/core.xmlPK-!Ѵ suword/styles.xmlPK-!w,Y|word/fontTable.xmlPK-!$2docProps/app.xmlPK 5pandoc-3.1.3/test/docx/image_no_embed.native0000644000000000000000000000044307346545000017212 0ustar0000000000000000[Para [Str "An",Space,Str "image:"] ,Para [Image ("",[],[("width","6.5in"),("height","5.508333333333334in")]) [Str "He",Space,Str "realizes",Space,Str "he's",Space,Str "making",Space,Str "the",Space,Str "file-size",Space,Str "too",Space,Str "big."] ("media/image1.jpg","An unhappy fish.")]] pandoc-3.1.3/test/docx/image_no_embed_writer.native0000644000000000000000000000046207346545000020607 0ustar0000000000000000[Para [Str "An",Space,Str "image:"] ,Para [Image ("",[],[("width","0.4166666666666667in"),("height","0.4166666666666667in")]) [Str "He",Space,Str "realizes",Space,Str "he's",Space,Str "making",Space,Str "the",Space,Str "file-size",Space,Str "too",Space,Str "big."] ("media/rId25.jpg","An unhappy fish.")]] pandoc-3.1.3/test/docx/image_vml.docx0000644000000000000000000005600707346545000015716 0ustar0000000000000000PK95F _rels/.relsMKA Cl+"Bo"3iA PǼymNAêiAq0Ѻ0jx=/`/W>J\*ބaIL41q!fOR8w/+PKB~PK95Fword/footer1.xmlTr0}W0kf:JpMu2i2Ъ88{vSVX'Ad>+H&tɿ!5WEI‘凋5h3lfjE]ʂ :M#+1aK"F4#5`;ծi j tQg їZiȶ}/S_Llm,T9?NzG4xsLQʧ\'#Yɛwkz$?"4Xᕏ&%(=A ⷽHR f+׭>9o-("۔=Yp@tSFV2+*T >+1EF`a& b|@mPƖ糅6ʼn&e8X^̊ϯ ߱#VjYS4r|g$a(awل)n`IDh^O~QR[@?h+M 3+Z SS/8g(=OxKKtT꫖lzX>? {?ev,XS7r8a(FNHCzyp2LEpJH'$q _PPK5]PK95Fword/header1.xmlRMo WD=LSԴU;N>~"Al T킅{fv5ArQA}_/oE8ha=}KE"{|ͪNr"dbuF 3>P I 'Cr2+L١QQ2V7/j_ J38;:iUfYΕqnIN,o lxsm$gAR%F}i{r9+iE&7)k՞*3PKSPK95Fword/media/image4.jpegg@Y׾.b%*ȭ, ""( B% ,,b%@5e RBbIAz&x?}!frι~fگ-\`Vi'`?k k׮Ymǟ~M:l޺yӦ-;l߶}t vضSomYΚ׮ݸMgζχ Wu꭫08 juZ6 êիXuؚkzzǕS=Ǯ޾;w69hz+k'N:|ܥ^>~׮wn<6GSӞ=/UXW߼#7465w|=08gsg<9X"v^GBvf5۵ꇻoغf_X%Z{){a1Oal6}73/a׮qOWA[I[Di"|s=<W2gFYۓ&9=_13/%+$ǣH:IDb▥›wDQ:"] t!7 t@-Z Khs kp46Ι/KfoÄ5.BZ)04 osy?1+N.L}LbTwkavcTMw?%\s7V\q[ͱ_Gn(+%u&&x}_ەgdMhaي+2EOcޒ4 ]JՓa_\S0C2CS2U~51Q DHW]*޲햙qdXurL^N3a92MC'Z|b.n9+t쏌ύja@:uwzrS{M[U Ԣ`DE9VjaI^ڐ- -ѐ<ϋV [ FP̮㿷υXKg.kq_lsZ1/ΰ 4߆qqc$< |Xnպ pPWjE|}{:ͥ?dH3(: &mJ> !07_5&gϣ細 Y ќ}AE=wfg/8ȉX%9tur9/:L7~>f լ WW֕yZ5? ?pkaIM!)4#.kO$E^9mIXF372Q!K#.易^sX<5u'۠h`䗎Yd'aLV3z7dd׶qê&1ͬ`OB烸Jm>bؕw\s=I\{t8KMWJ1a& `eIr}fg uE*h롙M4<${cͧ0l{h~ Ȁ499# \B؏JEtBwMϗ }ʯE+N%x8+9f|0Ls+Hs !sGg |fWd)~ Dm>/:ѤkpEg!t>bJb$9b^u=grRMyaI^Ϥ6&IY ^P\[n~AltΜ.ooH~c30EөY҃RӴA+uGL&pNkxxKߥ؀ jsu5vUJGK;y!$ :L5N $׾^ޤ'B|SВ=mіP5"(*.F|) WqF߾~`aq1r}isU de+uTOyt=BC\ڳnRAú[) :{ o""Ek8MQmO 1*)y͢tk:AfraIZYy2\j:,IL ;_2uL5 B00?az6gdY $M1rE:OzuMuωk̛u>X~\֝gj[|WtxZzz12:I Dڊt}MDvo!*5%ћ @5uGktOvSKs5OFڕfSݥ!-LBbStY,7N넸U؟ >}?baO§^wxeu as[J',/FS3S/38Xw/;'6[ ?3t*nSuŘ'KB%]h;9_Zqq+ b%49|wɉGE\Mi[<8PY0cp;2=`{ 0% 1Eْ0ɤ1@W(Ib7ճ6[)#t~u`Hc΄e{2S~95}3ү#"%:RO=ك]圈h;MecJF*lG ÖWf_}Ggp)ғeEMY# 膜TNqD;ˡb$=M/Q3Wͷg_!{ɵ0aon]|7rq88tMŒ5%Ed5'c8#tx *\Z۫fȒEq}GO3fUv /n"U+88M&GbKRL/ݐ5rQe?] }GRN/BGP#g4(_Za8{-%aSSayPأA;4<'&xKhSIڞK):ooW-G=-.EB;?Y6IiIq4$}f?a?ـ\$-_"V0 ׳KoJČ}nQz͊}s"G-+No{׈w69ˉ޽T5<y_{F$k*yXa*bTsMx݀I縟Is _ G;##W'n^ʉx Kmς~57C`@7 QtBJIXN^C9%q\7VE,M/{}qYOoA>L5ļ1mD[f<8>I+ܞAJ0ע3 ~Ws%2|{As=%Z}zX/ڲ) Ux7ι e8^u0a?LYݘt3O'J{iRHY`xb!I/f !xHpCxgu"m~C3E}J>-㞱KU`̰[cb.ZpVqm[Zw7Y0ڴjvWvj め4!<†Ubz/n?ZbCGBfQjq!1i}a?97}TrŹRﳣ}?ק|N6{Q>ar$h;T7h1GDCYV)F"@{sH W NIA&jFc˂#{v釪Ґ -l;s;%xe>RE!'zKk?pW};0R҄%U|L|ޜ@YBeMƷiaU͍x.p Zܯ{x/I iVA+?+Bs Z|yj} ȋΩ+A#< V$&}%n$Tx̛vfN5hJ% /wOCO%kg3,[|vzt¢^Bq1?HtW^XoeߚG$EƴDŽr;h9EEohI_mq?ZG<>\b)]2+,J8LSp,l*]I0|gy,.HJm/ρɃ<6$JE_0dѫr)m6,,,bѺy>K#xm`x(aY ,lp(Bevkp BM~Gџ؇~veZ-E:)S_ox1 -PeyKeo9.^>jnDur6<<ƖeRSC# \wZ3SA6-,Yk/b9`5jԠbA{]2 7oYH"DL)xB EeyK BBIqy,9F7-^OQ%25UOeX$>l(fcς\u nMrګ|2\d/YSw88Rh]T߯Z= ~$<=Tb<R`R [p%nqjƿ;/.fC"% >_7h :2y`م s-Hc8gUhmo-?*U?1 joծ F3HhOFqशY٠(@s;v"c4 kzY9CmlT BDخLۀlpu+s䚉icOAzD2oUմa`+Jh_6M0`olsj__/nɌ)zdjvU;qꀿJER`W׹h //6hey+y1cr4D jԟES"oa8 SJ=٤8|{wV1>7ԀH#W¤nApuH )Eb".kr4E&Cx`)⽟ ԛ@sY19 'B}+1S`=c)LMCR$!e\M9A7"֎Z6plsYTpĆ Tɿ0i;UT4rB/@q`+G9 1n2!K+$ Bѻ`unʨ\'UQ{~jӲZ 3#kEh'Sxo_\UMR`* N"j,' cˆƹS}5F=7 @bv5S>:nќ:Ţ,7mUL, U7KPꜱyob# ~v{:[ S l4DU;R 2R +i>rۘ_9:BT؈@+b@*O橦^+c{M&u5Qoo%=gMM{ب'㽾89}-pm SoX#haWG.I? >! 0"/53)'n^T%d旔ٲKy}Yf ޿)Z1RYk Tx*'4E GN <ߊK%māId\;ݦ>|cFf*z^K\3!fB_#B+gcoLaz^\j0%mOJzpm49 Qh>ٙ*pQڲS]*t[ iRfFi=C0^\=W_턏6x6"a^ & jtR6-R!$Uٜl[Wr^0%|j|u I aF .zy&E%SPj:O]۱X0`@6u=SUxkb@(~'r53@1ARnrIjA(qKwˣ;Uһ枮'v\gK UӦWRoeCm]G,E*fzvW]pFL"[4壅AyxgQ3z %7W}0 v }U?/zhGX23"st-߬|$Ö#S{8fyc/y ը(PʲF|JI?Xfr |LJvlXu@H0XA#D];R[Ӵ"`I+r6ypFxSSH.(}V;+$yl*+XZň*<ܒصV57gCgot5{@NٛȀ,\ٝk67C,ĴouNݔ=[Q| fU =f4S!52':LW=?Zt aH[\Wq?tv>aN]?ۢ"[PƗ h [jPxgL7Δ$j8)&SԣL'eZX֮b2>T"}Y¼GZЃqv;熚*IwZ4!|`NԞ,t\ i #s  _#Q5ܑ}uAj%*owșΪ=2'M/{>ܠYnodvҮ8g.ŝn:>*RċUggBQG೻SA r#-X[qɹ^bHaW7W[U46!<^*Bf{2{cǸB.D:!(;GSKh.WCp)b<10yd}iP(0{96" ]5ȟGچ)Ⱦ]I4ñQRB" z_O.@*NLD 2쒻xҦ~R< U (hrPmjI2h7}d(h-dFGh1lL!@ +;~2o}#9SRz=٦!q%9y<.oN6Ab@˗}~ >ۈmf!v)xc$*ge8w3^}?Y;zwqNy&lidWR*=w;úV^9Pyp םciGk7,t> N>߫S?7)oPZڟ4>P7Ǐ)ry }:jzT3Nl)ϗFN=OY>1cqiE∌:H+umR0{0Y#`)/O;rXo0%OO6/O3IB$jR;d4T'1MTݩU!2v vIOӦ9| Q 4h F<փՍ?Oå`rC.}ŐY)*Ҷ}7kr])aFeu.H~CxD^Zy?BB} X(ۃʇzP"8Fsͬ偿k(jgylk7]޾HJ?;\?~Aoqڬ-"eqjm2`9(@B'ט B2% m ::'ta崯^B7 p*I-5-\- W٪H<Ίڤ:>X!r\m ۿ7M@(Jf ,E ALD, a$b l=v6qro<{VAKK#Bh[۠fd] :7A"Ȣ׹ کMk v .K{*Y#$t׿P6 SFr'\߉+ES>Jb1=3lKX0g?iYбIc>Tꕔ9Dž̴wF٥>t[Y]|#aRU;d1XH;Ef8% eP/ܳqDf w!6`3 Q8zsʞ |$G[ZA<%'p;^ (~ќW߭$ =ZZ>2xth:NC΀Gre*>ܵ9L ؛-G|eFc tPЅ^m)CW#E6 !p-QΌ[΂ᜓxT#y|'p$!8wD4%EX E,K}T@ p;GkHعܼ݉n:h/LE腹at^Gj-HA,R do<9*\"n*~_ cFCnzH΂?ፊt-,JKCS;vc!w,0y&0YN:7 tuh}%&cz(B\WrqhGd0ݻNIxD>!ou*5J\8!^ N32]n-FZV$o=yjnP@裂=Z jX JC遡 B:~dy3Ho"b=>P b5)[УkU$Pхdwldz9y*&)I#F:Sqvݎ -CMJh/5I;̮Izm˳ăK.^Yʖ.h!Z؜ɇ細giD̕ T- eUQP 41*yۯɁZ>rVţ5v #x ^UzoI8jR="t!l(H²f]Kv96=ufkiD>I33&{Qe+iYM-Us-{/'ZAdaaĖц) oG4E< /Х4S|lL0SA$FkuhY=/Nha*m-#$OZCX"'tr2xS܈%FFu!QZ^k$I0R۔Ars\zTayQav~,CfY>֟[=C,y8A0 @-,6t^ݗ}B { p Dq> (٠ZZwVPmKMO杙}suG&1JvQ-)SC]¾:Y+^MfД@kMwUKRaǎ,Memӵ˺`!$7j_@%zC :eY D@J`'wJGbԵWNb~/9pq9`_6n9Z{=Z$ 4+^[ʾ:5kK *FiXf&R&-V eJAHOMߠ$Kһ1ӵYhUh0 3(pĹR4U+m n{ Q.KpMZMM2K.ň=Y47j+u  >T3{9B ľ>u֎PKj\q79PK95Fword/theme/theme1.xmlYMD+F;ͮ6٤vnZĞӌ=d(q@@VR~BIƛ6KQxwW !)Oږsf!.1Zӎ1M,[ d,Dlg%96;ُ.r~4  nZ]?t%A0t" qigο^_znϙRg [NgS˼5V~x|cwZݮW-v7KMAx s9d5#,([ˮ>Qr- .V4AjPP kw-_.meMU(P ȫ?z?xvdPz=ۗ4㥎O 3P_=ٓ_ m:|@c"Mry 8 TNB=U7aC#W'* Dbx=+]Y M3Y&Ih.&:nC&)25F$Db Kiů\Bw)`jtɀ!.Sovg&;䰊DZQc3yȤTK )M4Ĵu ]6H؄9ב;|܍puIc?cHQ2*!8Y;mFLDٷ+8iQݎo3T '*ɦ"od@o[rWv[m}(+'e@M!,A"'i .8F"'ʒu(Q%$=ov4V<(p&_R+q̈́9pMig*ּ ՀpvwB4d f$^0C$#2FZ&mf .]!;(Ֆd/#K+tZyuB>N(S'Y-_OlNKTHeTPfMup>zZ4Z}2d4"ZXDqGh&bn]̨*-Ze|?SVfi˞b_JS^?4qx)Y,G*Ѕ҈}C. BPJe3]o<&FjHPt*0suƨ3sueZ!azfݤtD;4T]ðO>`!=,jM_{l g|׽)>P -߇D /oAf\!hy+}lktW%jk|;pP0%Iٝ_|PK(>PK95Fword/styles.xml\[s8~_A|T3L&I<ˠL0xn'WIJbwY~e?pB8Z̑#/i9pa>2H"qWLF|χ$} 11xX6i8opD=c4>ĉKbB߆c4- 'Z{GS>&wIxAP`DK6W`D+JG`K-[Eh̪&Ы?PdEe!e8 _h|b?ep˫ㆇB(y-QJ-Θ>~:srdx| |3&_}'ʿ%ArX7Z3#ۋw) zY=Z!"+Z'jU\r&:o D̀׷S{-}C`1 C܋`1}C܏`1} C`1}>ًCx`%%)Am~t04Bm >u'?y"olj_ࢀ⇬yA =s7P ٽf\]a+`?(8PPQ$ %Xp6 7qy 7} ^+5JqDю-e@pT $̉ Ֆ%%x,&K7Py E#oai{o-@*{ 4T@4 K%`@*xC}7TP4 KCT o0 x H%ރFh7JT  */`(RCo0, R7JT o0 xCI DCT oXPw4 "o0 o0,x H%`@*R7T@4 K%`@*x٤/`(RCo0, R7JT o0 xCI DCT ovdrؐnUwaP@j4~ mȅ8~6${8 ζ̼WE+ .ՍSx\$?}w>/O١:AQ/䏼e'v\;g=g<~|XQGad%}yQSi/nbKoXǴh}9L)ƩUseQ͌<]izf&a=*VF-أOꪬ%lxXt uZvxRS͏0J<ڋ ?&?WLe^֓'%6<%d涒2q[ir"b6z$!7(8,'e5u.|ـ|LVܞ|C0UtrR@&7i%oғ`Vvnp_h*|qE8QvƱx{\zѕ1 Io!r dbG`u# Ԝ-,a }:pB[:EakYF^©C#S};q~-HDwEl0c3ɌÌ.Ḙ ̅{&. \Hhkpbr&.&Vźh/h&3(55G\hj]8뜼8N]5y-5w GWcQOjnNlt8l^^:N}M9[zlDD)q;ec9Hci8#yC@sBd{1&S4'XN )Sܱ13Icf=\b⼿?xF 틡lB˔%Z Ēn9khzҫ-G,mZF.%P[7RqhF>.duUFң-?AK-Dȋ2x߳e5g[mXϏrk:ɴMJZ^ȭn,.m}T+goܣ1e|rWǖΨ{6~<}D4vVٌڧ(amAKBmNw0ہLeo\;A^kXW;V+리Wk[얼DftYNk쳲{Wb1qz(boۤҽ+5,{EI1XobEBԳͥVnj֤}*ȇ&,ךd u9=In1GGFz`'k'^Q; wn~{B6vU|ɎޖX6kZ]e3w:Q204|~ݖX%9q62'>)k/Vӌe,Ԍhd"4Ʊb#tڶ )Y_Qpnm%:Cdz}wW+jGU˜ f39j`\5f\6B@F ǫHA{{hDW`yY_PK@v oPK95Fword/document.xmlVێ6 }W/㝝U ..촯Fjt1$zח -}-")/^~0:;I )ɤN({lOW0+vV6A#FZЃ 5dI(]p-3Եr~yoH<7]/-Z \c̱( ')QGE! F),pJdQ?IJrx~zuZf#=1ݐ%e,Iu>WB@|k^r9l2?L3.Wm\VQG$k)\uvkQF)$]e|4 Th݆ʫc"~wSQ=B-Aβg@U/$ 5ƊB:7hNk7fO/P#m'%L"޽(i7rא/Ss<2r[ˋ!WJF%e]WѠ\Z.\@C)ӈߊdB3nk7"=qY7I@gi#٦^d:eKplab$QWVl;*erƿI6^Ixs:&~_b1x7G,Sv<`κnR3gqI` ok &űzܛ;3] ׍c?-zr)+.6wvuuU_m/rnn2PK0s PK95FdocProps/app.xmlN0E|Edu8DQ*'Ex"cOZ#dOqA*]wyΜlr%EI2Ie-y5"r+vZrH { C@1K@J8HMdS7J*ˆ‚`%ܟ䏸Ztt_|>:փ#tϧI=| s!F6r+]gJpL)u;w-+Ni>EÐJS&eЗ4 ` ;,9G`MDtF|Bv{@1 A9$_^Fګ A \^}b2}`m B_`suJD3$3RY9?Ogmjl,蝤2RP&8Y 8sԅ< ` }Yxt p-Rpzo0e#d@ PKc fPK95F[Content_Types].xmlMO0 U͆BHaqF!q@$t[Z۸Dlq>]6YL1I@s# 4Ooȴ`iBzހb>34F* jjc5r萆AqN Hf̅ AiOܭ " Vr]hCK7XFZ L0Nlpw ]!a^ZMUI(g=-B/=hCXOa|@L79G &_ ɨT8AW٫zE]`L7t2V-ct:AW{Z}D1ę3SmX)@ł rz67;dbw(ݦ/?PK|_PK95F#= _rels/.relsPK95Frv"word/_rels/document.xml.relsPK95FdQ`word/fontTable.xmlPK95FB~word/settings.xmlPK95F5]word/footer1.xmlPK95FS2word/header1.xmlPK95Fj\q79word/media/image4.jpegPK95F(>?@word/theme/theme1.xmlPK95F@v o6Fword/styles.xmlPK95F0s Pword/document.xmlPK95F %5TdocProps/app.xmlPK95Fc fmUdocProps/core.xmlPK95F|_W[Content_Types].xmlPK ?Xpandoc-3.1.3/test/docx/image_vml.native0000644000000000000000000000030507346545000016235 0ustar0000000000000000[Header 1 ("vml-image",[],[]) [Strong [Str "VML",Space,Str "Image"]] ,Para [Str "It",Space,Str "should",Space,Str "follow",Space,Str "below:"] ,Para [Image ("",[],[]) [] ("media/image4.jpeg","")]] pandoc-3.1.3/test/docx/image_vml_as_object.docx0000644000000000000000000022072707346545000017731 0ustar0000000000000000PK!A6}[Content_Types].xml (n0EUb袪*>-R{Vm}DŽFmT`əM6Ze5 )ɰ BEI>f/=BdF0e d LWAPmBI1J_f V*5x d D01ɃGOP7$u${lRTIsJrLk#Zb'j)}Jƃ =3t$ွ /Kٔ4vѵ WqN[UCOn[!-kUͤ?aVzi{!B*'h|!F\`܋(~T;csh{!".hÓ9v6"s ?I|_]'i% t_PK!N _rels/.rels (j0 @ѽQN/c[ILj<]aGӓzsFu]U ^[x1xp f#I)ʃY*D i")c$qU~31jH[{=E~ f?3-޲]Tꓸ2j),l0/%b zʼn, /|f\Z?6!Y_o]APK!Lword/_rels/document.xml.rels (QO0MKYWP4 1(tݨ[PxOst2Uʚ8!a2eJޖ{FH̦Wpj(E15pRX+i'/dL]ۃLO kU+15nZ\o:boRĸO[s7oQI g>{WY Kc%>Im(5H"AndOyZ4PK!Ma word/document.xmlWYs6~L}EBuN\ϤcM)D$.RGN3$ǷbК*O܋Dy&r4xb mI%8MxIr55Ffi4F&a%,SB2Q(XFÍPy؏p侤]&:hOфP51TeXjKb؂U;u0" œbUICPϱU8 ^2yעsفĺ:×Z q?Ju=GȈk<DžS'5a`Bs\@|Yrnh 햯XdV9s$N`%%,*R Ȗup g!}KIcG8H״ Me>̏Hd* 2kRMrZ1N2a;LTBu4eG%-Jy 0DbfXMJX1}6{Ch$,დBx#~#[d|/= \Y8塚N]ȹMk3N1hmE#ߵx[Dmv"[D]& hJGQ{H$ZBHUz] 4gY\?-UK]Xo[qmPeNTDoDȦ^bI;Xr8i.|{Ih!| h0x NY4(>cye9ieN7zFsN!< ,njP*V."9ȕ[ЖV("DBk3%ZW̪zq}2^򢷆 e 5P^-1iT+P^n5 khׯׂb Ȉ+VxDՕۧbZK] NM@ <›rV݁[J*"p A:o ZSh;KyWϟNzɃ_,VW`:֭^~ſ?<壯x?~:Oz7# Pqp 4 ,cuN:06Zp]dF62a^5l*x5N .KuNW(Lӱ}p6q7!<?m.4or8F) Y`lur:]!Cc5-Def#(mf6RbsC&R Hl.1xNLaBtތF#BA?BlA{w,1LrR#{ a2ric?rBp + j.Ӎ龍-LmK jAW<"ەu)/}ls);jU7V;,_{p@rXtҽi?`/5Z]⋫rl0!{bFWlTexLIJ8Tex/9LE0sc&A5[}gd(oT'SiŲ]/E \zHV69Sr-EN}IF ņeUNo*t*I) eF% `XD3L[(|+-($O]s*/hPLWge${Q֡$;5yR Vtj]кMě`ڲդvmtFijWګ :+W~O^WDpEgQ9WZ˱S=xAJn疚~V~+n[/"c _/Iq;ҤL=Jxߓ~,#s^jnԪu%mZA[ՃFo fkp ujW7KJoJ ZxNuc-g^|UPK!@(0word/media/image1.emf=|TE{I_.v{\KBB %H 7%4Ei"RTR"D^>PD峠""gv%# ABvgvwvvgv޻!  `\HKGȇxfg""s u,ZФ2Ϝ(c:FFR> x^D\!04Ɇg7Xiz 2w׋[nzBː'|KZz ~m?mKqy j`&m )3#c_Y=*=FCX@+Z!зtCm7+ dzbua1CٻG!1Pz(C^d}?&k|գF9 ʉH$mnnn!H0c0JِBHNȋF^ʜ {8?z^棜|AO/y(x00Y(< pf?Gݲ~n!l:I5 L =F:3zUP[VFLS'8I؜=!M\+&NLo& z餄yӛ5<S=G %H ا{S udRQ(n@XMZcJ)5oCZ&ZC1zڵV>,6,()hI:O꠿n22xݟ8)[s~M{!M|2dzkvCES!dۘK^۫7deNT8 i7-6ָОc?~YY eͧ"䢱40[ ZUYUsi$g9Lt>^޻Wn1+>*&}XӢ5zd:mBa.^M"c\y%e+t͐uJa0vw0{TUW6Pk: q^8z* qӛ^Sܑ6wMMj~@/N׎[Iڌ(I,剼zyg=XQ}A>PYs6=>k$1F$"Eo_LC?egQ.u7~{#@:.?H F {b0M7#.xgVFL=椽=bf.9bo5b{ia.baLa]a򵎻kom]iҵwY^Ni4𯆌e:xM8XQ\ 'gXTO1-4|׳4\>\N'K[>U>J)57; {Nt"EMIm1Ӱ9; 6fwޮw,*03ˎǚU$5 >*&}8!ƽf;ᾫ/c?DI|&)?]OO (xW$YH|Bs~P"WP&k7߇W_7_|{0}8{NfVǿ׫a4ޕ})]i/q Uk+pۛ^ģEp ׿}$zX |s5?ԀL*_ݐLv#֜;9k Ào`'Wroqt H[u]=/9w#p)?ru{~|K_8q|!`/( _S$2o/FeٶF a5s{U~kq#۳h#>o1}=p]Ǹ?X[83cc:"2Ǹ0SDyu=De^e*Mۨ ~Cmt=CZ^ƕO!z<ҰiFN;'4 qaj*b9bTi*ǩb}Haxs 5:_ZN=\CFz[w#8?ͺ:͋\H^=\if]c`ϑGR  7d&O!g=LA)/,Ovtky!:sg:L!'l%E"3d& π1M'߀,%|'27!ziǽ@[VPT$ŐO0ce;fA#$ta {Ј pBQVB^r o?.z3SsszSzɰ!$v7o}@!ٿ4/)#KIJr1~O B^9x{`rhprhu 9z9f$\#ԑ#kG#F#O֓wl <5`,yg=8r ɻGC}f2ywrlTrip=4`9i&9^r_ -ɉ}#=7~%????L>xq!#×녀_^B>za)2^L>zuc'XA>zm9xJU]'J({|Z$~|g{6n }`#\?M>,wf7E>ouדJNFN`7?ON"9u%rۯ/J<_x|yx'9}urɗGv _Czw9 /53O{9 {YGB,HRD"0ֵv%R\P(!ˤbvkCo.FZJcHVjR!JaqDPZ5[;{LvX\UjwqptruŔÐ\\5J,%2%vrZo_?|Fch3#z h\ccBSpPptiJ=z jܽ|B"B{dž C6V*y+z W[98y ):*2<,4$9:j,[/c6>!1I'%%DGFx9;iZ{`ȡO't)I qQ~^ZVVpNJ֥gr|F LK'EGvs "0zRC]&;''ܜ 8$Dy!+%Jo!UjlX1t>+'0>9Crb\TxD 2pT qqvdWP^\ZRYIqQ~aNo.=5).* x: eG<^޻yy>),(/_o~e%E}32S`!> C+ +[o@DxT^/*2j/+.(LI rsD6rX5bq55êV [ @_W[ؘ̌U#Y7~Ԩ5Ճ() D'{ c5v0zl>NgyuMm؆1i=|(0(LMx裡܂!U3a¤Ik9|ʲ> :+؏ @g!fݏCeGԍ7a L0js2@@ᩅ C#}ћ@q+ZoPa5L6uƬٳA~ @~@]k T?U?y3g{I4毷00רtL;g$YΒP!~E)~V-/TXbz 2F~!ƴⲪtEaexR٠dEsJGYS>`legkJYHKm{ZfJG4A=Obן'g$?V#7\ -^E 3ÿv~ěMo3FsrXWcP>T* #>^r-oBWMa;Wwl4ݴ>RHwlm>n:C)I*b|,Gy*o޵#FzT#:u7lX=F96~d50 'I5 B^w`B{ }[i?f`h ɓm)5 ۋ4_31޼oX9WTX81v޼ȅ4Ύs7^SK9ƾ1~Yb4}_Kc'mwcl'88y87ƾ1NNƸ+Kilcư1ɮU4֍k^5,o#&ɷXc#ǘ9ƿ1| _1kycc4ƬO5o즱imcc8c.t,M Ld&ZcZk^*NRYZ4V&s!ƖZLk,l!8XYj2qKM gXX5jT 9ٹ;5rk? N>>>>.N )HXT;xE5mJ-g!XٺxDAӅpەZ+ն K tqtW+ii  &Dbbu1A^.n윈Ъ]<T)->6",8A#Ij['߀]\RԤȘ_'50{3LUٸ‘5LO%aAޮn6';Oȸb>3;(7;+. Dr 쟵&>ee}*K9}RlLp//;nk4AQ陹 ԔW akӥ2_te)0fD,>%Mh/Kj-ݡ{Aa%9UÆUU+N qtWb!uP[6hÇT). trfhĖd`!C.ϯA~A~>NM*ΫW} dtaѾ>?to`bdZ WZTV޷oy~Q)ߓ[k]B"3{e${ +q~az휽zRsr{;7+/%Fy:۪p=utw  MJ32Դhav%\qs HHKէs&ޏՈ(4 Vyd8@4HQ(=0Dy\2` F9ÉeqJoG&A2VcJ딯IUI)+W*ċtzpw6W-Cԝ+8?T!Yi{2+z63ܠWRx'nY=x"ϝ՟_6n1̚׹~u{[tɑP%W?ܟpu粛mۢ4Vڕ ZbکcOجSG+U8JcKN^pW^)HXPX~U|t^B+mPo -_w1 {7{?0RoP&尫/&O2o.I u]U ?'ë4ip)=b" I|k19~U:MLC7>{BLNCZ~v~&~eOoIXCH{@{"^coq\37.aZh"h-  :ŏˉd,1\xEY7>]?Į®_FqSiva2b0ɤX ;jOwʐa@Ve"&毖t.(`>a^8s+Yӹm&?N]7:N>9C?Yu(*$7R~߸m+Sb~ռ _r=Ht!ķO'Ot#?O7rDLs$Hz۬^$}Iba[5®;m@s@X\v],x[p⃏}"6}'ΛkWd@~B0>olI_c_΃ðmKGTI.kˮ=~rD-Ļg9p_q9c/Ge}'nam>J&pV᪋n={wEO7wХo||o˧iWdw3: a k9ɟQ*wvE.<5΍Y|V2+zYn/ 'L.KH\U%'fߕ/' NE m]͒owE.{TO~~턖X mjڱS6ʏَcnýi:%b^(b1llyO`ʷm;ȭ59~O"&eGڙ'q$TM_?9w( 7'jQj#T{Gr#/+W9~ Yp't[ſZmqߕ U*wvE.Uv'xY{m9ڟ/& ,7e\̝GJ@O̝/*17?={O=&b߃ƶٹ[8<?gQt'p't}|Y oʭvݦEw a66([g/g \Ik? {BQP"}vlGnUk{֘.#?Lplƾ/\="lie7a}x(΃+i}/L_G3'PK!AN7word/embeddings/Dessin_Microsoft_Visio_2003-2010111.vsd]xTM-lڦ^H6o6Bz!@ AMEQ O7PJĀ@˳`y<sf&% y}o~νw̝9sfΙsޜT 1d9(Vp8\7; x|?? B0 @8 Dр@, H$ɀ@*A&$ 8d&@Q6@@!P (倡 @%``8``$ 0 0P D@# 0 00p`*0 0000 0000p;`>``'ÿi0P4 941.Y^&sϰ@ח,X{` u9 wI 5chd) Z:זl^L븎#E' ]F>,<7qB/}oA?A 8 0,seD՗N_/$ɷt3 A'֥'W˳7B8+.I ¾j'UXqQgvQ-ɵEqٍPKC_NQ H1 /ue&,(b36&.b58Yu9=3u}z> eGyIGyAE%э:Wj(/tWS [! t4GO>C13}5A~Wj^}yɉBYJff9G9k(%9>auRz6`l M ~X` ߒ!5I˱H miQtZ'~= ʹg g27 ƞRi ߜ:M,"Ѷ`=P5ў[y )SrH.lo[t>Ƣ"rWd1{n٭6 abT"\؟<|悺e5ϣ˷'D-^7-^ęHx|(O~;NQѷh1 #t<| } /s }"[us4Ds4o"-P;~NQlѷ1b÷0жr mO_F);$_2 ICKiw>L@l1D}f{:3QHcLa1c؂f{QEk[֣<іcZ(_ABF[1l֛8! H[1lleeFi[֣ іcZ(SABF[1l֛N~8FcpAnp'54N;ytI*]M`-f},VrVFX̚5Uٮѷ(կص][I3T`r:5,bDc6t+ʇ6 | Sd ow6C ʿZ;W^{^:||9 ڂt2!F_X1<ϵc5\dp~ 9RC)D78 7KElVaYNT;1=^3?D׋Gkr]zqvJ{[/.6ͧɟޭ*qF^/p@Q}$=(CWm(SAB@5"`AY1<bֈ-THq rlH^#LSokýq0]#ƨwƨ79Vmrya:gHidy; i($_ H˯t銮e.N؛o3MΨRmɳ?JK*ڰ NCT|!G:5ߏNawN I(L'ǼXSgbnG$AO=Nqy?z?p'qQ"~$^]ʏ{dJe-':x#$xC|}5f9Ԧ?TZßNvWymD-o1]cy?df ks&\ύΛȟ}6o^5\>5p C< B11o91z0i~o||T@e>u'ǩ_>BenMT?S*VSW?/*s/(s(bTS22eY:WVH.p{Qݻ낈RԽVDuoVBuވW/q{Cݛyu/fyu//T@{86]Fǐ,67֋DMPD3E藠B٣@߂gHk^t)$/1g^V#=2u6i!O4}#;]qJ}X)#0_߸ \XK=\A|Ρ+FrOA|?7 ͦ&͛0TK:|Z=\ eW}6 vO&߂U8PM\_%oMoK?TG<48ǐ# fDrFMG&& cN%Ƕ6ǶF~ly{Lr|,rp>>0>xq;9$BrrB6"%䝧ݧE}fyٻN[|9/"￈X X+/O>x+/%ZO>ܵ|!x==H>zùG{!>zu3xV}>A'ۡ;ȩ;ɩ7 mO?|~r觇^ o%gO8@=Ĭdn!HRD"[wWJWLniiD.-,yV*k!Y KTEWK +Zmkg**uputrvq=)!y8;ۨri'YKd >~4xC^N{[eN[ն.n~A!4b^{J!tVj;o@`p6lPxDDlDDD0mHP?`kwT*{GwO߀AQQ14EGEFc nήvj ~ܱ듒b##´.vycɩ4]JrRB\tTDXHƮ{HXp'%39># Re#i|]hLXnfp]&58''wܜ jH  L(TsdwקY9  5$'EEhW+K:.>2rr ʋKˆB*+)./̥&ECnN C)Or K+W4(HvFfjt!4dhkm=@~/PqsJ**GWUT5rİe9)1a!6V(B;CE$鸬FV3nJ]ݘښCK>=9!:",@%{}PXlLBJfFN^yY刪qco8aBĺQ#U tzA( Z j{=>Ng{m]}IKLjjl8*(LMx{BY%US'<}z%M֌,+ӠBY$0~r+H=ܾr为KgϘlӠ1U#@RX`RON/5f|nx3Ok0eHh@a6@y#v?<*6rt͔ MSg/`ҥϙټP]Q%y 1~_h8t<_;qR,]λZ-=aËQ= ~P_*7??}Ew{;.3cjSC]  ?'^o3,XzǝhoA KW4m Z.0o(ȏO`T?UM:c֜>ۚ 7X?T`:~?& Ϙ9kͷ5M7O|g17Lv 46ҴI> РTUt0 RP:+?iҤɍ S}(H/ W0P?\aa5c7L0~*d/2|: 7]?rl=$MK]PGW;p:r@Ggv3 N Q;-w#a;!FRL7[gs}l')ŻS||sULݽ !Ķx)蓪xU,+MT/"ŏD媟-6>آ:`NƢE5bjE1ͷ)]kQ}9 O;<߀ УP3~;=gSxWl굶4g}6e)#UCO|C>"|X)Qb~byȏ|}6}1~6U7w!ݵ>*',-$AQ)V2iYn{ƲϼƦ11kQcঞU~ԚNe,$62F#٘k-iR xvjJV[jd܇ii/δR&n/) 6r /04F->5).2&$יF ^O7jne 'r23st}I|dxp-Vˡ:/ȸb>3;(7;+.ӆaVr lMCTrؘAޮ4b.zFiS3s+723=* ۘ?.)=|uP]#* St~NJt[RS_^Q5fLUEʼh_'% r+;A1 %eF;vT~nNqIlLC v78&$#UԌ-ϯ}Y} >g_oRq^#FVZ0$;O I/c|#RҢCJȰ(Zf~Lnnvtp %ge/(,,/+.I Vڻx ץd2dpnV^Tbb3*04"6)%3Rb#B Kf2 p6!-UUhğ*jﯽõ/S`!ݟV?yn\~gѽ2Na} /kJˬnTJ/*n1#~[Z޹ka$ꔇbs'| {ۄq-NX] S$7?3\s_Y?x>< tcܲigLEӜD5OqgLF'oA28Wp}H/KRI((f++cw|;o4V!+ԝ+8]! Xd4GW̻}7s^kQ/&3gOI!ϟd$;k37dGٍܼrOˉ?3cO~9^y> 5 kwӘh_bHVhdk5N颌[cMܢ^T`].`,D:+%+%k5?,5&{Xa1K ^1 &o{Wڿ3+LaU_N5/RC> (%ů}F7(Bikz8D1z ~{bo, 7^tZ[O;#؛N_;=ԛL¾~yOoIդK]-~k17{xs3=.a\h%h.Ι{cM-&S[>#Bu>:Җ{w?PM ] x&3J2)dtX^#=2daɠ'=G +Ox,POӱض_liGn{zxj~$7>~C)nſr;>|-m"3[~2ߘ>|*d|*b߾19/9+lIzvyyb8a# ;~jѾPv].{t2rCu"-4'p׾6tF Cxp`yX[J$ۤJlJv౱캪Q(x諞c ׅ2_[ 1sT7VvDv/uLۯ{'4- Yp+=E"/x\VW<2C5A}9/5k[p&7\&UC.3o <F͉3oTs7v^c}Ck?R/m'ik<)"CEaW[ɏM񭦃3\G rt0Kľ\bxǜFHPIE}׼/w׈߳Ls:_uZ-[M_7?㽮{X:wgn Ο2(S}d^>: >,zp˭[w"[Mߚ4]7t֖(Ow/k"5* dI@@m',P@%DV;U hk[`C8kmpnlg0BR ԫsy=wx]߷콪jk^j'sОׇf&c K4|;9%bYt GR,3c@ߓO=ph{(+0}!P|+Jz<Ӷ[zi? lIT΁/ QeIg Ϧ8ܿߥrkHZSвU4?5O=Д ~@D(Fq.y`C; vQ5E).6o;}Yʴa?߁`SJA0&4#?C $IƬKZ`N8ґlhh=|Foӣ16z(Hm{_쇴ߦ'ICdG?a,AFA38d--d >8sF}ݻW@82>>̛7^^^{MUz&S\~N$ART(^%W&@v+kH7k=v>}]-'rF2|Əu&P5I Mc<$Or$~*C5WWD$$_z)d1́H*JYW<4t\xEq;/'d0fWkG&:讫c1EX$_`%M4spW9;tfZHwX%< Lp #s-ui7$ u:p&%ULWzA!%K?;dcܣKXFd%g?<7Fq3$Vbfxx1s*L'AVzEWXzWM5Id%H=a%Z;J: 1-^%.Q֎ nC-]םL-ԨZ_= 8% *0Z„-g]Xk ?HB`ˆ8j#1`PB5=LK V'x6dW2;8RN=b ^ynfSbKTW:[19P1{m,8Da,YRYƄȁBԉsm6s3skeDf:Zպ{|Vji"֖LGq\K%o~nnS&nP\Ժ,)ucuoƾdQ=r9~ \b"bc~9r٦rc^)X9ÔsX!r[α4é6C NSAs*:+cEl4V0Ċ gÞ ǩ>A]fUƊر"XUȚpbE6e";0߾52d3]Ku[h0=ELS#Akdc$t'fI@Z#5_"U5 ԃLKx~8Yl r;s.9NG72* $F+.w*h\ѤxiyF+*SIfr0u&jƪ^1Pr=0j+H ^osR(S #4:cj_4]joŇgwaŀS.Jα截ɢ\" ?WkDKχ)*s((.++2 )e)Lå#Wػ_{W*uΑ+l\>Tji;N[lm/89\9'n$Gt5nYYA+Pt tʳAWQg•3G N,qEfss 9u쌙OE^..}A11Zyyy!S&N&|A.pRL0u5sE%[q9w(5rc%1s.ƬilC&%ASod Y+>`o5 ֆ Y!cywgEŜI ~(Z&*;@6Tul9tpz1;ӈGכ17 KhpŠ3A3 xMS{U'-WpAWoA 02bıbYA8Z||c0uKDuVqL:R)=,Qx<~UZiuтK@qF ;b΋1Mpb@ە.2ؿ,nF\#@H;O"~ReU R37 vEm.17,m>'`))/([)-O(YD+sGBW{}3 3['#RՂ|Ц/c[تU~P襲xGths T>w<,jqdqxECy*j`fzp7͜qE@(m?HřbV 8mqFI]ҭa  cVp&a!l}c~$Svy+eŎy\"ﱮd|sf=s8jO"J+ܲpn}RRFbx2o|mFK-ڷ,jf霢k;>m-%;.Ws&`{4#-P b zn"MmjUJL EcJԱQk0:؞ V?+0~0{0 OaPsu i]+f:nty)F$}2Qk&{rHQRS댱 ֺ~10|i4] {#ٜс蜿Һ \=wxV@(>|Pil6ҥ4T٪Uj*QA8#f &6yn d6G){n }AZyxWќNKhRNXWPe.+jq0)ﱅ`.#PeCF*[4"e#=% $䇦"lwaF4] /*e͵[MsMw^>Q' 2`!Z"# :F]8ϼe%N7%< 5BK`&"HK;n΅IQp}{wwt_tOPf.6@0*MLԈ5C]:~n/EP ^)q&Xr9fvFKA>lilPa.dOF;QiC%OnϘ1`M3d Yzm5 =(SKAA֙˝{M=2Vx )|@Uufu^pA>4cz "uT+MA{,% cb`t$#y@MBp.ħ lVbg̻!"Qh"?,C2L5SU" Ҙ~"H^5 huЫ2@!q%UC=jDKZѦXu7y毺b#thaNŤH*UTjYtp T;2 y4lpSz7K݋Ћˮ,NΨka4>5Hܤ̀ e@U1S-@S-!H朄3 ڡNld ŋ/@"6Hl5>nSd w7vsFOk[ UI 4ހW'A}L4NBpF Tv =E>d`꨾'hD5@ j⊡yHTQKKK wwXdw%r /*mI rf9=E&٫6wx o:n)'Qcch01b=M=K"0oJ>띠b6.fC۔^w_NAd İ ^HBѼBg?w \#nz0gBgyLe}46dGqh! ,zmC+^jtzX'hdYіxThttPdcw?ykSO(it@}-XKmSVW@'Qu^ƁJ,˻9" XÂɆ1'Pb"sSg"I4BgRﰷΆ?Ce])nUϝm} lzy/YścLʦ2&.1(P5hȂ]:~mBIi58ZI[ ЇN,eeG{;{V-d'D6 @)h "K|`PϕdJ\$ Ѥ!]-]稡m ZBPI)F%x~heJ4S&{xmhL `H3ǀ5BKè| LSئE"{j\-1RK@?+Ē;qd%9~cXFI͋A)ô$qf(WT.#itZ!CK( I)y_Oѿ0 FTxn"Dޒ4P$ Xv 5Ac/w,pNm Q⻁LFPXc[,RGwSDž r3'E6^k ~1S,ď ̘_~2g q C>,7cN5vF^&[`a'XXⶐo%,uMI`9u=C|M;! ̙b)O~f5:YDފ##$ 54Ѭ@G㦹 6R;'^LuxAB|m1 |6SkHM yC(CZlE$ ld@X6) `,;'X-d?pHO7Wv|@!: R ]4C4e #.P@v)աnQ$he?Wҧ[ `("i:Hv`%Shkt;_u#Z@!@i\6@20;$q9,DMӀpz Z*!x:JLj UPw_SlZ5Tn޼ă/ !É} x_idteCP.zb@u8=cXu - X39)x(їqhx:b5lV8 /ϤJr1#>lV_pvz2w? ņ\ !8-A&KiL`D. $cTP6:#ˊv(l5j'}fNKGL>|,goMHKr5 X%øƕ`xf{`0̘Z;ktW <:ߤdI Ґ.u]$A[4jJPq0[P?3'?(|%]DBt}.j5͛v8U hp~'K>l=$7P!:#4z5: 93qP6Hvajٽ=sXS'r'._TߙBd X⪀`YEZP(`A4te)V\Ep].*A*ʊA, Hw{{sbF|>BsDb`O"6")*X*<&h >xx^`_-$t@oGZɲ`^?f[|=b6`ݵ0(G1PWVz.!L":IX#oѯ"{/K=⋫QdIFا\ê-KFJ.T I0+&Qf꺩]DCz 7<#^ ڄe",F&c;f*CO ^'ډ6܅ddլ- $g5İc1hDWTlo:F{WDwf@r-K?&*r33F늧1@L6_Zٻ>1;h72)gC$ߘMRd9M7>fR\yV_twn>n4ky"#>z2!;G9blz@xo4>#>~czux^PvTPq`3M{[?.gYI&htw fK,+} i9fF`3l-_-YK7Ԯf\wrd95>‚l(bX K{4BcTQTx:)ö2*Dc|%iO]k%ix:"f)tѿ,rB"g7 2^.n3[2rldj*j7`?Lb@4lWcF#}`0ʈf9aFOim_cM"?>A?&沺+D$8&6\Q1 H2&U(\T1jrh,A`ECSЍZthwUxnEuH<Ԏګ k^OqA$}uDg;]Y8O < aGj : VhС=eП}O'f5~uDa50^;ki2R C0Ҵc]P`/(s \/ FSy#0smC Gc) WF&F>U9WtHNHQ 8^!93pEaU iJX }MEh \tyﮌ4p;;, czPame*r<Xp#Y.9162\&w_~RJX1R*Loc_L,Fi-(ӭCT~qhp^?A0*TM3B\Enlz߉HڏyAYG78G׾lJ|> toGK\NJ D26~=^;3:+k-cW]q@9*ƗcHsc&}G_7!W PU٩muTiU߼B.2Pv$ޭMl/ H?,'Slő^E|]G.ke}Ҡ$$2n}³AYp,8iBWX-e1f]+u4Ϣ8TD otdM $w$Wt=>fuj1 C^em_A|LU2UԗNF}]MDof+9]tIX^( #,[m*BT-F;ow2 6?VMc礧#CBScFmNyEzWOqs"?]t^N&|6s:?IUf XceW姯 1]eraRv(QUob$i[d]Vy!Pòl*\.p- 7;ʅCNx0 ƈQ}= }"v} j"k0./XXTi>vYƿJߡ49:w4g+P7Ps$5(@ $wTotQg+HmKE2p)^,YXD'd\B3@|AW!ȹ;,vaM TCM]ku8PkTE'QrFJ<֔0qsU.S%:46ո<-Tv)3]oOg3Rjd,‹Fnx^5= #<{C^ }>h9F'DOo\rRb;%q婣_8v~bmgQୈg[/[աRHсRaq䨉-VB*%[o wɢ_ʽ~A2ӧ}f 0gr5'˻M,-/MûSbϡRcq5ĵYT*^%?+o<~|FD}y;0*Տ²J`?XB4wjøVwX5<,G*n6k\rKiҧqzCj{_5Gv<{ȯ*[?]0.>eKC;.bP)Qpsq$%iY߭h>f`n=Z~54'$$ZdUkK J|cx 'Ӻ.c_v˪ ;-|*+7ȋ+7\) \IrNgq|U|fv!  τJ3; 1+qWNqEqA>|ɘW/iӡMQk$O،5znj*c0!?}4CP霭4փC & U^ES_9`NxthuJr/rPUtoR _"F_J^fo zFPtfۈ5OG$xQChKw=<60u@8j(A_18rlϳK\(#4]a>.ʈg2˫MH͸T!R3UH{ XtBj qaP!8L7ӨPz;RB~UP 4ISgY!4w |n ΉJT [.^a']Xj&Sk ;~5e%9*ZF0X_0,NɎ멉~zifǙX+q0}UCm)zkrhPGfdǛa)d< hd%\ਯVN2?QV:쫆ALmruD{r;W NtKrЦ"; B{Cs M ؤ5b, RZȝ(,p8I/G"T 0s?a'T)D^qS0_($5r9Ac[}`?AL'Ao70Às%B3Hru0(֞BVOQI l\n<)kx2d{V-O} OU=@b O,#S S8TgU=4t0O_<ПfH)OH2I5ӁgL0NWax6Gg>X\4UnYR=4'WۤhB#|hC%7Mi(I0Kل /48ҟkC?k}xqlF C:RȮj=HU;ې1NV#eT~y(1D2PezU4;C7 c˜ "KMM?G<91`n6|W_o0e'>ù'"MOM=f>~#^sah~SB6!T$A6g,/ ;bw44p9Y*h׶u2Ze*%'#qsB?@uWІ# ܧ#b5SJFaI I ]F{3BCuй W]E0ʡ:U1 дT* 94L t\P]lw bL*~5/B2+26g, p7KZN?z4iBI8Jn)Xi0{!|sLdn0͝=Oe`ڦ0"BR|ĸp?(6BO:  "(j/BYnS Es"l n<M Јy J7 ǝ;aFUppHwU~sjǡF90z=t1bơif l&Z3B`zV 4 F ͯW*\S817|Ԛޯ Hg%1sOms|}b!=aJqDoikH۲|!t\=;UOO<߂ʎ8*0$g2$~hT} 늭b>5{ߏEIE`NۖOCˊJzƮOOf5׻, ;O4 j=I+VU+ofA ;;$]A;S,'7ƽX>S-;J4(zۀΖgsl3f|bHMBbe)e7_q!d=򳿸.(kQW.SZgcׄ +~/y÷ orp0 yZw016 >-Ms: R.8yں m8~LL޷lo<àUI)C͏Ze,\1sH1؍mMwҼpjP:ڶ$HFlGɟ{C_$q'~L- ro?•Vw{)PMx':'|u"NHjxp ol3nm,V-MpsmJvay϶)* llU-2!#浯Pp@ f2''5X;pǛ M>:N.l̔#۾?ж8TKhnT:3戴P1%`M\wf hDA԰N&l] UP7@EDm*DZjTMh[PPI2|'L !Ι{rVm܂ݶZ'׾R@E*P:@u!Ѓr}ڴ&Iiꪧu Vq5& f* d2E!P g3Fal \"#ૈW֓j+Ku;\Ј#Bð)ÀIKYd4 OA1s 3?1،y?g c?ŒS S9+#uFt521cL3X?Y?=RQ??_ؐ['{G##.S5Pi-):s־W|JRO$v{i*ޗR}8椧^J`Z_ӰJ#䠷F} sKS瞟r=ţNJIi%M8# sqe*r3rLJp Xqtt Llf4<(MMYIQg/ oO)H =6MH c2?,sm"0K-8% te2&b;}|SN.srAr}Zq@?y篌c'L:㸕O {tc'QqV]u6:i!s1hHazW}P܅; m˒d)o)~Lϳ8blgwGі u[GR{vre݁iG ytmg|k4=gIy|(B RpV Y*FjNs]ԥ8jǷw]'rw[';m-Ei\؟Z[>d~AQܟJ(u0=Nꉮ$ĵܜ'Yљ;*{zs7vRCgZo  !uW4;.xKFncIJ)aTʟTj_|+ vf*T ]r^A)1 JfTU&E^k|Wٛs8vgad;xNc׽6;q(!>-hs+ߪU)ާزzm=b6Jɣy֒=٤f]ZZ3mjA?j: =ȣD8Qk3@4a_jv_`COivsgx c/A*e%2G dfd5H+pSl%a~H T8fO{00K(~hDJoDyA[M9@NsY" Ր-[- <%%oKdޮߧ> _XaPCZ"5+ UxA߶vb${^2ݓ-A>DF,«܀Wx+Бķ( f:{;PWp iqR>`u}`IQ]EwGC<e >ep4i%U> Pq2h#qht9GK?NƇX(k9QT*M1SUm7g7L*0L.tbL%b@ XlLB ^Xl°hV$@1%a3EC js$ُA1pF>xx`a+,0"D]۶aDEAQPcej KMl7{l[@[>r dACETj0,KVNdj:5Ym9T Ӽ(h H4N4.܅H@ 38Fv{4>ig`L1!񤒯l{JHϔ[he qBɒ?"j!x,cLi#Kʈ2dDAY&4n`3Hlc)ĒV G #"%d^BF2d7$l Q>Sca2yhk0pn8o5L;7Z0 dsr}խ5Nzn57⮱|qlzklOgc>H`p==2uyFPk8 9@y4}KһA9ں HoEܲX4t6=ɝ^`}{wrP;9cjh1[!b%͏ 3G!6ބ:/oBMF$ _ÉFWwpU.ϑ0`鮉`e84m3tW/b| G\l?!Ho]㧻2< !\U:0d>K.J1t h07l4iV` NT?[ MW nzy$CIa>䙆N"_M'FKCus 9?J),w ZWE+뽂tHMA PF}ꜻԅw 2 AN= dId" p҄MZ1osӮ"ym{7Cbp#%Qe Qg@ o{wV1û}D70δ?_}e*sK,*ULl lgwEPõwbЭOB TBqRija/q;Fc)GK w`c?gUi,Y\pH :h~f=KמM!BUX"p4ٔτ . COwDU@ ~Ek1c-n M9C5-V:M* wu53R=H! hfذw!ZS:oןu>`3RAE AFp9@s+d-g+@f(h+HV`m6[pc h"6DځpvF;G0 TOju5KC=JM7>!c#+b V&5bI??"z@ a`v ZةE..#ޫ#{c_MMV#v~`3'`m`(=X0%-$f?؂-鿠 -0unzrmn1unk)}76Jº<&a ֓Nׄ^`U&ZG`l;5I~+y92&@)eJ_ #%cDsb#'F*! _?R0|b#?2(ᏌʈG  `L%>ԭw[ %~u}4i[nX!_H<} WY{V, x{6.rrL]%\$RGZ`  iV>cAaC" p7-MTN"!2Wks, 5[!.ÄAMtL5걀0ȋ%m BLjiE׸4;LpMIէlf9k7bՏO4FQ\m+DJ'TD'SN'bW`̀>'^A&9&V?Vi ǀXAX`\7ͭ")ZiVj5h8MsO `~`4.0ŏ :?X6.؁mӬ6g!l5dGz!/A:4V@NqɂIz-N&:hsZJwTiяM_#xqtfWEObApՀ!%m{ڷ칥|`# crr%pWEѢ R7nkYZegv _i|nnx-# fBWw˕PM%: >F@=sKbވ!9`E"2E9ůj8%2Ŗ_Q@i R|$R}xW/׮vb:N#Pvddq&gZ)79 bb9rX~--[XUxv}aHa?;no@+/3ߞ$˕=e:5T}w<yjC(DsfD&׍@HWoQP|?QS4%WyB \eT>蒒WT^)jH- WPwoړI-Fa1יq!})ˉ{{<?FnNH#]7C1_2Jb]㌲\6FP2ߨȟ+YkY;Y?d?YY~G4ͱYGjl܂zpF&˛"^o3W,:uD%`ɋћ hoT:+.tiB?ap0GH~ D4lVwiv \=P:U'VHi-z%]#.':gD.;&&6䩩Kݼݒr PHB_%%J Jn N-[8*.y [L{+/l.Tue qM.?ecy9G'+Ucr|6O0#sߔ][4Pbqc)2 W0˖N =\#Oq"-IU;r'¤n\V.}s <9h_- @P(VS\P4*Vඐ 0eh@yXyF)WF"YQjK8JtVU9'jNMг'?8(,M`'1& cnJrcJLjE -JK=is̹HCtR?SMXYƙoB8kٻ;n1@kN4cnq3+z;S 5.^yٯJGFƼ;yqC UF'abOS8f 4P Nt9l?A?O8c=Zc&\lyںZg[ߢ|ޗ{'@Гvqb۱^TڶŃ/'&*或V/M8UpLLtަi_ywV /"p;Wt?Uc6 <&_z&vWP,p͝۞]^2DZKC!m-D}ig\;nOgdZoPZ]vf,@UlڳSk7+q C(!J/nEv]3!tޢ? z(}6ُ׿|J3ҩB8qZyڹ r4QxN+XR3BX>B̀%GpT>u?c]q3F~![k:{Bh?u3:v㳉yi^ExzosfcSu/a [s%-:pE;+dAjK:))g<LʮʭS扮*=e$%u|9){)7.Ru|V`ݑUwU/~SvkJZU嬺e[ mloW*|riGCyWI;|ݰef |zۨ{Y~̺ >Gyul~ҏoWgp 8rt3WѰ)U{x9y]g)pn oi(:urT E}_68:{9'RD3(4ҵ.:Nmy&Vh;ijZOmpHvV=sOB-ϯ];M@OߡW^cՏvჭCR1׿M<();tsf/1caNꄰ=N\74."-;0gBɒLɥeG>ؚ#}CNȭ^Yq=7K|^|a7A N{j[jPt4[zFzKTAJKe+hZNQ%Y,A_sǰyk^ÂQΨOؼ>j|QM3_5z}i+nU,p$~bQG_dU1>Yo:f7OyMrY ,7$mHm֧h,koMλjgzQ1HJpBCr^g_7g?9ǩ- gy%:04fkEߩO$3>}#vyWͽUOt;jA'9NY5}ɥ?Ӯ']lsƭ㭡jG~|z:'Ys9f~똡H\GƿA6aV$Lѱׁ/iڄui5Okt{vm)@{adr~-qE*rPmxg9듼IRIoM72N&R܋tzb݄־9^^OU۬`gyOpd]}^l3zuBWmO+\XnO#zNϥt*}F9,4mbzO8{'e-\}mZw_4242Hߢ" #=( &e{UE?ؾTu!Xn TY&{r>DO.|O/ђh{~.ፁKglLhڀ(yuʚWB쥝bViq?s%Ce %vz׋s45t,9x y4(Xr3kޅAs6׶_(NYAii/l5 ,ӯIyeo UG#R!zg#ћ݆^R;T'?'!_٧`WR~U>*yKșC AIcuSE(X"5^BfG eGK23/UƽG ۙH5(bxӣ%|Ь% /$xZvd~mފ@Œ]v1[pvژx"Bsts㔌;DND{W uTR7OW ^ʝ.yʝqq!*xZV/A~D90K,DmD5qs#GFRNw*Fhj$V%f2}pi rN$s&?\æ4HbOwucͅ4Zۤ .yeĈ%]mil<;(w4|Hgmnӛu|CPVkޫWwzO85sG{]}@7ұRy{K53 rg$q+{.xC?)k d_"Q7JjvARXtitttW =:>bhhgWŞvszt_f^e*{y9T@ tDZ Qڮk1/%i|$"^D(;t\m'p!55~F>u,eD89eޚhQ K8 >Ynqt]eĸal4N[0=.eWϗvwdJ͕ߔ/J2߃(x ijWPdJNN()oaǼQqk'АH65BXR<~L#@w%?ѭjUk;kiEZ/m6FK=^H|ADo*T+\5*ѡ/-Oje\1yO^e~Zj$J@[_MD;~|aGᣗ.J4IJ`85JvD ,r (B IwWJQ1]!C\K=ׅ뒘:^g#7z}ܘv{(v.)vVsyy㡁 91:o|g* J,O D 7>>GCQ+,aip~EB0E_xZxCCJl\[tjCy\#CG} $\.~h@J/'JE3so,=vCE9]rBrmc5 $I3 :lT1*J px!Xt'@ԷҏR$G{I dym:r)V/u+h,Uv@vVv[V,(Crd)eyі4ʔ,,'o8xdwtjhb-UlTqn)o:DaVerLvw( WʝBkʌs Ԡ4SU> Vu[^B] =Uy2՗XjqHT|*xH7D_>D%VHg& Ym.JkE[B+S Rt+7DY&Y^h0TV(-.sfBXrGxjpzϖxX^qDTiE7{=hkh%Z*mϴZ-BO{KKfыh-J -Ͷ\@\Bk6Nܾ\!w.tej4dA9_Ws+$Ϛד77Y y|wNFMVGJ-YyLSxWRI| aWPTQWPN2.:_B f䯸Zum}\pÍ!3:Kov,j@0:F0]OJUV_dp>b4R, ??Z=XⶉggS yc'i/q KJ~Ӯ_$$g%s?JR. RIvE =^v^=Ŀ>=9-%b-}tݕHgemdL%rwYۗv1e=d%r[ka7Jݲ(ffX0RtS8)ΏۑB7 ntyM'@g*CZ6>%[[dHI<,CFiUEiS/ݥ樤gSr ?wY5Km8QW+*fDH.86NBQ~~i~ewRl"W&L\)JXídLn?^/?m47; P EF(QZP MMAŴv!˅ZBDps={ !ވ^GS2Bif`B04[㽦"΀ڪbچۛƘiN/Y^t9ѽQhm,k#)x'DcU@dTYUS(>k"? TH0@$IxG@4dTu:ʷn-Bsd(KCC7U0}4}{ !xDKQ  i[J7B,T)@KBԜ2qiA2;-M%kW< #͑ bj .E(U@^ꆵH:EUƴ>G4 IFQ(_UB ˯HYK]K#c*Oq4`B㺆Fϗss< [IAzѐ_J#V Z ~?^Mnw~$Uh3BW$~.oQhN!u VZ**Us3"h>B|(غ '兺R1—ppJ9V APt+.h&çiݜp2Mi \7'#`,xǥ[K-0Gc ƻh*%%~zQGE*8m֚,5[=Vt|52|tñ[Yx\U߶vDC,?=%4J5aJpQ=ށC`B1퀿",^wKG9C{6 C/ G ''ɮ҂d Z*@܂&卸L"eoBhX 2;$ nA لׯV<H oЂF6[d qL%X@ Y:H-H* [ۂl' lAVtKk d$+{@C ?O'  x$ȿpP,4R4À\FRj<101Zbz:,̪x+ @oP)4 0@11^C7sxXKAFlh&z)ThL,ad#)X"> .EqauT DYcI2[ZSEbd]KšYAs"LÐu ll1<^=LS8?RA|؜jcM'5C`{1_<"5v]|Ƽ[<v' TL|\p7m*GgH2Ʀti=n>L4rZ* 7RǶ(F+o)~N4w"(Np0$؈<닕Bs1xCɖNWSxuAW.G BcUW3CqGLJAs(s5{t<$KЧҔi`~3ЯnH1="ZG#/6R4 /0v5ChD+lc3ဗZ]۩:dv6Y,= /XH YH X^*"?@>+@jXHg@{@X# bH.A&0 +:cELog:!TΧ3asǣ>bFY3NGLc1v#b^ 'x bFNy킘5~_׳x4;1/gE)Q-q:M&"%dl!1bvTy"f7zބ!4[@k\ ?<@@xh!PP0Pw@@x@@""b-ZhPP< ((h%*@I@kZ1ah~McAP|b$īT-a"Ad͙u<˖xaom.@Cw]P8 zG:@Co}𑀦G~} ,PS0=@(JLl<U &= rFCuP0-"5r BCd*n*4MV~vݜG`wMY2=8» *F,nr`_sj1Za"(.*溃N'1Zno[i~iwP |i=ؠ?_s[?7LrUVIy]][ISP_Y }[䶆\Y&rH>|UCK>=9hf]ZF}%_WI-4&4Tj%U; A]QcIZib,̣X&ڔLC4{ }ZO%l5}m%YS[~*7#̊=p§bVm;ZP+hM^\7AeuO y,A-@#`C*`=a-7AZ Py|,-MQ>ڐs@ Fvs3"/Mhjn"`Ŗc\}-ؐoNH®<'ynys)0G-t:_!hx܀֖3>O^ڍ  . x<AMoo WOIS8hos 1"~$$`qe*bƖ_CLFLgә`1cD#U0P'A؂jii 6-miR4I}iA7ѿ џR JBȽw;z5ۆiuY3. HhLbi>ȟ>uK+8zZtiTF۱R֮Ͳ hv_Y("?}G-{kWّ|AoS_pI98".GErt3Ey$\Pdo>l o< a1"d8#gsh*S=ɞ!اq<ɘ/ Q`w3a#{:I=uFC2xMgdq/Wx &c@IOD^GA?)w[fŭֵjrmBj76 #QYY᎝e9!gc % n)PK!NE& word/settings.xmlV[o6~`y%GN"^{%R6@RVa}9mVx+d|'F bI4""cD#cIAё?msC53ZD{kU>jO82R`-5G>n̑~lT\I%eǓ$E-Eiu&kZ'Xsv&+Y5#5afO >89|gAM3m 1. C Gϱ/ v_wiOOg ;FI_򻝐 X hIJ>jsEtwhYYQ1|vF [TV*P: H{Q#diTY *jɂIIpQTt3q(l$&.FiH@vl] {dd Cc,ok @_!GȚ @S0kFՆj-@57@/e OipxUd>$pL.5m.y$lgs.5RS4ڸ:v~"% AN)`8bl xQ+R3 U)lϾb!W-աF#MPIS)`%`@ihO[|?|ȓ:^?$cp!Tdzr."Fw{:jXr7鱉&?P*0&Avwd, lMl:fA6s2أD:~ʇג1~uM0{Ȫ@/ mF@ζL&̤kH/I23; X֌ yZj|pm*).-]قl7=,)*IYků )Cǎ]ђWnfW"Pv\Wf) u]pK~ʮ2D):dSx<>=t!3 ue'Q>w'@ܯ[D@'3S̀r >`N| v1RpPK!M9gword/styles.xml]rܸ}OUOɃF]rfJˣXr1f%lC-+OI~c~,H}gj8ι/$$> ;x$e>^,%19&k?f7SdA+Oe8goEo~hT\9c9]J.?sBO7҂t%ܗ*/ArB-k8;`Q y4=*~|2nmȗpo GFxKV3Y񀿋^: Z^!m\Xy0{ȲKnBlcx>Veˋ0ۧwci%۰z9Ol(Х'>aK)cnwΟBh\/<׋sh\/:|q~|_Pp ވ18Khq 1:`h"p$0Ya7Z7Ͱ B3u k]7ZWͰy3u k]IaE{G+{;*I8ɉb` kHCVUl{>l79d»mJ'xK0%650bc)Yqi@Yd KNҠi`}Ϝ$t`k?HYK|g0NQDa}pcba aG f(hhhx777֟0x:G΢ pMxп޵wpV-3=ѻuѦHzDhx۟+*WJ.vEɬ!xvk#ur?ڊmoV9ef@?,EW*n[+9͞t( >>nHJòϽ.(JM&TqI:zsg!jݛbjܻ7 taFF۫maa&# i+/dg7Dw9Mĸ}m‰88WZc ѹ1Ctj"crTdF\7!:WRftm[\mj+ަ(6U^sw vTv=3QAr+G(hGhGhG08Gm8*DA;*@;*@;*@;*@;eޘQ! Q!Q!Qy8Gm8*DA;*@;*@;*@;*@;*@9*Hnb8Gm8*DA;*@;*@;*@;*@;*@9*Hn|8Gm8*DA;*@;*@;*@;*@;*@9*Hn>i?i\}Jf꣺[w*re4I>{ڍcot Q!jô˗D&>>kᣢsq!zעȽ|Oc*&WS odjJ4վjJ N*]ŢMՌxhHT[+!Mu2T3+ !Mpy7#Or})@h2GanFh2KUQC*zf2Pzaš 줆nQX!^je-5VX!Vjٌ`%5BYK 줆MVj"` a쥆PRC(;a+5DJ RC+Zje'5RC+5DK PMRQ(N + q"ZRR[FK e*4EKhfhF@i kB+l-餶wT3Vj\d-5JEKfqђNj\ھr6#XIEKR%ԸhI'5.ZItRl0R㢥FqђYj\-EK:qђQj\(5.Zj-EK:qђNj\-EKR㢥F CL >?n;[0gI@e%ēߪy!;hT'98gx-*KTKTyNPlR~1Nc\c\緖dg_g˒0O>^Y)ޘ/!W\Hg~jy]+rWnmAyxӏ|̻I2*lsգ՞ȹH٣!$L56]" ;$T\kG;jewX =4R+.=tHTɨ1 Eȷ \}oiOw+O3Oمn!BXCuD!(v1|"g ʌP\mȹ!9 5rCQxՔ#igmy9ZDXDb& E^_}E((k=?.lB|mL!#k̈6"%X?ۘDa |5y_;V&6ܰ@&5n>k°0lJOiC ?v1Su@mnL;֠h撤6^ MGGE4:Ka'P Im4z-4x:u;/t5Ӹ͚Ưƚ viy=?Kɰ%Xjk i~k4mxuCߚ5ڬi۷P~pqjd]݊Woޣ5o1zۀ-bc89;/p8o}}[A_JvD3nxotlPlՏ;ui ;/9]1=(bֿ$:sҏӣsJnqsJnsm|UJǃ17_:Z楽4XO84EHgz;^aOx嚱_6uCԙL ۴*x;: c=|@qR6 jW뫊s{chkw9:]2}Zr$L)YVh4mlޒx쾵*j֘/yujs2ir9ɨsDg*Zsq>? >Heϧ?㪻zp'[Veŋ.I^V~5b/ۊڭh|1-,9ߺ/Cj)H >}$WVM[kTmʝе) Kc=:4w+Vنm7>-`캭>Bڗ׈oBԋ1'FP72Կ"H=~;YJ=~YM=~ww{;1.#g"Q\͞zq-/u+0η{?xTRw>uޗ(Q>^ҕyl\ G?=ۋlҺy M[VԖq; fc6u01wC.c̐Ѵ`D~G#ci/ g믤TOC_YT5P`:; N!0: 3WgSL29 UvXkM:w'\FaVPǰhvf_\Z~{g^g`iynK)LVxBOIjlҕD6P}4ohmQe3q£{cWv`Y*xj+UsYN ad}D q2_ }4^6X+He6i;w~ޅQҶj&dU63Y**&t{$g\fAD&p׸!-|y9GUƍ:_O9ݿ/蹸E1".tY$ä94-q>|q]Z8Oɷ-6Ur۵|ywtէ$ U#]r}!.]* zd?AdUa$?=Y#ugd%!ÿAuTu^,beExNEG1Z+M1EQ U9`5F+N)xq[:ըoC:Av9x6ӷGe#>&Z>Yyvf{lET%-"wbI;%e2~yҨg01kTXFKLb_ŤT,:7gċe$nқ2uSxI2R^bғ&,bYOe*9րā kPL8fVq7Fُh6ڦQU9_)ē D&&o\d\'ݕ q&]Mgpԁb-+ u lu+.epM=u \[5T2~xR p7bX|GJqc>cIqI z Fm88|;-*QB 9\Sw'@i& q':_Sf @&R ddddrdL&GB1HL, _[GR AƗnrc>cIqI [#cPB1YPllĶeiB*z7w! :لp6q5]ѽuX?'" Fy|l/}__< J >Nm=MmzpޑdZbRcmǛD 97# B&em)t:ż)6XV_3(o̞`1oЀ%0T.X}"ψEX̛Z#H 7X 6IG]) HRxN&qqmp?k$xC{CtlZ[13 DަJɦ׆g uG&V]Kq6Y'YiɦIi'"Ei⶧WBW"^/V*ۓuX̛cX{3VwjH!푢yFs 5mNe/jHem{wUc1oDS M 7MwMa]Fs=R4ݲkqlsmj&x>(-$j!Q ZHBv|B?GI\j2e(uGU<qtFB9kS81i99D &=0E&=0000Ǖ2ԟ5miazk)_FB9G%M$_TĈĸWH1ZV````+eÙclrY FvX7Ź 8a6$ZI6$ZMܿI&x[Vfn4|IprIMpp(IJ vz,1+^53+/5}f{fz/Ϯx׮>fKYў>❫^3Q'ii 쪻.}v`^C TBvX& "[ \vp Eh' bvg#LǮ- PK!<ydocProps/core.xml (QO0MK]*D o=uM[|{ D|uwimA y Yƅ\vl!X*9M2 UT2 )V4!SV#+.2RRĊ5]n)XʩUՒjR3 A#'ւNņL+53(n'mٞ܆|[V< TFPK!)/ word/fontTable.xmlܔ]o0'?D/qB(5T-+Ҥi[^klCʿ߱`mD.ʤ%޽Hm\%"^qѯE"B+nm=-r6N%Q\5cKK&)H׬cIMuEK.)ר1}t#ra~lGl+wqYUFSf-YO6IHrjՅa+0h0g $~]+mR|Ifhҏ"O\2}guCKBBE,-9)xG8/QbHKb,fM"nH.v{^暐klc>.QAOFs*ÃBOM|9fܐxGd73㙜17!.aYdKx m;IǧDElUAV(J'kL?wr #h]߾c_ǛC^Ĝ4Do,BO7.I{oݑfHTB֒4>?%ڊuNօ.ځPK!&wdocProps/app.xml (RN0#QSFRI,۲]DMӆ n3ͬ 7_>1D2Mͺq`+@ (wA}gb AF_ |s6 JapEy%LD`?\[wq'_|2Q7̯ƙG B >Qi֨Nw6-ӂam'߆PK-!A6}[Content_Types].xmlPK-!N _rels/.relsPK-!Lword/_rels/document.xml.relsPK-!Ma d word/document.xmlPK-!B3. word/theme/theme1.xmlPK-!@(0Aword/media/image1.emfPK-!AN7<word/embeddings/Dessin_Microsoft_Visio_2003-2010111.vsdPK-!NE& word/settings.xmlPK-![m word/webSettings.xmlPK-!M9g+word/styles.xmlPK-!m f word/numbering.xmlPK-!<y\docProps/core.xmlPK-!)/  word/fontTable.xmlPK-!&wkdocProps/app.xmlPKpandoc-3.1.3/test/docx/image_vml_as_object.native0000644000000000000000000000021607346545000020247 0ustar0000000000000000[Para [Str "Test",Space,Str "with",Space,Str "object",Space,Str "as",Space,Str "image:"] ,Para [Image ("",[],[]) [] ("media/image1.emf","")]] pandoc-3.1.3/test/docx/image_writer_test.native0000644000000000000000000000147707346545000020025 0ustar0000000000000000[Para [Str "No",Space,Str "width",Space,Str "given:"] ,Para [Image ("fig:testimg",[],[]) [Str "testimg"] ("lalune.jpg","fig:")] ,Para [Str "With",Space,Str "height",Space,Str "10cm:"] ,Para [Image ("fig:2testimg",[],[("height","10cm")]) [Str "2testimg"] ("lalune.jpg","fig:")] ,Para [Str "With",Space,Str "width",Space,Str "6cm:"] ,Para [Image ("",[],[("width","6cm")]) [Str "3testimg"] ("lalune.jpg","fig:")] ,Header 1 ("with-height-3in-and-width-6in",[],[]) [Str "With",Space,Str "height",Space,Str "3in",Space,Str "and",Space,Str "width",Space,Str "6in:"] ,Para [Image ("",[],[("width","6in"),("height","3in")]) [Str "4testimg"] ("lalune.jpg","fig:")] ,Para [RawInline (Format "openxml") ""] ,Para [RawInline (Format "openxml") ""]] pandoc-3.1.3/test/docx/inline_code.docx0000644000000000000000000002027307346545000016222 0ustar0000000000000000PKlD ]$[Content_Types].xmlN0E|E-Jܲ@5*Q>u&_g*h̽WL; 8t˜}_6-n&󽇘P9[!GΣ\1s,U*@z KKw="XL`*֘sK,yjj ﵒ̛*?:@Ǟɍ-?hM6=q|=XSAD7aHo](HĬ*%trmh$}pb$=_$vm0EZ$lFfس"Xh;^ #'I%)x?\w>ղ6kƮ5 ʞ~kdIwPKlD? _rels/.relsJA >Ő{7*"^ЛH}0!#ZGr;R|̛ GcVw5R&=t0[b'T9֟!I O1}qѶ(?0u 7}|; |sGFJT2kT,L4W=rD͌kL8SM3zKv?IoA.+q!Kӯ "\s Se\@E=B[ɇ[n%uo/=-7{KeuE?wy̋H $kle@_[Ӆܤ$Q"9LN#d@PKlDz0word/_rels/document.xml.relsӻN0N(邐NrrE)зE8E ,ٲ7o5Ot~4Z@P7u/z}my$)Lh= k0g}3>3uH:㔤0t==U[v@yɪ4|1A?>]۵ܮ-UH0 x2~&"$1n!d _XfG"N-錦JΎ k`?9._!mh6Wq g PKlD4o}word/_rels/footnotes.xml.relsMA! Et]c0z+B(1_.{^y3n88L /$~ݟa]v7Cјш: șt*eWi-`%x .?PKlDgword/numbering.xmlŕn0} l)"pCĀ%/$QK.xKd{Hf,*,B\s$k;k}W^Wh8f-7u Zn1tsSC'>7FN=0W^Mn:<$ DձWV'mGph%;%%Lah L< L0QIɲA8N'Y0j$ܝW>>)GKPKlDY.word/styles.xmlZ]s:}LI2~Cga P%_I䣿dF6|Ӵ=kh%y. a_yB}z2zsߞxs{&}T񾻐2>kX)`3#$-6_2a*[;iq" CvKo1g>Ea_u_80 ghJ,ƿԖѴQ)3$|B&@݈P .  9YaE|!s U[Nwj4DtnPL_^ 7AuTw9T5_ `8*F-I/J.vwj%f{B}:ᦨnTtJ%d}| 1v\u+x\^%Y}]LQ}qY) vjiXG=z@Úh^g> tCvq@ [@/B/XƝrVP^3^xJbʉ«ה(FI 3>Ix8e_aiZ w-#%K\훣&{-Ӗh.@+)ONۙ$biXX?оz^';T0 q~Dů[n!įj=LJ''N4nPM0*8iߵǭ,{|}6Trlۮ)k;e}uT+&TC(_1Ncߝt:1. ۽=l IC*м>;Na{Wj<\ޯ qԯk)azKvZ)$xl jv뎨/,D";{M= wM9}ó-gHqh2n0̳*\=8/WMc>a)r4U+,V'ie괎h߫A&lPcڅyS/LI/DxF?5O^$(ΐCHw=ioPdO(dH(gƴ16 %Cyr,RiM: Ge~- =D<_aj!xDc{/>?7qr-5%I^IIIfAerŻ̀CB0a{A(V&la9o lX܋44DU^Jǭz_b S}{i54P?֛!S/ﯿ=/PKlDudocProps/core.xmlmMK@ 26 "< u2Ѯޱj+$twdUSժ X?鮼Ub`zR*O-^Eb HN*>QIG _2F4*O D$h6V]$Hg#E7\s+8s5_/h~/嫥IGRCg+ leIK; PKlDdNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PKlD= word/theme/theme1.xmlYMo6Wl+u:E֦ CDKl(Q $ qaݰ ð@ l_EeSۊ5GKҾ|8"1iܵ أ>u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPKlDҟVword/settings.xmlUMo0WD9/%|Z-PCBMwǙG!KN NjhO'f2[u 2fz꾿-[{w3 :Sw@ [Q%LLJ$aT1& Rt+3HKV'BҝԴ7l+`yz2m͆&_^pw+KWk+ n dM5yN3QF/!p E Sw߸]r "Ã6 25".@΀㋠VkE BNIay,pɸ{W<_4oC}t qFjGFٱ"9X$ 3BkoPo™89ԹPƦBA7o)KQJry\Lita` _1jv * 8źڽJit<gwG~1b/hp~vGC3iϟ 0*m128wyT$>BXj"w i%K'oY+𚜺dl1 wQ˚\l"6ߠmAgR!1#\ ɲӸFEa‰ bM\uOqCh].jkF\b[_c jlhamhh[r,Dr.sj԰ BxQm5ϙ6!d(FV/}PKlDTΜword/webSettings.xml];0DrOl(M"L$loBAA9FS6/ ,Js-GJo$:+bG)1!VJ)-R4 @`M'a:h}T LqkwWa gsZ^;PKlD ]$[Content_Types].xmlPKlD? _rels/.relsPKlD0OLword/document.xmlPKlDz0word/_rels/document.xml.relsPKlD4o}Cword/_rels/footnotes.xml.relsPKlDgword/numbering.xmlPKlDY.word/styles.xmlPKlD(*bst word/footnotes.xmlPKlDudocProps/core.xmlPKlDdNFddocProps/app.xmlPKlD= word/theme/theme1.xmlPKlD{H: fword/fontTable.xmlPKlDҟV1word/settings.xmlPKlDTΜKword/webSettings.xmlPKpandoc-3.1.3/test/docx/inline_code.native0000644000000000000000000000026207346545000016547 0ustar0000000000000000[Para [Str "This",Space,Str "is",Space,Str "an",Space,Str "example",Space,Str "of",Space,Code ("",[],[]) "inline code",Space,Str "with",Space,Str "three",Space,Str "spaces."]] pandoc-3.1.3/test/docx/inline_formatting.docx0000644000000000000000000004711707346545000017470 0ustar0000000000000000PK@!Qr[Content_Types].xmlIO0HWj#TkOCȞnIn)y}[ML!DlY%`Sڎs>|NYQX%*g!g ׽ bBjsV"Σ,9* F 1B~1VKg,X{n 10,y\Q9WZ 2|.@Vmѥ+MO,7>=Gk yd C |ɉ!Qvx(vIT٦bkXH<Ĵf.1( Foa~ܡUH;͡H#ˡV4$AwټoPK9L_rels/PK@!' _rels/.relsJ1Ͷ4ۋ0&dEԅeq>If9AR6x˪A^c}౽[\Ȍ<)8RMs~~ , g=s2*D !0u2~䪮d̀f[ ml !"2ؖ]D#V`/Q2i˿ j z!31-Oi4y H󕞳Yø߻'vxZlPK9L docProps/PK@!䅥 qdocProps/app.xmlRN0 #UlE irH( R(E3Gim+d۔* rkMܞ\E4ZhS(WTK9\ TOwZ c'|E7^ XWչLN> `9)^ߊjFiIhh3]i3 h3\3=xAL<<塩mUe}qb:kfV}m.Q}Qr hAV L{E N- [@|C@rbX9=ߌY||'w>*ϗ/:c4-ϻ#91f^*PK@!lldocProps/core.xmlQK0C{f@e :Q|mk{v,ۃЇܗKOYDP=#l0R,%s-ya4LTXp^F1vF6۔R(9Cqe\}HݚZ.| t$SZ{Nkal{#+@ =R6bzp%T; 'Ѯ?zQ5i?oQcY y&E/ ! ~}|rX8޸!z2ζEuz[UI A0 (>e,񯎑zoU|}ݶ2 CJۑvrAq.d]I7o#cCc'h4|/PK9LDw#'docProps/thumbnail.jpeggPjѽE-*JPt^NT%^Pz B@ B.%t Ý=3|~;3?Z3֚u>q醉!… Ls*޿nWbbrB… 7;.0]?/]rտn0]5^;|ߊnspWSO?btΘ8iD?9g9gu_dׅ=@VSY5XJCcIK6yf{:m Y: %*9a]H! u/ fTyR>eƼߦ^n9xaH g=V1VV~*Rz|9$*?\|4x겈-us cBZwwgt[#aA1V6O5]ŴFR Ι\;W_R(_){3e@{zKJ]!g罦Aܫ,s&@,۝l&-I1^-JZ}EQOLgXTj9kݐ*cFDAŋehJ,s iԴ>Oi_MՂAy_{fB~7o1);+p_>>v`S y#Mbt: Ti^Zm5mG#m _?np3i&'1S 'J&3‡Dx C ;ϙ2"\[F}].D[lJ6 NX’N K)c}C4gѡ! ! }M1lӈ(|>,gyKy7_*R*$‚.s(zoxZ<>]^i[$\Tf%<UN:K]2k&Q®|^՛1Ι4~^%H 3@.Gpo[3}1z ƖV__WIB)t1Rhd,fLr/A𯓌W ?B"h% msL !DX979GJB {`z./pюf9i Q㔋œ)y ($+u ԣ_͸8bB=&/T`Vhn֋ZTi82/Vh/l9~"5m͕ {O]9]LNZeyJ~2@ɉ?N.Kz;,~.h~ng1=(iaF Zbr%v$ت*PTmҿ,"k,Z7,`-6~;I,LB &aL%mm ւ%BD2{?Os`qyf밮(*ڷU|*:wrzxL UzQFp=u߽c:zR'ia}9q /MʐP8Z QSDilB_]K"/1`"[̉&齪,zP?4)*ќh؂h;nA;8i_]yviI+{ ` /4uLAusw=ܮȄ͘ ԢxlԢq/Nc eskt?Zjgʝ¨A'H.-Bq 𧛓ȼC#^[]az;׮2to:+v.}{Yč5\TYcSF~TYx>4ZA ZoVk4Jf9vήHU+Fi|@)O7|Ra~doEr7#2(ED _e^M G](Y=PK݉wY1a">) TqO"^s_삘OXq; 9N]E3W,,5ieŅmF!4Oc/3)Ҡ@)(Ҟ?6z‹A̚ᢳ(dF3D-"*I~@4kw#qQ1Hm0ۣkLJj >1A$ff>eM/ۊbDчI/w3[{({ Xo_DA[w[vXd,.~i-r/G*IPIS >DUg5<4̓W?v+6C>}Ӎk2x?"l r%2("顃qeg` wWdiF..M,êQMyE+/вэA\6LzŨBcC1~WW;w.W6[-c Drih69 UAՅUaנD1bVh4;#mÌ3Tg~{krA`serI66+MWYi׳as&]ЯNlN1SF9gNLtayG<vMS<$V/U7jsWy(@`*XM (ɧd|L|fX[Bd\Cn`1,΄ķ#ͷ3t6CFʵ_ĨD%Q |?ڐ̶hU !%Sk{d2:Sz`r"xRkS>πM!t׈PL09OT2h6dÍ5-Y$^$sCudkވ^]$W}A-|',FJL{@3,O)o0g-+]Eϯ̨Wl[ƯOF?5 njr%NlSDY^Q}D5A˚V"UZXyݵpMgOw:+۵ocVޖ.p#VҫiM[i[" |?Ǡ7]a7SC'FKX-#pZC K 14#a{2K()խ´͵Iѧx9D ,|q_qހ|s9kG?WU˛WLL+aiKv(⒪)=xAΦp9#p{"$N"^T'.QKyP52k OϵhO [.d n>Bn۩`zQ#~r[_5q; 孷<@g9XH!'%;6Y/-l?s[d37=rgŕ@wlr% /JJ!SSz􌬏\ڱTl?JLy*Iq垯 }cSí, o~!ug,,HbJ5}8IhA" {(,HQP,{$r>bJ`3(KpjhwRG-mX A6JKr*E>mG W}hZsh[{iWrԵ# 1O *?v"w=#.mB)>ZkɎWf)i-Qu{Ro`2mcvz:w}N.;t54%1,Ɋ{suuX-O4S^{J>ݢKZ&Rk?ۮ:U:dkQ($ޭ hrIo 67g+~?'vwgΙo_4.r~Mm<@Ns𪪐R!bq1kkXX.gr~wQ+vka;gO%y0.(&5uOhq6/J(H.i\!a2L#Egjh*%EZ|㛂p~>~??:UqH.P!+pF7X˜ I}q/F*%Lգ;a"rY0kp ߺϑVn˦L$-h2@ΙXU*DxIH"W$}>se_@{HQ955>0(nd^rf?-Zw1ހOsZL(UoxڲoJb9LvڌFaJX?5{X[;8TS/߼fy?{kΙ*ȡ>?B9C6Th`L8kȚ6h5ƵФps{eXsblq! a, ?26m67y}>qL\[OZ׮ĕd zqUҲ']Q-Nŭa\떶ʎ LZ}SzxM3N<>_^a65؃^St;/Gܾ4H;op^d[N%R}b#To \oo:ư64&$,犭-mhcehϞ__/mTs"Tǂ\o$P&ՠ9^~=TPG#M 40o0+雾\QTGSGE6Fy>>kxri.~1 (κu֯Uxh(RZAeB:9{.ZD)3`~WnQ"(:2K5GT?=kJR3W6 rfES!+~9ʒ8^i>&&Whߐ?-F|-3rn{QCd kћ0璉QŨ0}M<,ߥfW}nHIHȴcVksXIB|ct͸M9*> $Xy|rIjDj=^+0~>ovP!v*&\Kt> &[VμaBJ k,lbֹ M)hΒv/)="x·nWP\;-wɧ_Ӟj3nM lYPN nPȯtJҏև&IjĂ1= ꧎_qKPWO }S#>Zj;zzw:v Te#e?Xdpu#d+Йmۘ/9By9DykjO8,TRf.֡ +VuT'>XyWvA&gz<'<Ŝ6-9lgJElvXހ'ʯ)x٦Z_WLhi۠IM'rv@Gpq} Kn.\'[lQJLF8~)794W[K(9(O@>1npE'CQh9?-U1 @f~u5Q&QȃkҠ'-C[sZKsTyI,U+abYN8Z6R_x|!kKEN5Xo3b%zV ݲhw0U>x:cG Vű&ԥwcw˨n?+_nAKgI ,0{W&hR^{䫨UpZBAyDoҖQ_eBiT1}PMg *|snhfL,RT&m8xgj Ú"e{#f㞠uN>*qPuMo|^Bsjlf;KM=}},g4rs;aXUlagL#ȸg9)`ыnb#.SR*-T?FǦm;`1Nޢkͺ&~/9 Xb;sMSƉu=5! QʦoxFo.A l"W/%ǔnʴ\Ga[.% Izxٰb]{o_4;$D1ud(#./ʺrC+>0G0P-*Ave)T lrq*۽b:w[GUyRlp8F.GV$lm]ijY%u﹚'H;Vӷ7:vӀ1.l2٩ 9KA(W>r `wp bnhЦX^pMŪ4 sﴀ`ZXlViDªhѮsa_)uً"] LΫf(ܕmɲFTP 6ҥݷnxhrt^7г"; 0W' 0XzVSi`ӄu1Uƹ*Q jiB 'AtкkB`їuOPK@!fyl8.word/fontTable.xmlՔn0%vH[*i&8`-#@;l0Imz+ )`V>W72XUH +BMqtP`Uck]^\t3 `]4u膡eS.m+fH`h&Ӭ8aZԉȅ[g1Ǹ,l&r~}hxZ٩(mqBqa4e^I*Ά5#)VgN`9'sH}7QQ*pq@Ur9#S܆ cn&)5D\"_nU:s t+)l)CVL 0#k -JST*$AFwJ٪l[aEZ)doj ?|~GCkia (fƇ˂d↏p 8PCp=H8C! E_9["%>k"={DlrމI-[.gK҇cO`xbG^\~oo׫gx:Ro΀Jɒ*, ?hG$ [ul7PK@!g ]word/settings.xmlVn6}/0\%N#pu PfUw(F} u̙!|F/E @sS [$_ߓLL .x/́d$]"{o=(.M֠b>q7R _*;FYE!$MI'cI:$Jp4l}pv+8tuY^)о8Bn/j꿪".qP2Ws  @J~z}A+6R>NS$R@,w +$5ePG}3F rzEr&]6΂M{r lLQcE)a*Y{c(I' ehd+_Q"a'} 5NGv4?avJHX3Ew7p Hbj24(Jxo51`ˇyAMD%:DL]|Oh^A?ltZ^Z/h+F`afts{}^b>t92QYXfiJnP$;  I*8OT_OX駔puE0:?tTЌ}Sn*BfDKdD>,Hd9lR:nw2"ss-3uٿ#ijW ZmQ[ RDT)3,2FwX$soSGTJn+K \H2K\,s:'TR*\ U:&*bP@ƌ)W,45(}ٮˊhfHo,faLoNL.K _(߻nU43ȽiѱSzjjzšeVh<զbvêV2!͎q]8bqLͽn^VĒѰ\T͋=fj9)fG!-Z-N}ɞ ^Q^=oQJ1YAcPM]'āġ_b/q/1~QƖ]d4=b`XpkZ{4sg׍>=ptJ["B< SA١0]4,Ԟ_S-_X1"Ӝ7L5rwD*|a|o!8}IFysSuxYXZZ?:-zִ6hϥӾ[5ה+h| w:&!t spn(&vnXh懿8^V@8 83o Ǽ pr` y(h `7cy@8 7c(8ϼ,p1O1o41oǼ p1o߼<p1oǼ?żPB3o Ǽ p1oǼ C1oǼ ~y( 7fy@8 7cy@m7cy@P٦49GL OzDoB<A,eLyjhv%}\MݫzP![~f>qn^' g=E"ԩ..co̭Vv{AK) "JLrGu*&;LRK|T[ U3n]!9{A٤-gVə׼UHG4N"ooҹj{ݣ7gBk`@e0 /oݬehsRϙ~mKPK@!Mb=word/stylesWithEffects.xml]S8wf4_L~0vi׊` +# GWزK+9y!K{*|ÀHČÛOGa41Iz)RffyBS ϡ)gNI>.~&" v.EN"pinW zWtx˭tpܲ.ſјzho#'b؍8~%NN|_oG[i.=^g\B)&Ox2>(2_nuCux;bX~^r6ݟiz޻fgb[X b:rEmdsc:BD8st` o޿MaPM m( y@8ۿc@ 3o Ǽ pq` y(h `7cy@8 7c޿QpyX8 7cļPB3o Ǽ p1oǼ 7cy@8}G@A0oͼ,4p1oǼ p7nyX8 7c?b y(h `7cy@8 7cywC1oǼ gou) x=o}oy?J#@%'Cgm!XaeQl2Q<6'ʒ9mݳys!+[tԏ}ܼ*.:^۟`DPԩj.rűTQʥl&%&HSy ~[T?O^Hk7Tujv]{2ֶF@E .m N M>˴9v7r,3HXw|-~b-JE]z.HPK9L word/theme/PK@!!Z,word/theme/theme1.xmlYKo6w toeVuرۭM$niP@I|úama[إ4:lЯ)ΣM6IIÈ}"$qr.,Db4ABBRnjǤmMeB\m+T*Ym2yBbx6" "}ozbGqloF#h֧{ b%]/SdXIDv@-9TbX*xжjDz/%SKh5~) щ`X:͒=翈zݞSRg췜Δʇ5֬5jqW+ \j+͍zߜE;J+ ՕfBFt22%d5#4f([ˮ>Vr- .V4FjŌM5''RYHz&m}`_>{?=уG6P]qS}z݋_Rgto>C>&9@;< PbbSlā1Ni +̰!UL{wC1VFÅѦ, 80 cIvw.qLM,! 8 1Q(}1ݥ- .Hu05d@LtFIAw7[wP3M_EBU`fbIXōWXȨ1UhRrw"åHq&[bRQ:sط$"{& ̹{GQg:#)6WF%xB9K}uھMМ 铱0z&q+:q;ϻqC|Q'jfQ/ͷ.>}& }s~ߜ漬Ͽ%Ϻ36S2&ܐY`߇l$a! Hp UndY$Jwv?`sN/jrCllY uAi5.0'R㚥J5oB JpVhḦ=g0  Sbb5{&%ɵ'ۋ UZIi Qdi0 kqUsV95wj0M_3n3`h&ӢrC-ВшxjlZS+wH ջopM Gd٦|g&yͯ5}m+X}=Nkfҝg~M/hTxlv<>*yxU_8[q)Z<;jn,q^ٮK!l(>7z3fL`EfbdrGL[:wQp9N. $lLXgHI\?Jgbfs|Ebʛ]fӺz]Vx6%9Tw]Aڳ]PK@!ʳCword/webSettings.xmlQK0wP)k _PYzm\eu r\@!P2/TRP^eL茧:Ms}-$?9%pVcJS5pNi$)ôInK'}SwK{g!e^G"RM͗h3ndYAq)oAl$>ryX^UzE@4WюRk,anxPd 0y9$gti|P s 3=& Ó:5;ߦ1iЕ IilUI-?9o9Ih&;!n˧ht!F$\#N3 WKK3H6Uptgk[S{.S9v<׵(}v?H@8M+qPK9L_rels/PK@!N _rels/.relsj0 @ѽQN/c[ILj<]aGӓzsFu]U ^[x1xp f#I)ʃY*D i")c$qU~31jH[{=E~ f?3-޲]Tꓸ2j),l0/%b zʼn, /|f\Z?6!Y_o]APK9L docProps/PK@!ehdocProps/app.xmlRN0#QST[WR=[&plv+lάw4;6,?e"4A#mLH,MB\G _^[>* IHݜ klDSP-K%qmAUM~F4# +ZX ёEDNj`=BA>%> | `U /d{紒"RYIo-czrWoQGBxRˋ WRh\޼: Vq+o.6orNz$ wm gtN}svYPK@!ztdocProps/core.xml}O M;lhbtF¹-h|>>O𨭙>a$#f9'tF (QYs$^!].[oh2K7'\N)'0j}-BL:!h!%0ulJJN$ j0)pcU~k@i&ʹCc>\wWMig%yС0F2CcA+@bJTSucheSk[B+&>u}oSvĐaJ~bqIʌRv'y=G))0ll !?j PK9Lword/PK9L word/_rels/PK@! 0word/_rels/document.xml.relsN0DHC;qS Դ@ pcۑYz8X;4=oL}ٔ%E`3'U){_>_ݳ(RBl>B)B )+CV!vX:ɝ7iW"[ |<Mzفg) I˦s] ]i d(Lv܉ILfg R%} wCRN!RxHpFɠؔ}!㵡ЦZqQS C2Km-Ǐm]ױrNѕȜ8IOoɚnd_?fPK@!QY*word/document.xmlXَ6}/\hy NF>D[% iϸEe2'N H+.n9yTHE9G0\rYb rX7k;F= Q2[wK-c_18S94 &=KIl"ZPo^׃ď:^~6ˈutAG DN}#)1eT[_u͹|#h:{ ,us,irb\EAz`ux μ 7%ahVhG5yfh얽5ƨ5EИ,f>w"òZN!!"rK9UH`ݭyj32rn_0EBYA 2pZkXYZ fiΥɭ݂<&é )78к:rNawʎܚ咤zV֕O vn=PL|Àj3ŀ6XZIBXUP5 V1 xt{JҀ Д31c{'i:T';q(1}^X`#_סi4Qhl 59(o>7Z~:vILkNSg@)- rANwӖr;ڨF&Lj^SI]£ne.Ƃt)8rc0؀ob0*-Nsc.!pܞj":|)R aO;6 Cw1'Bn~ƹٱ+,Uv€/0a9SH w6+R[!he'oNvSW,IY保 3rbzs(k|:='p BC 5`{KuTR']ʊrfW2˹WOH}^o&_ѹe & XG 8nZnub;,["*7ck5/Yf؉s}hݥP06k0K3 D|]tGPK@!Wp$mword/fontTable.xmln0'"ߗ8)P&!b; [<.6i7}Ck€i|t..E̘6\y &(<"X"#*`]޾c%q{i(6뻮 4T$c0WyQ%2b.\6*m1.*9e7N6,G%M3q6W:ʴ8H ?Ax͊T+bۀÔ;ʭs#2hfo H8Р( kNBF2̃ڌ>n>_]H q!DtQD[l`SE ftZinV } Kyt {.ir$ o6 ;eNUH@|VHIeGzFUEUlŝe;Q6͝1)Ԃ><2HntJzS#i}Gw<d/c]//ߜjcZ~ݗ<2D}=qvհބo?SĐ枘ys/͜sz̯^ovOˁPK9L word/media/PK@!0word/media/image1.jpgzlP)v { 80.?LD (F(A+bQ(%VU|J 08(_)qY2@A(Cd}$L_@BʓC8/!PP@ Ae& }ʮkW@*@`P(ׅ+]iߨ/~0P< Q@k&SHFz2K G7Ȅ6)Ms( o ^H58cG;-0ԼU3X;ڥ> ~jyH.ӚϋOGp&D=Ktig}WY9n[ cSI}&wpNgXbqM%$)<C{xpǘ P>P[TO,(VY {i-]}r|W4 Y=oRdH.4Z*ל,d6(뙷xaXjXrq-3~88!MI>KnQ1*dT˧ |ee=f!%'FrZf4\lHjK !`!lkKvyvc OU1+v:jrՍu ܰZ賂Mdz4vR;̳ >9ka]lCW)"ؖ^P׊XT݃"уcPSqsGaͭ3鳗uZljƜppwnދ4 )\;q]{Ȯ«":vvܳg}F|b5c>Jqd؇s?^)nyf{VB`xb%q53rg.aK<}TUD)OV8#f,TU==cBz7}VA$xsqWMtNŒ޴a)6ZJ}sS u.D#:8ܢ[TB$}Û§BU[ŶFJ΁Z(F󉐐`~^~%,DoCyR3BW0Oi?;(;Y!x2#~8nQ>. QW2ƩA/XS/و .oiobSqRh~6ˤ5*53~ Nۥ`mVvE2e@*J|ǕDb#>Ns FJ+9Mճo;Cz1,qzena~Ml :ҵ>Z 3śXs1>'FgTV],Rp yta>XWzBCPK@!obword/media/image2.jpg{Tƿsf)PْҒ12gP^pffmfyI25W!^r8o3&fJ:]lM-{{syc x@lXföV( DA,@99sxkwx[hsp `58 ZZ"]?QVe1Qap {.nN\v D!p*-"X$i@Pn!ehGή&np*{ýZڐD4fl!+›YU붩X[/UrKWj_վ1,aFVq|,cj5|3~pbd[BrƋdԁ]N*LW'(QN/)~}-u"8-yXss$!Wonxĸ!]j2|O:yx ;̓7 U%e9Qţxt$*v@eP %L!fV{MJD*/pj憎ۉ|;(ܘ1E/Ÿ:Uz(3ϲJ[ƮzVg.?v>蠍SjBi##+߇3vR+g4֗OBr}(3 ]цŝ=ȍftUpk&I=+V1Da^Ee2>n4'W֧d4DTlymНb>OEg !h^>q az4OpsZ;tDrS5h*ѣ)R(A5z9X?Tdrow3c&s @ⷾi{#UYgY fŶOq". 6|ZUtt}^ԵΥu:=.8TĝS.}uD馔̃*#Ԏ~f*wL=v;$':Ix+ur`ܖյӧv%$y+srN\ 2Xٖ`R48l @ =T{UEZ$/?34ﷸWkdMvM!3L=^8- $!&nwU+FGBRp3 s"HMKN*mI7SΧi۹3gg7ĥU=Mx]vRz7v͡ҍ{ar8 }PK@!V word/settings.xmlVmo6 >`!繱8MKyͮ8~l+VAQUwEaB!IgF{4|Q05Y1@kDdzu_>23= 3V͂12u !1p#C>vȐzjdX &!%IMF̂FbcK&6R{s.+Q5 s"zGl쿲$3qtFsҳR k ĨO>;+Q{94o4='BxZ- @F5W!I*d -'"6A%5yE1CUA{z5<0BAޗI)T *`[ nޮ VWpk|+57(sPG *{5(kQcilqN K@?-̑)W<] F7.?{ `n#x|x7Rq=ۦv~'>MCIj.hփ}aK"I3\jL,ygM>}ek1k,_3 ?L|}*[Y,J4, Oc9,C-H1OtXm[x%Io8qE\Mi|<1,pʧa-r̓ҮPK@!CY qword/styles.xml՝rSw`jsZϖ׮d!)RuUfL?hP~5 r \qy}ZLLs/{,>^WUCiuyj"u۵\A=GyŖq1KSvl:h($d-X\ͷ& ͲtDt"X0HU0D4]̰=50tO *Q5QI#jF`%݊In%JQ$Ґ:nBP xSL/O7垩bj[WZrU=Qiպt}BftFe ^6&fִ) bAm,öqBfz,A/gzZvؖViJ$A-C? o+3NzqƪkUˏF-, @׷/lC&$nGG{R<xTEdr'| ^$X]I B 9f 17DRNDhRyK/z!X ޿X,}!*S=*ۆI67u_G3-KYvۻLu_"5_uބ,I3r<<xt Hք*"P^^Q_/a1<-9=FQ``TݿSuN:h PQ3.OF U?30~6\/馘 UtLyR1߈!_0 ҂y耒ŗ),\l8*YrevDY*EpLde`ysC [1_/i%bzf9\';a kQm@dѺaqޮ$v"[F2OGnW;-#ag-# X\N&dztb:& 6xW-=y);)}eG4OS${o=_xz#S)M=jP׃^8Ʉ{qW;[7vDqǎh=F"k8jHSZMvDAʎ@VpFV07Zx R\F;r@"FR#PFNFQ!mT@.pF8xBQ!mT@"FQ!mTǵ5ɨ6*D hN: ] ).FQ!mT@"FQ!eTdTHA"FQ; ] ).FQ!mT@"FQ!eTdTHA"FQO: ] ).FQ!mT@"FQ!eTdTHA"FYޢ}~~cOQ?r졶GkegZg=DBz{ h{)L2nJ౗q?~ eO&UCil{!±OF >iP2 (=vZa;MjRCVjHp`ܥ(g!MjRCVjHp`ܥ(g!Mj8aԐlŸK QRC EK X!+5$8I 0RC&5ȊRCVjHJ NR,5D5ImQ WqJ nBJCTv̖*l j-UEs˖eKUݲ%[T+[T[d-InTlNj\d-5J˖eKvqRԸlNj-[J˖eKR%ԸlNj\T'5.[-5J˖eKvqRԸlNj\T'5.[J˖eKR%ԸlNj\T'5.[-YeKR㲥F-Rewr(}r;+H;'˛>ć`8yp^py(¢./ߖc)| -46Ivns5;͛F6*cyd/5 ^Yo} /8[짆|g5ϊ}Yc3PX7ao Kk4σ.eSYUX~vc-ZR:/ ns8:j0 OGץu?R~,^7f~lxQƆg#۟+U~1gxfWi6^׎5M2 %?kMn_߮OpioxVr- .V4FjŌM5''RYHz&m}`_>{?=уG6P]qS}z݋_Rgto>C>&9@;< PbbSlā1Ni +̰!UL{wC1VFÅѦ, 80 cIvw.qLM,! 8 1Q(}1ݥ- .Hu05d@LtFIAw7[wP3M_EBU`fbIXōWXȨ1UhRrw"åHq&[bRQ:sط$"{& ̹{GQg:#)6WF%xB9K}uھMМ 铱0z&q+:q;ϻqC|Q'jfQ/ͷ.>}& }s~ߜ漬Ͽ%Ϻ36S2&ܐY`߇l$a! Hp UndY$Jwv?`sN/jrCllY uAi5.0'R㚥J5oB JpVhḦ=g0  Sbb5{&%ɵ'ۋ UZIi Qdi0 kqUsV95wj0M_3n3`h&ӢrC-ВшxjlZS+wH ջopM Gd٦|g&yͯ5}m+X}=Nkfҝg~M/hTxlv<>*yxU_8[q)Z<;jn,q^ٮK!l(>7z3fL`EfbdrGL[:wQp9N. $lLXgHI\?Jgbfs|Ebʛ]fӺz]Vx6%9Tw]Aڳ]PK@!:word/webSettings.xmlN0 ;P徦.!n-8B\͑Oz>{ȎBʼPK C^W*dBg<hXmˋzfؾ@J3QWh54UZ 4AfOMg4O+K8λt뢸QG&P; wd!-:nom>G)vS$ r/ '1ǍJb'm8f%$LW"'PK@!d^S[Content_Types].xmlPK9LA_rels/PK@!N _rels/.relsPK9L AdocProps/PK@!ehdocProps/app.xmlPK@!ztdocProps/core.xmlPK9LA%word/PK9L AHword/_rels/PK@! 0qword/_rels/document.xml.relsPK@!QY*word/document.xmlPK@!Wp$m4 word/fontTable.xmlPK9L Aword/media/PK@!0word/media/image1.jpgPK@!obword/media/image2.jpgPK@!V  word/settings.xmlPK@!CY q word/styles.xmlPK9L A+word/theme/PK@!!Z,+word/theme/theme1.xmlPK@!:2word/webSettings.xmlPK;3pandoc-3.1.3/test/docx/inline_images.native0000644000000000000000000000152307346545000017103 0ustar0000000000000000[Para [Str "This",Space,Str "picture",Space,Image ("",[],[("width","0.8888888888888888in"),("height","0.8888888888888888in")]) [Str "This",Space,Str "one",Space,Str "is",Space,Str "green",Space,Str "and",Space,Str "looks",Space,Str "like",Space,Str "Sideshow",Space,Str "Bob."] ("media/image1.jpg","First identicon"),Space,Str "is",Space,Str "an",Space,Str "identicon."] ,Para [Str "Here",Space,Str "is",Space,Link ("",[],[]) [Str "one",Space,Image ("",[],[("width","0.8888888888888888in"),("height","0.8888888888888888in")]) [Str "This",Space,Str "one",Space,Str "is",Space,Str "reddish,",Space,Str "and",Space,Str "looks",Space,Str "like",Space,Str "a",Space,Str "heart",Space,Str "that",Space,Str "has",Space,Str "leaked",Space,Str "out."] ("media/image2.jpg","Second identicon"),Space,Str "that"] ("http://www.google.com",""),Space,Str "links."]] pandoc-3.1.3/test/docx/inline_images_writer.native0000644000000000000000000000071007346545000020474 0ustar0000000000000000[Para [Str "This",Space,Str "picture",Space,Image ("",[],[("width","0.4166666666666667in"),("height","0.4166666666666667in")]) [] ("media/rId26.jpg",""),Space,Str "is",Space,Str "an",Space,Str "identicon."] ,Para [Str "Here",Space,Str "is",Space,Link ("",[],[]) [Str "one",Space,Image ("",[],[("width","0.4166666666666667in"),("height","0.4166666666666667in")]) [] ("media/rId26.jpg",""),Space,Str "that"] ("http://www.google.com",""),Space,Str "links."]] pandoc-3.1.3/test/docx/inline_images_writer_test.native0000644000000000000000000000150707346545000021540 0ustar0000000000000000[Para [Str "This",Space,Str "picture",Space,Image ("",[],[("width","0.8888888888888888in"),("height","0.8888888888888888in")]) [Str "This",Space,Str "one",Space,Str "is",Space,Str "green",Space,Str "and",Space,Str "looks",Space,Str "like",Space,Str "Sideshow",Space,Str "Bob."] ("lalune.jpg","First identicon"),Space,Str "is",Space,Str "an",Space,Str "identicon."] ,Para [Str "Here",Space,Str "is",Space,Link ("",[],[]) [Str "one",Space,Image ("",[],[("width","0.8888888888888888in"),("height","0.8888888888888888in")]) [Str "This",Space,Str "one",Space,Str "is",Space,Str "reddish,",Space,Str "and",Space,Str "looks",Space,Str "like",Space,Str "a",Space,Str "heart",Space,Str "that",Space,Str "has",Space,Str "leaked",Space,Str "out."] ("lalune.jpg","Second identicon"),Space,Str "that"] ("http://www.google.com",""),Space,Str "links."]] pandoc-3.1.3/test/docx/instrText_hyperlink.docx0000644000000000000000000003247407346545000020051 0ustar0000000000000000PK!ߤlZ [Content_Types].xml (n0EUb袪*>-R{VǼQU l"%33Vƃښl w%=^i7+-d&0A6l4L60#ÒS OX*V$z33%p)O^ 5}nH"dsXgL`|ԟ|Prۃs?PWtt4Q+"wa|T\y,NU%-D/ܚXݞ('NǶlC[74U";9sFu%O0PadX!9AQɨPڀEu~慶HKPئ9TԆJL: ǚ%(af3X0̂ h[eY\Hw`^ Y#U ="q"OKaثh Թkn{OLIХhy$=ɈB;-zR҆\)}(4yZ0DWVZhN _Mct5Q1}v`${?y PK!0$word/document.xmlZ[oE~G?k;vd:U\5TwUvw3c;SAMhKh Q$z 8O̮/\K͋wwf;9g3;>yj2"nVE][̪MTq&.ΪUSou1^rpYYhM q,F <G#cBţ(1c /2bj/ ͠`BMD9^` ZWx؅H|\q+odtCjbME TKk݋\x)Qem :Hy'%ʎzW:{ұ};#Ƣ{h 2[Ld2MqcFD2X,W<()y4ph|Kī}`{Ñ5K3EP^)X%(D<1) DcBVFD:S[M3T4v8._j3T^fy2*V5JN:I\Π1Wz|ň1fse$2ܒOZrBDW,̋x:!˖9.rxvd<GJ֟/7VW~/ޯ\jWk+[k_1m ha;##Sy-CPRilG7h\X-aGǁXeUޏ(,̶/`1Hf/FI}7W q́#m9 =e*}43qA`E&HR*)RLD,]Xϧ OGs {׆aBBޛv9;/DX,*؊ZŽCE,.BTA1\gEo okN)C$)P4RP\dWN(qW%zB:k?G#Jf,yI,o'v&צW :Ƶ;3'H."\2$ *t~&񠄓 `L۠ړj~~㊽M];Mp-w^rKJ``G@J7a\ fUV'g#,]\31Q& UJ e5F>KFu.3wC|TѲ~M\0:`Z)}g[ۼ\[?ZUDcOҸz+>X}ظyy_x]J-^{qJPW6EP^czƍz7A"Zese TTX+m~=ѳaeOca T@?'!ysB)?'8EN#}ױ(-JeL?i$yg!+KygI |^ȉ퉄;cƌMvUf@/ Ly߈d `E0oujVRHA^P^'>}gbJl8:Ό#;&.$LJi{0lms.h0mnv%u\7ͅ? Ags)c^;sl 5}o|c uįho(/:uVkx%((-. #hm9|VWnMk-wI6\Pj@q~o{(Pjխů-K2 `qе&AǠA&c~ʽ%/N>?}GnwQ_/߽yOxejZ8Sh}g/|x72%q$|0{;E7(HѠ,Vf 8θZ耗wq6eH' p#vNWX(LH?x6-np:\z1Th< )d#c5fwR⺏P2bd҆ մ4 ϷF`{H7ֹX e0e 2 .#u$fY2bbCHz6S^\idzDEf u=@H铱dҸ ´$CD}A%g[\ DL3ݖDݏ3<P:zҳ4~Eݝw\C_~T/[Pt=7 ){޴Ky.$o#aGS>peE-&1/·SpQd >LMѹB E&$[kٔlgK"6C½Ea l߆Di0DCC- !gm pg?o7;g0yn=ӛN^[pN妒(-py˹n/SXEhN՚q\n0#~)dQGi q]`f`^NNjuW=%׶޿ɏrheY}m9BACu6%pSS/Z*UkZ8PL&k-[Uj[[,MgĶOU+^)kk/'._>N1*<^rPfL31YNWZNb7lrJqS^> =3x6#^$5B@*4ajukCoG^>h7ڽf*kU^W|iMHnóVYݴVzvݽ?5yYWPK!j$֍Eword/settings.xmlYYoF~_`՘ H6;3 FsjY\BYey.f~48O*CNrZv_XT݀Ƨ~wᜮ+kml0!Gg!#aN|C>t?Ƕ+淇cuΨ:2=sy3JX`eJ;i];gwC/0yl^!;8N6WUa9h#==l[Xm D6ؐ3]u>V;hؿX[rkhC&v/;λv Sh AR`!d@\JE @J(Oht/y}ςq oR2O PLTH iDDr4:A̢ |{ D*T2?0C=# *m!$ S碀xDiP)(܎"^ב+R21':Dg|z!A}#?xގ)9o" eB+$9b dNuH9M8s )~B#ZpNNМ&1 5"D4Q,hN7vT|oTz8hQ'IR"rѕ\ -2'_Ggox143/v4|FuD͏`>!ht,`"  %i2dbvWOnrHLuY\o=y5[}l\F-MQhgS7ڸ۳މáԝ'W}p3 ac+rf;={7uW)ʜ_l/ִ]rJ~ni"%ˢ!Xv ?t~_,pOgiil34~&zXW鳧뢨4=ƪ* ӻa_˻m]iO:] [X|ag:3f|#a2}ʼn3$xrTA2ۤpc4#ڰ@=167QrKMxE4vݤ O!4s)q ţYx6l"WZsߚCk6rv$qsJ]!> `BJJ422({'0F]|q ZK~IGXGw:l uqsf~1if PK!vI@word/webSettings.xmlJ1;l-t[xA}4mLȤn;U/-d>gf==FV}4y9֊k(Bz1uu'(E~%rRRm -!%RF[6&[_f\US}d) wpKnKo2)'ֺS:er,y0|yh}aFW .S[8QOIO~y0e8 VMlWA$d*z.+T<$>+M&N5>J#e^&r#눣W̺?Fb3phdhwz А6!1!N38-O]LcblPK!/ rword/styles.xmlr;Jn"]cWk,IBm Mvj2y (A>"y>"}cx ^2ף /XXd~S@mE|;',%fwer'ɒb&bQ84qQoRYHժ@G /qW|4eZ[BܪV(T"4H,/Ns앗fY~Qm慵LDb4vzϳT~(y`Yr^^fYz,ΗݾϋOբɈe;*plSճSOim ?GB8VR \dBfj޼1 <W"xjm.DĿ.x%z5 BY=bG!_VVPkSVu* .z: ck*{(~[G, vtR;:zԎ^Ԏ4#F6" n8܈8̆8888:hc"8 ]~n?%qw{~nO~ۏ=YT+V6K.KYAXXHU'=$lD<2y&?U9y0wej 7*7`Qxe19xrʁMEʃLfcsX^!y4O0*%4J @HDXlO #X0qFz'+dƙQ3 gF5.>I0)BR9 IwI ,eƲ'"eӚvy2L뇾 Ep]DgdMX"DXJkk|m[~mcpnb#9钅==q(bunl ;lM<e4|qt?XLb#g$,y#g$랑ڧ]~`}@8?1F*u]i6FцU0@uy R|ՀY{:F h)(p/B ڨ6*D '`8xQaQ!Ǩ6*D hBڨ6eTHA"FQ|qQa<Ψ0ǨcTHA"FQ!mT@"PF^FQ!mT@~5ߨ0gTcTH1* hBڨ6*D (p/B ڨ6*Do0*R| )hBڨ6*D hBʨ ˨6*D ]ܢt=f|b+ӨWmAT*7gR/*zDb!%jmu@|ʏM%M]}'}#5Iא#A7v$uN N}T/g2nBL'6 fX&갱#lcP .ڸ V݌uO5[_1۸;ZʢROWn5u1W\O0KЦmU +g " 5 +'D0v'!F'SfnُrD\b{fI(@9$&6ODkb܍s-FoQ0)C밉YBU 1l8J8u-Ү}1T$uvo%YSC@}wd}|P_@6_PK9L_rels/PK@!' _rels/.relsJ1Ͷ4ۋ0&dEԅeq>If9AR6x˪A^c}౽[\Ȍ<)8RMs~~ , g=s2*D !0u2~䪮d̀f[ ml !"2ؖ]D#V`/Q2i˿ j z!31-Oi4y H󕞳Yø߻'vxZlPK:L docProps/PK@!fhodocProps/app.xmlRN0W?D"*4kJ#{X8eNH̛^ ^(în`uϺ*vJ}evT*eWBbldd<"K{yi2K$-x_%LC{L§1ydKGP mdI 4p=5-\~%?jUJd V:cWh\Xjb1q ujof%s!2&o`^}!P1a:TTS$N>+CB3i9_^ (Y(X%$^nCO}`a~z{i;&7PK@!UͫldocProps/core.xmlQO0MKG7@eD o=M{0v yt+` I$E$ŵj9&oixCL kcG&EMµ XoR.fLV&<|qmЧvI kڏkZ2JHJ[ؼN!:bzbln+BYXl靓-XeԨ?Tլ8,ro,fqa%Ijkؗ cҠ΂sp_ww3gem!Y\m5~LI3c}p0Wa4 <&QEU'aqhۮ(hPK:L!FdocProps/thumbnail.jpegiPؖ(h+". SDD Tl BUKBX$s%!@ECD $*"@L"FLXg{53T_έSp ?&9p6@PGmc `hkkt7jdmzm]˺:6l4)g42ܶR}nZ#hYAjZݸt֭3ܶa[?{\Z>b޻i1~چ:@?%h +@Y _{Wx3iQݪUI/еXwAǤ?EIQPt S*嘭v{.Rv_Q$V˜!SKU,{rnlHc3ϙrR#g.qwynY^_ZJľQ#FՊk <~Է_)h^->4Euյ}}OX3c^uPBY]Xo ƴ1Bݒp_1, yҁ5|4wv%xZ&qn:ߘMB ) $΅9>9qܫ@ʘHס`QnVHߠ;- lV)p+LLs! KܺRӧANӠݠuo|72dK a/G4#I7 s1$OjmQN ڹHeI_o4Zf4ՂY1JV' i )ؼ\{NT.wYW6Rss?TT* m5 `0oY >_dfg[4icUb0\pj~ITK\zHxڄ,m.9ft:BEZqP]r%M8nO"@?w Yw[ҒMkqK2 z1o&d"+1&$A%T'ŹIl Ȇ+7'4{󨈹>$><BCG dT9rO >OJ^91wʎp:E6!b|?%X a1 U%ɖ6 ~holL=|/_׬) ](7A%hz䂸lvt v>HSNP'qhTQ'8Sl4q)7]]7z=dXE<3U^كEO< w) JU׉v&,X5&ΊNWLkBgaL_ۖe]&-\/xyShAB-=m))'.ԐAEj$q7sCL|nPZ]h/6S /\2 cd <SG.w2zM*D' O;_}AamLNİ6\]hŨ21].a rUP{~j>t}` hF}8޲q<~٫{e\[GHRf'" vT[m~x!t#bD^s a2 w+} Lm{FxEF#x ō4NM>_*Ά5Dt!rcNMh:gnN? ݝz5Vi Uy1a*g])5zW&oʠs%ʬ߽:nw:/u9nh@_V -mTf~ v)owU-6dK"sǨ\I@I٘$+jٹE aٛ}47}e *oT lgI\]AnB>lAu]Qᦷqh,@* Gԫpݾi=)(4; }V冋@2Tn-0XS#,fZM `݊O^ rn=7Ѧ't:8_>tq:H@fӽ±,YČ:Ȳ_?\e&d.Gz9 Ž5p$ⵜlsUrOȓRX7?y,_h_9(C}t_I"BA]p6C''߲im k`dZAF>ICzΥ:l?$Jt`vm/m?K܁eԻfƈH z[-L8ǵ|4({Ad_.ݻvH>Hqo5c ?NF@pOO ]( '5`h-J-=Q5wT+`oЛwKo"7s-\+ٞ"S\Wha7L4}L30kb(}@˜%!)F\iSZY ?ٹjSTJrC3~bS6r:~0TُggLlӜ/dS n2L]QywOjkV0+W '݆~MǼC? yx(KCޖW)6贃2BU8ϊ$w񋅱djt+Bĭ`|ZLw+hZ07 FEp&.b+JGp*8<"x!ܒRI;>&,bU/Vo C /68.yuN>yu-i O32RHޫItY+I36%n733R0aTu)G.> BYQCU `o)t]*֎^-ꅒbXdhn iPy ~~XFTzz dz).-ȓ|Wow(qJz\s'ψuȝ? -SB(©>%(b Bz&MF/)s̀KbcpىP0qV(YqgdX$YFdE|cz{k/ˆ ˋG>|3YG3-~hk8U毪٫cȱmv ]XѺϑʏ1w6]˖Bԉ]d8?50:\Z˷.)O)8d?̙| sVV2SZW`5Bxi$e3Y=Klg%?J/'I)*l")dtIjn)#ngHRKdrQ?/ݘ6|C,˨q67Fv{d,fw] LSKjp))}0LTh86 !9P`8[ŃcY5aNLJyj&8 qi$(C]yr.-c^OZ=R(EayIҜhC6*1;(word/_rels/document.xml.relsN0HC;qRP^W:$"F4D|Yk70A4NXZb*cOŒE.E26el 7d릷s6c5Qù5t؃vJS^Q%ɜ߃GѦ̘ٔ,*J5nQvi$[ r'S (c%v^#\Dx 'N\Q !!@"4bۂ4 An.wb:Ő}4M]# ZTK_;@I:p'PK@!@word/_rels/footnotes.xml.relsϊ0¾CAD,C2mCIHy aLN(&Yb^ X DgRpmQ\Ji!pR0R&=ЄiqI:'匽 GI~URgS썂7 kؾ묦׿q~3!"Egy,(ƞ=2o=,o/"PK@!ZR;Cword/document.xmlUێ0}(>TB$&6;΍l"HۓϪN\2!4  R!xN3ʔ yBܐ:N+.ĵb )UVi%2|2_N(f40n 56~e!Zu&Q {vX攐q1x ħoK} 6dӕk^"aRA&悻yc|:s. N+MkɔC8jeK^ٵ[s[ͤ22kR~p#ɩVN`y}O H*mX;0B\ФH/N|"J[AlFDp|& 0Fj"-m&V.bVItWr-liCO!P1k -s*QlxU:PyD[s`ϰǻ_a$ (FfyvMvtF~b'xK9ΈKf kϖgɩϚzG͖- sO{8p,!8?r}^.nP:ROgkG%ؿ,]PK@!6OXword/footnotes.xmlo0' hPcxJ<!:RCB8qϝd^VU6F,Z@*aߞ,evҲ/*'m@ƕ ˝3qZ˒a !d2pgz-kJL펣JwHM` qEޘiRNf t'&x[1݃6/ܻ@lJ],͕9Z5Z[ m>C^ x ~w*=yQtx-IUו_m}FؘMmם A٣~j6E ]R˂?l{*v;CV2RiА޿5aQ4{wɌo y7E7]p: 9jMݶ4'hˋ<b`OtMj,ܮZ[^$~1}OL"dg.qpAe7(ĭd[mNۂq|rT][l}>U=u"TjL#}kZ8;(Ѽ<#uOvɝ /PK@!V e|? word/settings.xmlVr6}LAʼXr2ŮZ{S:K 5nb$L9vKDM` XafZE;kUǦ'L*H6Rsbqۘةy%"Q{$F:-Qbiu)lZ'dS)ײ8+ QeQ5$wAdG9 q}S)eqb*x!T k0=MjܰS;Zj]*iԤdh*&DG}\Xю$# HyV y GgАRV* ]6JV;IeATv%ՒZ%T!^ÞBO+ip#"uCZyů\7: ,qxZn~GóE A854=Q847 I3.<~o;c)*W3`ݡymU[7FKlzqf&,F'$,Оc'&K1|?gsfz?V幛wq]WME/g3EWr> c|HF]ClKt;U퓖/вSk+ !b1fRa("d jGT'{i:>xwǂ)1vm(YEh) Wmmw6uiw5Mf#y.8!X(<`b–[NE.'qL?dLP9/q cxfE^NSld{T8ԁsut7<ޯOqI ׊NI?PK@!7>word/styles.xmlśYo8 =qPHfGZ'g-"%闺|ɲCO* >{ﺾG9!˩p}r{J< b??+S\'dGZ睎"MNʅIͣ\v@>"4lb_;nwf$ĊX,Wu޿#il, "3ڳa*JA'qa/ _ %HB3)=Mn+}/!K.d0M!\(]XQ|\ |(ؽ 3n.bە˲>I*Bw2T>V%j,*aV؝<]d;:#NOE5<+V/xI L8 4qHwO_mo›a;N7rlf SxPڌp԰.![%UhoGMdCGo1}g.ʼa¶z^X*z!Xo}Hw|z77:uQ ZPՂ,,7YOTu^ululJi-k`q缳cvZ܎B D8p` sn_&pn(h&vnw ˊG 1 wn7#x@8 xEoA4oG p_(8O,p" x(h `7#x@8 7#xCoG P@Ao M,poG Ż'x@8 跈7 xXh `7#x@8 7.<poZ<ۘzRV<5OrȤpV# :у%v1ykXZK2kB35P^ep6\֓uΜOגZu h*ʄuRnȊj]Nf:v;Swoe9?#/od3̏[+< _jxIkPisӘ.tQ E_׼F]g:A4Ǜ9o\yBh=Ec}.ko\h(+=1 ;?bmf UnSw]JVL~3PsnUoh k#@S+M솈2Od1[jRd. oÁ1u2Z65Iv۴vs>/S?utB~PK@!mxAword/stylesWithEffects.xmlś[S8wf4 @iBY60JB`?J8>F'bIdF~%g*|}@/&ѹ)MxHb?ޯJTyWULHt QH\ D9 ho%dW*E@2+Ÿ wyKHPG="Rn*B&DG0i)lb_Qy/%>80~Nⲱ86SZHHɵ : 'il\E,]LeT:9ή۠_K2!ᇹQ8Fĺ, !l3H6'mL-ILޘ;T:W1F]SnL#bɸgghS(k:'X+(eX6͏/Z,jբ6iZ-jsբ6%Z-j3բ6m Ad5Sx`:4pB{"B4.X0]4,ԁ[S-=ɵ`C7$b{N,lE63cH!}] o8_"Ҟ9…ب!m0۝7t9h G WeRp;"툓7"@pC?sqJsMlyu^W"rpyWX:/?H$:-.A橃v8jv`9Klvuݟ|ixY5 @?BLow\S;cu@n[aD8}sr%;ܶ }pB7}@A7,}󗿣tt7#޿=]!x `7#x^n@AoM,4poG p7 o G p䷈7 xXh `7#x@8 7.<poGOx( 7&x@8 7#x@o G p{[@AoM,4poG prvxX8 7Y=ۘz[ {s*)7)e;Ƀ]>n `Ldl^k]K~΍\Ⱥ>5 kj}yqi8kxVXcW|TgԜQAdX^AʮngR.a=y;7Ĝ?#/k,B,?3?xhIGlxE+[iL:τ"i1Ao;^Չ|e2S2ZOw~Q1ͱm-*!4fWwcyN|RSY,n1Rl_O}* ~#P neoNhKck=\o@C+&ݺ2'T˘-*ZT@T Dܚ:iGu-L'pGہ. ɕPK9L word/theme/PK@!!Z,word/theme/theme1.xmlYKo6w toeVuرۭM$niP@I|úama[إ4:lЯ)ΣM6IIÈ}"$qr.,Db4ABBRnjǤmMeB\m+T*Ym2yBbx6" "}ozbGqloF#h֧{ b%]/SdXIDv@-9TbX*xжjDz/%SKh5~) щ`X:͒=翈zݞSRg췜Δʇ5֬5jqW+ \j+͍zߜE;J+ ՕfBFt22%d5#4f([ˮ>Vr- .V4FjŌM5''RYHz&m}`_>{?=уG6P]qS}z݋_Rgto>C>&9@;< PbbSlā1Ni +̰!UL{wC1VFÅѦ, 80 cIvw.qLM,! 8 1Q(}1ݥ- .Hu05d@LtFIAw7[wP3M_EBU`fbIXōWXȨ1UhRrw"åHq&[bRQ:sط$"{& ̹{GQg:#)6WF%xB9K}uھMМ 铱0z&q+:q;ϻqC|Q'jfQ/ͷ.>}& }s~ߜ漬Ͽ%Ϻ36S2&ܐY`߇l$a! Hp UndY$Jwv?`sN/jrCllY uAi5.0'R㚥J5oB JpVhḦ=g0  Sbb5{&%ɵ'ۋ UZIi Qdi0 kqUsV95wj0M_3n3`h&ӢrC-ВшxjlZS+wH ջopM Gd٦|g&yͯ5}m+X}=Nkfҝg~M/hTxlv<>*yxU_8[q)Z<;jn,q^ٮK!l(>7z3fL`EfbdrGL[:wQp9N. $lLXgHI\?Jgbfs|Ebʛ]fӺz]Vx6%9Tw]Aڳ]PK@!ʳCword/webSettings.xmlQK0wP)k _PYzm\eu r\@!P2/TRP^eL茧:Ms}-$?9%pVcJS5pNi$)ôInK'}SwK{g!e^G"RM͗h3ndYAq)oAl$>ryX^UzE@4WюRk,a1;(qword/_rels/document.xml.relsPK@!@word/_rels/footnotes.xml.relsPK@!ZR;Cword/document.xmlPK@!&+Eword/endnotes.xmlPK@!y&-word/fontTable.xmlPK@!6OXuword/footnotes.xmlPK@!V e|?  word/settings.xmlPK@!7>$word/styles.xmlPK@!mxAZ+word/stylesWithEffects.xmlPK9L A2word/theme/PK@!!Z,2word/theme/theme1.xmlPK@!ʳC!9word/webSettings.xmlPK(O:pandoc-3.1.3/test/docx/link_in_notes.native0000644000000000000000000000024307346545000017131 0ustar0000000000000000[Para [Str "This",Space,Str "is",Space,Str "a",Space,Str "test",Note [Para [Link ("",[],[]) [Str "http://wikipedia.org/"] ("http://wikipedia.org/","")]],Str "."]] pandoc-3.1.3/test/docx/links.docx0000644000000000000000000007714407346545000015103 0ustar0000000000000000PK@!.)!F[Content_Types].xmlN0EHC-J\X $`kIkK)пgBMd{Ɖɫ3$4bZ܎/#Q )(`qlVErgK2nDz>g_͒lFoPK:L_rels/PK@!' _rels/.relsJ1Ͷ4ۋ0&dEԅeq>If9AR6x˪A^c}౽[\Ȍ<)8RMs~~ , g=s2*D !0u2~䪮d̀f[ ml !"2ؖ]D#V`/Q2i˿ j z!31-Oi4y H󕞳Yø߻'vxZlPK:L customXml/PK:LcustomXml/_rels/PK@!t?9z(customXml/_rels/item1.xml.relsϱ0 hoPK)t;JGILcXji߾+t(QE]1hjP >N~j.G{J D60o,W0H9X)ctl'_uݓ|P=;6w#w Ev d*yB1ߪ kPK@!!customXml/item1.xmlI /-JN-VNIM.IM .IUw pԋQR %bJ 9yVIJ%%Vzy@ (]??--39%?475DL?)3)'3?( jUч{Ǝ PK@![UcustomXml/itemProps1.xmlj0Dٻ";$Xq@^ym ,Hri)*{Zf7luS+kd4v ^_d tb A`^$*KspNtאϤٔ<߶oH"` aSZeo!J7PJbkNӒ%~jS\uRvpb?CW?PK:L docProps/PK@!=qdocProps/app.xmlRJ0 CM]وaC2miQܿwjVӼ737o ~[.UYXn,2)o sy!!,%|ޖQ<"{iB1LMc5^ڣ'qZUޠ9`9*EMЃT"INa-LBH(LOTY.A|kt9[ XڤbepBrA }TTK~uZM|laZ/u`,?Y្ܠϻE=1d4N\/*>PK@!}docProps/core.xmlQK0C{fSuq :Q|ɹE$u޴:+r}\.)fߕNfJ(# a2)y\^$ GpuL`.ܔCp9(PqE1++,;.y7R^>nRPP Hو=Wx"+6bOGE>/nګ4@B<,>~qXx!vf ,bPxB|?8qM9^Fn}×jG&-vx [4_-I9Ild9YL8 KdCN-iQPK:L?LVdocProps/thumbnail.jpegi46=tKvkj &$*AM1'`mcUQ RۚCB HB2Yz>k<Z׵kpdJ}?H|?&?ocG?#ᗣ?|G~8ݮ{p??Oǎ_xI꼴+@ϼ*Q}zo|_n5=~w#?| p//\0vDO*u_8l2pw@I j#[=;t]M廜C5%ۜ w-,g t֭.?_TW$^W:+ڿ[ [I碂2sK0*C>Θ64j >@E vm\q(̽r ~%}ȫO.[4e5Z wu¼ \ZJd]ueguĶq,+&AaOn|Pq>fl-K' sonG)@=` +3#YJYfzt!wn\(2EԵgQxns(a̶L\Dvp$̸0'aL}dB?֯fIFCNiǽL=nSWZRY*@LQ"vRVgmh5=L}hsdmÛaSw1?cԡ'RGaXG਩:`i|Y]67OJE]N^toɐvO'Ͱz$ˊ ?<9bjϖrM޺:ZZ>C9Vژ(ݪ9FG%Eh~߅7:~oPQ HJ?cF#JܡH'','65~RN }m 49вy}g5q0+/1Zw#NCEkM(OJZ"c |;2ݕc2ֻ #w*3 ژZfJd7330ocTr 3)v_Ԝ< ނP6#{_lPW~̩D/$RPg)fޗ =zV(5gߗa;Wʷ]z԰MӴKzf靈e }Qh٨Zz rznt탢w?)6(L~sn*9[-ۍ) L\]C[ ;%yU˵8BH{Ǐyk`G:i*Zn}޸OLUV9w޻4_i_XӽeX ugsNN|'Sq.bŊGHB X<`4kɉsB(ߨƿnU 6" )*'E }쏠RBv nB ;-1&$ .F9D`B2̔QmCc Y 5͍UG 21*3`EjA7/p p!S 4_\Npvrb*vj$QA,âWJob5ul;)'JUzzΡT\[_A%[@F"-3/k0EI\;fi06{ !#dfكvyf^]幟TZe<3№ g<8[B6ovc&:Dኴ9x|ᄏ6-HwL*)X7tA*3%d2@=mQfڕX߲~}a766y)"h{v2 gop:b5+ʌ:AZ`w/ >l` ֝ռאoX=?wwJXnoe5jg3" UFQ +*Movf5s+y ]ș7 7 >qnAcƅUz8\53#ܽŨS_\L4̗0Ael+V/ %}e|{)˲C-Dq ^6i-%H`*ARf W }2 w/Nlw3* [Y65{ yo9u th_<#֟=5<'!/^xz^H C@L Tn:/ (eiOsLp&&ɭP$Þͯػ73ĘTiPAKDEo׮n  dVrKdJl7b6dzuOۘkTUd1-VVQ7JK$ccqL^gdmx* ~w<ۯ++?~nN}Wyx*˚qZqKJ޲rm /[:j#1gT +*_WaPHy+ 3v izOo檧,a:Ȑs&[P @#ÿ.eYAБsbzy,T#2aGQ`&lUސAed (X3X7ovmmNr<'*Z>wc(Qv81&)D0YyadĚ`~G?zU%ow,a וX/! 2 {#rgGr?+0`㎞Z|rm!:0طr&:T(=_ssڲǫ%!2m͝{۪~\< ;M9gΎ&nW%vǁۼLp$֣pWG[_6fpٟRh' Pg4H%Cyg1d/;6Oʆv9oԮ|!u~Pr%J3,k}mS+40݉m]V[ܞMsJhG$`z;Vm3qy 8ܖ,1^ErL~A711InlAEݩ#vGdˣ3 FdcJ# =fh3*+=efXF5*'0{8+;N:1F?Z[8o)\}W"Cy=X=h/,C{ar:+92jB:ŃH|tzj +:D%9ykQ-ʌH§Z1|w/l C{){ 5NZwK>iU2)g7Oǭ\{-[u @fuG._^CSaLNWLj %xYJbsw jdt#isn\jY?j&!IX9f?2u&S$̢"h^X@T^P9 ]t]e~;mV_g bbK {樬m/.f4Sd@}=qs3vS԰&tzw)[L*Ŷ܏4_4c#PÙIon)%/ I)N[Gĥc,24ʧ{sÖ1:#iyh4QSv0kEuj3G[&oTJ,gRcr!eӾZ_w#Jlh¡Zvy9;]:㗎L{\2 qWحY4 PF&ɿK!̽Hv",]qWGbb3Ku1QhĵbA%v "Lr17y8aq,Sq뇗Mr |=fŷC{+ Ͼ)m6^sJ5՟&گ^$ \aUO|{*ǍP璚"(fUd!l ,ϒ y3>7xSHDhg!빍IՓ S5+9đ*CStA^wL~o6tU~;ž/41] 찜^!=|Y/$)"×yΌ6P9KuѓQ!mLvp @.8#8)1xA~nA!SgHi-FFCɂ2 _z^N}5A I+hټ-24m{< Z< =O~@KxZ7plD1ݺfk%u^gz\5-!9ʷy*!ӡJW>~;]~yEY+DH*L 'tpfÚIiGN~8~=IJ,BDY]KOvT|saLw2:{x%(Tl`TYZUmߞㅏeEmv7"tT twbMv^kxt4k!(.&ٖ2MtSHHݛup06#4I{sUHMU\k4*XbS/`Cq@>=a.|ד!~":C"=@K07$Pwۊ8AAy8 8kMX,a7tB%ҊC5+3׽ xBt >zSy`aD9~C#]ΦNu'uMKQbʃ j0cwqxnnkJӠ rQ2DӞ%oLTYؙr)ʼn}d< {ql^txBHiɚ^'1U¥g4x^K8~[9/v?7 9֤jx,aҘkGFK~sҔLزXd畦F_֨a+A|Mrʉ$~ί3pj>՘8C+~XֵQ'^ږս2 8Dh??SaE{ozӊn=Ek} L1ރ}\jsg+7h$g_KTq-q:QNRg#~peķ-NOEGj|H I31;;m$:^s#L}V *C+'xZ[=AƴS6&Ձb2/J'[f7͸<ɿ:Z1"vjjv# y.u \P2o 욆 (`>G3/&$Ư2Ru /¿vX;2I oy{łb6-U,l'`_t{l"ӻMhX#(M .mힶw`ś@ol#iNi/ge lZrY Lڟ7Yh'6a y1]*e\ϾGOLNoЛKBF,Pu{&]vWYܓx5)o6^SIdLVt<^쨄SSjl2;0+^>,0VOeanw⽲4/V_0Lb͹;̃-F,[Z302 ?>6kugF&'N!(s|mΰ•p# !2NFCuXen(.yos+%wu UsOnEfl~>^}o Ϲ@ùGJlcj\?yy5nJ-Y猦?nGIkr%תZf8ædx~wמI6^a++$fCj4m5ٳm%`7/tpD)ͧİK|Rir@Z:ew tj^qb'[⏞\J;|<{p8xnԶPzv Qw vt"8yD̶0X%Ʌ*Юo)g֙hD17*O6!͟Xgk_9ɠ @ 8[@ֈבd|I&tR}yghp>8iX͸>bB+*L`hjî:o7'BY5HG]emQIϼ ^)c}z9:EQZEzcGvkoqYMŮT¹NPl Ta頋 ;?ՁlSP'xq7|~|Bр~(3:t& /{dNakRe+:Qn&+wIzSi~'_1SvR"AP+5hFeAw$S+[᝸`ٔ?ERw؏vߴӂwi"*jq`{K&^_>y4~)e+r7NI+a)ONjRΦ(~# Z%fy\E=YX|x^5/=MdޭkZq4u..t)r5q!Zc5s{Nq}&IEp)Kݾ!tIxEx2QպSLrl}UݙW[SUA{~ƹ1X{mҎo,yRï2|C Ļ!]w1Yߩ g0TS;>KgʦՕRt:tlM\rgе1gqss4aceԓku`@;N휒Z"=ny64@B5p Z%%iFhү@%q5 )9MGH2R3Ԝ仞 'Hdled%|m<Nl\oW$"+)K޻-eϲMCkC'Yj#˴΁F^6Ml1jLuҍWJ t-qqE vVx.99SŒ@{cNʆ-ά}ٿGR<4lgDtf¡ݼxvQvV{tk|W;.R$ 0FԓY0ߵݠ#(J?1l}jz>-fL** .zD/}֔6 Ox={.Py|bY'M]yu{.[JQ, &8BB! u(@= ɉ+P]m_&]Ue?~gnET%%9Š蜻8R XU_Z&kq&yxKejX 7%l=9Bf@(bmC F;m%U#"dcL5"xRWN7FW}|f2W#s9%uVhǏҞc59OË|JZ,կW邔AG!=͢-(EtSkuRW֡՜ĬEPZ2Q0il\B6ҥAF$ [VlPKb/=)ؚF^b6. .†K^C A:s. ұL$ W MM,/phke{p:sc4f UGsI#mÒzҀ`Չ{?`D#.6»)mնOwaxL4{d1_N.hX=:5Lۏ UERLMV bbCY_5NRݯM-lqg j8vطwм]Z%JpI`lt#L^;r[@Q7yT 7d_DŽV 5;,pkKG:%^ =}`G;&6Ν 6pL%S}D9-|}!䲬?Wrl햧U1rZl1lX-zi8$]M%o~ ɥc 4R`bheX: ׮ehTܿeqʻt:yiuWZ" *V:-4i[ ݟR碶%Uv&E۳jƹ\$TOy#}>oꐋ$ͷ -z̓s~HlK5KUTTH٫<Ŗ'fu&Pb|4R]\NU+}7dxOwhv~K'9t JM&u⥾φ{6]Hc2)a&!uyS:~\نuO[[L7lxsA?Egüچ3e gkN!)GmCq9R^V[ CS]='yN* MNcj~NdR/?@,MfXwuY|}Մfw8<^Zբ!zTƵݦ@[(R+dlM-7ad]#DcJsX(f^[VJ-gh -[| ZJ۶He֙v `WaM~L $z]ŕZ'ϼ-Z(~.3dJ M!Y|ˍXxl4^:it}{ry |9On9QշwRqGpU?ffDصcNK}e K(bdFkvT@q+{U+vEhD˥!Ts"OՔ˸|6gE%K.?CWcHמVpg@Rna9J : W oQ*s?`h IKdj|;@VtRuwwiws潈kD7o箫 oQ =8|E65w\irX A}nGs:팹t O=/ :;y uD'昦[HPq*; hC\25:>BJW!gO /P@ilḪW9fpOg:t_߉;W36]۵pMY~== _PKV ݍ+x(ǵ~ )E7aP9R-5Qk"g~4OkB Q=v@S (ʂ0#Jӓb;] @CP8>I\g' ~r;H]'DgH? ~)/fk͟,kfzĵ2gkI6q<=+WSy7Va:liVf]AC\3I^qAJ8;n_odvCc{YeJTNl|g>0wϗ]hIp`^쯓]& nk&\p&ϟvW'M2h7n^L:CTI!WJIMayp0*G-^V*ӊ3~V~I^xg-Şb 4;r2hͥ^>{TSԡ&kc((r.:za"78|]M+:z] ж؄KM}b)e,H3-`|#twA/ Bhdh,eSr_1*& ^`F;oTc9ni}q> ~H?cڀXxwABb}CKϚ3_5sm Suሏ9A?^a^JtoWoDᐏeXusj<Ef>?8Qr׋+٘=bWnT]uSV!K:풓:ILH~>4J3qW'}S3ϙ*[r}nC>I}K+k-Bь}&U:bD:#Z,_KsV5scG|mZ`5d׿M;]m?Һ N눴w(KB#FJrVE8vJT# 7w(%x$F{dkr[TŽ74rMe޾Vzg BX͢;舰U ̘Ȟ-NJv9X"\x˹Fj,fiB2Z^EMユ[.leD3{#'u7- FLm_Rva5:!b:qNfxॵ:Pt5ܖʬUBԦcDjEK4yjs d*HdRF:FQ2͍`fKܘr3 .|ݯ^dOpy{2;,RɋQ(lO}F >rI1'UWeuWǝaNYhWYN'< F;b~N{8reǰ{!\T4Vg3v/K "Bsc]}/C57O~tX4۾4 )9Kw|{7 ɜi3WrM PY[=CoO:c;[#CvqU)l؊dd3er@;N&0-b^2v@/g9H&O-okj]*j|Vq.uİ ڮ-;GӦĖ#ZZaͿ3.˼f¥>׻BWw6+e̐~XVXп tWJjf/#+5YaښjOg4ک_ [WB|qc,Ǘ65ШUnV,z߅Ukw͉P#[ҧ6ĝ\k7ORKsz@Ha D}Y1iMcv;"Rxtv_|` o(2Wca4*nz{|`v#VgX_C+fU`lþfVd{GTS+]<30ׁnr4Av(%}6 RJl'N4\r%ƘSt]BLa=nXR1E+_@}zf6Lxi9=,7OW}CjŐ:P  /YH=t_kNS)WEF-ZbZh޿@8w:3[STx?KNA4P %ˆGSjZ5#D%A$!HfSJAjI3Hw{9=$ c8H_|!rb@ŋ8&cxC`9 Z`^nIh~ڎasTcَC!_/aW (^2{in*QV9;Y#:Z=ݍIQ Ț L6kaԞZ5&ⓙpt=(saHKզ"*eY3҂it9+ɶI+Ցw|{3C10g%qeWs-}69iouYy;+~+u}FK"K w V S$Q!} 2![6KcCu߱tIӕ9/ȭtX~IA*BT㓕t=$1j{Z(eSlXw4묁#=dwqb_s+!&^;)\Z)=sݶ%ǩl'ct)8_|ڬ ,Bh%zrsL ~PܰhcvtCUm՟E%^%/МE^&sk+3{W#8?G &Yߜq#x3YYM jX v#7,&q@,U>Rŭ~k%τMRUW֖/(q^)so%+Tӂ}w+j *8 d}aDDgO=YJ̇Xf[43Dx F]Y h3Ԡ'})-/\Tˌ} \C̺ۙ Sz2Z #"̒[#͘}9ΫyjU!W7JTY[%#M(=Ŧ.0>0;QqLߛDŽ -oAFˌO;)$a5=xv|hh&ZB OLI}%zt+7,VOAOFSuQeruM%2\מ/ :U"拐B?l8%ːRF-b__6 8mc>׷ƧަFJm!N S[wYm,PF707b2SxEt$!$FrZ|/)MjT!j[!N5Ś-5(:S.wԀl?1ON^i|sٺ]5]pS#,bߛ?YZuhcf9PH'>QH[r85+sկp$o֤8)&xdCdivC 7,[&p_yI?&t-aE㤃cxoO8[.6:VL{Yr3SȻ1= u-t1^+e!`ŷ%=JϟXm]0FCHN!{uϙ ͕{x< %9EÝ霶T,ytŽp0F7]TM2ps ~aQSθ6Tx(DQݤUfjj p]r+`I02q|e?P %X\T͜)TY^E/AἉ("Y_er~0%fNw՝Xܮ'"yWxS#;(ϱ7^".f&G=C}, oJ#%0b9ݞryry!wit\ڿ%GS3=YԎ^4I@!<uR&HG.4HPL@% >_n,[ (kr>>PK:Lword/PK:L word/_rels/PKF(Ebword/_rels/document.xml.rels]O0K]0 3mζgi ʇKL/Ӟ Ǜ<>X:`<#.o̳$t$2-X6s=6UDۀD#V cUb4 4 /\xqSe ӛF3ymg\Ic%XJ営7Ei :0 PJe wLPst{!SoR/gNפHH&SzUj bwFpC`} ;<|B?%fR4XfPDu|hRފn;u&e3eA^kms< Q PK@!@^Xword/document.xmlXn6}/Xb/|yX h瀖hKD $mIv!Ù3GCw_rLUVSL"d7Uk} (OF@ƒcMD"Lx<t+n#OvFxr,w-9 r:.Z4Sx xd; ,H7iaSuHPǸiq9y8|+ƀjKx3L OҢh04A]poB+#\cդ<QFTDhg0 x5}rwq}EKvOX@F<&( m2@+R ӆ'y-0b>nCSV i5-g tϩi ߚύq囮h+ELӴ4jFzJ̨/-YtT^#S.@$V%/LNf%,H 9IM#u enu X>Z" 2# nЄw(rj3^y~8dmc2G󂗑 'B EPEP_9"~T[kk%9mm}ʄmd9Uw 1QT+>OG OlJԈBo٤ ݷϪNhjB6>˯_D8 ܗi%=HvRY<} =W5sr^=w3uGs>Swh{{}9ms)\@ IvX{Z/5myuq݅z?:_ql_Dl gtw~o4噡ci̳ũGJ\R0y0.hsl0S$po{V vPhvr)YGO+7TwF V4R*z(t8XJ+K%TDtjm9~ PK@!BMword/fontTable.xmlSn0 (YI#rХC>MSQ$eǫw>Bѡm d+3%; % <]\^K̘\Ep5MQvCuDMЊh,|q1Z9yep쇡vtsm$q4P*O%q|w0 54眲7V)χ `!lsm&єY o擄-MIN:wxLs#O#gR@҆hDhHD 'P-6#"E8 >]|Fz#-m7ΉbAItb%˧P-g(EIHnU>F9f}qу8_H'zNx9P<ػԻ&Qܺ#co[adH%DA3%T`&{o J҅wOαƠ c/1e<HwɽA ~a$U0W$e3sy*qkb(XJ*YNmT6*81%YGgQ'yߐYAqKxVSw293})֦P}ק.ro Y.Q<~ J V륤 %~r<+GGd<\.&g2\gIcQpT^ ^ S)tMoXq@ %LQʘٯ$$8]p!,6gȅ"s^SϵZy/gD=q0+J>WlV~.l}d (`!;5$aYrvbeG`6f'hzn ;E:=NWOy1kyg;S>&DR=W) `-"ML4aAoǔnv^ӕ&9e/4dˤh7#D t? ;9AJse0aڽe +xu"^I%y/7H:h 8+k Ķ`im PkA*o[Mxl lP3wK_L_\S _s-@n[a D8}slr%[ܶ }o(&oXhOFirXioGwL x7CoG |"7 xXh `7#x@8 O(8O,p/oA4oG po]!x `7#xP@Ao M,poG Ż'x@8 藈7 xXh `7#x@8 7.<po6s1S{Ha]ATRNR8 :-Ƀ$f11Cǒ]z7tun{yٺ.dfLCi0?n^ކk=W,ւ,M{1X2 AE7^Nƛ38}cƟs׮lS%؞opdz]'Jӯ&Np8Uٓʏs IBoRxs\:/p{ 9[Y{Cnr}Co/^Vn(ק+kfRF}>4s~GG_6#G3 >Gy B')MxH"?/JFTyWeLɸSDY s.qO,aoD*eh?bG="Pn*BD[h,S l"_Qy⧒ Ufl?QXkZdnr%4\g$LKVy{7S(ZgmЯ$YCHanGy=.* H2ɷ|[j֓Rsvß*_V:*hk-$#"ɸgghS(+:'iw-kcMǨ/\1PbdSQfN@ 2g_SL?<*K.vYDcYFt=;<[^ѷv.o#$FZ: TL>I&ȉvVNi̾0v( _  W?g(H^XM3}m8yV[Ԭ9(2.xޠtš#w.F.N]8{ -|XfQEmҴZHEmJZf@Em[-jjQνk69ptD[h(u{wDGIgWei:ӰPnNM3a>ɂ(A)gVq:."](һ/7M0@=.g^BlԐ6Lv ]isQülv,FFa;;.?z;ƐO\?u\{N:?"rF`y8WX:?ĕHt~7;:ځ (ځ,XnZYtgNë5[;lG*t+k`Cƍ-|@n+`R5q_;V g! º ں˿Q:>V:p_.<poG 7&xX8 7#x@8K7#x@8}[@AoM,4poG prvxX8 7#ǿEPBo G poG wn7#x@8=- 7&xX8 7#x@8 w;O,p vmD=Ү~Xy9{/x`&f6ך}ے_z_hnk{ [nn~Md}Oo7/6 g oX5AxQ8fRGh_X2-ATآxu.'͈Iw+,N_񧲼\.kWI-g 6Dy4fB7Sݩ|;1ѹn`/FKoy9۽'{NrrxuBn"r[Fyt}:ƙi&d\<kFeQ\ ȑ@Sg')m9pܢaR}tbi[#{bΎ }I=EhE27Nefy ˆ4HFtAtGLh-f{}?4:mӫ:ќo3* lԺlq=dLp*LP(lKw>آ͂$ jLy\UmК⎧u6r7s 4-[ۃ޹ՓS^PK:L word/theme/PK@!!Z,word/theme/theme1.xmlYKo6w toeVuرۭM$niP@I|úama[إ4:lЯ)ΣM6IIÈ}"$qr.,Db4ABBRnjǤmMeB\m+T*Ym2yBbx6" "}ozbGqloF#h֧{ b%]/SdXIDv@-9TbX*xжjDz/%SKh5~) щ`X:͒=翈zݞSRg췜Δʇ5֬5jqW+ \j+͍zߜE;J+ ՕfBFt22%d5#4f([ˮ>Vr- .V4FjŌM5''RYHz&m}`_>{?=уG6P]qS}z݋_Rgto>C>&9@;< PbbSlā1Ni +̰!UL{wC1VFÅѦ, 80 cIvw.qLM,! 8 1Q(}1ݥ- .Hu05d@LtFIAw7[wP3M_EBU`fbIXōWXȨ1UhRrw"åHq&[bRQ:sط$"{& ̹{GQg:#)6WF%xB9K}uھMМ 铱0z&q+:q;ϻqC|Q'jfQ/ͷ.>}& }s~ߜ漬Ͽ%Ϻ36S2&ܐY`߇l$a! Hp UndY$Jwv?`sN/jrCllY uAi5.0'R㚥J5oB JpVhḦ=g0  Sbb5{&%ɵ'ۋ UZIi Qdi0 kqUsV95wj0M_3n3`h&ӢrC-ВшxjlZS+wH ջopM Gd٦|g&yͯ5}m+X}=Nkfҝg~M/hTxlv<>*yxU_8[q)Z<;jn,q^ٮK!l(>7z3fL`EfbdrGL[:wQp9N. $lLXgHI\?Jgbfs|Ebʛ]fӺz]Vx6%9Tw]Aڳ]PK@!ʳCword/webSettings.xmlQK0wP)k _PYzm\eu r\@!P2/TRP^eL茧:Ms}-$?9%pVcJS5pNi$)ôInK'}SwK{g!e^G"RM͗h3ndYAq)oAl$>ryX^UzE@4WюRk,a]$R/S}.`a@?h}49),IJ_tA.pRTAtފKa*e@/rCsz3/`Iy[;h+Z(oDZ]uŁh,=Z{oPK(O=^ _rels/.relsN1 E|E}S fAC|@xjB{B@Q2b81hV5( 6!t-,#mHU YC/ɛ\D^ O4Lrx妠֯NaǶ,GȈ_B6ܑhx}uΩC{M~Sy(&QJo=qF 4.5>.K}d87PK(O(K)word/document.xml͔n {{K4EKzXUiUZ 02$o?>mz/xؼk SbL4NJv{oB0>P{[Rx'4skD_ x\8yZm+. $/P]'K4H\P+-9֯8r,&)V).iIΩAhBT? ϫNRAz4Z;-{jPY(*G.Χ&y^Lʾ)eܧ2Mo[TĢpAg#H?㬺>q=q3J^PK(O/ڙword/_rels/document.xml.relsԽN0񝧰no(jҥB !b;@CK".|ٲ~u9dI 4u^˧Ac~v9tD#NvK̈ڗX%?ږB2MWg@q1h3P?> 9}+mrb S}$ ۙb>z˸ Y-iRTNblA pY0 (1Bbm2OPK(O4o}word/_rels/footnotes.xml.relsMA! Et]c0z+B(1_.{^y3n88L /$~ݟa]v7Cјш: șt*eWi-`%x .?PK(O2Va.word/numbering.xml͘[o0)=6`.JVմ! m34f#d9oNϑ^pj4S ,I.6w!xX?T%\iDbu,E,^2-Yi^2:yQH) Aȇ &fqSNHc1a$+Qxw;vV4G7Q cKf%el+!xyvד9O?ݤ/{S7Ci6;'0yV46엪щ Qgjf}soa{< H@zQ}YX00K2Ɲ`t & {a\cA߿? u!0,0?*'4CztK㱅(>%+שMxJ&n+^|4 8eaav 'mFCz lFCv 'mFCv 'm(FCv 'm4FC.-AN׀Po F=x:5ͭQT}M/sJƏk&VOraH< #CȸvdώoG&#Ln?PK(O/` Nword/styles.xml\v8}Wxb մ5m)}5\G Hb'!楱A-hs{HDYlAxqָ?p'7)=k,O^B1zGhء1kZmRƇ Io@Sb <77>3 !eh M⦴1}x8ДSg aB/8@ @a\?\9rxk0v/7Yc@/R<\ӌzdc3)>/ _ ^ELA. 8~~b53 +3a8k"B{ZM.@K_KoGJlb&Ss=|\P_&Omd1i, G$5~2X3|69qɇQgi{mr:(`l[((fA[A; "0F4`7442R( qg NǣHt EVimwsYmweI̷)b.{CwH.h"6@Na1|8mlA@I^oMmJ>RTDObl: CiH`V 4<ڻ0 SrP#Mcڅ̙fό7!MI /S œtz1a zp nZ^q:hA%ʝ-\yLϬ88~bYL֠7XTRObɟTBg&(T (R6(FM8<͙wrlcqH.ƆPK(O 2<rword/comments.xml {"xOM{XiKt@i#3&㯥qa[BN"33.0V%v[q7`_[).))GrJb JJ6{ Z:+=dBكQCv^, aW4CAh+Bv1΃ \4lD^-T 2P/e9Jb~a,}ЬK+ ftg BNʼn~Ka믯PK(OnlHdocProps/core.xmlMO0 *6m'uHHEEk>{v혴RvO$|P,I$#Tf$:U}W DŽ BL`-1J؁!ōcL:.|  HH)&mB  Zdx7 zS+<:i}j2v]u/[?jL@n^ $2D*;O4xA&6=*ǧfM2/i׼)sVtUn?#`7ԿPK(OdNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PK(O煟docProps/custom.xml 0{"䮱="F/sw 4ِ]F at/$r< N.Zއkq]{hn #$v@"i0Z)2 \XL~ӬZgGzNUuVf%F_'^fGwOPK(O= word/theme/theme1.xmlYMo6Wl+u:E֦ CDKl(Q $ qaݰ ð@ l_EeSۊ5GKҾ|8"1iܵ أ>u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPK(O%\ word/settings.xmlV]s0}_VoFYNE3&I{Qt['9\W.Nn @i&ө۹\R*c˲5roL@1jݪ4t `TI-ӢR2I-jꮍɂv] R1xTQt+ 5mm OY7]oHݹ$v[]n.U\). dJR++ ֍9R,RDN8vMJAb{.9^K]LBC Tga"(J!fቤ<d܀BT<զ&TP֟U]m,K<iŐ-7/$ l\CQXsS,aY3BsP/̙8׾o⾪u f/C㫔Pkt찆c?1j * 7D^g,z[xf F;hvY4ᨷN`486̆37Z݁?oncfNDP,utQ,&Ν"i +D͌, 6&Vւp9tB~$'yHԪkr +=40&F6kjRn &fW"5| =6Wa:dFE`bEýBUkm5;ė;Ԓ@ݚe}tz4ٔK? ?9Q183~nvW4Ty*!2j&p9PX43P56P#4XSn6v%tykd.H;6%9qڰ<_YfY_!op)BOb .qmOrݓn [@?1PK(ePKτ.OdocProps/app.xmlj0E #e; +AW m 4UBRB0 ܹ3\Ae^ BA|LY B@zGv:QB15ƁYȓms^=%'OLUQ.1w#݈s/TX>>ګK.tx0Hf&`RʋZ0:5 G2$){bbSdBYWmEئ!6 מ{sCcd!v#5<:9r{'p _#0-5:ևt2;4e}@*ѤǺpŭ؈\,<@,,WE;S&o[`V2ipfQt^_Icnαe_(BV>I8te@= gؼK3uC_^ e%s4@'!~=k '$[{vtiS҈QKr6\ʬS^KQ/&F P}8Z ^ 9dxkCN'` P3ҳ&0 gM|Y9'=cYzŁX. =(_/0ȃ=Ck, }=fqV DPhq 2L$1L= 2$[TB9Y5[~/ /< E=N /w^bb)jT(/ՙVO2y)$kzIɶNf!{K#f/g액TRTR*1ئjRjP𹃔RjvDBuDGUK^!z{K#%a!DGmJ"sYdrH._D g;TbM*K*I.oOn8׆\ ,;sGw^??o!a} bs!&A.+cc`Q.h k`[83r7?~$"|nlS_A|ZEB8JU8GFhYWG !(oh,[-knK5c]}dalEwv1x0(AgxdUr\h"`XQ"XvW޹ή )VTe0tzVXNmŞi)w Xxc'l  ۱CThoҾgkI˗ NRG!y(w)]DtΧ"`bj:JJWuA ␗AK&kRa.$a>:_I,v$Np'C+ 4| UW]7@c a~_&3׎+ 6$7c)D%ϳ̒S5Z:LDBٝ3 a`MzZp|ViT-WD8E+ېJ$#Mja-uie.bd<.,M_GZt%v-]EӺWS#Ktᠭ`g҄y,DZREax,KY^_wnn8Nbg/QYC8! E֗ۛ1I"1rQ1'l)糑mdYJhsqK%% bLT]eHd)UkYB #)?KH1"i%l*hKޒd^ ׯ(ٌͦmV[޿(rJhnj8EoDXNxKdaM"cy#n[t}d3>DW Oijpdyp4w[݋v2.7s%YY17 $lqk&(9.״6V@lU5X7.ܯ9gD(:#6wm}`o) =?KnNG% "7}AnwGR󶆊xؼA%̑,H`=K#Z*(bᢚcdP@rXfgBW?̡ZDyk0kNa D)8CGgCJ튳_gP˥rOӣBqs8Bhauw(sG<~PKVh1PKτ.Oword/document.xmlWr0}Wx6Ci3yheVH2~}W/ Lw9+Z_^=p6TY8a@,}sp"!&[b«MI\q"l$rVZ$#3kidnXD9Ť&BZDQ4Rsdaȇ,\8& YkJL~)osL֍ԙcQ#;.B9h17 dGc4(7V%RG+NCֲR-ǨHWULQFXmxnpBj288vB*U[FMFl=4 a`OSPvQ?6d+ #(#9b,k'WxvvV}vsY)d^Vz֗Ԣޅ5kv=*OLk7#&9:@$SL?b'~<H{-hNOJĊ,ivf$Po2((kJ4*4R+TWru~6ݹϦoXs]ct(Yؒn P*dxP!6H[.QA<U:x<{_L-E3- |+Mf~Բ\xZxUՊ,XHeI_{D3kN#` ռ7|ihD\df6"b/ѐEߍ<*kӁnW^ژz%_3λ>υHs^9C_`(λJҹp{UvqQң- p`8nO,%Ē_2S LAȮ Al!LkC5Q7CIaߠo{Wd-.zHiZ?{W&յ`$ڕ`)dC9'.:>PKrŮ&PKτ.O[Content_Types].xmlU;O0+"(qˀJہʌ\ls"B)^wη6`jJ&ɘD΄*y_l.w\M{sCk%ڀJd_mA oz9_Qc8,Ux"DM_fL)8XJ{qJQ7wq,Ad¸* ~ī~H]@ۊ Il/! MΜO)|aqWk}si* r *"Y!l9@wmvǖkiw%S. 9;(*;訇gc_LeuU$jЇd/5͠dK*e[?PK8xPKτ.OrD _rels/.relsPKτ.O?1C@!docProps/custom.xmlPKτ.O(edocProps/core.xmlPKτ.OP-FdocProps/app.xmlPKτ.O) `word/_rels/document.xml.relsPKτ.OkC Rword/styles.xmlPKτ.O&pt|P@word/numbering.xmlPKτ.OVh1$word/settings.xmlPKτ.O 86 ?word/document.xmlPKτ.O' *uuword/theme/theme1.xmlPKτ.OrŮ&word/fontTable.xmlPKτ.O8x2 [Content_Types].xmlPK !pandoc-3.1.3/test/docx/lists.native0000644000000000000000000000115207346545000015434 0ustar0000000000000000[Header 2 ("some-nested-lists",[],[]) [Str "Some",Space,Str "nested",Space,Str "lists"] ,OrderedList (1,Decimal,Period) [[Para [Str "one"]] ,[Para [Str "two"] ,OrderedList (1,LowerAlpha,DefaultDelim) [[Para [Str "a"]] ,[Para [Str "b"]]]]] ,BulletList [[Para [Str "one"]] ,[Para [Str "two"] ,BulletList [[Para [Str "three"] ,BulletList [[Para [Str "four"] ,Para [Str "Sub",Space,Str "paragraph"]]]]]] ,[Para [Str "Same",Space,Str "list"]]] ,BulletList [[Plain [Str "Different",Space,Str "list",Space,Str "adjacent",Space,Str "to",Space,Str "the",Space,Str "one",Space,Str "above."]]]] pandoc-3.1.3/test/docx/lists_continuing.docx0000644000000000000000000004246507346545000017354 0ustar0000000000000000PK!z!0:-[Content_Types].xml (n0EUb袪*>-RxV=QUAl"93dFk%Y?lᤲ}MGDV ,l7CLHmcX9* F -Ì{Q|^"XL` b1y]$,y *R/2Rn{\xG L*vMP. u KW, )68]Y}+ FYS1B=Q0S>Hc q!^mDtsnEX3_ shvqu+X9@w3gSj`g tC|[S9G?+uJP>&/TOy oPK!N _rels/.rels (j0 @ѽQN/c[ILj<]aGӓzsFu]U ^[x1xp f#I)ʃY*D i")c$qU~31jH[{=E~ f?3-޲]Tꓸ2j),l0/%b zʼn, /|f\Z?6!Y_o]APK!)>word/_rels/document.xml.rels (N0HC;qRN/W$#{ 1EM]ZY|ܱvj5h),-g!`./V/KKFY4D#la&V#=$Q7|l/dɵ#hS 7ϧ+IDZ!J 6Kuc=(3E h-`7Ӑ ж, !!+;-mka|7!!>x=yy Bvv8? ~ePK!X;#word/document.xmlXn8}_`=(_k)>/hP$AQvܯ"Iı[4M̙ ?|+ykAuŤE4ZT11E}u2Z"\ :V>rIRT@jTdƨaW%NKFdnN,cx)u J/%U>cUhRQ\y\b}[@Wذ̬;50rZ ɚUzBah4>vEkʁUƍC@X4 XٷTs\.4^°܇~J?=2b!PoaRb&6 VpQuC5?.9ZjƎC5=ٯ Iv:̴ N`I㹐80 -[tVvT:Vv3swvffK4& S.0EgIQ[iUdp$K6Nsy9& 9L4(vݯio_?63bwak((+JDж\JC ͩoyg1j!Fg}O.8(M;P|W󿰵f$tSǒ :Τ1"Bݞ{7+((D܁{m'ڸI0`R~}&Z&a0d~uKt '=gXO=Iu!)>rM(D?nY䃀\T*c[bѤb G6Vf {Y*#hc ǢR]ί$C6³g*n͍pﵝ݊tÖ͈1 jC^Ќ} em.#w" vh!Sؘjklr=+'js}z姉I|FEZ. sJаO9WV'43Xk(41tL׀NUJѮGf˃''jҰNttY9Zқd,֣ZBUhgopr1coeHn뱤xoɧt?PK!Oword/endnotes.xmln06)qRڴPEX!Hʪ>Ét:OSEFXY@ba,A@.*lqjR9`P>"2ce6RFKh87r~'q7 8HC6 tF7k A?J#_#3V;H$uI{AC7zK.[Qܩ4 Rߥf9Bq0hlh{'S%a yuv7/9vyG؟Xme5$<1OTF;@'+RD)֣fʼn4-xe%gltv2_k-mU!*;I|{9zŻ5jm?!+9z>%6PK!d word/footer1.xmlXY~U?Xv}ٽb>@Dq~b o3>]/kN-#]0~i2fÍm脱\nffK~,z^;N{Eb4,Kzځ(L}aDA m* r(f誕 hiqn;\5LzEfISN'fZ!+ƦҼwx~jukڗȍjE 475)  #W$ k>YψL%1"CG+ψq͇$o #Ӽ3.=K5 $ohᯡ+I꿁uw{_g`dF~ i,vY[AºQpr/Mw7]X A'ٹ ^l;.>zc}ЫX ={~2faᴮ:fh,%D.6\%=p3陱@p4[a}UKzmM_Oߩ+QLu5] 6e9'@x-O6Vaqtߕq=ϵA=T¦֛29kʁ5B`lF8y>SV_ mJ?U{%ٸ_,uNqI*83Y)AbZVbJE䋱xfCF xi"J;3Y=1rcuJ$D #1+p5BuMEy䮕論k"lCq  IBUT͒vX[eM,/=~UdϪ]QVJ I{U6[,\(KKhGz4ҬCᅕސDSԇ}OY[V"H교V5UU2S'8vkVyWI篌YuGyވٙ6M^ B$K3ԃOI/!xrG)qb=8!6h% <Ul8p&y'eOŇښ WԷi\2|8^k'OGg^i}j"t'DPm6nޞ>ᖽ \ K%[QF?D6 k8Xc÷'[^y ?g=1J^A*K.J83 DŽ6{E<%Fa7wqYcc;LV.vnwt6>TiUNaɯA~5vHިN7]p_ʊ/^x+l[:^ [lz߁ۮЪv񍗑xUj &UGdc7ˢ\!=g0.hZDNjHĮhE,x5lZ6ZS6\(p |08}L#_S^?ʎ:>/@_}^}?< t!N71M91ha nM#SXsHCf2)6}Af[SJzYt=K,샳 ml-TwlsȠyȔHN؈>t,= z[CrGjZ]ÉFPۈ]У澏L\"b* XÄ=(bɃ9 s!3!B DlnA{<1L )Ց}:cLq؏D.QnQa%Ae`5w12}޾#վ@m D8'c'8=Sd{.շO{!˰uG6ܺxkw[Hn tto/+V⪮$[cLȁǕs9p(UE-,.3p `p*"pq0\; dykZqS],'ri [xAɵ+/rKO2Q /wb}KpV3I m(5YC2!f^EqM[lE!pqbUyIGb>+(ʒ֧FY&[Դǻ;5V+7XҽuB붝o hV2jV9^Ksqާ^j&\}y]Ut"G\ Tk.'8*^k_AɭRK]ϫW^ʠ8zC+C53TG{kU$̍TD# WK8OS$yjQ.bN-ZgR6 wR6-'v/&0A o{Nāw+=J_, (-b 4 G/o}+0tyvM&zFO7NHjtFQt KJ>:VzgQLe+7V*P9 anHQ-Z.-RZ!-]ygJ{,ymK~syR\N?`"*] ݣ0AǪF:Y0 +p iN>áf].RN%ޖi:^!YJ&/ʍ+?#-ךѣi3 #`{pHkԨ%vgnkw@//YVy IdE[Ra(r֛`%`ΠVPceu|t2Po5@~8:Gga͜Awwy{% aAv7 +deld'۟`0*`@ɷ1y$#E0{`~ѡ"ϰbmi>q6C' ]9eu# ,0X* ݜx=8ևh؇ OrE }O%3n#H\~./4/OO&ӧ!Xzs2t}$(JF$)=bۯ/Ey"x'EYf/vvpAR<M9RNBe$IFJ6c1+wvw&5 MKeXyZ,XVTڊQ$ּL(aa >/1%R(a>U%pՀ$|q~bQ$M~5e\g~O"X E%Bt| zAIQ,ܹxfa7S~!d@oIzSmOWכf,bOacCquYKQ_\i{4*Ŏɮ<2g<.x2yl {ˢM?4ZoLe*?*y"zsL:؛D4K>2_:_P"#3n"TQ=iQ4ܸvuDu:CNtP'zP'Ry"FN"< nXͱc%4*h%9?Fs,nZu)lVR< h.ҲѤ3|E#ī2ך!$olA rbxW_-MH6.cR?yFo]3<|U`V[x+V<xף()9W"ob(/%̗ K*;t4`0OC̗y=4`L|3g:A.s &-iobzCaF1l߻zAieLBqDs5mE|LӃAӞfQWz9jY%-'w4bˤ*(|hqKz$Ѳ<h yr=JnY|6Ri˲/^,wEqir>/jJ2 jTgXEv &qeGGɞhwOv_ /o-8 \ ҂ WV^;bpcG nA-$)&;bp#eG[+#Z+hkKk).ՈQ1x8`G"Ё:b`G;*"Ё @0\B{\B{@@tB:P!T@jT@*DUG**w THq THA*D"Ё @tB*PSB :P!T{B{\B{@@tB:P!T@*D;*"Ё @U#ڻ**"Ё @tB:P!)P!TODi~ޱ?|cQ&j8*5YW|cbeYUD>??Ӥ|yBPK0rMKyz:Zߦ%]M);}Lxj1k氊!ᾖa+=nq޴>XOG ±P91T4;azvPV ^X; &5 3j'`']jrܤ #VjHJ8 NR,5DI 2ԐR쐭w!YjrRCVjHJ NR,5DI dԐRC.5D9K Q}RY(AX!7 qs![jX;fK c4eKM섡 CePzZ1xa(vԸlKj@R%ԸlWj\+5.[K˖eK]R7vԸlWj\+5.[K˖eK]R㲥.GvVԸlWj\d-uI˖eK]R%ԸlWj\+5.[K˖eK]R㲥.qْUj\+5.[ڒ-Z`l0qpyQ3~YTG,I`>e6Cw?wuKim+|8qem>|%+VSV[R%.ŅuMk3]R/]ݼR˻YUu^m4\Z묺rR2+Eύo+(,֪?HV Y(;ИKw?/evڅ?D,[c@_Gu7@ʛ﨔oETo~c"A6-Mnkg.<+QsYu_uš`6#Bmn*Dħ˜uh6F[ ܀^mYmHy"~ $1 = g`=>+ѿI?qv؉|EkW}9nj*juՐ;MjfG_'<+W=-l-0:j:2iY*m ?V#rlEjxv8Ş==||N_2SE-3۾s{s'y.=L8K^w"Jx@S)mn7,սvk̞6 6|r*|Gٹ 3Ô>wy4txʦVN bS<h-mZͬڽOs/V]dջM 5uu]\Sk:d.WmO'XHZeH|JY#Sэ;bC=ToCTMmVs*TiUFGd)Պq)'˒7[UWG\] L'9~oesN:GtnٜrwVoHr }!ט1%mqdsbLlu Lԃ ԌQWESDϱ; H8BoK_\my:s^Qٚ~>]W"L}uq=4HtsBP{W#^.XWPK!3S(word/numbering.xmlXN0}_iKTZbV+&Nk_d;-ׯI ȡy(/393z[d慗׃$ "򼼘x=!I@F yPx7߿]$+ȕaOa1ݱxmdSb .1941>MSCGyGA1Bp3e(eJ9RmǀB3 eH+`da9Cȴp\ roqdAC"͍>AU4Xm-άݎr`8f0pȈNpxDꋿvG>-9?9YNC{ [`Iާ&Nsiq<}X*ST{Y{7䀕w{dƄ(d3o0_{g=-̞6Fiia%1ˬnG0*4V+Z]0riJU% %: *ݏ4, "+"Uw kS@1/%%R(K̼G)O'US#rsʺc~%E GPG䒣*%09*iFy%3?%nF*=JԷw+˭W \<D+ -cD|Ha)rzHR}/Z˱Q4Z?=nx{E]wBo0hխ7ޤxխEDz.Ea1zFݚް zN FzZݚި zNMKQ7ޤ zukz.]uBoXZځ0iihh0 2 </ip?֮\= q1@m;O\0-uAݡ.>}c{3gC4]vzz24>XsGQGu|Q'HF& xo&*>gd]-P _-[cR=PK!=G)word/fontTable.xmlT]o0}` P(jhKI]klCƿߍ}Erν>>9:7w?D[n0:`53+)~ˮ9OJyw/0;)jE\Q70P,Uë]GUQ/r!E !׸簘?Q\?\ѮsjcW5;߬d˧{xH f3tlIX)`|A'PlmA 2)'޵CvF!C}<;ӣ9G&Y1k {DvyRV'. ?2Ήd.#pRI'Dp_PK!QddocProps/app.xml (RMO0 #޷t| &/ !֍sm40w~__F';AYHg,MH[(S-u0N)i!'C(LXunX56"LlRZ߈H-K%MdgYvpXL@]/iae/lEDMj`BA~A0>/,kᅌd?6J9)Q`˘&8q Ob3`eGmC+)4.im^ K8aZdkG붊kW[܆}gϑ78Cz$icFX5(x򺣧YSa*]N3F~cdPK-!z!0:-[Content_Types].xmlPK-!N _rels/.relsPK-!)>word/_rels/document.xml.relsPK-!X;#E word/document.xmlPK-!|;\ word/footnotes.xmlPK-!O@word/endnotes.xmlPK-!d !word/footer1.xmlPK-!R%#gword/theme/theme1.xmlPK-!p3h{"word/settings.xmlPK-!,T&word/webSettings.xmlPK-!@МQ r'word/styles.xmlPK-!3S(5word/numbering.xmlPK-!^~9docProps/core.xmlPK-!=G)i<word/fontTable.xmlPK-!Qd>docProps/app.xmlPKaApandoc-3.1.3/test/docx/lists_continuing.native0000644000000000000000000000026307346545000017673 0ustar0000000000000000[OrderedList (1,Decimal,Period) [[Para [Str "Foo"]] ,[Para [Str "Bar"]] ,[Para [Str "Baz"]]] ,Para [Str "Interruption."] ,OrderedList (4,Decimal,Period) [[Para [Str "Bop"]]]] pandoc-3.1.3/test/docx/lists_div_bullets.native0000644000000000000000000000027107346545000020031 0ustar0000000000000000[ BulletList [ [ Div ( "", [], []) [ Para [ Str "one" ], Para [ Str "two" ] ] ] , [ Div ( "refs", [], []) [ Header 1 ( "" , [] , [] ) [ Str "three" ], Para [ Str "four" ] ] ] ] ] pandoc-3.1.3/test/docx/lists_level_override.docx0000644000000000000000000004053707346545000020203 0ustar0000000000000000PK!+*[Content_Types].xml (N0EHC-Jܲ@5*Q>'mD=4iPm6{D&]D+!&ed"0Ҫ,R1{YP% k e[l2ͶBDjRDt-Bbdkt  ස `d,0zCXX7VY)Hu2GJ$$e 50~0hto4++,5)68mZ}漕\I["7{sFeU̒b,[8̾4d<H0K>uH 5-[}ػ, BB|AY, :PK!T9word/document.xml[Qs8~?f`1)ؘd2do7X-y$-ne Iݤ-5^I]y:MЂI9ֱi BQ6?v $fN8#CH�Y")a &,R٠ՒaLR,S .T4rkAiP![ (fl ɘf7 㕒cN,doYb:G4)-\eֈVQDŽ9WOZ[kuNAl gmy|K?_ m󌹊qO`g N6/ o7nY4Y@2,pZ Σ̪[x"(*2v5vK sj1OM1u{ݲA~^Kݕdm%;$~#WLbWJզ c7-仦~Yk'`+~yf? N~BvXiHjVK#WP1g3+ εK2,!hq ;}ӶK{ߏĹ <{p>'pvB{DjNa=9>*qU}Ҕ=K :Lv/piRM%O# >i`OBJڄ.`3gc Qǁ1]MgYVx4v霢WuUȲ|Ը/XTu>b\vEGH} n4`}vnO]۽nP 5;[JjEζY)&sѐ/~F(AT|ЫOFpqrqO8iXn"kMp8G@,iW]!ʀC" u4J)˕.JTPCוn؟&|y\坞隞=wb7"wgy\8PPrA[GbUs H8FH<,O/t VI^{}G4?B!_$QE!,qzA>] bm\lvV N ]wX{5*.:v•MHàW r0@Eu;kLd} 1Tgy0rAUVv,.PK!꾰word/footnotes.xmlԔn0'"C6juXC8!!kj9&߽2qc\1ȅd *%(=n˼N q Cٴ,#[tmv,3`pc25XMvApo'wʷG+$\>et=.4`PUs=Ktr,l{UXNwnD]PK!,word/endnotes.xmlԔ[o0'?D~$@moUqjc)~ǹ!Z9b/n^d츱TJqDdBmRztMhd-Y~2&f):0l%c) 3!`P$$Lt܊s;k!* dsrC[ 5-õ^֯TnAcX4NS.f-(mZtz׷]_} Mo ? so^7kPllᛕnkx (I[ߨݮ!F/[m6kKx*+OdQCh"IG.fxF %8$ f(a+ʰR(:QN:!#Nf^nŋ|Ǐ_>uey7?}/͓oxǿ_Ag?{rt :>vn6hY8KtP) z #}}(zش4gޏ\ Z=hq랮V'}q>n!td[;`>'6A 7)8QslE.!]Ȉ3&ҹK"VC#2$,l߆m8=FmD@ԦSÌ\4E2_ap!!6|aнi=M$djC">gV$+b !LZI0>%Cېfv$03N)H]NћFhbL1cܾbóaelUdƪ'X@c0Bvb#,P#^ \u5^hjRա!bcZoF+x]pr@ζ9@X U-݂LD'-6MCQ$ykQ O-өwT:Ed)mV5c5}4OnbG,г欦4E9d*GdE?Z=Z§>B\P+t#쏇0;ZhiAs 9m3~fLUP83&pVj=6NGsM@2k5eLGZA늀}Lu j-$NE¢_K HRFncT~St1m,k+iD.L0>e_3)i4[*l=\5#4xTIɥ?$̸}$DbPC@[T{Dɵ+Wx2#Y0ua.Ub=!XuHGc-Ue1rm1άGxߒQDgZ(du{M'tsWfP9ķۅD.i\ ִ珏wXey`\^庢[BZAM1PFMjX[fqڷfԪ bUW֋mvx"J¯+4Uv/9'AzAJ?(yuRjzVC0⪟=t|oǷǫR܈ewt# k ZF5J^ڥWuf5WռvPK!#e word/settings.xmlVn8}_`:lN8E|ۦۢJ?i/Iqbd'"ۢO̙g~YgGRL":DSD_˨ 1)$:}1;B茗hkLz􅬈p-G>զǑzn)y -((jIT+5!Jj6 2e͉0.cO5H!hnCݏ6, Ko)*%K5\g@*@Ϲ/ wE IVǕ_e'B/  T @E 򛔼*JtG= `F53ȍeq-R4D*fR%Y43S-VUdkikh2.#OP@Us4 R! 'Q7_CS.Nj8{]"?ИVwp.&0^zn,r ֆBDѿP f2}8TdIA )ܒjEN`oKFk E@Tɽ;ax~1oXF`t q<\ ҫ[_E[$ssrp2ٸgvn++Ⅲg= 8"yF.z@sO\# S]hpkBjm]00BB'#7vn{N6cUN•8L0#hxUaݭ^FпU ) )c DÝ~ ,Pmi."f%Wk_ւ %7G^O>䅐 ;reIuyA@/t1.SWJlcQMB&IL9Tئa | ^,Wp?@9kAwy*sL:'t7ih$k x? (nb=T.EoI|Y.dz>=N2ճ /XX|!yi~uQlp?+%P?eͳP&VEpp8L,&B O cXe&iCh26 yN⊗0n1#JD\`l JϦ$q- ϮRez_$P+ +"?W2-j {wbp`+5a^4=S+|rxX/-h-YzW//fK{>aٳŅ6<V8_f *TCces;1- 8~Jj-_7- |b~ɄTO^} w"x0]]KΣ?L,Stf Σ?Bѱ֦L6֥ܘͬ'ל#LQCm7Y>:vjGSvtT;:}x_#FG%D@qq qh qHq(q:c4N!CW6}~1Hw~O~ۏ?YT+V2K*[IYATLUDӃHSe6;!Fy @+3ULm8OX"#f(3GtW= q25?s ]6@62zn)ƴ-j^oBRHڢQk#זG$-o>ig! e56VDɠKtV"Z9a;xY=JͳHV2F=lxʲoIW2=舋"U5%h\2Ho͚J-𡾾|`t38A>]fꎡE!2=|O^"8} : Cv)$#"fTXJE4W7`ɦthK{fCo }^JT$iü\SGTk:iB 7~`?`/cy ՛Gu5x'cʘk Y@.q93e""sQy``T>00RCN6^ F4ht'ӀQřQřQřQMW+5 bHk Ff,{ B#8AZn2O#ȴQDŽ G|I4͢lQR[ 8Ʋ}>3$&,kGO[f-Ӂp/Z,e:/~5#Nhkܹ۾@Zvi_\Z3L3naqcT` ֕'#;&imyLe?KYo]pP׵89:9ZYݏӍ181(9Q)M܈Iʍ@g+8"e+h '[nZꈙ*0* hBZp* R| )hBZ*D hz^BP!-T@ G } )>BP!-T@ "BP!%T`%THA "BPG qB>BB Z*D hBZ*0* hBZbB{PP!G*D hBZ*D ̽ )hBZ6ᗮl>7nQuܬ"[ b iNQ;.7ԅOO4#_d0Lh%8rMKPEz:o G}I貾)E G/4gl0]ܗ2svp_>n:9?>O'K/S7/,t 1inP C&F=F j XWCjs5LXWCMr5] Q~CՐu5$`]=r@vb] Qޮ(?WՐu5$`] ^WC!ՠJF!jv5DڜEi9n0 C\rnzTK kjA𬖠j㪥܄sM@Ӊ;֍B{؍s5ZrPqՒոjոjոjj\j\j&xW-W-W-]\\\=r@vb]z]ܮUK]UK]UK]UKNW㪥^W㪥^W%qRqRqRqՒոjոjՎj&6$Sx`&Aj/ 퇒nI`?Ie ]mj!ヘdd9>;ׯ׸5˪Nnߵ,U%jWOoG//gUpfS(O,^5j+ nd?uV#[gzq:!׷0;܊G~| 3Q>ֱ|¬sMŕC/sfs_45>L"sg뾸!R+ C[3HB6G²R> hޤ8x/\vM̻*Z7OfB'6ޛiXZڳP\:g殺F?XR/y`r4櫢Z;Wo3߯5!S #.̉cG_9cʏ_ҕ9vy9IT0 h8erYTN7UnĀPm-ӫ+z(E5._PK!3yludocProps/custom.xml (K ,1L3yTHI&p=A2$3i^te]yr*34V= haO~XXǵ0 /`û86Nãs88Bk?Rw4TvxuB_Uo|v]%W:}l&~ )9 -rU@{ a1u6_ZL@[6/UJ4ƚ zAN:;%wЂ0 qxLfF)I^G]Y-OP])u]*϶v-SFF |r8f/^X4yq%vj'ރ;q@[Y˿\PK!RzzބdocProps/core.xml (N0HC{j'4H+$E{h$}{M7J{d4mOh]l!XV9mzɞVKղql ȮӓJRydhX*d"_rjE$llJeXs/ջ\υ8-Ԓ$ljR 84Ђ%" xt`ED]1q>gՕV%jO"UI.ԏ~6un>wv.h*bP)^(}t#;? B0f |q@LeKz\t*<5s]Y˕e)~A1O3ʋƽ` iJoPK!v31<word/numbering.xml]o0'?HlhJN6ip9!~:Xi;W!>{{ ֣olTa^N 2F&lpDt2FxŅq{n3bHhb͓.|bE$M8+زN1r&20˶䫜ЉPa4rP嘊qJqW&Ae_ sжVM F+^2Q5v?%Zrϒ M3Q:w6Uu+RH=h+.;S_E$S+ ;RKt+N)mζRK|Vkkzο}MSKߧH_:l}Z\|I2y\Qs&*[6]okF9(9J2zsBt!bH0de W8{zq;GfUפTO. 6k;G0뜉UO7wSZ7QQqFt%Ot7hgKuS&ל]/)A$N u0k{^[ֶ\®;]?fW b7zam%Cٕam%CޓJa׷z*ֶ^n4ݰam%쎇xG `|1J/(c|OծO8`D!ijs@8N|yO8N{?㳟C7fpppppppN"߫ Ǐ -fpppppppC%_3œhd/Jކ==\hrAӉqG7;\j%H(hr)\n։Ƀ'N'yЗ\]տoPK!)cword/fontTable.xmlܒj0}ƲS֭E@Qd01:Jl'BsӋ ~:8wa{x>i\S?O0J;]F~rۗwwXZU6Ʈ2Tgӎ+#-CYKm'#l@ ;l#a4"ٚg%&_YP3U4x.5πy8PT #_M鳾tҒ]N::'o/ME!bIcbFu(҂9Uq4:={ 5Z ;܈?!o5K~Rt}IIQgX#G 3xX٣ҽH!(%呒Hg'2$2MC PK!zdocProps/app.xml (Sn0 ?7r ZŐba[mϚL'dIԠ׏WzOIsg|Vr.IFgbGZ|<1$ac)QqFiKօN&a]j7N=uh_然OlT\{Ez>zPcL(~' )KԺCD`#wхz/T'W3_7ZDm? .6wע?!jxkwӯKσuoT4b?@LYTߨ?YI߰B-PK-!+*[Content_Types].xmlPK-!U~ _rels/.relsPK-!6Hhword/_rels/document.xml.relsPK-!T9K word/document.xmlPK-!꾰"word/footnotes.xmlPK-!,Pword/endnotes.xmlPK-!g {word/theme/theme1.xmlPK-!#e word/settings.xmlPK-!0rGword/webSettings.xmlPK-!q z"word/styles.xmlPK-!3ylu.docProps/custom.xmlPK-!Rzzބ1docProps/core.xmlPK-!v31<4word/numbering.xmlPK-!)c8word/fontTable.xmlPK-!z|:docProps/app.xmlPK=pandoc-3.1.3/test/docx/lists_level_override.native0000644000000000000000000000525307346545000020530 0ustar0000000000000000[Para [Str "For",Space,Str "each",Space,Str "initiative",Space,Str "below",Space,Str "is",Space,Str "outlined",Space,Str "the",Space,Str "goals,",Space,Str "an",Space,Str "approximate",Space,Str "roadmap",Space,Str "which",Space,Str "will",Space,Str "likely",Space,Str "change",Space,Str "as",Space,Str "we",Space,Str "iterate,",Space,Str "signals/metrics",Space,Str "to",Space,Str "measure",Space,Str "success,",Space,Str "and",Space,Str "initial",Space,Str "workitems",Space,Str "with",Space,Str "a",Space,Str "rough",Space,Strong [Str "schedule"],Space,Str "and",Space,Str "contacts",Space,Str "where",Space,Str "available:"] ,Para [Str "\160"] ,OrderedList (1,Decimal,Period) [[BlockQuote [Para [Str "State",Space,Str "of",Space,Str "Documentation"]]]] ,BlockQuote [Para [Strong [Str "Goal:",Space,Str "Baseline",Space,Str "and",Space,Str "ongoing",Space,Str "metrics",Space,Str "tracking",Space,Str "doc",Space,Str "usefulness",Space,Str "and",Space,Str "completeness."]] ,Para [Str "\160"]] ,OrderedList (2,Decimal,Period) [[BlockQuote [Para [Str "Content",Space,Str "Migration"]]]] ,BlockQuote [Para [Str "Goal:",Space,Str "Content",Space,Str "is",Space,Str "accessible",Space,Str "to",Space,Str "new",Space,Str "employees",Space,Str "and",Space,Str "is",Space,Str "better",Space,Str "organized/archived."] ,Para [Str "\160"]] ,OrderedList (3,Decimal,Period) [[BlockQuote [Para [Str "Wiki",Space,Str "(xl)"]]]] ,BlockQuote [Para [Strong [Str "Goal:",Space,Str "Useful",Space,Str "documentation",Space,Str "that",Space,Str "is",Space,Str "archived,",Space,Str "searchable",Space,Str "and",Space,Str "easy",Space,Str "to",Space,Str "create"]] ,Para [Str "\160\160"]] ,OrderedList (4,Decimal,Period) [[BlockQuote [Para [Str "XL",Space,Str "Code",Space,Str "Autoreview",Space,Str "Bot",Space,Str "(XLCRBot)."]]]] ,BlockQuote [Para [Strong [Str "Goal:",Space,Str "Feedback",Space,Str "on",Space,Str "basic",Space,Str "violations",Space,Str "in",Space,Str "seconds",Space,Str "or",Space,Str "minutes",Space,Str "at",Space,Str "most",Space,Str "in",Space,Str "either",Space,Str "VS",Space,Str "or",Space,Str "Codeflow."]]] ,OrderedList (5,Decimal,Period) [[BlockQuote [Para [Str "Code",Space,Str "documentation"]]]] ,BlockQuote [Para [Strong [Str "Goal:",Space,Str "Useful,",Space,Str "consistent,",Space,Str "tool",Space,Str "supported",Space,Str "comments"]]] ,Para [Strong [Str "\160"],Str "\160"] ,OrderedList (6,Decimal,Period) [[BlockQuote [Para [Str "Education",Space,Str "efforts"]]]] ,BlockQuote [Para [Strong [Str "Goal:",Space,Str "Broad,",Space,Str "discoverable",Space,Str "channels",Space,Str "for",Space,Str "updates",Space,Str "and",Space,Str "news"]]] ,Para [Strong [Str "\160"]]] pandoc-3.1.3/test/docx/lists_multiple_initial.native0000644000000000000000000000030507346545000021057 0ustar0000000000000000[OrderedList (1,Decimal,Period) [[OrderedList (1,LowerAlpha,TwoParens) [[Para [Str "foo"]] ,[Para [Str "bar"]]]]] ,BulletList [[BulletList [[Para [Str "foo"]] ,[Para [Str "bar"]]]]]] pandoc-3.1.3/test/docx/lists_restarting.docx0000644000000000000000000004341507346545000017355 0ustar0000000000000000PK!z!0:-[Content_Types].xml (n0EUb袪*>-RxV=QUAl"93dFk%Y?lᤲ}MGDV ,l7CLHmcX9* F -Ì{Q|^"XL` b1y]$,y *R/2Rn{\xG L*vMP. u KW, )68]Y}+ FYS1B=Q0S>Hc q!^mDtsnEX3_ shvqu+X9@w3gSj`g tC|[S9G?+uJP>&/TOy oPK!N _rels/.rels (j0 @ѽQN/c[ILj<]aGӓzsFu]U ^[x1xp f#I)ʃY*D i")c$qU~31jH[{=E~ f?3-޲]Tꓸ2j),l0/%b zʼn, /|f\Z?6!Y_o]APK!)>word/_rels/document.xml.rels (N0HC;qRN/W$#{ 1EM]ZY|ܱvj5h),-g!`./V/KKFY4D#la&V#=$Q7|l/dɵ#hS 7ϧ+IDZ!J 6Kuc=(3E h-`7Ӑ ж, !!+;-mka|7!!>x=yy Bvv8? ~ePK!m"word/document.xmlXo9~?dwBRTB"*>XBX]EKNo|e޼}jDoô I~%=&)\w7IX"K"@qc&y;yۛ6LBH3*:Njk(M YCeéФPUt LY/2c0;"7$yI@7bWӆV] "vٰqj9($C7L#>b@2 'dElmU^W&[l_F̿g'TA=NI]& 9"7|@K>8Zu@oE>^9/eMk f%!='d' ʝkUo;|'Y6黤>Y뛬z0оYڝ`h!bb˞l?OR7+&qQX#S`D4(ㅴ\BĞdeb۹ VYg |`i2΋̙ *:B6ҥFqI. c:G5Oѱ&$1I?g'w08VDhW^ PʹFKSQL%:D3],뿬B>$te~aGk'sQu3?>]h7xwgKg^: C}%q4{%1Dlg>~<: vOpbI .2 iE2N+rBkœZ/?~?PY;oHZ'.= lϳbxH`; UʃcgP,q"㊍ 뿎q?e ^s ni&z`.yщ6?/=4PK!{Kword/footnotes.xmlO M7Z4Lt?)]]k92mwOSE+FX2Y@baׇ | Ael<͚@ Aʌ!ؔs/Ke-z,TXZ*ޠEݟu(^JxOZ4Y3"P-[tX;0A#&[AmH7C;%&d6 B;U_j[i4YձEL556W 5;)M6ʏm)a_[WG8|lY/81/tLNWJѮGf''jҰNttI9Zқ?g,֣ZBUhgnך-g#k;;UDJ(|L^ϿPK!ʡword/endnotes.xmlN0 x*[ZU`qB%kWNE?qr^#d,,R 1װE>E2U]/OOM  G6Vf {Y*#hc ǢR]$F֡TS[Y3?ihfΈ@SFΈnEЯaKr`ji.NP ;(]DTE|xh Cؘjklr>-+'F1󝓩v1a tgv=-9k;4Yme'41OTFk@'^+RD)֣fʼn4l-xe%gltvVuڝˋõǗ ޭQk4]?}O+qPK! > word/footer1.xmlXY~U?Xv}ٽb>@Dq~b o3>]/kN-#]0~i2fÍm脱\nffK~,z^;N{Eb4,Kzځ(L}aDA m* r(f誕 hiqn;\5LzEfISN'fZ!+ƦҼwx~jukڗȍjE 475)  #W$ k>YψL%1"CG+ψq͇$o #Ӽ3.=K5 $ohᯡ+I꿁uw{_g`dF~ i,vY[AºQpr/Mw7]Ej]X A'ٹ ^l;.>zc}ЫX ={~2faᴮ:fh,%D.6\%=p3陱@p4[a}UKzmM_Oߩ+QLu5] lC u*`^%}jJueu%ob4$%P}]^Aݚn~Ty~Xܒacp XNG]\;A* /lm] 3㝱h/P#t* f#>ϞC<5mfϯd[չwP Q$'x 3$5K{i.fPD0Ϳop7Ai6ta &^3iSS*>V'JOxP9#Q#Tt\!NZ^8q&"6y !$TE,iU!UZBJcPuLO%l,! zWeӻ%q˂⺴dz4G.]/a1^X9 NT1E}t5`%k^ iUS\,>U m,}c7&n4~XQqፘiջـ+N904A=ꉠ$)'qaw!?1# bV ^ņq#wmbw"^Y|~}G}V %sc?e|${tf0u֧+B' zBMՆkn{~<~UMI3ϕ |1ѻ^Ia/_ ioJoX0f{(%86;;|{c;鑝,e]sks=m|$#?#Р|Lh WKs+^mTPvsg56#$Io@mvG}OhCu(VdzjG^ctPI ~|R߷Cdf\Hf㉚ Ama9Z o{Zvo>2I{6JALd V0;(D.yvI%¶s[+Ϧ78L Xk]xW`2ZuH6},:st;4ZD Ws>_e108ݹLr;bUį%rR qX'Κ]k ,uO1-U;fʹ$ ͢ HDM}-bgBZ[.p`2e-fĦZ^}ʾMIaBn`۰8~1+<ʭ 2~varE*.oqx(THVΒWulCsLX{y+2=]1OR~ʙYx_… Ssy\J OEp- u|E/5]&^z~93:-{Eezhچz%s(j̅R: ~*˷vH[St4 %U^28i6ii1o'ްU{ޯɱL>l081wil0iqۡmFՌ6t5V 0aNSFe!` h$eW &v6ޡ\8^4>۩ܯy;l_ˠ%0:Ohhy!1yrh{]8$FRY8M/\ e7ߛ)/%xIw08 g3) }m:s^/j 0M.Ƶo{_3wvCeHI_X/ZHgD7NtU nhuEvDl!}(s]gD}*4t GBhAQb!F1(8Eb N:!$HK';a(,NHbV0r9otA܀-{j@3FE8[%tU{Yx'䶬!s5_ 0:R='y]:YОGZg#ogcS_u pwne ˋaKǍj#n>okO:>Dᡰc}:*:H+MVxtl+ d^hj3 _]܍kgq0`ڹkkz|.Eq/13s _?dW 췶FE(b*@ŃgGԾv/՗෫7#q K6s:h"k@h 1.]z:iu h6 =r^$תMb.^Uw_~jZՏQyN^{@ Z]fmCYB/CPK!R%#word/theme/theme1.xmlYM7c7c;i&%GyFQI]%9 i顁z(m mSxlɖYl`)YZJ4WN㘦z4iqK-p3GܹᎈQO8ӝrKtR7,BVYT<~RU*rq&f.YC@A Ns0pIǑȅ8w/FDloa0'5eǢu=]W"6q1h,) 9Ӝz^[`5P^77]/xʋ~8W1@yѳĤY]@yoV}i(&8l+^]BƔ\۞;l>ZS6\(p |08}L#_S^?ʎ:>/@_}^}?< t!N71M91ha nM#SXsHCf2)6}Af[SJzYt=K,샳 ml-TwlsȠyȔHN؈>t,= z[CrGjZ]ÉFPۈ]У澏L\"b* XÄ=(bɃ9 s!3!B DlnA{<1L )Ց}:cLq؏D.QnQa%Ae`5w12}޾#վ@m D8'c'8=Sd{.շO{!˰uG6ܺxkw[Hn tto/+V⪮$[cLȁǕs9p(UE-,.3p `p*"pq0\; dykZqS],'ri [xAɵ+/rKO2Q /wb}KpV3I m(5YC2!f^EqM[lE!pqbUyIGb>+(ʒ֧FY&[Դǻ;5V+7XҽuB붝o hV2jV9^Ksqާ^j&\}y]Ut"G\ Tk.'8*^k_AɭRK]ϫW^ʠ8zCjz..y=v4pHɆ7RqdશCkĵ 20KqY*Qz1Zn5)fCk]guˉ0݋CE Fozp-=gA&7{ [5h BT}o;W`&49.hvK&zBħi+BVB:(Z!%ʆzΦPYd!u$APn@ l0٠oZـAܓ,qpC Նuj6(ɂH3+脳Hi4WuzgQ+yqҖr\ܜAOk7`"ʞ VU[i߄u8$OƏYh$i_EI>n#(Wiא`$e~yG__^ub[N+ ր;9╢hbjTW&" `;@s T7 mkR}#G%ơ'IDޒ LyZ+3ݫN}y[gӵ#HMUi2%/i۫m:Lj 0|K }O%3n#H\~./4/OO&ӧ!Xzs2t}$(JF$)=bۯ/Ey"x'EYf/vvpAR<M9RNBe$IFJ6c1+wvw&5 MKeXyZ,XVTڊQ$ּL(aa >/1%R(a>U%pՀ$|q~bQ$M~5e\g~O"X E%Bt| zAIQ,ܹxfa7S~!d@oIzSmOWכf,bOacCquYKQ_\i{4*Ŏɮ<2g<.x2yl {ˢM?4ZoLe*?*y"zsL:؛D4K>2_:_P"#3n"TQ=iQ4ܸvuDu:CNtP'zP'Ry"FN"< nXͱc%4*h%9?Fs,nZu)lVR< h.ҲѤ3|E#ī2ך!$olA rbxW_-MH6.cR?yFo]3<|U`V[x+V<xף()9W"ob(/%̗ K*;t4`0OC̗y=4`L|3g:A.s &-iobzCaF1l߻zAieLBqDs5mE|LӃAӞfQWz9jY%-'w4bˤ*(|hqKz$Ѳ<h yr=JnY|6Ri˲/^,wEqir>/jJ2 jTgXEv &qeGGɞhwOv_ /o-8 \ ҂ WV^;bpcG nA-$)&;bp#eG[+#Z+hkKk).ՈQ1x8`G"Ё:b`G;*"Ё @0\B{\B{@@tB:P!T@jT@*DUG**w THq THA*D"Ё @tB*PSB :P!T{B{\B{@@tB:P!T@*D;*"Ё @U#ڻ**"Ё @tB:P!)P!TODi~ޱ?|cQ&j8*5YW|cbeYUD>??Ӥ|yBPK0rMKyz:Zߦ%]M);}Lxj1k氊!ᾖa+=nq޴>XOG ±P91T4;azvPV ^X; &5 3j'`']jrܤ #VjHJ8 NR,5DI 2ԐR쐭w!YjrRCVjHJ NR,5DI dԐRC.5D9K Q}RY(AX!7 qs![jX;fK c4eKM섡 CePzZ1xa(vԸlKj@R%ԸlWj\+5.[K˖eK]R7vԸlWj\+5.[K˖eK]R㲥.GvVԸlWj\d-uI˖eK]R%ԸlWj\+5.[K˖eK]R㲥.qْUj\+5.[ڒ-Z`l0qpyQ3~YTG,I`>e6Cw?wuKim+|8qem>|%+VSV[R%.ŅuMk3]R/]ݼR˻YUu^m4\Z묺rR2+Eύo+(,֪?HV Y(;ИKw?/evڅ?D,[c@_Gu7@ʛ﨔oETo~c"A6-Mnkg.<+QsYu_uš`6#Bmn*Dħ˜uh6F[ ܀^mYmHy"~ $1 = g`=>+ѿI?qv؉|EkW}9nj*juՐ;MjfG_'<+W=-l-0:j:2iY*m ?V#rlEjxv8Ş==||N_2SE-3۾s{s'y.=L8K^w"Jx@S)mn7,սvk̞6 6|r*|Gٹ 3Ô>wy4txʦVN bS<h-mZͬڽOs/V]dջM 5uu]\Sk:d.WmO'XHZeH|JY#Sэ;bC=ToCTMmVs*TiUFGd)Պq)'˒7[UWG\] L'9~oesN:GtnٜrwVoHr }!ט1%mqdsbLlu Lԃ ԌQWESDϱ; H8BoK_\my:s^Qٚ~>]W"L}uq=4HtsBP{W#^.XWPK!<3word/numbering.xml[[o8~_imCNV=?V;r __pKr *Kddå_<{jA9ˑmz׷Z xB߾lx [N8Y+m' F P@IB> M @{Kn;#) `p?c7 Rwѩ7C̕ B#-]{C3"};~憌5]0KfAuL&$XG3D@pB.Kq*sJbٺmz-?WFQ":;"\:!>3$|4{6OJ3~}W _&淪\  f!oYem=f `|d9r NМ6 qBj^2%%|% 0^oֲ=^y^?AR,_!D Q̲XߗE 'Ey4 !L>bt|G\$3:`>};xE34G٭-MrO++3*UY@5OncYue+kQ*ƓFm$< %HxF諷 %j \Dm7O %]HF+["@g~eǔ["3Dveǔ["7~eǔjHXVfE8ht:LU)njqN)00C'lSeN{; ԧp!B8#=w)N}5)}'1N&7ي:5vYJH9C|Z鱣szX+d9EuZVStz\e?sI[}^鑎z|VPRtgx9z{ |dܞ>b5Fsl]ĸ W2e :X1HGKe,@zu8/*cmҫ!P3^Nv.dsw k؜Xװ5las HasNas7`s9xp>LNonzX@^,vR`J$&oj.eNZ;kesNZ;SkrR–+OT-4*T+4|;}g\d^B3=3SW6PK!j*]zdocProps/core.xml (]O0MK﷮ .$F j{5ma:6$pxϓwElAQ"QBFh1CK%y)a`8JJXU `G&aj֪cPP9te jWXQCW{q| SKq UGD$gRmtaȡi &G]>GYWpQ&;ΈNXUUTOeG we)g6,GYf 6q6@mg0Ҹ46W8` $ΒScKa;U~l6>9:7w?D[n0:`53+)~ˮ9OJyw/0;)jE\Q70P,Uë]GUQ/r!E !׸簘?Q\?\ѮsjcW5;߬d˧{xH f3tlIX)`|A'PlmA 2)'޵CvF!C}<;ӣ9G&Y1k {DvyRV'. ?2Ήd.#pRI'Dp_PK!ʠdocProps/app.xml (Sn0 ?7Jv(EŐbm =2 %Abf_?N2Q{Hr&ēUׂ@F;9word/_rels/document.xml.relsPK-!m"E word/document.xmlPK-!{K word/footnotes.xmlPK-!ʡword/endnotes.xmlPK-! > word/footer1.xmlPK-!R%#word/theme/theme1.xmlPK-! + W"word/settings.xmlPK-!,%&word/webSettings.xmlPK-!@МQ C'word/styles.xmlPK-!<35word/numbering.xmlPK-!j*]z-;docProps/core.xmlPK-!=G)=word/fontTable.xmlPK-!ʠ@docProps/app.xmlPK9Cpandoc-3.1.3/test/docx/lists_restarting.native0000644000000000000000000000030107346545000017671 0ustar0000000000000000[OrderedList (2,Decimal,Period) [[Para [Str "Foo"]] ,[Para [Str "Bar"]] ,[Para [Str "Baz"]]] ,BlockQuote [Para [Str "Interruption"]] ,OrderedList (1,Decimal,Period) [[Para [Str "Bop."]]]] pandoc-3.1.3/test/docx/lists_sublist_reset.docx0000644000000000000000000003072507346545000020062 0ustar0000000000000000PK!2oWf[Content_Types].xml (j0EѶJ(ɢeh4NDB81$14 {1ښl w%=^i7+-d&0A6l4L60#ÒS OX*V$:B~^Kڃ /PI~7$ iJ&B0ZDutOJK(HxG L+vdcӻW>*\XRmpZ}HwnMVn-")/ZwB`4 sDXj;A*ʝc֝4[S9> {V4pW&A|d?PK!N _rels/.rels (j0 @ѽQN/c[ILj<]aGӓzsFu]U ^[x1xp f#I)ʃY*D i")c$qU~31jH[{=E~ f?3-޲]Tꓸ2j),l0/%b zʼn, /|f\Z?6!Y_o]APK!word/_rels/document.xml.rels (j0{-;mC s)\[d{CcMZ}EJӃ3bgz;5$uoZ'ijA#zw7TbhXqЄ:-)HAVEH%w ȯ2ٮv#b?ٶi _mhFH6!SIIB4*\}u.l|!8[s˘fpf6 Y ٚx '~PK! word/document.xmlܖo0ߑoNh-+I U븉Uvە4$4ؾ|珛wGj,SrIQITd9xqGaY`$;jwׯnyZP"@Ho5Ǖs:GȒ l/#FYtD KF(*S,IFj-ػrmi-L"6>tlEǠ"c٨^@i؏t8.RtM6Ǝ-gndb8^7/~J^iS"2Jڊ}퉾4V-dTOL6δNK<&מ?ML2 ZMO,F6dw[]>/wFuGcϣ՞3XMV}3 kʂT/8x }Q@wI<[ghíU|I2mM%dfovlgf \y&%{}ю~ 'qOQ]6:t? (8+0셆Ի^j@sQvpP+;x~!#ǝzɪ~jY b)q3@O-f X=4';q:U ++u9%>iRxּBw;k9Q1Na><$1G˫Qgbh֧*_PK!g word/theme/theme1.xmlYKGza5Hk6޵Rkiڵ0`r C B 1cII3-ď] U?4s:G ’[=Wqؘ$aǽ}0,\GHe ,܋;v8:n$|,F096 M.cAoL˵JQI\'A11vJwg|@_"QTcCBcӪ P!qa1;>P$$Lt܊s;k!* dsrC[ 5-õ^֯TnAcX4NS.f-(mZtz׷]_} Mo ? so^7kPllᛕnkx (I[ߨݮ!F/[m6kKx*+OdQCh"IG.fxF %8$ f(a+ʰR(:QN:!#Nf^nŋ|Ǐ_>uey7?}/͓oxǿ_Ag?{rt :>vn6hY8KtP) z #}}(zش4gޏ\ Z=hq랮V'}q>n!td[;`>'6A 7)8QslE.!]Ȉ3&ҹK"VC#2$,l߆m8=FmD@ԦSÌ\4E2_ap!!6|aнi=M$djC">gV$+b !LZI0>%Cېfv$03N)H]NћFhbL1cܾbóaelUdƪ'X@c0Bvb#,P#^ \u5^hjRա!bcZoF+x]pr@ζ9@X U-݂LD'-6MCQ$ykQ O-өwT:Ed)mV5c5}4OnbG,г欦4E9d*GdE?Z=Z§>B\P+t#쏇0;ZhiAs 9m3~fLUP83&pVj=6NGsM@2k5eLGZA늀}Lu j-$NE¢_K HRFncT~St1m,k+iD.L0>e_3)i4[*l=\5#4xTIɥ?$̸}$DbPC@[T{Dɵ+Wx2#Y0ua.Ub=!XuHGc-Ue1rm1άGxߒQDgZ(du{M'tsWfP9ķۅD.i\ ִ珏wXey`\^庢[BZAM1PFMjX[fqڷfԪ bUW֋mvx"J¯+4Uv/9'AzAJ?(yuRjzVC0⪟=t|oǷǫR܈ewt# k ZF5J^ڥWuf5WռvPK!ji word/settings.xmlVێ6}/0\%ٲB/fuSDPeH^wH+論 O̜g~+MU 0/EEn|ٮ` Yp:x/ƀ+g cX ŐO2IdHA(1aEQ<(BFJ% D]w?>B] Yaq0{"gc '9|kF1.Q)lTZ1 $O<~E rw[tTGnu^y}+GvC}bizɑ=)R`evBB9p.U܀ʿ LbUUς$Ed0ZbJ]ϔ#=f;[\LkPEEnIGYB*F *0KE>Wyۓ<볍Q.{|H Q[{9Qsyц[`n3ߞ$^cd8Ě!J u+OKF+H@@kQF;<<BE$ƋR(W[H:nw/dKWq.FrU2;xR~ee7`mB4<zXÈH  QkVUDݚnz 3)XD#[l]$)raA >;xYGN^KɏJo]< (MlEcૂ}%->Piwݢ%v7Qo{۸ޖMm`?@3ׂRqՇejAīvNDk2?FT =EeMI4景Ŭ|P!|> vQ}?JrO蟅pJ4 /c9,g(`zrM]޹lApq@WC6h"&p\߆u |{.GPK!vI@word/webSettings.xmlJ1;l-t[xA}4mLȤn;U/-d>gf==FV}4y9֊k(Bz1uu'(E~%rRRm -!%RF[6&[_f\US}d) wpKnKo2)'ֺS:er,y0|yh}aFW .S[8QOIO~y0e8 VMlWA$d*z.+T,gIĤJg?>o?fYIvgeN,\eՊ'ùJcbX Ub )¤}(j>!Ra$KMTI==4Z*Y7:%/f"Yc&0UT=(>ٳr888Qg/1qxzHTfR&W>i5#^9+d}Z^?*ɳe M9O21ҟp`.?YxBDb46-fbl_sizdɢ~'~L=i5ܳKMMڰocsW_نW,6ϹNJa|~0#̊\UX@wyZJ_Tȣi?8ٶ?nSRmGۦ~scq#'/&KKxyk*ɡEC2Vҟ&hHBlaJ%gf> &(ľ[,^mj:zߪj[5d1eC"siD 8܈8̆8888q1HS'W+ ~n}w.{=qw~ӹw=YR+6K.+'*AΟXYȢᙝOI6SlՎx0-d &ߟ禜  KV4CPyb2fu$|"8y!sCv)v2%IED$ هZ޿L4ݧ%D)W境[z^|jRa Q8lpTU$G=h67|Dj݃_ -^Jey ՛G5z{OI I75lk *YIFŖGG)cy,İ0*%,J H~N62l:%h ЀQ,OFgFgFgFgW"n@R\IIrT"giIOܠ"n9F- %J|F5âQ&RD6;}ڮ0{'.KO-um7z"<.G㽝u1?gi (⺣f6woV[G=#aǻ#7ȓ=#O"pD8ʟuH,Z6ەHȶ<ʢ-ah@uyFQ!mT@"FQ!eTeTHA"FQF8xBQ!mT@"FQ!mT@{RFQ!+?S'+:y+wuU/…RA덇3)=D8K"P'>]vӤ|Ru/=g }#1îoF"+ӛ`y56#nkҵ/Jѻ#54'ٺknpFQ`&G=x}}) tcp&t%Ԫ1&UM+Ӊ Fv6JoT7+5$xI 0RC'5RCVjM`(o!Oj+J X!+/5DyK Q~RVjHJ X!Kj(?ARCVjH`(o!Kj{eKjp"!7qs#УZjD{VK g5UKM܄ }etPz:1xa(nԸjMj XqՒSj\)5ZW-UKmR㪥6'g7Kj\)5ZW-UKmR㪥6qRwNԸjSj\W-IڤUKmR%ԸjSj\)5ZrKڤUKmR㪥6qՒSj\)5ZW-Ai<{^ ˖9C;A$l#Q/V*돴o">MgGQ0+x$UMVpdP2tfMJuB4^Iڄ m ƖnA;ŵ28 ք0X#8+Pw,h'P,1W/Rpwpm}˲cZ_5SF]y/kq nawbϋd[|TYpG_a{x>i\S[0J;]F~/k"2wXZU6Ʈ2TgӎVFچ&2uWNF؀x !|„P|]߽Ybς6D[HB}v+HwfY g *xues"k3eń` gV?"ѕMd}餥3XٓҥN::4 1hγP2`cZZ07%:={`qL!4FTQQ<|T?rs6)pVLI'mTCgfg9= ^(7 M_cp1 PK!qdocProps/app.xml (RN0#QSP+āԴ=[&pl6{6B7|ڙfֆձ5;]ighS|WMn,&a02?aW ^Ƙ˼I/V)-u*Z7Nh(9cBPM _Qd/˓'=%ވ4SR l`tIRgD^D.֍B&6pR$Z,2誔=ͺq`+@ (߂N'^Cxжd+:|yl0&"֮’*{;_M(Af$ W8[bQ@==G0<n_|Z\7G?PK-!2oWf[Content_Types].xmlPK-!N _rels/.relsPK-!word/_rels/document.xml.relsPK-!  word/document.xmlPK-!g  word/theme/theme1.xmlPK-!ji word/settings.xmlPK-!vI@word/webSettings.xmlPK-!; (r`word/styles.xmlPK-!`v$docProps/core.xmlPK-!^ϖxg|'Cc4ҝ!r#sȒ٧qڨة7$}H{9,PK!U~ _rels/.rels (MK1!̽;*"^DMdC2(.Ե3y3C֛+4xW(A yX܂JBWpb#InJ*Eb=[JM%a B,o0f@=a noA;N<v"eӨbR1REF7ZnhYȐjy#1'<犦7 9m.3󭄓YPK!@ Cword/document.xml\nF@? JHڅ.vI"hňIӐ./V þ>~g(JDznD"rΙs?3|0`W"IjVì1yʗS[ci#*GHk/_/PD(/c喝ȲlB/毿>/APQÇBCrE\A9n[{mi\r pC=$B 63!agII-"~k*̵t % mOK5P#4N!#c׉H@%*(?NmMToAlВҁ{Z$s1|S'H%|"(3>2-XK?׌AT+c 4ǵ=gt+Fsj;cefvMXxdsҵNM{+M05Ә{9ND*+Q;\Ȕ/gDo-V,iƾnb1}c#(y\6s2mz<֬L.9SSS%4K.xе> 7(*雄 lxPi΄uK`[,) :<#F]QZ t{n! (a-d ^{y5k`I5Y2$Ɉ/ WM34rR3(@`M Xl.6"jfz3ؘcI!zf^_/xx "AHc`J9Y|pjÞHH᫭hNFAfyB.eKpkGPYBLIΉcҬZ%Β0,2N).D5BM;  ߀yPv~# -Fx(RDPD2hAc "[*3HkixMow#xa"b}`B*XG£ ^#GF&3=mBiQB7|/GFЃ m)虦9m>QzM+_jfߩ[zN3lòXpհ;gAhI[6V># 5ߋʉHiUp<# Y- MC:JI ,Srɏ}M#7iǘu:S]ZӶњVkfn<"`EI6Zg2 IA۵&2ƃF,n0>5ʔN?HJ4. /R70LLDgp8q=Ї|^zF 2ڮ&V)t饁QnNm.Wƚ ʾ3qWZ6'r\ω^PܻG !؁faNVAgҸJS4h;V{ZfX \2iveaZ=kt jBUJTy4RxKdŽ#vk92| FːԬm%&M !;և 0Jgo_7}$g6AK"F5I:E^C.6 $kțoVIeź3}! 4{M-m8N[xky.(vb=81bypu7"`g"QNjNt7zg4vtNmoO\k<<\RQis:6tӠIU9%ٖk-/ j)6A8|1FR4tL]R 2 _P#-:TC#?5 zHnHu)XEEhPŬVzᠨT.W!m0zYoO6Ϸ$phv(pTm1x4X*yUg_/m Wj vf 8-:,{ɓ=sM˘0E׶q^zGz6AUVtI6Z?WS*;V/ʭO39M8_H*f ާn%Ӽ4 S6(EZNJbh5g"D\rF&mn7Q>M غB܀GI\n8ݎo86z3Cȭ3걂Zt~ƫ}?k/>JLw|fVvhtGyGjI3I:[vI>w.Y^\hꂮМfqeƨ\007dLl(.]ŕ+mk7bRs:NEJ| \= 2:aViELqSBs =w7+/hyù;B5Źq3a^)c:Ewx, QpfŶ}B+_\- vg[$J|r />O?ח[ֹyOx흽/m۟v]ˁv[/-5h*Vxv{C+^[vx[Xdd72\լ]/v4Lhw! Te [/yyz?S*Ly~TZ;MW:[m֏oPKPK!ߵL word/_rels/document.xml.rels (MK0!ݦ]ut/"U+xͦlU +ťxq0v)Ȓ: ފڕ HίV/iKԴ=Hqa$ӠՔ]<|jkk4]0f@~RAؔ }UYt|B2ǛQdP#+8$IdUy>숽}mG$9eٔrNx2ُw\m78FSwsJ|yPK!g word/theme/theme1.xmlYKGza5Hk6޵Rkiڵ0`r C B 1cII3-ď] U?4s:G ’[=Wqؘ$aǽ}0,\GHe ,܋;v8:n$|,F096 M.cAoL˵JQI\'A11vJwg|@_"QTcCBcӪ P!qa1;>P$$Lt܊s;k!* dsrC[ 5-õ^֯TnAcX4NS.f-(mZtz׷]_} Mo ? so^7kPllᛕnkx (I[ߨݮ!F/[m6kKx*+OdQCh"IG.fxF %8$ f(a+ʰR(:QN:!#Nf^nŋ|Ǐ_>uey7?}/͓oxǿ_Ag?{rt :>vn6hY8KtP) z #}}(zش4gޏ\ Z=hq랮V'}q>n!td[;`>'6A 7)8QslE.!]Ȉ3&ҹK"VC#2$,l߆m8=FmD@ԦSÌ\4E2_ap!!6|aнi=M$djC">gV$+b !LZI0>%Cېfv$03N)H]NћFhbL1cܾbóaelUdƪ'X@c0Bvb#,P#^ \u5^hjRա!bcZoF+x]pr@ζ9@X U-݂LD'-6MCQ$ykQ O-өwT:Ed)mV5c5}4OnbG,г欦4E9d*GdE?Z=Z§>B\P+t#쏇0;ZhiAs 9m3~fLUP83&pVj=6NGsM@2k5eLGZA늀}Lu j-$NE¢_K HRFncT~St1m,k+iD.L0>e_3)i4[*l=\5#4xTIɥ?$̸}$DbPC@[T{Dɵ+Wx2#Y0ua.Ub=!XuHGc-Ue1rm1άGxߒQDgZ(du{M'tsWfP9ķۅD.i\ ִ珏wXey`\^庢[BZAM1PFMjX[fqڷfԪ bUW֋mvx"J¯+4Uv/9'AzAJ?(yuRjzVC0⪟=t|oǷǫR܈ewt# k ZF5J^ڥWuf5WռvPK!P2 word/settings.xmlVMo8/yKBvMRLIMIq;iiKB͛y3$g> 0a^,rO҈ gߧ k n\[t0P3D9 iC`5$'`шYH:>#JTڄH?!Oۆ\akq 1W[R+~ 'l;F> O^1L@-E bHx8~F r-Z*B: S[pBg5xGX]/(E[_ PK!3U(customXml/itemProps1.xml $( Ok0 }{j/M)ul8!팍>. P0#yWkV [m{/MRAVhZ5(Cc9|9+,&f}HS& +bɚ<HDxsBvz9(# 'eCgDNKuF9eMP9Gy3#Kg{D/oމiZWjwPK!,IRU vword/styles.xmlKs8[߁凜3e;5v≜"! cВI Re/Eo)>~5gBgчAPF"}<x8eo<i^< Ol0/ps\T,a==-{LSmx?T Ef"eLxZacEi>t,Zd2y:K^DŒ(a&s9+>zdP|oJ58q_qc,mp#" sG#JӛTfl+Q90` H-"X}2]ɴȃSB<~)x"T;i.jgyq fRma^X/D$ChARwbc[zO~LΜ X79׆#^l2 /X(L;lVp%x_Ccp}- Y5b+ RLj/GB87JgOMqq-ӹ9O<@k:a)> bX7nSF'(āȭmf.| {5t^ WCj^ !F"lPwqjDsbCsZBsRAsJ@s8q)SV:{g?ݝӹwwNxn nҢfR,xP4*)%ixzA`VMĽi!3wG|^/`&{w< (R_œf˘nk @!2Is#6<6<% #8%gxDD Q|``N #ZX08#~`Tqf`Tqf`Tqf`Tqv9೙ZM1*,$Dnl"zhz%ay9m^%oXtm~hita٦,{j Yx;iqcml (ڐJpnqw"7#'7܈6}B오i[]=YDwʜ,ey~7uݨSs,ƍw܈ ȍ蔉樔tMnD$Fp V⓭z܈7-T@ J@ { RBP!-T  } )>BP!-T@ "BP=Ns/B Z*Dj֋= qB>BB Z*D hBZ*0* hBZ孆B8B{BP!-T@ "BP!-T@ { RBP!-TcaB{PP!G*D hBZ*D ̽ )hBZOG+tUu}+:쎪{fuBʧCSoti,9EYK"P?|~lǦ|Ru/Zs*Gm!o["-mK3S0L=Nw9Tמ8ә\w;pИݿTjZ3Vjlԁ3!H_ PK!@9#word/webSettings.xml_O0ww Ab c~ݠ-Ombxarv9|B a*Kׅx["|,z(H,7&o` 1IJX;]Mu.% 8ECfӰNm=jXr80hx@uc/XtԚkCY@89e]@耄Ur1:Gi7r@aϘ ɑ)91d~][cP+Qלtprm -8K  ee-6/Ϗ<PK!8˃x4Qword/fontTable.xmlܓMn0H'o5S T8ElGgq$X"u<;aP Gr?gwD[n*`k]L15-)qϟL+g+;,Ņs<,+v+i#OGwiYQ'Vn%q1O,_i\^Q+[iSh6hƭ3˲I*; )Vgni+ (HIX'`tc1-#cX>Y1G!F:NI6+m#23T_a ዶ_Q=WTB%-ʈਨҖ2$!K2?Crg@VPc41gTrZX8*XoeE]_ IKXbe8h-+Yk9=X qas=Fioz]!XЃ\|=`.@1~b(6k9R,]M&ˎbqŦ>bBrnxhI#=1(2tګL!G&?6W"/ܣwzڅ]PK!: vdocProps/core.xml (n E&/Y#UU#UJ>v& H};uE%3̙p!<؂BCLq!,[XG%=X4Ib# <86JFL'h圎0lCOH_\*SPSaMٚfG\Q\ tuzcZ3 9 0Gց)Ɇ,k8ŎYсeYqC6{WYy1g.4Gv5]cf:e9QwYM5Kec,3B;zo9nv)z lE7Ұ&4> <Emu|tDFk $T 4?i PK!zdocProps/app.xml (Sn0 ?7r4EŐba[mϚL'dIؠ׏OvOIGxfY p7tuÊ5zkvn7b}RA.18OJ3J;ʴ>v ){h*%W@s&A6*׽TIQCB_? >lm: S$jIxp-栢H=jA|F!XR{Oa\% d)xƑJQ9ZP촲V&=~[ezG\AE2?h+}쨢QX6!aAKS<,fqC0x |n8!=t7ynv0Zg]P:'DCK2.(MCyZ+ĎXhhP&Bs߉~'+YI߰Eg6azK'PK!}docProps/custom.xml (]o0'?X.|VUNqK,g%;'yy,K"$lh<,Z;سT( HzIE:C+Q*m!y^ȐEl(L8.2”9N`B*|Ϊ]-չ!Ctu`Qh8~Md;>1t;.tzzf e:a!II /L x/Y4_I%Fju+"\o%(F f$Կ)DRrL {K?굣 n6`VA=$p]}eY9^I f@JgoO_Su'PK!t?9z(customXml/_rels/item1.xml.rels (ϱ0 hoPK)t;JGILcXji߾+t(QE]1hjP >N~j.G{J D60o,W0H9X)ctl'_uݓ|P=;6w#w Ev d*yB1ߪ kPK-!3qNw![Content_Types].xmlPK-!U~ _rels/.relsPK-!@ Cword/document.xmlPK-!ߵL  word/_rels/document.xml.relsPK-!g Wword/theme/theme1.xmlPK-!P2 \word/settings.xmlPK-!!"customXml/item1.xmlPK-!3U#customXml/itemProps1.xmlPK-!,IRU v %word/styles.xmlPK-!@9#1word/webSettings.xmlPK-!8˃x4Q2word/fontTable.xmlPK-!: v^5docProps/core.xmlPK-!z 8docProps/app.xmlPK-!}";docProps/custom.xmlPK-!t?9z(C?customXml/_rels/item1.xml.relsPKIApandoc-3.1.3/test/docx/mendeley_citations_minus.native0000644000000000000000000001327707346545000021403 0ustar0000000000000000Pandoc Meta { unMeta = fromList [] } [ Para [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "Mendeley" , Space , Str "test" , Space , Str "(prefix" , Space , Str "Hadwen-Bennett" , Space , Str "et" , Space , Str "al.," , Space , Str "2018," , Space , Str "p." , Space , Str "123" , Space , Str "suffix)." ] , Para [ Str "Another" , Space , Str "test" , Space , Str "(prefix" , Space , Str "Seo," , Space , Str "2019," , Space , Str "pp." , Space , Str "10\8211\&20" , Space , Str "suffix)." ] , Para [ Str "The" , Space , Str "last" , Space , Str "test" , Space , Str "(Koh" , Space , Str "&" , Space , Str "Abbas," , Space , Str "2015;" , Space , Str "Lee" , Space , Str "et" , Space , Str "al.," , Space , Str "2011)." ] , Header 1 ( "references" , [] , [] ) [ Str "References" ] , Para [ Str "Hadwen-Bennett," , Space , Str "A.," , Space , Str "Sentance," , Space , Str "S.," , Space , Str "&" , Space , Str "Morrison," , Space , Str "C." , Space , Str "(2018)." , Space , Str "Making" , Space , Str "Programming" , Space , Str "Accessible" , Space , Str "to" , Space , Str "Learners" , Space , Str "with" , Space , Str "Visual" , Space , Str "Impairments:" , Space , Str "A" , Space , Str "Literature" , Space , Str "Review." , Space , Emph [ Str "International" , Space , Str "Journal" , Space , Str "of" , Space , Str "Computer" , Space , Str "Science" , Space , Str "Education" , Space , Str "in" , Space , Str "Schools" ] , Str "," , Space , Emph [ Str "2" ] , Str "(2)," , Space , Str "3\8211\&13." , Space , Str "https://www.microsoft.com/en-us/research/publication/making-programming-accessible-to-learners-with-visual-impairments-a-literature-review/" ] , Para [ Str "Koh," , Space , Str "K.," , Space , Str "&" , Space , Str "Abbas," , Space , Str "J." , Space , Str "(2015)." , Space , Str "Future" , Space , Str "of" , Space , Str "library" , Space , Str "and" , Space , Str "museum" , Space , Str "services" , Space , Str "supporting" , Space , Str "teen" , Space , Str "learning:" , Space , Str "Perceptions" , Space , Str "of" , Space , Str "professionals" , Space , Str "in" , Space , Str "learning" , Space , Str "labs" , Space , Str "and" , Space , Str "makerspaces." , Space , Emph [ Str "Journal" , Space , Str "of" , Space , Str "Research" , Space , Str "on" , Space , Str "Libraries" , Space , Str "\\&" , Space , Str "Young" , Space , Str "Adults" ] , Str "," , Space , Emph [ Str "6" ] , Str "(4)." ] , Para [ Str "Lee," , Space , Str "I.," , Space , Str "Martin," , Space , Str "F.," , Space , Str "Denner," , Space , Str "J.," , Space , Str "Coulter," , Space , Str "B.," , Space , Str "Allan," , Space , Str "W.," , Space , Str "Erickson," , Space , Str "J.," , Space , Str "Malyn-Smith," , Space , Str "J.," , Space , Str "&" , Space , Str "Werner," , Space , Str "L." , Space , Str "(2011)." , Space , Str "Computational" , Space , Str "Thinking" , Space , Str "for" , Space , Str "Youth" , Space , Str "in" , Space , Str "Practice." , Space , Emph [ Str "ACM" , Space , Str "Inroads" ] , Str "," , Space , Emph [ Str "2" ] , Str "(1)," , Space , Str "32\8211\&37." , Space , Str "https://doi.org/10.1145/1929887.1929902" ] , Para [ Str "Seo," , Space , Str "J." , Space , Str "(2019)." , Space , Str "Is" , Space , Str "the" , Space , Str "Maker" , Space , Str "Movement" , Space , Str "Inclusive" , Space , Str "of" , Space , Str "{ANYONE}?:" , Space , Str "Three" , Space , Str "Accessibility" , Space , Str "Considerations" , Space , Str "to" , Space , Str "Invite" , Space , Str "Blind" , Space , Str "Makers" , Space , Str "to" , Space , Str "the" , Space , Str "Making" , Space , Str "World." , Space , Emph [ Str "TechTrends" ] , Str "," , Space , Emph [ Str "63" ] , Str "(5)," , Space , Str "514\8211\&520." , Space , Str "https://doi.org/10.1007/s11528-019-00377-3" ] ] pandoc-3.1.3/test/docx/mendeley_citations_plus.native0000644000000000000000000003376407346545000021236 0ustar0000000000000000Pandoc Meta { unMeta = fromList [ ( "references" , MetaList [ MetaMap (fromList [ ( "DOI" , MetaInlines [ Str "10.1145/1929887.1929902" ] ) , ( "ISSN" , MetaInlines [ Str "2153-2184" ] ) , ( "author" , MetaList [ MetaMap (fromList [ ( "dropping-particle" , MetaString "" ) , ( "family" , MetaString "Lee" ) , ( "given" , MetaString "Irene" ) , ( "non-dropping-particle" , MetaString "" ) , ( "suffix" , MetaString "" ) ]) , MetaMap (fromList [ ( "dropping-particle" , MetaString "" ) , ( "family" , MetaString "Martin" ) , ( "given" , MetaString "Fred" ) , ( "non-dropping-particle" , MetaString "" ) , ( "suffix" , MetaString "" ) ]) , MetaMap (fromList [ ( "dropping-particle" , MetaString "" ) , ( "family" , MetaString "Denner" ) , ( "given" , MetaString "Jill" ) , ( "non-dropping-particle" , MetaString "" ) , ( "suffix" , MetaString "" ) ]) , MetaMap (fromList [ ( "dropping-particle" , MetaString "" ) , ( "family" , MetaString "Coulter" ) , ( "given" , MetaString "Bob" ) , ( "non-dropping-particle" , MetaString "" ) , ( "suffix" , MetaString "" ) ]) , MetaMap (fromList [ ( "dropping-particle" , MetaString "" ) , ( "family" , MetaString "Allan" ) , ( "given" , MetaString "Walter" ) , ( "non-dropping-particle" , MetaString "" ) , ( "suffix" , MetaString "" ) ]) , MetaMap (fromList [ ( "dropping-particle" , MetaString "" ) , ( "family" , MetaString "Erickson" ) , ( "given" , MetaString "Jeri" ) , ( "non-dropping-particle" , MetaString "" ) , ( "suffix" , MetaString "" ) ]) , MetaMap (fromList [ ( "dropping-particle" , MetaString "" ) , ( "family" , MetaString "Malyn-Smith" ) , ( "given" , MetaString "Joyce" ) , ( "non-dropping-particle" , MetaString "" ) , ( "suffix" , MetaString "" ) ]) , MetaMap (fromList [ ( "dropping-particle" , MetaString "" ) , ( "family" , MetaString "Werner" ) , ( "given" , MetaString "Linda" ) , ( "non-dropping-particle" , MetaString "" ) , ( "suffix" , MetaString "" ) ]) ] ) , ( "container-title" , MetaInlines [ Str "ACM" , Space , Str "Inroads" ] ) , ( "id" , MetaString "ITEM-1" ) , ( "issue" , MetaString "1" ) , ( "issued" , MetaString "2011-02" ) , ( "page" , MetaString "32-37" ) , ( "publisher" , MetaInlines [ Str "ACM" ] ) , ( "publisher-place" , MetaInlines [ Str "New" , Space , Str "York," , Space , Str "NY," , Space , Str "USA" ] ) , ( "title" , MetaInlines [ Str "Computational" , Space , Str "Thinking" , Space , Str "for" , Space , Str "Youth" , Space , Str "in" , Space , Str "Practice" ] ) , ( "type" , MetaString "article-journal" ) , ( "volume" , MetaString "2" ) ]) , MetaMap (fromList [ ( "author" , MetaList [ MetaMap (fromList [ ( "dropping-particle" , MetaString "" ) , ( "family" , MetaString "Koh" ) , ( "given" , MetaString "Kyungwon" ) , ( "non-dropping-particle" , MetaString "" ) , ( "suffix" , MetaString "" ) ]) , MetaMap (fromList [ ( "dropping-particle" , MetaString "" ) , ( "family" , MetaString "Abbas" ) , ( "given" , MetaString "June" ) , ( "non-dropping-particle" , MetaString "" ) , ( "suffix" , MetaString "" ) ]) ] ) , ( "container-title" , MetaInlines [ Str "Journal" , Space , Str "of" , Space , Str "Research" , Space , Str "on" , Space , Str "Libraries" , Space , Str "\\&" , Space , Str "Young" , Space , Str "Adults" ] ) , ( "id" , MetaString "ITEM-2" ) , ( "issue" , MetaString "4" ) , ( "issued" , MetaString "2015" ) , ( "title" , MetaInlines [ Str "Future" , Space , Str "of" , Space , Str "library" , Space , Str "and" , Space , Str "museum" , Space , Str "services" , Space , Str "supporting" , Space , Str "teen" , Space , Str "learning:" , Space , Str "Perceptions" , Space , Str "of" , Space , Str "professionals" , Space , Str "in" , Space , Str "learning" , Space , Str "labs" , Space , Str "and" , Space , Str "makerspaces" ] ) , ( "type" , MetaString "article-journal" ) , ( "volume" , MetaString "6" ) ]) ] ) ] } [ Para [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "Mendeley" , Space , Str "test" , Space , Cite [ Citation { citationId = "ITEM-1" , citationPrefix = [ Str "prefix" ] , citationSuffix = [ Str ",", Space , Str "123" , Space , Str "suffix" ] , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } ] [ Str "(prefix" , Space , Str "Hadwen-Bennett" , Space , Str "et" , Space , Str "al.," , Space , Str "2018," , Space , Str "p." , Space , Str "123" , Space , Str "suffix)" ] , Str "." ] , Para [ Str "Another" , Space , Str "test" , Space , Cite [ Citation { citationId = "ITEM-1" , citationPrefix = [ Str "prefix" ] , citationSuffix = [ Str ",", Space , Str "10-20" , Space , Str "suffix" ] , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } ] [ Str "(prefix" , Space , Str "Seo," , Space , Str "2019," , Space , Str "pp." , Space , Str "10\8211\&20" , Space , Str "suffix)" ] , Str "." ] , Para [ Str "The" , Space , Str "last" , Space , Str "test" , Space , Cite [ Citation { citationId = "ITEM-1" , citationPrefix = [] , citationSuffix = [] , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } , Citation { citationId = "ITEM-2" , citationPrefix = [] , citationSuffix = [] , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } ] [ Str "(Koh" , Space , Str "&" , Space , Str "Abbas," , Space , Str "2015;" , Space , Str "Lee" , Space , Str "et" , Space , Str "al.," , Space , Str "2011)" ] , Str "." ] , Header 1 ( "references" , [] , [] ) [ Str "References" ] ] pandoc-3.1.3/test/docx/metadata.docx0000644000000000000000000006273507346545000015543 0ustar0000000000000000PK@!+G[Content_Types].xmlN0EHC-Jܲ@5*Qu&!~ȞI6h{8Ѥ7X2ʚuH)S}߳(0( A7^9MH=pu`[ҭ/Ko;;.A0c'ŬhqWEL8W*)ʼ:ehM.ޒ%\rp§Whi^8  /BS_Xʙ&Q<FJBܜBˤh̎ xRn*!`{d0A1$:ĕ6mOD»ĸ[VL.Fü$ܱp~ںiQ=cmI#o]1nCUvQ5u"Y<T/lO6_PK:L_rels/PK@!' _rels/.relsJ1Ͷ4ۋ0&dEԅeq>If9AR6x˪A^c}౽[\Ȍ<)8RMs~~ , g=s2*D !0u2~䪮d̀f[ ml !"2ؖ]D#V`/Q2i˿ j z!31-Oi4y H󕞳Yø߻'vxZlPK:L docProps/PK@!tGsdocProps/app.xmlRN0#QUPBڰ-{XulLӼ77φ/ ~[֫,`csw)Lmy\xH!b"` eOȺA=wڐE S'BZA?IR+7h,XN/&_>4zS8V&bf \cWLTY B2YALz&P֛ ~V{Sȡ^i)%@,oG,eb `oIuI` [2"`<ˉb16vc;RJuYnY40%Qg}ο1;e}'oPK@!ԷTodocProps/core.xmlO M[jt]fF3n¡u:{8W]EP=&iHZbLfD蹖2d H&Q!l.{g,8`Ҙ ;&KmN)%@PWsR_1vJk\ri+`$~HAG&)ݱ\7tdAt[/T4MdOcwXvVHYH{+( Co |<$!7D -yqZ;$^0 (>e[t߅ǝ+GE]>U?ʳb3=QRޏt[yήgSRXzxt1ci׶ý;ai4_ƭG-PK:L<[o2?docProps/thumbnail.jpegeT[[S?m(n-@ŵiq %)(^%$hB)b x!;χ{|y3{?sZs5cLX~ezd\e_}JSryh@rFQW: CM9♏:qlu)-z0ti7}4(ޑ #EdKǶ*7wB&A:t n0m%PR(Lxhu4Bqٌ}ۆO5KL8LsV=8zCll޼GXsBц:%kϜS;Үw9$SKC3ݗ~`\A~jN۞7.jQn7b F$҄zNJêyJnPWktn45ƫDdWv??ހ':̙ AyA ^@W'- 2#zPmZlBeME뢔8eBvQ -:8MŊB97pTKcD fBX.RmTv?H`WJbeXͷZ(_Zv{cKh򍕀ΰZKxйL.ʲ;ҦoۈϻةmŖCsxکcZQQ.$-$!KFStv2u\ ِ#mi!Ej` )N|͟riPp)r!GC0fbbjW4t}%a6Ʊ)Ӟ qՒԪKk9 x9M|!+/kR)X&t;DC1)_kkfnbԵ'bz]NVڢ~1 vc 3(ϱ{mQW ngo BQ l387H;&O|Zwj7DG8.3RUQQ~m'U_dDJHP!ZѷO}C_nσ0NjKbE=;*l(vΚ/UHhGheSMXuZP@ͲְlgfԦʋ^#}^1m4Н/[1Wr{]DY=8RR,oreb\^%uy)zD+^ӭ\KR -g^zɗzaU Cϥ"1U{S K̢6eVbuU׳⣌F z]2skO;5U8Y' X)zTNh+aF,[% 0X}?*a׵ik 4.R}? L [e"핃$yfY9+zKXRhE̍A7Y~gtpmSkU0N#5! ^{]eU-럚dc"VgLߡ# L"xvgixT;o[dYzҕJ<޲D5x Pȝ$)֚ѧqp}|T]8v^+ ;K +g{d=k.򹹧a!+Z2K$7# y7;ex0$KnWq%sj l$Nt^A]v.wfSX c{= p v SY鍎LO|@o/ӹ6F+ a)HTYi3W{Viʚt/AiziLD]+]fH__뒥nOg3#x2ŰNZ|J& ߝc3<#a)kA)56Ѱshڌ̗bˎ#@Tt{F3> s~ ߖR\S%6OO[< ?H Ď.VbJ.3",/c\Rd iRf쌭0u&>_]$UK-xPNi|Y[" o3g5CZ#(|9F^ . `2=Ɉ?}2^gcOϊ1+ؕG _e* `Q, ^ۉ4>Pi}0 lndmo)RץaA,fK2Rg)avMy1 _><4#2*j;6#Ƃ[^]@Uډ VE!j.-vNJs) $JtúOLnn&;NN׺arA؂š)]VTޤ+:g7+YSe9HKe>ѳұR= #%i~]otFlc\fqi[ Z!F@ 8l:%,늳gikmZJOMaucb__|4x,mu)_C?-|K,'#R5HYؾ0]' &qD7TRLdQNfKKiwC9N(JescSO` {/=O ha]һ]뗑Q7 W:c|;F1H~̀5A?w`Je,G,mX΀fVTQneх ~ˡӭU恿fζ?id5x!۰]?A7F(SԼH뜼 m JiUX M-18B/zZ}sb\[!H q.W͖lui7A| [''dzQlaijbA`iڋ<+8a;V?.YXĈNbr4Uñ⢱%Ei|`KjͶ-9r/Q9Oa19놕d_XB)VQ Xr7G8ꊜgXh sJ/$w[Rk%j6QH!Ⓐws,ƣ/Ui qBad׸,%iӵD2nwPt^Gy5<<^kYb0xn9 6.vMpz*j|n>\~ءtAyRtWg}kط=uAĒz)V.d;/uLCÊ\B54!bl,sv}WFvLS^ !9zvn#iTe2:.o3Μ>Ԗ_Yv(ʥ6˵ʇ&h`o=8"^ͲkW.m;asAOOI̘M+f--~@c<qMyr+ct0ߗhd PmŏaZ{ѐ@1R6AM j\o$(K.qk^ '$t|hqlLwE(>UY^lXެJ#i?%Ԍ~hNzxٕEavJG.DZvsΫ%"_'o-q?l42ws˜(x ȽJt$p2ֽFd6~DRWyP=ljj'0,a]cBℴOmC/ 13Q% vSf \3u>Jd[0هO |< 2\p>>=|PJ5P"ߖurdf`*1G m=)]lQ!:KUfvZg {i2edVӖw#A`m_H&b^= +Y*1.|Hv|1aA FHcjt_};a1Df{.iZE'*Ȉ~aQ0O6 /G_|kT}_x[PπbZx!(M˺2MQ?OzU'R tx9\H8bcH!$]k0ީk}/ioϖ/e |XG#!TfoO뿊czYI.f<( 0?UJ3K6NڛpC6jTc. ȧ;a|쳳*)d1J]2^>!81ޠ+Q\-z]6g\V}ˎ/;>L-u ?޻3U= RƴJvH?gw+t&&O4,(nj6?EHv= +gLjpͽ0|U޵Mf{Isʈ\Si~POoSh_=Eg~E?FamWۺ^2xDŽ=o0f ae^d;:yq5:ؤPnGmuvx)e 榮b>{Z9d:SEln(В@eB1䵁̩ 7ArؙfPb~n5~x!DBl8^Z鐅s7cbɈdny\*m۳!ͧQ*>RyYGvlH`9M'e|1'jRL#oW^>9?-~5U.Lt nPzuEK3Bg*;i7/KSj?0[?#P\l+Mv3Pt9j|=?$̓f8;0 N@I>fM O.9Ta(0QGI Yvφ*XNۏEKd˙.v($~>}쓨2C9XG^eޗR4ad6P\BσpAL9}u=3 b2zC!!a)|I9k#!k+|fun4\jFcO % \8NM6 :bw)T$m׭bIH?'E3Kf"Á<Jw1V[sq nȦkWlNFr%~A[&/"Gg-Elt$]c&Q^Ҽ!k1|:Qˮ>'c-uV-ts%6x4⿥T=ݣ⥁ Y'6FD`81{?J)XOcO5Pa ]]P>;LFX?+eȑpHG vt~#Լ#ųG#"˩UWX MÁ^~a9_ t59¡0J p( 0pg7ߘ^RV|2?H]Kf PQ5gԾ- 9^5 *0-v#|+A75>F9v& ֬ \nöAӧk$g )mQ\XRUDo/p:'dts (:&I_kB'/upb\a*D)7[D{х & ObmN ߳6v4p{1L5^EACPfblpeO;ې?Ȼ|C| ( oKj9;@$u%;'oٷJν0Y׳k(/!S2]y#@ti}*[Ҫ^F lZ*5al} Ċ˲ ʽψЪ5Wϐƽ*p>T5REv^մx|M7)_6\.D: dk:{Z3x-rvs}l֟dApiHk\m ߃R ;d(ʿ'-)#T'lqz]UZ5AW4jpJѫ@Usv,Tl/~T#17-!!\|XE \:Z3HI<,5LR,|'=X2uz/GBkz„r0tؽ$ĕ0X(W%n7Ł'$'tvsF&=>7,ޫ^8Z4Bi`+>8Ga7 fŦrB0b<J\ѐZ LϘAEZyo^Ik{PVڿ)!X&P .$kB\+70PHwpyeg/N"V̸~2膳+xZ=Jh /2<':8Qq~>hRՖ4UTmMer<9"KOhcusi#j7i)uYlEgd})wxT }m+f S-k^^HPN ?QK5V9k*2}+kX3b)&)yraȨH8%xhc6}ŝOg e\'sB= 콗Hfm}\Y[ tS]YB%<7}Q;t-hf$#}5>Kѿ22n Cd;ZB=8 5f8ejKؓ<8^@x鞸*&ޱBnjiz5V녷0'bogaBOZ]fV/7xTDT|IFeF;:3ļ+8#B#E ÷^p8ulQwKrcCloy=2!E#B#-ޞ|02b {PNȘk91J=v`OܮОa0q20 6_eR!u;?ϯcbUjyE$AWz2_`UBJ%+%T,Q-Mӳ٦Jw]}K= oWVNoRƣYq}_g^w8rnjv& VQx| oH2"8>N&Ar6 G// ßI$SVo|wT02Kc]MV{lYdjhytHog?\y7D;9B̽,0l}H5j;WXI /0҂wʟ_8aNXgU 0L1Nr)=-ni}L{UrK;jFMGUW7w"s3m?y͑`ן)@r̈́fEAlBI -vϲT6..Od!ɢ]6,}):2VDž'=۰eGPLrU?GĽxdbLBt4Vr,UM@lUA*}udA?:nN5',r^$ۥ~>v<+ V2QЮF)JBW|.g]D7cNk#ؾDf;0[pu۪-Rf'D45?/W"AYgx MCXҫ1PWj(e%tj5. >s{LڋŃs;k_WU\cqXD՚{W)aG*-_Bq:MpѴ @(c $neÌ=I$2 }*+10 4|~>Ȝ*ǩ#WZM̞}!»iA`arkkI7%y+^ʹ?܏sSu԰B 1l[8F$+ӴW:ӠDKfuEKؿjdd!%5ԁ5vG9(^r^Ϥ) pƣqG*ae0'T׮ Anz:$S8w^?ÝS4'^Nr3HuG<+fc+XpBIqǁ z2k Hi묐k"rbGG)ϞmG&x3@v@q{"F1STˈ" eD+r6D+L}%!Q&KCJb;Xٷg+8$1ߐ]4>grF7R{c^MڷW ^QY3oi[]Ŭ{Vv")86Ȗ5jph+*x~U)X]`M+]^|w Py։Ѹ)s7^:Dg1fx(b@1,1 Xw[an3 )mayDsr9I8ʀ"qgđf@( #UmKv_4y"vF[t:Yϯ`6ڌPU,QM>?pA&I9TL6|e hi$0n4'MM++09y;"cL%:TMJ:Giy2;uF<9F/bB]F;!Gh̤q se _!X#wC3dυWTkF*Ժ,h iZ3k;5 >u`ہ%3Z5d*ܕy<\Cwᜊ ~2qlڽԻ9yQ"1>2OmϘd& >G.$ K4Yj~㗩 \(ɢ` |2Hnx &rz9Jz&]|Q^Cd߆ZZdϠw;ZY.i2tCT~e96$sĐ?b 0;G;h |}..lxtP2#spN[I3 j.yYC=dxۤZe c7kctVڠa kZ.?k{, xn$"Kk~A8|p5Uzɚ* cM?:F_•ټ_o";IJlc΃4Ϲ* \a/O_ۗ}T{.frPT 2UWbSQ!nj KX;pt)GlDD"aKsX r;"#OӴ[Lñ^eЁ:S4;e{T4oQmgVgJ:>Qă֞"1JD;ߖ[X: 5ŋB"{MT FbVLV-&8E*8^_ٕqhǚ=FGWh;qW'I !4[;DR6McpM7߅+Jx!\٨\i\bmgU>n]{-܃yoV*~?0y ? E{g2QV0 ʉ%ŐMل` -8t 0ߖ͇ \ؘ8`R׬8srU|PI`'3*mP/.;JZ}2P"PƮwWiě G NvD T+?朌Lif HyH-#>q)pQʓwIDdQ}TV/0Bp @]ӧtIisιC}l#)@#&XB],I]C>k#_!3PK:Lword/PK:L word/_rels/PK@!wC#>word/_rels/document.xml.relsAO ߁pS7cFwQ]u3@{S%n=ȟҷX~ن}@;d8ڕ8CRPw /ˋ34!Ylq(yE 0-c|2U] LnN:٪!):d6&xGk7pd!|Lųn!C:ml!qQLϋϾPKڄDuword/document.xmlWێ8}M.D #hHVBK$pv`ا-'aZiH\Sr<3%RQq,Dx,CϷo!1O0 =Qї]  wE<2жUNNc)Hu'-Ҕ ؞:[!EL^0be5ph9NƔ1g$ A c C)G,+ʨZaxa|B nsv0DC!YLWlI\e8V4Pfw> vW}>x`I픳bE ѣ 9L΋ow[jΓ/R އ6#ij<4ue @y\Hb2LEZ#N+ͳ@  ,<6I4J7marzQ4%).6݃fq&&\{Ffz=GG2\!TY]JO/)ZD2p䓢:jcGcljD^0/cz]̦1\2 1ؘS``HcP9ΡzovƓeLJ}n UAq)\9f1 I[bP+yL˂иhЛ AZe+F^:?iV[@Ш6יA7AꔍWJKki^U;/F(D2hD!86 EA(' eDhݺ' f"@VZ2QxC ބ)DciQC^26'Ր׍"wܽj:MP 2Ɛq=_z!?Hk NF:sgܭ {p+t=ϯ}ppyuDuHnߩ+OjF3mFpBMϫl.u5lS mjTbWI͙dvÂXvzu6fdPK@!nu word/fontTable.xmlˎ0Cb40t"uEKյ X60lg]w>BE+u3o4y\Z*U!9ZΘiÕl"\d\M78!X*4V5єtzb҈Ɓ4DDCkp50 ҂ZWPnJ$PFEEs6jCD%͐'fmKDgqOP.aHP+"[e`;#ƋTb`PL _OEOřP 05qy% !ՆB3`-&4Z[\HԜXԛ'VRrE,-(0H2jiTk.Z$5- B5a}ā9HaTWonGE8 z$>ܽ՛99e q <[ ݖ]ySa$@DevR!0MJg tmE:h,FsK, l0Y2 lm4Ȭ 6I3)r+*, nsGqhvPKdDf#Lword/styles.xml[r6}WpbK=U:ĵg֍"! 5IE( ci;go8=?=I x6 oa@,{ߜT$I3: _ zÏOgR$Tz|&h.Zz2ZҔȷ|E3ݸ"%J^Jz&(6g S/a? 5/,Wd\yctb]Y'JWq'\LȈ{L9$ u %RKF i_{GFR,faπʯ I\]YBRF7gucj; x3;7{o]W[k'<::ͳt+]|#gJ7L~ ? ƅixzZg4e7,cd1cIϒo׶* _gy8۔%2~ѕ1ݚ_̀5;|6T+݇` t4ܫIőc#c'*N_B(/ӎ*(( HxF~;G4ypDD{c\L%TW~pGyd *@9a+?SgJf8yD2 {E ~,3%Ob*{\ƒيD pϴ~`K̖4;-AIխŕ.[]GuZyB !_ aqa`M!O|?ԭߙi&lzM%OX0=LgpsyWA$1q[Grԩ:x7:`yS:9'r^Ykvv5WӡWmh&iC;6nw9[V@ k"qt[%K uBX7(&m`c@8ͿcɻX8 !oy>n@4`7 @8 !oyp7 G,7 yPF,4`7@8 !oyɻX8 !oy yPF,4`7@8 !oyɻX8 !oy yPF,4`7@8 !oyɻX8 !o37s SHa}~ *hNRx: z-1>j)0'c6/ ݓCǒ nhun{u]ȨtGV>q~ܼ84l;յ3W @&TXTq:dlR.ҰIgo+uV$I1 l6OOaj{I~N?fVT]niL²%M$W]Py}Εixay z*'㝭9E= w~P3mMMX5&A$ZپgOqKӥ>5ߝ:1e{1]Sa"[]ͥςNCP"a#gf\̥Į%e~SA% =HO[$mb`qO灋O#\nVѝG gJh6Mׯ |F'EhXJ6WLsY([ પVk)K H 3D2~VKLw!b'ސ4t#JUkA贫ۄ[wת]O w1D}{b [N9_g>7O6IZy2OV߾Q+UԣQ[Zq`͉"~mPމʜR鐇ts/e3Q*"BniXm}͠&ۈL11i#8^=-YI&)JO{]Vl &ٰsD1.`$qLDž{:@n٘x;ώf(o(B-6|/4IoPKlDD ڥ:Pword/stylesWithEffects.xml[r6}WpbK=U:ĵg֍"! IdU(. $t Gfd}' I8??( QD<_0}9/O& RLjI( 6q.$ eaoSh9`W(yBf-FA8O;IJMhٸ,FBGVHL slK3OS͒Q9?Qљ9 drMu1Ii—$ZkqY98`7. mOe~)Qa> #Dqa^|ׅG:;kwɪhVи3%JDŽ24G2➪H䦐x֑ݳ5?74ۜ# Vb" ^$#..8AL/Uǽ5% Sl|B++PXpryVw&KSمRc8-߲^;D"`lŋ4Xp&d=#IggpcrKգ,I^3a%Fϡb@׉|N:e?8U&[RTo^kRy vPrGv#yN37@ývLۛ87171717qjo& ⫫uh4SQ4hDF:5 hS΃ p' ,.}1P*@9`a ;WgQ`q»,C)oPu}Qԛ( [y\ OnBظ%]?. 8(㖺l7dFǖnWB@0J*'6?o4׈`kbn)0Gc6/ ۓCǒnqyn{ٺ.ꋠxI~'̎燆uǻ֣^~)k_s Q+6 f$}}Tv H;OCάV-I>c.m<̣2|KBi`]i(M^u?>Bи]m^޶3rN[KRm;;(jv߶KU3vɤY4Go$YG$YmYӧP&h/|*Y!ʰnlerzU>Kc:U&Ez}-ϳ /ZٯrQf.~\T?4J\],;9UK4)^+0ʤ+=+a!fMQk.Ue%V*K H gbX%m;wPLZnHkJeUk|iW:oض ]h͇Vzj`nud ۣ/'Pfؚ7owQzdtD<$}K3ɠ>d{}&/˨FΣuA"WFF +.,g; ¸!kgD3^S{h+CA}cӯ TTUз\cB|"kG4yhJ65uY1gC&tLt2PQ6ǟ\ă0|v?CyKٗ4o9{5V4+7PK:L word/theme/PK@!!Z,word/theme/theme1.xmlYKo6w toeVuرۭM$niP@I|úama[إ4:lЯ)ΣM6IIÈ}"$qr.,Db4ABBRnjǤmMeB\m+T*Ym2yBbx6" "}ozbGqloF#h֧{ b%]/SdXIDv@-9TbX*xжjDz/%SKh5~) щ`X:͒=翈zݞSRg췜Δʇ5֬5jqW+ \j+͍zߜE;J+ ՕfBFt22%d5#4f([ˮ>Vr- .V4FjŌM5''RYHz&m}`_>{?=уG6P]qS}z݋_Rgto>C>&9@;< PbbSlā1Ni +̰!UL{wC1VFÅѦ, 80 cIvw.qLM,! 8 1Q(}1ݥ- .Hu05d@LtFIAw7[wP3M_EBU`fbIXōWXȨ1UhRrw"åHq&[bRQ:sط$"{& ̹{GQg:#)6WF%xB9K}uھMМ 铱0z&q+:q;ϻqC|Q'jfQ/ͷ.>}& }s~ߜ漬Ͽ%Ϻ36S2&ܐY`߇l$a! Hp UndY$Jwv?`sN/jrCllY uAi5.0'R㚥J5oB JpVhḦ=g0  Sbb5{&%ɵ'ۋ UZIi Qdi0 kqUsV95wj0M_3n3`h&ӢrC-ВшxjlZS+wH ջopM Gd٦|g&yͯ5}m+X}=Nkfҝg~M/hTxlv<>*yxU_8[q)Z<;jn,q^ٮK!l(>7z3fL`EfbdrGL[:wQp9N. $lLXgHI\?Jgbfs|Ebʛ]fӺz]Vx6%9Tw]Aڳ]PK@!ʳCword/webSettings.xmlQK0wP)k _PYzm\eu r\@!P2/TRP^eL茧:Ms}-$?9%pVcJS5pNi$)ôInK'}SwK{g!e^G"RM͗h3ndYAq)oAl$>ryX^UzE@4WюRk,aL9word/_rels/document.xml.relsPKڄDu:word/document.xmlPK@!nu >word/fontTable.xmlPK@! K@Aword/numbering.xmlPK@! *ڿ XDword/settings.xmlPKdDf#LFHword/styles.xmlPKlDD ڥ:PPword/stylesWithEffects.xmlPK:L AsYword/theme/PK@!!Z,Yword/theme/theme1.xmlPK@!ʳC_word/webSettings.xmlPK)apandoc-3.1.3/test/docx/metadata.native0000644000000000000000000000152507346545000016062 0ustar0000000000000000Pandoc (Meta {unMeta = fromList [("abstract",MetaInlines [Str "This",Space,Str "is",Space,Str "a",Space,Str "test",Space,Str "of",Space,Str "how",Space,Str "this",Space,Str "all",Space,Str "works.",Space,Str "I\8217ve",Space,Str "skipped",Space,Str "lines",Space,Str "here,",Space,Str "which",Space,Str "pandoc",Space,Str "doesn\8217t",Space,Str "do,",Space,Str "but",Space,Str "which",Space,Str "shouldn\8217t",Space,Str "make",Space,Str "a",Space,Str "difference."]),("author",MetaList [MetaInlines [Str "Mary",Space,Str "Ann",Space,Str "Evans"],MetaInlines [Str "Aurore",Space,Str "Dupin"]]),("date",MetaInlines [Str "July",Space,Str "28,",Space,Str "2014"]),("title",MetaInlines [Str "This",Space,Str "Is",Space,Str "the",Space,Str "Title"])]}) [Para [Str "And",Space,Str "now",Space,Str "this",Space,Str "is",Space,Str "normal",Space,Str "text."]] pandoc-3.1.3/test/docx/metadata_after_normal.docx0000644000000000000000000011337607346545000020272 0ustar0000000000000000PK@!+G[Content_Types].xmlN0EHC-Jܲ@5*Qu&!~ȞI6h{8Ѥ7X2ʚuH)S}߳(0( A7^9MH=pu`[ҭ/Ko;;.A0c'ŬhqWEL8W*)ʼ:ehM.ޒ%\rp§Whi^8  /BS_Xʙ&Q<FJBܜBˤh̎ xRn*!`{d0A1$:ĕ6mOD»ĸ[VL.Fü$ܱp~ںiQ=cmI#o]1nCUvQ5u"Y<T/lO6_PK:L_rels/PK@!' _rels/.relsJ1Ͷ4ۋ0&dEԅeq>If9AR6x˪A^c}౽[\Ȍ<)8RMs~~ , g=s2*D !0u2~䪮d̀f[ ml !"2ؖ]D#V`/Q2i˿ j z!31-Oi4y H󕞳Yø߻'vxZlPK:L docProps/PK@!'sdocProps/app.xmlRN0W?DjѬQTH<'c[ؿ更47|p2rq1+ &Z}}8ZW1X1о>QOpc̎J%9]*U@#tGdW뜡hF ΛB Sd"XϊQQܷ$zZG&{yFFߺV-T&n.!f[s37P+ S KƙK츺A2T-5dn@!rA, ϘW AO @w G! ȩrx=e:\x8&4ba׼xՁdba!$@ǔ`V0"5 7)^6` ”Y:gRJ/dyB\ے95 i mC+ཤYۢB%(4z`6?d)]m,/eVUU's֮JxŁ੓1 BdEk++mzc[iNC7; ӫNF6#Df;@ޤt_><&$U߄Y2L$f£`ߊ{Τ㏚PK:L `-cudocProps/thumbnail.jpegWPQDA"һt H! cwTT!Az I!^p3w9s^o߽^{S^h4}k,@?[W I<) -- )-u7@q? #u& ;{7sIFNr6}:zF#I 7/PN @z XN?#q6ٍy=7u̬?ly_Ix}HݹP -)-@puuf΁~Shwr8ЙEßS#Dh$M 1$o]"P19oHx|(O>SNQJm0œl{ 8UFt D %NFHm<U'0txAnڊIz1chq(|udI\k双gd6W,*O+KqomאP|>n?N?neZm,Rj*kv󷭯)v)%H&7ٛ9*PC2}:RH,tw$ $nF>=,>p٘?_u- _5"l c_-C|$~HuyJ1d@_-"]@x3zWGNpcmKu}јߑҳ7f}m1+ؚVl+KAѠϠ]'ěWt LOU߻XYDY=8 kGVn6_@ ̚%xH]fbPvԨҌ? r =3n,f]dI`OO7Wqdy#_d)NcW"s-oVWnl T!냡+vg&‡A9BXI1D.(gudY#nYH--X gY~^cU|mYOĘ9Ӑw$yL,{p.[~LlNN1xFVi2o셬4on#5B;tsk@~ZQy-Oܹ2+{O6x` |P՘Xԩ)(8GZoZ@B[xwVu\]U]m6x20&[.l!͆5/4cZxBbN21\g<4T-jm̷~c￿m\@ρ ț̉[a7ގE[#ʕW%=へeO1IQ_)bhG^KUf~e'ְ / oRH~0XLXX/ͯRB+]BeNAݩ͔Qa]m /ٹ-3զ.VрṊU8ɳ}7m;9BTbNσ.me9H]pqtEj2#{]{VTz$d\Y܂e74/LR/K>:k9ouB lM7;"nFsˑ 0,|9=9R^,Z5)d;u \(a'FPupIݜG-pV)SZr %0CUu|zJCꚼ^{ԛ,)En@s8钙ެݦsWWoZ5K3?y}oBFE:Wd\iOw>3KK,"2ccJk3vi`2y;_E}EV)T ~!ĹR]YxlYMpߥrޚ*6q44,R SWWH#*.iASAnehR \>~Dp BNӚh=CU}j9Utbo7d}t@u7EY#K Ĭ] ]޹u_FiVC{l |DMu_xaRӉNӉ/`a=Yw]g Cw,Rt 'b\U ?ds,*txH˱97g&cu-UTWPƴ-^P(h{~uIXT_wj[zStE;0[;PTXꪨxin*kF8€E3x]U*L-vt.!_IMAH0mǯU1DbX2V)ƅ> hEzFu\Z8d<.G&VKɑ+V6\zO dW(ӅEhv/Xm<~Ks=Jp|}FNwIjqǯ zYbNj ZKVhjuLXֱ性PzzIM>_ũd&eAUUǦȣq5x.Bs.tib%g][?!M$Rˆ*h+dddzKTYK'[K`Q9mSm9y-t^@O,RK˺I@5<騉)/{1{FeC"׀t#J7rз.V4Hۚag^ V-ឳy (181IƉR(MNQ{zv55tʴD>FS~t,t)Zgx$|w? ? ] G9WwKY:~Ѹ`ڛjv| $] \!l!}͂kЀzΓ.F\!!IUv*-+B0䢋DbL+\T /"D̉4?B6Hz4ݼ755l&:BOŋ]JDYo+|F^z46](,:󃫗*kM&t`_FVC+ϖtgmC7 h]EOhq= 22LwF$3O'T Yd{ȱKHxHTI97fkPbZڨuSRm׺hfj8B\k\2}\h2,%%嬇~r6q6^]8 T2'e^%+v='4Lv BDHO^y Т6+3Q\KRd%|?PF6A NO9IqYϒe)u_&/\Z>d1_j#LMU3[n v>q{Dr .BD5Wiӱ-"ψ㤥k@ )RL]-]쟼Zϥ|"Z.16)Sy'EPNC L M:,њA"ddz>'`]Hπe.~=k#y%i?!9_+eW-+:Z=Rz'-&&5BFfoUL? }NcmHVCooMNʟϼhF!)570{*bH7dfX#MA\9\nŮ P9/FlX:$薮[bR~ "gw*_}_ia^4iP׀]"N%1Մ׳Tҿ =\I 8Bs|e|IG,(!SSUfܦjJvv2(+~~O<ÓQ'6 ֒S2Gqm5+v] SI^7ֱKP/BFey~Jsz)YXO:#7CuĞ@Җ{q/Qc.8_ޕ2OVb\M7eZ5,?#8PAfnn*6y`Uظ }BgڗNtHZ=Mne{@!a[t`$RįC2u-*owcwKhM[^..4 sQ]w"kx<2v> il;Z~~sSI _n eEĢ,mC<#!/ɼ<9j)W$ F?u|k!]b.qlbr~;m:3<8rbYl9Kl{,7{-"3۞$Ee|DA7 KGSBdiuXԢ.vk%xDWWrKv01h^o$w<1*w ÂK7~s13M@YiC;.p7Ne hUlX"XnJuԏ4˧_ѹmX2U4H(Ԥ\8%D p:ݪ0s=B 1^FH- lO3!!L뾺ӈa)7P/@1ln;Hvŭ L㓀=L+<8EɃt}Dx0N(d[GHVͬ^&|mÅe{E?er@yrKa&ZJm,'|+=J@yut1(AmAQ*<F|U^dž& ak;9p b~Gjc]]LJ$:vb԰BRު,\^+') .ǹT9T}T;3w%EJeXvi> '}hy glLcՇ  kLm+)1U먰^F+~Fz*r=bN AɃa2=捛e#T$Onq jdTw{ߥ"`8 NJ5b afda/FRVpZð K-w Nr'jhz#R>2@tB̨X?4L=I M?zA@PfaY֔rsb[pTI,/PBt}x!y?3W@*՝JJg&gX C/LybX՗GϘ2T 9lOSE7em|* TRˉ-r^hx~ˣnU[ O>c.V2@]pƲCԳ3oZ#2Uv O}mIx#z T޲+ns)bePvÇ{vv<%#nf<hvI u0h)*!z~J@O.#jelde~ZvBm/Xs|pӏF֣ ;BS ma:AhcG#zH+&7g985B2<K&V<Рpi]_3PoUTKHW[S̹8)14d̀"aÔXv|B㚐7W^AFo{)pn/11 z"'Nl>0,-%(vJǤsvyK$ 75w/$@\["0惀a cW/@3`z\'-_'K'gO_}Ƚ k}"AjR8w S> ¨yz{3쓝M㔳l~_#v*iFsNF_&]c&Ay7b/_(&|̒6"E,}|iyf~#9"L_Nqgyu҉t?Vj-Ʋ'I{?W"ĔF_P~K!f%&t3^}L0ؕxP=&Q$4̧}Ś]ߩ*Vs9ƛV:|^L?;|ctJyhJV|&~xK0BlDjꈻklTVD*up{>w!g+Ti "wjjW k猢;Lkfܳf߇"^H4-*"B3ߵ"o^ZoKr^(TwI /4/>h' ӝyX9\j/UL7}YbԙlN6z>UPE{I{衍NTI BgG{p[w"]7vM>'WJ8NPdɈyg%#[L@[\!{@_O{o |ٞ[`xڬ< X8wNk疹ktVO+$gn Fa)2~mr~&L}OÔvˢ4r"!m%~&XJEkf7VIRg7U,]ͤ "/ H>60WY `q8=c3+$Sw~:ñT{jڶ.QfG,0m?a< CLw8. OST<ޕz̟T*ˌYw@BdjQg% '/E/ t,WSsؑprKG:O*]0J:{(.Hi$Q;Qэ^¯[[=6GX~w[0ͣ0!_ڼj"o7 1*a"5eN}?Y:O#)c r2U(ZNg/[T}; 鿽 Iyd%IK[k/GA5dn5z"+p[F_r4a |YɌhH4~pJ#lFWǕ?IPap "&kiQfA/5ܹLGbނ,L[V>inGrղYUpars;EƄYޥ|]Aqw=Mˇ,"lx >6}o-u=g>xC4U5B^W Rv9)ű>dw1=ghl92e$+kc)&i+P]+Lzu+gO6YXGؙ:Mˆ F͟bZױA(\ P9_isP|ɟ Q\&l_ZA۝6ͨN˂6=#~WٰѤװgpsXrRMs*Kjl&$9kRMIǴD4!}wE.\0U OQ[R/sF X&]Ǖ_N&<+1mj{ AH~eI^5jCXQq;=E ܾ:&~@~>%-TuB )I}ϯuyo~2_aYxVQZR:*M4ՙ."Cz´k(:)-00)]]wJW|]s=iN9{kGskM\S&u x )Ʀ׬FmUGW'c(+ӣT]=lGtI <,`nK<[)F(s+ ԃԅm3މ z}A=im;}KI*HL= o^% tljTb8Bte#lO?$GϾ0{?5ʸ^K5qP+ٰ2ը O/*|Ti_RRq[`~gzHZɝD+0L1 e#T*Ge.OMaFyׄrl@܄KEu.u}恳%Ѣ/JmFyF^LZ4n$8/0ݩDAt ;gl DJS'Pk$ǰ.mܬ55~rz>fhpJ?ZyQ|uS=NTP{λ+j^YM: aWj6)'UvD{cls%yv H::v_%4a+rajk5s!Ȕw4؍t_vWqq2khY,;serR~%(v<% Y'b6HyǥTTN}!ǶśW*yݯm3d+[|A]80F8 "B"4^%#ESo4Vohh y%{Xn{BL˜D93fYA;8<69u$"^JjjbauDfވfR[y{>Xk)hN9Ng70^n|B tCQ"2JeMj=ZB&?h s(gd|NvMGL~,Ra`}מ77xSRU?׸I"a3Zq^zFm~_~qB^40[yF~jisK\Fl[R1m}%a}ώ )Z:0cV%i9O$<@Nyri)|Kh,:]nO]-B ,BFP٤KQ*Պ#R!nPUUgp$xp,mS^OLӨܽǎ-=NnRsC'8`Ik!ܲ&3,cL'1Pyٕq;7 P|SCdB#;-W+v70Kd3 1jjaY o}Dë`q|.|*၇uum7S:/΄΢1˹~Sn[ euù%;J uc7rXO4rG`(,dLzP匋tnQ@^{w85WvY55;27XbW}n?vUjwIaU{+_:Xޚ䘱tjzbR:?#h+3"nQJڂnic]%f't$,i$1nU{DѪU37*Y @q랒&Ҿa\Llpσ`YȞvim |*=!Z\ s]^b GivI`0RfjvFb8HVu{VB'=)B7PHK',gd!t-G6:FPu{&*bZ^KWx WL|o]l+$jTo"f;Svھ>e&N)؄ۍe 4:(Vwr  AnuTz q.8H -{F;jc>9^Ĭ}c$@ڧ0-}%[l]f =5`o'B >k=Y_k-/u1x[=QXr"I$eQO׭ՙĘJp=h7r ([Q_Fajqvik]鞛$_I;Qdq.4J{wٳ 6Yd!tN =,+jOUNl>}l 3XFnig}8=*)SRLƫ=}t5.q zTM q>}ƥ; EKGb3{ϹU|BA}d6r<7Ci"V5͇{8% f˸7grďy]Edp ߨձ} u?%5Jc436)yϷtV{6y`$\T", 5bW$7\;ܴ{>?Y5,71=5H jxM냯~_Jl=j.!F2ʣvx`Q~~G{Q{A?)%a!"FiBҮ#鋼Pn ^36bNlcN<,_6#5]R]yB1?uDx]xk+I Vuy{tWh;7l0֝~KITEt?$7ߚ ɧ}Ro1>:"}.z;|<2l /Z 1A}%ŸhGImdLj>a:]TMU=N +ߚMs*a1 FF ױ^VAuY!NǞ.K5`c/K~sTO^&mBy\2▜ o/?ONtyN_'la=xՓUܣ+pVpυr![8:_YsnM FZA+šv 3u<3n:CBm#T+fq{Zoh#(|-n:_-TxĔE̍ƅ=S+RX&_"L6ϜgvKH7JK2T6rt'2!"1!_]~4?]is{:)X q9 Ygy f/zo8>|yLe~ կq8 U~SGYl*-O֝={Pz J$&ƘC@7ٍ[錷LlCsBj 7AU_@we=Ő4:ɕG麭Ei{ݏcʹǚiKCe;rWPDVkaih,Z艶V0+,2Q[ӭ=(]HF5C s?3 AvV~8Y ۺ%Q8gKvMZl?Y:F[<6U[_ga2܀LSM@rgz[phq$ZσA/:]immr`!@^Y̡`8Ğ,1f<&? ڂ(`6:-Fu;BCvw)␍%{aL9Ww0lM@AkQ?ϡ#R>]p qay0a\C8?g:y7><)![e}je |U)pQE髍 ܖD@R I~jDn+gAlqBdWv:dYfyZ /ASg;,-Z}k:돦5SUw;.n#Q_;ϮUܾ/>P Ps\b/cphy?Zf4(&?.tfn!80]3-o>a̋!/HS l~61 x%ՓZh1i\CrT@S F_r}"UѲ^vQ@L3ƺ {ʳ5@ݝn <>8-@t'rĒ*M7A;;YW`nEv!Ywei"Ã3[ ff|2E~n~?ή:|(ٔZ@= IQ1O $,uTmExmW/$j| y]dlЀL6;YO&V解Iu[8)LKI);NNc"ufբNI(l|M(NW*/^ +n1sҗ7rޛ#ݘ@A:Flt<_CE۞_㩆桄Ln.jw4W^YكȸV5o.NMϺ]߸8Z}68@]?; ;dyW_Q*UWfiW8>M]m'}R-)D6_6Iu; an5.9ZݖzGdL4"GRQ5nV.Ro5[L.r@o97JLeE0ګHUSc.nGP{v 5.rt3ۇ>oV5䛀͗UIxs:q îuV JtG('XQ*쩻0ň$sEjS)ŚLxSz{X>0ۼvlg'FR.teTe=; `;M>'ʹG-뱇Rʲ Ĝ/Dʵ술7E*av75wHyշ֎O!\]Z[$>!\8?]˺D&Yq2iY;Sc7aѽRO^ͬz=hvc1؜دbڀ/Vy#+ &MoAC\BQZ3_lj5<ش>6f<׷Tx3k5L B/oZ,cj[&WmOb#J tPyS5#>uCտ9Q"?_h:4h[-^5BnVR;>tn$`*joIƿܦ [ԽȌ NpxHVT(H/a'm<'vOt/ƻʝ*T_7BõTsR9j0tO;E~Un-ˏ4L)1/;ڲAK˅~L:eֵ U PI0eT{,`ٰx\< xmXCNGȀebaw>!9ys!L^"XɮZ _/7A2j ԌL3ZYLث ͍m]얕>խtɲURA8ŭB"9_4aMC]:;wWv ^VގXeٳf/(r/ܾ|Tb4Í I-W4m~=9Y}rrbvT4sH2T2%?,.$@SJ|"9X C)!HR$;{KֽYZ%Mn;$ZXLNJ 8J Y@ؤN2" ORP`djiស GB;+bh]ިCّQw4ui&q+IGQ-KQYys[1ˌXN 2)Vx#$t<+a ]ΫQiSYT1  +b!hiWOTG"^wUe2`h=7<@PѢcOݟgQvKX`~wy1gx7.jm_wD9?Hj[jxEb\SwҎA%Iv&J0( <[/ńYi׳׀lkL2 Ӕn&RH+ |7٬tDuRu bWcNmv>ɇK/Tc6*1ElRlp:wmD ~jAl7f}w\RL*r Dr1[&{1ZZɃuch""_pg?]<5􃧉!R8J'CiQs a +RE::gM0%pi n*2A!7NmPY/[# vџJ2q' V$  鞮j;EI\:{ܣY4Td_{L#6(lG&YV' 01no9ȥTw 9۰e$: o<@i>@`T)b#39{!YfX@@dCD%*S gⳐ|扗1ϣ2z@8з{j~LeCT Ɔ'KVu*xu- xofҗ-25ZOn1ۣϞб&ucޭdz$-55[ѫjR'ګ}p# &j' HaUV`AGWWiQ+ 5 *ٜCVM^:VlGfi*8r#h=~2:( c/_ֱ{4M˨cg8>\YoM*$[h~[ۀ7^2H;3d<3O>rUaW>lGL$r\pj5-o7^C$dO W$k$ G^_)uvC E] 9ׅGH4g L:uAȫ\d1a,-mY`VhCЧBt=ˆgEh,p }%J:oZ{p=zv?w/TS,a8EV59_"%H'#꾕LEe .iB(CUg;1Ӕd$$eo'=ukyi K.%|퍣}H~r34(vrwLoD &U`i۲y$q{X7A<Ѱ88O wHM0q}WpRQ}Y& Ix*/NU@ibTsYw$.]W9C0J$+QQs6Kep:z]jȑ uxkՓ)/MZL_D[ /E  񸥴 C3XM)tGmC/pXOwKiz;Q\&20K{ ˔a&>FiaA%h?j`E=˸P3{ uy*J h୅i5 ䷇6SY8Wy_淮us f80H] ך#K:)govW?nw`)ԇ61C%}$|NzmuWHqO@U,0WtV}V0ES3ZD f>ݧװExWr%2}s+ˆ)$w-s[^.=Gni4e1UP&hMUߖ8K* зkO<=. mZAGj˿hi֪2J1WzYl^ PԒoq ]cI7]=(b)Owͽj$YjRx`Ҥe޽vt#(4r"hY f|zGĚs5u+78HGiQ^_GC\?[) ;d~pK Ζoncu0踧ߺS-ROے>$(Hl*7NU$iO w% d@?xRaPh˹Uu0M+ZlLF]QÏw Jq:ZyߎA^k,UEsZ۶ñ (nʳ$ߨzYa'lh_5? JO-A8` 7AUQQ:#^kW*1}|C=WZHX{&haHj\UT&徲 C- ;)v0$UrĊJ.y"aڸ` uuNtCjAC`YkJ*3zTN!y oQlw egC /EnDfs@LJP <F.]f>})mVD9W]E"IUmIj%zF}<0Miixu."w߳_ R WI*QanhAzdW'Ku,."}PBGn's{3Fn jtVnCH%jY=!ϱw\1^gVwe.mO?W7T!@.;Mc5_߇y$J~a ^O,xTy#%:WNǹ=Q~o΢f]Lg&LqMU}o|cK\ѣ"2lV\b>и9$0Ȭ=vzA`zԇ<}4vmUC[.l\lQQ52߅l$JN\7-aXJ̫TrZߵq@ɂqsv"2|eN\A`<|dsǂXoR ߵ\׹2rwC)g%}7ĉ/'Q6Zt$r(雎;״Js>p,%CpҎ&%&!UqNl0,:4Jvm$ary glTȢ3gHs/g8^zRalwIe1i禫R8ɇhnwW :}ZN|h'Ӎ< nP^k""I<&6yyY4gs`uV1}mJը scXХvx1uζXҕٻ(U~PjK9/#ѡ :&KFl.|D$&sݿb!bwBCBv3mkx"TɒP\QK;nݏ=]H!UvQbڿ$YzTӟ|;2H1Oy̅/WZ]GbnAH0st/Dŗ8*>j8rXs];=ZNÝO*1|? H H.Bo㒔Th׀%A( ~y HE:v!eTKn<͆ :W,o/I,dW7໳*q kB[K~пi^=]+>rFy7C& //$ PK:Lword/PK:L word/_rels/PK@!wC#>word/_rels/document.xml.relsAO ߁pS7cFwQ]u3@{S%n=ȟҷX~ن}@;d8ڕ8CRPw /ˋ34!Ylq(yE 0-c|2U] LnN:٪!):d6&xGk7pd!|Lųn!C:ml!qQLϋϾPKD!{Dsword/document.xmlXn8?Oaq6C&G@ՕV#L@&9٫}}}Iin<3˄߫ S͸5Dh҂.!!1Mq(j["/כIʒ"T"@dS'S-F"IUU$ ɫU#eEBFӑz{Ws!LXh VdwkuՄ3c| ;/Age(Bn.wf=N'=g& d;em {FQު Nɋ }A9Ii*;/k4Q*;@8>s06os͡s-gMx;R&!5PLq(xfН,ݪk<1w)qk-URQ 4c'$M)gn8o8{^$ T{,dIzh1/HRJD?as3`ذ3~Ҍ_1ߢR1lqlc˴ ύ#~ W,8!DMAb.ȠM'96CT#lꂾX؋ơ; щA'>KSn_ 15\2\l !9N)涓#ID,C9@_SDW _kĪkDpr6yoFT6SF.Т=>L;NWM, hB#<ΔCF`}TvH":|J3=Ww S@9?+pu?ĞI3#zV+9{^?:?3(? g ׏B+Pgr=?N>h ۹Pg/2[_@P-@ S\n'3;Yp^{J]=[> Lڦ$Ww}[ka =VDxArd$7'8%3eƘBE+u3o4y\Z*U!9ZΘiÕl"\d\M78!X*4V5єtzb҈Ɓ4DDCkp50 ҂ZWPnJ$PFEEs6jCD%͐'fmKDgqOP.aHP+"[e`;#ƋTb`PL _OEOřP 05qy% !ՆB3`-&4Z[\HɵԜXԛ'VRrE,-(0H2jiTk&ZN%5- B5aǁ1HaT`WkHnGI8 r$>#ݽ՛99e qs<Л ݦMzSaPDevRaSa4 v7)yo)%qGG`2r[bi1ߟ%FS>"RЎ`̓5Yn&+RVK*sREl4 -m1[ٝj˻Gr=bfLа }+YKBXIkM+xvEs76E??Gp`[<,ə%jE^TB?lp|#+Iih&Uc;&Wi&Y,$]ON1qNSxN).I)frΓ)_').g'Fq[϶^Dk3C4a:w+T3%&Fn6qj*|GI[.\p.YnHna6qvKmqeh\/8dLmYmeX66~ >_ ?@VƩV]NqNXPKNygؿݓtѤŨR7%#LÓLJד"э{N6PH0 nPKDf#Lword/styles.xml[r6}WpbK=U:ĵg֍"! 5IE( ci;go8=?=I x6 oa@,{ߜT$I3: _ zÏOgR$Tz|&h.Zz2ZҔȷ|E3ݸ"%J^Jz&(6g S/a? 5/,Wd\yctb]Y'JWq'\LȈ{L9$ u %RKF i_{GFR,faπʯ I\]YBRF7gucj; x3;7{o]W[k'<::ͳt+]|#gJ7L~ ? ƅixzZg4e7,cd1cIϒo׶* _gy8۔%2~ѕ1ݚ_̀5;|6T+݇` t4ܫIőc#c'*N_B(/ӎ*(( HxF~;G4ypDD{c\L%TW~pGyd *@9a+?SgJf8yD2 {E ~,3%Ob*{\ƒيD pϴ~`K̖4;-AIխŕ.[]GuZyB !_ aqa`M!O|?ԭߙi&lzM%OX0=LgpsyWA$1q[Grԩ:x7:`yS:9'r^Ykvv5WӡWmh&iC;6nw9[V@ k"qt[%K uBX7(&m`c@8ͿcɻX8 !oy>n@4`7 @8 !oyp7 G,7 yPF,4`7@8 !oyɻX8 !oy yPF,4`7@8 !oyɻX8 !oy yPF,4`7@8 !oyɻX8 !o37s SHa}~ *hNRx: z-1>j)0'c6/ ݓCǒ nhun{u]ȨtGV>q~ܼ84l;յ3W @&TXTq:dlR.ҰIgo+uV$I1 l6OOaj{I~N?fVT]niL²%M$W]Py}Εixay z*'㝭9E= w~P3mMMX5&A$ZپgOqKӥ>5ߝ:1e{1]Sa"[]ͥςNCP"a#gf\̥Į%e~SA% =HO[$mb`qO灋O#\nVѝG gJh6Mׯ |F'EhXJ6WLsY([ પVk)K H 3D2~VKLw!b'ސ4t#JUkA贫ۄ[wת]O w1D}{b [N9_g>7O6IZy2OV߾Q+UԣQ[Zq`͉"~mPމʜR鐇ts/e3Q*"BniXm}͠&ۈL11i#8^=-YI&)JO{]Vl &ٰsD1.`$qLDž{:@n٘x;ώf(o(B-6|/4IoPKDD ڥ:Pword/stylesWithEffects.xml[r6}WpbK=U:ĵg֍"! IdU(. $t Gfd}' I8??( QD<_0}9/O& RLjI( 6q.$ eaoSh9`W(yBf-FA8O;IJMhٸ,FBGVHL slK3OS͒Q9?Qљ9 drMu1Ii—$ZkqY98`7. mOe~)Qa> #Dqa^|ׅG:;kwɪhVи3%JDŽ24G2➪H䦐x֑ݳ5?74ۜ# Vb" ^$#..8AL/Uǽ5% Sl|B++PXpryVw&KSمRc8-߲^;D"`lŋ4Xp&d=#IggpcrKգ,I^3a%Fϡb@׉|N:e?8U&[RTo^kRy vPrGv#yN37@ývLۛ87171717qjo& ⫫uh4SQ4hDF:5 hS΃ p' ,.}1P*@9`a ;WgQ`q»,C)oPu}Qԛ( [y\ OnBظ%]?. 8(㖺l7dFǖnWB@0J*'6?o4׈`kbn)0Gc6/ ۓCǒnqyn{ٺ.ꋠxI~'̎燆uǻ֣^~)k_s Q+6 f$}}Tv H;OCάV-I>c.m<̣2|KBi`]i(M^u?>Bи]m^޶3rN[KRm;;(jv߶KU3vɤY4Go$YG$YmYӧP&h/|*Y!ʰnlerzU>Kc:U&Ez}-ϳ /ZٯrQf.~\T?4J\],;9UK4)^+0ʤ+=+a!fMQk.Ue%V*K H gbX%m;wPLZnHkJeUk|iW:oض ]h͇Vzj`nud ۣ/'Pfؚ7owQzdtD<$}K3ɠ>d{}&/˨FΣuA"WFF +.,g; ¸!kgD3^S{h+CA}cӯ TTUз\cB|"kG4yhJ65uY1gC&tLt2PQ6ǟ\ă0|v?CyKٗ4o9{5V4+7PK:L word/theme/PK@!!Z,word/theme/theme1.xmlYKo6w toeVuرۭM$niP@I|úama[إ4:lЯ)ΣM6IIÈ}"$qr.,Db4ABBRnjǤmMeB\m+T*Ym2yBbx6" "}ozbGqloF#h֧{ b%]/SdXIDv@-9TbX*xжjDz/%SKh5~) щ`X:͒=翈zݞSRg췜Δʇ5֬5jqW+ \j+͍zߜE;J+ ՕfBFt22%d5#4f([ˮ>Vr- .V4FjŌM5''RYHz&m}`_>{?=уG6P]qS}z݋_Rgto>C>&9@;< PbbSlā1Ni +̰!UL{wC1VFÅѦ, 80 cIvw.qLM,! 8 1Q(}1ݥ- .Hu05d@LtFIAw7[wP3M_EBU`fbIXōWXȨ1UhRrw"åHq&[bRQ:sط$"{& ̹{GQg:#)6WF%xB9K}uھMМ 铱0z&q+:q;ϻqC|Q'jfQ/ͷ.>}& }s~ߜ漬Ͽ%Ϻ36S2&ܐY`߇l$a! Hp UndY$Jwv?`sN/jrCllY uAi5.0'R㚥J5oB JpVhḦ=g0  Sbb5{&%ɵ'ۋ UZIi Qdi0 kqUsV95wj0M_3n3`h&ӢrC-ВшxjlZS+wH ջopM Gd٦|g&yͯ5}m+X}=Nkfҝg~M/hTxlv<>*yxU_8[q)Z<;jn,q^ٮK!l(>7z3fL`EfbdrGL[:wQp9N. $lLXgHI\?Jgbfs|Ebʛ]fӺz]Vx6%9Tw]Aڳ]PK@!ʳCword/webSettings.xmlQK0wP)k _PYzm\eu r\@!P2/TRP^eL茧:Ms}-$?9%pVcJS5pNi$)ôInK'}SwK{g!e^G"RM͗h3ndYAq)oAl$>ryX^UzE@4WюRk,aiword/_rels/document.xml.relsPKD!{Ds;kword/document.xmlPK@!nu oword/fontTable.xmlPK@! KSrword/numbering.xmlPK@! kuword/settings.xmlPKDf#Lgyword/styles.xmlPKDD ڥ:Pword/stylesWithEffects.xmlPK:L Aword/theme/PK@!!Z,word/theme/theme1.xmlPK@!ʳCword/webSettings.xmlPKJpandoc-3.1.3/test/docx/metadata_after_normal.native0000644000000000000000000000271207346545000020612 0ustar0000000000000000Pandoc (Meta {unMeta = fromList [("abstract",MetaInlines [Str "This",Space,Str "is",Space,Str "a",Space,Str "test",Space,Str "of",Space,Str "how",Space,Str "this",Space,Str "all",Space,Str "works.",Space,Str "I\8217ve",Space,Str "skipped",Space,Str "lines",Space,Str "here,",Space,Str "which",Space,Str "pandoc",Space,Str "doesn\8217t",Space,Str "do,",Space,Str "but",Space,Str "which",Space,Str "shouldn\8217t",Space,Str "make",Space,Str "a",Space,Str "difference."]),("author",MetaList [MetaInlines [Str "Mary",Space,Str "Ann",Space,Str "Evans"],MetaInlines [Str "Aurore",Space,Str "Dupin"]]),("date",MetaInlines [Str "July",Space,Str "28,",Space,Str "2014"]),("title",MetaInlines [Str "This",Space,Str "Is",Space,Str "the",Space,Str "Title"])]}) [Para [Str "And",Space,Str "now",Space,Str "this",Space,Str "is",Space,Str "normal",Space,Str "text."] ,Para [Str "This",Space,Str "Is",Space,Str "the",Space,Str "Title"] ,Para [Str "Mary",Space,Str "Ann",Space,Str "Evans"] ,Para [Str "Aurore",Space,Str "Dupin"] ,Para [Str "July",Space,Str "28,",Space,Str "2014"] ,Para [Str "This",Space,Str "is",Space,Str "a",Space,Str "test",Space,Str "of",Space,Str "how",Space,Str "this",Space,Str "all",Space,Str "works.",Space,Str "I\8217ve",Space,Str "skipped",Space,Str "lines",Space,Str "here,",Space,Str "which",Space,Str "pandoc",Space,Str "doesn\8217t",Space,Str "do,",Space,Str "but",Space,Str "which",Space,Str "shouldn\8217t",Space,Str "make",Space,Str "a",Space,Str "difference."]] pandoc-3.1.3/test/docx/nested_anchors_in_header.docx0000644000000000000000000004217707346545000020756 0ustar0000000000000000PK!G[Content_Types].xml (TN0#(qjʁH8›Tx\3Zxs|H9UOHatԃ&goi$;NpaӠsn-ZSsL ڲwPK!`N _rels/.rels (J1ޝmiz0$ݥIHFmAT\XkIf'q`aY`8Zx=.i-Z?@MS1J B'xRA_1$z-&rjWu}7 lK0S~;~u 3#pZd-=JmV),I]̼HYsk?BBp+QJF8PK!:"5Gword/_rels/document.xml.rels (MO0 ;ʝ!n@N$UDl=RɎILf߶N>1.4 : \.DB,]!k0k$1^^L_4G{RZIo탕PB#Շ,Y6Ӄd^"̋k,MQ5*xS-xڤSx]#Fd(sqFg5˱lÀ?PK!2w 0word/document.xmlZilƠmV`g$c pv9e,0y(JVH9u)@nԹ~@yF$qto4UA=?Zߪ7$yN#tQ0Fv!RHDh&MQ:ɛw N*}ⰃW+E&^t} vQz=;*ȅq3†YF#]a:i5 p;?yU$ nr00zl06KGz^6Fgr50zup2E]kaJ" 53Nd]'bkmKQ{}iQ$83d.E'FwgGqz:tZboO?/~!c4Qv#'q}Ќ*0){fٓYDkwE7N.eA.'}S Dٔ'MT~m_Mr< Sr0L16`Eߣz/ ?ィs~&)Nc9?q sjp3i~LS֌zXL +ghlTzCxc >"&LΗpZgOAdؠ㗿嗗˿_~nOcc}Aa]ʹ擞^T@˵#i <\+L()MJ @}a3YnOgRA}M 1J f!Y0/nJs#|O0^1 <|2&%RWgo oOx^5lU`?JRKA$`^ Ա|ĊtUFqP=333狖Ol1gDU>=aF`صzL{>D#Ct1rCWNIA!ޝ}7/݉%BR7Hw9!p<Ǥፉ.EB\ /T*Y>,cy'$gC."Vso+C1OǓt}8>V3mBb%DWs'O''Gw ~lh;UM!DzŬ;C K^ysJJ1KRμ)~.ک/ Y\n9?[]67)qnpJOF$ w;fCLL&׸m%]V%z-{ v8Ҩm-.xo(-ms~ۜ|s>Ͼ%O04h=یщ!eƌ\f :C*OiIA 64HpUa7 UO3 d:(fA@٣>N"Hhp&hA38 )SUUR'V5&HM.6xpyn,ބ!h^^Z4~0#w,,& g"Ic힍Q)˕C6%^+Hk!$A*#.D)irdq8Y^}q~C>Np%uJx?+al|zf[Ux5b>c!:M (MkIVEpYPҍN2$ÿ -.h۴"P6T{T 6]u̒VhVnR+n;)ȔbL X6Y`+qB]( 0H1$6_[s)k8Tm Aa?R d ڒɾ0{eRF& Ī't\{BHuM6`pGϽO+!XoN'^[crh2*tW<{1U+l_QSncX<)Q(wJH ٯ#zCm>nhf6t}M&ʺ6ײ'\gkNS:;\qN-S;kǺ"{DailL`̗/޿ ^o#I&%0]SPV!] PK! word/settings.xmlVn8}`8Z-Bu4DHʊsIqӸAѢO"ワ{wO D*<ϲd@D#1ya5%cIAɁ՟\v!ւ aJ̓LSGL*"# WM9ҏ6+diMȲIқբM 9m4rcJ)7ڐ5 dr"j )̎*)[I9r]%٧I5~$JQ{J|HEJDEtfY`@rSYd "y6 Е[8m7>RE_lL6;QcjR %rX+3@ CqH-P{%&.VWnpڑ!HYAB߶R_p??Yd[(or;bTR Ugilk'lDlᓔ6!g"‰9x:Yme/9㋢XOYby.N,ΧzR,@7/>W4KkM`6h֏煮'_s00 G`"O5/15xlh'0ٷ϶ܦ o-[u.z{T;#ݴulXLJ ;$ ~O C< o6ʽd=r6'nw6wjnJE+<n/qɂtpRH;# ^ 7:Ƒ6>&ouW`5lGdɘ'+R(Ekeܨ;×"ae 6}I1 ZAQsކb dk_:V/,t(}gX~YHQc+!RCAQes N>E/R]PK!x,S Nword/stylesWithEffects.xml\[s۶~?3;仦Jq3Zg,$CRV_xą̜I7|dQ4 D<> }re9,1y6/u3g&U'_eOE&_Db |~x< _I*|ev7 HФE/H$<}"X} H_h<a~s#m:XD[udk&- AmX6 ݡZY9wq X*5d&6{(A ľ$ q;PPA&6GCBDE*fI96fI6` {*։* I_, qM˜4bb x?{E!hdF>7-/:33qy s`8Y_g\]Y2x " Eļp:HGU8Q5X,x,W<~b{[$N-80[|Dr,E Z[mԁ*_9Ҟ݅L, V;EeP'Evq]ʮ.ڔZ(e%=UsjO,j]Hi]H h]xF|[W4¹wϐYt m \FNKKʒ'X]}d9[sH,OZ<2V`N%+ut3z3| Ts} W"\{UD?o0:>xY`zt' CLSڄbxnK?"XGkȹs0 P.:!jnV+d(&rn'诊|c(*\_g <n[)t䇽15ҽ8:`9ӲbvdfpffVz˲{Ь5&9:Zf&IT {ʜbs,N`Q?Mꇼ @7;yG,gn0Z&o^roMrvQQPț&yPc#o^ 5,Cu~țy!oP?Mꇼ @ɻ?&`9s2yɛpN]ɛ&yPS#TӤT2MK\Acary,ꇼ @7&u'vț SMrT&o37$o܌? (j79:5B5v`'sBzǼm=u`l4瀶wpNy٣3^TPQ6 8CX2FϡΔ(8"Ґ/%{sק8 cn-+~J#ќzƒ'B [A_N}#(wt;ΗCB`26CVV>QUt]\-?j+Yns+Plbzb7YEw;զ}lXʽ!qjodXftۊڠnov x|S%j`^CrUJʞ^ᣌNrm`@J[ejo4ز:DkkLPSEA?rhBOy$Q",4Է #x<η7"V4og~2l&6="NnĀD3uyWI趍kZj \^yxAɖSQك|GVq:юڮ9==t"׵+a)"u6Z6 PK!t?9z(customXml/_rels/item1.xml.rels (1 ;ܝxxYt23iS(O+,1 ?¬S4T5(zG?)'2=l,D60& +Jd2:Yw#u]otm@aCo J6 wE0X(\|̔6(`x k PK!9 Kword/styles.xml\r8}ߪ]l˗eq⍫CdqMZm4@7 K,胾to#;OP$sa{< *Lѹe9KV, o<zo<dq07y`c}[ŵHcye= Dey 0M㙯Ť)bY'9<"66+RtME #%/fabLN0HE&PfV4`dős"Rx#Xn%|vQɟTԿzɲ 5e0Y_e! nz[0WA,GRtĒgEs?=D2-dS5ɉt˙Mð#333 0P$_kf$8;7 (ީ27 XM%k}TTfT!o0M @ɻd8&`9s2y*7șgFEC)7AM&8{F,%jXXÐ7h& Caț4 yw7pMrée&9Ӄ*7oqV]ɛ&yPS#TST2M[\Acap(5 y4 @Ð7h&'nț SMrT&o377nƟNg5ɛ#`9;ețқ @x{\4  CațԟA#o37N-7ș P @J޸G~:yP$owjjț:0MM @\4 y4 @ɻd8&`9s2yɛ =[x_z ȀSZ)t4Cz: Zƒ'!^<ڋǖ!C(JSjD8>;IU54aHU߼rV63XgmfDJ፷zd7boQoh_B29F4K Q(d񰓽\l @w Z6r"1݃oB DI` ԨFkm ;j MP $jw8/`7,UJ{tkI`*.WS5][=;{g#~.e2@aҒ՘cR:PC |s} *#^k-ҞHdPK!>+U(customXml/itemProps1.xml $( j0 =uڬ\tMױ®$ 36};uǝ'!}?*f$yfQVbm$O@|#Z"CC+eHlX/g_;˛&SՏYª KTW}>700(rPF5NaΈNKuF9eݦiN͌P.y~_Tq6;_MF ,w(PK!JZdocProps/core.xml (]K0C}1K]w!yonuCLyr%h *%)@1ͅVyg(r*NB{phN./Jf -LR5rGǣ. %rJR%YAW/.^5Kf04t1 1 DiA,ԳPi]P%2bܮ*i9,*I8eo]&mjf3ea˕fZQf YO.w4QHpQmfBQA{o"Ew34]Р.{$͋BF2,ڒ}c?~V;6p*\ ̓RIaS8/_?j3 ~PK!|word/webSettings.xmlQK1 wp} cė!L@mŦ)I:ݦI>L=8 jƵ X]tu1S$z)@ j>6z)JE۩mJZȘ"ѤF]Yh[;AfYx$Cԯ|)E%Z&#ƅ_Y&!2<>RO/B>oYrLԬbr>aAX_O%ý\C?ן}PK!8@docProps/app.xml (SAn0cI&ZAȡi XI,J$AnE{.X0;\K|ld>hkfd4N4ڬfm+U4customXml/itemProps1.xmlPK-!JZ 6docProps/core.xmlPK-!\8customXml/item1.xmlPK-!-mf9word/fontTable.xmlPK-!|<word/webSettings.xmlPK-!8@[=docProps/app.xmlPK@pandoc-3.1.3/test/docx/nested_anchors_in_header.native0000644000000000000000000000504407346545000021277 0ustar0000000000000000[Header 1 ("\1086\1075\1083\1072\1074\1083\1077\1085\1080\1077",["TOC-Heading"],[]) [Str "\1054\1075\1083\1072\1074\1083\1077\1085\1080\1077"] ,Para [Link ("",[],[]) [Str "Short",Space,Str "instructions",Space,Link ("",[],[]) [Str "1"] ("#short-instructions","")] ("#short-instructions","")] ,Para [Link ("",[],[]) [Str "Some",Space,Str "instructions",Space,Link ("",[],[]) [Str "1"] ("#some-instructions","")] ("#some-instructions","")] ,Para [Link ("",[],[]) [Str "Remote",Space,Str "folder",Space,Str "or",Space,Str "longlonglonglonglong",Space,Str "file",Space,Str "with",Space,Str "manymanymanymany",Space,Str "letters",Space,Str "inside",Space,Str "opening",Space,Link ("",[],[]) [Str "2"] ("#remote-folder-or-longlonglonglonglong-file-with-manymanymanymany-letters-inside-opening","")] ("#remote-folder-or-longlonglonglonglong-file-with-manymanymanymany-letters-inside-opening","")] ,Para [Link ("",[],[]) [Str "Remote",Space,Str "folder",Space,Str "or",Space,Str "longlonglonglonglong",Space,Str "file",Space,Str "with",Space,Str "manymanymanymany",Space,Str "letters",Space,Str "inside",Space,Str "closing",Space,Link ("",[],[]) [Str "2"] ("#remote-folder-or-longlonglonglonglong-file-with-manymanymanymany-letters-inside-closing","")] ("#remote-folder-or-longlonglonglonglong-file-with-manymanymanymany-letters-inside-closing","")] ,Header 1 ("short-instructions",[],[]) [Str "Short",Space,Str "instructions"] ,Para [Link ("",[],[]) [Str "Open",Space,Str "remote",Space,Str "folder"] ("#remote-folder-or-longlonglonglonglong-file-with-manymanymanymany-letters-inside-opening","")] ,Para [Str "Do",Space,Str "staff"] ,Para [Link ("",[],[]) [Str "Close",Space,Str "remote",Space,Str "folder"] ("#remote-folder-or-longlonglonglonglong-file-with-manymanymanymany-letters-inside-closing","")] ,Header 1 ("some-instructions",[],[]) [Str "Some",Space,Str "instructions"] ,Para [Str "Lines"] ,Header 2 ("remote-folder-or-longlonglonglonglong-file-with-manymanymanymany-letters-inside-opening",[],[]) [Str "Remote",Space,Str "folder",Space,Str "or",Space,Str "longlonglonglonglong",Space,Str "file",Space,Str "with",Space,Str "manymanymanymany",Space,Str "letters",Space,Str "inside",Space,Str "opening"] ,Para [Str "Open",Space,Str "folder"] ,Header 2 ("remote-folder-or-longlonglonglonglong-file-with-manymanymanymany-letters-inside-closing",[],[]) [Str "Remote",Space,Str "folder",Space,Str "or",Space,Str "longlonglonglonglong",Space,Str "file",Space,Str "with",Space,Str "manymanymanymany",Space,Str "letters",Space,Str "inside",Space,Str "closing"] ,Para [Str "Close",Space,Str "folder"]] pandoc-3.1.3/test/docx/nested_instrText.docx0000644000000000000000000003344007346545000017320 0ustar0000000000000000PK!ߤlZ [Content_Types].xml (n0EUb袪*>-R{VǼQU l"%33Vƃښl w%=^i7+-d&0A6l4L60#ÒS OX*V$z33%p)O^ 5}nH"dsXgL`|ԟ|Prۃs?PWtt4Q+"wa|T\y,NU%-D/ܚXݞ('NǶlC[74U";9sFu%O0PadX!9AQɨPڀEu~慶HKPئ9TԆJL: ǚ%(af3X0̂ h[eY\Hw`^ Y#U ="q"OKaثh Թkn{OLIХhy$=ɈB;-zR҆\)}(4yZ0DWVZhN _Mct5Q1}v`${?y PK!c1word/document.xml[[o6~ aY%Wp;ڴF=t(P(m DOfdm1`]Ê݀֡l؏O ;Kb'ub(Rxsx U*P)Q5v1%~e&QJ"*|c+Ike L&W-%sDT:nظ-  LtI !!JajWT*pjh:QW3HZI% 1CDR >4TLRuE!  IF )܍ k:Y;Ȇ&%K%eg Ki*`bMհz~h :2z2~V.z?=H?.~ppK lӒ< KMA$*nőtӴ6`?LOP{̦$Cr t4gob} Ik{(1t&gc+ @ M9h`6mg.;m4hh ӁC`ӿ%фY(&KKmL%$,|\ _0+E*@ NB*:I:*Qga愣`k!3^iY CmR%}>%H$ȭR)KSCXJ۴G7wz9idXu/| e-0X2c!>Z`3O͞>U|=6 Wllqk;?ݥͭ77k[77>٩ы{(LŔa>Vr6%a |c[ |y@~>$$Ѹ0g09ZOKh( Q0 Vi@[BEȳ/Wzæ,2×$uT dwT8)8- 67:^ĸh"wv+COfP=r>4!GrL](eN/>-'D)[H1R%ڒ1S"cx yι+8e `|S(pֽ BV*5~SMEi/ ";aGr߁nt(*:f4 ¹L6wf~.op`F6 =YcR\Hdq!{9;n\em;Y9U@Q 9!!6;;{MϮ#޸r;өw<=߻Er:%2H{Al}qz11|M3Q]gY&5a/ ='z Z Ƀ)äl TR1UJ MX@LX,! r3eCG0kȁ|Z`eKRnG`Łd yÇC"k2I/?$=S ZZͭ!47OF$;>ks@[eag]GpwlkϾZĶqgsIѽƵkAS_+c 0ھ5/ﮁWW.BBh.7:M,Tvc$E˷*0W{ 9DRSs9v>q/Xx}]ŒalBGk :qQWƌ& -_Ұuo"Jԫֱ6CADݡ7mRbXv/IM5EVPK!x4word/theme/theme1.xmlYMFe[%`Kvf7 MJci,M<xwMT BZrhC) 4_%!MDgF,:Jv|<;ϼ3#⥓G0v2 $Di1o*-Ӡ !$syi.>;cƌMvUf@/ Ly߈d `E0oujVRHA^P^'>}gbJl8:Ό#;&.$LJi{0lms.h0mnv%u\7ͅ? Ags)c^;sl 5}o|c uįho(/:uVkx%((-. #hm9|VWnMk-wI6\Pj@q~o{(Pjխů-K2 `qе&AǠA&c~ʽ%/N>?}GnwQ_/߽yOxejZ8Sh}g/|x72%q$|0{;E7(HѠ,Vf 8θZ耗wq6eH' p#vNWX(LH?x6-np:\z1Th< )d#c5fwR⺏P2bd҆ մ4 ϷF`{H7ֹX e0e 2 .#u$fY2bbCHz6S^\idzDEf u=@H铱dҸ ´$CD}A%g[\ DL3ݖDݏ3<P:zҳ4~Eݝw\C_~T/[Pt=7 ){޴Ky.$o#aGS>peE-&1/·SpQd >LMѹB E&$[kٔlgK"6C½Ea l߆Di0DCC- !gm pg?o7;g0yn=ӛN^[pN妒(-py˹n/SXEhN՚q\n0#~)dQGi q]`f`^NNjuW=%׶޿ɏrheY}m9BACu6%pSS/Z*UkZ8PL&k-[Uj[[,MgĶOU+^)kk/'._>N1*<^rPfL31YNWZNb7lrJqS^> =3x6#^$5B@*4ajukCoG^>h7ڽf*kU^W|iMHnóVYݴVzvݽ?5yYWPK!ْNword/settings.xmlY[s6~ߙ="@R! Nn;QDB׼ HV:f9qN^b|sCY,mX7rabZE*E]ɴ˟?oZu.@Enbyf^}S7p_RwެKmo*Fw./#byfR*mzM穙5vGYT`qmM>U{țvV~6]Y|yvk=Jƽ^ujTyu6̾Ph ؞8q S@P Ru:I$ɳ#m.f~YߏULr\W-UۏWculAWaSWYw}3qetz=c|HQ4@:ϱ\н>4iJ>vO\ގlҥw8? L){j>$ nSAmɄU "c݃s,e4Dclș*:~ :{c@=| m~8]? %FuO}7az=QgiS0q("RS)?GPx(M#sLG.#O9y*"}Kxj ] Bu\4n""̧AN"Q;,!,B$S>Z!,|"Gϒ,JO / v$ 4^$ 4۾9Cq4:~D?v||?@*p xa>t?) 9lGWo Vb(hDў }'z?OØP:Dv$%|ꡱIT&D茏' oQ/ Q tT[L+ ]X hhNc.yP3k9}' 'hN M"K{hN7 vd}l88"i"Dw%R;M'Dx1>_.:{h+y-@5S( jGMEkTZNfNE шȃ+%h4~V'w_mwgiL3ibv85yu{|\}].1A7FPqH^:=*؃\%QT1.z[XG$#P#X4-r3 86$i3 qNg[Alҋ+eq5k ݒ54Gq7PDtB2: T-Q $J{qU~9wG 8ƺzZ XLword/fontTable.xmln0@' E%U6ڤS'mc1sHfB0^ޖiÕLQ0c5y-K䚔JA.i5f*h kZ0AHULB2SZ :?7U"x1O,]+LZ7׬i)ZueEr G VFev*r(` 1C_L>༮aq_ىfEN?Ri*͞7wy&tuիpd2䖔)zTE2,Sqj;҂hÚ \d҆3"xdcU}xK4oѦ !1++ %j#Ad<_,H5_0"QPǁ1:ξr$qwjc!!p ЎBڙ ю;M#fy`d$?7?Hk9oQ F`"rf}157f):LΟ ^F8| }AțÕfPK!@9#word/webSettings.xml_O0ww Ab c~ݠ-Ombxarv9|B a*Kׅx["|,z(H,7&o` 1IJX;]Mu.% 8ECfӰNm=jXr80hx@uc/XtԚkCY@89e]@耄Ur1:Gi7r@aϘ ɑ)91d~][cP+Qלtprm -8K  ee-6/Ϗ<PK!x*[ uword/styles.xmlKs8[߁K8S]k'39C$da Zc> )Ajb_dhh~539h(Y,=~<\|EyApѳG~?~yod4>͋biw74%:92%(wS"N,)ؔqVjC) c+)WDsKڋBjt+^JX(eTc23|888ǚ,mKp%%ǯ2 8QS--JO7dI(RWVgTV6:#%/rQcw%"^>r6Rg(ɋ>?Zya` BgFաȥWu9F~g;*lD\ͭ:aT]cJbJpJ,݊&B87 }6:=NhʮY̺0GN߮>(3ɱ"ϓ1]hMp}uV5[o"LQm[mgm7W :|U{t^WA߫ ; bYB_+!buǡF4!64ǡ%4!4ǡ418Fs)D`?tn9}Jnw{|n~ۏ=XR+Q2ˊ* QdQA_HX& ӓASEz"L}N"1f챔4\q=S$JZ#>cZ4iȁYFL<c, } 1HPXhRs-`P$bx nY>4$(9X 1`g3<1|jZi:j|귚jZ~i܄x{ձ s?>{=Q<һXr.D=8͝P5ܲP~3.UkP[o %o*Z߮ä;rZj^Vb$y0coz"0j9b+pYmFիjE*k{j'mn\dK(PHQ >bGbt1'93ҠG # eau'%GVwуXTwL( c;ISs4goZ{h;.YY"$I-KYƂL_6D&ahV4qBE -_T <2?dzi04(0[fjOk0=4v 7kP$ϙ[Ro^6<<\6`=ue![lxlxp^]7dI0gX(OX(7X(XP ǂ ǂ ZXP, jXqf`ƙg_":Ep)Bs2D4]I[ WNIMΊv/L?b!>HíiAsA8">*GWនOtmɂ4-{dʶ1{[-Lvl{m}~BP!-T@ "BP!%T`%THA "BPͷh qB>BB Z*D hBZ*0* hBD t2t}Rۏ1ۨVnV/xZ;4F?r&fk@}>C};S{*!o[$o5mKwE_L㮠ktܭ#`f,}yWawhpWd awc(yg?/ohN܄a }Մc(NszMF7O'X7 a7PfXW M\ 0(oWCa`ĺnjs5ʰ!jv5D.!jHr5] Q~Y2Րu5$`] ^WC!fe([Ee-C\p =%3[Us\d;M=7?c((?W㲥6W M-9]˖:]˖:]˖ܮeKmeKmnqRqRqْոlոlոl'd'ոlոlj\j\j\j\t5.[t5.[t5.[r----9]˖:]˖:]˖ :IJd{546ݗ~loB~RR oO4ic]٪pu{Q Kċ~Y ޘϸ90ż1ۭ窦q'GEg׈LTrWSm]꺵^jqQ[#$Rvn6WO𱭎FS^yEq% RjkJ*:I9#bᾔYQ3o8?A紗&;땩>v-^?/2\E2^ږUr'TiS* @:5m%uะu+sF%Խ@z"\]CfJg\ 6Y0磤9-[+qwh{&-ph6דQ3WTjRa抣Ӌ/fe~Lg#b&=hW^g1oK^wl-ؽ4kyX7WvbWPK!\vdocProps/app.xml (RN0#QS@+ q%5гeo Ƕlφ!9z35C.ٴ3)mEVOn,&a0"?`̗ ^ƘI2eSj[T." 5sU%ܵh(9τVA0o鿢_|/8z#nLK-%aJ"=x5Ǝ غ"WjD2U16pR$Z-2誔|ͺy`#@6(wA/!L-R{VǼQU l"%33Vƃښl w%=^i7+-d&0A6l4L60#ÒS OX*V$z33%p)O^ 5}nH"dsXgL`|ԟ|Prۃs?PWtt4Q+"wa|T\y,NU%-D/ܚXݞ(K/4Vm^urw2NP0ŮVw5j o7o:>S!?p8JX[d0KDEVKc2P,ũa].ﰘsYҡ+(!O>zPK!Vmword/document.xmlVKo0 0|oȫ0H_a@tn"˶IQ{[&Ͱ%Ǐ(Uޖ(MO2=±(/Rŕix*Io?]7I&p7@p4~iL@0/JhK,X b4BeAFI%0"EhB\( RZ^DiEF~xA\Y%-{uL宫(RuIeG@YAo%eޮ)C?kX21 舅8xC{& QPiō&<*Q7,;'`uM#* d8y*Ph]#hUEkW2HIhp5 G ~<{Q-+IUɋ!=φ8tR [6Px686ev+I8 $/, wtGrTWja*h-BBl<*'wwқœp4f?ZX)45PW;B'xe -kYg#ƭEizq- \^H>ЖeDٶ:1 Ģ6NaQi8q ('Kj0MߥPK!R%#word/theme/theme1.xmlYM7c7c;i&%GyFQI]%9 i顁z(m mSxlɖYl`)YZJ4WN㘦z4iqK-p3GܹᎈQO8ӝrKtR7,BVYT<~RU*rq&f.YC@A Ns0pIǑȅ8w/FDloa0'5eǢu=]W"6q1h,) 9Ӝz^[`5P^77]/xʋ~8W1@yѳĤY]@yoV}i(&8l+^]BƔ\۞;l>ZS6\(p |08}L#_S^?ʎ:>/@_}^}?< t!N71M91ha nM#SXsHCf2)6}Af[SJzYt=K,샳 ml-TwlsȠyȔHN؈>t,= z[CrGjZ]ÉFPۈ]У澏L\"b* XÄ=(bɃ9 s!3!B DlnA{<1L )Ց}:cLq؏D.QnQa%Ae`5w12}޾#վ@m D8'c'8=Sd{.շO{!˰uG6ܺxkw[Hn tto/+V⪮$[cLȁǕs9p(UE-,.3p `p*"pq0\; dykZqS],'ri [xAɵ+/rKO2Q /wb}KpV3I m(5YC2!f^EqM[lE!pqbUyIGb>+(ʒ֧FY&[Դǻ;5V+7XҽuB붝o hV2jV9^Ksqާ^j&\}y]Ut"G\ Tk.'8*^k_AɭRK]ϫW^ʠ8zCnPNi0#2{x ŽZ# іJ:x#rK<:Ꮷ_"H@'^+k ;ޡ˞>ez֜pW)llq3-E_gGfVL.o`ft=yOYEWNkV$z%a(Kz<, |CA&IV p!z0Wtӝ=21`a^E~DGZݳ$tl"/IwDmKOV{iϡrpulLփ=ҺO1g۝˽|xkf[ \qEuz8XI&#Vi#6 c#l(l(;=Q%OP?Cy6F>SiFz;ʊw9:=7#wW̹ZÁȱ>f|.9L|Zoz䲜\f2Z_}Hʬ(٢LfbZ,næPK!word/fontTable.xmlS]o0}`Џh! 85D~7!@U`>LEϽ>9>~xY ҚFa]J||uG xfLY#R@?=If $Lx!4-bff.4s?[]2/RI0;fJ  Bea[r{jç4;@%wl{NQKˣi'\F4O:Ph>*!HFN Xȅpd&شb*sɫРs '6pƴT-+d#)Eʦ[2cw2WWVaɌ~9.O4]%R^UIғgb˳gw^117u88LSR' s,TSn/1 QJG tHsC6oyi-[Of<*W\%/ʈ)pLd^1&jFs#<'x:?N:ԉnPK!,word/webSettings.xmlN0 ;P徦j.3i83qeٲd˛7 ; J,.x]= UG`mfrN.D ܠmՔslf;.)B@ M4MF]G'ub5 B2x)"i5L,0==4.Bg1 cN-ogm6J٤LPK!7docProps/app.xml (SQo ~`dmUEjJ5EӶF>3|Q1 Q_N\i~z]eME泒`mWdW#E4B[9B ց B&T-) ^ fZ{=m$c%`VMƃyqCs;i||~3+& PK!w.|docProps/core.xml (N0HC{$DI*Q A*7cOSX=ۤT,|-lkAŃ iør4/Ɉh$hM뫌6^t@[&p$iRrVSH\4&ֹŠRN` #HF{ZibPǃtm.eNEi[{fl^͏r*2FS˭"GYf ýlFO` q-.`{IEcg ~w;Uּ}",pH{2Çr$aɨo.϶Ó#>4L4;_ Z*@7>':PK! sword/styles.xmlr8j߁ ؉kDI6qO\C$$aMb{~(5A^_٢Ah)<˅WWGPEB.&??ydb%_o<^s@d~WUQy _KBe +lyLBs|Rc!XTapYÌǚdiU yN⊗0!ט3JD\-WzcY?>%8Yz)U}ݒ@&tG*|cd,܈9l?3DY^ܪB3&`߂4Ηe2{;a('l2194?I(kY25-Z3lqycпV[h."ݨ85W[ݑ?U;::fU>oF<ɑY^.*9{5y^8"JD?rm] T^[=<vd 7?qg]+Ό]m> qb"v3˝mBVtR+zR+:]Ԋ޼Ԋ,"!#TPqnDsfCs^BsVAsN@s8q)SЕd?ud{?w>ݿw?܏j\kbJR<(xUMIxf~F`~ޟ!֤”dZ ,3]m8?y ԀE3^G|r: qrĦB@ɜ 7S$cqw_C$ beL":aa7M1F@es"-MYbƗ32AK3.iD=Uӈ:[TVӈ[Moߞu?v79"=3LOnc2c*0ǗmƮ烊{}ښD5)2[-d9ChTZlozl&h_hY9/:MkIL;cqYMhǻ3lc"lЍ%[35rR|Vo؆5Vij$A+c> _Sa4鳊c#:Tkm˟XIYSX.loe_Y:zb&$n&nMpRSf~PE2f}$?i^hk T$4SHA\,e|DKjA-=.>`6dya0DžLuOk6y8~Uɑoea?کÍ&lOz``cp7v GӘpBQmnã_SeLׁ  YLdNŖGG)cy,_İ0*%,J HN 62l:h ЂQ,O FgFgFgFgXI0.ʹnG# *c3S̗iEWdu7 'J?iE.#,":kݯx2YW*x&wg) tߠÞ7b*j}9?[aW)a_y$ʤi(tx林Lb+HYVH7#O"epї?ϑ|}Y\m_"#R/Cs33aqc\` g0{v̠i׷zv=hTqNo's:(Í1xq#@nĠܔc1xr#У#F+`h)>ՈY1x:F h)(p/B ڨ6*D '`8xQaQ!Ǩ6*D hBڨ6eTHA"FQ|qQa<Ψ0ǨcTHA"FQ!mT@"PF^FQ!mT@ߨ0gTcTH1* hBڨ6*D (p/B ڨ6*DjO0*R| )hBڨ6*D hBʨ ˨6*D }Yt]f?bQ۷rQQMܬ"|P! b eQ;Nԉo;|]Llh$8r֗HPez;:Fv$ ֗E)zwV#on.V :0ntұEpj CEs& M@u Q~RCa7![jX!+&xI 0RC'5ܕaԐzى(?+5$`Ԑ%5K QRCԠJFK X!+5$xI 0RC'=%5JV8n [Q-=ZZ5㪥hnP܄2 (=nZa7Oj\%QԸj)5ZW-JR㪥.qR%5ZW-JR㪥.qRԸjK;d'_j\+5ZrKUK]R㪥.qՒSj\+5ZW-UK]R㪥.qRԸj)5ZW-J^dbs3[7D3H듀EI&ش$_U/ OVkpUJ+XUm<+v<*6dͯ.ݜ ~uڳ݅6[IzRukn<=LIㆎSiw۶5w,}3~irI{̟[j۪uͮm4Կ/?PK-!ߤlZ [Content_Types].xmlPK-!N _rels/.relsPK-!dQ1word/_rels/document.xml.relsPK-!Vmword/document.xmlPK-!R%# word/theme/theme1.xmlPK-! VDword/settings.xmlPK-!mword/fontTable.xmlPK-!,word/webSettings.xmlPK-!7docProps/app.xmlPK-!w.|docProps/core.xmlPK-! sword/styles.xmlPK *pandoc-3.1.3/test/docx/nested_sdt.native0000644000000000000000000000017707346545000016440 0ustar0000000000000000[Para [Str "Test",Space,Str "Paragraph1"] ,Para [Str "Test",Space,Str "Paragraph2"] ,Para [Str "Test",Space,Str "Paragraph3"]] pandoc-3.1.3/test/docx/nested_smart_tags.docx0000644000000000000000000003251107346545000017456 0ustar0000000000000000PK!ߤlZ [Content_Types].xml (n0EUb袪*>-R{VǼQU l"%33Vƃښl w%=^i7+-d&0A6l4L60#ÒS OX*V$z33%p)O^ 5}nH"dsXgL`|ԟ|Prۃs?PWtt4Q+"wa|T\y,NU%-D/ܚXݞ(K/4Vm^urw2NP0ŮVw5j o7o:>S!?p8JX[d0KDEVKc2P,ũa].ﰘsYҡ+(!O>zPK!1)word/document.xmlZ[o~/@iHk2:d& SM>HID(R )kԧ!%=lŗq.CbS$?sDK&ɜ+vG*LdͧqXGR+>TvޝO?"PvRѴ:O]<(V(YWDZxԆu~ˍUsj;5\e74fh pԍRj?;^'ס:րF{֐CpHoC#CZ3lutdA$݌"?:1R 0{' vB6dFx4r=FMI_43.Skr'.AZT Eδwy&qe]ypdAŌ]pwf'XrDnGik'Ѥ M8lX8Vciޕ(LY4ᖛ9KG8M㼈\G"14zpSK99Ӆ.D&հg*rN+Z#SX`;^vuִᵀV*՚S%0T^mǫW Sڃ߬o_,j_ƀW2` 8Cf`Цo _=#t74 #vH!Gcf5CǤݪ5[LpZ3;^τK8ۃ"r]OIUpj%vOA#Ddh OEN@J\@!O.5Db4U`߾f%`x8XZXq][17cIVDi t%Qڑ,ގ!J ~ 10JRZqs)d$/TyKf%ȒXZ20>_I8Ρ~Q6=̵n!` I,D-O%hR‚%ٌ0^!+Nm:2cd2(Z$)s59h.hՖ߶Z+e;Fx7)zeXlEזS](܁U}2.6gtveN8}[摳1}Ѥux^ s)6ԖeC='|R.G7L=?A;t6j 0\5wAqK~g˴zy: ?`xz)+fA."9 ch)a0[蚊▁^Z uX}ͰwZpb[佲}F?y%Bg<ݭdn|@%:"]%;Ѱ?o+w{ĕZT"C$[G߽0nGB} |?vە}%i!Zs}ЏO{Ops'ro`d<%3sx>ks  =ߜit_ƙl1=fѤ&؜Z'wm1NDN- ]QvujuiےP-Ѥh[]`Kho5 _hxʋ~8 V1,򢷁z^_@yo9~mixJ0&hk6bKȘFxsBUK+@%pY|>c \0Qd8 o 2DSwNCWTF%)dMBk*%WΟ<ӧO~^iwdq_s_k3o~o{ś/^?>3} Fe1J!nS.I }7 d@h[s׃zS!&CQBg7T{tSU,̓YwZX2HF)1 d@h0{CRȘ[c4VJE^&"Zl[=MDG%Z1Hqyxb"y4pEc5 c&tѽ)dƜC HF(KOD,Q`!H;DE@5}޾'dȼ@dό$~1yuMS](k?y"f݁s"nZmuЇ}0@U e{^鳺u&zw#ECѨ*h0MDq1)PeQb!f 1A5}+(I{(Dfx|J5Vtk]кm`5@mժSᅠ4rin;#v}Zy@JUx=AF s3?,JZ u9֌|7{Ai{pJWsc5/{(g|EoIkUUeXHDQ>4:fkW:AW7VvgضN+ZTܦ#;[no\"bw^koPK!O word/settings.xmlVr6}LA"NlU3V  @JHrr3~=gF; bgI4"f}[X$0bREt &zw/o!ւ09ZǦ̙TDXK͑O݌9+8KyEj1F֙䲮iEB3YɪDXq 0[L` m ;΂>MN^jhqJx@iYc8 R18>#z}+z*0O:|2ec G>iI+,/5EcQ+*^)2q#}-sLZڟf5w -[ա{TW4A%N{K*-AnڲV& q}s "D_ %ŮPH|sӅAJueW6"bԙX+McDzr0Ȳ ;қdMl:fA6d ;^ג1'?uI07:30\ڢ7b׳+qWp5i8l"n@NЯ3v¯CE1GPsI6w6C's)Fط7WQhau3j`){VtL+d1,vvg*[͓IR#YU'ZZNHggL@F Ua '(,OY2`v BmcFq@^0p4#/;rōǓ  >Uw>j=lXIcr4Ge:+YW|A)"rJD9LzFN,XlND7ه*wtçË27ْggHLvLrG0#t^~<1)}K?XPK!ԍ'word/webSettings.xmlj1{r׬R,B)^J쬆f2!ڧoj^B&|Ʉ-vD+9R7T[rp+'kC%r1e H)d%JnR Rl6͆"øV6 aɮiE1G&^PXd>u*"y'Dk)!\o? Bk"15i9rf~I?`|Lӣr391GI|\{z岔FDe!E KwZ9jr PK!trdocProps/app.xml (n1Hƛ*9P*JٶgM,eOwx]8=g<;͇so=d[f8[+v|8{Ǫʵz+vĮW. Rb;İ<*Ic̸댆kzpu}О)!3.I[3_zhI@BV!6Y{2ĝBsG!}l<_P(zH͓C*?}Vl^*`))twW O 6A<Ţ\Hl -Mt7TBm=}Wa|oa>Z ɟPK!‹wkdocProps/core.xml (]O0MKvYHp%QƻM[mlȕw9oO6<8B#Lq!73Zw(JNs%a*hޤL'Lx6JqlMs:ز-FVΧf5e;<"d pSGq-^$9%gr(@:(gց)ՁsAU]V`YQ9nP?OUC!k,,q吥'>fS&{Q?4X kwPpG8Xfv[A9n_u-WgոD7D'{۽ޖ5뼏W H< c*&cY6?  f PK!QQ\ }word/styles.xmlܝrSw`*HqƵ-cWlw\C$daL IYvc}yA ͌E?h5 '? >^|xiF <'7~iufo!M=?̳lq<F$4+gc11>S6k(IӔƕsG?ʹg,`c/'rɹlAmYHrwNh+:Jaq`.6/~,"LJ# ǗhxCBB\b-rL8}_oÓ'OpB#v͂چۜ_SzT,2(է L6&' [/z%l\x~NLOxBJT;frV׎kGﵣ{{Ha;bq@_s!6AhAlhAKhA*hA h!C90Ep2P =CsvCw`ݞw{:nvͧZލYVٌ,2ڟFbR5h `V Ľi>QGxɪ3oƞ(6/4EG@-CtBg4O];xM<9c8p}%IRZs) #'8qnYڿ$;[!uĺwbտ6P aU4G=UuXAsoy|귂 ~+heJcyY혰 @8g=<%d1Yf~{t1U$Wz"Yߡ5+qUԗ;}@!a]Dݭ̔xƳGΘř|ӿi(7GG{3LN#f9CmI=$4%&-ImlHA& գv0]NS瞓3C:4?EPÃ_[?$M5<ۿ+x <7:au) F82LP]f&tՍfʟF ޱff̰u5$X`] Q֮(;WĈu5$`]m+W!ej8a] XWC=d#ejs5a] XWCՐ`jw5DY\ d!jH\ 0(kWCTYQq07 kZTKe,%jIw{fBW7 (1xǚQhQvUKMu5Z2W-W-W-]\\m+W㪥VW㪥VW%qRqRqR{FqRqՒոjոjոjոjj\j\j\dv5Zjr5Zjr5Zjr5Z2W-W-W- P$}q$g MyB}UUr sbL|mQ oNxM6WI*jbyU J>0B~K>(J/.k7ߗiE&^9_ > lQ_rd,Ҥv2xdM{(mְR}eqUS}Mjw+?ݥv5%">TkI4//:ImLͷ+>)]܋&eǭpf|4_kuRE_)6#['W^*7Z?'Ue`Jjc"E˻v쪌ʼjQm./ g #D>xۂLm-V>sf0G}VE*iޑ|k0oҙԘX;~l/4'jc CISWÌR%g/wLmxƸͶݽf y6<=۟ u i5F}:D ۓCNV[jY](@zjgM=]Fw^Pڪp/#|(Y)TtUW@{'[v;O4,REEY5G3l޵k3QHC p?~5ʒŸ>ue#>-J/PK-!ߤlZ [Content_Types].xmlPK-!N _rels/.relsPK-!dQ1word/_rels/document.xml.relsPK-!1)word/document.xmlPK-!f:$'word/theme/theme1.xmlPK-!O ~word/settings.xmlPK-!fword/fontTable.xmlPK-!ԍ'word/webSettings.xmlPK-!tr0docProps/app.xmlPK-!‹wkG"docProps/core.xmlPK-!QQ\ }$word/styles.xmlPK r2pandoc-3.1.3/test/docx/nested_smart_tags.native0000644000000000000000000001443307346545000020012 0ustar0000000000000000[Header 2 ("and-it-came-to-pass-in-the-course-of-those-many-days",["Myheading2"],[]) [Str "159.",Space,Str "And",Space,Str "It",Space,Str "Came",Space,Str "to",Space,Str "Pass",Space,Str "in",Space,Str "the",Space,Str "Course",Space,Str "of",Space,Str "Those",Space,Str "Many",Space,Str "Days"] ,Para [Str "I",Space,Str "heard"] ,Para [Str "\8220And",Space,Str "it",Space,Str "came",Space,Str "to",Space,Str "pass",Space,Str "in",Space,Str "the",Space,Str "course",Space,Str "of",Space,Str "those",Space,Str "many",Space,Str "days",Space,Str "that",Space,Str "the",Space,Str "king",Space,Str "of",Space,Str "Egypt",Space,Str "died;",Space,Str "and",Space,Str "the",Space,Str "children",Space,Str "of",Space,Str "Israel",Space,Str "sighed",Space,Str "by",Space,Str "reason",Space,Str "of",Space,Str "the",Space,Str "bondage,",Space,Str "and",Space,Str "they",Space,Str "cried,",Space,Str "and",Space,Str "their",Space,Str "cry",Space,Str "came",Space,Str "up",Space,Str "unto",Space,Str "God",Space,Str "by",Space,Str "reason",Space,Str "of",Space,Str "the",Space,Str "bondage.",Space,Str "And",Space,Str "God",Space,Str "heard",Space,Str "their",Space,Str "groaning\8221",Space,Str "(Exodus",Space,Str "2:23-4).",Space,Str "This",Space,Str "means",Space,Str "that",Space,Str "they",Space,Str "suffered",Space,Str "so",Space,Str "much",Space,Str "that",Space,Str "they",Space,Str "could",Space,Str "not",Space,Str "bear",Space,Str "it",Space,Str "any",Space,Str "longer.",Space,Str "And",Space,Str "they",Space,Str "so",Space,Str "pleaded",Space,Str "with",Space,Str "prayer,",Space,Str "that",Space,Str "\8220their",Space,Str "cry",Space,Str "came",Space,Str "up",Space,Str "unto",Space,Str "God.\8221"] ,Para [Str "But",Space,Str "we",Space,Str "can",Space,Str "see",Space,Str "that",Space,Str "they",Space,Str "were",Space,Str "saying,",Space,Str "\8220Would",Space,Str "that",Space,Str "we",Space,Str "had\8230",Space,Str "when",Space,Str "we",Space,Str "sat",Space,Str "by",Space,Str "the",Space,Str "flesh-pots,",Space,Str "when",Space,Str "we",Space,Str "did",Space,Str "eat",Space,Str "bread",Space,Str "to",Space,Str "the",Space,Str "full.\8221",Space,Str "And",Space,Str "they",Space,Str "also",Space,Str "said,",Space,Str "\8220We",Space,Str "remember",Space,Str "the",Space,Str "fish,",Space,Str "which",Space,Str "we",Space,Str "would",Space,Str "eat",Space,Str "in",Space,Str "Egypt",Space,Str "for",Space,Str "naught;",Space,Str "the",Space,Str "cucumbers,",Space,Str "and",Space,Str "the",Space,Str "melons,",Space,Str "and",Space,Str "the",Space,Str "leeks,",Space,Str "and",Space,Str "the",Space,Str "onions,",Space,Str "and",Space,Str "the",Space,Str "garlic.\8221"] ,Para [Str "The",Space,Str "thing",Space,Str "is",Space,Str "that,",Space,Str "indeed,",Space,Str "they",Space,Str "were",Space,Str "very",Space,Str "fond",Space,Str "of",Space,Str "the",Space,Str "work",Space,Str "in",Space,Str "Egypt.",Space,Str "This",Space,Str "is",Space,Str "the",Space,Str "meaning",Space,Str "of",Space,Str "\8220But",Space,Str "mingled",Space,Str "themselves",Space,Str "with",Space,Str "the",Space,Str "nations,",Space,Str "and",Space,Str "learned",Space,Str "their",Space,Str "works.\8221",Space,Str "It",Space,Str "means",Space,Str "that",Space,Str "if",Space,Str "Israel",Space,Str "are",Space,Str "under",Space,Str "the",Space,Str "dominion",Space,Str "of",Space,Str "a",Space,Str "certain",Space,Str "nation,",Space,Str "that",Space,Str "nation",Space,Str "controls",Space,Str "them",Space,Str "and",Space,Str "they",Space,Str "cannot",Space,Str "retire",Space,Str "from",Space,Str "their",Space,Str "dominion.",Space,Str "Thus,",Space,Str "they",Space,Str "tasted",Space,Str "sufficient",Space,Str "flavor",Space,Str "in",Space,Str "that",Space,Str "work",Space,Str "and",Space,Str "could",Space,Str "not",Space,Str "be",Space,Str "redeemed."] ,Para [Str "So",Space,Str "what",Space,Str "did",Space,Str "the",Space,Str "Creator",Space,Str "do?",Space,Str "\8220The",Space,Str "king",Space,Str "of",Space,Str "Egypt",Space,Str "died,\8221",Space,Str "meaning",Space,Str "they",Space,Str "had",Space,Str "lost",Space,Str "this",Space,Str "servitude.",Space,Str "Thus",Space,Str "they",Space,Str "could",Space,Str "no",Space,Str "longer",Space,Str "work;",Space,Str "they",Space,Str "understood",Space,Str "that",Space,Str "if",Space,Str "there",Space,Str "is",Space,Str "no",Space,Str "perfection",Space,Str "of",Space,Str "the",Space,Emph [Str "Mochin"],Str ",",Space,Str "the",Space,Str "servitude",Space,Str "is",Space,Str "also",Space,Str "incomplete.",Space,Str "Hence,",Space,Str "\8220and",Space,Str "the",Space,Str "children",Space,Str "of",Space,Str "Israel",Space,Str "sighed",Space,Str "by",Space,Str "reason",Space,Str "of",Space,Str "the",Space,Str "bondage.\8221",Space,Str "The",Space,Str "work",Space,Str "means",Space,Str "that",Space,Str "they",Space,Str "did",Space,Str "not",Space,Str "suffice",Space,Str "for",Space,Str "the",Space,Str "work,",Space,Str "that",Space,Str "they",Space,Str "had",Space,Str "no",Space,Str "liveliness",Space,Str "in",Space,Str "the",Space,Str "servitude."] ,Para [Str "This",Space,Str "is",Space,Str "the",Space,Str "meaning",Space,Str "of",Space,Str "\8220the",Space,Str "king",Space,Str "of",Space,Str "Egypt",Space,Str "died,\8221",Space,Str "that",Space,Str "all",Space,Str "the",Space,Str "dominations",Space,Str "of",Space,Str "the",Space,Str "king",Space,Str "of",Space,Str "Egypt,",Space,Str "which",Space,Str "he",Space,Str "was",Space,Str "providing",Space,Str "for",Space,Str "and",Space,Str "nourishing,",Space,Str "had",Space,Str "died.",Space,Str "This",Space,Str "is",Space,Str "why",Space,Str "they",Space,Str "had",Space,Str "room",Space,Str "for",Space,Str "prayer.",Space,Str "And",Space,Str "they",Space,Str "were",Space,Str "immediately",Space,Str "salvaged.",Space,Str "And",Space,Str "afterwards,",Space,Str "when",Space,Str "they",Space,Str "walked",Space,Str "in",Space,Str "the",Space,Str "desert",Space,Str "and",Space,Str "came",Space,Str "to",Space,Str "a",Space,Str "state",Space,Str "of",Space,Emph [Str "Katnut"],Space,Str "(smallness),",Space,Str "they",Space,Str "craved",Space,Str "the",Space,Str "servitude",Space,Str "that",Space,Str "they",Space,Str "had",Space,Str "had",Space,Str "prior",Space,Str "to",Space,Str "the",Space,Str "death",Space,Str "of",Space,Str "the",Space,Str "king",Space,Str "of",Space,Str "Egypt."]] pandoc-3.1.3/test/docx/normalize.docx0000644000000000000000000003443607346545000015760 0ustar0000000000000000PK@!Qr[Content_Types].xmlIO0HWj#TkOCȞnIn)y}[ML!DlY%`Sڎs>|NYQX%*g!g ׽ bBjsV"Σ,9* F 1B~1VKg,X{n 10,y\Q9WZ 2|.@Vmѥ+MO,7>=Gk yd C |ɉ!Qvx(vIT٦bkXH<Ĵf.1( Foa~ܡUH;͡H#ˡV4$AwټoPK:L_rels/PK@!' _rels/.relsJ1Ͷ4ۋ0&dEԅeq>If9AR6x˪A^c}౽[\Ȍ<)8RMs~~ , g=s2*D !0u2~䪮d̀f[ ml !"2ؖ]D#V`/Q2i˿ j z!31-Oi4y H󕞳Yø߻'vxZlPK:L docProps/PK@!OqdocProps/app.xmlRN0W?D"h-z(8Ibձ-{@w@H[}p:rq1+ &Z}~;,h_'1QfGP*fFA:]#ܫum4#VMS,ٳֳ fWS= -#9Mw$@ǔ`V0&{@2./Rn-Xm: x„1Y9gJ`8Ņs>Kj_%a1Z CA)x4)PrHAL[ uYH7pmCفeYQc9{~JU͊R']YJp5]cn9m'@Uۊ5֪a_j+z 8霡]HӣNjGDa7fmc8lWat0J${}c+h/PK:L݄ docProps/thumbnail.jpegYP(*" LQqa+!w@+N}GY,p- *KTT@- %BK!$!@ks}}w|gygp\4Bp>RQ(S:|~}ʟ/JPQ޿!%_CKS  Q͕]"M&n1[sMM-DH͡6*DŽ+QS0j*YlZHM'Gs +xЭC@J oPϪ`[x?k "oٻ*F/C }#0ϫt¨jFko!DBOE .8)F`8X"0ِ@"fr 7 A?`O?$:~a*A+(˦cq[X@]d͢TgEhv;f6qqp'.h`Mެۡj|aZ/E6 1APĊC7!:L=C58 0B,X_G j*^hv{5[&}}EڞLQצ>ضȸ1EҺgBَo$`+L'L2gRg#Ot;7ɍZg%qtX}۾PuUpk&5㻿 Ϻ/?;!hs[eJg.||ڑU];bQF}~oQ2ݻWWn/1'ٜ`NբK(+x.'*J);u9{|N sRw֒\6HF?P(#Q\;V\Y"nm-(xCj[|?#?QH^2-rӒ#3ig|жʀK`Lѝ薧Ӭ-E<t^r HN>6;dz$#XK9wVyv8v3:+j0G6_xLCESM7]X; ;?ޙ ?SnYM%=J0s|5>XkcM\f3xˊ^(N P908ͳ!V>A׫<9$Vm!bvKXe7ZrHV63*Vʼn0an,**2G 0MjŠ+:A~[XY(TNhMu:u(J rXͤrʹ_3Pg>-3Q`Q56`9/ Kkb rt)|Ef& 8to>AOy|tMmd2Z-pbO.ti 1gTuP 8fFN 0'{V/0;6'sGں=,"Gn7 8N;+_0j@xMk"cʂVOOfF9HAV#fc2BylUaO$3NmlԵUc+V;/x5kt/[Wo2FɄz'?CŃ'J;ː:@[֘5IEN$Dd"[LNpAw*C+iqْsA'ৈ\Քe1` x R(9Ku{PɉUicM(GNj:wye}xEjz0vr^K۪$*~C0 G/d]wthlSV駈,-c<0XZT'=ezǑ`wVpn'u4*Nΰ5Ơrĩ>!G kW="ѹۧEEz #H*.{0؜QixZͷz_qU!T]T:4V}ykew|]w,ׁٹO^PcRvY}v{5>حWtڶȚ+56/0h| a4#l>Cxv".RJ31l*L'h"Ex ǖO܎6;9> 券bq|rF&mTH9$3ATB[yR:m&$T"*>($7+wd*'!f>^4atq5Y58#UlN)=F wml"k3S`x(4.`` Ympn<)sM]:a*al5\&ˠN'kR 2 dԠԵF!OQyB/ d~|WoR@ PK:Lword/PK:L word/_rels/PK@!huword/_rels/document.xml.relsN0HCw@AN/+qvubۑ1BgV;YZ/I,< A+]mi}v I aK8: ,NOKmHb j k4"E'y#(J_VQ!eٜ~{ɪW9$d;['_ Z`BBsҘlbJw<P1)A0~1w{[mc GA]ّzw)J3?_WϚ;PAyo`{PK E ܨ:"word/document.xmlZMs8ϯPqO N&ɺbOTmfSq% *J_ -q8Þ~Ohǯ$+8d䜝z@ħ&\@4rֈ;?na@e2,GN$D:t]G(4>ũOGnFY3/2#%$+ȝ2\BEK9k9ddDSDsNYP`ez"cPXX0ddX8Pkpě܂hج`mHK˔\bItѤ39amYzv3.`A( #y-ވ ]цBsD?|Y eE{&m,U,bHGfT~@?| epKF2@Hg,ӌkLA6-x97r6{4X( +.W@c;*FtKxmMp q7nՂcdC1@ Ea}3`( (`B@}x[%#;#qRE6 b؇S1,xk`L]PBuZ З4e#B}Mi*cEuTáaZ+wc ٠2 cm3QS,"yre +46+D0 fnXHPֈ2B zǨS  w#Mev^Aԍ86_;N?Qhǣ>{D@Tʴw Ć>հ+kW0Jp5AuȦ )8Nź!N7%sYe W5lyڀ3PJ_5a8%H띑8 cKp*ԧ,dW&&aӽtlbU jk.. W֊kyLR {j1dG>M; qn6dd܅֌(Zh#F ܶ5:`BYjt[Y6T@&dhHn DNpml7 `x>RS:H eN`dyl,Z}Jzc/Qf ƆNfE V@mV;kۖClc(byu&Bm1Դ=#JOh{2YE]zpf#l0H~}Q4| GT/)LIU9 A;Fs! j m.E>,|)a,jNneauĘW,|+STd#Y5ۿPK@!`Aword/fontTable.xmln6ז:Z@hHFv}M==°ҷ k_a(uj2 JOGǏyDHаL*zH*qFƊH=_)}&y<4RA#X09" .Ŭcq=/@?f pL l]?QRy,\]yڃ\FYH/ uW=BRz:*_)K`W3qrrz9pTF|̫]HH$d:SGLu LØPK@!WL word/settings.xmlVmoH~G0URPkT?`m}B}gޘU:;33;/=Z͓E @Uj;O<&똪 lr Α9FځdBPn4JۑdԘaa\pwei:K:=OTyG1Bmy\o6+Z9~[ #A1hew&+H+Q0NH~8'}*%L)R4e @kn6, =o?ݽpq ucZ̴%*ɤs)hh@?1SX$vv~KK!>hlϷ/_4MbO~7 (Db]҄$N'¯'euSJU`:΢Ihw:*JhFԾ)7s!3ͥ\t2"^$h6c)O~; k Q9蹈庌HEUrV[AVBƹU :K+042I\=*Lx[0ȢR3yF(<132ժ?k3T#1uu M %J*F+/겢>))U,PMI?Xe)u{l͌$$rozZvu^8\U^MYXjZ:TLnX_J&Qp< 4cW,i ybOBsrWԊXr?K1yL-'(ҢKܛ,w3%4uKKK %FGKhUo;|0D4v5i=bhl kDcX# nh5;#"R^7b{Z iuD$y`CaiXW{~]j)Š0YŔ9w#Jdurδߦ$Hc*;]`&sYo"4)M LM)moMÖ}.l42x"v;@pC?G`wvs FH/S= 6x2>(2on}Cux;bX~^r6_7S[U[Ϛ֎ Zfls)50y~tp;%@~ǥ<! ¹ ڹ( y@81 C1oǼ "7` yXh `7cy@8 7 3o Ǽ pS@A0oͼ,4p1oǼ p7o;ϼ,p1O1o41oǼ p1o߼<p1oǼb y(h `7cy@8 7cy!x `7c7y) =x>o~o5_tN% 3,{вA(6K(lڣ]iWtn*㽁^|.TȖ)7zvO\IexYO\t"?u˾ԊX6QQbXrNx -YeG'dݺ^ڽXE&>;((upP57bR|hn=͜ĎwjS.hF}Pb7` /:I%%N%gKho?|4hΈƢhΈƒhΈƄwF431#"R7bNkv*$+I$`r@a^hXTZ $ׁ0 @сK:Kξ xB7}@A7,}󷿣8^V@8 oqw7ϼ,p1o-y( 7fy@8 7cyF!x `7cyP@A3o ͼ,p1oǼ ͻgy@8 1o41oǼ p1o߼!x `7cyy( 7fy@8 7cy@ 3o Ǽ ٦4K*)  `ݣFEDQf>=TEnU7͓υl!sWeyU4\t`DP}T5VԒX6QQbX*x -UE"{WӰβߓ;r.*QPtiKp2ehYpZte 4Mۻt˳ Bk1U4"Ǜo]EAhsBQϑVRPK:L word/theme/PK@!!Z,word/theme/theme1.xmlYKo6w toeVuرۭM$niP@I|úama[إ4:lЯ)ΣM6IIÈ}"$qr.,Db4ABBRnjǤmMeB\m+T*Ym2yBbx6" "}ozbGqloF#h֧{ b%]/SdXIDv@-9TbX*xжjDz/%SKh5~) щ`X:͒=翈zݞSRg췜Δʇ5֬5jqW+ \j+͍zߜE;J+ ՕfBFt22%d5#4f([ˮ>Vr- .V4FjŌM5''RYHz&m}`_>{?=уG6P]qS}z݋_Rgto>C>&9@;< PbbSlā1Ni +̰!UL{wC1VFÅѦ, 80 cIvw.qLM,! 8 1Q(}1ݥ- .Hu05d@LtFIAw7[wP3M_EBU`fbIXōWXȨ1UhRrw"åHq&[bRQ:sط$"{& ̹{GQg:#)6WF%xB9K}uھMМ 铱0z&q+:q;ϻqC|Q'jfQ/ͷ.>}& }s~ߜ漬Ͽ%Ϻ36S2&ܐY`߇l$a! Hp UndY$Jwv?`sN/jrCllY uAi5.0'R㚥J5oB JpVhḦ=g0  Sbb5{&%ɵ'ۋ UZIi Qdi0 kqUsV95wj0M_3n3`h&ӢrC-ВшxjlZS+wH ջopM Gd٦|g&yͯ5}m+X}=Nkfҝg~M/hTxlv<>*yxU_8[q)Z<;jn,q^ٮK!l(>7z3fL`EfbdrGL[:wQp9N. $lLXgHI\?Jgbfs|Ebʛ]fӺz]Vx6%9Tw]Aڳ]PK@!ʳCword/webSettings.xmlQK0wP)k _PYzm\eu r\@!P2/TRP^eL茧:Ms}-$?9%pVcJS5pNi$)ôInK'}SwK{g!e^G"RM͗h3ndYAq)oAl$>ryX^UzE@4WюRk,aO0KЦmU +g " 5 +'D0v'!F'SfnُrD\b{fI(@9$&6ODkb܍s-FoQ0)C밉YBU 1l8J8u-Ү}1T$uvo%YSC@}wd}|P_@6_PK:L_rels/PK@!' _rels/.relsJ1Ͷ4ۋ0&dEԅeq>If9AR6x˪A^c}౽[\Ȍ<)8RMs~~ , g=s2*D !0u2~䪮d̀f[ ml !"2ؖ]D#V`/Q2i˿ j z!31-Oi4y H󕞳Yø߻'vxZlPK:L docProps/PK@!ipdocProps/app.xmlRN0WYg)5J#{Xul4էyoh&=&Ҙ<2Ӥ#62֍B/2qs1ۢ/@hX~#% ,V:cWh\XjR@);>/f's!2joAp0i/uwqLDN-)&^G>CB#ցW 8KV/~ʋd?lɾܘV0M=4r-썓˟PK@!ͤ!jdocProps/core.xmlQO0MKGaP15<Ib46m0\ɷdW,J$D$ŵj9&oixCtL Vhc$"&³WRr3&+LJ) PжdΧvI kDш`Z04"9H I-)PrHALO[ن,8CفUU ac1{zmV @LIW@S#|}wq[`N!xw[Ꮅ5+mz^1ȭ4οe;t.$߫"uG4Df@ޤXy?̧$O*Fa4N賞,[(КPK:Ltz3 "docProps/thumbnail.jpegyPXק@ ^\MD@dl!D-Я("(mC[[ "kBI!$@S5S5USUMTM?[sνu9n]MM[{[Ʒ1+6]rG>*'r]vdv9(w蛬_ond{v;pJǔUQX4AU9ZtϾr{:G&g7`復{?tl~-#S?Ryd½EYs[J5~MlQfF>#-PEqxϢux\RB^G[/k03ܞ%2奵[;x]pn^>`uSclVjq>59!=(HݦǠ0a60g}77r-ti+J |GY2#h^C;R[1x:/m-Iνn,֬I04#Cؒ[ d7a KöF,Vtg,+8)x{/QPᅎ&yp{רeż @>7(j,dg,v&_w7֤/kX` *!XvXC6G0U#Ӷ)t{ѓcQ2jj<)͞Zn[|6Se.ةY*ԲDPT^a9oJ=E_ĵ,Ƥ;s:}lg` x|ʩ/.n",UuB$|7ys戯ey@+z ɄdkzL0 UUmM. I(R]:iGbu!May8@Q#&^&]\dɥPosɘŸ/|i.Y(֮AK ɝkΧg@ũՒNM=TX,뼜t<Kkuh/E[t/S)`',%TӮedK+v,Nn52+Vmc;c]+Sgu?Zk]i`/ltqUV"0'nY`z14˛Pm fG$L`LZVV2 u:pt"% [;~ FJͶ,!dwͤql2&OXʍep1Elu֭i[6>5_LJi;JK2 pܾNLԿ\e8,.j\hbd88BKB[h?xKMw\˅Qyk[ Y"MRF[}'e^np31*'QחpNi0VH;:xF]D={i[q)!uĕWfy Ot| ;ލ +D\pn)P l4UwAN1agt_L(j %0߭۸#NA8yɌ yh]He6QJl5\&Pt:A#iqljh=f&mh[36, 7蘇Szvi6?lMD?z}k{tם14r9͞7#zD7^4MX(OPSo<|Qkϴ0LnUiw^$=?y܌l|Q}CR"P,f(c9KE7mwԈW텼œ'Cs찦M ]ؕTH62$q /<(>SzCPyo{{J1 zԞ9\ԭ\=7f *ccD1UqP~0Id]g'ln z |* uqё~4A- GM鿲HAe*nm$l{ ITf鷾ȇNrSڥjPrKpV3K@#?\[f쫪!Fx^7Vۆ~iyPpewoj7T=O[ÃO}-`IxSbGsY?ɫ_>L_zabPFnhL>+^H+eH&@%qq?5w[(A9gN'W2 V96k7]̗ni3SJ.ƎY'jzjUNթ숁+(()HcO% RpJNXdG?1h,vewC'wwaHךqI܉MJB5 f3TKb<s f٣EavDUC +E;`kBAb&Taċ›mL|}-4.97+2x(~lH7afG[ ꬦ!Uګg@ȔIyc`h vuRxA%__?_ҼFa\鏍š`:'כTȱ܊M?}9GT7oZ^ۀb[\:_-(-R7'/3ic9,'UӈGʮy׃)e/Za7yut0pf6N/T?ɣinEuˆ0#1ޘ=ly zQ4+P mL6y@Vwli-;? np ՓMzߑYԙgaW~-󨞺]*vFR3382y1ydII>)JXҗrKF+1wIky_U/G-[DvVo.E2'q_Kr ^|=c2HG3SHۡ]=$j [IwUon#R;5ADen [4`+D>fKgXwJ=9q_p.y&4Q7a)ᎂ hB daf8>uԿiNrj)h?ԐOYqNlB*)rnWQ]b%$y(7xH,7崆M%ߪ ^+';:XOc_ȳJM(|.@m&%Y~zM.9LLڰ|8ntyAheIx":;jes :&O t8 ӗ8̬EQ>[!)'flͻ 5J'I8c,/O_MZ\4V}}g`233x2uX]}VGyal57Eϻ{GAT z/x)E{'AZE J~"wt  ~)qPxl03¤i(3v8&K"Zχg0J~.f2+ JwGeS;|=WfJ @7 {e7#[H:]Z @5QB̜(]QCzTWibAzƋttjjj^Ѧ?޷z@5@+1^v5FPmߥfi3sl:Umo*qo6mݰt$*J)p08%xruRj7!D1}Նo7ěj%s%>ii cGx`.zE]a}N+ˤA.@t)2m頷Ł_vƽu5_YhY%A2>F`0#ܢk߀CJG4uAcuϳC"XˆH2LPvr E7I(4mIZ?Idf])igGȒiHǥNAtKAMY$R1ogJ ?QX,_2oI{K"a6Z;=,\%`S~+]e滿[uO8hbauTt8":NMwO74$.T&WS"rxiclDoD#sصU1u1;(word/_rels/document.xml.relsN0HC;qRP^W:$"F4D|Yk70A4NXZb*cOŒE.E26el 7d릷s6c5Qù5t؃vJS^Q%ɜ߃GѦ̘ٔ,*J5nQvi$[ r'S (c%v^#\Dx 'N\Q !!@"4bۂ4 An.wb:Ő}4M]# ZTK_;@I:p'PK@!Bword/document.xmlVn0ݏ4y_2iPv I&vd(siiS4,}8}- kKbG9Ȣ,Bd)y iTo70dSR-*U$BUhۊjT2"Q"MNשg*a p8Ĥz㘑(g*d5,eeS]f5[{m6-U@ ܖE,N6DۡːlRV-iW9} yrAʝ\v;OhFt3N@Pxgd|I37L)6]_z,sV{FedV9*Iq!Fe:vZdosXa׾;1jcME +{LkE^ϕ^XMf?c"sO7R sI"Y8r-]t͡)~x҈ rbKOJ`Q5ۈc"Cg&\k.{JCcceojftY6^/.ާ:䔁9I0j*F(*hW~ҁ^@9Z:ZJk軱φMjZ?MS6Q$mǫw>Bm d+3% n(A}  #jDV,C fUyZhlM%Ĺ2 CK'L%SP,ЌCIiyB,C.[1g1t*r~}hF섗v6?mͨ42kRT|p="ɩVO`y}O H+mPv@pB_6{iy3iTo*L0\=:$&c=QBԌ}P*$GR BWX#Gal9&p0gHH! cSz+8%6e-׬)#T(:QbBy&KPjj R䔛Zh&O},-ł{Vrr{ݦ W:4e$d4i(:!Fs)jEk~>%np˺ j`fCjGՐD{rvyvvwR75YL>s3mK{Ua$;ZiYY IŰ0+껔|+u|̒*-Q/ϚA]քcaE4"-*Th%NMj TF+),5iH5a0d vBZP6d'!} yB2Gܪ5#{ڴgе(!dz?ĥlhC[|')iKg3/w5ǟ@_J @_ЂQZK}# ^/ſXIzzs)h2\glv;Wqarᕦdt1u~BE+LVa8al-, 5j+fK׽ngDq>k/-[؝&*\Q4Γ {GyM[KP;Z|jN WK Jw@Jdx{ߕӥ XBUU|0ܹYj)zq#ύ?H6ݢF;;y#6cM8+ɘAwϿ:hZp7uM`f<֣ @7`[> P_m8yKF'Y3?lձBC,=x{E.)oUm1jpX(|}ԑs7]`/b_=! 'k+g1.PK@![+Cword/styles.xmlYs6;ợö|L8=}HHBM,/( ci/`o/iE ~,nE63љHb*{]`sZot̊f+l0mo4lvlVCx{"툃7" t? s ? c|a–ב=y#@༈A"q伂38"Sux[YXZOLUNӫV5[o/}ϯ)W4=_;9@~;o+t}OC7G..@8& aPMm͟Xq7#?;/<poG 7&xX8 7#x@8S7 o G p]@AoM,4poG pvxX8 7#އ" x(h `7#x@8 7#xCoG x( 7&x@8 7#x@o G !?g|u,ypM6NB[{M4ԯ񗭞a&^\ɍ SYlc-Tfmźl b-ٯr,oLEo+O+Ȣv9U.|;not);:-T'U6c:Ksm⥷OI弚r7rkryܸEmqEnlMCb5\+UA\CDfHܑM6{b3[4$EՇNlϑu~`G &Y{3N2?nxϥ/$$B"knЉ.j{-cH~htYDxy:TF']@i`GseJf|kju%R6q:h=l$mѮ\hjlNޤ t^۶֪۝X6gCf"o⮍p0xjE.bU>Q6]ٔELX__H~+6&ӧ8*]m@BBL.D)ix=I#jΒո֛Nvve28p Ig~Qn>`F:| Mupd卹y揥/|sTr f2'y IȌg3`)E2ҟ+Dݙ8_θbD3H2/spet ߳P|"%j,"(|~R R45~>{3kqRe6I禖nDHÉ6cg׷ ir쟜/, ]>|Bǜ{EU=bhNY&VL-'vYȶVNj`h jZW#2.xޠtnžw.F.]8y -,'-,j%ME-GZ-j)jQˀVڄZբ6;-l9ptD[h(u{DIgWebaBh)\ f8t\ɜ(ACgSϒÆumD:QHwGuWo›$$`w0מy !QàaJ;oJsWE\ md#^¡@Ws ? c;+{."!g,GB燸O|zgA` yꠣ(ځ⬬Xہ妵@E'}bx4~@-~,n1:~_sMڸucmr[ ;^&!c*\vᬛ/u@AX7uB[77JJx@8˿c:Ż'x@8 7APBo G poG<poGDPBo G poG wn7#x@8}& 7&xX8 7#x@8 w;O,pћ7 xXh `7#x@8 7.<po6}SHa]fIgTRvR8v :-$ģؽߐ `FLl^jvmK~}v5|ov\ȺM%1n0noN^klNyqkNM2Zަ]N./XR-Aؼxu.'M|[X>mEy9ծh%Xop] W0NUz|JgBR=&^z΋PK:L word/theme/PK@!!Z,word/theme/theme1.xmlYKo6w toeVuرۭM$niP@I|úama[إ4:lЯ)ΣM6IIÈ}"$qr.,Db4ABBRnjǤmMeB\m+T*Ym2yBbx6" "}ozbGqloF#h֧{ b%]/SdXIDv@-9TbX*xжjDz/%SKh5~) щ`X:͒=翈zݞSRg췜Δʇ5֬5jqW+ \j+͍zߜE;J+ ՕfBFt22%d5#4f([ˮ>Vr- .V4FjŌM5''RYHz&m}`_>{?=уG6P]qS}z݋_Rgto>C>&9@;< PbbSlā1Ni +̰!UL{wC1VFÅѦ, 80 cIvw.qLM,! 8 1Q(}1ݥ- .Hu05d@LtFIAw7[wP3M_EBU`fbIXōWXȨ1UhRrw"åHq&[bRQ:sط$"{& ̹{GQg:#)6WF%xB9K}uھMМ 铱0z&q+:q;ϻqC|Q'jfQ/ͷ.>}& }s~ߜ漬Ͽ%Ϻ36S2&ܐY`߇l$a! Hp UndY$Jwv?`sN/jrCllY uAi5.0'R㚥J5oB JpVhḦ=g0  Sbb5{&%ɵ'ۋ UZIi Qdi0 kqUsV95wj0M_3n3`h&ӢrC-ВшxjlZS+wH ջopM Gd٦|g&yͯ5}m+X}=Nkfҝg~M/hTxlv<>*yxU_8[q)Z<;jn,q^ٮK!l(>7z3fL`EfbdrGL[:wQp9N. $lLXgHI\?Jgbfs|Ebʛ]fӺz]Vx6%9Tw]Aڳ]PK@!ʳCword/webSettings.xmlQK0wP)k _PYzm\eu r\@!P2/TRP^eL茧:Ms}-$?9%pVcJS5pNi$)ôInK'}SwK{g!e^G"RM͗h3ndYAq)oAl$>ryX^UzE@4WюRk,a1;(word/_rels/document.xml.relsPK@!Bp word/document.xmlPK@!k,c!N#word/endnotes.xmlPK@!ؾ.%word/fontTable.xmlPK@!!3>(word/footnotes.xmlPK@!8{ *word/settings.xmlPK@![+C.word/styles.xmlPK@!vZG5word/stylesWithEffects.xmlPK:L A=word/theme/PK@!!Z,=word/theme/theme1.xmlPK@!ʳCODword/webSettings.xmlPK}Epandoc-3.1.3/test/docx/notes.native0000644000000000000000000000054607346545000015434 0ustar0000000000000000[Header 2 ("a-footnote",[],[]) [Str "A",Space,Str "footnote"] ,Para [Str "Test",Space,Str "footnote.",Note [Para [Str "My",Space,Str "note."]],Space,Str "Test",Space,Str "endnote.",Note [Para [Str "This",Space,Str "is",Space,Str "an",Space,Str "endnote",Space,Str "at",Space,Str "the",Space,Str "end",Space,Str "of",Space,Str "the",Space,Str "document."]]]] pandoc-3.1.3/test/docx/numbered_header.docx0000644000000000000000000003615307346545000017067 0ustar0000000000000000PK@!+G[Content_Types].xmlN0EHC-Jܲ@5*Qu&!~ȞI6h{8Ѥ7X2ʚuH)S}߳(0( A7^9MH=pu`[ҭ/Ko;;.A0c'ŬhqWEL8W*)ʼ:ehM.ޒ%\rp§Whi^8  /BS_Xʙ&Q<FJBܜBˤh̎ xRn*!`{d0A1$:ĕ6mOD»ĸ[VL.Fü$ܱp~ںiQ=cmI#o]1nCUvQ5u"Y<T/lO6_PK:L_rels/PK@!' _rels/.relsJ1Ͷ4ۋ0&dEԅeq>If9AR6x˪A^c}౽[\Ȍ<)8RMs~~ , g=s2*D !0u2~䪮d̀f[ ml !"2ؖ]D#V`/Q2i˿ j z!31-Oi4y H󕞳Yø߻'vxZlPK:L docProps/PK@!odocProps/app.xmlRN0W?D""4kJ#{X8eNH̛^ ^(în`uy]`@H߿]2;*PtT1X622bͽ] ]G+CB3i9_^ (Y(X%$^nCO}`a~z{i;&7PK@!-UldocProps/core.xmlQO0MKG7 F15<Ib46mlow_צ};(xBՄ/f- 1%XLL뫔k /VNޤ0fBΙRk(<|qmO7ltE7sVtFrT )@p 9xxqC]C \DbGQv`YrT~Ο꫆RU@TICS#~wr[`N !xfy͵j8 ^1ȭ4οe-x:gqsea' kK㰛@~HI3Ҷ1zx\H6q݅x1qDWaoIXq7fHPK:Lh=-docProps/thumbnail.jpeg{PX1mY33o=閩If-w5Q7{iJi^VfJ´VĪ!(((x)5QXET@uww?sowΜa.?nA W/_-\c# ` hdxlb ۷0ںmMk#!FU[ںm7&Gvښ=:9bS7+̿|jeM F[?lvdsog`1h_a!f{ƕ"i#)Sc QR𱲝hJʇgT{{x#URBOp iotjx t25~wQ|(Y5Ròܼ&{.0h7oh #G+$'ka2gr/:9 :RDۗ~W۰R# BOgIpn*J&9c [ChrNac+O B<<)s ]P齐{zj9g~{yE)_~ub<ȍyUHm3Xsa^'7TcܦJ5wi>]G6 %B ځy{j<ɫE>.U,1&іĕq+NN 銷"Jwl]dZ4#OOZw7wSwn)4Q9J +kO/GyzfoJ|fenllW.tavuR[~JX$(xET2T{U)Z]5bgۢzgzӉqub[H.&?_>to ThPܤ][!ù+-(Iuj{~6ǔSs?'̗aWŊAH#{iA[%Ao V`)z ԋ}/%ۛw@vG'kP S#Q*ٽZ8V5ātR4bQ"кȾMIykvh[;93{#y6cYqwQN.I%Σ5NaI\Now/7'4o|8u`f[[ȕon U1brx^ZU *V Nk"+E]\ԴyFPz?5* Nۃ4_#ܨ}"Li x0ˬOS, !`23Z,@$.!;{0emЈ(YPOE\d|M V 0Q{g(B_J y}=0 ŝp+=c>U4>ϧ;Ո\4uiN;Ѣ92*>EP;!f>V̿Gpo% LOvX׻iGbl\5ԵN >ImIW"q-LS[^g%r yKaee |\GKg|rh=$H`BmbFuԫi2hÀe}>&*ammLZswgV_~wjQlFMr$,;Z]$y%P(HNPtUfM_꺫q$X> MNBnOdJH A2^ [%澭zX?ziGVGZw ['=w|wcUZqΟpjy4N&3s?(20JE`ëc-|cOy` et߬GDbV>jn2/O\!\ g*^bUQNK^TKqY9Z(+Ghm ޔ7WszY%(9cF5h$ݼŨ7eZ*aQS*0-)A;kDКE`'2me5&+i晜; ck}+,b5V~@w5_ΕjoU/4b#B ЊckiE%p/6{R֑ǘ `%$"^X)g󣣣mx>c,RU( G@ӢƄLN5M巤iOrSuo=.%Cq 9Pv%4z8dWeވ7vlߤS#&諉ݦoUe^'=L^=P7OVB1Ed%r2 4SY­x2UġO?q9᧐'IyE%l*!f` hЬ5i _/G0PK:Lword/PK:L word/_rels/PK@!wC#>word/_rels/document.xml.relsAO ߁pS7cFwQ]u3@{S%n=ȟҷX~ن}@;d8ڕ8CRPw /ˋ34!Ylq(yE 0-c|2U] LnN:٪!):d6&xGk7pd!|Lųn!C:ml!qQLϋϾPK@!C}kword/document.xmlU[o0~RڡJ y2I,|@ٯ߱ssΗі˔,P:JPD%Q%U~r5AuX+I O?~"E!mӤ@s:cKj* FjFDX׌xLgI6Pk#[lQ'yh~%l&׌kev` *̦Wc+ƙ{f[ȼøx[du*%-}9d[2$bC9VLt{/=N}f9˶Hi49Dr3`I^FfYc / Fxo$tZrW;yYq<DžLJ6~-6PYFb2~V1ٴ'Ym{Ö0om E&׭>DKl԰;t >NHmaU H$ J9!(Z-ళ`rGfո`vVcBۜO޳a^ $]0Gm/IFض/>|%PK@!HyIword/fontTable.xmlՔn0%NZ*i&8ĚDrwaav W/`*Ĥ!/·[0cV1 :yLQ=j䬇<눚ъYt=xjOrփ%Q\}K3&)LG3%12'OnӢӔSJӹdʕ}4je3m򘶥6hʬ{꓄]MIN:uDelp9y̔6d"A [d{˖;-*DiX "F898wBc-UjUsGm 窦,NpQS^]T%.u%? W (T iA.&oQD) i >}?}GՊ׊ÔJ*g|R~æ- E%cpFr%&,IʿIXrzK6KK.Offcݬ Ty %pTeE/*c;PK@!>: word/numbering.xmlW]o0}`!VZLiںͿW6Hygsõr{JQ aBӞ@,1fM#ŐpBs22`9  LLLʢQM(VN"N-Y%TO2Y3Q9fGF.Şt?v_Biz94NE%lW5t$[{{ZQCu~j/xDR"qZ3X#$9$}DoN!;hzJ;d=$MOxls#NȽf%)#$ͮf:oܩ3tuL7|B30-̯g:7B5-s^Q ~篻c:rPK@!$չaword/settings.xmlVnF }/0\ǒ|I"HMwUFmO37pFzIyi`tѧP琇·_-j%gq4Uꊫ2_D#똪 l_>4͎HBLh&[@2{ ("7%sۉdRqa\pwqzjTY/1DmLo6OSv!%(f A+5_Ո{K$>ḍ5|A]@R~z}F#Rĭ5Tn)t#/ Yf[i-GMfKetGY&wրm{i5 HS="wڐӞQi/Y憕vC-_<Pު-Aɻ)!a$_ j?G[{'F^9תzOT^|O+`}f5ޫ:gMVdeYk\r1/<;0ij9um:Af .lGr word/styles.xmln8;ڧqPHv m:i9H II~ọٴ8TLy=2}OiC N' Uwv}KDg:hT1QoDB m.J'D~iu_HY@?`SQ\-YJ5Dm-dHPL(׋ N"@ %LѢLʄwٯ88Yp!,2gwfB|sJ/,.ςk/ 7T#3u}M %J_*Fv+?ei2hdN2BOSD%W,"|QQ~0mNN|"Ϧi`[*`xĚifjV4jS1~^ps'&&x\Ni̮Y4%(ww4̦,R&iZNDjض5y5+Dv=FYR>^ 〺GuI%w]]bz -ۈz] {s*);)eуm$f6ԶoW5l;^{DžR옚Q$F/͋Mٍ7XO6+:Y[ jN-xљNE~{'#̈og}QQY%)"$$,Rrב42 V,kU!r;$SAdcl!YPeWu#b%H "ɷy]v[~bl՘(hi-$=,"qHPtI֑VR2J|\+o3%*`aTbfs|s#7?eV|12Pz ߱PH?-J.aYD}QF|7ѝDm`'o[Iy:c$晟ty-ε1~Vxwu# gdi̾0v(* _+ ?>P57Q:d ?>4frb{ lmIlMVp@M )g_( kMp@u[I %N%#węZ L"*12i#*s12%#*312m шו!x2F9Z]n ^dUB90_/4,՞[s-}knq"fcda#jXԋD$+TzI&yBpaf+Wtz5SY)M1z4dh7#N_iEv!][;%kٽuq'D!.A&1n٧w 2O|P[Pb[ܼL﷭Wk6&6ŏ/}ǯ+)Wԃ{]1v[ZV k"8`-@ne κ xBX7u@A[7,u}7c޿;ݼ!x `7cy>n@A0oͼ,4p1oǼ pogy@8 o1o41oǼ p1oݼ!x `7cyy( 7fy@8 7cy@ 3o Ǽ p{[@A0oͼ,4p1oǼ pr7fyX8 7>ۈz=] {K*);)E [mL0-"&m6m//nw㽂l Y  UX6 /?Ԍ6J1OJXKpNKEyXv]QgrؖT*cnw2vy$;@i;5TW*ۡmt)ӳBZcT磕=F>rެ==fٿY+Eٹ NCSw$^Yl;LJy@!l,\ @Syd%layUsfNokYsG0/R;i' M>(Uz[ViD$-]n{Z2H')Q|/ζ;4pke&0//z[/;0ZKlz ߤ_PK:L word/theme/PK@!!Z,word/theme/theme1.xmlYKo6w toeVuرۭM$niP@I|úama[إ4:lЯ)ΣM6IIÈ}"$qr.,Db4ABBRnjǤmMeB\m+T*Ym2yBbx6" "}ozbGqloF#h֧{ b%]/SdXIDv@-9TbX*xжjDz/%SKh5~) щ`X:͒=翈zݞSRg췜Δʇ5֬5jqW+ \j+͍zߜE;J+ ՕfBFt22%d5#4f([ˮ>Vr- .V4FjŌM5''RYHz&m}`_>{?=уG6P]qS}z݋_Rgto>C>&9@;< PbbSlā1Ni +̰!UL{wC1VFÅѦ, 80 cIvw.qLM,! 8 1Q(}1ݥ- .Hu05d@LtFIAw7[wP3M_EBU`fbIXōWXȨ1UhRrw"åHq&[bRQ:sط$"{& ̹{GQg:#)6WF%xB9K}uھMМ 铱0z&q+:q;ϻqC|Q'jfQ/ͷ.>}& }s~ߜ漬Ͽ%Ϻ36S2&ܐY`߇l$a! Hp UndY$Jwv?`sN/jrCllY uAi5.0'R㚥J5oB JpVhḦ=g0  Sbb5{&%ɵ'ۋ UZIi Qdi0 kqUsV95wj0M_3n3`h&ӢrC-ВшxjlZS+wH ջopM Gd٦|g&yͯ5}m+X}=Nkfҝg~M/hTxlv<>*yxU_8[q)Z<;jn,q^ٮK!l(>7z3fL`EfbdrGL[:wQp9N. $lLXgHI\?Jgbfs|Ebʛ]fӺz]Vx6%9Tw]Aڳ]PK@!ʳCword/webSettings.xmlQK0wP)k _PYzm\eu r\@!P2/TRP^eL茧:Ms}-$?9%pVcJS5pNi$)ôInK'}SwK{g!e^G"RM͗h3ndYAq)oAl$>ryX^UzE@4WюRk,aword/_rels/document.xml.relsPK@!C}k`word/document.xmlPK@!HyI word/fontTable.xmlPK@!>: [word/numbering.xmlPK@!$չa8word/settings.xmlPK@!0ȩ9>!word/styles.xmlPK@!+A(word/stylesWithEffects.xmlPK:L A0word/theme/PK@!!Z,*0word/theme/theme1.xmlPK@!ʳC6word/webSettings.xmlPK7pandoc-3.1.3/test/docx/numbered_header.native0000644000000000000000000000013307346545000017405 0ustar0000000000000000[Header 1 ("a-numbered-header.",[],[]) [Str "A",Space,Str "Numbered",Space,Str "Header."]] pandoc-3.1.3/test/docx/overlapping_targets.docx0000644000000000000000000003266307346545000020037 0ustar0000000000000000PK!$L})[Content_Types].xml (j0EѶJ(ɢeh *8 iw$'.M13ޣp6:YBٌ >KJ+;wϒB; @dpRۘ<SRpcs/䗘tb+6>A!J~oIȒmc1VR RzuO\(oքr8`{C2_.r!繓!ezܦ+7iFMem̧\!Ip>NiL+?Y XwBDh'v" .sDXb?;A ʝc4֝H_Ems,:H-U{O/I$Z!o}PK!N _rels/.rels (j0 @ѽQN/c[ILj<]aGӓzsFu]U ^[x1xp f#I)ʃY*D i")c$qU~31jH[{=E~ f?3-޲]Tꓸ2j),l0/%b zʼn, /|f\Z?6!Y_o]APK!Dword/_rels/document.xml.rels (N0Hw@AN/WW7؎ Ǣj*kg>{jZ- b`sS4<s$u![Q[IMwN@M=qtPX%ɗ?e|knx]![`%ަ,M+t&;ZI[! 8ԑ~>!d<^ʃ,1B2^N{GF}"&7jI!iJ)v6QZ 7$SϙrtGQ#?PK!;ȿ word/document.xmlVo0~{ I)k#B448&H|m_󋶬Ep.K&׿l6dGdKKeBsSklZ4uT7 b)raw=4{-Krꄚĭ]f.y94P}oeͬ%پTĶ[\i=iZ~R;yˌT1)ac%z'PK!R%#word/theme/theme1.xmlYM7c7c;i&%GyFQI]%9 i顁z(m mSxlɖYl`)YZJ4WN㘦z4iqK-p3GܹᎈQO8ӝrKtR7,BVYT<~RU*rq&f.YC@A Ns0pIǑȅ8w/FDloa0'5eǢu=]W"6q1h,) 9Ӝz^[`5P^77]/xʋ~8W1@yѳĤY]@yoV}i(&8l+^]BƔ\۞;l>ZS6\(p |08}L#_S^?ʎ:>/@_}^}?< t!N71M91ha nM#SXsHCf2)6}Af[SJzYt=K,샳 ml-TwlsȠyȔHN؈>t,= z[CrGjZ]ÉFPۈ]У澏L\"b* XÄ=(bɃ9 s!3!B DlnA{<1L )Ց}:cLq؏D.QnQa%Ae`5w12}޾#վ@m D8'c'8=Sd{.շO{!˰uG6ܺxkw[Hn tto/+V⪮$[cLȁǕs9p(UE-,.3p `p*"pq0\; dykZqS],'ri [xAɵ+/rKO2Q /wb}KpV3I m(5YC2!f^EqM[lE!pqbUyIGb>+(ʒ֧FY&[Դǻ;5V+7XҽuB붝o hV2jV9^Ksqާ^j&\}y]Ut"G\ Tk.'8*^k_AɭRK]ϫW^ʠ8zCChClhCKhC*hC h#G90EprGws~Sw ݟw:~-ZYVB<9rk8%e"xJr2ىx0-d1"s]r,cbzhyǪ X)!0y:F'S)OBNtP] I=x_E$I VRD5ÝȆEs"3ᵁ / fxe`0 Ϩ҈F҈҈ƭOq4q4q ؤcU,yDŽƞ3 YS^t;~v.erL=04KrEƴgN U'/DG{Atz$SdDDRL9_撥 >M'9'"j].:?!K>/D%XaVTE$g9hƚ7| _"oA/6p:ثep^BQnţ>şX" H6le\ x CN?R93K]Yȗ2x8&g2vox\l9_ǜ =KgbUudDtxxhXmܮ=-azZ6,Op?|]Q1nm+6m!xE a@ӌ۾x)9)uFt )̎I EtG! NuNIƃVΤFqctF;nDFDNsTJrSz&7wr# lq d+HVVnD*D:`F ̽ )hBZ*\ qB>BB Z*D hBZk{P!-T@ "B5B8B{BP!-T@ "BP!-T@ { RBP!-B8B{BP!-T@ "BP!-T@ { RBP!-TspP=NG#THA "BP!-T@ "PB^BP!-TO{uy~KWS?宣&QUܬE)h b iNQ;.׹ԅϯWݿ>t\3i_KpNeuKPM"n VӮ[+]V7waޕkprtpWf5@']t±F8uJP}&׍nʟN ޱnn̰u5$x`] Qޮ(?WĈu5$`]ퟜ/W!j8a] XWC'd'js5\a] XWCՐjw5Dy\ d!jH\ 0(oWCTYQa5C܄\3%皡GTjj 9Z;M=7?c((?W㪥6W MW-9]:]:]ܮUKmUKmOnqRqRqՒոjոjոj'd'ոjոjj\j\j\j\t5Zt5Zt5ZrW-W-W-W-9]:]:]/`lB2e3k?gڋ拷EIX$MòEc ^,To_dZG_hhv%K˽ca{,gi*Td|9z|Eow"}\?JǾhˆ,t34d=g|K-ezݦ7^TְܾLoܼ,aVtzir 3h"lwE(MIؾlr[e XhSOsw]GDX_o/k\2\˵FΝ* Yz38R&:ʞFXRxf՘/yy@}j&'ٙcwow?8әΤ-mn:=cx6vO[l=}o fN&V642j+u͎շE <,27fu^#`{[lgpٮUuҮ7/׬U=%sw";ÙڀkĎ\ok;>+vo<;]vPK!t?9z(customXml/_rels/item1.xml.rels (ϱ0 hoPK)t;JGILcXji߾+t(QE]1hjP >N~j.G{J D60o,W0H9X)ctl'_uݓ|P=;6w#w Ev d*yB1ߪ kPK!kHZword/numbering.xmlMn0z}bڪB!Y4ju8+xƲ 4 #E$ldo*J+CJ:{&u RV %ݲT;a3Ƶ ɝ1B1;Wws~/5.(Nⓐ3wvCնm`SنC+yuʠЩ^vیQV瘲S&+0]joz6߀ڦ3t $AnR6 ;獈 }O\iNFH6DIonfjKZ>j{1 @Q-PK!ldocProps/core.xml (_O0MP`,KLVۻJvc|{ orxq*rJR$(|䀠%bl G"K AEzySR*%(A;I팑ƚ ڳT1U[, ݓ-q0bn ]98%<5`Cqxd B9*?ȂZŸh/Iʫf-jyEƌF 鎇T1Jַk1kI{uU*䤳Ma;9tNYKp`wRC+8=aK m|[ cC{mv-Q BwdA]#h6̏y;]8Ӈ~PK!5eX(customXml/item1.xml $( M 0}w9.\ BBn8@~$Ao 'r^FPK!)cword/fontTable.xmlܒj0}ƲS֭E@Qd01:Jl'BsӋ ~:8wa{x>i\S?O0J;]F~rۗwwXZU6Ʈ2Tgӎ+#-CYKm'#l@ ;l#a4"ٚg%&_YP3U4x.5πy8PT #_M鳾tҒ]N::'o/ME!bIcbFu(҂9Uq4:={ 5Z ;܈?!o5K~Rt}IIQgX#G 3xX٣ҽH!(%呒Hg'2$2MC PK![m word/webSettings.xmlJ1;,Y-T>@ζL&̤kH/I23; X֌ yZj|pm*).-]قl7=,)*IYků )Cǎ]ђWnfW"Pv\Wf) u]pK~ʮ2D):dSx<>=t!3 ue'Q>w'@ܯ[D@'3S̀r >`N| v1RpPK!'`docProps/app.xml (Sn0 ?7nEŐbm =k2m %Abf_?N\gizz)~ڛ!jg׬X,YVZv՗O,(m-f'Nwy!f$au~Qu˸LB/`hs4ZS/=XcOlT\EkX< ^AD?JCi*݃(bƀ?PGQ1F| ݉,y>F+tVE`0XzK8߃z Ob9ߴ wgw{% l࢑&:; ]ȢEm-YSFH׵fGƲ 4Ҟ汾M&p ;ćΆ0[F3;sg=PݸK{_]gcuY`D =W<ǃ}^ixTiWs1=PS^MɂIֶP_jNI{(>, uh@w%~PK-!$L})[Content_Types].xmlPK-!N _rels/.relsPK-!Dword/_rels/document.xml.relsPK-!;ȿ 3 word/document.xmlPK-!R%#! word/theme/theme1.xmlPK-!,ڗ/ wword/settings.xmlPK-!Ž RHq[Content_Types].xml (j0EѶJ(ɢeh *8 iĔĥI6y{57F'+Q9Ag XreYQ\hg!c[l<NbBj3@G#b숽}mG$9eٔrNx2ُw\m78FSwsJ|yPK!.vagword/document.xmlYKo8ޏ4oy*sWJ#Svf~Ah5|2rQ (²K|7Vt(]9}nOhc'/,No~=U2pk.gxX\9dZr3`0 ϱB5ݺqteIսNO8B8Sq3w7b+%~NDUA(~ -.X}uba=h/듉ւJJ{?a"N:r!:#gk\ wZrm ~={4RrE:_98';ߗln\u;C(Aw#ۼ%}/CBBS0Db}<9YU\xTI)z21PnO=Nzc97QGb!% k@i)ERRm);R6ţm W.$P ZՊx1ÉMb<׳"]u{L13Vh".ȽcUp}#~#{@>x1T3 z#ѫ9~*myH’PhL(_O4yrc&23uv8׃B%>Ĝ8a.O}fC1۟bzD|YwτFN?9[T*hrR^E Ajemv]\Wzy{-)j#԰# 6IBŁ'(qDG&xFDV:R2JkemT!PK!{ word/theme/theme1.xmlYKGzXk׮mRkiڵ0`r C %B 1C~ʂMTHi`®`Տ.͜p/悰ϕ\'C6"Iro ,-w{aOΣ; r#);Ţ0'07f!vw{%R!J7^䰣IY}(wmЈ=: -J-9[-FJ|^*7qz֫ia)Sgx l6-nls>^Ҧ̆9P7~5(m6R E$ tɯUnW1%[}`ݯ?۷ D̸H`f9#lS汑bۜX3 Øc4عuنgS+dKf+ȌUO.n,%-|kgmM̐U['F*%\Z;"6UasnM}26D 2lD g"8iUnl ŵ'&k+pT/{bNcO-7pUM|EM͒ 9i5Ͷ|VɜU2g]T2Y-h-֧>cB遜S't#0;ZhiAs 9m3ALYP8S&pVj}6JGsM@2k9eLGkJA뒀}LU r5$NE¢oe^Aꙸ樓 GOһm4]l p3I0c}}\jSؤQo|_$hbc8sU Ѵ'4)*S!&-w(~2BvRJCI wM2nJ]#%,}|_y'喑 s{ÙA4:vD`(^V!W ̊kjq-EtōO)\WtrLwe9 }%-5]9VY7X{=5n-BZAM1PFMjX[;oUIJԽ.D~BS_-Wi&УrO:3NZJ W^B_.u;`e?]?|^o!LE-_ޗ+NvjuX~oVZYm ^(4ZЭnfi׮^(APj%E,ԽJۍ~5|4/PK!xDG word/settings.xmlVn6}/0\EHuE]D. (/I-Qݤ 'E^j̙p.~ >u a^ctHiKDS瀕S55 RVLuybԅ1! r1$-&9DS<)\F )tk"Y yF \b\mI,{-%vZ}qݽZZ+Ĩ q|W4T`ty2 AR//Xe<ɑ sB(b:FtOrdA"p!QN!xD+|^C#ie S Di2U5ԌbF" m%Ʀj^<Ӣ\-b(;" eV-RPW߅^P۽%)Xp ߌ(qy#O YGƨ$%^%xˏG? ?A5^bH93/^)%Λ9#U%8 P+(/"mU/Ps`C ޯi1|aGUDdEڢ|gg$au!?{EMbxHYҞrbX. ڭ|n0çHtP Q[$%Q ̙ |V 㑫uX&ESw^+cDQoI'Ug֊=^~I!=TCYqpLyJˇ+T]`P- _%x2&`aT70B+;ѻAYY4b+YbeI+Ɏ%,Gh{l啠Tqy;ODvu^<;|t% 堅د ]֢~\^fPMCjp5G =fMo?\ow2E%j6w7s@bOPK!Q word/styles.xmlKs8[߁K~8S]c'ٜ!0& -~_%MPlqU{I,R#@Ro?'qHdak4KOF.6GA^4"1O?o=KL@8 OFXon&$4;gf Fȓ)ؔŬxiLևg3O<,~3 4E^ӞОx-2<N⊗.1cJXϊ3E %̷_I;gP36a5ثۑ$GIx|uLcA1 ԟEF #-rUշP}@{ou:[0?@,s%Dx@]DZͱ ͱh ͱHͱ(ͱ$:cc4ǒNC[ɾkn1~Hpܸ w}}w/nۍXT+2K*q^AAH*Xj'=yLU@<y}(\|}|piHcdH G`F2x%3:MC3Ac -\{o,FWeBK0I0ÛƉpᾒଌcO) _( _1"M)M0M*?}Mgܒgd1vgqxӖ$_z",-;A%%ϓ{x;x1e)9W"oP0_P0_aP0_1P0~~~N40`*g +W)<LL 1WHMZd3xB~=pf|&i&nHy:8ٮpN5M|Qǜ{:pe޵uf7py'X/O$ԧ^=&~ֲ^7;f74beR7bqLasjܰk ΩR޴qW`9%]EW鲾)E GjmCwhz2]0 dq~mOK+ Е0Vu94;o섾aPbB e Pl!)jr5DFl!jl'8`C QΡ(Pá jH8 [1(PC[jHP{!9jJFl!)jr5DuZEia7 3 qa+Άjɰv\-Usj 7zvB0 xZ1QQnƭB.T;jjjj3ԸRgq%{qPVKmv/vSqPVKƭƭB[-Zj يq5njjjj-ԸR[qPVKPVKƭ:C[-C[-Zj 5njjjj3ԸRgqa<<j=/ 849i5O_Iz՝~!|&n\)W5UX$ЯқUp͡;VdtWR)}*}"lPorNj*K/ht,womnO[:(]|WOyYa>gZzFc@il_/o;?mrm B];{#jeQjW 6[P"of͒*\Jsf[3!Ebw4cKuDU}!.dUhRUZ)o]EqC⏫T&~\T( t&U&no'[?hhnl6S}Α 6O˰Li,-suPwL̅T,Nвp*$`){kj|@$Uh. &_h @3@q ~DQƇJr^?P.2mEq `V>ףzx;h=zhѺ=im13&?N!0;kf 7VzUҝ׌s9論uu5on[ɲ_Kcko|U"tP_5-_P ӚjT[?3p<4j&!t4*BKb5_>e]vadžkǭַ+8؟V[~ߕr(տZ]Ͽ/GV)r/:Xw}GPK!@9#word/webSettings.xml_O0ww Ab c~ݠ-Ombxarv9|B a*Kׅx["|,z(H,7&o` 1IJX;]Mu.% 8ECfӰNm=jXr80hx@uc/XtԚkCY@89e]@耄Ur1:Gi7r@aϘ ɑ)91d~][cP+Qלtprm -8K  ee-6/Ϗ<PK!wqdocProps/core.xml (QO0M2 d=o4m7ƿ`{ޞ.M"(e€ $+ yRi^JHQ ͳۛu@[sNLhg16l5#7.ubEٞnGLqrj)n }58%g:5 CHkpZЅ:*?BZUdVUTu}/d%V_JW0jKDN.!h^h"C]7>0-uٙScWf7z3(MZbhsn=O܅+oeBL0\8 h_ vfcޠKhDoPK!66tdocProps/app.xml (RN0#Q *@[WKjJϖI,۲]DM!9z35;]ighS|WM,&a02?bW ^Ƙ˼I0eS[T."QjJK8yh&6/ÏV0oIZ=q(F$Oݦ*Z` K”E~I19 *X_AD `n7ZDG-JIn֭Ey:ylƒt X_ |sGl0&&"֮*{;_MopqSBvZ"{!tkkTg_IO N}c{x2PK!`%U(customXml/itemProps1.xml $( MK0!=fMj+U\MmIJ"wSN~j.G{J D60o,W0H9X)ctl'_uݓ|P=;6w#w Ev d*yB1ߪ kPK!.word/fontTable.xmlܒ]o '? c磙UG#MvQu?`l8$nɢE^b=sw[r5Mgi- i{<7%o=J|m$Haf;i0XYǥ}w#W;*L2VtĸPlU)!Y8"hT'ZZo]9+$YOseΘtqJ8 3XQDazLi yc=2̼rgub. !:Íȿ:k$ÈՆOد טjT tX)-(ؖ-q HQ4܁ a#kO* `tʋS!vvK%ꂲ2*Y8+>Fe~VXPDe:pDOJK ?eOG2B'Gpf>yב]{Pu_iPK-!>RHq[Content_Types].xmlPK-!N _rels/.relsPK-!ߵL word/_rels/document.xml.relsPK-!.vag word/document.xmlPK-!{ word/theme/theme1.xmlPK-!xDG word/settings.xmlPK-!Q word/styles.xmlPK-!@9#'word/webSettings.xmlPK-!wq)docProps/core.xmlPK-!66t+docProps/app.xmlPK-!`%UX.customXml/itemProps1.xmlPK-!'!/customXml/item1.xmlPK-!t?9z(0customXml/_rels/item1.xml.relsPK-!.2word/fontTable.xmlPK4pandoc-3.1.3/test/docx/pageref.native0000644000000000000000000000033207346545000015706 0ustar0000000000000000[Para [Str "Title",Space,Link ("",[],[]) [Str "2"] ("#title","")] ,Para [Str "Title2",Space,Link ("",[],[]) [Str "2"] ("#title2","")] ,Header 1 ("title", [],[]) [Str "Title"] ,Header 1 ("title2",[],[]) [Str "Title2"]] pandoc-3.1.3/test/docx/paragraph_insertion_deletion.docx0000644000000000000000000002744207346545000021701 0ustar0000000000000000PK!mfc[Content_Types].xml (j0EѶJ(ɢeh4NDB81$14 {1ښl w%=^i7+-d&0A6l4L60#ÒS OX*V$:B~^Kڃ /PI~7$ iJ&B0ZDutOJK(HxG L+vdcӻW>*\XRmpZ}HwnMVn^펇Hp s' We RQDL \5D olͩHGJQs6@Lo^F ԁl]PK!N _rels/.rels (j0 @ѽQN/c[ILj<]aGӓzsFu]U ^[x1xp f#I)ʃY*D i")c$qU~31jH[{=E~ f?3-޲]Tꓸ2j),l0/%b zʼn, /|f\Z?6!Y_o]APK!word/_rels/document.xml.rels (N0EH5{@PnR>u&x,{xZ )Es«{߉W% KRh <7 k[,*0:??[=`9.uA4V`uHȡ/^s}-6ϺFHӥȏ:ŦT7%bpn-@7>"s<.Zkd0 O, ,ɔB6v~9'.~w>̦p[)PʼnY\7)՜WWd۱WtG_+PK!6Hword/document.xmlVmo0>i!A^hDJ-]Id'}د9/SE&!=ܝ}oQz[ 9#0  \3xR$=3f.N!CiJfVžo j' dv!xԏ0wJCŒxwTn!-xITf(To*5@tE-_=bf2n!B%nKO۸, }J\i E}-(; /B.=)I 8)e]9*nx69k΃Jh#A0n/Ih2Zi$jOn¥As-?y_)HNtNqܥ_rɖ&r4~bmPK!R%#word/theme/theme1.xmlYM7c7c;i&%GyFQI]%9 i顁z(m mSxlɖYl`)YZJ4WN㘦z4iqK-p3GܹᎈQO8ӝrKtR7,BVYT<~RU*rq&f.YC@A Ns0pIǑȅ8w/FDloa0'5eǢu=]W"6q1h,) 9Ӝz^[`5P^77]/xʋ~8W1@yѳĤY]@yoV}i(&8l+^]BƔ\۞;l>ZS6\(p |08}L#_S^?ʎ:>/@_}^}?< t!N71M91ha nM#SXsHCf2)6}Af[SJzYt=K,샳 ml-TwlsȠyȔHN؈>t,= z[CrGjZ]ÉFPۈ]У澏L\"b* XÄ=(bɃ9 s!3!B DlnA{<1L )Ց}:cLq؏D.QnQa%Ae`5w12}޾#վ@m D8'c'8=Sd{.շO{!˰uG6ܺxkw[Hn tto/+V⪮$[cLȁǕs9p(UE-,.3p `p*"pq0\; dykZqS],'ri [xAɵ+/rKO2Q /wb}KpV3I m(5YC2!f^EqM[lE!pqbUyIGb>+(ʒ֧FY&[Դǻ;5V+7XҽuB붝o hV2jV9^Ksqާ^j&\}y]Ut"G\ Tk.'8*^k_AɭRK]ϫW^ʠ8zC%R6}iWx+ze|9Ϝ D*<]%рJb*f"̣#1_yw \jUph\IEY!GQq%BQ{IE9-Eiu&kZ'XK&KY5#5afG .8=gA0J.( 5~$=g1pAOr bw%zW`>J4sr`%-5-O2xoԨdJ(gE@/R!WDWp7hDC'Ⱥ@"yW wȷq`gxQHԍ"Lj0Aea=Jfi!D UV % zX!-_t~SюXġQYKL\СIXbq=-쑑$_/F< .'`Ȋ @~R0+F՚j-5@Av96( ILgqC{$IW]-oƋRȿǹͤ˹˔nwn[[KM`iiAEK난"ES0[p 2PcjԒHo{v_njуFSPM&% 7MY+ j׾O}{`!-X> O/KDtCHv4ȑG۴R-?P* ;ٸMl˦A6eYeNװ`kɘ<ǿM0;Ȳ@/ m<û@0FQ3Qfμf({0=`dQ3cOW@YjgPXFS؍{bI@ò lm$&4˖22^Y,I:?PK! word/fontTable.xmlmk07Nɲc/FEE`tJ|d d tsZ%{@ZSlBI" [i~^_ߑ<3[%9 /]QY!z%io4`b[a0XYǣSˮVˍTҜ2`9[Uo0>֧N($ZlHΡum[g7k4fdYc" 3wZ/#@{mcc' bp? 4VLɍ12cAd3U5!7́>rŴT 9{dh1 -SF)k+YIf(,Ww?(QA}3iR H~.e538tb~g9""G!˿Yr{7Ǒs#l$?dw'$gM2?3!9zG|'d PK![m word/webSettings.xmlJ1;,Y-T>@ζL&̤kH/I23; X֌ yZj|pm*).-]قl7=,)*IYků )Cǎ]ђWnfW"Pv\Wf) u]pK~ʮ2D):dSx<>=t!3 ue'Q>w'@ܯ[D@'3S̀r >`N| v1RpPK!C;sdocProps/core.xml (QO0MϲH#5{0.1ٌƷ޶:h[`0=vݿw6;6\y d\lRw3Fr) E4ˮb*5h@[sJThk16t 1#GW\K]R-.F,zEtdT{7bȡa G!>ta.64dm"{hxe9*u}lVrCs"j>q1@bՍD UjwPR3%[sb=~_{4x7!49sŭ]-zx\Q6‰LpqtG=ߠ,Xt  ?i PK! Fj pword/styles.xml]sۺ;U{g9ۉkOi!Pʏ/R%(.-QĻ/ϩ~*;M"*ջ(Y02~6zOoOE"yi@VhQٳr8׀4>yTfRIaOzsVɲ0/yټTV)+b!u ͻ> 1[8+B֍ O떸(/D"Fcb_g;[I=ٻS'[3=:|6dyufM T GW/WflYU c0:tMk|UŏPK!PžLword/people.xml͎0$BVUV5=myaJ?3lKX@"BSJN=ܠ:J"@Eϟ]嚁,eNcKk&]HN X܂PU2܁)qOZQ-hiIļ4:tM悻gG jGDxԛ䃠q,-~=F2.akek0>Ji b:8{C:?[䗃qtCEz HCy8{ O燁F4~^e5uh>1ǚh%'< ȗ,Ykvc1T1_L r{jy̡,=5v8MeL6i$[Y.uJw[\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ,Para [Str "Ribosome"] ,RawBlock (Format "openxml") "\n" ,Para [Str "Lysosome"] ,RawBlock (Format "openxml") "\n\n"] pandoc-3.1.3/test/docx/raw-bookmarks.native0000644000000000000000000000234607346545000017063 0ustar0000000000000000[Para [Str "Manual",Space,Str "endnotes."] ,Para [Str "Nullam",Space,Str "eu",Space,Str "ante",Space,Str "vel",Space,Str "est",Space,Str "convallis",Space,Str "dignissim.",Space,Str "Nunc",Space,Str "porta",Space,Str "vulputate",Space,Str "tellus.",Space,Str "Nunc",Space,Str "rutrum",Space,Str "turpis",Space,Str "sed",Space,Str "pede.",Space,Str "Sed",Space,Str "bibendum.",RawInline (Format "openxml") "",Str "Aliquam",Space,Str "posuere."] ,Para [Str "Nunc",Space,Str "aliquet,",Space,Str "augue",Space,Str "nec",Space,Str "adipiscing",Space,Str "interdum,",Space,Str "lacus",Space,Str "tellus",Space,Str "malesuada",Space,Str "massa,",Space,Str "quis",Space,Str "varius",Space,Str "mi",Space,Str "purus",Space,Str "non",Space,Str "odio.",RawInline (Format "openxml") "",Str "Pellentesque",Space,Str "condimentum,",Space,Str "magna",Space,Str "ut",Space,Str "suscipit",Space,Str "hendrerit,",Space,Str "ipsum",Space,Str "augue",Space,Str "ornare",Space,Str "nulla,",Space,Str "non",Space,Str "luctus",Space,Str "diam",Space,Str "neque",Space,Str "sit",Space,Str "amet",Space,Str "urna.",Space,Str "Curabitur",Space,Str "vulputate",Space,Str "vestibulum",Space,Str "lorem."]] pandoc-3.1.3/test/docx/relative_indentation_blockquotes.docx0000644000000000000000000003055707346545000022602 0ustar0000000000000000PK!ߤlZ [Content_Types].xml (n0EUb袪*>-R{VǼQU l"%33Vƃښl w%=^i7+-d&0A6l4L60#ÒS OX*V$z33%p)O^ 5}nH"dsXgL`|ԟ|Prۃs?PWtt4Q+"wa|T\y,NU%-D/ܚXݞ(K/4Vm^urw2NP0ŮVw5j o7o:>S!?p8JX[d0KDEVKc2P,ũa].ﰘsYҡ+(!O>zPK![FkcmGY*Fc9-j_vXm-gC-!ȼe]r5id_$:H]G$: a 0@, ^6+$ȊD쁩 `ՁPXO+hs+(tnXa}t+%Q[j5sЂ<#!Ëki0uGNl^y){[c88c鞝%DaUk, ,oZg䐑qS kco9D$EUk@@D|Q/4%7F7UO#=em'/ڄ:Nr9cqUAz(J}E>g>hE|V0fb6Sm?ںcCoOҧCWh 9b>L^.=˩7~,>S-'o뜡jr5SrT\XQcĒ](jt]UN㗿7T`.ffJc30T#ϱN+5Hs:RKvIst=c }+KׂVKSBDIZy|fL[M-RBk¸NdvzpuvJ)(܏!/i`NUڿTYXpƁ19q G}hޭ  !en~ȫI g,=wqO8[dElIz M1hoeZRy_yb(i-V\P֕!b!(k5?0g.{]}@7aMt4}ծmeLk/{oQ7ȍiΡCΩcR "+-^u~_G_PK!{ word/theme/theme1.xmlYKGzXk׮mRkiڵ0`r C %B 1C~ʂMTHi`®`Տ.͜p/悰ϕ\'C6"Iro ,-w{aOΣ; r#);Ţ0'07f!vw{%R!J7^䰣IY}(wmЈ=: -J-9[-FJ|^*7qz֫ia)Sgx l6-nls>^Ҧ̆9P7~5(m6R E$ tɯUnW1%[}`ݯ?۷ D̸H`f9#lS汑bۜX3 Øc4عuنgS+dKf+ȌUO.n,%-|kgmM̐U['F*%\Z;"6UasnM}26D 2lD g"8iUnl ŵ'&k+pT/{bNcO-7pUM|EM͒ 9i5Ͷ|VɜU2g]T2Y-h-֧>cB遜S't#0;ZhiAs 9m3ALYP8S&pVj}6JGsM@2k9eLGkJA뒀}LU r5$NE¢oe^Aꙸ樓 GOһm4]l p3I0c}}\jSؤQo|_$hbc8sU Ѵ'4)*S!&-w(~2BvRJCI wM2nJ]#%,}|_y'喑 s{ÙA4:vD`(^V!W ̊kjq-EtōO)\WtrLwe9 }%-5]9VY7X{=5n-BZAM1PFMjX[;oUIJԽ.D~BS_-Wi&УrO:3NZJ W^B_.u;`e?]?|^o!LE-_ޗ+NvjuX~oVZYm ^(4ZЭnfi׮^(APj%E,ԽJۍ~5|4/PK!|@gH word/settings.xmlVn6}/0\G-""}$&‹@RvECJHS%̜KEyU0EAfN4w|OZW gV*}o1CJTX ɐOu&DAF̼Z3KDMH"ʒ"9y[ sm3SAp%rllnG1apvBLjs39V QW ]1nh < 2+Q_.㘴>D2ёt G+@^2p}M,hQE_VT|;Gz$DdXx0# z2fy@\i"QNbF"YlLKTSFJ v66& =T[ fãAIk,W!Bp-u~M% צS[1hwSl) l*%9L"L$`BKR9>PB+ K4FQ B )F6}P2{)%ՒH)/@;% /"[+'8ÝAs`ߟ70yS^(xB](E4hiB»f:} o8[,h[6X)Kst+#k"eEVu~Cxئ ť]%oZa6}9rYRU%;0H#aήl8ם}ڳO4ŽGde}KOZQ2KTUM8(luhDᫀe# Zl`Awlg;:۰Eu6rdg ni쥠TqqL n_5% ngaX,B}(Mt}T'\ΑEи f> &ALqm8q4ޅPK!7YൄdocProps/core.xml (QO0Mſtejc\4qƷ^fڦ-11K|织iŶop^='Ʉ0R͜WwI)"{A+qnT w;oJR \glg|ӎ|w$()K8a1KV2vѰ/ctl6; oPK! zword/fontTable.xmlܓˎ0  2*U]V}A>NH޾!4j4Eea|><#y@v%\hK&yEG_m,KO_"8S~zho_g~R쭈j<#%=HNB/Yeq6Z2l$\S%B/@'k/ZB 8}𠤾?JΊχQYN Li?3qE(;ѳQTHFމYrFlGt~Gƻuސp/2N` PK! )NN~word/webSettings.xml_k0Cɻ)Va ^`Ն%کsb.! SXj0 E eC.@b7YWORŠ\T1֙+pXSa# z*&8Mk,Kց] `YDO5h qs3 8bun/0/]?cv0$G;LO)Μ%sP2>ޫlcUT\~IMN޵wtڲį%ܶ\uCum bh AG?f PK!A] ={word/styles.xml]s:j݋L9d&&39ε r@^_F:731~ 0KFO(OGvFctr(*+',9?rۯ/'e2R<Ѭ'e<+?9ʩ,2VvƊ|+ٜUb"RQn,Cөg/2W&~"ʼyООe T;5/c"_bv(q!K9>-2(c-c[E8GKHNXc@T Eku[DzX9sר%5}',$U$z X_g/fޅѯ ?)[U?wh?.e^ +c!UV26xubpVVg`+g5qY9E"Fz'%kR?4˦w%#oE=bk|;;_~oOkuPkFƏ<WjhGoJ-q}WYq:.L\$|&s%OV4& bGFL|KZ3{_u@7]gm3t݌v"LQ=Q:{\w-ԆkCﵡ{m66d0 q70\øwwssVtlW]6eţ \dz IL]x0-f 1& ?WzNi4'9X(!բHHN| ǜ2頩y/ An q5DLhf$ 3rx$#7W/ҔҤa  UYQOYQYQIoFoFo6E:vH>?c35~L;Vg>܎usFǴ%j\oRB;tFe%^KUd=@όմ˴c.pjx p)X ZNʷjXm*6" Z _yeI2M3O㪐u3l>c0s5DC}s@tw.e"VDэ oo{9L14sYU2#c3'iD{{Ftz.A&Ʉ"$P'HV$4T8fټtxKgUFC/V}^T$0aH }[Th:an: vv 7|gpT;{K!kfQ(KS)έ8&r޵Ma7pd³OX5_YlOӃ}N{ވYg˳.hgcd3a_ ۼ>?XdMC)^ n~IE<%E3t-Yؚ]y+Jed[ weњU8W :c P W}!kZ G֪{?w#z ?W%Jһ6VV0W`|Hj5`GhBڨF ~ʨ <Ȩ6*D hΨ0gTbTH 1* hBڨ6*D8RFQ!mT3^`T3*1*RFQ!mT@"FQAxQ!mT@"FjnT3*1*RFQ!mT@"FQAxQ!mT@"F5  C )!FQ!mT@"FQ!eTdTHA"F(}zz6Snմ[s)F?BSԞ.>.}Co!5S? Ωt &y]FQAWu#a_67*3N'Z;ᰋj{2;x6g?-/tt~BWZBr W4?z~B_^ ^X? &5Vp X!!Hj 0aaJ XË$5K QRCTPRCVd/&\j ¤;ԐRCB.5DK QaRY2ZjHJ X!!Hj .Y5Q ;A; ;ْ̖C-Aq%W4?z~B_^ ^X? &5n&uQԸْWjlSjlSjl/5n&5n&uxq͖:͖:͖RfKmRfKmRfKmR< {1RfKRfK~q6q6q6q%ԸRԸRԸْ_jlMjlMjlMjl+5n)5n)5ntB#+yqWUl /eēvWoP{+6oS߯T';?WJ'Zu|M-쫻b`{ޢ ܰ%^+˭&L7`~0brf33VkW|ǚq/'E)f:߱ھY?(}xi>hUD?SYAM7Onղ7?:W~E^/_kc7ڻ<zG3k3CΖ|VZ锶MTwgWyJg?=MpC3۔([DQRv`hk-]6EQ\2Hh3? r+IC7"!'LY\ G`s`Co.u+==pR$Z-2=y`+@(wA')m#CAƂh݈`+50vX{|qMNBniIĢ"{z`z} ;_痳ƾ9= PK-!ߤlZ [Content_Types].xmlPK-!N _rels/.relsPK-!dQ1word/_rels/document.xml.relsPK-![;6W⢜J|F@q5?{3D=VbE?HzNa"x^Cr4-eTZNI< b>Z[*>?$EQ|[JmΡm  Avi].Mj *эr%B2vY>/s3u!j1 \sg˼T8)ʆݦh,Ar _$bd^|yN8a r/,Fx/H@c܍, ތİWEX2'"_̿Y?wez{? IB,m@Ti?:k8ԉ/ӷjX&z2l OV9KN<~o'q(YA;0ePK!N _rels/.rels (j0 @ѽQN/c[ILj<]aGӓzsFu]U ^[x1xp f#I)ʃY*D i")c$qU~31jH[{=E~ f?3-޲]Tꓸ2j),l0/%b zʼn, /|f\Z?6!Y_o]APK!<&{word/_rels/document.xml.rels (MO0 H*wvu ]aH\MR%Oh`8Gi>/@ZɌqB",3}!A&9kt`zu~|d5"MF*RW U ҞJ 6%mYJ$YP 9 ψpZOnUu* x‚V8hB%ӷ;Av4h %qv.Y}PK! :9#word/document.xmlX]o8}_iCmIB AJPM1G)e~^;NH.tW+Mؾc;Ǘ9DHʋ_{C 3Z,GuBE/~a:'rMGJrH"99łKPטXPL:.Ny*DJIoxI \p#UH<+@/sʨ׫a]bh!BeXE![6&bGx!W \4\ χnSes bx rY01#85bԴG$ܡK$&/#B%h΀LYwq1 `ajnSnZ xK?`$PL.a_Ɋ :i{3J" x-TꄹXDt X#q>{-3r_5av-6xN㥦Ip RJI{(T9x6ǜQ$ =fPe&Ձq8 朕ϻRv 0YsEq>ITNQYiC0\ZOY$B1O$IIl>M@<5[ KXר}pL\Hyà?FFUIl8+irݙ&{h!x'dr& {hi,d Z+2hxkf)3pAt l=L2{Dgv+ k 2Vm[_Mfr*SfZ# D#wuG"'S7#"h 8}P .`{rAe)@9+ @wţj;MY$&i+CVUCgwaOuRC+u`tl`8-X+C] D<$JF.EO(Jyܣo&)sAIcYlg%WO`xS)3 ƸbwƽRkkQSir q=VԽVvtKxRŀ1)NzdԦ$GA2%u)a:t4KaO* &RZ!d~]2G0'%cGI|AGZĘqkJTK[sv]s~9SM\Gב^O&/_'汤nbv/A"=h.@3\/~YiUO[2R`SJ=?U9M(jR0N[ :0=OzK3k,Sp6T{xR-c2R;^P fpݥՊWK`=,4FH"%Ǹ&z;h/vIJOL:!HDЇŸښM 0{ Ǚh#q|6]9/h߹ެVr m@f/;B :DtշPK!⒲Wword/endnotes.xmlKn0z{[jǩ`9lh0e )+}za81E 9gy"JO#0IU>ELnQ`)d):2V_,L*liZ$ -- v*85ʪMsNYX+qfZ&@,p=Mi&a1WFf b+=&?#RTt Ȼ${K.E+k"AI[p=Y,=p.(}Ƴj1D~:U~ *%+1[_WFUzh;<+ub  RT"(YƎԉ;j`&8ex nip%~mob୎8o]twNQog8ӆ*_޴6à&\-nN˪oNxs;;Τ6/PK!gd]word/footnotes.xmln0+;DCMۈP+nm!Vce;"D='(ӆLH8d ۄ}Zng,-A!fuX ĵJRXb7i5cS r;NA8ĪO}'!!l+Ud7=oR%kh)S zܢyR"b :07Uy@rqehrM9 %V;!,J(lՔ9VDġ'?Ӵa &3m%0{,}-x`TXIP˰=5-$S-A+s/4;H"J)Dz/8*tF2.N$\5gM}ukuazU'V}j|4w۽ҖP- `׃X<6Kif*^ٛol7-}LPlrrl>5H!YpbgALID6Z{f^qQ OPK!\;word/header3.xmln0  '. 8Ed[v}Uc:GtiQ_͋VQ-Kk2Lc m..#N$򁙜)kDF“/&-s0q<#e.RhZraʭ($Yݗ˅X35d4‚fs&Hw,'d#; L: &AmJ ̘S֖WZU jƗYN#~oVc\㒫z֠9ϑIZ'&is$9*LcOm&?p˚ l4ymkP54ti21%sx5O;c=)T-pף&+lRǀm̓ofF:o/^zS|n{ZRd<Z3߂]-WPK!B;word/footer1.xmlN0+ﭓҲ5E ]Po>qXзI]P9d7=oZEp^H2I$ \MFy]frl'&-0<#e6RhZr0)6r:K3S3OzH+ N4 8t{" [dW2R9^Pfpݥ,WZUN(Ɨ]NlVC\cy=X:֠9O)'tE3NAf kk67} 0y蠲<2{V{|4u,@ƀc/ a"/ijc<#rvs?)^hsFdZU*t'יu*5Sy>?PK!R%#word/theme/theme1.xmlYM7c7c;i&%GyFQI]%9 i顁z(m mSxlɖYl`)YZJ4WN㘦z4iqK-p3GܹᎈQO8ӝrKtR7,BVYT<~RU*rq&f.YC@A Ns0pIǑȅ8w/FDloa0'5eǢu=]W"6q1h,) 9Ӝz^[`5P^77]/xʋ~8W1@yѳĤY]@yoV}i(&8l+^]BƔ\۞;l>ZS6\(p |08}L#_S^?ʎ:>/@_}^}?< t!N71M91ha nM#SXsHCf2)6}Af[SJzYt=K,샳 ml-TwlsȠyȔHN؈>t,= z[CrGjZ]ÉFPۈ]У澏L\"b* XÄ=(bɃ9 s!3!B DlnA{<1L )Ց}:cLq؏D.QnQa%Ae`5w12}޾#վ@m D8'c'8=Sd{.շO{!˰uG6ܺxkw[Hn tto/+V⪮$[cLȁǕs9p(UE-,.3p `p*"pq0\; dykZqS],'ri [xAɵ+/rKO2Q /wb}KpV3I m(5YC2!f^EqM[lE!pqbUyIGb>+(ʒ֧FY&[Դǻ;5V+7XҽuB붝o hV2jV9^Ksqާ^j&\}y]Ut"G\ Tk.'8*^k_AɭRK]ϫW^ʠ8zC6X_40 fmLup|c׍_u ծqM@bYuSn?,W=,=zgƶäqm 6?T]Hk4?s⡩u'ݓ{: ^ ڋb'@I`znW=Зj獟FSl>߷Λ] U \EOP8\6j:VqWuךs;?CS3ظ-NCUmgy|Dћf/L )춃*z8omg ];xW/J_7h 9LgYp#ᬩzo-z|YрG5&;7nY]Y+5m󒺈y8v.Қ2b`ܺ9E82LA:s*"{7Vvxm9Vu*8߰ 腻 GHTpy]uXßzSVփ *4'kJ˿w`G+J?~]  q"(AH"fS~DLXB)n[JRJ#DZMEBIٹE^! ,Q$㚠!9 RjJ(g) 4nT$(Rg8TC3i"9 HD5 IQO GmciC"T'B8BPU0HJI*"!S1W8B@gd8S%PۄP!Y#  Z$D 4B$B{N2!YvL91 E PU"SSŕX=U GiFh/(BK5':Ci#TF7vPr #dhC0Y4"&h~")QpxηHLqf@e1(bi@2lh~Nsꘊ4BLBIpDfx'˕ Cc$QZ O(B4 c2CuE1H#aGG{!*?2s<Zךi"6ՒxtbIf[4p9Q؜P$9~Кד!vZt 7t,a JLC "` ԡdpVȈB ƌCZS@g$O3!HctgP OC+$Ts9Q1~C'h F~gϓb=CpSk6 0fЦ\ݎolqMvwv}l1u{S,fSV}]{^Qji??ߚѻc7'o:,!9vR5 ? Wk3ؖ<)N6\g/f^Okm{vvQxuܬ0<ӟ==ctML1z]hֱ.4&B#Y_WכH߻v'[t#AyumqxvK  y*WτE}lv׿u[o?Ftg$Ly1=0wP_!}bz[}PK!:cp word/glossary/settings.xmlVn8}_`蹎%YNNֶA]Tn)" )ޯ!%Fޭ-djyf >SLy]RULnM6 FY$Gwx{H55]HriD;*R  1 ۉ 6RV0quлQ.Ƃ5IU]?.ۙ,U *81%5{? w^{PP=[\5h@Tk }Lo=Ǿ}G;f>1h~I% /C釭T@ rFQp3zҺʁegi!2AiU&-7RF5ϛR yCJzK{6`{ t{j5VZsIX i.5p`C^pUtc[#BV6 =B/%@/}slhFim)f|o `5҉:>eq']iaMMi:L9$YF29 pyY%aʒUv~bMu.޿,G'FFk'V;&=^P5ƒqh <é["nvg&pVW$'#Wd<2-ro%q;@>ih!5H27đR9d["5i6mw&4U >mcsvdMl:/Kfˮl8v-Zqz?߈P2(a_ugg'(kE36  {wDӪt/PK!%pMword/glossary/document.xmln0Ww@ ! E%UMwQ}8l'iw_spBR6aLۻwJ,up/jVץҐpS{7v+!hK1ӎA1JJkBPh$W|GSo65AZKHRn*i\`f.)ƕO| &>6Z OݭdI 5kXn'h+gߥ`e!E]\½_t"J?'4kN(٩F3n0 uy|+N:{;' ~ãy0O ESɸkb:2+sԝo͛hV{`d0HOv8A4 E46V^UcWpWsyXLWB9K-ua8g7X."/ٽg؛EEd,q΂m7xN]\{+%6j!Z.@[t%x,nO8Nxv\}g ;9tԎjMm:PK!е%word/glossary/_rels/document.xml.relsMK0!ݦld? jCO ;&X%($:/(K bJ>~2@/fh)oڐF+yLֽ,ou3:b]c kP?жÇF$9Q?p"q6u(faO?jQ<s7Kַ{?AB} PK!hYU(customXml/itemProps1.xml $( j0 C=)qJ ::uvػa$GP(dh9]AEy|pe!:&K Yp~b]UWUGiJQ%Xg/{&Ȓڦ3r $ ;My#cB?7 Zpj5h#))}&jMznfh<ۯ8[ܢ^rYeN+_PK!zword/styles.xml]ms6~38t!b؎}񜓸sLŚ"t$o@-@rA4޵3Ej,vM|%yb4x,q=]<޾9EfqҌ\^I1ǗE"`Yv]e}{tTDk d曰d_M?o"نeLҤ|=G &BW$"hېG9I"͊u-*>h/49HQAoR &rZUꑀbc&&5&z{<\L'Y,!W_7qK^ކE$eIˬHF H‹caH^tf(v*o;5L/FIuq, |Y4{RZ2܋QY\r#50 w{M4 DJ=(/ lYzm dgU^DЬ^s$zF95zI1\W$ڥ)я ł^+᥂^)h6"IS ͓'I7Io ͓p=&e*Bu]/l"yB n"jSn_6cƶsEǜV#J\Q'nBhUyW`5p}`i2O)pei$@EEdB;ma9M ̰<#Og9}D}/wl5VQk^4z߿nIʲH4M !.ʜJ_)?&Evx!C&ݼلI ?~閗\1~hYҍ7L4_~:xɊh/=- $#h IxC?뒆y!'.xB\L:Ч])E+ OpSaM6=p06| : "^Su5 x 4_R iB6YsztaIN#Obo`,!|Ajh`߼#</?:{ʣ3/?`l. KM1/ M4YI6['ț<H%CNWɻ=@5c-|W5_VD4~͛ٺģY4&eLvYV//sy<`WuqdU7ĺ4|^=b@d: O nϺDC$ls-ϒ=%ag=%Om|xFG8mƳ8if4i5\FZӏ3v~cXdGɎқWv6}&_>ch{}D\o\p7AcSV3eznwCDVqTHMvAVpFE+(VP%ZAh5 CNhB4Qd vQQ! MT&*LpD8ByBB4Q!MT&*@1; !Dh|qQrPPUXE90>x8F?d&T,Q[.ԅOO¤L$XS. Y 뜵E_]L+xYݔ¦# f4E-ZkPm1Zn̚ Tp[<OOzi^_ QC8#%U!1͎zvf#iԐfXSՎ55Dp25q75r65r35 XSC݃p*Ú"`M 8![aM M L ;!kjdjnjljfjP%M XSC'SwSC(gSC6SUQqI&5A\p%MڱZ%hjI7}hG@ 7 ma;qՒD#`MUKUKUKvS%qՒَdj\jj\jj\d75Z2W-LL8![aMZMUK&S%qՒԸjjj\jj\jj\d75Z2W-LLUKVS㪥VS㪥VS[ƎL[P~\n L,A.I\$P{Tâꂡ;/XU~s||=_ިaw_;Pml%ӶRncYbu.t췉-.Âğ:Y>$"*>99ͮ,*^7jabK~]6QLˌu;Vhl/mFG{]ψ;uvvs*.QMՄ3w.,{03k]OUڻA2t7*මA_,7Mm2qr]A ~d-ce}VBy^t)*W$ѓ.iӭoE+cݮ1z%A3A:Ѣcv~|i鳘Z' 9}:x,S4쏻{EdOobI~Ӕ8_xo98/´ 8sȯ~"PXf-+> b{N4q"^,a ~w ׺å\ɇƧUk͇Jӟz8`ϠdJĨh~ZsR);f |n_3#~r)Q+ꡚRƞהbR.43$ư"a(+ h6th-Χk$6zÓ܇W;1ztͭSPcjEI$}L䩡>gkiy3f5p8.:֘<ΎjQڋu?Ź(ͧf)Y('ė$/E9m.S V3U򞄲^gd7-nSFzWCϠ$OӢiwНDs҇i Uܙ/$uLFF3WI\h^u"ٕ# R'`c7uܹ+< Ԣ(t3cj^{46|V2ZnPGCUd@٤1wNn'[=ku-g<cNszIۧ%osrKt8Cݩ^uة4 Z֧廠K{1~';L䉒˝;ꇸ:f1{6^ ,{ְPkذIǀ4 NBj|2=eXi 7v5Jv rYB[U_PK!}X#word/numbering.xmlVIn0 q4mP .%& $%\Gr~j-7G_>2Xi" N}<)᳡}<:6 kE36 :^d΍dҧ$Jh15`NIP_J$XkFÂY1;j nW'>%Z^n8ST`W{DDc[q2b_](j'̵ʹË5u^D]jjݷW羺An?.j*?M6\8oEG8WuZv\H[s\(q#u\/j9wq6[qwT3h wl+|PK!yqdocProps/app.xml (Sn0 ?7J+EŐba[mϜL'dIؠ׏vO#)UL\TMh߭CZT7Ǖ8b7I!b"b WbORfӞ3mHӴm`;$/+/"bP\E`X#iUco夛5:%Ǩmzᑨ 0녒PO!590 CC<@}N UbtdWkRȡ꾷[JNKE,)U_| }%%Ws#S[ܼneTw@!nZPHU?yVɂ'1 .fJX{=M}_L༰'}˽?.f{ՉC|x?Cmy3<Ndi`x'?I-G}+HYTwN~j.G{J D60o,W0H9X)ctl'_uݓ|P=;6w#w Ev d*yB1ߪ kPK!P:gI6(customXml/item1.xml $( Aj0EA>E(NY&]u#c[ iW'37%xuØSE rhl~Po<6@ bR-z}+wۡuL, x!%yPlB3 TnCDJd' &<#11#k@)˭\G/]PK!3~9 word/glossary/fontTable.xmlԕ]o0'?D/ILTH]T6IvdǁBi$Go^Y#7hCx$'#y>黎Ҙ/q&8kܻ/0\+s5dM·0Z"':c!)a{DXͨ^{n%#/QqL#MD+F.{d(Ji6j%j\(kfcLքP"-XLQ)|cٛ@ hp!"bCtS,o}s6FP>mm2HGVYZs|SJá48 DeD,|2Mlq>ܿ22(BO@g~vϨ2ЎYfPK!3~9 word/fontTable.xmlԕ]o0'?D/ILTH]T6IvdǁBi$Go^Y#7hCx$'#y>黎Ҙ/q&8kܻ/0\+s5dM·0Z"':c!)a{DXͨ^{n%#/QqL#MD+F.{d(Ji6j%j\(kfcLքP"-XLQ)|cٛ@ hp!"bCt_#qǗy`wyr>;^qNj5lV̲jʶy^eyrZQkE/.LSڅx1- a"Wu/ʷmx,h?8] qu,832'xq"[Wq 70VmO߉((ϻZ$އQ/w-ՇI|j9i,IL1ހa 3`A'f &hZykSԼ4A[K[>o*e%됧sӼ>؏1 `rӞ3]݅EXݪ>1ݏ3v'<>X$Qz".=$;. (qyu ؙ\b6ޠ^2$އ.W[X-ϰIQ A?V@u8ET/;Z.UI{-Ri}S=₶e_tI&&n}+q;w?~X}uYOWUlbi= :Z[!sLC7Htd5~؈q*Df!@[.>#`7x>/$JT: hyXlˬo.p˷,tyW^NiX l=Di^l < (l JGxDa<_E  L[Y&h Ё3˿<&9O›)tu1 c2n&Z1q˗]1iNd:҃_{ʟsI>c(ƽ%ٲ/,ʎj4oQ2YW|Đ%ʎ)l'@gIcޜ4t㔕񪗣NpuQe81*Uɵ\t+ZA{\s̩V v|*D`G g RBP!-T  RRBP!-T@ "B* hBZl@'Th?G2G*D hBZ*D g RBP!-VB8B9B9BP!-T@ "BP!%T`>K*D h qBs )s )hBZ*D hBJ|P!-T@ "D?KWSvo験W|{B#`ajT<|`(tyuK}/T>j\ 5[ 5[ 5[--z~qf- - -CBBBpAb- -CBBB떸uKuKuKP㺥P㺥P㺥P%nq`q`90ld!ș" {jړUTa3"3CE;:V~{g[PϷ@}=0R#/Spzw;/B]\|g9jsjpCCh}O7E_w46j^%vPp74wlnJjnq3=1tev lHGw7/Sw EI"I+s<% 5[W@T8EW3=]Rշ-Dz5]@ζL&̤kH/I23; X֌ yZj|pm*).-]قl7=,)*IYků )Cǎ]ђWnfW"Pv\Wf) u]pK~ʮ2D):dSx<>=t!3 ue'Q>w'@ܯ[D@'3S̀r >`N| v1RpPK! edocProps/core.xml (MO0 H*6M'Th'&!1o k>dڭhn׏l' h JDEBKS9OVPU739^6`r93%xorۀ. ĕ56mpwXz DtBr6 3 5HPa|z]m_N)|k,it0?nX,P<$!f׶$y m-wAe1+ ]S5WCB^@E:ǐshg}*K}L8˖dg$OH P?1π~W~PK-!b6  [Content_Types].xmlPK-!N _rels/.relsPK-!<&{8word/_rels/document.xml.relsPK-! :9# word/document.xmlPK-! ;^word/footer3.xmlPK-!n~c9word/header2.xmlPK-!,]e;%word/header1.xmlPK-!⒲Wword/endnotes.xmlPK-!gd]word/footnotes.xmlPK-!;B?c$word/footer2.xmlPK-!\;word/header3.xmlPK-!B;word/footer1.xmlPK-!R%#!word/theme/theme1.xmlPK-!yYv!(word/settings.xmlPK-!:cp /word/glossary/settings.xmlPK-!%pM2word/glossary/document.xmlPK-!е%Y5word/glossary/_rels/document.xml.relsPK-!hYU6customXml/itemProps1.xmlPK-!z7word/styles.xmlPK-!}X#Gword/numbering.xmlPK-!yqJdocProps/app.xmlPK-!t?9z(McustomXml/_rels/item1.xml.relsPK-!P:gI6OcustomXml/item1.xmlPK-!3~9 Qword/glossary/fontTable.xmlPK-!,kq_ Sword/webSettings.xmlPK-!3~9 Uword/fontTable.xmlPK-! 5Xword/glossary/styles.xmlPK-![m ggword/glossary/webSettings.xmlPK-! ehdocProps/core.xmlPKGkpandoc-3.1.3/test/docx/sdt_elements.native0000644000000000000000000000162207346545000016766 0ustar0000000000000000[Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidth 0.22069570301081556) ,(AlignDefault,ColWidth 0.22069570301081556) ,(AlignDefault,ColWidth 0.5586085939783689)] (TableHead ("",[],[]) [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Strong [Str "col1Header"]]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Strong [Str "col2Header"]]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Strong [Str "col3Header"]]]]]) [(TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "col1",Space,Str "content"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Body",Space,Str "copy"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "col3",Space,Str "content"]]]])] (TableFoot ("",[],[]) [])] pandoc-3.1.3/test/docx/sdt_in_footnote.docx0000644000000000000000000006413407346545000017153 0ustar0000000000000000PK!LIn [Content_Types].xml (̖N0 HC+Z38 q&1 Kܭ"MV+0ʸTjm/n-wpR "e8pLd xg6KEWt;D*#K|>ֻ]o=Gs[PK!U~ _rels/.rels (MK1!̽;*"^DMdC2(.Ե3y3C֛+4xW(A yX܂JBWpb#InJ*Eb=[JM%a B,o0f@=a noA;N<v"eӨbR1REF7ZnhYȐjy#1'<犦7 9m.3󭄓YPK!nword/document.xmlԗ[o:ߏtmJfUi(jw?N?c.!nEn=?[,la{mataٖ҈( /V|:13m(i-BQQ)RD+ۈS' s2vFwB+!v@ʮpK?Z, w I_w5$pά  ‘EFMUATR00ҨK#0R'h7 .)(S"s/n,&;};1"3 S㸦,o&.죿tCܑ8LeDw8JƬqy(w龜'ji^F>s{A=B6z0&5M5FhՏ"X||/Gs _r'!%FcʸD" b?e6WO*V{̃.PhuaW5גiaj{l ڴ'?-F[i.l8 <wBGS +[1vKfP/h=|argFirچ͏gcvМ&ZVk8zKL-({jvט6U,-\p%{u>AM @'!ZPMvañ Va6u Sղ}U#ȚrSDvz`ZJAA s&D*ҭ>o+w|lVmVߖ(mļY1Xl ޞɗPK!. Y word/_rels/document.xml.rels (N0HC;qR T+p͏pȻ iS|Y{jvKTVu|g 4Jjk@ˋ3hI݀w1(XK4M$ͽIyr\y|s9[ه8ti4ICǻ٥kFx}ZS2Lص]9IsƍX?,yӾ\AX?U ꙠƻAgtaqIK>I>O387ulobkܬ!xe0/ kXa|Fu7KxGQJjN>_S?W#֯Y5:KrG`4ɂpup38 hۭۘWKWAk??&?sqy$ &~iΌ˿2>ʨ`䙜{QLV[qnV_&=7:<_SfX+,Il`Pc g\+-4d]fiv[Orqy6%hA~lVo lpXw YPr5Pm5N\jO *,j=D `Cv̖?Rf[Q?}֢/en~SMbʎzy-¬vzĭ4ϭanm)q?}rO jy ^ۭzZh?ݖ۴-+L5|lUVW7uTq6_OEܜ}""Ӭ>,/st#P4;z akzIJ홉+Oq(pN&Ą8Y8RPLZ>oDNSܛf#ߐen~>3Rʝǃ)h7Wq$ʌ^bs1$vcQKȝK3ZG4Tzr>x5 PT QT'uCwI5<'gzTomc:{J&Zfߑkh9F ^ ͅ};hkuhwdgΤܭc=PN}Jpe dc{սaݘNqyv\Voyf4p)[?(ӕٕZRmq<2WȂm[PE!MGuzx 3up ;kAffsvtn|v/ۇ§>Ma?Ȑ 8m)P}XBO{lQkXiw1D@ٺadjSME>̍w`$r8&Dk9T7ҕIFW.nYzy_}?۟wyɾP maI;.dޟ$K:~FsӷРX*^yRn4 󣪷9stcC58(erKuP;'rI"3x=#Fb0 CwgyNd[ʼ߱/_54e^x iam+CϘ-}DL B*w" =bǤJx LCb,/b+p䷦HbKѯ W-996ꃑ+=P+ ԏ،X5`bЊnh~UGcRbf`)9Vr ro–΍H.\W[P'ٓ~=wfL?_.]X.˜x3ES;O5.0vl:;9c/ږ*\+ny rVT:Ꞡ 7|6>Ԛ;w֐~/ҁNI>q)ur&u%tYX$ zsZ@?"u< 2Zcmo WAigAD~skR:"62FSa4F~7'/`S&i jQhLG?_։'|m̺VqŐR dV}s:1N€0S=څ) 6bU;(C;1I ;x쫜8?n"s`x8 oa.y\L0?2DsDs[thcaҧ+WlzurZ _pߏ<\T9i- :cu'گKez\k%8+yCP% HT@wܴ?Η`/rC#Y{-@|s+N 9PhsxV=8O~gUŐƲ+6'WR.q/XXu%3b `_)gq2k~mMBi/a#{2xQ-]9R8d]^QSa qעGl yd_u-29;# u3VOo\rR48g3;pI/TV @ߝji.҄%pv]:>t![XuC6=?C= ;SDNX(t3LJlI<Q]e4Q N5Ha%G_F=ZCrXcL8|,b/cu)("Ԯ8t$iy^]z&j o"TU?ۙj;4#sk)v,SݲxY'0HGl j7 @2kwL$9:F-s_2=cNuuO{uф7y)? 3JơL"#e2FRʷ?=qQ^:h‰#;b%4ֆ!R} Nxx=sA<m8]>R۸+0>:H?vcEv 1g׸.t8oF$RBƣ&J~XtHu#S`axrYE}䖬5G{aarT2vCihԖᒾE7N{ U/r&ws3;!vBq!S\Phȹ3U{_MzBm{So#8lzOMkCSj6|ܧVq{OދWfi,f d{˥?X#a޵Fnf5=ƐOWv=Xߝ5|?A曚CyM}6< n5z}h`й,'}[0|zk=}WcBten-tdc / <xo-$1X!c7wr)6w9}o$h-iO*!3%FAtK沈TbZk 1pQ)}$7gqٙ4?9W/ 9aS47cy- U}K2 W?KcTguP?ytexۙi&VFp_z8 Ǩ2O^u^<óSp?*d~6NaUR|Y>za8^-LjyԭkwsNUu/a%O'kV_/=}_PK!} word/endnotes.xmlԖn0%Y^*)r  Hʊ߾CnrZHg3c]߼;0mR)V(I*v+drf]B_ǟg8DbŸ{6pnQ9 n04t`J7*(O8]5s]jle:Z9cWUgi%' ZNHM^3rȃ4pW8Zw ^ۣՆ);IPSb7r[,Q9 غEsRlIWAC%yf3On(̣hQm(B3XDA K]è}yΝ$5nՂZ.T /G?! nuufPK!m word/theme/theme1.xmlY͋7? sw5ov6n ,#cqHbQ `Kl1# ]ޘ+R#NbP{{4"n-(KPRKD@sh˅x?C0rK-n]). 뿹\`8h9,=j~ r׫jRvr1u+7@iӢ[V>oc5(mzk~?lM w_fm _/^kPDI2^CZ5Xv 1m7}_T>b-F$I9.@p0 .UJR[ڣ2F9th ֆG 8Ȗ{9WN90)&1ef#6l{0jSG&6fV(yތ 1eNo3MH3vYl"$cr1Gv8Pl߃4d53#ygtMyFmsb44B{ccuM goDU67`]XK{8dV %14!Ӄ.+TJ:vElo;2J=^g߻1926 dʰ[1ܟŦVyh37W$V@+j0^܂=z#B鞜Q#t#0;ZhiAs 9m3^&LYP8&pVjN]6LGsM@2k1eLGkRA낀}LU bzg¢iaP7_s 0RFnCT~s&cۮXT\\$ra:|ξnf.5)SӨ7>UY 41{1jhrG   ;sCHfp!HD)LOܡ$Xϻ&rk>=鯼hrHօTu`aS  :wʯDȥ5;JE}KvDDh~y %>4]fB3ߺ \p[Ӟ?>%c}UWs]s6grԲ jZ6jR;ǂ 247}F uf]VT M~p,^I@.CL9iJ~ *~P(5^zBoW m߯{~TQdt>ا{=>^ڗ,.2]~k_X;juXQoVZYm ^(4ZЭnfi׮^(APj%E,ԽJۍ~<5|0/PK!G5 word/settings.xmlV[o"7~x. L &ЭT񀕱==vc{:>>ҪBΦ}baʹr0B@gx?`xOJ &SO[d ^c`E bQ$zsZ#E2Ru0j*K^*-$9nx]+yC1SƢ'p>p&NQmnWFMZB`R@ӂzKsVHl:-8KIX&xS[t/Pm±4%LNv8V| ./PK!CwE word/glossary/document.xmlK0&@ Omj^=Wq6Ҫ߽+$K"ؙ_5DHm  ?MLCi}D's3%ʼ_|pwT(d8akP\N1̲ C",ǂYp0NBv|KRG_|N ΀C$5y͐5&MР28M{3jdeQ5@^'D ܨi$&iҍh'lpƃ ibH>'q1>Ni* s@u&0׿0 u"f",Y/*l!COVu;A/p$0<{hO!"!W {ª٦3peQ.Ý&1Ύ59ED9g;٦cI dZҀ0흻R"n]st7mތج*YK{d,r4Xۅx|)=WB $$VzFp>1Q #d$x+ Ȟ~^ʂ?Xח_PK!Y~ word/glossary/settings.xmlVmo6>`A9zdZbEFI'_)rp:MsxwԻ_9 v4b&Wq(eEf^n@"*¤YxwL1:,dQ-pdZ*N n&D=ͨ!Qs8=YO1TRXL5-B-aH[h '};μ>/8^hqIx֠Q8R18 :B'[F>yA`ZuӞ#B x}ivIj;p2Ra8S쯍fGaAo0 j2&End5n-W`z|N:EJ*oHw~/QyJ)=’-\UaD5'Hu72DtJV~h婷.}֑ihk,09~V.#yFϟׇ@Li{#gf6+TD͜Ѻ(1rJ]T_Q[ze~2@/fh)oڐF+yLֽ,ou3:b]c kP?жÇF$9Q?p"q6u(faO?jQ<s7Kַ{?AB} PK!Uword/styles.xml][s6~ߙ=>ɲ%dnlg 5E$e-;?l@!Q=i,;_fQpO^/q,=}9iF1xLO{44{h8}= O{,M);>9Ɍdgr;#bٜdl"= z&i'K.f4ΔnB#ti'yCг(Ǜ/ah„|}' skp`1c1vRQ>^0 _yBF@U X_&p1/,,?DԿ?W<5ICnDf gqz%iv2Rys*qYoW!nޓwpP\9(]H|[\ӝ7fNN{4 b6sr cW z K 3&{8޳{]I|EG?. L>2P0gHy)4zWi4O<՛F^o7,T7{.".g;cnc":ݛ=g\&d> t5Yfl:|hӖHE.DY^%4_Zyϓx%Atep1*EZvHEޡ6uXzA5(No[auzT= !᷏sa]g+E!fJ@QJof)I+ 7w.uDX쇷7;3¢_͇ a?< ǯtO?<SiK<X.GQx޿6FńEŁJ@:Xe:X:9.ϼ6`L3/?; d":җ89OH MDo :W"nr:|+y˚/3$84jpeyZ9  GcXda-c=*=߳i ~fhY Kf VRebVdn7V]27z%ˣ0A媗\{&[vLT-WO:ѭ"/ ۗ^8Nt8_\[;Dch"(cuClp wV%Zu!ZwhBP;(s'BP!Z-T  ] Q\ QBhBP!Z-TǾI-T*@ U; ] Q\ QBhBP!Z-T*0w*DA B !Bͷ  ] Q\ QBhBP!Z-T*0w*DA B !BU/ ; ] Q\ QBhBP!Z-T*0w*DA B !S-zZWu3mB*rejroaq5Emyn%?_1;~tIPLx%S׹i y:O7-A_}MK 낮e(E4G.hm*ц!l džQ Qz,ח:w4un *1F[mٳ#ю 'fF5jwTC';ʙjF5 X!jlGpS PnTæ K5DR Twl0TC(g!հs"`X!ƝjL5rTC,K5DpS PuTY( s\'05Ȇ!.8%qd 8 WђI-{v4P|Zaڡ ۡܨƍvK5nd7Z7Z7ZS-UQ-UQNTFKTFKTFKvq*q*q*;6VwqZq%;ոRոRոRոђjhjhjhN5nTE5nTE5nTE5nd7Z7Z7Z LO@ g$ߋ{KiFsДGtP:JNgqV |7G%d2O>K:߲i*ӆĖ#4al:J%2"h?˪QwS7cQ;⎑i?1U^'{{~{}"4UVGD])}NVϿ>Z&YIF~9M|sJs9oTi+SRi(*Qt~#N;8).fEV/҉z^j\IvnV-sݴ$T׺١ nvnV(@ 3fZw7[L'[fJX@]c[wwʏr'˫;m;JނƱ Z4 Rڎf[HՁ.nо;XIOyup'slЎ$Ϭ[ g_jr>"*amG{e1MW{>z}qT\?ov=$cp$ɀ7Z۲Pg>5ϧ H<mnϳQ],Az2/$/D~>i>?щTv#bO&+n93z, diVUjg^FЫ?$|ZwQul]^BjބGx[Pͮ Zm :Wm)__tN]={u,Bf"p1$p]OW[K%Z;a /qf,tFCjmJ,ԦHVRƱuIEO^P|69F̮! T3T$o,{A+j6p][[:_<p}9\k1oQ~.k#\W Q7j97ѹu 1]7m>QpIx5SP^|s_{ Bylx(24;_&}9xkS&\- މa.G؄j6ѹpe:iu)e Jz9\kS&\ N dnxAj6ѹpۛ(نo[R>5[;QlC9jؠ}]P^|Ѝ͇/[(m0.[C^@)rxܺ"i9ltpow,%w Zns\;7 [u(WV|P_PK!m;1word/webSettings.xmlKo!{]YM5դilqGvVI0u;nx a`lHC!L K|}.C(d $gI7xx% VrR+Ef^SkntTr]TV&aREE$N:#G$%{fWN<+#|yrW)(яr#>qg;#w?qd M]xuB\2m` PK!B rword/glossary/styles.xmlr8j߁ GIje8D"! kЂdlIruMĒ?~o<'qLt4}7< e$҇O{GA4bLg?~~{/1 HIx:ZxK\T*a Sj/Ɋb.b'QQ}(r!a4ccMi==I yF'qKHט!%"T2nLU#Ӊ+7#`Cc#0G5&{I(H7Tlk@.`SzpD2 Vyf>;U}>>4ς, וDhY,?kxU}g~_ [#,o|}."1B_ǟ,>\Jl}.{W4k鈩ٙ Wm+mx-xBaa?=h,>Y˪ (]cǠӵ#?fM|Y<ӑ-KN OGlOĵ"66L"?cZW< 9L0HdN06W쁌ӈj"ɤ:^APUl~,}e yǜfYb3<3AC3.hD=Uш:[9>[E#귊6E)?vwKs}p=f!ez0|wS3 b90ݎm[ι^{}ښDCBZݢQk#ךGd5on2,ЮiY1[MkIL;cqQ.hGlЎ%_rI1mj9bp[HW! jf~YqӲO2舳\r5-o%edd>EܲL4]%L sp/W&4CFQ!mT@"FQ=p/B ڨ6*Dj׋ qF>FB ڨ6*D hBڨ2*2* hBڨ孆F8xBQ!mT@"FQ!mT@{RFQ!mT{pQa<Ψ0ǨcTHA"FQ!mT@"PF^FQ!mT)JeSQOO]Uּ:菪kf\Ǡoy,=D8K"P'>^tӤ|Ru/=g }#1î!ߌIaHoFUaیîI(E@p4:»fF89{kfnG_G57kXBhnB_܄2 (=nZa7Ojh3FuRC/5DyK Q~RÉ+5$`/_j2ԐR!;1RC'5\aԐ![jdh!+5$`/_jGQF)-r#797=Fg xfKPZs\M諞WF7֍B+FI˖ڤ7-9eKR㲥Nqْ[j\&5.[jrveKR㲥Nqْ[j\&5.[j-I=pK˖:eKnqRԸlMj\&5.[rJ˖:eKR%ԸlMj\&5.[j-9eKR㲥Nqҭ%LY~OdG㧭wV2Knyly|lkDwmu| SPǫz锭zu,ӆ¥.-9(l^]f.XZP!6So]:/;1ca{_CUwURWio<ܤu*"y'Dk)!\o? Bk"15i9rf~I?`|Lӣr391GI|\{z岔FDe!E KwZ9jr PK!word/glossary/fontTable.xmlܒۊ0 }e'n:K(^,PhxNZ7 Bgg^&GA9[|(VmMntTr]TV&aREE$N:#G$%{fWN<+#|yrW)(яr#>qg;#w?qd M]xuB\2m` PK!C;9ydocProps/core.xml (Mo0 Km*Eb!M>nYb ФQ(--a7;~ytrycEƈ "bj5FoY8BuTq M뫔M86J&L9`l$O(_\FRSš-]KpSGq%N$9$grd@u`PW~Rh[X֨ߟk}P+(K9Kp9d)>> 0w }SP* ^vk[m2~ Dz0z^1fD9nw)OF{Q&4=YlkPK!ctqdocProps/app.xml (RN0#QiAj8ڳeo ǶlSφ!>zG3kݾ3CΖ|VZ锶MW7yJg;~~oy IcH2oSEb'ږ: HC\]k+'?;->U.(_Qd/n'=vވ43RldrIJw Go.ȯ ,[L?6pR$Z,2ꔽ~q`+@ (?N“ [A4AmDZ~X KrlH#ʭ5G~[ڵ,\Χi' XF9i6Nw6m׳N? PK!udocProps/custom.xml (_k0!iU=m{*DIib7cr=w.xQWc,Oe`/-2HE8%,[&?a*ڂj"ӔŊDue!ښ(lX,ʂeԌ+3TF͏E%ŎNN-XԪ 4\"{N#`lt_4; 'tq!-:UͻTm?猯I~T| \7YAˆTC`*1'HW_+eF:/6O yL΅Yhoڻ@}S^za1~/nOu y:7PK-!LIn [Content_Types].xmlPK-!U~ _rels/.relsPK-!nword/document.xmlPK-!. Y  word/_rels/document.xml.relsPK-!ۿ ׮6Y word/footnotes.xmlPK-!} 7!word/endnotes.xmlPK-!m #word/theme/theme1.xmlPK-!G5 *word/settings.xmlPK-!CwE S/word/glossary/document.xmlPK-!Y~ 2word/glossary/settings.xmlPK-!е%F6word/glossary/_rels/document.xml.relsPK-!Uo7word/styles.xmlPK-!m;1\Hword/webSettings.xmlPK-!Iword/fontTable.xmlPK-!B rKword/glossary/styles.xmlPK-!ԍ'Wword/glossary/webSettings.xmlPK-!Yword/glossary/fontTable.xmlPK-!C;9y[docProps/core.xmlPK-!ctq]docProps/app.xmlPK-!uZ`docProps/custom.xmlPK>cpandoc-3.1.3/test/docx/sdt_in_footnote.native0000644000000000000000000000152307346545000017475 0ustar0000000000000000[Para [Str "Lorem",Space,Str "ipsum",Space,Str "dolor",Space,Str "sit",Space,Str "amet.",Note [Para [Str "Vgl.",Space,Emph [Str "Bitzios"],Space,Str "u.",Space,Str "a.:",Space,Str "Dissonance",Space,Str "in",Space,Str "the",Space,Str "food",Space,Str "traceability",Space,Str "regulatory",Space,Str "environment",Space,Str "and",Space,Str "food",Space,Str "fraud,",Space,Str "in:",Space,Str "Dries",Space,Str "u.",Space,Str "a.",Space,Str "(Hrsg.):",Space,Str "It\8217s",Space,Str "a",Space,Str "jungle",Space,Str "out",Space,Str "there",Space,Str "-",Space,Str "the",Space,Str "strange",Space,Str "animals",Space,Str "of",Space,Str "economic",Space,Str "organization",Space,Str "in",Space,Str "agri-food",Space,Str "value",Space,Str "chains,",Space,Str "Wageningen",Space,Str "im",Space,Str "Druck,",Space,Str "hier",Space,Str "S.\160\&100-105."]]]] pandoc-3.1.3/test/docx/special_punctuation.docx0000644000000000000000000002033007346545000020015 0ustar0000000000000000PKMDG ]$[Content_Types].xmlN0E|E-Jܲ@5*Q>u&_g*h̽WL; 8t˜}_6-n&󽇘P9[!GΣ\1s,U*@z KKw="XL`*֘sK,yjj ﵒ̛*?:@Ǟɍ-?hM6=q|=XSAD7aHo](HĬ*%trmh$}pb$=_$vm0EZ$lFfس"Xh;^ #'I%)x?\w>ղ6kƮ5 ʞ~kdIwPKMDG? _rels/.relsJA >Ő{7*"^ЛH}0!#ZGr;R|̛ GcVw5R&=t0[b'T9֟!I O1}qѶ(?0u 7}|; |sGFJT2kT,qKG"\-\2a%h%zj A| x-e}ܵʺDh؄ʵ @\R R޸(.`ǥ%dzWxoW0N~}*< Իm4M1g%(A9,&kweoKh({'_TϢO` J=_}O}}PKMDGz0word/_rels/document.xml.relsӻN0N(邐NrrE)зE8E ,ٲ7o5Ot~4Z@P7u/z}my$)Lh= k0g}3>3uH:㔤0t==U[v@yɪ4|1A?>]۵ܮ-UH0 x2~&"$1n!d _XfG"N-錦JΎ k`?9._!mh6Wq g PKMDG4o}word/_rels/footnotes.xml.relsMA! Et]c0z+B(1_.{^y3n88L /$~ݟa]v7Cјш: șt*eWi-`%x .?PKMDG4hword/numbering.xmlŕn0 {(5|UU4M;tB"%vo?&.\0v%^/Rp`UR3ns ~էAWۉ` ~W&7]KPKMDGY.word/styles.xmlZ]s:}LI2~Cga P%_I䣿dF6|Ӵ=kh%y. a_yB}z2zsߞxs{&}T񾻐2>kX)`3#$-6_2a*[;iq" CvKo1g>Ea_u_80 ghJ,ƿԖѴQ)3$|B&@݈P .  9YaE|!s U[Nwj4DtnPL_^ 7AuTw9T5_ `8*F-I/J.vwj%f{B}:ᦨnTtJ%d}| 1v\u+x\^%Y}]LQ}qY) vjiXG=z@Úh^g> tCvq@ [@/B/XƝrVP^3^xJbʉ«ה(FI 3>Ix8e_aiZ w-#%K\훣&{-Ӗh.@+)ONۙ$biXX?оz^';T0 q~Dů[n!įj=LJ''N4nPM0*8iߵǭ,{|}6Trlۮ)k;e}uT+&TC(_1Ncߝt:1. ۽=l IC*м>;Na{Wj<\ޯ qԯk)azKvZ)$xl jv뎨/,D";{M= wM9}ó-gHqh2n0̳*\=8/WMc>a)r4U+,V'ie괎h߫A&lPcڅyS/LI/DxF?5O^$(ΐCHw=ioPdO(dH(gƴ16 %Cyr,RiM: Ge~- =D<_aj!xDc{/>?7qr-5%I^IIIfAerŻ̀CB0a{A(V&la9o lX܋44DU^Jǭz_b S}{i54P?֛!S/ﯿ=/PKMDGudocProps/core.xmlmMK@ 26 "< u2Ѯޱj+$twdUSժ X?鮼Ub`zR*O-^Eb HN*>QIG _2F4*O D$h6V]$Hg#E7\s+8s5_/h~/嫥IGRCg+ leIK; PKMDGdNFddocProps/app.xmlRN0+܉Kyr]!)-{X8enӆ 8fm1Vq5/ pkUo.˵l (piUv9%cIuT!i|e67Qp[.|~#ӠhX_Sݗπ~bVG gCEئ4jE#mξPq麓}Mq񂳡"*!K$9>M5mCodÆ%3>&.9W8B<.Jq׋&HWQ2$V>RĶ>(`:PoOKgikӃ8GV5~1y88k ~E&@=T̰'PKMDG= word/theme/theme1.xmlYMo6Wl+u:E֦ CDKl(Q $ qaݰ ð@ l_EeSۊ5GKҾ|8"1iܵ أ>u{4бl~pnEHt7` H6l{r4A|7,BY` I)ƚA[ Z&!0JEZs"?b }Oi 8?>}!$]K ȅ|ѵe`QCֈC7' ,Lg^]jhf?pJ =Oz,Î+jqYz6 MCk*UKNcլ%]U nIX[" / ,̖)*0JPl2ޣl(*PY&Г>$x̰7^s_K1Q)1/prO<8v ƁN{=!pۏ5H#?47أQA3RF!:e+8aJ2"o &`Uy`D^ޫ&0 w(%=̎]WXLF?= LY(Df(FB&]+NAbs`Fx,̬k8 mDhQbTPL 1 Eͫp*`dFDހ"4?c^%\ȤP0F-6|] ! e7 :tC%fqXv0Ak&˄>w0g\q%}3e^_ծ#٭[hײ;>;֨d,kc=r2=yN]%oɯX+7Z jOLȾtͥPN"'$s}`zCH=R\vABIXK՜[&%g5FURk]z]uN\Qs_b*Z37{ ?~.a)*>2k>:SvX7cm//.WGkMLDcH<(qDKsrn% b0W*qBmތa/fM&530G?c2e{PZΪ\2oX]2Y&_>$!˾W@WυjgN_ZoKZt Jn Ne"%!L2ikC,~ ^=e!ChW䞞"͙w|yS̓"2JZ E[cMkl ˇ9wRU,b[auXe_6knȋH?d##vDd KB'_XZKeSGN]Rx.(<]CSm//X[OUt|O*ߖW)fx"G.|S6&G#Hf5u;3 .jtkg]wkK}5p?ӳPKMDGҟVword/settings.xmlUMo0WD9/%|Z-PCBMwǙG!KN NjhO'f2[u 2fz꾿-[{w3 :Sw@ [Q%LLJ$aT1& Rt+3HKV'BҝԴ7l+`yz2m͆&_^pw+KWk+ n dM5yN3QF/!p E Sw߸]r "Ã6 25".@΀㋠VkE BNIay,pɸ{W<_4oC}t qFjGFٱ"9X$ 3BkoPo™89ԹPƦBA7o)KQJry\Lita` _1jv * 8źڽJit<gwG~1b/hp~vGC3iϟ 0*m128wyT$>BXj"w i%K'oY+𚜺dl1 wQ˚\l"6ߠmAgR!1#\ ɲӸFEa‰ bM\uOqCh].jkF\b[_c jlhamhh[r,Dr.sj԰ BxQm5ϙ6!d(FV/}PKMDGTΜword/webSettings.xml];0DrOl(M"L$loBAA9FS6/ ,Js-GJo$:+bG)1!VJ)-R4 @`M'a:h}T LqkwWa gsZ^;PKMDG ]$[Content_Types].xmlPKMDG? _rels/.relsPK-DGH"4word/document.xmlUTVux PKMDGz0word/_rels/document.xml.relsPKMDG4o}Gword/_rels/footnotes.xml.relsPKMDG4hword/numbering.xmlPKMDGY.word/styles.xmlPKMDG(*bsy word/footnotes.xmlPKMDGudocProps/core.xmlPKMDGdNFddocProps/app.xmlPKMDG= word/theme/theme1.xmlPKMDG{H: kword/fontTable.xmlPKMDGҟV6word/settings.xmlPKMDGTΜPword/webSettings.xmlPKpandoc-3.1.3/test/docx/special_punctuation.native0000644000000000000000000000017607346545000020354 0ustar0000000000000000[Para [Str "Soft",Space,Str "hyphen:",Space,Str "[\173]"] ,Para [Str "Non-breaking",Space,Str "hyphen:",Space,Str "[\8209]"]] pandoc-3.1.3/test/docx/table_captions_no_field.docx0000644000000000000000000011704207346545000020601 0ustar0000000000000000PK!JLʬ: [Content_Types].xml (̖Mk@`P@ݑd>,Jp"B.ifhvkMw,'nQLJo,K(;(~4yHUT%b<%XrQ ۸A'~5_sVl:X!`˾7WDFKk^Z*뜴!]Pm=&jLD%,e񍏊+/W*epJ-D/!%5yB=!JkFC< G2\}/{3ҭ"N"@:?AoT0@܋()GqIBS1앏9!JB GhOZ-KʬߧU(5:G>Z Կz7SL9|PK!U~ _rels/.rels (MK1!̽;*"^DMdC2(.Ե3y3C֛+4xW(A yX܂JBWpb#InJ*Eb=[JM%a B,o0f@=a noA;N<v"eӨbR1REF7ZnhYȐjy#1'<犦7 9m.3󭄓YPK!RHword/_rels/document.xml.rels (Ko0@@.U\[*j`yFҖ_+x7oOP"&D.FT1yKoR@Ld\_m_ehg\I=R8Ӿ@'TUE; h$9ELԾ0ӡseY69<ɼ + Ɩ 0& 7Y{m*mFsFdTlaY 2s+5KX8-,ra8MSL%y|3$Y\R(ea}nm4n!O"4BУVPK!ew!word/document.xmlZ[oH~_i w8Dڕ&>mT`Ѐ~pC`JmE\ǹ|0,l1-$tHG$NLv&eqϤ\J/|7Ip^M"/"I*\FkYDdYE$rDX˪TPᲄ|R Cia:0 vH eL> !㐞0qHZԣS'8)pKB&]YHm\UrIImF "dZ|2%g$Ʃ7(d&mh>?Lob-)N$/Ifx6  ,m 40]+Ope8DY*4?ah r͞s=3 ~are(IF#pαh`{@O0=ʇlϢb:~dSthЮ"cہjd:ena)W.G]!/w$~`Fi cijz ^(5%pͅ)l3IQ4뚲Ni(N/MZg-vwZ7,90Xa0%n ۑd&A٥9ٍ]y"gE; KLXxr˼99ٺ k0١p-S8)XD :1p3%(='4V,n/sj^vuXY^>B CbϜl75CG|xT|^CY ,\c7^c47lo0!|+6\7Ձwમ.x=gyY |RU[mg>wl| ~^uNKeTl]yL 1CUܡYy[n`9j{ʹÑA矗8d:֦9e9;6pɽ@.PU׭મn7vcylZ}T~]Vk vmvص`?[ ϟ%!^sx(PNړ:6w$bW ;uREkFD(!wq?PK!J~G word/footnotes.xml[o0'; SCȅ&ڴS_>k*vBw%d%x0po\ C=q||hV;XgVsT2 EaMK̶{~8XhV ]sTAV~6 "eb[׏gOA:+K[-tx>Y)wbPK!ճd? word/endnotes.xml[o ';Xc5%2U(& H|YUϏ1wGy4|xcR]_?F1AA}۞22J >5( 6CNd tY9?C K-j>^eb bj mg>9]NNkl^-Sn ~},t)cZ{ʳʆ;faKvi (6NP6l.t-e|zPh2Z@x) Cή8ߘ& U)eWFe;\`Md}up<kxN˅%- I_TS 1x㋧ɽ''~9+8 TϿWn,~ Te೯ѳo>2Oc"urx 9x=~ib' %Nq*'ѱpmb{^߱>XQj[=Y MWI.eG.ٝv)4-mhD,5$! =>"AvR˯{\B)jctIl]1eRmfjsbKl$Tf.Yn NqkXE.%'·.D:$n@tKݫz3{lHȅ9/#w8uLH E1ʩ+D!8Y[X~umߤ,AXJp'la^1M^ָΝI8 ٷݝl;r|^o.w]F:G[*Ѕ҈=# BPZ%/ZWr4[SPpbQ4DBS d_vY-ye>S+9 Guk=MI=ϝ1u',m^x0ѯ*Kөڬc-7W~զpMA 7>oD eK1 @l1Yec,9g ]rqo|dGWWKRȘ?Y|pdh̔4p)L>DCPK!%%?word/settings.xml}n]ɑGV^#3ymn3GQ(8Jﳒ"KuYcw6`S{wȈȸeo7/~8N߼1/_o/NW}^/񛗟/wӛ~vsswo^p9twt9<^{uq;<\z#/s훧G8O-oN_]_/Ǜ_nO!?g>YW|;Χ=&yW__~ۭy#ܯ ?mOx;˿9sm0?yo{D|盯_tW· z7t>p0/0W/GOw俜N7/>;/1|ۇ|sw~T ^w =:{pÏ~8{3O O竿noc㏯p|{Bi}~x~|x8^W>=t3O_?n GO>WO<^xϯ>=}Qv>73><Ǔo7`oOW=r|& vf /z{OG6~@`ym]_}{u> ^v\A^OC?Ao?}{3(0h.7Hُ?5˗n+XyB>/W1=Gbk#R廒GmC=?_#ʨmN'8")OK99g%E;8xs|^42f 'Xg.pHr%(ʨE sY2<u4MhZr~ bķrD4S=G0?\NŕG =IHrg[Qg.GoZSL{ 8׵xN +p-2"-.>?u#>j \To-[ԩ!)1U5ȟ֌Y\46u34S A3k.N. -E5X.Y- ù Htk2j^Wp`> : qXd(E u, SY:@2r0\Sq>Y$`\8u&͘9sLVyON\/ &#X^ o4.<-IcoDXQDBuۂRX- (_R'ĥͦ5F]"=nې  ^lX½)(X)'GFs|tA˩0U|LϜNJ-%n ;j\vF7N(mܫ GH ;Fx,=1V.?1NvOmgN4=l a(%.rDLTi|l83)BSS'f?\2<>꼵Ĭ nrkff3#pW |fnuK}q­4[h=,԰9 &uM97۬K%ۢmj㈍ [xG$aG*0R6mW,骢fp/u{m;)S2sY>q;W]TNq[0w5} (*H~3xHLJܶtoDY׸uXL prZYA:;pBzHTJK xGM21 kr~ 8W7u!XG bZsbG㘜CdC4>0hl. ]6Hn*e*#Hʊ,$I& iKHU7>2yl%(' 9riST\qEyZHV !NA4i,>xe g]8pHsr)!*pWi>j B}>bE3SFn+xskЋ7ۈ‰׉)QO.q8 } 哸%8D@:}U᪌ɡ+<^>9 [b YS@~xFGaNkOI[O@SMVhP|4Z sNl&p/թplKn&{9@r֐,|#13+A_U@|HV:y؉<{ D!;~$t)q wgVrAYWF 0uxs&}OF`L>{. ɜ:%Tݱ9~ 6v? 6>@֤s kTY냓}โř9lkX M`nKVx.4`kWӕtCxJF<_`62* F {4S< QxdHFx)Gw \g"Cr}dzHX4( R$į j!{MJ2=zvސTr ?x[(ԡjBj-sZ\£FWt ,4yk+BsG,^p \tiP|[<5<e7BxU)Z6 Gi=xsS@g $ CnuaX4^#w+ 糀3ud 0wّ  ze-E+>,bR]nCX)zghk߳DYK vji!5i1s  R)ݢuЙXNy H^nu߳K|@EuTxHX(mA>Od Ic(q`|1x_ x!*9(u9Njչi1E=J Kb8 d2iL`~O6H19fZ?Ή''ýXl18f Ʋ#V GAcSeȭXU^ dhD?ǿH@!|FG|1+VgN󀱛i9w !s|< Y(U@:gDSauT&{q$=8qLXyJ.g2VY5w|'ƸR6縆ҸWH^4yt_v$IywJQً dyH }bVX8=Po\'ʎES"`JzG\4B79ĿjdDerR<q>?*Y }t GaRy:JyL$HHU [`nrE0hk鼦qo{!W7`>q?XX+)CKdecOo?E6X3J>26y|'P>*D S-}*<W+\\#i|qؼ;WP !*H 9}mZ"1cPjs[@w`sv#|wTx``A% x8KIqreqqE7f8|? <W!߁mYzn+,UY1rN,; GrqS< dnSwOQrHo,'%y$xG; SYg&Q oR͗ Cyqnr67߸5[X<nf*֭SV"m<}7L-3FdCG $xH>%S='Np̤dIvYXH^Vx_j Ee7t{yaѢ_ZU@ ijA]ńwr(&*Z@Yr;R\i\_xf@W <.%sSw6APm DS{z cv|ҡ)S" RcvesFe$%wX@g:G#ʔXBKZV0~b9T!ǣ_z<6^ Gq5*lX= 6ڨ8s VӺxܥ1SA+GsXIοt71_:~H+mвiwP8_ U+lm*_F*Vx7*>rS%7ܲҹ?WwA9?=2"tj7>PN~(I!H Vs0C4] ^Y<\~v*t{T}9$ۭ9j|cUGV4Q*bY<Yro(5 ڀ4[5T5:M Wֶ l9⊢$xU6ڝWh]V49vo-D9H5Lu3@&֪*vppJ]> ɺ]e?Fbx:}yvθɚ3Jif]&+Y>XnzBy& X( @bVW|F nY>?xUDfXNhTeu@eA-t}ܡ4nQrsq;hxegCgQ}v9'%%.ҕf7⺪yxεdV^ &{BJ S װmUhC&&3|w!!C]$q= dxϣE@Zr-yi4|KGji;R$sl۽vt8b=mr) ʙ-G;gEZNJt#Vɽ┽/q8OADnd^{X5{^eNLaKkJt ֹwl Y|}3 J2:nu:װQnS{N^_}ݥmX [{.S דC5m>Tt#?aJr/eG/&soy]c=DxQ i8Mn_dE$R0xKTV.u dOߍJpb{+@$=XZp} 㵠*(ʀ(g-*zY@"<^Ӌ7j絺1WKu)HVٻ(RVZN W8y3{Aܛ<[P&;}[ԗ mDBXfxFHwz}̻V^ ]XZu>> ǯ;x}J>7}ɣ}Y/Tu ^HRlZ.{*c0+,ɣyY-ҡ37v'@elt2ydnk zot^$6X °Q{k Kpv<_Lށnx \ _Bj<r9#ÇWkbxY.rFLCg'>:^0RT}#%y's"|/^{O9& /5%1rRQߌՉv1|^/+G,g⋲u%8 W4_Jld;`9S䧤cڤj3@#dT״9إu$$>'5 D `BX+>hNQNAwtӹ3HὟGwIPV*rM',ED^9zRjTž*={V( M|м|՘VDxxLo6XhX Ԅ= Sg\㧉Wu6wʈ6DK{}G`(%x:v{g*巹Vs[߀D^ DL3/3=gzQt+1d8t8{ gG,^M-HRq|nN @Zso#)7wn] iH@:y3p}·gn\^ߍǿ=ܧ_Yۇϧw_On/_?†/%7onxu|㻷wΟ}ΏtJOo>o><~L/_y?K.yy8zĒ);><}uy8w߹'=b v鏯?__k|-~&d_x??]_>/ե/Dp;b/..wW7?cWׇϧ?~qycþ|t<ǿ2ǻp:?c5xa +ڳG8~Iq5K~͘BUqjm^}ݮ$LJpPK!YO(customXml/itemProps4.xml $( dj0Dݖb'Ql\ki!W!c5Z9{ezJ{Zf7luSrO]6` 8qךPPW:Cvj z8I\8];ʶlž,Nm+̅L Ox.fIDC5C*pU!J8 FCzυsD؉5kW^oQ iFaFoBZo*'4?PK!+ &word/numbering.xml]nH_i!Ӧ'cXhf^$Vtj57> [?`ܩvC):u8|dueLmrn>L9Ι\mQz4ƛ_ӧ6хWHF~Y/n&z:,$|HBYJ<'⺗58]ڦ9M1៬hvĈ`ecϢ' · AS9k92C呮Qȡ,߀Gc|"`яkRhlgO7i~>MB/pڙ%7:cFsSfytB=B| +!^`vͣjOȀBBTǻ,/,%` q̀32gvS>|y3>d*c3g|b~hz ij>>mY2v7C>_s?.~Kećo&N(统0K|2^GHݥ)PQ# #18WKoѰ5+s+L}JzMY%QڬѤQ|xlWI־J9B%Tb=By:*! T'3:L`9=BPï}0-s2s21,I.27 3a8sJ(ʁgnp#}Zy͈-D__lEz|$}v$." =8%~sx*?чǠxAQcA'17Te; jU]]dUeNWe:{ULU#ar*ɽh ܫq.rxRrNܫF7O^ ?@-g.d@N[C6Rt OMm ;' mGdTJ1tJq;'ϼR̨!D\BH oTxDCzBb )BJ~;K!K!ū!K !%kvHOtʷe6h]ͼ"k3ؾQrv5=ZT[]w]Tzvu=ZW]w=EwG4:]wjUvMTZT]wp\']s?]g PߥUBD;N:?N.;N>;N:?N*?N>;N>0Nv4n`@A3'\t#`gޕ 2,nQx*\{HB{J٫I}KS_'>WoVB}@נѷm{ c,|^LyfږtsB˜=_g^8B.0P7n}H HzCAYF`j(!C)߇B =*o3drPsf HxCAYYH+O)-["%r ݭ?P ;*h wV ST|jмp<wIAs:CJY:CC yBKV9B%TCbj@BKڅ]=qFwKڅ܅$ۅ.i^&]x %ik御g:tp_Ul }QS8XX֗e eԒ9侪bb3羡;7|};5YZ>Q'N1*De>Q'd^e}">Q'ǯBfa=#|{޸@V 'h:u ́g 's '/lێ+iۡ/+c-:F( C@[T8v;򖨽nЇN;}*LBLr<PMQ!ljӷAMQRZ&q";| }oв|['[ 6V;pJ9DR%wTN JR38*ygpHU rBB<-G$3\'j V&XS*օ$]둍U5TQzd;GqN*B_qo2C$ pt=fE9̭z4!J!ZA|:Hв4Pԃ+Dq7D||16tGW@G2tu@$8]H;6i|Zi*;w,HiHł"]1OVtj j͝id*Z|"~eNB&)EN@ tEFEN r.gVuLt 3 ÎHk9] *}u**ݗë ڭT*-–U mP;K#FÔ\Yk7E4d4:҅-`{fC9F3ьKZR~n{b ХKXVC 0̥FilǰlȰ2ؐa3heۀa5݆[cú9Zx[GӺɜPK!Nword/styles.xml]ms8~UXtWWvj3[$';3{wu5E EjI*Hl$@HQDOw (I8z}2axȋ zz}vp~⤙nG JO_ϯ%D{}β[oQ Wqq33y:ݸɧvś p8?0Ix m`0s}8z8'3aAr9җ yS'2H#١O,-#6X?݅YJ~&Q:ϯ G,9oQ" \_#krfNNC?qg7|}2Wk=P4 #\Zb'n2xXo胷縫 aw@@Àxl#jwwYB)P:R,tRz{'YǷ Npxx}rq/>M&} 7FGQ1E~y["  7_<%F.Tݻ|8lę_#DMgTkAITx[Y{UzQ w"ǭAC=hvQ?ăC=AA/:8MNWkQ86—qmk(XGa8Y쩬P0ڛqVI0mopn{|7mf =X㲞YUgQ!'C_Ƣ;lnߞJs Ԛa-=lRX!-Hާ(e}ta|{Y3[ە1lk7 hT;wއnl t(<޽s-C^Yoa -Î %G/vai]Zp3+*;zYnA{ p'C͖9,-t(ޯn#[NhLWLw?׿ͺБϻPҞ.m׿@_ /[8[/{i(Xlng}~/d )0К pRoL,0ųMYx?%o f f f f+xxky.fά6f}0[vFleg̖MZN&Fes&f'nb &DOS>WdGG5 uhlZZ`ٔq4fК0좵[u(Q.Η.TNu<f>l'j|ooUC~½IԢ+˞DcMy{Ͳ\yֱ&|yǚO+5M>I ~Oa|gMVTT>ɐ2yuHNj~hrs@ZvIW?nB;ѝ"/Wfz;NQ)ΤLV%ʨ9ܨ!:5DյBslRCtRjh[hE+X$ZAhգPCh;*v=5F QBh;*vTsTX_Qa}G(& QBh;*vTBQ F QBh;*vT_ᨰ& QLh;*vTBQ!B-GՍh;*vTtBz 8*D1qTBQ!BmGڎ !T7rTBQ! 9*oQ!BmGڎ !Bh;*rTPQ!BmGMɧ(UG"Tm>LnQI9\5Vqɑn;H H+&E\Bk >"zO0tO#(&kndbMǜ6Z&hM!za7>rSP*՛bP)" P*) g ڳzIB9 gj&\:FW]S#tQŧFX56j(3Rmj]!ƜjeL52F]!.Y`D51BS ̨M.AjKuY cN52BQ ;wTC]!.jcN52BQ rbm!.Aj`D51BS c&u„z PQ/8  %a$ fKslI$MЕ=5BWZ|*aUCi32Z/[Qmj]%%zR#zR#zْjlIF^$<8˖˖˖TeK2%zْ ƜjljlIM^$Z/[Q-ɨ˖TeKTeKTeKj%zْjlIF^Z/[jZ/[jZ/[U |zظI|.r*y=Zߟa4paێϾo&Rse*5ȤNRm{óݥ:K8kz^8McAsƥ:/ңĤ%^ /SDf,|rzcU|KFaT-ty <%ʱtLo,Jʯ珹Z +->;h2 =~>F~\La#Ѧ cx~O>d%$`'͹HN/ϗ#w^-ٟW J ab!y(eR?_M677j<ҷ^Ɛj 4=ߗLl1It6"9NPO Q1TiucS0]^|xdaZA$_yV25uGy#<=]^( D;-i ڷ-;V7`ueňKlb:3hd*4n/ho_fHe]Z0 pʅu}3l`NqNSHDx*1 '33TbVY_ V$4,* QW["Z >4L'r6~α2[?Fy$ _0sV}kVċqhH?W+_+'tL pZlvT_˭!Bum}5ц]UCrU9eXY0$-U}i91JKU -1{|j<6d E6VMLKrUDM,œގ$_'s5C, U14 K~~Y'^%~lb%]"H.IԦ%CUr/&I5}q:m#LxXݳ=Zr1dMrc̯nTAT5tHIi:t%ipx|Dʻ,*&FKܲ䧚8C9zΊ:q*z-xot.)XKzKx"$$fUrBl׉1ŀ !':A3pxP׼waΡR|Q_[.'s\w 9U59E+USyuByEraǵȀz9̲ͽ's5ק$$d|Eݹ!?_ѥG|᝺6]wHMm_MO.)3?O2J|<1u60:Fx`㴮_m=l2]&%zA\ "PRH9Rē'ѤJ o$Em9x`aa17Wn s=җƖ%_*2b1\oV#7\x]rB]eY;㊥y'zz5 P:ހQ~v].a29A:+Q@$G:&1%{:c}@|:!~3FqC "bcbW?!WW;`KE2vĕa i4LpAwnQse!e(a t|٧~#Ќ6lF1WWUvBTW2܄t%eRuI#J ńA5UAago뱳 +K1v{zsv}U& ,&2C:+ďyb5 ܋Hiݿ61eQ wZw~Nϩ#}V>Ri>pwNw''0o>rp2%RΤ/|?Los))i!d_K'ʼnK'k˟ǎ&Ԃ.Oji[lŁ4d߶b-x :lo~sf̵&_t  t(viI)H )o#n\┝}g!X*}6YPhK$y,;%;mOX3c6OV1?Hzvfw\ #-:OZMiGMzצOWylF5Vywu~|ocYwmt { 򫍌|X_Y ֱ-yn !xl 6)0Ty{lRv^΃(b%aUQJz\&AFK4M{W%h׉,*YT(b/޿|Ϯ ~~{wρ׻m^}FIҋ*&:~8mC+J|7cڵX Rkz:5bnIwm1ˀieז:<=U^aL|B'OE Y*EWotJ89#CAv\87q_9[K΃V ; wO?;~=7rpoJ}y?g̓=pBr@xxk8wvv[8]3uGZ|DIWmsk8m HV4zPkHj酢cЭ$Y(gw+0&l۷VY s\5!sFeєN~)Ch=mjI$hTHo`}a:=hT 2]wطԨO<ڙG.KĻȧf)tGc7~wg4MO;&i7.x]8]Ot6ut5]tî]۪RO88I#p~޲(> M@K][V0|垽{Kƭ٬HT*9A|UiUW/Iq Zc^M&,EؚQ8:gN~w=v!oaJ#2nf|T.*z!r ߲?Wav'ޝ_7vb3/ \Z][Ү&ḙKT-䳻ek e~fbWjD7]ҵ3(RڂeKWóKOO:]^ً@5u7XYSWƿ^ot\E\\ 9[ qd" 9'^l@[]p&Y>l;}lx9Z49/Mfr~hL2jqǥriYّ ̦i:S86&S ~P\R;+:aL(/KFpdZKԒ{E~gϸ#àF°X~DbY&/-8"AWŤ#5TJHT<$&cV,`I=*~,r.P~ HN EP:Y7m n̷9۳_fޞ)AVG*xB%ߕL4z,omTEfR2"Y/?ęt\(?n~f+4bqpP*DM Q,bV )J?PK!b#(customXml/item4.xml $( l=0 ᫠2RS/BF(6?=)c#>P 8)Vl^4G94j\7oPK!]Rword/webSettings.xml][~0eOjH+{de} &`*ngZUv6O.QXlr?~g٪,\Y.{}{v~_(R6W㫫b==nn˫l7̻l|\-o0%l?EJr^/6WŪH6W˛ݝOvmo|ە߳^g[1 Z/n׽?*?fr9zN'ůAUyr=9w3牐ؽYh=n;{* G拃r|iyj׋=,wo?|lU?[/wg۳_|u'u}6]ok6E.˛o|1ϻUW4dzEyW>pG]Ϲݏ>>dCIP2{15Gë!%ȅ'zNzTb1s?'89gs瀹×ٳQJٛ`(^%hHF(qB )h:@bc?"YDٝf+|I $z,ksW@KޗRQ?uj{gutІ*,`I% :"Dd "T(yT#:ɳІkhCQwtH%{QE 7Or2-n@s$LiCg0 F1/ C`ip,AGm:!ӱ@tԦ) QP h"6.3 T~諳LNdR<)ρ$(%Jv,ۆ#$LRV1Q~A'C@#Ҕ, #?NxsBpNVKI Qrq@d X讑Q?-HTAr|2Bd}R3° ,£:™(U8S-DP#J!5d%Yj?2* S✓/iɗ(D:3ifIQB0apXKY\ k6B,dbDG my"HC}1J%U9UW-UG$v(y)@2?s\]úМݪ>kVKas*6ݯ>`r_}wvzi?vՠXDQe3iʊ'ϴOH0Яju=LO ڪJ%8^aψQy+QPQ,:$$1Y@jWV:CCuТIs4ͯ1bֿ^;GD}EՕk MhL'ЯH8U O;~)og'LOݬb)(Ex眽X {<4QЕ(2gѦ:_|tA`uQEGlt7#LC!hO)c{C;ÍEd>9ӵc)b[BEBl1 >"H&vmv%tA0N.N2ݦAGm:<'C- Ŝb?! a'c[#Hɯ>pIh E_8[>]| E%̧ۡ_5rдBb6AGm:_?;NNuMf1׻U묪o_ciD{tܥj1 D&9沵RTJ54 >jQ^GV&C[6dyh|R v]|0&ŘFY8V%YSmC:4fHjG|HJ.G|8 [Oq8:(P=;@l66)0ź="ap#~H2ӯw|sdn4l/aT#mkULXU0Ef@JD‡J5nG#|G|* DfDow1 >sFH)U#|)%q8:pDd O~o3F9Ǣ2C+݆%L1ڋnٶ-ǿXnZunZPK!W%R(customXml/item2.xml $( A E" B@RnFhn_)'ޠL{1XĀ)8Ǽ]^9 6+ =rG@5]ʸϦYVHzdϠ>Eew|eQMb7PK!xn~(customXml/itemProps3.xml $( Ak0 {j'ִ4)$i168rc`+c0笻t;$ݎ`Е,[ Sw.s, $]/GtP2P%@D`0ڒ}dQܵuncM,/N䢾_g[l?Y]Ą Dӎ2p?s(hQ\ho_Ȫ%e tKٛ?.(5 :>œ?i$ }'AGo2WﭾPK!d{VU(customXml/itemProps2.xml $( j0C{6V"q {--Q&$.-HOcO73C&WPHw i)>|FR0NCc:y RP^: _>|ZP*r|n[VV,*PTxSBXx1I.`!%dgŪ d$kw=C~--Wu_O MM6{EPK!C"(customXml/item3.xml $( ?k@ bni-v tg}R.7v>?oҼQ$^_g"P2A$).&Aҟ"X*9͕Yz}2bJóV%h+x$Mm-# BAM JԺVopIَnp SKq ˞Hzdy CHk0 h-L~( aO%)톽hD/*ƍ'}/dƜEV_JW0~W3 *.݂F֍wpkrj]Z'Ώ0\_zSA/ 4q{. pDƝL0/lDB2rN0|7PK!YCdocProps/app.xml (Sn0 ?7N!EEa[ iϜL'dI׏vO|H۷xT贯.ŦzE"p5Xp)ĭA>G0TKK# Lz- g[ q[1޷証N%0^qqKu dm@vR{je92-$aIdǚ1}$W;oPod9.k4_ft7T=QYET+acR:'r^wh9  }[鬷*$XCcwDZg]hO{!S!9d<"Kq/Bi!lNUV|/c([pT/&YYp$R4eu/Ns4ʍ0beB<ē~e{' :Zg %V{NMF視=a #i2!8#:bf$߮?z2PK!`ٺh1(customXml/item1.xml $( [َ6}/g[%SdI4wy (DEf^j_,kӢCF]L^=ܝ0:a' 6[].Wz_m6󥾸V~9_WdjO`z< DBK$31dZbDaR[ҵ͂bZs^5¹|*JL}0O1sfYeK!#J!D zs!'^=6&8xq}EbعѢ6!J_jA6hX.96 6&Ѭ,`ofA2N1Sy]޸{[oxcv m9'}CV>_M8fEtc2䵶^T OP$dZ+cnY l1Kn>QS&"L"\ mry6yBȞi E.q!ۮenO'柔~ ROPC8;R2?ooI-n~>M/#!twaZDw?Hd#uDOq}O3s}& op~%Gѻ={.iwP-JIpes  m_BdSW7np)+FF]yJ|3;O= a բі&y"62lRX34l/c$ Evkw~J/T@ޑ$|Q`+o7iXDw V%N)t  zȅ%1;9qQKLc3StML]&װ]ll4~ɇBś^^,{sM?T,>*cQ +9=q{dbX\꧛TQ&ԬEg$RFpI.\ϑzQUӺ {`ZvJ(*5Bfsda' 8r1ɶnf };XIT tm [" duj 0#?jO]-O}8CaSW#/P )sBvuG\e@|,G|N?~|8mtWf-w̗O%g ɠb5jQӂTS,FY59"F9vKy/zcoBoE~a?˸6Uͱ{BR4]wkK̖`uJ&=J_J '   A|YR` 0"!ϳ@u 7 k zPi+ϻ@DD>ed:my#[03*WgvDι#Rd9O"a'}mʓ1V=\Yif_i)k ]8=SjhX:B 2%̲S+vC8? S渆<0tmx%# ڄ%krpKp,gg: o6J36RuyHߍV̑/zd%P|V+7HgflTbc>>5@7/3`f3 rhlF"#;rJPK!t?9z(customXml/_rels/item1.xml.rels (ϱ0 hoPK)t;JGILcXji߾+t(QE]1hjP >N~j.G{J D60o,W0H9X)ctl'_uݓ|P=;6w#w Ev d*yB1ߪ kPK!\'"(customXml/_rels/item2.xml.rels (0nS=,M,7.x dBf}{PK!{(customXml/_rels/item3.xml.rels (0nSYzYo"]iɄ(=?naVW)XU5(zG?~bcogh vќpRB<Ī( L"Kkv%2PVʘG#u]߀T@>+P=;6 wM0ʋ .,a>f*yD1jStPK! (customXml/_rels/item4.xml.rels (0nSEYzYo"]iɄ(=?naVW)XU5(zG?~bcogh vќpRB<Ī( L"Kkv%2PVʘG#u]߀T@>+P=;6 wM0ʋ .,a>f*yD1jStPK!Z # word/fontTable.xmlWr6wc (DvLc7,L @ 饗Gh.&oW$$c1. k"|d;ȶEDȾMR '#{C/ ex,$Y ;. Pƅ '(: _A( 'tNcl:.B]PbACr*”Ib@\-Jh]BF+)B aʷ0Wb4BEr32P0Az vAсe84*|dJP=b 1 7f[~Z9f0`FQ9Y[tXa.q5G6rQ?<;K,`YG'3/0JkV4 K'5)z !>Lqnq]1-ݭiKhp̣gɘ0rasуAZ} ą~=n 3%:wyG6~el8-(,l-;q"RI iF00ar&""ı7$jPƸ eQ ʱ7q8vaZc";BRS' \&&&0 * 'yRvfU9؊^R᚟~G8MG2EEV, Ģ+lVium'-E;eaAKGVCR%HJx/%|&L+:>rZqd>Ҋ><&_%7xN8/wSWv(qdJfrNdSZ5<\:޾֛?~{_MMCA& x',7hq{6Maۄ ̕uiO _ovmjmAA-YG:ep5y燢Ny~ #s+c:PK-!JLʬ: [Content_Types].xmlPK-!U~ _rels/.relsPK-!RHword/_rels/document.xml.relsPK-!ew! word/document.xmlPK-!J~G word/footnotes.xmlPK-!ճd? _word/endnotes.xmlPK-!0C) word/theme/theme1.xmlPK-!%%?Uword/settings.xmlPK-!YONAcustomXml/itemProps4.xmlPK-!+ &Bword/numbering.xmlPK-!NNOword/styles.xmlPK-!b#icustomXml/item4.xmlPK-!]Rjword/webSettings.xmlPK-!W%RscustomXml/item2.xmlPK-!xn~tcustomXml/itemProps3.xmlPK-!d{VUvcustomXml/itemProps2.xmlPK-!C"SwcustomXml/item3.xmlPK-!}ylxdocProps/core.xmlPK-!YC{docProps/app.xmlPK-!;~docProps/custom.xmlPK-!#S}customXml/itemProps1.xmlPK-!`ٺh1customXml/item1.xmlPK-!t?9z(customXml/_rels/item1.xml.relsPK-!\'"(customXml/_rels/item2.xml.relsPK-!{(customXml/_rels/item3.xml.relsPK-! (customXml/_rels/item4.xml.relsPK-!Z # Œword/fontTable.xmlPK pandoc-3.1.3/test/docx/table_captions_no_field.native0000644000000000000000000000222607346545000021127 0ustar0000000000000000[Para [Str "See",Space,Str "Table",Space,Str "5.1."] ,Para [Str "Table",Space,Str "5.1"] ,Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidth 0.7605739372523825) ,(AlignDefault,ColWidth 0.11971303137380876) ,(AlignDefault,ColWidth 0.11971303137380876)] (TableHead ("",[],[]) [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Count"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "%"]]]]) [(TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "First",Space,Str "option"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "242"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "45"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Second",Space,Str "option"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "99"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "18"]]]])] (TableFoot ("",[],[]) []) ,Header 2 ("section", [], []) []] pandoc-3.1.3/test/docx/table_captions_with_field.docx0000644000000000000000000012020307346545000021131 0ustar0000000000000000PK!JLʬ: [Content_Types].xml (̖Mk@`P@ݑd>,Jp"B.ifhvkMw,'nQLJo,K(;(~4yHUT%b<%XrQ ۸A'~5_sVl:X!`˾7WDFKk^Z*뜴!]Pm=&jLD%,e񍏊+/W*epJ-D/!%5yB=!JkFC< G2\}/{3ҭ"N"@:?AoT0@܋()GqIBS1앏9!JB GhOZ-KʬߧU(5:G>Z Կz7SL9|PK!U~ _rels/.rels (MK1!̽;*"^DMdC2(.Ե3y3C֛+4xW(A yX܂JBWpb#InJ*Eb=[JM%a B,o0f@=a noA;N<v"eӨbR1REF7ZnhYȐjy#1'<犦7 9m.3󭄓YPK!RHword/_rels/document.xml.rels (Ko0@@.U\[*j`yFҖ_+x7oOP"&D.FT1yKoR@Ld\_m_ehg\I=R8Ӿ@'TUE; h$9ELԾ0ӡseY69<ɼ + Ɩ 0& 7Y{m*mFsFdTlaY 2s+5KX8-,ra8MSL%y|3$Y\R(ea}nm4n!O"4BУVPK!k1word/document.xml[[6~"N0w;R/ɴ}T1IF@&3=@vwg ;68p$+q$$ 0Y^~3FB^܏HG/8p779 1N  |IѪ(x+Uɢ H<&Ed$" pC< 3)2V~V- ͱJ %TrHARC38<$$w:t')NpA/ -DZ}\810EA!qL8 dRWOxQ7qKF>p I sѠpU<SU6)i.ܓU#~8GDbu>"$ێRMC0JqP4 E=خ0 P+91tym:ݢnІJ7M2LO7v@" | _V`Y`t#g %$3x$\pUed(@BHmEeκhdu:*h֧V]r@Ґt@bVNF CLhL[de9YSD@c7X,̛8is=эг"; K @x ~h|}Eq@{o*}:4U nw9(p)H@WS+N]FȢ72ud~p$w+v]D.mB8fU jPUΊfG#Oi #/5W@Yݡ5(4!<}>~xW}/X}Pbg`Uyr2cT>ʾ?9,S<)Sn +nY/a"|>{jf>7 p/(9jH쮁5,i1 PŚ-,/ɦ4/SBDNTU_OՒSl1 u Oqt$|lPi{9rXPLD,Xt[^QL[2zWɐ){}pT H3})[)N%ʞXtz;F:[5 ]s(F[UVV XhQsӲ@I-ftb~Htr:)D(_n wg9VhEzUqzބ#˕dI68746 W4O22pIh-9gEtYrk{ u KlOX44Tf}:ܟD3Mn\ QU, :Nd۞/c:S^>\[[H4)ԃ4XW Ӗ馤SLbڧOOʡ9ɥ6عA{ɴ){Pْҳ!=dGT[~bd\yX}~ߠhY+tO{ W(YN:,v/% Yr6}E~C}vz=ݎI*2MSD0iP*◠ 9Oe,2wTLeI6_KeJlx!Ykz7r [eW&=Y?{޷= ejH՝MU7mD ,l2V]C"XX-g&0ѕk(s5˔X &b/Vfx=@dp}bǾlTA72I;KeP\:`i$J?i2V%kS6B{-Ui]b%'n wG'Eq/X?By,an!˟k BЍ2nalS+ضbWٱǂ\ ,sυ ZeI@7W;L]X+zjQ+qo7PK!wG word/footnotes.xml[o0';D~D@:eE!gBXê<8qcxv`'JS G8)9q06(hpi'k! h2Nr`kL xKwb%X;,5B0xJ` {AÇnT:;-RFp5dp=@60hQ1tZa/U".#mҸ)j&Htbp۹!c_2vr`J3j5QC:X^MC&REiMsS<''=)[_<c"rHfBpY_֐GAYVˠv[yz(v_?JÊ8ɣ?Ǭ0lr-@Iǂ_3&f:5jN*C :ֱb\:E$77%vhOMy V[R&eM 'O.zͬ"̞GXeuNbӅ{ڽ_~tW$\@p,ܝ12AHeX߰(l2BQ!TʞTPa/vk9 lSDvXzՐ[4GqAGW"dU@Q P#ݎ#].G 8R'HtbrŰjV{9&{̜E gu"j ,L&)ôW<'TPC\V妌)ZwlO8K]9ā{UpzY^){v"Z!Q G- HzЁa5ZN6h4jW,'Xފ9hzѡO,"X~Ub/;Z1SW {Uj#Ӗ _rP@>:>.=:9IpTbP.lM= Ď=1O[XYWJ?`Zӊn>7)p^NlӪA;Tڠe[ d|_x 8~W;FMTuqqE\VZPK!0C)word/theme/theme1.xmlYKoGWwŎ -Pqwf UpT*z(Ro=Tm@~T- zcTߏ/^3tDA}۞22J >5( 6CNd tY9?C K-j>^eb bj mg>9]NNkl^-Sn ~},t)cZ{ʳʆ;faKvi (6NP6l.t-e|zPh2Z@x) Cή8ߘ& U)eWFe;\`Md}up<kxN˅%- I_TS 1x㋧ɽ''~9+8 TϿWn,~ Te೯ѳo>2Oc"urx 9x=~ib' %Nq*'ѱpmb{^߱>XQj[=Y MWI.eG.ٝv)4-mhD,5$! =>"AvR˯{\B)jctIl]1eRmfjsbKl$Tf.Yn NqkXE.%'·.D:$n@tKݫz3{lHȅ9/#w8uLH E1ʩ+D!8Y[X~umߤ,AXJp'la^1M^ָΝI8 ٷݝl;r|^o.w]F:G[*Ѕ҈=# BPZ%/ZWr4[SPpbQ4DBS d_vY-ye>S+9 Guk=MI=ϝ1u',m^x0ѯ*Kөڬc-7W~զpMA 7>oD eK1 @l1Yec,9g ]rqo|dGWWKRȘ?Y|pdh̔4p)L>DCPK!k4=%word/settings.xml}n]ɑGV^#3ymn3GQ(8Jﳒ"KuYcw6`S{wȈȸeo7/~8N߼1/_o/NW}^/񛗟/wӛ~vsswo^p9twt9<^{uq;<\z#/s훧G8O-oN_]_/Ǜ_nO!?g>YW|;Χ=&yW__~ۭy#ܯ ?mOx;˿9sm0?yo{D|盯_tW· z7t>p0/0W/GOw俜N7/>;/1|ۇ|sw~T ^w =:{pÏ~8{3O O竿noc㏯p|{Bi}~x~|x8^W>=t3O_?n GO>WO<^xϯ>=}Qv>73><Ǔo7`oOW=r|& vf /z{OG6~@`ym]_}{u> ^v\A^OC?Ao?}{3(0h.7Hُ?5˗n+XyB>/W1=Gbk#R廒GmC=?_#ʨmN'8")OK99g%E;8xs|^42f 'Xg.pHr%(ʨE sY2<u4MhZr~ bķrD4S=G0?\NŕG =IHrg[Qg.GoZSL{ 8׵xN +p-2"-.>?u#>j \To-[ԩ!)1U5ȟ֌Y\46u34S A3k.N. -E5X.Y- ù Htk2j^Wp`> : qXd(E u, SY:@2r0\Sq>Y$`\8u&͘9sLVyON\/ &#X^ o4.<-IcoDXQDBuۂRX- (_R'ĥͦ5F]"=nې  ^lX½)(X)'GFs|tA˩0U|LϜNJ-%n ;j\vF7N(mܫ GH ;Fx,=1V.?1NvOmgN4=l a(%.rDLTi|l83)BSS'f?\2<>꼵Ĭ nrkff3#pW |fnuK}q­4[h=,԰9 &uM97۬K%ۢmj㈍ [xG$aG*0R6mW,骢fp/u{m;)S2sY>q;W]TNq[0w5} (*H~3xHLJܶtoDY׸uXL prZYA:;pBzHTJK xGM21 kr~ 8W7u!XG bZsbG㘜CdC4>0hl. ]6Hn*e*#Hʊ,$I& iKHU7>2yl%(' 9riST\qEyZHV !NA4i,>xe g]8pHsr)!*pWi>j B}>bE3SFn+xskЋ7ۈ‰׉)QO.q8 } 哸%8D@:}U᪌ɡ+<^>9 [b YS@~xFGaNkOI[O@SMVhP|4Z sNl&p/թplKn&{9@r֐,|#13+A_U@|H㰊_⇷ʜyÂyM ڗ#E-Njw)eL^ < ڸRSٗceG .% 7J ̩]B$S-`cls dM:S+ 8)ܛ . EXyF҄Ͼ`gIͽP 9)J%?]y E [0I׮hYmkVI bʑ'K8wWUdW@ytG'%[y2$X@&O-/EN +H&?-^Kפ$cߓl "9NE+xu-N*姈R*V@ߪi -j B@f5ue-i ݆̅,Yƨ>,4,ӠlyV>tkx}#ʺݝo=]tzSUn@9~g$ #^cXei)Q@im#ZׂXĊ9|S ]+ʿgĽAAk#ţq{BjbaRE\3("οgGh9gG^$s8:xV1:g]<&U& X6WOs|t=Q3у:|>8_i#$GWvcCUcryDHuQryF%d*(.)%X{,Jt3ON{ձfp(eG8"\I[Z%^шXEǽi3Ǒ( Cl7c\;Vĭ_&gc7r6)C,ty>8v<Q,eua)ψ(O&1o @48k]I棆H=؍ aO0UDMA-=A=1H:ym)B1glLϥb+H)RCR H% QI#폅qH(dZJʄTrX̔EG Eڻ{rK5YEST"[M]f= g!PA2~=2^K330UC8v38bC_3D SgZ#@"M睹sċB mBS(cǫ҄Gl& iƳ@&J+)} NnWRrmy&޹"xl<+#uKg1}~el2x%罎,e:{h.* .R@2N,Qvgoi|3هp'ʭS齽^_1N vQщ@ j G潠k(]рL?+Gy_Rc2 [;7SےϏ,DPYL+#k,Z&2 {8Hٱ |OyCs+:gZPeI<Η HyZ w@eףr$E:ߗdz.Fxƫ@ra.jV}t 1x H%ʭ\e2+s[p+ W4l7Sn2uyɍxAھuW*UX< DXq|h-6eʽZb'HV8tܟ V, kxԽPyƳ8*:D^Z.+&gnk#Yȫjw^AwY@ڽ =a b«U@)yuī*뮑Q=u]Jǂ:Cy:R$kҡT+m3uPgg`k ghb+4}^[]=VZ3{dg4Wf7`@gI{`?9bP׆QNi0ҹ_Ҹ= Dͅ@mGA|x4Zj J +J'@}cWZZëa(uO-"\I<&ԶϟVKc,yܲIl @:߫dj")q dOADnd{;{^3eN_Ma GG$+v9~{,K}(_ W}pyt Q:洑:۴NY<Ҧ<D9Mthj3li v>K9"KCR什(qC:,|i[CnqRd\NFں|݆uo2xd۔徽>}$Wk-_@w)s>FV rHP|Gh2Od廇z C9 CG^K$r0=qoP% -N7 @"Y ϤH?k>L]TnQ xXx^ !c<=>aZ/RїS*:V^ $)؊J|_bx$H =GYn J> c|0x<#>sa3{̍qP(ˁL0 Z*8ݬWφ A>0xm,m8kxHR2w|_9 w.:B7zcxV~xdai^.*?q}yH6T#)Wxg gGc3B<6` RU@:ϗ?@.;co]Q_טA& 6Q Y?+G WQ%C~Z!)6)sS@?"5iN3v&AA. )<0I@+e-b@6|m; 24S"@sGtn-Rx]R,} K.N' UlX J|HS44/ߟ5U:u#9)K8)*b9%;Vj<75pef)uE9~Xxu-\gz'iC{ggprO\3kwR~16(nN^;eHD@X>=6c~8}\~EN')[JH Q鲳pk}Fy3F= 퓁8)]9T.@ɧxv$ʑ ۟@ >wx;"Q9=)ipO|#|uBIj{ 3h+ωϴOlKel*ESJ<+2w*s|6D9rz~7sʿ''*'&̜St[db+*#f@n{9-Y+YȣR ?9YUhP瑅Yg3{`@Kh6'&Ryt$lwc?7Vd*ۃ=őaUoDE/gʉ=@Z9 j: g4Gi=Fx^W^3aTp/H9ށYR MYm˙55C+*r YY`QVZ<ӵ.~YF:LV^dJ]AR>p#V{BUkJmYYrNȿOܓR `vRY2\J<7!ūxǚE- ?zgy[>4n,b+hvެ+{VWQ ϹYk#<ETQu4g_VtJ]pxtZl8](? VJtI{*}Jx3kw(aq $F`(DG H9]c ʞk= _: ½MіIiBYdVv^TZG)Cytsy%VS/Xoܫ2N,a *+ϙwZ%5.ET)芶IFe{ؚ[ 秉r=ⱴZ8O)YY> xuWE=*{Vʫ+{>]09 6 Ry@ {@&<0+@[;`zeF}0CQgN9ufrP C^z_ÿZۇ7_臛wËoq}uvu;??E~| z9\_xd7Wwo>gz~|xp׏K͛ۇ?^<_]@o/#ӛǛ=SxKxWo^ëһ˫o^ί>~ʷLJ~v]?w s=p~5|'kZz->__5>|;nOקOu ?0˅˧ /~xszyϘE~~㻟?)y\h^G!X>.o?߼;]?o p>rPK!YO(customXml/itemProps4.xml $( dj0Dݖb'Ql\ki!W!c5Z9{ezJ{Zf7luSrO]6` 8qךPPW:Cvj z8I\8];ʶlž,Nm+̅L Ox.fIDC5C*pU!J8 FCzυsD؉5kW^oQ iFaFoBZo*'4?PK!+ &word/numbering.xml]nH_i!Ӧ'cXhf^$Vtj57> [?`ܩvC):u8|dueLmrn>L9Ι\mQz4ƛ_ӧ6хWHF~Y/n&z:,$|HBYJ<'⺗58]ڦ9M1៬hvĈ`ecϢ' · AS9k92C呮Qȡ,߀Gc|"`яkRhlgO7i~>MB/pڙ%7:cFsSfytB=B| +!^`vͣjOȀBBTǻ,/,%` q̀32gvS>|y3>d*c3g|b~hz ij>>mY2v7C>_s?.~Kećo&N(统0K|2^GHݥ)PQ# #18WKoѰ5+s+L}JzMY%QڬѤQ|xlWI־J9B%Tb=By:*! T'3:L`9=BPï}0-s2s21,I.27 3a8sJ(ʁgnp#}Zy͈-D__lEz|$}v$." =8%~sx*?чǠxAQcA'17Te; jU]]dUeNWe:{ULU#ar*ɽh ܫq.rxRrNܫF7O^ ?@-g.d@N[C6Rt OMm ;' mGdTJ1tJq;'ϼR̨!D\BH oTxDCzBb )BJ~;K!K!ū!K !%kvHOtʷe6h]ͼ"k3ؾQrv5=ZT[]w]Tzvu=ZW]w=EwG4:]wjUvMTZT]wp\']s?]g PߥUBD;N:?N.;N>;N:?N*?N>;N>0Nv4n`@A3'\t#`gޕ 2,nQx*\{HB{J٫I}KS_'>WoVB}@נѷm{ c,|^LyfږtsB˜=_g^8B.0P7n}H HzCAYF`j(!C)߇B =*o3drPsf HxCAYYH+O)-["%r ݭ?P ;*h wV ST|jмp<wIAs:CJY:CC yBKV9B%TCbj@BKڅ]=qFwKڅ܅$ۅ.i^&]x %ik御g:tp_Ul }QS8XX֗e eԒ9侪bb3羡;7|};5YZ>Q'N1*De>Q'd^e}">Q'ǯBfa=#|{޸@V 'h:u ́g 's '/lێ+iۡ/+c-:F( C@[T8v;򖨽nЇN;}*LBLr<PMQ!ljӷAMQRZ&q";| }oв|['[ 6V;pJ9DR%wTN JR38*ygpHU rBB<-G$3\'j V&XS*օ$]둍U5TQzd;GqN*B_qo2C$ pt=fE9̭z4!J!ZA|:Hв4Pԃ+Dq7D||16tGW@G2tu@$8]H;6i|Zi*;w,HiHł"]1OVtj j͝id*Z|"~eNB&)EN@ tEFEN r.gVuLt 3 ÎHk9] *}u**ݗë ڭT*-–U mP;K#FÔ\Yk7E4d4:҅-`{fC9F3ьKZR~n{b ХKXVC 0̥FilǰlȰ2ؐa3heۀa5݆[cú9Zx[GӺɜPK!Nword/styles.xml]ms8~UXtWWvj3[$';3{wu5E EjI*Hl$@HQDOw (I8z}2axȋ zz}vp~⤙nG JO_ϯ%D{}β[oQ Wqq33y:ݸɧvś p8?0Ix m`0s}8z8'3aAr9җ yS'2H#١O,-#6X?݅YJ~&Q:ϯ G,9oQ" \_#krfNNC?qg7|}2Wk=P4 #\Zb'n2xXo胷縫 aw@@Àxl#jwwYB)P:R,tRz{'YǷ Npxx}rq/>M&} 7FGQ1E~y["  7_<%F.Tݻ|8lę_#DMgTkAITx[Y{UzQ w"ǭAC=hvQ?ăC=AA/:8MNWkQ86—qmk(XGa8Y쩬P0ڛqVI0mopn{|7mf =X㲞YUgQ!'C_Ƣ;lnߞJs Ԛa-=lRX!-Hާ(e}ta|{Y3[ە1lk7 hT;wއnl t(<޽s-C^Yoa -Î %G/vai]Zp3+*;zYnA{ p'C͖9,-t(ޯn#[NhLWLw?׿ͺБϻPҞ.m׿@_ /[8[/{i(Xlng}~/d )0К pRoL,0ųMYx?%o f f f f+xxky.fά6f}0[vFleg̖MZN&Fes&f'nb &DOS>WdGG5 uhlZZ`ٔq4fК0좵[u(Q.Η.TNu<f>l'j|ooUC~½IԢ+˞DcMy{Ͳ\yֱ&|yǚO+5M>I ~Oa|gMVTT>ɐ2yuHNj~hrs@ZvIW?nB;ѝ"/Wfz;NQ)ΤLV%ʨ9ܨ!:5DյBslRCtRjh[hE+X$ZAhգPCh;*v=5F QBh;*vTsTX_Qa}G(& QBh;*vTBQ F QBh;*vT_ᨰ& QLh;*vTBQ!B-GՍh;*vTtBz 8*D1qTBQ!BmGڎ !T7rTBQ! 9*oQ!BmGڎ !Bh;*rTPQ!BmGMɧ(UG"Tm>LnQI9\5Vqɑn;H H+&E\Bk >"zO0tO#(&kndbMǜ6Z&hM!za7>rSP*՛bP)" P*) g ڳzIB9 gj&\:FW]S#tQŧFX56j(3Rmj]!ƜjeL52F]!.Y`D51BS ̨M.AjKuY cN52BQ ;wTC]!.jcN52BQ rbm!.Aj`D51BS c&u„z PQ/8  %a$ fKslI$MЕ=5BWZ|*aUCi32Z/[Qmj]%%zR#zR#zْjlIF^$<8˖˖˖TeK2%zْ ƜjljlIM^$Z/[Q-ɨ˖TeKTeKTeKj%zْjlIF^Z/[jZ/[jZ/[U |zظI|.r*y=Zߟa4paێϾo&Rse*5ȤNRm{óݥ:K8kz^8McAsƥ:/ңĤ%^ /SDf,|rzcU|KFaT-ty <%ʱtLo,Jʯ珹Z +->;h2 =~>F~\La#Ѧ cx~O>d%$`'͹HN/ϗ#w^-ٟW J ab!y(eR?_M677j<ҷ^Ɛj 4=ߗLl1It6"9NPO Q1TiucS0]^|xdaZA$_yV25uGy#<=]^( D;-i ڷ-;V7`ueňKlb:3hd*4n/ho_fHe]Z0 pʅu}3l`NqNSHDx*1 '33TbVY_ V$4,* QW["Z >4L'r6~α2[?Fy$ _0sV}kVċqhH?W+_+'tL pZlvT_˭!Bum}5ц]UCrU9eXY0$-U}i91JKU -1{|j<6d E6VMLKrUDM,œގ$_'s5C, U14 K~~Y'^%~lb%]"H.IԦ%CUr/&I5}q:m#LxXݳ=Zr1dMrc̯nTAT5tHIi:t%ipx|Dʻ,*&FKܲ䧚8C9zΊ:q*z-xot.)XKzKx"$$fUrBl׉1ŀ !':A3pxP׼waΡR|Q_[.'s\w 9U59E+USyuByEraǵȀz9̲ͽ's5ק$$d|Eݹ!?_ѥG|᝺6]wHMm_MO.)3?O2J|<1u60:Fx`㴮_m=l2]&%zA\ "PRH9Rē'ѤJ o$Em9x`aa17Wn s=җƖ%_*2b1\oV#7\x]rB]eY;㊥y'zz5 P:ހQ~v].a29A:+Q@$G:&1%{:c}@|:!~3FqC "bcbW?!WW;`KE2vĕa i4LpAwnQse!e(a t|٧~#Ќ6lF1WWUvBTW2܄t%eRuI#J ńA5UAago뱳 +K1v{zsv}U& ,&2C:+ďyb5 ܋Hiݿ61eQ wZw~Nϩ#}V>Ri>pwNw''0o>rp2%RΤ/|?Los))i!d_K'ʼnK'k˟ǎ&Ԃ.Oji[lŁ4d߶b-x :lo~sf̵&_t  t(viI)H )o#n\┝}g!X*}6YPhK$y,;%;mOX3c6OV1?Hzvfw\ #-:OZMiGMzצOWylF5Vywu~|ocYwmt { 򫍌|X_Y ֱ-yn !xl 6)0Ty{lRv^΃(b%aUQJz\&AFK4M{W%h׉,*YT(b/޿|Ϯ ~~{wρ׻m^}FIҋ*&:~8mC+J|7cڵX Rkz:5bnIwm1ˀieז:<=U^aL|B'OE Y*EWotJ89#CAv\87q_9[K΃V ; wO?;~=7rpoJ}y?g̓=pBr@xxk8wvv[8]3uGZ|DIWmsk8m HV4zPkHj酢cЭ$Y(gw+0&l۷VY s\5!sFeєN~)Ch=mjI$hTHo`}a:=hT 2]wطԨO<ڙG.KĻȧf)tGc7~wg4MO;&i7.x]8]Ot6ut5]tî]۪RO88I#p~޲(> M@K][V0|垽{Kƭ٬HT*9A|UiUW/Iq Zc^M&,EؚQ8:gN~w=v!oaJ#2nf|T.*z!r ߲?Wav'ޝ_7vb3/ \Z][Ү&ḙKT-䳻ek e~fbWjD7]ҵ3(RڂeKWóKOO:]^ً@5u7XYSWƿ^ot\E\\ 9[ qd" 9'^l@[]p&Y>l;}lx9Z49/Mfr~hL2jqǥriYّ ̦i:S86&S ~P\R;+:aL(/KFpdZKԒ{E~gϸ#àF°X~DbY&/-8"AWŤ#5TJHT<$&cV,`I=*~,r.P~ HN EP:Y7m n̷9۳_fޞ)AVG*xB%ߕL4z,omTEfR2"Y/?ęt\(?n~f+4bqpP*DM Q,bV )J?PK!b#(customXml/item4.xml $( l=0 ᫠2RS/BF(6?=)c#>P 8)Vl^4G94j\7oPK!]Rword/webSettings.xml][~0eOjH+{de} &`*ngZUv6O.QXlr?~g٪,\Y.{}{v~_(R6W㫫b==nn˫l7̻l|\-o0%l?EJr^/6WŪH6W˛ݝOvmo|ە߳^g[1 Z/n׽?*?fr9zN'ůAUyr=9w3牐ؽYh=n;{* G拃r|iyj׋=,wo?|lU?[/wg۳_|u'u}6]ok6E.˛o|1ϻUW4dzEyW>pG]Ϲݏ>>dCIP2{15Gë!%ȅ'zNzTb1s?'89gs瀹×ٳQJٛ`(^%hHF(qB )h:@bc?"YDٝf+|I $z,ksW@KޗRQ?uj{gutІ*,`I% :"Dd "T(yT#:ɳІkhCQwtH%{QE 7Or2-n@s$LiCg0 F1/ C`ip,AGm:!ӱ@tԦ) QP h"6.3 T~諳LNdR<)ρ$(%Jv,ۆ#$LRV1Q~A'C@#Ҕ, #?NxsBpNVKI Qrq@d X讑Q?-HTAr|2Bd}R3° ,£:™(U8S-DP#J!5d%Yj?2* S✓/iɗ(D:3ifIQB0apXKY\ k6B,dbDG my"HC}1J%U9UW-UG$v(y)@2?s\]úМݪ>kVKas*6ݯ>`r_}wvzi?vՠXDQe3iʊ'ϴOH0Яju=LO ڪJ%8^aψQy+QPQ,:$$1Y@jWV:CCuТIs4ͯ1bֿ^;GD}EՕk MhL'ЯH8U O;~)og'LOݬb)(Ex眽X {<4QЕ(2gѦ:_|tA`uQEGlt7#LC!hO)c{C;ÍEd>9ӵc)b[BEBl1 >"H&vmv%tA0N.N2ݦAGm:<'C- Ŝb?! a'c[#Hɯ>pIh E_8[>]| E%̧ۡ_5rдBb6AGm:_?;NNuMf1׻U묪o_ciD{tܥj1 D&9沵RTJ54 >jQ^GV&C[6dyh|R v]|0&ŘFY8V%YSmC:4fHjG|HJ.G|8 [Oq8:(P=;@l66)0ź="ap#~H2ӯw|sdn4l/aT#mkULXU0Ef@JD‡J5nG#|G|* DfDow1 >sFH)U#|)%q8:pDd O~o3F9Ǣ2C+݆%L1ڋnٶ-ǿXnZunZPK!W%R(customXml/item2.xml $( A E" B@RnFhn_)'ޠL{1XĀ)8Ǽ]^9 6+ =rG@5]ʸϦYVHzdϠ>Eew|eQMb7PK!#S}(customXml/itemProps3.xml $( ]o '?DcTMHViZk,˦i}M׏tvys/_|+8ZS!P4#mӚ]nD3iDg TXt|g:ō6כ XMq5c oWo/ӂl'Ei1B3B܃>=QYET+acR:'r^wh9  }[鬷*$XCcwDZg]hO{!S!9d<"Kq/Bi!lNUV|/c([pT/&YYp$R4eu/Ns4ʍ0beB<ē~e{' :Zg %V{NMF視=a #i2!8#:bf$߮?z2PK!d{VU(customXml/itemProps2.xml $( j0C{6V"q {--Q&$.-HOcO73C&WPHw i)>|FR0NCc:y RP^: _>|ZP*r|n[VV,*PTxSBXx1I.`!%dgŪ d$kw=C~--Wu_O MM6{EPK!`ٺh1(customXml/item3.xml $( [َ6}/g[%SdI4wy (DEf^j_,kӢCF]L^=ܝ0:a' 6[].Wz_m6󥾸V~9_WdjO`z< DBK$31dZbDaR[ҵ͂bZs^5¹|*JL}0O1sfYeK!#J!D zs!'^=6&8xq}EbعѢ6!J_jA6hX.96 6&Ѭ,`ofA2N1Sy]޸{[oxcv m9'}CV>_M8fEtc2䵶^T OP$dZ+cnY l1Kn>QS&"L"\ mry6yBȞi E.q!ۮenO'柔~ ROPC8;R2?ooI-n~>M/#!twaZDw?Hd#uDOq}O3s}& op~%Gѻ={.iwP-JIpes  m_BdSW7np)+FF]yJ|3;O= a բі&y"62lRX34l/c$ Evkw~J/T@ޑ$|Q`+o7iXDw V%N)t  zȅ%1;9qQKLc3StML]&װ]ll4~ɇBś^^,{sM?T,>*cQ +9=q{dbX\꧛TQ&ԬEg$RFpI.\ϑzQUӺ {`ZvJ(*5Bfsda' 8r1ɶnf };XIT tm [" duj 0#?jO]-O}8CaSW#/P )sBvuG\e@|,G|N?~|8mtWf-w̗O%g ɠb5jQӂTS,FY59"F9vKy/zcoBoE~a?˸6Uͱ{BR4]wkK̖`uJ&=J_J '   A|YR` 0"!ϳ@u 7 k zPi+ϻ@DD>ed:my#[03*WgvDι#Rd9O"a'}mʓ1V=\Yif_i)k ]8=SjhX:B 2%̲S+vC8? S渆<0tmx%# ڄ%krpKp,gg: o6J36RuyHߍV̑/zd%P|V+7HgflTbc>>5@7/3`f3 rhlF"#;rJPK!aZtdocProps/core.xml (QO0MKG;$6PĘV Tvi o7p=i!Z(b NrQ`UJ EGh$6bt ')"Ec6S +mr|kָlK׀pr(aY,vF0HA9^/Z&W/e.ܱfتV²,{堖zX+ 0?7%6SݯPK!docProps/app.xml (Sn0 ?7(EEa[iϜL'dI׏zO|$Gd Q;4*Wk]&"81?UpiSظwD~^Q8JB 0l 4ZS-WB[c}¼g裤SI_|tLjG(t V(KQxq 'H,w@_,ofaq V*ʞ:Y:/q֨AQNE1⻶>`an@b xKG twE/l hm=b#Yi2=.c5t8T!>5<#4RGruZ(ِm=W>-/xѴ[{Pl٬XQE95=X6$#LvBZ)z2۰sdxc/PK!docProps/custom.xml (Ko {Q75魇mqDk4ޘ73Ǜ*3jU@!~TZ/Nݤ(& <ˢgQe xv2"dg.\fЋ 30rQk~BYD07qV_|μyeo`v QG#y_y4SIEXKO潘@:NgZY7cG{6wc߰30?iX'4n((%qUAR$ѽ'G[3/PK!xn~(customXml/itemProps1.xml $( Ak0 {j'ִ4)$i168rc`+c0笻t;$ݎ`Е,[ Sw.s, $]/GtP2P%@D`0ڒ}dQܵuncM,/N䢾_g[l?Y]Ą Dӎ2p?s(hQ\ho_Ȫ%e tKٛ?.(5 :>œ?i$ }'AGo2WﭾPK!C"(customXml/item1.xml $( ?k@ bni-v tg}R.7v>?oҼQ$N~j.G{J D60o,W0H9X)ctl'_uݓ|P=;6w#w Ev d*yB1ߪ kPK!\'"(customXml/_rels/item2.xml.rels (0nS=,M,7.x dBf}{PK!{(customXml/_rels/item3.xml.rels (0nSYzYo"]iɄ(=?naVW)XU5(zG?~bcogh vќpRB<Ī( L"Kkv%2PVʘG#u]߀T@>+P=;6 wM0ʋ .,a>f*yD1jStPK! (customXml/_rels/item4.xml.rels (0nSEYzYo"]iɄ(=?naVW)XU5(zG?~bcogh vќpRB<Ī( L"Kkv%2PVʘG#u]߀T@>+P=;6 wM0ʋ .,a>f*yD1jStPK!i~)word/fontTable.xmlWMo6tS,N$t׍蘘Hǿa@;`c 4;lv_KJvKj6qW+W#w^:'RQl@uae[*<đkω}Yg,x,U]{N aX)ps,$1\ʳd61ш󚋐og0r1Ӏ af~MW:U &h3!éQ |fQ0K1H8g( sƢWjnE5VQ84/qhfYPDc5g#tθx# h ?ezfLRFuLfganL180G]pȃ g] htǘhJknLiLs,^tzK3B~N-N>K,.<+3K}iAs8YgR&rHDD4pVvqYL[DDHxM1=\ސUR6Wl,,lZ6d@$R&m4i-R{VǼQU l"%33Vƃښl w%=^i7+-d&0A6l4L60#ÒS OX*V$z33%p)O^ 5}nH"dsXgL`|ԟ|Prۃs?PWtt4Q+"wa|T\y,NU%-D/ܚXݞ(|G++S9nM}ڢL'}#S1xL?T5?l#ڟ}pFU[ )*U [ SlO)OѾҽ8JւZTrADޕ0%Dh] JjOԟa{#!1(й,8oJvYFb!5ꦣjvgG5wXpwzq:׼{곴VWKuʮvbïy>e7Zxʇ<+bR8dOˢ:[+̕Px ?|;g׸D56jN=E90& -cG[?Bm^U}s; >-f˅.[ ?^O.,f]3\U\Wա[4uU.^ΉoDeUVմ$C BTi  2aW"9i)[@uz]̳-rԒ/s_fƾ߂z'm2uzVERwWU<::pxQ| S7l႘xhNΐc<* HzpPh+@!C3 <l!4Fv 6b,āC 椁Cc[gA%J E&F'A̗bTtRd&/SjoUT+J+qK_S 2)ʃ'SjQkV?2J:crz]kMw&$Jbk/Dsq!!R/Y;'u}Ϥ }߅ }[ Hzr+پMP|_=^)7?=?Hxѽ-ӷd3bDQC}=2zɌ|AG F02 Q"eJḷ=g cL)aG<_My7uf/rv$)J uV`U":^žz& "س!4Z^e-Դ} L cv͞ҹd hxKp^2Әf;\:8& .0,#\ )0h򂵢E^zKTD~Eq2KN` gF7Eɬ0?,3 **M`'6 REԴy'E^.%3(Bz6q1Xa⍙=åsɌR,Yt czKN7¶pDY( %3Qe aJ6D\zKGasyDLH:ҡdT-Z%2<  ]ɦО(ugx)F'f Nj{^ Ɖi KBoĞ9 ڞҹdƀ̆7p!3Kp\2FQ+{ \&.Kfbj$ BFDɬgaP R)uGEgt(ah[.B #s?2Jf]yL6j:8ҽdixus\A=3S Kw oX~*I$-ot.)Zm\( &43\:̰pa9$>ojv_IL/=CɌhg]d ֽֈ3mx5n!U."{ p}D@~PD䵈K-,ղ\1v?5"ZD:°j⯵6c-.EB.T!wK^$䵄t_%tWnjKD72 ,!.*<#Zv@&NbAw]SMJqg- rx^mI[ /3mXx H-5~b ҋOŻb,e/ll>1W:XQ,O˰Xι;m1φyP<*?㑷=ˡ%fa`u]1MlPK!dQ1word/_rels/document.xml.rels (j0E}-;}PBlJ!E?, `HI`rsπ6w{r茯{*xAkWk*`[^^ljNKD8R1d:4e>K/4Vm^urw2NP0ŮVw5j o7o:>S!?p8JX[d0KDEVKc2P,ũa].ﰘsYҡ+(!O>zPK!g word/theme/theme1.xmlYKGza5Hk6޵Rkiڵ0`r C B 1cII3-ď] U?4s:G ’[=Wqؘ$aǽ}0,\GHe ,܋;v8:n$|,F096 M.cAoL˵JQI\'A11vJwg|@_"QTcCBcӪ P!qa1;>P$$Lt܊s;k!* dsrC[ 5-õ^֯TnAcX4NS.f-(mZtz׷]_} Mo ? so^7kPllᛕnkx (I[ߨݮ!F/[m6kKx*+OdQCh"IG.fxF %8$ f(a+ʰR(:QN:!#Nf^nŋ|Ǐ_>uey7?}/͓oxǿ_Ag?{rt :>vn6hY8KtP) z #}}(zش4gޏ\ Z=hq랮V'}q>n!td[;`>'6A 7)8QslE.!]Ȉ3&ҹK"VC#2$,l߆m8=FmD@ԦSÌ\4E2_ap!!6|aнi=M$djC">gV$+b !LZI0>%Cېfv$03N)H]NћFhbL1cܾbóaelUdƪ'X@c0Bvb#,P#^ \u5^hjRա!bcZoF+x]pr@ζ9@X U-݂LD'-6MCQ$ykQ O-өwT:Ed)mV5c5}4OnbG,г欦4E9d*GdE?Z=Z§>B\P+t#쏇0;ZhiAs 9m3~fLUP83&pVj=6NGsM@2k5eLGZA늀}Lu j-$NE¢_K HRFncT~St1m,k+iD.L0>e_3)i4[*l=\5#4xTIɥ?$̸}$DbPC@[T{Dɵ+Wx2#Y0ua.Ub=!XuHGc-Ue1rm1άGxߒQDgZ(du{M'tsWfP9ķۅD.i\ ִ珏wXey`\^庢[BZAM1PFMjX[fqڷfԪ bUW֋mvx"J¯+4Uv/9'AzAJ?(yuRjzVC0⪟=t|oǷǫR܈ewt# k ZF5J^ڥWuf5WռvPK!̿@F word/settings.xmlWn8}_`:XN&EU}$&BIqR4"i3sfȹ9?2:a! &9\ f|_ /T*8,nHPT2a*U'+-fH^W\0ظ HPnyӈ*(K^*m$9>xdJbܒZZ6ln-g1j(/ OԂXJH6@RgDG໻s3ȣ?p㉏<X?`N$~EdHҗ丅H&h;K0˓M(@&:?|^C# IE S9x*25ԌbF  m%Ʀ%jGYx J;^ [$PHkۜWJpj 9 YQџvE(YA^ m`ѩq^l |ӪHE ߈gJ{p #33%mU@m3RX!;`Tvz#2aƕPo/[H{¹:z<^-H5#x4 WԻyy47~M"ŋר6ġdU.[ yfd-f\ C/ Dode^ZY"+zYlema XAЎ%qqD#-PP^t+Kv ~ WoM 6):F=՘V2HnOMޜ9rL,E8%W Sqa I[CKWAmٹ7\ΐEYӨ5>]`aaE<.x1sovMjPK!t)<word/styles.xmlܝYs8߷jKO-rgʖkrx"g Ihyȧ_$ bR[3MQ/>%q@t2}? hwWL iDb3'?~y|1HwIx:Y^iB|CSg )~/!r*ɆlbV<&&B ˄h,ԯeZ$_髯 'KK=LUn^>S oHT;dUPl_Bc&p~sNʂW(` .t~ѢoNT[ů7 M&EMkok~i}+ꅐx|x2SQSH72[wS"}I%6[æ'הȔL_"TQif/Ʈ>jg5t:Y ~VC'?7?!+biDa3cQ#ccc cQc t4h%L(4kwݽqw'|7ݝݸwwsV+2K*[q^AAH*XÓͼ Fgj!M z;BHBx_+v_f4q>Иoh@H<3ZeF\b:+4>TVAZ&K!X4 1_(@aW 300|k*h&y7止yi*ycER?v7:n6EP˃_m5yLYBun=_1Veokަe>Gxx1d!9O"oP0_P0_nP0_>P0y0_qu-g +W)8;j%6+ &-hɞ=!/czO< մی7xOǨcmotk_8ӱ킣,2S݅ۘtf1mE?x}ՍA=?u,~3iY- v=KG2; L1;n"e|xhYmv[nw-˓7-N[}z @8鋟ƳI_5ƝRc'}QԒJpa";#';e>}L오kΞy_meK۷pqJstrq2ynyǎAjJIvdG NRv:[=.[A{l).j.#BPGPP!-T@ "B0P=NE"THA "BP!-T@ qoo5w* hBZj8B'Th"THq* hBZ*D (s'B Z*Dj.Th*w*RBP!-T@ "BPP!-T@ "BU_* ڻR\ )hBZ*D hBJI*D }Y}Ei;~?i=cWWU?6QQuE8{CUo e̸:DmZS"P_|~ǤR[) TB޴EQ_`yԗ}MK %]4cO-}0Sܗ C8}0ܗ @&i֜_ }hN섾1P Cg' uwj(3݅j'`] NwWC!01b] XW'g;jrv5D.eXWCՐuيqw5D9\ 7wXWCՐu5$8`] Qή(7W*jH'W!juj s&0-Ȇ!.9ՒaX-j 9Z2f' 0ԍvʟV ޱvvqR݅j'`]UKUKUKvW㪥.W㪥.W'g;ոjոjոjj\j\j\ j\j\dw5Zr5Zr5Zr5ZW-W-W-]\\\UKUKUK p EB"wk 2_ӌ<~QwP{lJ 1g ϕ"} >x5Ʋ'AuCeZݢ2MkVX]Tu GT /\Vud)Η\kz]ȀDi:Jz(-ă4va(G?7tUw/_Y3vgmEӭNf;b}y tF'JI"蟥o*L:[?ng@y}v\,:nTReK=mfwb-ؒrm"ɺG'cp3hR`4hS5UۧWzmش%>XY;X]\^UV/тhW ت?1&ϏKu˦>W^| 3piED.8ͥ'a70!طA{IC s%ꖱKyiի#;^ :17ggFWX9mYȶ 5&~FjH9e&0/F*5̡3GVEer vyFU%\c}:˃yu #X be?vbloW $Z̲!pٿdByYė4<׭w,y>_xBTQnmТ]+3*;:t;AZ-O!w5UKCrUeFyP0xC慺?ՑͰ13) HSaT; e`;Ls+з"W LnƔ&^<]86#,fZ,[;J6DZvYD&>IP-N1-g5!kRjzͳR9k&.g_LlQPK!@9#word/webSettings.xml_O0ww Ab c~ݠ-Ombxarv9|B a*Kׅx["|,z(H,7&o` 1IJX;]Mu.% 8ECfӰNm=jXr80hx@uc/XtԚkCY@89e]@耄Ur1:Gi7r@aϘ ɑ)91d~][cP+Qלtprm -8K  ee-6/Ϗ<PK!.[n word/fontTable.xmln0O;X_K)j5Ӥ&8`՗v@h'Ҫ)8p{,0cVYtpz*~a#jIV,vFw_nB+gWv$i+GqlIb;d : m$qhV$*%q|w8x5sE웦dʅaZ5/ힶ=fYMf)j$\0I$95u`1MFZR `@s;ưa0×8/8K`Y;DI"IG?VJ@fЄfH fDᡣ$J[@߆,)q]b?CꁸDrG[[w>!d.WQ΢{qzQI ;]OH&=D I͡sk'&\2Ғ7x&Û2bF,PУA zgP<8iVWRM滒׼E_INYՇo啫 AS^37ӕUeo歹yi 4NOD}jqQaӣx^jy2~ڽY}h\X7 ;PK!WKsdocProps/core.xml (N0EHC5THH{hMпIڔHYK7'Y6HFXjA$d ,RBX: $dB!܂]Aik<̢cL:.6|4ϲSiLH$;#}HA e3FZß}R+:SoꯠFa۶vK>>*y%T*l*!Qx}CyLb,l=LV3;n॥рGߺ6fx̶R嬪|Y( -tA0I=t皿E=Mo}:!̿PK-!ߤlZ [Content_Types].xmlPK-!N _rels/.relsPK-!8X8word/document.xmlPK-!dQ1:word/_rels/document.xml.relsPK-!g pword/theme/theme1.xmlPK-!̿@F uword/settings.xmlPK-!t)<"word/styles.xmlPK-!@9#:1word/webSettings.xmlPK-!.[n 2word/fontTable.xmlPK-!WKsC5docProps/core.xmlPK-! 7docProps/app.xmlPK :pandoc-3.1.3/test/docx/table_header_rowspan.native0000644000000000000000000001574507346545000020463 0ustar0000000000000000[Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidth 0.30701754385964913) ,(AlignDefault,ColWidth 0.1364522417153996) ,(AlignDefault,ColWidth 0.10009746588693957) ,(AlignDefault,ColWidth 9.707602339181287e-2) ,(AlignDefault,ColWidth 7.719298245614035e-2) ,(AlignDefault,ColWidth 7.085769980506823e-2) ,(AlignDefault,ColWidth 7.09551656920078e-2) ,(AlignDefault,ColWidth 0.14035087719298245)] (TableHead ("",[],[]) [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 2) (ColSpan 1) [Plain [Str "A"]] ,Cell ("",[],[]) AlignDefault (RowSpan 2) (ColSpan 1) [Plain [Strong [Str "B"]]] ,Cell ("",[],[]) AlignDefault (RowSpan 2) (ColSpan 1) [Plain [Strong [Str "C"]]] ,Cell ("",[],[]) AlignDefault (RowSpan 2) (ColSpan 1) [Plain [Strong [Str "D"]]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 3) [Plain [Str "E"]] ,Cell ("",[],[]) AlignDefault (RowSpan 2) (ColSpan 1) [Plain [Str "F"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Strong [Str "G"]]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Strong [Str "H"]]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Strong [Str "I"]]]]]) [(TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "2"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "3"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "4"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "5"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "6"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "7"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "8"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "2"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "3"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "4"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "5"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "6"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "7"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "8"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "2"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "3"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "4"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "5"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "6"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "7"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "8"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "2"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "3"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "4"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "5"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "6"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "7"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "8"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "2"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "3"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "4"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "5"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "6"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "7"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "8"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "2"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "3"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "4"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "5"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "6"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "7"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "8"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "2"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "3"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "4"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "5"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "6"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "7"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "8"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "2"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "3"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "4"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "5"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "6"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "7"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "8"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "2"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "3"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "4"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "5"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "6"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "7"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "8"]]] ])] (TableFoot ("",[],[]) [])] pandoc-3.1.3/test/docx/table_one_header_row.docx0000644000000000000000000002763107346545000020106 0ustar0000000000000000PK!ߤlZ [Content_Types].xml (n0EUb袪*>-R{VǼQU l"%33Vƃښl w%=^i7+-d&0A6l4L60#ÒS OX*V$z33%p)O^ 5}nH"dsXgL`|ԟ|Prۃs?PWtt4Q+"wa|T\y,NU%-D/ܚXݞ(K/4Vm^urw2NP0ŮVw5j o7o:>S!?p8JX[d0KDEVKc2P,ũa].ﰘsYҡ+(!O>zPK!~[word/document.xmlYo8 ;zOtZ: lLS%D*Me%̓x ?yW am')TbO5:u9HecF9]KLK.9& [g/a˜q񍂗/2xMu)`n;Ԑ~#[=/ J`hA2![``b dxqނ?Ԉ{).<^)dII.cu%(%Lmږ`< Hw*6iCϻGui+]7dօ8HrOEԜjfQnz>,K%6ʠ}O*%-^Ŏ޶ aDp<{w/2;`p~`P-^=7H%uaēF)(3Ha*xBв1dydT*}P*PM3^^#L ?dKv^\`P {g]/\Um6 PK!!Zbword/theme/theme1.xmlYKoGWwŎ mD8Y͌VRHPEiRT+?3=&Z|3|$fIyj"-VwaCR$'卉l~e"-/R*ݨTX^)I`oELEX >1ԫJipH}9ae(|&4kR0దXv@G<>9QbX*hyU*+9S h t=2nD8 k휿05vn-gRKTF_2_oހ1_6%as^VZ{WeE&sh<29d5'| k*Zk1E&XqJ\3:T v/疴,$}AS>N1T/>F{?;$,R=~z_~K7PϾ~ǓGϾ8[>D711@(E$8Ɓ1 ;pmRm-:[R #Ż܉psiӎU( Ũ%3(\.cr(!!;K}%*t6N頔MSk4] BKٽڜo23KJnG Nq̊XE.%/9\*tHG݀H颹)%uwuþq)=t!c΋m~؉p:uIT~$!E1ʩ/WCp0ܷ))ھEÒJ;#* 8fCL LiC ? ٷݝl[W6E"~wƣd@A8o΋[ +m oC؁3r]-fbK~0W…1\}BUtԌPfCR.,;y 8?]kN*.Ja3gcfyZ r̈́,pIi5ڼd4ya*Z!Q0#e0 [ Qf5$q,w7r uTK3t֛|!ܖ`ONY<_YϮYUN .HTXFleD,_o6G3YNڿ) W VlQpl$1ݰP 䚞mrf1&gٮ_L,p3u0zlF4EWyRL):s~HhBEPQ'7@/eUBLֺi߲^O|sA"^]Mga8YY o˝qv8%j/F%_|V !f6Gx3bvE0=a ` -:bYO'x4'?m{Nr6a8۝r9 -;'6Oq.l*m{%o%w̙˺l@]yJ/X*" /oy)*·3cO҈W g+?}8 k nj\y;t8T3.D9!)CSS`5Ҥ pc3<(|FJ)h͆"k!KQ6 sm3%PjGjs$ombϨ;+{:E<PKQbu'r_@n +OF0zF0.qL;!Dm<6_1g "qu#wkI!l_PwLo\HTP(.zw5ՙe.!Gpﷀb XZU/ƮmyЋN\aMݢV%.p}O]v{59da=򲾘s#+fޟȿ{IenԄר[QpQЄi(Ylbf-z"gz[lqoK-mcgڐ-}#(\3S7=L7Z@JպRH~dE?2.HJ<aX,5s/ne8_L'Z m&cs+LNI$d~2"*rJd̓WPK!}docProps/core.xml (K0.CJ=щ[Ln[\\޴:+{pq$~WeR G @q-ZOrސSZɴʹɸd$`M 3n&d(EWVԮa|@( 1CQ)x4;[)PrHQLϬ[mYIw0p={eu=}^5RgNC sF +[TkC@odJ[vKnw%Aţ2[߱`wv ֜)Җ8ET֍TyKosR$QQ2ItEGYX$5PK!:word/fontTable.xmlԔn0}{K+Mu(H $}[s-%oc k^GUDE;T-~d3gFfRDoyȡȘIލ=hE3)hTώD zIRcjRuKT@2cS5q9V<džY <*z E& #$SN)6 m.U+IpfV Dԇ g/!|Cw#XHR4- B 'l*ɱ(93$gf˔fHL؋йW02G(,"6{W99B,N"]{5%.:LTZ-pf.!iWOաjjR @ZҌԔ9U弄;Bm.؉a3{ů^ R5?PK!yn, word/webSettings.xmln0 C;MA˴iiҶ ђJ~ąrɏb,;godbf"2~]Ϗ\$EIJ[y w#)aSt!6167؀Sa- _f5*&vre3q`5 ֵz>_,i訵h- qs3~ r3zYr&Ln1?3S sf'TgmŜÈܾ#ǠV%~9~%Ze-oϲ\PK!Nym %tword/styles.xmlMs8[!񷝤3e;ڵq93DB$؞_HI@/%xhC\O*!QTf|8}zaT5+3˒^x5׿헧OU*рTY]?Tz/RNb.Ŝb"rQZBөHg. ^6~G\eYļZҞОJIy+(WC*Dd%{}2m,Jڿ| 888Ƈ#]pGd'08ѲKaΨH?;~l?dYW'VBrix!qJΪx~g̎iU;_LvAƟ,?.0.g;^>v |5Sg&p=O^GIkܘ\o/2}ٸNGP7wJH|:r q-ΎLdnj+ʚ"R}prl%˫9scmd.a{mu83[aB웈9nչ۽P:xՁ@ou:Ї:?$ʌ?7FmUOCGs<4S:Lj0!!}nø0<nfhu˦R֥yRx+5&}4<3qErgkhZ-Ě4|劗)lt\<)ńmq-$ªAE=3&`E"2|眈YV|n`1g8QUQK#FTa-ޚIUo-ZQzunxwֱ7|"f>cP2=n5)|%n{%V$ym"E V<"{xD[-vfvMόӴ4ȴc/ mX"A75Y#'EϷ.e|֬x[H" J~sӲhҕs3:Vik$,Yg6W@ [6>FwyB7˹I3Me]˂ٮg: ._hy. ӐdFDLQ 1_&vxsOM͉cV̛Itِɔ0BT'9ˆbwu_eB2mQG;յti.~`Ãi'? ^䬪j0t_&cyKr/%221,J ¨40Rq`8{uQ3*jgF,YU;;TOI$@SּK 2`)95[Ȳi֨svͰ(E"\Jc#ã[3EYg2ϸ?V9Kezpoв0lbwF.[E,(|`xmg^z3ȣ#׳ȓFZnD3S ᤯r*bG hBڨ3?eTdTHA"FQ gT3*1*RFQ!mT@"F {à )hBڨ6/F C )!FQ!mT@"FQ!eTdTHA"FQG Í qF!FB ڨ6*D hBڨ2*2* hBڨbaQa<Ψ0>ĨbTHA"FQ!mT@"PFAFQ!mTk%Jm{UO/]}E G-Kg \Ǥo I.]\VwԅoOȗ.Bkw6Cwݔ=zds܁)a__%c|}:ǫ{;a`O^ A?\qUO\^ ^X? &5XEK X!+5$I 0RCT&5XCK X!+5$I 0RCT&5ʰRCVjHJ9 {1RCT&5X_@K X!+5$I 0RCT&5PRCVjHJ ARL,5DImW06F)&aN n@vq-9сْC̖VKqْ+0T=?a~JO//V؏ -uInT?+5.[J˖zeKR%ԸlKj\%ux'I˖zeKR%ԸlKj\%5.[:r@b¥eKR%ԸlKj\%5.[-yeKR㲥^qْ_j\%5.[-uI˖R㲥^qRԸlV/ ]m׬,ŀK+YB{_PgSmiN_:3owʚ@M(lJ?~m ^*mhҙ>Vھ7s__X[u\V麾6jܵi=e譣3~l;m%?nLڟjJ=_<\ jRe\Y7 "ǜ|q?E-7CP쪭E/[RP(u?›F6PK!("qdocProps/app.xml (RN0#Q *P+āGpMbؖ"lάw46>[}`e>yV:m&bV ,.#|//`ǐ4ƌ$l\MJ(lERRr`*-qEؼ( ?ZjWHUNvkyǡ?wf\j ,. SV;/X_AD+`#w-E'-Jm֍_JCy:yl QF_ |s6 IapMy%LD`?]%96Ttn (N y5`G,*?8xY[|tN (aPK-!ߤlZ [Content_Types].xmlPK-!N _rels/.relsPK-!dQ1word/_rels/document.xml.relsPK-!~[word/document.xmlPK-!!Zb word/theme/theme1.xmlPK-!yv#p Wword/settings.xmlPK-!}docProps/core.xmlPK-!:?word/fontTable.xmlPK-!yn, word/webSettings.xmlPK-!Nym %tLword/styles.xmlPK-!("q*docProps/app.xmlPK ,pandoc-3.1.3/test/docx/table_one_header_row.native0000644000000000000000000000104607346545000020427 0ustar0000000000000000[Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidth 0.33302433371958284) ,(AlignDefault,ColWidth 0.3332560834298957) ,(AlignDefault,ColWidth 0.33371958285052145)] (TableHead ("",[],[]) [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "One"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Row"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Table"]]]]) [(TableBody ("",[],[]) (RowHeadColumns 0) [] [])] (TableFoot ("",[],[]) [])] pandoc-3.1.3/test/docx/table_one_row.docx0000644000000000000000000002756407346545000016603 0ustar0000000000000000PK!ߤlZ [Content_Types].xml (n0EUb袪*>-R{VǼQU l"%33Vƃښl w%=^i7+-d&0A6l4L60#ÒS OX*V$z33%p)O^ 5}nH"dsXgL`|ԟ|Prۃs?PWtt4Q+"wa|T\y,NU%-D/ܚXݞ(K/4Vm^urw2NP0ŮVw5j o7o:>S!?p8JX[d0KDEVKc2P,ũa].ﰘsYҡ+(!O>zPK!|q<word/document.xmlYo8w0-uH7@4g%!(Oe٫41$gCY vV3ǿ0M*9<΀ T%9GOw&oKR *>xdBS8#%et#n1-]䘸{7|OjF1[jcpЍ0g \!&ȡaWCč۠VmTx5jJU-P Za?O7G ڤq?R&Hp*NkRqCY4YꖈlHbP^P^'B&WnIRЙeߜ7`]֯]rP+w)`/hų>exٗBvZĮ,}wL׮EM'"'..JJf^[s~ `I 2bpqwL ѧ"9y~{b\ZXN_ -9p˄yJyP wSiEZy8P' pPUrȋ˚&GYuaGf*OXt,_k RJ<0) z2:{Qmr7j tR-|YPC*aֿIKRPCk &@ [-P0C12QޯVƏ5b"F\N!{O*LϗʟX_YIf`}1w4\.UܗuגlжgIZSԷ6*MzC?^.Y:o>x˨|O*^/ gRn1Y} *'DJNxK'ޕ7>j!u]o Y!~<̀ǞjlٜY34-B8k[f:L F1~"2)kt}w?PK!!Zbword/theme/theme1.xmlYKoGWwŎ mD8Y͌VRHPEiRT+?3=&Z|3|$fIyj"-VwaCR$'卉l~e"-/R*ݨTX^)I`oELEX >1ԫJipH}9ae(|&4kR0దXv@G<>9QbX*hyU*+9S h t=2nD8 k휿05vn-gRKTF_2_oހ1_6%as^VZ{WeE&sh<29d5'| k*Zk1E&XqJ\3:T v/疴,$}AS>N1T/>F{?;$,R=~z_~K7PϾ~ǓGϾ8[>D711@(E$8Ɓ1 ;pmRm-:[R #Ż܉psiӎU( Ũ%3(\.cr(!!;K}%*t6N頔MSk4] BKٽڜo23KJnG Nq̊XE.%/9\*tHG݀H颹)%uwuþq)=t!c΋m~؉p:uIT~$!E1ʩ/WCp0ܷ))ھEÒJ;#* 8fCL LiC ? ٷݝl[W6E"~wƣd@A8o΋[ +m oC؁3r]-fbK~0W…1\}BUtԌPfCR.,;y 8?]kN*.Ja3gcfyZ r̈́,pIi5ڼd4ya*Z!Q0#e0 [ Qf5$q,w7r uTK3t֛|!ܖ`ONY<_YϮYUN .HTXFleD,_o6G3YNڿ) W VlQpl$1ݰP 䚞mrf1&gٮ_L,p3u0zlF4EWyRL):s~HhBEPQ'7@/eUBLֺi߲^O|sA"^]Mga8YY o˝qv8%j/F%_|V !f6Gx3bvE0=a ` -:bYO'x4'?m{Nr6a8۝r9 -;'6Oq.l*m{%o%w̙˺l@]yJ*hxxû}1@uƪi3Ffáv!}!$nbRO +$2$pEӠQ<(BF*%k͆T-9~[q SAp#R{6l<גxftBGs³R k bHx8yAt}Ǒ;F``Ro8`yCL pq5 B`0m˖;Ԛo`W'1Y$p蒣 @^;epcхٺ _XsjHDw- nj Ei89[2Mγ$ym? }S'㰖iMxt~PK!:word/fontTable.xmlԔn0}{K+Mu(H $}[s-%oc k^GUDE;T-~d3gFfRDoyȡȘIލ=hE3)hTώD zIRcjRuKT@2cS5q9V<džY <*z E& #$SN)6 m.U+IpfV Dԇ g/!|Cw#XHR4- B 'l*ɱ(93$gf˔fHL؋йW02G(,"6{W99B,N"]{5%.:LTZ-pf.!iWOաjjR @ZҌԔ9U弄;Bm.؉a3{ů^ R5?PK!yn, word/webSettings.xmln0 C;MA˴iiҶ ђJ~ąrɏb,;godbf"2~]Ϗ\$EIJ[y w#)aSt!6167؀Sa- _f5*&vre3q`5 ֵz>_,i訵h- qs3~ r3zYr&Ln1?3S sf'TgmŜÈܾ#ǠV%~9~%Ze-oϲ\PK!Nym %tword/styles.xmlMs8[!񷝤3e;ڵq93DB$؞_HI@/%xhC\O*!QTf|8}zaT5+3˒^x5׿헧OU*рTY]?Tz/RNb.Ŝb"rQZBөHg. ^6~G\eYļZҞОJIy+(WC*Dd%{}2m,Jڿ| 888Ƈ#]pGd'08ѲKaΨH?;~l?dYW'VBrix!qJΪx~g̎iU;_LvAƟ,?.0.g;^>v |5Sg&p=O^GIkܘ\o/2}ٸNGP7wJH|:r q-ΎLdnj+ʚ"R}prl%˫9scmd.a{mu83[aB웈9nչ۽P:xՁ@ou:Ї:?$ʌ?7FmUOCGs<4S:Lj0!!}nø0<nfhu˦R֥yRx+5&}4<3qErgkhZ-Ě4|劗)lt\<)ńmq-$ªAE=3&`E"2|眈YV|n`1g8QUQK#FTa-ޚIUo-ZQzunxwֱ7|"f>cP2=n5)|%n{%V$ym"E V<"{xD[-vfvMόӴ4ȴc/ mX"A75Y#'EϷ.e|֬x[H" J~sӲhҕs3:Vik$,Yg6W@ [6>FwyB7˹I3Me]˂ٮg: ._hy. ӐdFDLQ 1_&vxsOM͉cV̛Itِɔ0BT'9ˆbwu_eB2mQG;յti.~`Ãi'? ^䬪j0t_&cyKr/%221,J ¨40Rq`8{uQ3*jgF,YU;;TOI$@SּK 2`)95[Ȳi֨svͰ(E"\Jc#ã[3EYg2ϸ?V9Kezpoв0lbwF.[E,(|`xmg^z3ȣ#׳ȓFZnD3S ᤯r*bG hBڨ3?eTdTHA"FQ gT3*1*RFQ!mT@"F {à )hBڨ6/F C )!FQ!mT@"FQ!eTdTHA"FQG Í qF!FB ڨ6*D hBڨ2*2* hBڨbaQa<Ψ0>ĨbTHA"FQ!mT@"PFAFQ!mTk%Jm{UO/]}E G-Kg \Ǥo I.]\VwԅoOȗ.Bkw6Cwݔ=zds܁)a__%c|}:ǫ{;a`O^ A?\qUO\^ ^X? &5XEK X!+5$I 0RCT&5XCK X!+5$I 0RCT&5ʰRCVjHJ9 {1RCT&5X_@K X!+5$I 0RCT&5PRCVjHJ ARL,5DImW06F)&aN n@vq-9сْC̖VKqْ+0T=?a~JO//V؏ -uInT?+5.[J˖zeKR%ԸlKj\%ux'I˖zeKR%ԸlKj\%5.[:r@b¥eKR%ԸlKj\%5.[-yeKR㲥^qْ_j\%5.[-uI˖R㲥^qRԸlV/ ]m׬,ŀK+YB{_PgSmiN_:3owʚ@M(lJ?~m ^*mhҙ>Vھ7s__X[u\V麾6jܵi=e譣3~l;m%?nLڟjJ=_<\ jRe\Y7 "ǜ|q?E-7CP쪭E/[RP(u?›F6PK!ٛqdocProps/app.xml (RN0#Q *P+āGpMbؖ"lάw46>[}`e>yV:m&bV ,.#|//`ǐ4ƌ$l\MJ(lERRr`*-qEؼ( ?ZjWHUNvkyǡ?wf\j ,. SyA`+j|/X_AD+`#w-E'-Jm֍_JCy:;c6lQᛳN k+a"!`Z/,ɱ"tk8&Gtjv^8;bQ@=G0<nŴsZ7GÿPK-!ߤlZ [Content_Types].xmlPK-!N _rels/.relsPK-!dQ1word/_rels/document.xml.relsPK-!|q<word/document.xmlPK-!!Zb word/theme/theme1.xmlPK-!܁:) Gword/settings.xmlPK-!q^+[docProps/core.xmlPK-!:word/fontTable.xmlPK-!yn, word/webSettings.xmlPK-!Nym %t'word/styles.xmlPK-!ٛq)docProps/app.xmlPK ,pandoc-3.1.3/test/docx/table_one_row.native0000644000000000000000000000104407346545000017115 0ustar0000000000000000[Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidth 0.3333333333333333) ,(AlignDefault,ColWidth 0.3333333333333333) ,(AlignDefault,ColWidth 0.3333333333333333)] (TableHead ("",[],[]) []) [(TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "One"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Row"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Table"]]]])] (TableFoot ("",[],[]) [])] pandoc-3.1.3/test/docx/table_variable_width.docx0000644000000000000000000002342607346545000020110 0ustar0000000000000000PKuHL _rels/.relsJ1{b{wUDdЛH}LHZP PV3#za uMh_hDbN FH^#rsZ1 yi0nYm+v׍D[- 'ZT8ʥ\De\K3e {gSK.: Kvc\SdYDiɢ=ϚE}PKrDPKuHLword/document.xml[[s8~_=SiȤLIly$B~jX0YH7Nfu9w|$Ç9<@)F9X$AE:r:;AL 8r90&$P!93Z YŔ02'1ɇd:E14HБq^]mJh("f,7K!\2T29MFĐ1aqs LXTe +C[KݸDdB c="|o .%\/CLɬhyd9?gX)Vt0 5R~2m<~I B "9\d!|冚A7qNǢ:!HHB)ZU"PJW7%'c`'| %]zB8'`(׻1O@5oi&4*n(2_ iP  +% ݒ;nKՈm'<Пga3 C!|Y`h"l`h%07@}`0ldqb0F0~P1M(Z "2H&|h>onx Fu/ncBژpԘpGyلFF0Adcn F"u_;xYLhM,^A=;؉ }vҹs1*6F<+ѱ9w*|{-7ͧf ܄ F2{2\ NR-zE@J z(⧢/\# .gtx5!OvL'e_jE.T#.u};y.b#85H9HaQzJr)2iCr\ot"/KAZlΞ}u`Kka Z *LG|IZN!&p<!1e^GRf:) ,@>rFEbd31Ep- R_!eYAGS ?lm?2 e˂$SNPinNPdErޣHvE +1+,P,Yݴ/[út7ܧsImgbxiQgr] R J׈gnCVSf [.LZYߛ bwY׋Wa ۸I(Ix~$P,:mm,,%+b|#12O:tS0v5t2$i ܭ>p;}]-}q%֜7 wͩ8|.R7NU) &Cj`[nٟ.EM2NajEV9Ѷ~$, }M1^G@*2&Dɽ\bvde-g=:7rg,IB%)_I}I,R#Co/Q=$2>~9xXfpKڷI21y>$X%iQ8#&AM(~"S~e4A)с+ K@wiHĒX&"٫iLOm!m<~}Vof\|w m8,a;:O;7{`C8厦ōy0Ԏ .2Q"Ί3+<|1^X{ʃ?.s|߇c}_|T1#y B|7m_rC"Јq#"t??Nm=lhztttttq_3&q&D#"1焈sJvN&}8pASD\ qA:'Mɚ/kfq֛2eƽXDӓOH:I3[1|uf:gt[uվ U P 8es[ jo8Z5!9Z-Y*R$uUV;t2]D-0xrP=042dD,NF_z{At`I2 "Ujx׹dI@CKx~ HƉ3BRyYՐ%B6 {XbVz$'3sz,uWJ5\eB `TӃ_p;[Quv4>YoKUwKuO2YC,d#XɆP(N){lx6<3&" 00* J#<Xx*0%@Fg?я@~btSLIs$DgӍ9)YQ)N霛Iʎ@g+8#e+h %[Xv:P!=V v*PSB :P!T**w THq THA*D"Ё @t:N )@tB:P-@@. ). )@tB:P!T@*0w THA*D"Ё qG**w THq THA*D"Ё @tB*PSB :P!TdB{\B{@@tB:P!T@*D;*"Ё mYn7d?iqsZިoΡvG@QGf14_ಝmiNڕC?89j ΩL\j IW-sҖ}`%]Tj:mib/ݼ}5:6_;Jd96[*/+t]-~>^m^ɖ8S5n\tJwޯU#R yd`vqw'UAŠNNjL_>x.-fywpoDZl_R LF&4ugikvܭqGxo-ݲlS yk9$/!C Gdn՗>-S~(Y5w 5NyFy?9s2 {}+3i6{ͦ7 Spnv%8mഏa7j*Tvӑ밙wlloҮMme} !W+d_Zi4FEy !&}I?Rl^nSp+g+W5.Iwu4.7ؼMܒDߌF[IቯY^@Md{Uc'}d,0)$*n: $5 dB jmSµQ5}-(]$dHhw+t(e'+lv{LF)8PKvdmPKuHLword/settings.xmln0 {*w( qA4CBゥ$M"԰?P m֫EI%7ڒLlz7i%*&Rqs5NXا h%Ya6L%t4;PKuHLdocProps/custom.xmlMo >EýBUkm5;ė;Ԓ@ݚe}tz4ٔK? ?9Q183~nvW4Ty*!2j&p9PX43P56P#4XSn6v%tykd.H;6%9qڰ<_YfY_!op)BOb .qmOrݓdUwjrHPCƚt~Ai۔\0 -uހEZŌ*PS?ɕ8gsYOrh\8} L؃vJxwyjv~gm6jئDZ?z-S20\ e݇&5pyrgZBտ؉f<`M{F~OIƗԕ5lDuI.ڦUf=n#9&sPKuyPKuHL[Content_Types].xml?O0~+J2 v@beFƾ\!@Œ{|gm]m b,2:뗕x\b6]̸c%VDFJ+p IS۴Qy9_I-?ZW6=5$#MkLj-/Ե[Dk)swurr i 8_<fB=7p ,Q5Rp'lr!=>ΌɰeSp+qT8}PKݵ0ANPKuHLrD _rels/.relsPKuHL*s6!word/document.xmlPKuHLW {vword/theme/theme1.xmlPKuHLdC  word/styles.xmlPKuHLvdmword/_rels/document.xml.relsPKuHLrT]Yword/settings.xmlPKuHL>;word/fontTable.xmlPKuHL=%@docProps/custom.xmlPKuHL( docProps/app.xmlPKuHLuy!docProps/core.xmlPKuHLݵ0AN"[Content_Types].xmlPK @$pandoc-3.1.3/test/docx/table_variable_width.native0000644000000000000000000000247407346545000020441 0ustar0000000000000000[Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidth 2.0096205237840725e-2) ,(AlignDefault,ColWidth 1.9882415820416888e-2) ,(AlignDefault,ColWidth 0.22202030999465527) ,(AlignDefault,ColWidth 0.4761090326028862) ,(AlignDefault,ColWidth 1.0689470871191876e-4) ,(AlignDefault,ColWidth 0.26178514163548905)] (TableHead ("",[],[]) [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "h3"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 2) [Plain [Str "h4"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "h5"]]]]) [(TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 3) [Plain [Str "c11"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 2) []] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 2) [Plain [Str "c22"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "c23"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 2) []]])] (TableFoot ("",[],[]) [])] pandoc-3.1.3/test/docx/table_with_list_cell.docx0000644000000000000000000004512407346545000020130 0ustar0000000000000000PK@![Content_Types].xmlOO0H"_W 5E3iIf9AR6x˪A^c}౽[\Ȍ<)8RMs~~ , g=s2*D !0u2~䪮d̀f[ ml !"2ؖ]D#V`/Q2i˿ j z!31-Oi4y H󕞳Yø߻'vxZlPK:L customXml/PK:LcustomXml/_rels/PK@!t?9z(customXml/_rels/item1.xml.relsϱ0 hoPK)t;JGILcXji߾+t(QE]1hjP >N~j.G{J D60o,W0H9X)ctl'_uݓ|P=;6w#w Ev d*yB1ߪ kPK@!customXml/item1.xmlA !@Aw0hB`eDভw/gt=xg#b;SMIx"t`QM;ȹ`JvMxL T]&~F/[IwNePK@!jUcustomXml/itemProps1.xmlj0Dػ"r['XŐkiWEm%I.-!^cO̲m_vF:DbCi|o5<LJ^&E0yCE_p-fNJZH,2aJiդhV,H0W.g֌vUU[/lγc mܿPK:L docProps/PK@!c})odocProps/app.xmlRN0WYg)j5J#{Xul4էyoh&=&Ҙ<2Ӥ#62֍B/2qs1[g f4, ߿ZAwY6oɱĎ[4.p,C5)ZIq uj kix 8C_;8& "Ji#UG! %+ ?Ie6d|nL+|ޞo9IPK@! jtldocProps/core.xmlQO0MKG7c15<Ib46mlz_]M"v`Qj5! "(T y_;cJ\+ fW)7 ^6` Iä́3 P0xBRۂ95o 0ni Skr(@9 'ց-↺,;Ŏޣ,F}1?G fŁd.,G.1 Bџmkk7p( c[i[t.%ΑjGDa7fmc𸘑l0h$86ol͐5PK:Lz=&docProps/thumbnail.jpegYgPZQP)"K/[HR@-+ Hk ^!Rٝcwgg{̙syy9m7}W\h*K@;\Bb\zWukׯ5>W Wo\7^#uk0v⤮A?D8Mx{MX}PQpJE_&37-GW.PJ:A"k{#3s˼;Bn)cȬ?uۢ.Bo/h^FgߣO _@uZ״hͲ/=E 4NDlMkYSn% h5`z0Уh͍\nl%W>PzC |N]%N=G{ Z< M@5`p`"-E k[*7n֡L-cqlQ`it:E}mmcم(2گO%S'oIiÖ.x-o: -1M|LiwqR^,72\%*_D=Xc1'{O(p[~0F>yއw\.>)Y2WBYf69` EK(1@/A&2S)|qs{+*bgOD  E~5  ox~O1 axVSԭȦfkFíS7m.Mڏ㻆%cWan!o9V:>C0\aik+fm![s%Z~Fu7)R( 66҆dGw-k~Nl|e:2r$NE61D\S|0xiid ȷI<ƭ:g]'fF|bLiVҟM )iR[pm79Wح-cqirLr7t\-CFCI\UJ\L ys巔nȤ09r*%BԻLذ}q̟6 3Szy" 2ᐊh\e$mm-Ϸr)$qu)hecOaZ͗8@A rщ|,xSsexx-?ly3jcHz}P멓$a@Umbʂ1٠1RmK8޲e\SyEW00.8ձD_@{m}Ac%2$:9ʥ]ո#۽=tHmVq~'\X.go͏Co3WALUۿ Lj9nw V&}`#3uُ&HYYdWb+N4ϢP[ھÄW..:p&^r`k\H`X{s[tRxqBJ64`\)|j~8s+#-~khrrP])[DBf ?*MZh\ &0_nrF ,Wr >uKJxH)AT_=0+ g(+L*K2q\oOՅLȾnf_q7/آ1q(6@œ ;N}"w#r_Dl= H}u*lovז[X<>!tO6Hyq} /`) P68MVsh`kۅF3 F֛Yܗ?TW4R>ғ}=؊t27X =LyRiHHث ?:ՠc_95 jr 's*(v[kto'N{7Z#!yq]#QgmERRo~2~5qqG/Lpey#-8 ̈JS cW\?g*2bdx&6f7U1pz\tSj¹,Q>+k28}xGy*>ρjmp-ڻȣOX3ZMuS|W.8 >_b[1f-~cf 2*B?«Ru=TGqyo$Y|Mk%gKd]֘Y1$m>ʚ6Ty Ct{,7w7Mk]YnFuk:Bɖ&d>dU˒"Wj"/m o@r+>lHA9<*¢ K~l'*gJG\AHnT"{TZ9GOߘ&ԝTe@Xh];?ǂ.j%2βD iD({:Ҫ(5D3Tnmq2E„J|p>ifp?Z ga* UE` ]T]R\Qaq+XHQ\<24ZpV,/%ı /~Csey%jP I϶$:di`y)[%C]0HL?B}RϺ@hkY쥮qW yyQU <:Ex)q/aoe2?f/ rK% 8kwg}Yx9 9L,z.=qGTVH>Fj?V8ZI2-sl_7Ln ;Cǒ~<gu<^FԚ4IC]Rj9i3y9MZe-1eݓJbwF.D$ İ-1//l3!zdi jXIt!gۻH&=:~xO],ctRꏤtvI-^TAC-o-n0;lEoΆ*+!n$+2z2ޚ`lV#,ɏ2EXe&jYH#5`~g#ʻ% *4g筟垎 |$O\L c,_W<kq^qk\l?!7(/ZowV͹jr@֫ܮ>.p/!JةĖ>Liz;|xyi #/ |C&/f\GZ6*콌hR$%D(h~ZRB[p3Ϛ^m}YW#>P{R1ű"1HbW)QDW z>?5جȋCJQ\Q&Dfz`q\}Hpy}0,{جd]mȤCVMLXdZE(H_c摽y|lI&xd"æSo/3Ev˘ȝ[[@#]hkՎF"̩5?>qpi}mj!|e[nLVhy)ֹ R _F>{?**\-,[6C5Λ)Ik55WI246(wx ̪t:- B^hV٩;7sE>_x:EHKY11Ѭ8èViQs+ml+tuCttU*K۲6ipO_]shReL)QBXuyS(]9]LN5Me2w%FV:q۽ DJ^KXr`+u 8/^ YT@^:!{JMq@x}{e=//^$QEb6 gMA@LD'lZDy_:pw(}*b]ƩnPPPA &!{KgC*|-d+t\rPd1A\P߭'S_3aPrcp$1jmGZ+0%EWG͓iS#WnMBDWm86kf(jcBr"g8 WIzQ7黒LuI972ّ ǝBn³AG VF }ѣ ڀOzs? *qX1`dmqiWUC-2NE6h$6 fDA3.ήPx~sڬ YaFn 5FEU!3+*,9Fڨ; /_8*ܭ8x*-C8ip}a@|b?Cs/XwoϢ?z/䒎-u#ߟA]@6ikXAI2Fq,0RFj$+ dNXָ/Uߞ},5l1ݪqCy'5s:~Ԇކ~* D=lcy*| <]w)xQyPy^h!Ȩ9)|%`-Ѣ&%!PP_ |'/@Y^Y9^jIHO֨b+{O䱺'Cg,?ւ˻" 7{*IS hqs %J:9:Ec7Jɏ4%udIjyF\[>`A|rhx(ht8&yqfM؟IvA UJI_'qTmUGۅDJSnHAXCCVK ̌WDGxy룗So)bmVG]KoRmg]ӴWo9*k=pdBҝ9m+0%:6+ss&$O&-Gތ5MDoi5 m9 N*-i3ڵo_Dc,0մD+hpɮ q` YQ.eЩ?#s&1PڞҺG6$=Օ(Y$m'Yw=tW/ )]NPK:Lword/PK:L word/_rels/PK@!3word/_rels/document.xml.relsAO0&w)-fl5U1zWh-i{2FC"1E5m F I,Ɣ#;ɐdLh[5QԦL!A6fMhmOAoPK@!IX1Dword/document.xmlWmo6>ADPp^ #ڏMa$Hʎ{|,gi5=܉xZhK˳ڱKj挱O0P~=YG<0 OM`V)CԏY砙?-@#*dooIنGݖZoC҇x\'d[%" d8h#&b?UMFp'++c,"۵+X e`F\ Q;k^ӝ?/5~FO,h\M-@VtvZ-g,r@ _y@]g7Q)N\ cDW3hkJ# Ī5N `VC36n~ bSN``yvޕ'0_PK@!Ej+Q word/fontTable.xmlTn0 HYIl#r1ХC3MS6QHڮWgܡC tȚ_艒HS z:>޽ӏ2 fXUH+GB|pBuThOЂ[t}dIr6v$KĹMsc^8|L˜:1p0U4fM%W πQ+;]ak3ʍfZYf%BmhHE$35 D W2CdWc fn%\0(*<5oTi h }DQX 5M .J-(:]plgԈ\'+aj8Ag7! r܊IDůծ<%%<gX %ۅV^AtQD[1:n#{S#)`7GaxY$[+ *p(D9(}O'7ȞBhח߮/W?]}jOWSnrW݃cO"~UW˟jɖO3-?}I]5GjaPK@!Nsword/numbering.xmlXn0w@v !tZ:mӴvڵ '2n2{=^av ih($˸Jr|ϱ?q%%s6s`u z?> TM! 뫗/. L(Z mp(K>S!6p섋o!R [Bim(FaӋ3.(TSuGg3 O0jef9b<3 d|:#U\04=[ L.pPhzq%\ Dwܦ` J֙Gt@1yD3ˤ|I;?4|-cfq-`9NHWc:ҺH%`>Ŵu;Z uaOm zXY1QZ"rPXM~4kĬ}Hq=oBfE"O$ 8ABe:Nc(^9}Y 9,3ӘVMSY@6OqS;w.R>< Dƣ$> ȭc(}݌ <_Pz%*{EXwT-7m4m,eQuHɴ0^%YtuH:^%u"URXkʢ4fkaJ$kuJDƫ%:AL3,_3i/$X4R26(Pxk iZCNH=OPFdMV!SisJرZgVX :0*R=C=`n'=JR)%v yQ+`6whjݘf/oM 5#MҵQX(9\r6t\|.j1 P3ha,ܙn{]~yiG.ch.n拻ܥt=)r5]g}~yh.ㆩm_:L)EpI@K-Z[nVo?=rq Mm;Af'!Ţ? .i@.?zRd>X/yx\`ί`6~x%%1ʀ-SUQMWOC~ڏجf~0Kѽ1fw7[Db]F[F24bHk)M/0Aڛ-uI$?bؒ]B#{MIdfsuݞW[+NӴwPK@!]"w>word/styles.xml՛n8wt;in5MQԒt:ر{'^}LSK1 {aix, !""l>1}εyJS: ccNGӘDr!UJ}TNJUvBe J$N=tԁ!oeu`yKOk@΢z}uZ^ulؠaw+i/}Ϸa,Ɲa> ; @ǟp;%@~ǥܿMPM ( x@8c@o G pr x(h `7#x@8 7#޿QpxX8 7#" x(h `7#x@8 7#xCoG >- 7&xX8 7#x@8 w;O,pooA4oG po_!x `7#6y =x>o~o9olI \Ё[N,{ `'\i6O5Ci_.kIx;; nlCYvOTWIEÛhYOnw">uVԒXQ4,j:79HE>!+[We;ogs)~pIS'XmI1q#" # /Y|"ek57M” siLUqktLg3tT!Y$֧Li@,~=ߙ/ʙ$S=4er0N)#jH?aOPV: ȝx9vKGY#(c.k?3Ԧ=wN6ȷsVK,}i; 9shWdņg0:V7j hV$)g!~PK@!,tAword/stylesWithEffects.xml՛Yo8 ='6i6zuLKMD"$'%uRdi}Er7q=Qc{"d|>?҄$jKDgp5Z%_hZ-,hLԛR(1olZ N;HP '],`b?yf|H(73!cͣ LNτh6e/`i/%>NqX `GEcqmh 3+,cu^K,Zd3nz3ouvtn~%8fFqE~c bm aYDV d㍹yk_Vhk-ɂ$fv΅$DdFܳ+g)e}w2̟?[ 7q/13o.bD vu^f᫖[XDc/J.~YD(aVDL.a+[k)k7Vr- .V4FjŌM5''RYHz&m}`_>{?=уG6P]qS}z݋_Rgto>C>&9@;< PbbSlā1Ni +̰!UL{wC1VFÅѦ, 80 cIvw.qLM,! 8 1Q(}1ݥ- .Hu05d@LtFIAw7[wP3M_EBU`fbIXōWXȨ1UhRrw"åHq&[bRQ:sط$"{& ̹{GQg:#)6WF%xB9K}uھMМ 铱0z&q+:q;ϻqC|Q'jfQ/ͷ.>}& }s~ߜ漬Ͽ%Ϻ36S2&ܐY`߇l$a! Hp UndY$Jwv?`sN/jrCllY uAi5.0'R㚥J5oB JpVhḦ=g0  Sbb5{&%ɵ'ۋ UZIi Qdi0 kqUsV95wj0M_3n3`h&ӢrC-ВшxjlZS+wH ջopM Gd٦|g&yͯ5}m+X}=Nkfҝg~M/hTxlv<>*yxU_8[q)Z<;jn,q^ٮK!l(>7z3fL`EfbdrGL[:wQp9N. $lLXgHI\?Jgbfs|Ebʛ]fӺz]Vx6%9Tw]Aڳ]PK@!ʳCword/webSettings.xmlQK0wP)k _PYzm\eu r\@!P2/TRP^eL茧:Ms}-$?9%pVcJS5pNi$)ôInK'}SwK{g!e^G"RM͗h3ndYAq)oAl$>ryX^UzE@4WюRk,a.word/styles.xmlPK@!,tAq5word/stylesWithEffects.xmlPK:L A<word/theme/PK@!!Z,<word/theme/theme1.xmlPK@!ʳC)Cword/webSettings.xmlPKWDpandoc-3.1.3/test/docx/table_with_list_cell.native0000644000000000000000000000154207346545000020455 0ustar0000000000000000[Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidth 0.5) ,(AlignDefault,ColWidth 0.5)] (TableHead ("",[],[]) [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Cell",Space,Str "with",Space,Str "text"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Cell",Space,Str "with",Space,Str "text"]]]]) [(TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [BulletList [[Para [Str "Cell",Space,Str "with"]] ,[Para [Str "A"]] ,[Para [Str "Bullet",Space,Str "list"]]]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [OrderedList (1,Decimal,Period) [[Para [Str "Cell",Space,Str "with"]] ,[Para [Str "A"]] ,[Para [Str "Numbered",Space,Str "list."]]]]]])] (TableFoot ("",[],[]) [])] pandoc-3.1.3/test/docx/tables-default-widths.native0000644000000000000000000000632007346545000020474 0ustar0000000000000000[Header 2 ("a-table-with-and-without-a-header-row",[],[]) [Str "A",Space,Str "table,",Space,Str "with",Space,Str "and",Space,Str "without",Space,Str "a",Space,Str "header",Space,Str "row"] ,Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidthDefault) ,(AlignDefault,ColWidthDefault) ,(AlignDefault,ColWidthDefault) ,(AlignDefault,ColWidthDefault)] (TableHead ("",[],[]) [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Name"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Game"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Fame"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Blame"]]]]) [(TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Lebron",Space,Str "James"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Basketball"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Very",Space,Str "High"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Leaving",Space,Str "Cleveland"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Ryan",Space,Str "Braun"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Baseball"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Moderate"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Steroids"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Russell",Space,Str "Wilson"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Football"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "High"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Tacky",Space,Str "uniform"]]]])] (TableFoot ("",[],[]) []) ,Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidthDefault) ,(AlignDefault,ColWidthDefault)] (TableHead ("",[],[]) []) [(TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Sinple"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Table"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Without"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Header"]]]])] (TableFoot ("",[],[]) []) ,Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidthDefault) ,(AlignDefault,ColWidthDefault)] (TableHead ("",[],[]) []) [(TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "Simple"] ,Para [Str "Multiparagraph"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "Table"] ,Para [Str "Full"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "Of"] ,Para [Str "Paragraphs"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "In",Space,Str "each"] ,Para [Str "Cell."]]]])] (TableFoot ("",[],[]) [])]pandoc-3.1.3/test/docx/tables.docx0000644000000000000000000007600707346545000015232 0ustar0000000000000000PK@!Qr[Content_Types].xmlIO0HWj#TkOCȞnIn)y}[ML!DlY%`Sڎs>|NYQX%*g!g ׽ bBjsV"Σ,9* F 1B~1VKg,X{n 10,y\Q9WZ 2|.@Vmѥ+MO,7>=Gk yd C |ɉ!Qvx(vIT٦bkXH<Ĵf.1( Foa~ܡUH;͡H#ˡV4$AwټoPK:L_rels/PK@!' _rels/.relsJ1Ͷ4ۋ0&dEԅeq>If9AR6x˪A^c}౽[\Ȍ<)8RMs~~ , g=s2*D !0u2~䪮d̀f[ ml !"2ؖ]D#V`/Q2i˿ j z!31-Oi4y H󕞳Yø߻'vxZlPK:L docProps/PK@!~dudocProps/app.xmlRn0 ?gn_WAACSX'9m %AbߗEoՉ3Ñyb8MSWL.z ccC}R_o6DJ$B9sTF,it1sb9C<X惢g`^E/Em4rߞihiLiolB}F^bOEoA*F*<=גFÔɬ8?˅̈́q`L3ad(E(:WU܇ԭb@$x.ƶ7R^iwlRP(푲'փ mY)'z,zT[4jt3+ȥȼ%9=!-I+Gn^ܱL} 80&Sև@"7rQ[Oð@FaHY7ce|s"ME\,],ʒp$ kd&nHÏZ|PK:LxpJ]docProps/thumbnail.jpegeT\і.Z.;$8ZxaS@Ap M\ @ {%^Οzw7ǜkεo.q_UQEPr/?W}=~<@BG#GG5GMF3bz>LFR2~? 2?__+"ѠDGk@(>E8Nhi,2V53?E\!:ݙ,MnwtXLISy6viEi+!RzF8:'Mj;uvUmv\[#G[#R D&yV1l8B)8cPDG68mZmņV#{+ybE`@G#w&YΩE? %%yͪ} Aӫ>w۱+@B_7 <6vޓ1ΦlbV~x11{G 8XW*6NR݃ iY0O%N~,Jka0fc )~,I0(iE tDvSuPHGogZz1'_< Nߛ9uM)Az*(Dt+Jfa)3)UaSTqaMuBy+N@TB e?,bDn)R/J K6u,L6"'kKgVM;nSݪ-Rv*J435%dvaz*Q\r+t%WH3LMݯ:GNf안fe^oOt@ Ty B_Rwgm}bυ6c {EP b탌96/Pi\ ȷlP*ւ16"=. Ύ᯷bί.6b=gD33y,vi˞ø[܍$γjAjLpxٕSGDyz'|[,z@g\k*xy7tVNiHA[(7ٵGlVp*!d;B#ug^z\& ^bV=9ٕ46z֦.^0f])fvpȣ1^rf:%QK3PRfŊ^`LgDD7Aln3Xq7Vo4C(Ut S|% j=,&cw"ʂx;C)lbm æNy!;^3|[`{wENglB1x̸jcd>O,Q^W;d ,z݂'(A8̴EL}tnf~؄궵3?9zpi,R[hkD>G&!`(] D8PguأP*ѣ6j7c[hJg,pM~]ʞ㆖Yւ LaiI<F;Y4BdScV?!6wǘ7α'^R͑%t<ri?"%H&/lW4dW`~}]+K5]YgF*K"ezI۳V4> +O)_2/vl.HˌlvlJTQ'#_oA_#Yoh/tq6s;4gP2#~Ipmf7Ax5sˑ nkmNϴ´j ܰ4m/Niq.IT9TLWL,dz?>K[̋8r# vqt{x9ojDFoGꋠׁ/7[.N2gͤ`>c%'nnl+c Y~GڏZ)ұ eKMD*znr2/ֵpVQ,@?( Si {~| e\`\YXV~&q\6m,@ of̮E6muS^w!vwUdtSQ-G!_3=~'NXMM֊\^"zW=$QE\pxݸ{vù~!>;Ӝ桦\®X!R]wW2 ʅ=68"WR'ׄ@{wcw)nfX5CFڌ#ܟԷbCj92k  14ί挩cX+AAgig/%YEB~qq'W[5 T jm]G¬FNu^)2 W30*Ew:,Pߴ7,F:jlJrypEEN6!ɛA%uaYI7WXFAI7<V])M7zuz{kN+b۾ARҠy:3 n;Lo\ry'WYĹJKRV:]+g9 f5_4JK_$G;wNnnp:QуZvG5rME77^ҚǟNܷmgʝ|m5>9q1?؍,~}@@歉FU9 ԥ(n;m9)$ n@ Suh+yQ/:1˓1TxvOy[gګΖx~ӗq=g$x;hhho˕om ILȠIjxx~s80=2ȢGm x6z.L t.ȸY:}|6;I<6ZT{*bے L(:fB"]l=$ڢ~U8I2MU |𰤴T;ID}P/9;xiyfS<=3q; U"؜w~6<4Ɇen['X/gZiB+[2c**J141k٨,g9^ 9 [cOQs4t9 ])*\Y_7H<]أRzD>&w[-մ71cl߼M|Is4hV5- i:'Kml>2c\yBޝƌ|UF/>|o'v 9I|}&n;h -x@@B?p=I.l{!c~ag&\nOR>ñre7H\a0D\U7hX[Zax3%J\49N~W(~#u%E|; %j{70`˧0IDyh*}SnQ g%CS7Gȣߨ2ї狗?O"vٹ 1>շ2y*Mn#YWgX L֨ڈ_Ě3 ?|9  tXeӜj$G[>|fs5zfe[4*m'RY(9Wul&çQwcPqTU& UηM}Lp5ԙv o?5?Mn޳3_Ο̼Jf3hIdx%02-Wԥfk$I>xV릾ick]A&_s,={%;Ihty Z6֗ݦ5,8TN9Xee%4k%;'țN2ZʽRdbM[gFeJrH-EkuA10fԟ>.m.tƱ[ !Kԯ_( 2rYtNF?GV_"+!3*-hQo'D{z(|a\؞AbM2Tɬ 7xut߁5DPwbDpf!*4&|X!~ti1k]2'Bi$`-xh}}SҖ[|jV8ep%$bC-ct۱C5cd4y#GR/o! >Z\'1;EA6p[;_oJ7bgD\`=⏶\g~w uR ٵr ARU w|%~ uҟw'$x|&'V7$.;5O_+fp)m7I:']s+{Əo5qU՟RweTZ{bP,")R̾yuVTV# q~[lkr=贐2!^y~ӶbX1,X\ F]br?2]=@siޖ U@;l(mIyznIS1(B;W)Q 0b#W!ڬ(4RSh.7=݋Tz<nj1ԕZJ]aɫΧ[ DuGU#,>9: MHc=֯LNX;CҍҡGGr"Zm7Y=P:q^ݦ$yNxcS͢\Μ9o)zۋ +NԳƓ |6E3}RoV 9Yy9m21ȍ~Owg?IAj{X LP[hBY`ecRY J9W?[ϰ, ТXqxǺ{FMtuSTbm+`bGx1} t"J}E jφJz-Q cWۊ5a| uE. )n?SQq.ʾ [rl3öHohvO’1{'}P_ĺU/$ۓZ¸, :~B~Dz`${Æ8!TJ)~uSݙ2 ȿn1S]M|%]n8~N.hpS؆Z8*s@sOD˂`P&A8;3%[9="hZvz56>9LURVն~[ 4Ǩ1^6A1}(M1䥠؄ϷA#K,YbhR{9F"mљC)Ӏq4@(>}OĆwA} ZaA b+'f0ɡbym<6.F &K. mpY E"/w5R27VIB7SW~Y1rDQ~H2"9E_>PRr# #ǞvZqC2c<|-aЕX qvj=Rȸ2_rbQѴ>֨ԫ-&%`bB詡ߓވq2(PwQܻS{,) 'KSd*zس&-?ݺBd||\.\نjLfrY]܆Xw^WEo=ˏFĿv#V4[S q‹e獘KE|uVUfo0I*/1 m Fi9M\쭱"MK4e?u9Le~v`J] i89ZJ<4:x9IT,<.a `mC%h3}T'ֻAzq(ryV¥4gUח $<\k]oS,^~ٞfe|I':w¡jpei }>mΑjP,# hւ)U:2󌴚YѝUOU" F3zM(p}K^t!NZ\}:|)v*wJ)F% HQl gR*HpqYxeR5_]K$i3 Q1sn!5/"QfA\B 5OrOleT̮GWτvSQ$NV4vmX>>#$%l%xR` VW3z+|p}ZvEiS=ƧK%ue℅FH[+RJwzrDVwyBڋ9lN"+\l1D+UCª  Q ]iqw0Qv0j7M@= ®M< dEZX m)6.tc~PHdkSP U } UwffWS'u|\ Y\!ЈIVnB&kV?I ,RegGn1B&TDPEtKp5ssv:_Oa| `D L'gmcWxPjzf1)*Lܿ' q m4.u7T˪sJ{Et3zb>(m:̷)ȗxRIR}$8 6;7!.CS0hkDAJij.W{Rħ|^p kY}^~覨qB3V%Ey\YĀɫzRXR@?gU%u-i+\/]fFX>#SCSWUot0|OjXU5*ƀVu|7=0!IVY_eֆ<_s') ,)\.Ez=VNMVnK| :=+J%J}ZXC쮞d_gRgv DH '5\HYrk:IR⥟6sM%Qny`8[O dNfl`s)gs0ukCL4ߩ:ɜ$jPgfꤨa`@6P%d kQX= oT48:Z.i=)_T#5&NIIoEij'?f-ci¹U-ȘHd(7{].7U4jM, _Ъ5[[FPa8"+Y`"#œ*qW߭df}Yh\me.TE{m"a܋)~ G4Qba5E&Pj5E&'"UuAlD] TC;)j F.]1fM툂&93*Hw̷1D#k'*f? GT[.Kz2t$ѕylʔiX`7 Mofy3_Knz}p|#RپoHenN\)oTQlU"E;tnjMmA,-A=8B ~[ }Ga4B7f~*ժF"ls3]SGQLOoqyNf`E<[ҫ3/|s]4HŔиNd*|5)ZnBϫzogrchL*h$MӍkKEb$S=T"VUrh6۫Yp bzs,I2YCc}< 6Y",b"[0D?H/aǤ(,Q@bP £$%$POÖM٪cI83l\=[XY!n+odj`oJ3\^!ǬNnK?cr&2W&ep XN&s&,8Iҏ/i':%Ll4v:K^hͣN&(2J_S?Ue^Djl!3Gf _Hy(bbq+_qYJ-?|f23WM|E5hr̈MQ#A"3N J|7-i,\[~ؤ߁C"?Qw-9&1 EWOcLZ`ek 'IޙJ7{|E{|O9z|.%>5eM! EMˡuNο[0A .Vmk>)SW,xdlX nȫgcMݺ3ܣ_C<5UO[T*8~AXg͚<#נ &Q9c:hM%dc#>}[uR)qLxBTeL_3-v.oG Ū@Šrp 90[z`N]ebbtAO5C|@^"s)gHJCY"_Oi?5`g„C8gMFA+4pݡ4f;8iຈa/ZCpeCN3Ke8>Z! Rv/|C$UHӦm9nob77*taeG^c@}df¶5ئ\n/؁iN+Ӑ];}!8;eQT¸}w gۦ'$qHm&-DӰ7d?b,ol^QT=sϰ%ۆ9kK;/ʼV/ɘ1;+=fUqD\W,ܳ­6 mKZMü b"tX{62F4uUO;"BlBNlBظ.yE!-F\hm RؘSPĞ"cgĄKqVN#`5®nl14%Fu2Im *Rv!y"@6H:m!%eҀĭ=^ { ݺ ud Di#̆x &Rik +ɵ#n[Uj~>FmoaT%h1{|u2RUܞѾ{!Maĸ^V .:E>ȕ 'E oxK%!pK?-mz zNaYYi\R^m$3$LXu+VXUnΈ*!h$c4v(pd r`[`'iP]?|A;>/ e@ Vߛqwp)JTM[Nji(62nfAqyMj\&-.p~+ -h[5{flP/#꫺w\ u@]8fܯr$>.^~[ `FۭA˦kS'Z3hHA޲u(2 |϶嘷~N "=*lȰ~Q~_"IGԻEq4Ť  jR yT&n rNoX$*{ƫ6Mu {īfw!JFKyaa~_&-2R %Eg]$qu sHVg _32'WV9򛉪*:Lڡ*] QmG@9lOZ{#Gu6sf|®jBHm.ՠj!. OȿLZ`ȇJS|S5Km~/POfU)oQOuUzK2$("FdC0M-U<,JCRMgN_H^v:ZF fkmΌiTPXwofFJ 9oD1us'Wiȓw}[GF.'H烧UΒCG=*moc6Vr2L1ㅀUlvn`LJ9Y$L,L8|g 2*9'3 bobX)/h<[>~0ɳVHP-/+`WTO0[̘EyyXa 0f9DVnWz̰ &-e}ֆ&~ .$5eYv ugJ('Q@zn})hl(~' ]fUJ^}GЉ2.n ,elrgJ=D=e["OB/tO@d' S*2H,iC*xe:K"(_/PݟBo|7'k.NQ c5ATdOe]y^Ha~ߔD6uA*yW;q]AHK(Bh+-J"1iA "EAuU,P@BBUJH@:,q|:vfnyf?@t`c9"0w8uAxƽs#6WfeWeIMJ 'x2%)>nUvz=FqR`BW-ك qx'AL I^@F:3^ 4o#x.kW.2=DNL]$Etm|ܵ٢QKPwDLj&ؾ|)$d v=6sGJ͋+RJ,_BUY1|Рr?~VPW4oC卧ŭj[rt&dlnf/;ESVSuXkA&+hR> fr NA*E{m.cώ]t`h/5S<7ۊ\j.{%UWK$ӥ1~r:4GjTI+NU+Q-b HWhSTnlWSᒒlH;i{ 5p=D~& vKVcO&Ҍ27To^0ߘZ.>gwMxla{%`V7URG+犳;ҭtH6zߧ?57Xe#l53a ifõQ[żt2_ߔRIn4FZ|8AlJw=3\laa_ȷdvTcu[Pm9ze.zpMܹqTDfj H s;UUm{g5*7r.;-W< [,ȥmG(M} ME-,: Y;w.r S}ݨyy4шi54DKs'I6GDm;K<0O.Hxm,yN_l+u-]>FVӨC{SQtU p.[G6☗FDk`YǏs7'ˋ+h(⟜侮YpB;(Յ,Qsʭ/DwN}P~&P]P m6)T v#$/iOGo;NLT{=\,|zҖ=tzB>,7mr[DKYŷ@A"9G+?X.xɫP`x>mIP[fV(O@p@a%v-TjrpXbP*4}ǨWqtF$ Φݓcxp@kå-,%G%dBs4y _i}O(ĄKۚC],u~rXvql7}vSSޟU&<}$>?b"^L9$g`nZIے31#H'9 ](`/y!JE^5U3He))dʄFPdj @E$LZekc&+*Q {v2Є}UhtKI$}Ѵ \vsUؤ[!tKջaKڟR[+xy4%PNܨo- 9Cs} *//CJ`DKV]MxzsyܶOOZCfxθcx+yhg5[g g}g}PK:Lword/PK:L word/_rels/PK@!huword/_rels/document.xml.relsN0HCw@AN/+qvubۑ1BgV;YZ/I,< A+]mi}v I aK8: ,NOKmHb j k4"E'y#(J_VQ!eٜ~{ɪW9$d;['_ Z`BBsҘlbJw<P1)A0~1w{[mc GA]ّzw)J3?_WϚ;PAyo`{PK@!pfcl*word/document.xmlr63" !NkN$#cl39^+.Myl9:wXz :=OCC&Ȳ8vq|qTdf+Fhxƞ ?*MɉE"jIhз= [&N LJHÊ&ErÂ* {[]!Fq@{=,]U>R#382NVw"g[tCXys笇4w>;`X]^^*loٝyJZ$Q~7UMcSvOEOղ#dɦeѩ-;q > g٥mXrއ t!/а .5GC7cG=܂QlX!?oz5콂j z̓C02VDBln䃾aYmR0IKXD*S vtbqTl;hzNx@M|:<1E>]WSBuw{eK>k~pDKH'ѽV]ӄpXP}d.פL* s_4:]*~Dl{PXj;Bt!S\GE6T9fFqyiz\sa-+kLR9S}bL.[?ʩG/f=QYjukho!\ ;AmWZ,-jIV\)>p8g 8'[*`N,l ֔c5\A;JKU^ ^V5ѫPK@!BMword/fontTable.xmlSn0 (YI#rХC>MSQ$eǫw>Bѡm d+3%; % <]\^K̘\Ep5MQvCuDMЊh,|q1Z9yep쇡vtsm$q4P*O%q|w0 54眲7V)χ `!lsm&єY o擄-MIN:wxLs#O#gR@҆hDhHD 'P-6#"E8 >]|Fz#-m7ΉbAItb%˧P-g(EIHnU>F9f}qу8_H'zNx9P<ػԻ&Qܺ#co[adH~YxvV*S?^0dqdV~ EO\>jI8f*dV2!Fa]ŊᦋZ(s,̀LY0IZO=U/EC䈪Te=u׳Oɢn{VkyAnf9FC+CW1p ٺws+UoͨF57jz Xn6 ؑy;, XaqR[#,=B=t faTѶ#$ n5[aCCi &%uӪ/}ft3o%<4~PK@!NoJword/styles.xmln8wt9n&@ڦuڽ%:F$C~I`Y9)mF4G* SyTHƓ?x=n PA7@ -4xp 7@!xpoB8) oZ8 oB8û]-xp O7@4x 7@!xp 7@"xh oG?xT B7@ !xp 7@!wxoB`FoO juߛ6+QAQ0oaEǽg{{ bӈqp۶%-Uv{kDž[{LMߢ'LgWaqJxQ5SBꡖώX-(dfk«s9VoJtN6U+OjSyĒ<9>]ujNv`=]=OJ%T;nS:゚ oR(w6sk 9ܚꄜ)^ nZ_ ckjQϾҘǰL4Ub1YZ4>mh~53>6F͈%e7{)aǜK1w3"珃^X{DeK H$fg5,`Gŧ^ᇲ9>Faޘnk:-B1Ji$Yۮhrlpˤ` ~Eav~QX@\X=)'r)~dtЈuP`)耕Ũ5nd9"> MCqGeNjS@ );S*JܑLzY߼j-mU)$R&Z<&BVܞ~e2)#$+\ js8q*zPE,GC|(M1RY5/hYyTXu?9e?M,sԂ[N 6v78084CCC!&_|ŢEiHE-%Z-jjQ xE-pn~s PP2wnC %sG5-T\훹:\ ``F!JNd8wj|d$h:lXgoC9 ̜;$$A> aXo\8r @Ȇ ކChoJ8(ÆlFv)T ]84?_ >cvJslzucR6[`y8< X:O$Gg|:g/ yjX v2\fZہ~ÏN好fc #[|]PѾ1~_;0}mz!f _"R؁h5Nb8v2[%;-쬛ubaX[7\WF@dҁȎxt 2v{ #"; #ހ[ ` k &.; #"; #";oo>) ` k &.; #"; #"; 2v{ #"; #އ?E,bM\eGDv@dGDv@dGDNbO\v@dGDv{SbA,eM\v@dGDv@dGDv@d.$eGDv@Y9;}KaMg0${؁l9`~C4$Tyam;e\]{[]R"l(Oqаnxzrɮ:e׌U?3.Z֦Ώ3_4dmAxu/GM/&b$6$~sv5y.z7ԏ%/!1ǹ({7t!1f[oȡܐS7,W7T4wWr{ypy?PTKEZQ_7KJY?kr !_`%6}X -"CsolY_A:ݤ1kO`JaC:VI,4xBnpJ[Ӥig"7O4jg[w+:<"b)gNO 40C%ߚZUʅYYE7΃FMlf%Y2FthS*xtx&w֥9AY8\6w-a'\8v2&2|efc7s6֧P~W: /8=0BO~QS_WZ9 y)z/fn![ؘ inG_1Weь0.dpvgn\ƳgqWQDmҌ_×׮J)g%fBYcZzTĺpG[/%Ȇ'm4C,AM`~^c쏫X*#Vݘ eQԅ뫤*#ٿ,: e/6U/PK:L word/theme/PK@!!Z,word/theme/theme1.xmlYKo6w toeVuرۭM$niP@I|úama[إ4:lЯ)ΣM6IIÈ}"$qr.,Db4ABBRnjǤmMeB\m+T*Ym2yBbx6" "}ozbGqloF#h֧{ b%]/SdXIDv@-9TbX*xжjDz/%SKh5~) щ`X:͒=翈zݞSRg췜Δʇ5֬5jqW+ \j+͍zߜE;J+ ՕfBFt22%d5#4f([ˮ>Vr- .V4FjŌM5''RYHz&m}`_>{?=уG6P]qS}z݋_Rgto>C>&9@;< PbbSlā1Ni +̰!UL{wC1VFÅѦ, 80 cIvw.qLM,! 8 1Q(}1ݥ- .Hu05d@LtFIAw7[wP3M_EBU`fbIXōWXȨ1UhRrw"åHq&[bRQ:sط$"{& ̹{GQg:#)6WF%xB9K}uھMМ 铱0z&q+:q;ϻqC|Q'jfQ/ͷ.>}& }s~ߜ漬Ͽ%Ϻ36S2&ܐY`߇l$a! Hp UndY$Jwv?`sN/jrCllY uAi5.0'R㚥J5oB JpVhḦ=g0  Sbb5{&%ɵ'ۋ UZIi Qdi0 kqUsV95wj0M_3n3`h&ӢrC-ВшxjlZS+wH ջopM Gd٦|g&yͯ5}m+X}=Nkfҝg~M/hTxlv<>*yxU_8[q)Z<;jn,q^ٮK!l(>7z3fL`EfbdrGL[:wQp9N. $lLXgHI\?Jgbfs|Ebʛ]fӺz]Vx6%9Tw]Aڳ]PK@!ʳCword/webSettings.xmlQK0wP)k _PYzm\eu r\@!P2/TRP^eL茧:Ms}-$?9%pVcJS5pNi$)ôInK'}SwK{g!e^G"RM͗h3ndYAq)oAl$>ryX^UzE@4WюRk,avw餶ثv(SLqWUDX˿Qw4S^ 0F"м\gsldYdLuH݂c9>(hVDۈ5{A7t PK!N _rels/.rels (JA a}7 "Hw"w̤ھ P^O֛;<aYՠ؛`GkxmPY[g Gΰino/<<1ⳆA$>"f3\ȾTI SWY ig@X6_]7~ fˉao.b*lIrj),l0%b 6iD_, |uZ^t٢yǯ;!Y,}{C/h>PK!|;9"word/_rels/document.xml.rels (MO0&һV]ٲ5٫-Sht ʢ.MfIZUq"=loO.Y$m.+gAT!,MQH(XI\qZbaG;_K /x#Փ,/d}?eh 7)mg;kk4Df2/wBmw4A^#࣡FkPܚHxȽAt~9' ozWnMtVWkJlNWz^>\PK!Seword/document.xmlUn0ݏ4y **T3S*I"lC|\;TUiW~sϹǏQ[ 9#aD&Sȸ,frpMchȎr;3H7I 4q)Uqd BshҐ2c0/*ԐNbsf 'vѴh=!7ڦ'*D޵C*Ҕ\e| %{"j49KwhbdM:8FEiq=P81s9,.ވ{ Qkhrcyhoޡ4s]T14~($hTȨMw"kUPdO3EzI;Mej1]H]n%Hk0w2j) 7a .:XbԲ Jd0]@K֏JҜYSyɀ oyǜavRmg{?ivu]ȬGIymoK5~>g(y}[P8?ih^h7LZqՒь~59=m*w)t!~v;yY^L*H98PK!0C)word/theme/theme1.xmlYOo6w toc'vuر-MniP@I}úama[إ4:lЯGRX^6؊>$ !)O^rC$y@/yH*񄴽)޵߻UDb`}"qۋJחX^)I`nEp)liV[]1M<OP6r=zgbIguSebORD۫qu gZo~ٺlAplxpT0+[}`jzAV2Fi@qv֬5\|ʜ̭NleXdsjcs7f W+Ն7`g ȘJj|h(KD- dXiJ؇(x$( :;˹! I_TS 1?E??ZBΪmU/?~xY'y5g&΋/ɋ>GMGeD3Vq%'#q$8K)fw9:ĵ x}rxwr:\TZaG*y8IjbRc|XŻǿI u3KGnD1NIBs RuK>V.EL+M2#'fi ~V vl{u8zH *:(W☕ ~JTe\O*tHGHY}KNP*ݾ˦TѼ9/#A7qZ$*c?qUnwN%Oi4 =3N)cbJ uV4(Tn 7_?m-ٛ{UBwznʜ"Z xJZp; {/<P;,)''KQk5qpN8KGbe Sd̛\17 pa>SR! 3K4'+rzQ TTIIvt]Kc⫲K#v5+|D~O@%\w_nN[L9KqgVhn R!y+Un;*&/HrT >>\ t=.Tġ S; Z~!P9giCڧ!# B,;X=ۻ,I2UWV9$lk=Aj;{AP79|s*Y;̠[MCۿhf]o{oY=1kyVV5E8Vk+֜\80X4D)!!?*|fv u"xA@T_q64)kڬuV7 t '%;i9s9x,ڎ-45xd8?ǘd/Y|t &LILJ`& -Gt/PK!Fwword/settings.xmlVn8}_ 蹎$I !JѦnx[ o )+d--dj.gnC_,96T*-N4ʎJnoX":¤*=I]b, Xf&AaJVZUfi9 *wRsbS'nPVrE,m(-<`dZĂVK#wֹr-L?CHQa}L0{LD KG8p"T(u#9e 8 rBLzlubg ݋ܟ {´ohcF,x[~ԤaHXȨoRd,tDyXՖX@Qgˀ XpdV`GfoIS[@07<@{IkA׊v%ՒEN)Tc'Y``!G9X*XUN\w>؇Iv27x/X3'2x܃W E`ض_OfèR$:2֍ag/)mCoN߬סl֬g4Fy}yNn` þ"є$[P_l*\XSMT.Aa8al O{^vԨlKt?NE)ަ,w;ABQՄG&=QvK,K/I%㊅Z|8Ǎ/ϝd{btX=&8O3NW\Ʋ"C#o{gg+57k<PK!Nword/webSettings.xmlJ1;,ٕ"t R"ivvdLjOoڪ ^z$@_Щf^ S/ٍ$0O:Qb gH(AZڦ[n)B(#1TJ4~ř%&.U]_oQh;;l]-e!2Y)?yh\e?eӼ,OUڛxB*ƗsP}br>aM|˔XKdPK!ua=word/stylesWithEffects.xmlmS8}CH4P7m60Zm@>$[1vl߮v_A7yI*dp'#O"zXwp4cS{H瀧ҋm-MImxPxL:;d8d+2;DzRNx|ƣeՙ;V=Z݅˒26ёV"_+1`82D|ey& 6YXt'mH'|p5 &B& kńKųh#|G)wϿ ]Xde\B<+SIA:*P.vޘ5~ol8S]wt`LET @%z:p;l.ýЌڨT%>LUuGɪ*(( HxF~{G49cZUtgD@Q@+ZsxZwK,*ùp\fT;Ξ!7,1 ;q>%v=W1v0odĹO&ߤ4^xdl U텝LzL_D砳gl7"˩AF΍\ChLzP `=mi.t*M+:>Ӹ;d85'+d蕇9y[."Q"1'\z憩Sr.v:Ja(zc!'&{SBDX3k@d;0h{|2ЂP{гRn"sIeaiE=~GG аVHGDSp:Ipו\i% ^ד!3{N\,WU\BoBPqG V|E}x߶@(o,nDu >^׎dnw{(ދ3~g$xx9զp9K!l+fMCvIČ)W/e2n5|;=fj%L}@\{CQ^'QxR7o-I9M%iκvw?oPK!eJ}docProps/core.xml (QO M -K%&h|#p %V胏sA.IR捐*fߢy :C*³m X/E@; (A6V1J[a'gi <3c3 )4_cAܟzeTMw|Gضm!?맗~XnWP Nxr-fίîquv {ٽSIr<-C~!(hgmY2Ke2T04ȩsFkb5gW6\ເ wŅoƘWiWi;ly[=ZtG9+ .4ؓO{?O<%OٱxQGFMTcaZEbb*]5{e_g-G\&sI.=m2"\cxXcU@hX)dZ}SD:dxqdز\V1L;2/\x%`IX\hMf$PѩղnXMjǨu *Woh&ohxCo VśW8_KPU 68+~3:=v&Pj7ŽNxX 'jRqěG qěG qě.ěbkCU&PM+mxRqt&Pj7ŽNMPE*PU7p`arsG #8M#p'[JM7ĖTo O7NƟ. ;@M&Pѩ js;@5V)`&8#oh&w?d<&PjjU \&!xf.pɍqOXkp8)θKD{$x-381_xqJ-@釾>PK!TG[word/fontTable.xmlܔn0}{,JVȁTEdhi"*I[;Pth.yY V렝j}.y|݈Y1m!:9LR5rw99',Dkf|+i l了&LQPWp U"#x1FSvR0if)8*i[~[<ӊ2c"Ჱ=#VFŶq {$R:zJY r/@$ NIgHeIC},O4!0,ĕN597*ddECUfCQ* Qd(>4Un@rҧ\ KPUV#qֹ&dAR{vM?}yps}=Z>!x58HK9߰VőM":4<<58W,w(AdKz ]`)jХocS4Y} JxGyRz^)pl7߷k[ ݸ!CS"`SdÿTL4ijnb5f#ȌPK!0MdocProps/app.xml (SMo0 0|ot>FŐba[ mϚL'dIؠٯe74i鑂Vxy]Ӿ5n/*r>b7p}HS-\Z{"=*88+0:gBb{qumzX`X'eӣ\0=pv27xMf;ECF+bO7Ov}Q;E DWF#`YQ mS[,nڲS6!WnP)r@jJ~٬u}P(GlZ.ې(Ɛޜe%6l 28/䨁m7]b BN3}PȇO CxxNC4y8OlyGyڽpnGq;lO5'B=oT.98PK-! $[Content_Types].xmlPK-!N _rels/.relsPK-!|;9"word/_rels/document.xml.relsPK-!SeB word/document.xmlPK-!0C) word/theme/theme1.xmlPK-!Fwword/settings.xmlPK-!Nword/webSettings.xmlPK-!ua=word/stylesWithEffects.xmlPK-!eJ}docProps/core.xmlPK-!Oz Gp:M"word/styles.xmlPK-!TG[)word/fontTable.xmlPK-!0ML,docProps/app.xmlPK X/pandoc-3.1.3/test/docx/tabs.native0000644000000000000000000000022607346545000015230 0ustar0000000000000000[Para [Str "Some",Space,Str "text",Space,Str "separated",Space,Str "by",Space,Str "a",Space,Str "tab."] ,Para [Str "Tab-indented",Space,Str "text."]] pandoc-3.1.3/test/docx/track_changes_deletion.docx0000644000000000000000000003204607346545000020432 0ustar0000000000000000PK! $[Content_Types].xml (MO@&Wz0ƔM.C~dgJKZ2 3J<*kROz,#m,eEDi l Fˋt#6"w9:0t[E[?N1~piMPir1/C4^C,_R&+Hd\CBwPV*h"|x0gV5iy$4V"eˤ9BA )jT(y>vw餶ثv(SLqWUDX˿Qw4S^ 0F"м\gsldYdLuH݂c9>(hVDۈ5{A7t PK!N _rels/.rels (JA a}7 "Hw"w̤ھ P^O֛;<aYՠ؛`GkxmPY[g Gΰino/<<1ⳆA$>"f3\ȾTI SWY ig@X6_]7~ fˉao.b*lIrj),l0%b 6iD_, |uZ^t٢yǯ;!Y,}{C/h>PK!|;9"word/_rels/document.xml.rels (MO0&һV]ٲ5٫-Sht ʢ.MfIZUq"=loO.Y$m.+gAT!,MQH(XI\qZbaG;_K /x#Փ,/d}?eh 7)mg;kk4Df2/wBmw4A^#࣡FkPܚHxȽAt~9' ozWnMtVWkJlNWz^>\PK!"ļiword/document.xmlUMo0!hJQ.aj^2$Hl6߱-UUZ )=7puTRLh)^.$0R/WuJ@!IjŦV%ahX5Ê3-*Yi8FSZ20bK ic4@`LZ3:+5@tE-_bGFNF%4 !> }╺MuW 5A SpQ4XtoVeWQ|T5{#WHl|pw%(zKLsx5;&墇5rz:^{,w1O`M;fN8U@%JdTH2a=UP'8l_SEtKs覴n,^\|ڥ汐/8NI8 ;['ukɵj IxuA+$N~l&V}HlF.nl!q~)(Rj]<&r%8?: q~̡|cJg"'?MP x!uʻwW'tbeKi0@fgFci*`Ab6Ujc߅/%[p=nB4 <JZ+w n4lgRڃ|cg[VKi-ٝ\ YM.l$zolo!fPK!0C)word/theme/theme1.xmlYOo6w toc'vuر-MniP@I}úama[إ4:lЯGRX^6؊>$ !)O^rC$y@/yH*񄴽)޵߻UDb`}"qۋJחX^)I`nEp)liV[]1M<OP6r=zgbIguSebORD۫qu gZo~ٺlAplxpT0+[}`jzAV2Fi@qv֬5\|ʜ̭NleXdsjcs7f W+Ն7`g ȘJj|h(KD- dXiJ؇(x$( :;˹! I_TS 1?E??ZBΪmU/?~xY'y5g&΋/ɋ>GMGeD3Vq%'#q$8K)fw9:ĵ x}rxwr:\TZaG*y8IjbRc|XŻǿI u3KGnD1NIBs RuK>V.EL+M2#'fi ~V vl{u8zH *:(W☕ ~JTe\O*tHGHY}KNP*ݾ˦TѼ9/#A7qZ$*c?qUnwN%Oi4 =3N)cbJ uV4(Tn 7_?m-ٛ{UBwznʜ"Z xJZp; {/<P;,)''KQk5qpN8KGbe Sd̛\17 pa>SR! 3K4'+rzQ TTIIvt]Kc⫲K#v5+|D~O@%\w_nN[L9KqgVhn R!y+Un;*&/HrT >>\ t=.Tġ S; Z~!P9giCڧ!# B,;X=ۻ,I2UWV9$lk=Aj;{AP79|s*Y;̠[MCۿhf]o{oY=1kyVV5E8Vk+֜\80X4D)!!?*|fv u"xA@T_q64)kڬuV7 t '%;i9s9x,ڎ-45xd8?ǘd/Y|t &LILJ`& -Gt/PK!word/settings.xmlVn8}_ 蹎$IB"Mı o )+f -djf\>{w/xcUZiUɮJޮo:")JB_v6C3 iKV9]fmw =R$*t ׋V Mkg-4ݨ*,G Z:)vZ&yI܈^t!bfcJv&7,q79?W^n(,re%y6kq@raMzG,μ+y8͙[i)ްnjYIeHÑTCJϑQߔPj0- iX֎8@ygˁ Ȭ*qw_`n9A_^>HE ,;ddz wo[ͲIv2N'CËdpᶘ^U蟓JbhQ%lVe[&qe}ͨ ~ /O=|a=:oIJΠ{W.CIe y9)% :xPK!Nword/webSettings.xmlJ1;,ٕ"t R"ivvdLjOoڪ ^z$@_Щf^ S/ٍ$0O:Qb gH(AZڦ[n)B(#1TJ4~ř%&.U]_oQh;;l]-e!2Y)?yh\e?eӼ,OUڛxB*ƗsP}br>aM|˔XKdPK!3/ju@word/stylesWithEffects.xml[ms8~3'4fvҤ/i}sKV c0'!}Vvo= W̝]GFZ̽x뤙"P2u߽7giQz{3wehzk0Djz*Q%x2ƿDy2MBD"usqa]eX+"KUr7 Er@z,2~ ǧ5s7It+t`KΌBG"Y׬T&QDҵox40q]fCI ϚLe"[5q{6ci߭W'6crhV &#+e[S\ȇ>g6U'I, ƧyeRZ"zgWwJ"''H-PRyr%6A:',uD PH }#V"B_;h f~lMr`eXt' !mx+Ww/ ^\Ă۫W 0}Zc\'Fc_ʿ2Mr;#2t.S(OAX3%vWh QA6V3PA ȉ^9+Z t-*rYq_ī"0xŴp;5S >n YE+jAӹ#+j!ѹ+j\Qo犚;[WxEǸľJeMzR]^jkDkG֪md9,2H/'y(}:u_x-R]@=F~?NPLlƒvOUs#G*gnNtgn9p0%aӛw째.$6e/robkS 7W P-:.gWL —}Lߔ'o c|4ˊCJ);w/T&(r 4IlHbt=Q-2P0(lt[NބaA#V?eI|b,mϚ|ܰPHgu8r%thh GE;>P W @ |5ҿ82شllf@0P$9uvPnPީ2[7 XMVChQS9FfȞ Caț4 yw7pMbs2yp 竾*7 ߌRڿ@M@a{ X8 ,Kuaț4 y!o0M @ɻd8&`rj @lz@e&7%o_NM@a{BJb;eɛS8caps  Caț4 yw7pMbs2y`Mbs^dM@a;Nw*jyvP˒7 7ypK8 C!o0MO Ñ7 SMbӃ*7 {s䗓7:yPީ%oA,Kuațٛ @8@E7 C!oP XlnZ&o,P @lnl(z! [ d'QsȕLPv XX@lwh /_gSjD8t|p>: ݛ7=Tn$8zf1r- tkWmWź&bSU>Qo@ąu(o XtD@$^nl[2 53sGULooSW Bsԥ!l3*ZywqIQB ir1V26O8jOCYhh.d_7o I]9m7$]׆Ptn;b"_ z-}]s4b$2@kϏO>Nkj\m'ab" ;3FU(t`Wgy~99s綉ӌo-~vxۤ,Yyٺ⾽48f6]dG?PK!]_J}docProps/core.xml (QO M -!mٓKLq]G,ۿ[>^^ȗGUGN6@$IQ7B@oU|"n4-ۛ /1`v7cKCqX|(m 㟬+L0pHDg#|ٺ;Lr^蕉SI2as)[AG'Gc۶I;coϯݮ82r 7][`͜_]$[{xZ^hCCQK.iBey.nCtNh~twubvM>)PK!=word/styles.xmlěs8oԱLN6GZ's2ȱ.|VX``7й#iWŎۇ8~4S:'@*7^$N�?HfH8<_FY^LR2"۬E*RhrxxfR\@&IGNZg[kk: שdڋJqPTgzɌFt888Mt*,+\Mg2J \$ϼSJ]ÒXgI|#EeJo~(y| d ?2't!?l[ v"ndrp3/f#2M ;Ez0?3F8Ҍ;+Z0#01F#ep27fi& l.+31 wd8G4\^J3+ÄƹGl&YPM&ço@o2@C &rt";QO *6ERVRM[A8Mǫ<QMoZLGll\6p%dMZuMgZtDgZt9GͿ=jljj6#i иƻMzZvX76Tޟ ;Q/m/&{SU$Q(SZ>X2ܾet[?UWr;a' ޼'nt'!.ۥ!X=g!/ѱqQ}wu82.S@·o|LMEϴOM\ϴ_Ҽi{M{\G:]n蔇){;m MDb;|s)O:ʠa)sa;"{cƌ& V?eآ]Pg1n2@va ޡmt=i<*2K2hG ;J+;%>_dB!>y\NC'G-.aؑyVf⥀&a6B=o(l&N%I` 7 죲r&Λe{ h&oh&w7d8&4,>@e&`ծhJě@a;. ;MM`#HXÈ74x@È74x@È7_!É7e&@e&6o\ MSTJ`Ta9&N0, nΤoŒoh&oxwCo NSMMaxfMTo흊:#xX/śG h&h&oxwCo NSMMaxMTo흊:&XÈ7[ | E7 #ބ #P '[śb˃śbk9g ES A@=g=@ND.2:+}:'p;C!Z? ݓ7P=T.$S8Pޞ,7֠@Ȕv%@X%w AEYl|A,*>;Q XTD wN@J2,N?Cvh;7'[ƌ'[GW,ReȖ$B :3|?QY`AZ͏FrۻC̀S :nq>K38I6BPղ_XkC(PWyl;mw"N$5X{?k!m#(۶=P)kBgG" 1cwl(?;3Zt,/dW9>)ϧ"NӶљ`AbdU֪ 9U,M3l.ݑPK!>@ word/fontTable.xmlܔN0'VT vuZlGK w`0I6 (VKyLdm<&q9ѧVy9#,FW̠Ãoa5f(hRk2A̶ʙDiA,|s_yoQ%rbg^!=TMTTpʎ]&my,E%MsR+6Q+ZQf Yd \62A&$8ʨne#ID(Ad{`.[yRtۦq@FW_CeO SlsB CnvQxDY#|DS6/1Z^Z^^,t1:L]0 9.L]ڽ=+nqS3V1/#PK!docProps/app.xml (Sn0 ?7r(FŐba[mϚLdIT׏WvO4HK}Pl* 466C,BܔG v:Qa( ѭ ^ eZ{)fVIGeU]1|hl.ܰ:M+X Pcﴈ$9L@mе/؉Mo6v :9)o_߁%@Q>{MIH/\m`/-]BF4ҝP$PF닠~P/ڔJH)v!z^7xyY*H 9iĹpM?.sIj&'nm93"W۴(ПTNHOiGyڽpGn{Τ1lN5'B=No/WqNxPK-! $[Content_Types].xmlPK-!N _rels/.relsPK-!|;9"word/_rels/document.xml.relsPK-!"ļiB word/document.xmlPK-!0C)= word/theme/theme1.xmlPK-!word/settings.xmlPK-!Nword/webSettings.xmlPK-!3/ju@word/stylesWithEffects.xmlPK-!]_J} docProps/core.xmlPK-!=1#word/styles.xmlPK-!>@ D+word/fontTable.xmlPK-!-docProps/app.xmlPK 1pandoc-3.1.3/test/docx/track_changes_deletion_accept.native0000644000000000000000000000016707346545000022301 0ustar0000000000000000[Para [Str "This",Space,Str "is",Space,Str "a",Space,Str "text",Space,Str "with",Space,Str "a",Space,Str "deletion."]] pandoc-3.1.3/test/docx/track_changes_deletion_all.native0000644000000000000000000000037507346545000021613 0ustar0000000000000000[Para [Str "This",Space,Str "is",Space,Str "a",Space,Str "text",Space,Str "with",Space,Str "a",Span ("",["deletion"],[("author","eng-dept"),("date","2014-06-25T10:42:00Z")]) [Str "n",Space,Str "excessively",Space,Str "modified"],Space,Str "deletion."]] pandoc-3.1.3/test/docx/track_changes_deletion_reject.native0000644000000000000000000000024507346545000022313 0ustar0000000000000000[Para [Str "This",Space,Str "is",Space,Str "a",Space,Str "text",Space,Str "with",Space,Str "an",Space,Str "excessively",Space,Str "modified",Space,Str "deletion."]] pandoc-3.1.3/test/docx/track_changes_insertion.docx0000644000000000000000000003123407346545000020637 0ustar0000000000000000PK! $[Content_Types].xml (MO@&Wz0ƔM.C~dgJKZ2 3J<*kROz,#m,eEDi l Fˋt#6"w9:0t[E[?N1~piMPir1/C4^C,_R&+Hd\CBwPV*h"|x0gV5iy$4V"eˤ9BA )jT(y>vw餶ثv(SLqWUDX˿Qw4S^ 0F"м\gsldYdLuH݂c9>(hVDۈ5{A7t PK!N _rels/.rels (JA a}7 "Hw"w̤ھ P^O֛;<aYՠ؛`GkxmPY[g Gΰino/<<1ⳆA$>"f3\ȾTI SWY ig@X6_]7~ fˉao.b*lIrj),l0%b 6iD_, |uZ^t٢yǯ;!Y,}{C/h>PK!|;9"word/_rels/document.xml.rels (MO0&һV]ٲ5٫-Sht ʢ.MfIZUq"=loO.Y$m.+gAT!,MQH(XI\qZbaG;_K /x#Փ,/d}?eh 7)mg;kk4Df2/wBmw4A^#࣡FkPܚHxȽAt~9' ozWnMtVWkJlNWz^>\PK!u-Tword/document.xmlUn0?ے1A,ȡ@^ $ )+wH-v R@Er͛7졮-F\xKŒ,H`,@%y䆜~9m XSsi&m[Za%ւi0):<-,Eqƍx?RCz +]SkzӨ +jZT>"v4``I-Ӟd$\ҎP?  v>by@R]Eˁ$u5ص*N)皶X bdS]u:1^K9Ә 9|L}qF||_ihHGϡ]͈.;EsS38w%U5K +dIN$YaXCF)6vI8Y\a紩ۉNMt%Hkо85p4 )52$47\o9Yݗ–󲝯"2phcKve1ɸn-Q{%h>QDidm `e|#NRظwg|$ !)O^rC$y@/yH*񄴽)޵߻UDb`}"qۋJחX^)I`nEp)liV[]1M<OP6r=zgbIguSebORD۫qu gZo~ٺlAplxpT0+[}`jzAV2Fi@qv֬5\|ʜ̭NleXdsjcs7f W+Ն7`g ȘJj|h(KD- dXiJ؇(x$( :;˹! I_TS 1?E??ZBΪmU/?~xY'y5g&΋/ɋ>GMGeD3Vq%'#q$8K)fw9:ĵ x}rxwr:\TZaG*y8IjbRc|XŻǿI u3KGnD1NIBs RuK>V.EL+M2#'fi ~V vl{u8zH *:(W☕ ~JTe\O*tHGHY}KNP*ݾ˦TѼ9/#A7qZ$*c?qUnwN%Oi4 =3N)cbJ uV4(Tn 7_?m-ٛ{UBwznʜ"Z xJZp; {/<P;,)''KQk5qpN8KGbe Sd̛\17 pa>SR! 3K4'+rzQ TTIIvt]Kc⫲K#v5+|D~O@%\w_nN[L9KqgVhn R!y+Un;*&/HrT >>\ t=.Tġ S; Z~!P9giCڧ!# B,;X=ۻ,I2UWV9$lk=Aj;{AP79|s*Y;̠[MCۿhf]o{oY=1kyVV5E8Vk+֜\80X4D)!!?*|fv u"xA@T_q64)kڬuV7 t '%;i9s9x,ڎ-45xd8?ǘd/Y|t &LILJ`& -Gt/PK!EYǓword/settings.xmlVn8}_`AsIBƻ ⶨı o )+wHJQt`>3á XdGyle/YXG$%\Iş&BRUsNYfbʭ284]&UBƙ;d)EI` 1w0?m~/,u6 pj5c01mJNKqolnP:|^o~\|=X2R'QrSW 6DkhtEr\a(N閣ntuჴX j<̲IvaM|˔XKdPK!ua=word/stylesWithEffects.xmlmS8}CH4P7m60Zm@>$[1vl߮v_A7yI*dp'#O"zXwp4cS{H瀧ҋm-MImxPxL:;d8d+2;DzRNx|ƣeՙ;V=Z݅˒26ёV"_+1`82D|ey& 6YXt'mH'|p5 &B& kńKųh#|G)wϿ ]Xde\B<+SIA:*P.vޘ5~ol8S]wt`LET @%z:p;l.ýЌڨT%>LUuGɪ*(( HxF~{G49cZUtgD@Q@+ZsxZwK,*ùp\fT;Ξ!7,1 ;q>%v=W1v0odĹO&ߤ4^xdl U텝LzL_D砳gl7"˩AF΍\ChLzP `=mi.t*M+:>Ӹ;d85'+d蕇9y[."Q"1'\z憩Sr.v:Ja(zc!'&{SBDX3k@d;0h{|2ЂP{гRn"sIeaiE=~GG аVHGDSp:Ipו\i% ^ד!3{N\,WU\BoBPqG V|E}x߶@(o,nDu >^׎dnw{(ދ3~g$xx9զp9K!l+fMCvIČ)W/e2n5|;=fj%L}@\{CQ^'QxR7o-I9M%iκvw?oPK!yI}docProps/core.xml (QO M -ŐK%&h|#p %]9| Ϋf%`D# ](@NѪʅeq .(I$τ->0b,:Lwz5۶y#m܏*J*s)pCJ0U*O܇MN;M|࠺w*ieՏ64İl[y?lרH2l-#佋uq ?s%P/?LPK!Oz Gp:word/styles.xmlMs6Ȓ\D8NҸNdO IhH%bA4i&s}Ż zsGJ'KdP%ۥswˍHBD.{o^˫۳G2@M&y_T&pX̶XdQTV2_(VfNX&O2E;kk: L28rba(VAs1/ĚcGgDgbNO0rɍG&UV\WNLݞe2T04ȩsFkb5gW6\ເ wŅoƘWiWi;ly[=ZtG9+ .4ؓO{?O<%OٱxQGFMTcaZEbb*]5{e_g-G\&sI.=m2"\cxXcU@hX)dZ}SD:dxqdز\V1L;2/\x%`IX\hMf$PѩղnXMjǨu *Woh&ohxCo VśW8_KPU 68+~3:=v&Pj7ŽNxX 'jRqěG qěG qě.ěbkCU&PM+mxRqt&Pj7ŽNMPE*PU7p`arsG #8M#p'[JM7ĖTo O7NƟ. ;@M&Pѩ js;@5V)`&8#oh&w?d<&PjjU \&!xf.pɍqOXkp8)θKD{$x-381_xqJ-@釾>PK!TG[word/fontTable.xmlܔn0}{,JVȁTEdhi"*I[;Pth.yY V렝j}.y|݈Y1m!:9LR5rw99',Dkf|+i l了&LQPWp U"#x1FSvR0if)8*i[~[<ӊ2c"Ჱ=#VFŶq {$R:zJY r/@$ NIgHeIC},O4!0,ĕN597*ddECUfCQ* Qd(>4Un@rҧ\ KPUV#qֹ&dAR{vM?}yps}=Z>!x58HK9߰VőM":4<<58W,w(AdKz ]`)jХocS4Y} JxGyRz^)pl7߷k[ ݸ!CS"`SdÿTL4ijnb5f#ȌPK!14ǪdocProps/app.xml (Sn0 ?7JFŐba[ mϚL'dIؠ׏WvO4HKod[׋ټi[͗uHVYp]1;>`$.=QX {fv|qwwxs|~%е^a=v\^g}9,>XE(g9D@I(LOܫ̍|l1UT:"!X'Qu7ܾʿ(K٢~r qvQ)V7|m)Hap5X%zYW?Tlֺ>h#6-mHecro΍˲e6kfrsu ?.JQj!t>(w'L7yQ^=<'?o<-$S)/))6:|7` 7 QS }'FG Y,Ķc sB` /YfS ٜ &_ao.8tÛqUcH<2loPK!F word/document.xmlWn8}i!;ĹӨt2/#5#ې[S* ZbVֆYr6!-2l5|lK*r\qF;_mgkJISgcPNGfXi .R 3N\q.rC.2O0`iw(?ֱȡd;}D& .X!+8!X*;CflK:V+}&ɆVV؞=l#H9EYuQl!}IlSA/Ns @1ZtAGb1HN}%554ԃzǪ.#{ғd(2~HM^7+^ \ۢYb\E@qKW}iwY[X|l#?Li`UE+w/XM`cp|%^WJ[&i8s'&!oDX{^:X&77ˑkt@7?c"/ J CIZf0}%Ɏ #:`Fhx(A/meU=/p7lItoPߓ쨹Sӂ}ȧ*tZ[ biy/ȧoR?bFu~Yq]]SW܂7}cSۥ>ٛNv<&SGuY8܈2zq$ŀRRR N{O"š]x%=Ce?(n,2\-ިy7c?xzqbN$SO@t(BJY^~~$6Sp-XT~WAE<#dN,RYX sDKZ]WgpC#QxAUS2@Gy7In/m.-PK!!Z!word/theme/theme1.xmlYOoE#F{/'M:U i-q;N3' G$$DAč*iEP~wq4;{o?g\=J: BR6{4MGv{i5@R4ŒL nb\ V*[_X! cH \$X-Dބ-,j+ iR[! kF1URLjHl_9m&fa1,h5,l\YSsd+r]SncVu:v^3ੵ] 9][5\|EҌkVky-*5 1_46Y lWY {ym (f4ݟAv2l _j-OQ ev)~'}xPiB$IO1Êk9IcLHY<;*v7'aE\h>=^,*8q;^*4?Wq{nԉogAߤ>8f2*<")QHxK |]Zz)ӁMSm@\&>!7;wP3[EBU`1OC5VD Xa?p S4[NS28;Y[꫙,T1|n;+/ʕj\\,E:! t4.T̡ e1 }; [z^pl@ok0e g@GGHPXNT,مde|*YdT\Y䀰+(T7$ow2缂#G֛ʥ?q NK-/M,WgxFV/FQⷶO&ecx\QLW@H!+{[|{!KAi `cm2iU|Y+ ި [[vxrNE3pmR =Y04,!&0+WC܃@oOS2'Sٮ05$ɤ]pm3Ft GɄ-!y"ӉV . `עv,O.%вKasSƭvMz`3{9+e@eՔLy7W_XtlPK !,cL0L0docProps/thumbnail.jpegJFIFHHtExifMM*>F(iNHH8Photoshop 3.08BIM8BIM%ُ B~ICC_PROFILEappl mntrRGB XYZ   acspAPPLappl-appl descodscmxlcprt8wtptrXYZ0gXYZDbXYZXrTRClchad|,bTRClgTRCldescGeneric RGB ProfileGeneric RGB Profilemluc skSK(xhrHR(caES$ptBR&ukUA*frFU(Vaeobecn RGB profilGeneri ki RGB profilPerfil RGB genricPerfil RGB Genrico030;L=89 ?@>D09; RGBProfil gnrique RVBu( RGB r_icϏProfilo RGB genericoGenerisk RGB-profil| RGB \ |Obecn RGB profil RGB Allgemeines RGB-Profilltalnos RGB profilfn RGB cϏeNN, RGB 000000Profil RGB generic  RGBPerfil RGB genricoAlgemeen RGB-profielB#D%L RGB 1H'DGenel RGB ProfiliYleinen RGB-profiiliUniwersalny profil RGB1I89 ?@>D8;L RGBEDA *91JA RGB 'D9'EGeneric RGB ProfileGenerel RGB-beskrivelsetextCopyright 2007 Apple Inc., all rights reserved.XYZ RXYZ tM=XYZ Zus4XYZ (6curvsf32 B&l }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzCC2 ?( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( (?+?j٧GEjS!e( &Gk,tfNJ$hG੷ $ 3]ώڣV~ßlhVZ_u;&xK:' Z~鶠׏~ڗ?So:?/C0WYVֿM3ƠE_UMFM Ot= n-MzJUuOjZ}eWH-u,>xT='F}/H {4!|T߈߂> ׼?^<]qPhD$m,@GLuO<NuWU//@#_]u5/oO?j(?>&|R>;i?x X* Yk]GGpŨr$k+P7|x[ս߂w>0쥻h_Σ=F7q/Ws: տ<1| -%/]x?^5'ռ'xi|Eiłk1k^vmn R@5|cuUßG~5|O׈xV]I[O=61^%[u\9}wGsw(/擭˪xM ?ij𝯊j_|[eΡjHu_l,4/ |rj>m4xof#hu~Mlwጾ.4/Kn4xsM2B@1,⏌>OԼs|5o|G^e;7\xAgÍSJl5OǬϚ|CԴQ&<x^ tꋣ~Ar==P@P@P@P@P@P@P@P( (*ce4ie9KxC-]%&Xy܄mbY@+ K 2+$I{/xtR(/i2Ze&=<Z=Zd+s8"bx2Pm>aYm'[auV|BD?w ZuJ$VK/mC7$YaqJv4`_`l7vu o,VnNfɧiadfDR[]٥Q srKf=e!81t]ȎN@%Q[l Fش>Xd򭡏vy^mAEɋrzd2,1J%9}jup[[[G 6[m("(R5T 0P@* H  +M kAclg/P F98&4 ( ( ( ( ( ( (?( (>sxS_Ro5 ZWue~c};Cx~c|>/e5 8m;!QDPHcWH:W+Wòh>4u׈F_ߊWoj^ Zo=f{-*}?jq%W@$g C?n|XZPO#Iۏ?u/éRhj s]WW+xm.k:4/lqBOx+_%դ[~/xCG:߉|[D6:Eq]^-l]SM[=߲W'uox=Rj1jeόZU=>Þ | {&h/~ KtH[7)᧼k KH;-7_;=rgωnm:?|1g%{Ѧ> Dj^eyK09/(O쭨K[I:#j/ŭ7:cZƓj> g۽KS-\\QzmΥ}RDUѭDַ}}+O<1!34ZbO^jKkVҮ)u8'8,|L Ğ𦧬kom}~Yg]O|?][EdIbτn_^> ?|EOk<, |iW4X~ gOoDkIfZhKe=TP@P@P@P@P@P@P@P@( (V^/D5?Y! {yy, ZP!~_vO |2> /k-ϊPBts:lM(V?Ðih82\淩Y0^5/-U]Z<^[é&@1a^Y..[\]ܖ_xZKϊZw[F{wXYo L@.%~~į|WKx_еO kPǦ)-[hc$?xVu CWw`ruCUU}j-Z S]_mZfcuO~4uscu=I[B/4@7 ?g ;m6Mah?v|?x>1:_϶h7Z&aui3:tSKzӯ;U` ~|i'bo^(|Mj_۾U{:T0^ڧu&7þ$Ѭl,@9;`ԮΛω:nux3:Ƨc{/vL=ܵ׈_Էׇ=CO ( ( ( ( ( ( ( (?( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( ( PK!p word/settings.xmlV[S8~ߙ?o  CLMl$ZtII}$ B3)G~O bd'i2Qɚ<~HQ&̓\kQ Ѕ09ZF'D*(H͉ŧގ8яV+biI8MO΍'ybiLr h&nUAXqaRU&z KE'cE9zmm-~&=gg\NxvM8zn zb+4ROi)Rƌ U~RR4č&%]Q[phNS䦰V :o&7mT_`OݪϪaCfHYXbqT;6tHRX-Yԫ.q59X{1m48a]⍁9ƾб X\MoZÑ9F@/_ {` mxoF~#c p?#N<-rǂUk7ƭ`6Nj0Z7gG|1j!='%O{l<WCoi8̬ˇEܐ<,ȒRS2X;B+Q^7MaN[D Ԩ+xlMiwxϾ[Fh&* /˦7MYD+BԈ^;=mnm-%cy;k?Ӆ(0z6'nw6sf_5~܎;dA*W,jwS$juDϛDޤ!iϛEެF~x|ǧCa"ɘl'2VhEceКQCsxBxQ >{ﴙGWΓSVXPgri*[xكI(Qc PRcCDs/,Pܝ<=ud}XGo,C9 fě[} M87A'.'cBDE}Rjm]&m(>)UZ]wVf3,iK@+kH׉mR A#3}+\Mg:-~-~Ï*3g;7Y % @8 \x#E_dPm Fgi QQb$ hE>~Ljq@Z!%?<'A7Gmô#39- 7 篖mυf$vtjM`}5cTTQY'EÐ7h& C 2y`9J \SUɛvwFeC) (5ɛŽNyp 'jXXÐ7h& Caț4 yw7pMbs*y`M%n8HX (5ɛŽNP!P ˒7 p5 y, @Ð7h&'nț˩U&Uɛ憃ɛP (%oKo&ᒧq,  CațԟA#o,VɛĦ T%o7'o ;@M&S#TK,vjXXÐ77yp8a  C 2y`9J 6=X*yܠ}QIKPȀӖ Q ʕLaPv XZ@lIshO[ ,@GSD8=?2Ipl`0oQu\g?&07˵4%CXN^@P1֣79XOcm ?"nlBykr*.;Hxݽr+ٍdjwg(nQs}xS\bTP. !d:ހb,Y&0 ï¬VIPrv2XTy)^GM t*c~FI2-8kK*P=ݮ^j_B0fw<`[ n@4`kg<Ѧ,eQpwxO%y j'1Yw1;;њ00CwٛPK! 9!|docProps/core.xml (QO0MKGaYH`$1V*[ oo`zwf}Y;(xBՄ/f &HMMʵ X'ORr3!kLJ)5 ^|qmɜ7l4-1504wHEB%(4u`KBSP8%[ة(;aUUj،Y53S']yFGpצ͟W~5+Z=yV߲^]0tsK pZRwȓeKAޤT><.f$OxFwaJ@T7Kum7Ur[f4UN_N,Q#SS/v^i:\?[ȠIM l =_lTĹ&_z>tNzZ7`;ipz'kZ.4e/"p m9#TE:D"Bbi|P>A\u)VBMz|̏|tHuʮKd 複Sv[ "I$qʮt.|Q=2P0(Xlt[Aބa;@)2ؤCXf,m5;yhAw;uCO8rßKRf GE;F5>P @ c{"sd`iv1L;23Z@}P͹Pv}ŽNپIoFsʜ17@M`0M @Ð7?yw G,67XN-7p[2y`.QPJțP (47 p2e5 y!o0M @Ð7?yw G,67XN-7ML g7:yPѩ}I%`TM-dȱ09F C!o0M @ɻd8&`rj @lz@e&YbM@aNvt*jyP˒7 7ypK8 C!o0MO Ñ7 SMbӃ*7 ϒ7o'o ;@u&S!TK,v*XXÐ77yp 8a  C 2y`9L 6=X2yܠ}QICPȀӆ QsH`"Jt XX@lHwhg BP*tJӖIog3S;)uxfB8Ӥ@i #;fDz+y+za=q)_; :,?I T~AU[~$P32h-:MV9D gJ]BȖM\X}_33/٭[C;`ERe'xA5yNCYQќ'.Z$ޘs$aJ @tnb ޷f}  tATg,Ӆ{/ qؠeL"zK&Z2/KB/'x$8;_iD.(xVѦ,M^pf çmy@b.I*gV]sg*㟥C! ]u?PK!aYword/fontTable.xmlԕn0HC'FN0(BBPyqZ؎lYݝ3H\6v+ujʡL|7}}zv!RgɴJF`0IU'$ᔽR4L*,G%͂gu+q+3(3ri' N2*HƭWVI4|;JY /@SωiNHecKF8x@-hl7rBOWJrj=.ZyIsz9 f#C'T+^R :Ň553ʧ=|@. V֕盯W8ZǨVzTvs6]eyO/X wRm*3=+U%j*)jexj)6R+mC@ʸ @yhb㗀ʷz4??` w3q14gfsܬBiVI"T{ÍǓr KsoPK!jiWMydocProps/app.xml (RN0W?D΢h-z(8Ibؖ= ;i[}~~lz}Bvv o},hWW'1QfGPv.*fFA:]#ܫuM4#VMs)Xgig_Q<$54&LdolB}F[wSǘ Ps3sP+)yg%Y}L%v\ݢqcIzH42Q7~0[ Ϙ7 AO{_w z'`DŽrx3v#pHh&/ī$NOyK%Г=1e0NidMɻ,FPK-!Q[Content_Types].xmlPK-!'  _rels/.relsPK-!hu word/_rels/document.xml.relsPK-!F e word/document.xmlPK-!!Z!D word/theme/theme1.xmlPK- !,cL0L0docProps/thumbnail.jpegPK-!p Eword/settings.xmlPK-!ʳC1Iword/webSettings.xmlPK-!jtS@hJword/stylesWithEffects.xmlPK-! 9!|RdocProps/core.xmlPK-!PL=Uword/styles.xmlPK-!aY]word/fontTable.xmlPK-!jiWMy`docProps/app.xmlPK Nbpandoc-3.1.3/test/docx/track_changes_move_accept.native0000644000000000000000000000042007346545000021434 0ustar0000000000000000[Para [Str "Here",Space,Str "is",Space,Str "some",Space,Str "text."] ,Para [Str "Here",Space,Str "is",Space,Str "the",Space,Str "text",Space,Str "to",Space,Str "be",Space,Str "moved."] ,Para [Str "Here",Space,Str "is",Space,Str "some",Space,Str "more",Space,Str "text."]] pandoc-3.1.3/test/docx/track_changes_move_all.native0000644000000000000000000000106507346545000020753 0ustar0000000000000000[Para [Str "Here",Space,Str "is",Space,Str "some",Space,Str "text."] ,Para [Span ("",["insertion"],[("author","Jesse Rosenthal"),("date","2016-04-16T08:20:00Z")]) [Str "Here",Space,Str "is",Space,Str "the",Space,Str "text",Space,Str "to",Space,Str "be",Space,Str "moved."]] ,Para [Str "Here",Space,Str "is",Space,Str "some",Space,Str "more",Space,Str "text."] ,Para [Span ("",["deletion"],[("author","Jesse Rosenthal"),("date","2016-04-16T08:20:00Z")]) [Str "Here",Space,Str "is",Space,Str "the",Space,Str "text",Space,Str "to",Space,Str "be",Space,Str "moved."]]] pandoc-3.1.3/test/docx/track_changes_move_reject.native0000644000000000000000000000042007346545000021451 0ustar0000000000000000[Para [Str "Here",Space,Str "is",Space,Str "some",Space,Str "text."] ,Para [Str "Here",Space,Str "is",Space,Str "some",Space,Str "more",Space,Str "text."] ,Para [Str "Here",Space,Str "is",Space,Str "the",Space,Str "text",Space,Str "to",Space,Str "be",Space,Str "moved."]] pandoc-3.1.3/test/docx/track_changes_scrubbed_metadata.docx0000644000000000000000000003201507346545000022254 0ustar0000000000000000PK!+,`d[Content_Types].xml (j@ }%YE)EPD 7do0ښl w%=^i7+-d&0A6l4L60#ÒS OX*V$z33%p)O^ 5}nH"dsXgL`|ԟ|Prۃs?PWtdcӻW>*\XRmpZ}H;h+Vh?ʁic/OvCJ$ιaϫQ2&W;w"T:Sgh;!h96"s}@ZQs8@L&A}|{b?PK!N _rels/.rels (j0 @ѽQN/c[ILj<]aGӓzsFu]U ^[x1xp f#I)ʃY*D i")c$qU~31jH[{=E~ f?3-޲]Tꓸ2j),l0/%b zʼn, /|f\Z?6!Y_o]APK!3~(" word/document.xml[o '?X~o4M&նn&UKU`HY՘zFm,PK!;word/_rels/document.xml.rels (N0Hw@P^Ru6?±-{crY̷~5,Fٺ7X ijA#ؖ'ԒRzXL1A@G9A:4qX?HҷI*[<_sf@yvUsm zЉ g$Dž+}$ 14jIbrEhԘ\zz~?f1p$Cc Ur_kfIeQ3!V~PK!=G. word/comments.xml]o0'?d&@)*Tԩ4MbݮcC!t~ tYnlyD왱\WC0IU6FO?3XGdB2%Y^Ewn*!t6QiRt)^ Nj`3V $x4 HEp={bQnĐ=piJc Ɵ b?MFmM?ҸM#I\i&aq > bwz`M_`5pCX bMB%,'5EhgdT^zTW]ma_,Px Jڔ }i֐{NEVuUe(`UEV*;܈G-Hx}fD@6 IpÎZ)e ~͘U L9Ө9xovc9Xva_ĉGz{Y~1jIĬR6 =n2d"H1(np+BKG>cdREnQ~K8@0Ҿ1E[K9+_3SԺ` x#-,'1Z.XiB  G~SN{?=b43Ws[[LV~/Ҁ+w.jtlPK!g word/theme/theme1.xmlYKGza5Hk6޵Rkiڵ0`r C B 1cII3-ď] U?4s:G ’[=Wqؘ$aǽ}0,\GHe ,܋;v8:n$|,F096 M.cAoL˵JQI\'A11vJwg|@_"QTcCBcӪ P!qa1;>P$$Lt܊s;k!* dsrC[ 5-õ^֯TnAcX4NS.f-(mZtz׷]_} Mo ? so^7kPllᛕnkx (I[ߨݮ!F/[m6kKx*+OdQCh"IG.fxF %8$ f(a+ʰR(:QN:!#Nf^nŋ|Ǐ_>uey7?}/͓oxǿ_Ag?{rt :>vn6hY8KtP) z #}}(zش4gޏ\ Z=hq랮V'}q>n!td[;`>'6A 7)8QslE.!]Ȉ3&ҹK"VC#2$,l߆m8=FmD@ԦSÌ\4E2_ap!!6|aнi=M$djC">gV$+b !LZI0>%Cېfv$03N)H]NћFhbL1cܾbóaelUdƪ'X@c0Bvb#,P#^ \u5^hjRա!bcZoF+x]pr@ζ9@X U-݂LD'-6MCQ$ykQ O-өwT:Ed)mV5c5}4OnbG,г欦4E9d*GdE?Z=Z§>B\P+t#쏇0;ZhiAs 9m3~fLUP83&pVj=6NGsM@2k5eLGZA늀}Lu j-$NE¢_K HRFncT~St1m,k+iD.L0>e_3)i4[*l=\5#4xTIɥ?$̸}$DbPC@[T{Dɵ+Wx2#Y0ua.Ub=!XuHGc-Ue1rm1άGxߒQDgZ(du{M'tsWfP9ķۅD.i\ ִ珏wXey`\^庢[BZAM1PFMjX[fqڷfԪ bUW֋mvx"J¯+4Uv/9'AzAJ?(yuRjzVC0⪟=t|oǷǫR܈ewt# k ZF5J^ڥWuf5WռvPK!Z word/settings.xmlVKo8t#۱hIo Ş)il CʎwH, '\lr߼ E\y:: J\mb1McfB+.H&l.yuYf-HfϴE̵F]qITZxwl<FUA $P[v^%5xVZW AZ-76עsAv b'Eۏ'X?jW0+ $EtУ3݅H}4 cϧ/?U2FF8~^AL 8-뎗Ȱo7J#+CNVIR/% /e `EL[`8L3@z?h;hĭjqϪ^q ZÚ5­XY8mv($k9-2d, arEԭ]@]hWi(&)'ekA~zyB>%װ.A//ouCÃ?9@y$ߩ?V `4Pf5ު͌ p%GyVSO?$Lyg_o7@ַN"[+&K,Yg%%*KicNє9 + "225װgdq; O* G,,nL#3mODdirt۔ERX0$O>w0[w,*Ȃ,|vYr6O5U̘f4OlK;U.fƁ7ny*1Iw6#H;iHiM{,fF=u\< EgWo&AQ,b_/<+dŻ4rWO &BE"R $X뢡= =ȥ/'oߚ3qa#lC?k 2ŹrRD~|6c Qεؑqt3U]n> q, jWԎN_jGg/KKHcYB}TG9|RC$uKb5~m13~e1V̨\dhD24"Јfhv.hi"ԁˌ 3 XΖ9[uйk"z)ƴ j^Sd*{gxhT l/r&h4Y5/;EID;cIUOhǫ3l+q^ɠKj:IQ߰-kvi irY8Y$xqV5[:$$)]XR 1|o. %,hU$A\܋Zf*?) |w^EpL+C6 $""fYL2joy.Xr^_Sr"⌥zA-Yd! i޿XBT'Y jo/u" 92*G=tӄnAGS* :l GiŠ"vBQuQwD"E9yP$U=<ku SFi?8" QEBè aT10BǂLǂVM,UDgy,UiUiUiU| b!'tC9 I7d%O"g3S—iMBݞ!"n:FNkUs)e$vіk5F7.a!_$⹣On[^YhӃ}{~26Gm^f2ۿ.7t}Q\MC'ÍuFOog-˳p-@K7-N[}zD˟ϑ|}Y1m_"m,R/ZR P-01*rS0rrSʍw#V#;hmu_OU+Qop~S׍8e:9'O\ۏˍ1 19Q%M\܈Eʍ@W+8"U+hS ŧZnZꈙ*0* hBZp* R| )hBZ*D hz^BP!-T@ UG } )>BP!-T@ "BP!%T`%THA "BP[ qB>BB Z*D hBZ*0* hBZdB{PP!G*D hBZ*D ̽ )hBZї2#QOO]F}oQ'QMܬ"|1D7Ay }qZK"P'>M#dLt%8rڗ%Xem f}׶i_պl.J0+3üZ[}52̖!tp_= Uw|s}) Epƪ)PC& 04n*N >n:n_̰ 5$x`C Qޡ(Pˆ 5$`C_P!;j8aC PC6#d'?j 5aC PC6Ԑj5DyB VPC6Ԑ 5$x`C QޡP(P"l&a!n@ q2X-Y֞%Zjb[-AsFMF7O'X7 a7/ԸRW&`C[-9C[-Z 5n5njj+M 5njj7ԸՒ;ԸRWqPVK]9 ;1ƭzC[-C[-uZ 5njjjj7ԸRoq%wqPVK]ƭB[-9C[-Z 5nU,/]bU'|r^ڮ~A+Ǔ/Эە xm^SUK/Y7؜7ofz 8h7؟'suV5ÛLETd]/T.bav;G獭rbk̈l&fo;ª nSicsBvXyztl6r7z]d@]5[1Ux|iǙG@8~D5iʹ_ <ܨw7yGfVұ޶ϭD vl=Ȕ?yĎ#[WY\=SDNpLR6)e˱3k =Л? fS+ v*[ؒ=!Mu 7 d]Łdᝃvio;Cv~_N[vؼjW%rX Z0"/\JFJgׯH}Xo%cÚTvl5p蘬l%иQVݪ&z~8yp_da;fEޚq+LN3E[giUPK!)@word/webSettings.xmln0 C;PE2My-q\a!q$b?r}@}CdGTq2*R}}*dBe<(XWOˮ`)I&g.ЖjR[hv hxL-)IrFwvd [yzsuf# յJvR_#x)ֵ|ѺGbF,иpe&/w:NcQOI$#l0ÌRyj3:q 0]#&B[7x2y欇Ot{PPK! h word/fontTable.xmlܕ]o0'?X/q*T-RAwoI6Pl'PT@NhA8977 aJv#9Y7z29JB7ڀz_ܯ; 7_hamމcC KJ bݣbAe~Gȉe3ƙUQPT2 E c 4 -m}m<׊1/x0$`T+R[qS* (7=';qzhRx.a88׉ 0Hs&&3HFٌطN++Zw$nBp6,$r"Vw#\#pqͷQ<pJmԬ1E"g.̋-Re.43܍hĩz멌Tv#4pcRphƸwƅNLưF? #UtN4ޙEؑGGZ?qd|Š`A;3>wqԏY1O@M4%r~܂Z N+MG+tnJez Mr琒%H(/7hʟR6}~o[fy-SП})XvL/PK!h# RdocProps/core.xml (Sn G?Xm#%R[HvFQ846 _l6ʩ7ޛ7Ocơx5RW`Ur)"0J  k墓ÝڦYI SE8|"U+Ȱ[\U%c叟ְf%kvז5-cHg'qi~{ PRqM(pF LyMIfj6YgVPK!ڍ|docProps/app.xml (RN0#?D3ΰbPj& I,۲ b6jwbzmJ1z9q~loN/*etw+TKz9\ @#w:G\^3zeq4Ao&}`=+^^Mҡ=֓,fwӤ]iGgI.<`OifO>$7 f#ɳs~`[Oj<K4(7ۘۊG çR^.;@|pDA;?t|(xNS2*L,X4`,iި*?$ϳ'ua~rY5}dq wPK-!+,`d[Content_Types].xmlPK-!N _rels/.relsPK-!3~(" word/document.xmlPK-!; word/_rels/document.xml.relsPK-!=G. R word/comments.xmlPK-!g  word/theme/theme1.xmlPK-!Z word/settings.xmlPK-!2: րword/styles.xmlPK-!)@'word/webSettings.xmlPK-! h (word/fontTable.xmlPK-!h# Rz+docProps/core.xmlPK-!ڍ|E.docProps/app.xmlPK 0pandoc-3.1.3/test/docx/track_changes_scrubbed_metadata.native0000644000000000000000000000064007346545000022604 0ustar0000000000000000[Para [ Str "Here", Space, Str "is", Space, Str "a", Space , Span ("",["deletion"],[("author","Author")]) [Str "dummy"] , Span ("",["insertion"],[("author","Author")]) [Str "test"] , Space , Span ("",["comment-start"],[("id","3"),("author","Author")]) [Str "With",Space,Str "a",Space,Str "comment!"] , Str "document",Span ("",["comment-end"],[("id","3")]) [],Str "." ] ] pandoc-3.1.3/test/docx/trailing_spaces_in_formatting.docx0000644000000000000000000003116407346545000022042 0ustar0000000000000000PK! $[Content_Types].xml (MO@&Wz0ƔM.C~dgJKZ2 3J<*kROz,#m,eEDi l Fˋt#6"w9:0t[E[?N1~piMPir1/C4^C,_R&+Hd\CBwPV*h"|x0gV5iy$4V"eˤ9BA )jT(y>vw餶ثv(SLqWUDX˿Qw4S^ 0F"м\gsldYdLuH݂c9>(hVDۈ5{A7t PK!N _rels/.rels (JA a}7 "Hw"w̤ھ P^O֛;<aYՠ؛`GkxmPY[g Gΰino/<<1ⳆA$>"f3\ȾTI SWY ig@X6_]7~ fˉao.b*lIrj),l0%b 6iD_, |uZ^t٢yǯ;!Y,}{C/h>PK!|;9"word/_rels/document.xml.rels (MO0&һV]ٲ5٫-Sht ʢ.MfIZUq"=loO.Y$m.+gAT!,MQH(XI\qZbaG;_K /x#Փ,/d}?eh 7)mg;kk4Df2/wBmw4A^#࣡FkPܚHxȽAt~9' ozWnMtVWkJlNWz^>\PK!i;8word/document.xmlUM0W|~(Vm*\I,beR;tYK3oޛӻ?${a=aLRR<)+A=G?M$SB{%3Zxo(r܂9LrU`hX9=sSh`XXż#vgnYJ@Y=4ڡg*^x. #+Je %k"*3%_RexB2IMB}U}8_V$@.̎bR0Kir#>r-LOȏ=m N7cD!`٦DFhB‰s,6hHe8^.&+-x-BdlWcϺVCBjN2ͧZ6F-8823V8aΟr @o_% ͅ屯yg!s2/, $7|&` wgcjd 9La~7Ʒ!E4Re#˄m'_[ܹlѾd$ !)O^rC$y@/yH*񄴽)޵߻UDb`}"qۋJחX^)I`nEp)liV[]1M<OP6r=zgbIguSebORD۫qu gZo~ٺlAplxpT0+[}`jzAV2Fi@qv֬5\|ʜ̭NleXdsjcs7f W+Ն7`g ȘJj|h(KD- dXiJ؇(x$( :;˹! I_TS 1?E??ZBΪmU/?~xY'y5g&΋/ɋ>GMGeD3Vq%'#q$8K)fw9:ĵ x}rxwr:\TZaG*y8IjbRc|XŻǿI u3KGnD1NIBs RuK>V.EL+M2#'fi ~V vl{u8zH *:(W☕ ~JTe\O*tHGHY}KNP*ݾ˦TѼ9/#A7qZ$*c?qUnwN%Oi4 =3N)cbJ uV4(Tn 7_?m-ٛ{UBwznʜ"Z xJZp; {/<P;,)''KQk5qpN8KGbe Sd̛\17 pa>SR! 3K4'+rzQ TTIIvt]Kc⫲K#v5+|D~O@%\w_nN[L9KqgVhn R!y+Un;*&/HrT >>\ t=.Tġ S; Z~!P9giCڧ!# B,;X=ۻ,I2UWV9$lk=Aj;{AP79|s*Y;̠[MCۿhf]o{oY=1kyVV5E8Vk+֜\80X4D)!!?*|fv u"xA@T_q64)kڬuV7 t '%;i9s9x,ڎ-45xd8?ǘd/Y|t &LILJ`& -Gt/PK! word/settings.xmlVn8}_ 蹎$I !J&nx[ o )+d--dj.gnC,96T*-N4ʎJnX":¤*=I_|, Xf&AaJVZUfi9 *wRsbS'nPVrE,m(-,`dZĂVK#wֹr-L?CHy%ہ>baR=U&%#{E8vcr*w{Ҳcp@r9X=zh : 3EOs=aa7D1#\-?Bj0$X d7)y2 tCB:cNjqᶈG'IQXD fOD6 hC b_xE;Nq3>Y3:3VOIG,Π{ĕ4젥țy瞄5J% #:.PK!Nword/webSettings.xmlJ1;,ٕ"t R"ivvdLjOoڪ ^z$@_Щf^ S/ٍ$0O:Qb gH(AZڦ[n)B(#1TJ4~ř%&.U]_oQh;;l]-e!2Y)?yh\e?eӼ,OUڛxB*ƗsP}br>aM|˔XKdPK!ua=word/stylesWithEffects.xmlmS8}CH4P7m60Zm@>$[1vl߮v_A7yI*dp'#O"zXwp4cS{H瀧ҋm-MImxPxL:;d8d+2;DzRNx|ƣeՙ;V=Z݅˒26ёV"_+1`82D|ey& 6YXt'mH'|p5 &B& kńKųh#|G)wϿ ]Xde\B<+SIA:*P.vޘ5~ol8S]wt`LET @%z:p;l.ýЌڨT%>LUuGɪ*(( HxF~{G49cZUtgD@Q@+ZsxZwK,*ùp\fT;Ξ!7,1 ;q>%v=W1v0odĹO&ߤ4^xdl U텝LzL_D砳gl7"˩AF΍\ChLzP `=mi.t*M+:>Ӹ;d85'+d蕇9y[."Q"1'\z憩Sr.v:Ja(zc!'&{SBDX3k@d;0h{|2ЂP{гRn"sIeaiE=~GG аVHGDSp:Ipו\i% ^ד!3{N\,WU\BoBPqG V|E}x߶@(o,nDu >^׎dnw{(ދ3~g$xx9զp9K!l+fMCvIČ)W/e2n5|;=fj%L}@\{CQ^'QxR7o-I9M%iκvw?oPK!J}docProps/core.xml (QO M -e]%mٓKLq]G,ۿ[>^^ȗGUGN6@$IQ7B@oU|"n4-ۛ /1`v7cKCqX|(m 㟬e2T04ȩsFkb5gW6\ເ wŅoƘWiWi;ly[=ZtG9+ .4ؓO{?O<%OٱxQGFMTcaZEbb*]5{e_g-G\&sI.=m2"\cxXcU@hX)dZ}SD:dxqdز\V1L;2/\x%`IX\hMf$PѩղnXMjǨu *Woh&ohxCo VśW8_KPU 68+~3:=v&Pj7ŽNxX 'jRqěG qěG qě.ěbkCU&PM+mxRqt&Pj7ŽNMPE*PU7p`arsG #8M#p'[JM7ĖTo O7NƟ. ;@M&Pѩ js;@5V)`&8#oh&w?d<&PjjU \&!xf.pɍqOXkp8)θKD{$x-381_xqJ-@釾>PK!TG[word/fontTable.xmlܔn0}{,JVȁTEdhi"*I[;Pth.yY V렝j}.y|݈Y1m!:9LR5rw99',Dkf|+i l了&LQPWp U"#x1FSvR0if)8*i[~[<ӊ2c"Ჱ=#VFŶq {$R:zJY r/@$ NIgHeIC},O4!0,ĕN597*ddECUfCQ* Qd(>4Un@rҧ\ KPUV#qֹ&dAR{vM?}yps}=Z>!x58HK9߰VőM":4<<58W,w(AdKz ]`)jХocS4Y} JxGyRz^)pl7߷k[ ݸ!CS"`SdÿTL4ijnb5f#ȌPK!%docProps/app.xml (Sn0 ?7rYŐba[mϜL'dIT׏WvO4H^* 4Ҷr,Bӂ򄡼}T jaB]ctƂh"[U5× ˩f۴2 ɑ`읆{9 Q=%swp ' 9d,䟝JB$O7% x"Y^ɑ=gIT!$c$;j#qK耜!t!n"_4UYɬ+0LKeS0bBQQSoMu2j \&r@Ku ᾣ]bG LN3躵sgD iQ^=$?x;4*{livo#Ng皿i7*EE߸Agvt~<7PK-! $[Content_Types].xmlPK-!N _rels/.relsPK-!|;9"word/_rels/document.xml.relsPK-!i;8B word/document.xmlPK-!0C) word/theme/theme1.xmlPK-! word/settings.xmlPK-!Nword/webSettings.xmlPK-!ua=word/stylesWithEffects.xmlPK-!J}docProps/core.xmlPK-!Oz Gp:J"word/styles.xmlPK-!TG[)word/fontTable.xmlPK-!%I,docProps/app.xmlPK U/pandoc-3.1.3/test/docx/trailing_spaces_in_formatting.native0000644000000000000000000000020707346545000022365 0ustar0000000000000000[Para [Str "Turn",Space,Str "my",Space,Emph [Str "formatting"],Space,Str "off",Space,Str "after",Space,Str "the",Space,Str "spaces."]] pandoc-3.1.3/test/docx/trim_last_inline.docx0000644000000000000000000001012307346545000017277 0ustar0000000000000000PKԣRN _rels/.relsMKA Cl+"Bo"3iA PǼymNAêiAq0Ѻ0jx=/`/W>J\*ބaIL41q!fOR]U^dPQ3LNcAO`|` 8!3:#BnADa42bځmbS7(CPKqF"PKԣRNdocProps/core.xmlRN0 UmVh$6m%ٺ=ivf<9Nv4(<=P@Yo7 qM02II)cG ZZ^*&Ҽl^^nsjQ\يh37fPSXQ\G'n;^fwM]ښۏOwf*Cxv7PKpPKԣRNword/_rels/document.xml.relsM 0"ަUnDp+16 (z{Z(}1/__]m,IQҦp(%INR\ vDnyP-2$֡^R,}ÝT' O&Uʀ7m]k=nHA>.?|m ?@IwPK/0PKԣRNword/settings.xmlEK0 D"XHBkRbG +73zybr [0vASH]57Jd+r!QNS+6d&c鑴lQOrTε ~]/PKhi PKԣRNword/fontTable.xmlPAN0 wz[gXב$N+!ȡٙY?=6*9R i_:T}r(G'YWwˡl]jQʁ!y 1pHq h! 59JBCěw@['NE!Ug2 D^={'HfLGvkqkD<OWǐ[ ɮ`&}d[=O{>Ο:?xPKUPKԣRNword/document.xmlTM0W B+dRU?VmeɯVry`Ó['@'$ZH5L"!?O :4Oȅ;p_Jqd.TVǎ\QPYpC 6!&>i krz|EإzpZ}-ԣ_W [g%lf,06BNWQGhuC ϘanQ,gύ:pbt(GKweAhXR'}l,Tf`Sj*tM>6sgKSYH!4io.G<3 yl$lX8"=3)cv.d.Koٛak`,X3i)WDpD^Ws@qXQגӌn<  K{P\TGJ:B3169. ~%x,k',p=!C3aPK|PKԣRNword/styles.xmlUN1}W6 DQĂh*D$V>`ZV He>3>s9xR2{DGYRiz,#i4l.?) AQ:*u|f\iH+'YWx2?F妪T*Jɮ!=4Yb"DeFSmLd6aXA#=ŭmK+=e`7b.7:E'*B!$`wPTo Yx@`G _:&CCݻ]= 2ЫEo4y\޲]Lf6 "8#ɶM^)4* 6]/-zuf/-Fхƛd_#ī`CO&@X~L;.rӮD;^JV \'~GPyt:곏 vF^U5]kp%Nw'&B}ӇVWw\ L?%WD>&M %p[/tl3{՛} qoIeօ QahxǁxOXJ|qPKԣRN[Content_Types].xmlT9O0+"(qa@%1B0#c$BUh ﴜ|Tm9$͍.Sy^d+ >] ҄`)|f,hT)2j%F! L[ؼ ׺'z/JYJi^.snev|#?ZzO@,#^-Cbn'$3S@c8O0|ýșcA-@) is۬}qbS4Gѝ)_702l-T(ZyQ\i=&I=|a_Fǻ_N>PKBS^PKԣRN#= _rels/.relsPKԣRNqF"docProps/app.xmlPKԣRNprdocProps/core.xmlPKԣRN/0!word/_rels/document.xml.relsPKԣRNhi 0word/settings.xmlPKԣRNUword/fontTable.xmlPKԣRN|qword/document.xmlPKԣRN>J|q word/styles.xmlPKԣRNBS^m [Content_Types].xmlPK <pandoc-3.1.3/test/docx/trim_last_inline.native0000644000000000000000000000012107346545000017625 0ustar0000000000000000[Para [Strong [Str "Foo",Space,Str "bar."]] ,Para [Str "Fizz",Space,Str "pop."]] pandoc-3.1.3/test/docx/unicode.docx0000644000000000000000000002636207346545000015405 0ustar0000000000000000PK Eword/UT S=Sux PK!o%Ȋ=word/stylesWithEffects.xmlUT Sux [s8wf{/{vr%3M $Vq~79D} Ds9OT*&_܇'箣43*ㇿz*QğҘw1Pb"r|ꭅ A%RT)C"(j"ܜ\ mʋ|L,bhFRdP2-*T-BƔIW!KV5s2DS!ڍ$kg+I?(bLbIaYeƷ7uniUcvj7q=1ڽ5e<$ybzBEd22=d3`"5]4*;w<,?YO7y\1לD ̽;Ț;͗,`f`P\öUF|?M\"OYWޒwxQNrYjjnjP&l\Qu+ͺZz6d\e^x9K߄H6'fn27w i tN&e+ - Յ# 7fyX8 7cy@8 ٛw;ϼ,p11o41oǼ p1o޼!x `7cPgol#SHU zX%J K`uŗB<:a"b"/yi%rMA{ >d<ͅ%1znOPE7泞,8K)?*\KjA(?4,_SyUojrCpCU|ȶCagq[gGr+ŏ_Ҕd䳈Ȍu9LgV^(%"i4K]_9Z9^ۼFo?osxAe9d^ZPԲsO:ܪ@~ɼ?㋞U,.&Kw/?PK!Nword/webSettings.xmlUT Sux J0;wӊmDV>@N`&fu2Iclo(4Z`walnu I&SF@Զ=? J 5FM)Zk5Eq FrɣFï$9A_:2|B,ܒ#kE 2(?|6ɂHƅ_LBCZe-Tn^h13}i`um.O'PK E% word/document.xmlUT SSux Vˎ0QִIKA43Hulk ,!Σɔ2馎{9T8 4w;murWwcцȐﮘvO' :O4H,3wc4MXJt;Tȴ)D[ LeZ#9 . 2&q3S{)QyB>傛b ݹA Z )A! o2*=je< 7 dPTWF,qwI(?wx#bpY?ʚ~^)g5FXXVLJipKPd*P:؎te1peYxՄ/GZ+8|~tv|^̅i0ceU Gl 2}FjNz1{^ՠ'hbsLxhSj@t2U :ø!NJ0 ])¢y_ vrI6&ֆ57D+65q/d[{K~eVp Q_;Vez"s*+LH~FJN 6OFr[Z\.wI^r5MFqS$筏1oIްNQ"|+"-˹X=8hY M Ic35!Һ IDrPdӶX^ ސ+>JÎ0-GP?UimMw|J^fQȰIDv@G,>,İTpeUeo]gBLz٧+Q5`&vfe\t ="u^iOujrYwVehF _KfQ߮9]4Jxwo,{62>ƣ%tZYef!g׌&0GcjE.=dŊHM2:8Sx`N>ɥjY':byǗϞOOr RpR/G|Wfo~i*<}-@iD$A 02臘q qS3lI9P xu|a(ƊaTq\cMmYǁٸL; XԤ J{|DAQOpɇ ݡ1%}:Pfk4LLBKٻڜ23JJi GFqtuB.T: O4X=6HȄ9ב;| q}qc?#Xset;$Cpܷ)Q[4 $3 ܏6$.O#nFM@Ͽ}?mxzzfWÅO~vx@C'.~^?%Y7ڙh{H;TFˌ%`2dBM~ea ή'`,PHp G k|J!lΝ*~؜F Rg5VfƜxFkkjֲ }p*iTsӰP0#~\,k/ O9@|u4k7v"+̹kReJr;j戫 SPM>?َB,o69Zpw5/AsE׹Ԓ][ͽ~]CSm/d?Y|plh̔_9݃Cig[PK!_CNword/settings.xmlUT Sux Vmo6>`9:E[xP&7);ߑ#g E?z{s޾{Rrte6(pj&94ghXfGpٻ_y{(xOfnD!+Uv2]܅T'ns(˼Oba2kQ} g6>f s3M@1GTn'KF#ru0)θ 8`4=@ij=羠c(r4T9tԽ Ք %ɮIQ_QCij+ɑ<t<@ eg#QCEHY >6Օ7jV5hF&;n6T#j6Z?Ѵy) Pigԇ_B7+T c뼠Q?P 28ZX-'%/®V~4Y~ Kɴ(~u+/3W1Ţ 笪 L#y2U`uX5yF@L։;)&労ùp6, C_Ei>> s 'v(LfSh/T][WKӺ8Z?1ihϡQ,#ڂzH `ͬ$To'LO<}qEvsM;.~&܌ÀMvbw%l6`lEv4OH)_5혅nLэ%<Ѧ.<[{7*[˸^.ۗ8, (vt#HQ [`~%qPK!ɩword/fontTable.xmlUT Sux Kn0zX:9p "Yh!_.#tmΓmFhT'ކ˵JP0cꜫUfgSYGTNV,A[f:.rփƒ&t}ҒIbGb 68X/Ψq|w[?xz]+Mג)מ ਕ-yewnkjmhʬ$joDFS._Z3)'iy!K{p^+"ALK@E,؆gq3"HKb,s "T[sk@-w< Y.q>0P @X{%ljY n`JlwH\nYn@=ý}RB<3 )5%uΌU;/YMyv}|* *TV\2ݰ%QG1Q[Ex Wi}O&s")((xKd'I6"GH4:m$G}C; PK!Y;word/styles.xmlUT Sux ]S8wf4_ivLii׊Ěڒג _+GGWIJ>+9~!M,W\E8z3 &,»ۏGa4I`?x{cT`:K"EcFfLkD|3HIȎL3'\?4ldr\9e$-R&t5~(JbVv/(%eJNZ/%\leF\*o4URfhXJ0HFȜ3yF(|gf.["Ѫ/GĮ4*9߻2H0s%8[}I̜ )5on[|+?=⯄fBFx>6wk9v@Vzo,]]:pM¾ ھ `훿1oǼ{߼<p1oǼ/ 7fyX8 7cy@8K7cy@8}[@A0oͼ,4p1oǼ p7o;ϼ,p1b y(h `7cy@8 7cy!x `7cyOy( 7fy@8 7cy@m7cy@P&,~gk3A R`ݓ**yh% >m^{?\y3cf>Q]n Wg=2ibm5EذfTSA=UU Oni9~;Kw0n]V?8GAե/gԟW"2MՑF$l;^$&uowMZgGί2Wy`ۋoQ+7 ޛUAhwBQϙ0-ڏڰV@dzf^|vqzDRPK F E word/_rels/UT 4aSSux PK!|;9word/_rels/document.xml.relsUT Sux MO0 Hwv@h.+ qRh*1+Уm}Db}0 ȒZ cKۓK`-d, 02?>Za-).ʴTDAUȐmhI%oz%Yιg@V*N6 znHOb%]'Y+Ph.8Mrz1RWcx4Thh#*~>%.зg3s8A;Kk{߭1)%^qsU;wPK! $f[Content_Types].xmlUT Sux MO@&f]`pP<*vJ7Wv"1\lg}fN2:Y@ٜ.KJW(;)cIDa !?Y{ mY9#bv u&, u /RfmpTv'!Fs]e;m)#Vǐ엶=  n[0}7Vr'b;Vgd͡H#DNi`o|H')ؓ7t PK F E docProps/UT 4aSSux PK!4JdocProps/app.xmlUT Sux Sn0 ?7J(FŐba[mϚL;dIؠ׏YwOIk#l߈l. &T7X~E&+Ǎ8aإ1\q k)9`Ӟ3uH&S#C][wI.k*bP\E`:5B= Zfs :sϣ~PK!lA<}docProps/core.xmlUT Sux ]k0%mDB[a^M̱kXAYkV˼e>yxI^F$)@s# ^s`Px(rn)7^&)چ`)ƞoA1nÍq*lfIΰ wFtR >(폫{jP$!p߼'W`&zz6M4Y \Rw\p`\ ؐ㫏kêFx<\qw;ӞiDԖG^ribɜf4MZ:qgA70/PK F E_rels/UT 4aSSux PK!N _rels/.relsUT Sux j0 @ѽQN/c[ILj<]aGӓzsFu]U ^[x1xp f#I)ʃY*D i")c$qU~31jH[{=E~ f?3-޲]Tꓸ2j),l0/%b zʼn, /|f\Z?6!Y_o]APK EAword/UTSux PK!o%Ȋ=?word/stylesWithEffects.xmlUTux PK!Nword/webSettings.xmlUTux PK E% dword/document.xmlUTSux PK F E A word/theme/UT4aSux PK!0C) word/theme/theme1.xmlUTux PK!_CN&word/settings.xmlUTux PK!ɩword/fontTable.xmlUTux PK!Y;word/styles.xmlUTux PK F E Aword/_rels/UT4aSux PK!|;9word/_rels/document.xml.relsUTux PK! $f- [Content_Types].xmlUTux PK F E A!docProps/UT4aSux PK!4J#"docProps/app.xmlUTux PK!lA<}6$docProps/core.xmlUTux PK F EA%_rels/UT4aSux PK!N %_rels/.relsUTux PK+'pandoc-3.1.3/test/docx/unicode.native0000644000000000000000000000016507346545000015727 0ustar0000000000000000[Para [Str "Hello,",Space,Str "\19990\30028.",Space,Str "This",Space,Str "costs",Space,Str "\8364\&10.\8744\8744("]] pandoc-3.1.3/test/docx/unused_anchors.docx0000644000000000000000000003173407346545000016776 0ustar0000000000000000PK!>RHq[Content_Types].xml (j0EѶJ(ɢeh *8 iĔĥI6y{57F'+Q9Ag XreYQ\hg!c[l<NbBj3@G#b숽}mG$9eٔrNx2ُw\m78FSwsJ|yPK!6{)word/document.xmlVYo0~_iC*TbZ+8El; -TZS6\(p |08}L#_S^?ʎ:>/@_}^}?< t!N71M91ha nM#SXsHCf2)6}Af[SJzYt=K,샳 ml-TwlsȠyȔHN؈>t,= z[CrGjZ]ÉFPۈ]У澏L\"b* XÄ=(bɃ9 s!3!B DlnA{<1L )Ց}:cLq؏D.QnQa%Ae`5w12}޾#վ@m D8'c'8=Sd{.շO{!˰uG6ܺxkw[Hn tto/+V⪮$[cLȁǕs9p(UE-,.3p `p*"pq0\; dykZqS],'ri [xAɵ+/rKO2Q /wb}KpV3I m(5YC2!f^EqM[lE!pqbUyIGb>+(ʒ֧FY&[Դǻ;5V+7XҽuB붝o hV2jV9^Ksqާ^j&\}y]Ut"G\ Tk.'8*^k_AɭRK]ϫW^ʠ8zCFV֙dhIڟ`/ۘ,eYs"8ЄARU&xd"0܃Ҳ$q ~%nK|i yK*iGZhe2{ QPN2n_C.nq Un%E$/Am5@ 6TfvJJ{yOeC\IadA?k;@*9eVkzy8 :`n ~%яdp?o5'7bTR? ihU (pm Z|?a`)`scA5(L!d5#i276[zf3)hⅦvt4 "@N.7ሱe SgFzm5R_|BZ֪ANAe% 7u+׾O]{Z|D^^ӹY#N~j.G{J D60o,W0H9X)ctl'_uݓ|P=;6w#w Ev d*yB1ߪ kPK!|ZU(customXml/itemProps1.xml $( j0C{6j㢍^K fcԀI$i{if~:+  N ^_z\ QA,*pD!:.Q: giޔ4y 7}ۧYóص}ѕ߀ڦ3z"$YnU6 G獈 D8jQ6#[қ7@~Vc=-W}]XO uEvyEPK!Ž ChClhCKhC*hC h#G90EprGws~Sw ݟw:~-ZYVB<9rk8%e"xJr2ىx0-d1"s]r,cbzhyǪ X)!0y:F'S)OBNtP] I=x_E$I VRD5ÝȆEs"3ᵁ / fxe`0 Ϩ҈F҈҈ƭOq4q4q ؤcU,yDŽƞ3 YS^t;~v.erL=04KrEƴgN U'/DG{Atz$SdDDRL9_撥 >M'9'"j].:?!K>/D%XaVTE$g9hƚ7| _"oA/6p:ثep^BQnţ>şX" H6le\ x CN?R93K]Yȗ2x8&g2vox\l9_ǜ =KgbUudDtxxhXmܮ=-azZ6,Op?|]Q1nm+6m!xE a@ӌ۾x)9)uFt )̎I EtG! NuNIƃVΤFqctF;nDFDNsTJrSz&7wr# lq d+HVVnD*D:`F ̽ )hBZ*\ qB>BB Z*D hBZk{P!-T@ "B5B8B{BP!-T@ "BP!-T@ { RBP!-B8B{BP!-T@ "BP!-T@ { RBP!-TspP=NG#THA "BP!-T@ "PB^BP!-TO{uy~KWS?宣&QUܬE)h b iNQ;.׹ԅϯWݿ>t\3i_KpNeuKPM"n VӮ[+]V7waޕkprtpWf5@']t±F8uJP}&׍nʟN ޱnn̰u5$x`] Qޮ(?WĈu5$`]ퟜ/W!j8a] XWC'd'js5\a] XWCՐjw5Dy\ d!jH\ 0(oWCTYQa5C܄\3%皡GTjj 9Z;M=7?c((?W㪥6W MW-9]:]:]ܮUKmUKmOnqRqRqՒոjոjոj'd'ոjոjj\j\j\j\t5Zt5Zt5ZrW-W-W-W-9]:]:]/`lB2e3k?gڋ拷EIX$MòEc ^,To_dZG_hhv%K˽ca{,gi*Td|9z|Eow"}\?JǾhˆ,t34d=g|K-ezݦ7^TְܾLoܼ,aVtzir 3h"lwE(MIؾlr[e XhSOsw]GDX_o/k\2\˵FΝ* Yz38R&:ʞFXRxf՘/yy@}j&'ٙcwow?8әΤ-mn:=cx6vO[l=}o fN&V642j+u͎շE <,27fu^#`{[lgpٮUuҮ7/׬U=%sw";ÙڀkĎ\ok;>+vo<;]vPK!sqdocProps/core.xml (_O0MtDg'K.1F[m:(Mۍ[`D|c{F2Ad $+f yRi^JH 1S+5RHDL%hk06l 5N\ֵze;< k\Zkz":#9j `2!xZЅsQ~8 aO vb>Tacu|^5 Yg1g64C*fq5@mӧ;*57nr9ôPa8wN]K] wڭ osZ=JF)oC@4 3LdUfX'1٘p3PK!5eX(customXml/item1.xml $( M 0}w9.\ BBn8@~$Ao 'r^FPK!)cword/fontTable.xmlܒj0}ƲS֭E@Qd01:Jl'BsӋ ~:8wa{x>i\S?O0J;]F~rۗwwXZU6Ʈ2Tgӎ+#-CYKm'#l@ ;l#a4"ٚg%&_YP3U4x.5πy8PT #_M鳾tҒ]N::'o/ME!bIcbFu(҂9Uq4:={ 5Z ;܈?!o5K~Rt}IIQgX#G 3xX٣ҽH!(%呒Hg'2$2MC PK![m word/webSettings.xmlJ1;,Y-T>@ζL&̤kH/I23; X֌ yZj|pm*).-]قl7=,)*IYků )Cǎ]ђWnfW"Pv\Wf) u]pK~ʮ2D):dSx<>=t!3 ue'Q>w'@ܯ[D@'3S̀r >`N| v1RpPK!apdocProps/app.xml (Sn0 ?7vEŐbm-=k2 %Abf_?N\ei=zz)~ڛ!jgWl>XVF/WXQFgaŎ٭x?!X+!eYFA/Җ2 Da_ zb^l͕٨<6N%>z ~SuzA(r!^rD| *(J"ݪUpѵXVy '[P/AQ9ߴ}|w's[% ࢕&/|25A(tu2B;ȠE6dG hH{r?$#,axfh5;;^ڣ:Ϛ;׀Gj"u9|Ĝ2 Ón륢^}|KQhSI9H8^1U u|LJPK-!>RHq[Content_Types].xmlPK-!N _rels/.relsPK-!ߵL word/_rels/document.xml.relsPK-!6{) word/document.xmlPK-!R%# word/theme/theme1.xmlPK-!B@l rword/settings.xmlPK-!t?9z(acustomXml/_rels/item1.xml.relsPK-!|ZUgcustomXml/itemProps1.xmlPK-!Ž u&_g*h̽WL; 8t˜}_6-n&󽇘P9[!GΣ\1s,U*@z KKw="XL`*֘sK,yjj ﵒ̛*?:@Ǟɍ-?hM6=q|=XSAD7aHo](HĬ*%trmh$}pb$=_$vm0EZ$lFfس"Xh;^ #'I%)x?\w>ղ6kƮ5 ʞ~kdIwPK mUF? _rels/.relsJA >Ő{7*"^ЛH}0!#ZGr;R|̛ GcVw5R&=t0[b'T9֟!I O1}qѶ(?0u 7}|; |sGFJT2kT,g|'CC†jW)9 5G:gVLiY5%uq͕nm\ԯE%w]\_C]PEd.Con [w%7RLRi|c zsOQ ~94 LPK mUFz0word/_rels/document.xml.relsӻN0N(邐NrrE)зE8E ,ٲ7o5Ot~4Z@P7u/z}my$)Lh= k0g}3>3uH:㔤0t==U[v@yɪ4|1A?>]۵ܮ-UH0 x2~&"$1n!d _XfG"N-錦JΎ k`?9._!mh6Wq g PK mUF4o}word/_rels/footnotes.xml.relsMA! Et]c0z+B(1_.{^y3n88L /$~ݟa]v7Cјш: șt*eWi-`%x .?PK mUF&word/numbering.xmln@ ($]JMel2 'oصC+`Ϝ3,Iy(H##_O GrqiNBDt$,qU5֐%Ag)[f#*[.Q 㱪 Tg gLSs"HZH5:F8tHqd⒯DΓ  Fke2䜺Eq )f}[৘ܶ, YeO Ìkt6TML;a7fw}lġ<~m"x_Q'ܑR8݇o3lkv7wu~,O:5t}n(|V}v}XQƃ Gb'܈S1'S@UBS";_2Q) }O lQ\eIp3i@2g.$r9Y)sa?vn A MyWT)k( ,jH+%/zm?̈|3;'H(anql pҵsㇿ?_PCj!=e,h47opCcɤG'"|^-9<#^c/` }.t"H{^F3&`R!L^Piv4Axp0J#)tׇ] ?pˍw +QIQP!ߕ 2(S(ːЈSbK/>k:)G5IB Lr]|5!GOrxHn ~IDJLņfW<>0\8# gtmǞn 9m F0̬ hNa@hN֗ѤCuvP%F T,L<Ʌ\H AS+L?M=䫯l8Mma5.8C%+<\ȏ3G9P(Y8f>O7E+*9pyhڙ˽9?s9sӣg2AE̜u\*t}.ǹópbph|8 á¡^v1I4ϛW}vOxM<^ٚb AI0H:{$= o]r>Rjs7IJRYMDXB JWYrY E/֝٪Dp&("-%g܆yVLo`+{?rMܴŌDAiF^FaU:!=$`XTV\Q6;HFDg-m]S~9.z/QC6B_%|mSh <=20$T4Srڧg3xZyFݨos6{l#ʕ?SuKfNvKV5]fm07e;@/91bBB[a'ӽ(x\ʈ)I9\vETn#(y,?- huM r}%EoL̕z"Zoöφz`4s4lҸPO݈^^GUg^n* >,~2cŴr딫h|@E!7CHؖ䯖or-]*wDFM$J;(jzI!\ńٛR3ܷҐUI+0me4^kCٴ2;t 58gN7I &dy!l=~߈=lyǹ䞯so2wǀp-7NF}q׏zč {8NjtU;vd0)7Lw<ƘOuJϛVG:~JMǡ'|e矶nGN8πNn8Mffo}ԧ6u#иi @NaL:9 @f48N2un4C;u੣œtz1a zp nZ^q:hA%ʝ-\yLϬ88~bYL֠7XTRObɟTBg&(T (R6(FM8<͙wrlcqH.ƆPK mUFudocProps/core.xmlmMK@ 26 "< u2Ѯޱj+$twdUSժ X?鮼Ub`zR*O-^Eb HN*>QIG _2F4*O D$h6V]$Hg#E7\s+8s5_/h~/嫥IGRCg+ leIK; PK!)xDudocProps/app.xmlRj0fʆCS$Aۢ$I}Gqwס4͓u bصM6L.~m cc]{>DF$BٵsVf,i 108C<X}/^%{΂x+jcLbXCOsȤU;~c#Ϡ,n& }p#-uf)`?aFÒ_%WA\398psejH02񱪭!tAb,1Mo l@]9a8jzDwyH}=\mx:$4˾+ YqRC#K9F5aM'[^'NbPK!\word/theme/theme1.xmlYOoE#F{o'NDuر i-q;N3' G$$DAč*iEP~wq4;{o?g^;N:$BR64Mvsi-@R4Œ mUb V*XX! cyg$w.Q "@oWL8*Bycjđ0蠦r,[LC9VbX*x_yuoBL͐u_. DKfN1엓:+ۥ~`jn[Zp֖zg,tV@bW/Oټl6Ws[R?S֒7 _כ[֪7 _w]ŌShN'^Bxk_[dC]zOլ\K=.:@MgdCf/o\ycB95B24S CEL|gO'sקo>W=n#p̰ZN|ӪV:8z1f؃k;ڇcp7#z8]Y / \{t\}}spķ=ʠoRVL3N(B<|ݥuK>P.EMLhɦM .co;əmr"*0#̡=6Kր0i1;$P0!YݩjbiXJB5IgAФ޲a6{P g֢)҉-Ìq8RmcWyXg/u]6Q_Ê5H Z2PU]Ǽ"GGFbCSOD%,p 6ޚwq̲R_gJSbj9)ed(w:/ak;6jAq11_xzG~F<:ɮ>O&kNa4dht\?J&l O٠NRpwhpse)tp)af] 27n}mk]\S,+a2g^Az )˙>E G鿰L7)'PK!+word/fontTable.xmlU1n0 X줮;h]ҡp@ӔEHڊWgܡ=B!6 lÉk.n: O%0&LK"癙0FB8r5xe`߸}{_\hZP f4~gtK%"N) k{ dƇ `\. a+a+N \8߬Uͧ4[G% -Q\Qa{BÝV$Ҽ~jBʤCkᢲgFpJ 3D9S}BSڡ納g^I\1Y'v!i '.%1OM,nRR]Oi˽1QO,{0}pVtGN8czѬ[|t[up1j͆iZftNGuyݟ9gAy)]wʿlBcNx(i۲zQp!'͂G{a_ nZWJTբ8VNS<+-N{E u: M˗ x@n<֫6-Y 7J2&^T;vLs#l>Æd(֢,r^GRj79)'/8ŽRW͑pvl!%yrM,v&k73'EZj|$#8ϾPK!ʳCword/webSettings.xmlQK0wP򾦕!RA& a\e6ė܏jlqH}+xS+6QPR~P=$*7?`St+B#%xnJ\I:?aLoIGyWU⛉(8F2e=&Џ2!D@8{2 gtD1|l$O(n^&QRtYv,l?1w_PK mUF ]$[Content_Types].xmlPK mUF? _rels/.relsPK mUFR word/document.xmlPK mUFz0word/_rels/document.xml.relsPK mUF4o}word/_rels/footnotes.xml.relsPK mUF&word/numbering.xmlPK mUF\uCU word/styles.xmlPK mUFEL\word/footnotes.xmlPK mUFudocProps/core.xmlPK!)xDudocProps/app.xmlPK!\Rword/theme/theme1.xmlPK!+word/fontTable.xmlPKKFVI word/settings.xmlUT Tux PK!ʳC#word/webSettings.xmlPK$pandoc-3.1.3/test/docx/verbatim_subsuper.native0000644000000000000000000000061107346545000020036 0ustar0000000000000000[Para [Str "m",Superscript [Str "2"]] ,Para [Str "m",Superscript [Code ("",[],[]) "2"]] ,Para [Code ("",[],[]) "m",Superscript [Str "2"]] ,Para [Code ("",[],[]) "m",Superscript [Code ("",[],[]) "2"]] ,Para [Str "m",Subscript [Str "2"]] ,Para [Str "m",Subscript [Code ("",[],[]) "2"]] ,Para [Code ("",[],[]) "m",Subscript [Str "2"]] ,Para [Code ("",[],[]) "m",Subscript [Code ("",[],[]) "2"]]] pandoc-3.1.3/test/docx/zotero_citations.docx0000644000000000000000000003513707346545000017356 0ustar0000000000000000PK!d-e[Content_Types].xml (N0EHC-Jܲ@5*Q>'_gҴBDJf=w5bޕ_XNzݬde Sx%@b` 2RT9bx<9X Q 8AO1~qk65AQA {!UZ!hZfR+zӰ:m s/]7zjolDiv"(h0k(,(vhOZ[XodJ]+A#) 2Audt>F%m )%b Oڶ?'/zzg{ug?h{%VVZJ;@5p뽒Bdn73'W>$^Y%`OY $.Ԗ~.!=z> Ip;h0X5Ajə]> pӞAB\@ qc7z0 GˢC!Tط툱ˆ׵a %ְJ&XDoZz^WUbT,i4+Px d5Ĕ 0e/˂C&8 BM=4s غnG2b~&[-nD<:1{lj;1)$g0Llv<eF},YQX=2`,S ,3e3Ŝ#Ra$O|N{W_WbRʫ|ҥ1lIwCK~}Sw&K1x (A) ӫ"QD>oEDnǟWW&KGvV1Eiw:fOE)u]%ض`<7*!t'$?jm\?戔ViHyR֫$,3FK-Qv#';`:^m\& ~2)+h&ǧz٬!c yrk6&|;;g3"I 5wYఄ ŁD$PdĘ;["'=&A%t-Qq9=җBKLgt/ mL=FĂi|Bx4^جȨgZJ:J#Ml(d@I"ÝX ֭V՛e.skשVms=뚝v}e`ݭ5u|c 0a>cbHwǎsF,J b,bճz,Oz\#W էs{EkNs f&"hgK]Aeً87-CQf,vt2JN{&3(L O`%%FyMΈBf lq_r`\jSJa9|b4~RIAI.\ImoAvkԭ|],Rq HNq)=W+y,= _zCkHj| ~(:鰍Y%x0.=MFD%=('i!qo<8/TK/4Vm^urw2NP0ŮVw5j o7o:>S!?p8JX[d0KDEVKc2P,ũa].ﰘsYҡ+(!O>zPK!g word/theme/theme1.xmlYKGza5Hk6޵Rkiڵ0`r C B 1cII3-ď] U?4s:G ’[=Wqؘ$aǽ}0,\GHe ,܋;v8:n$|,F096 M.cAoL˵JQI\'A11vJwg|@_"QTcCBcӪ P!qa1;>P$$Lt܊s;k!* dsrC[ 5-õ^֯TnAcX4NS.f-(mZtz׷]_} Mo ? so^7kPllᛕnkx (I[ߨݮ!F/[m6kKx*+OdQCh"IG.fxF %8$ f(a+ʰR(:QN:!#Nf^nŋ|Ǐ_>uey7?}/͓oxǿ_Ag?{rt :>vn6hY8KtP) z #}}(zش4gޏ\ Z=hq랮V'}q>n!td[;`>'6A 7)8QslE.!]Ȉ3&ҹK"VC#2$,l߆m8=FmD@ԦSÌ\4E2_ap!!6|aнi=M$djC">gV$+b !LZI0>%Cېfv$03N)H]NћFhbL1cܾbóaelUdƪ'X@c0Bvb#,P#^ \u5^hjRա!bcZoF+x]pr@ζ9@X U-݂LD'-6MCQ$ykQ O-өwT:Ed)mV5c5}4OnbG,г欦4E9d*GdE?Z=Z§>B\P+t#쏇0;ZhiAs 9m3~fLUP83&pVj=6NGsM@2k5eLGZA늀}Lu j-$NE¢_K HRFncT~St1m,k+iD.L0>e_3)i4[*l=\5#4xTIɥ?$̸}$DbPC@[T{Dɵ+Wx2#Y0ua.Ub=!XuHGc-Ue1rm1άGxߒQDgZ(du{M'tsWfP9ķۅD.i\ ִ珏wXey`\^庢[BZAM1PFMjX[fqڷfԪ bUW֋mvx"J¯+4Uv/9'AzAJ?(yuRjzVC0⪟=t|oǷǫR܈ewt# k ZF5J^ڥWuf5WռvPK!p. word/settings.xmlVn6}/0\GK#%n:E)"o-{.]&̜3KEzE 0EAvN҈ +|ا k jj\,zu*0CBԘX ɐ ǦHP~cS<(R(Qjc$9|d)aG_b 1*R+~ ʑwNo8^hA-E bHx8~Ft}#Z*0:DrS|!:B!7Yؖӯ6m %Ee6&.u$JRύ>P7+S4Fۘ~"*PF43{+J5R;^@!3RX!Rmo1*`ʽFAq.PW럻I[i¬.[|BUU4OnH #,GI$92[].«h2u1w?[rbX& F&;<Т)i2-tw QvMHn{NC(eK-nةqY srdgš@ />S},l;G.ewA9S:x꺭lN=JMhe76bQ @[NFN6eŽ,qlldI F^ J=L&AUv>@yV 5إ F .oך =yMA4L`F>g0S{-ob1s+'Pq[8% ZG K yqZLҸj׹vڧv9"! $@R5tI<,2=~< e$χFA^4bL߿/[@$ OGXy8 ?OVqid 1({;;G L O c?x2b״>ELq'|?ݞ۳w{s˩VpdU6HeT=4Sfj L !FyWz3x><}\E3^,3GtgꢊFS*QIo*QU ؤx{ֱE,Eǔ :gܳ=fl1Yvfl92z (ƴj^oBBZڠQk#׊G$o4YOЮi3h!rB;\mak\,'A; v'E[rx֬JիeD6}Kg!5S?k Ωtm y]n[YAW-0xЕt.RpҌe0֖9m̖!|l:9oZ짣M K:Cau{nB_7 (:1xǺQhQ~2ú_nՐjw5Dy\ #Րurv\ 0(oWCPu5$`] XWWC!pru5$`] XWCjs5X%] XWCՐjw5Dy\m΢4\eY2%gcdY{,j 9nd;M=7?c((?WVKmu5nt5njjոՒոRq6W'g7ոRqNWVKnWVKmƭ\[-zZt5nv5njjոRq%qNWVKƭܮƭ\[-Zjs5nt5njjոҝ2$,+]|^/'f<3ڦޢZ9~i|Jͷ g JQ h~x>SuM`nSrmY1R ^]+ǭL SZ](ǫ*UEt~#8}ڧ7>װ\&N>_}&."wux$37cv{R$?4r8Gm,{ūۋ7cGDTהVg:;vTdNA U^CUi\&QR}[iJ:~ Oc>JSGww-6OW5:33;fe(?Pl_zjnsО&7uj{-\%Lf8yFV͏3r:`=dgs> Xm .3mz7:ѫ1dL^/PK! )NN~word/webSettings.xml_k0Cɻ)Va ^`Ն%کsb.! SXj0 E eC.@b7YWORŠ\T1֙+pXSa# z*&8Mk,Kց] `YDO5h qs3 8bun/0/]?cv0$G;LO)Μ%sP2>ޫlcUT\~IMN޵wtڲį%ܶ\uCum bh AG?f PK!/zword/fontTable.xmlܓ0 lv#Uzby}džzXy<]Y|'6_uj7^H<_SÓlEEF #W/]۠>wG23nPK!"ӈdocProps/custom.xml (RMo0W`͡&. ިXiR"9ehZM)׽Xstrikethrough. Some people use single underlines for //emphasis//. Above the line is superscript and below the line is subscript. A line\\ break. hello %%//%% world %%**%% from %%__%% me ''%%hello // world ** from __ me%%'' pandoc-3.1.3/test/dokuwiki_inline_formatting.native0000644000000000000000000000171407346545000020763 0ustar0000000000000000[Para [Str "Regular",Space,Str "text",Space,Emph [Str "italics"],Space,Strong [Str "bold",Space,Emph [Str "bold",Space,Str "italics"]],Str "."] ,Para [Str "This",Space,Str "is",Space,SmallCaps [Str "Small",Space,Str "Caps"],Str ",",Space,Str "and",Space,Str "this",Space,Str "is",Space,Strikeout [Str "strikethrough"],Str "."] ,Para [Str "Some",Space,Str "people",Space,Str "use",Space,Span ("",[],[("underline","single")]) [Str "single",Space,Str "underlines",Space,Str "for",Space,Emph [Str "emphasis"]],Str "."] ,Para [Str "Above",Space,Str "the",Space,Str "line",Space,Str "is",Space,Superscript [Str "superscript"],Space,Str "and",Space,Str "below",Space,Str "the",Space,Str "line",Space,Str "is",Space,Subscript [Str "subscript"],Str "."] ,Para [Str "A",Space,Str "line",LineBreak,Str "break."] ,Para [Str "hello",Space,Str "//",Space,Str "world",Space,Str "**",Space,Str "from",Space,Str "__",Space,Str "me"] ,Para [Code ("",[],[]) "hello // world ** from __ me"]] pandoc-3.1.3/test/dokuwiki_multiblock_table.dokuwiki0000644000000000000000000000034307346545000021124 0ustar0000000000000000Sample grid table. ^Fruit ^Price^Advantages ^ |Bananas|$1.34|built-in wrapper\\ \\ potassium | |Oranges|$2.10|* cures scurvy\\ * tasty | |Apples |$1.10|Some text\\ \\ after two linebreaks| pandoc-3.1.3/test/dokuwiki_multiblock_table.native0000644000000000000000000000310707346545000020565 0ustar0000000000000000[Table ("",[],[]) (Caption Nothing [Para [Str "Sample",Space,Str "grid",Space,Str "table."]]) [(AlignDefault,ColWidth 0.2222222222222222) ,(AlignDefault,ColWidth 0.2222222222222222) ,(AlignDefault,ColWidth 0.2916666666666667)] (TableHead ("",[],[]) [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Fruit"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Price"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Advantages"]]]]) [(TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "Bananas"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "$1.34"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "built-in",Space,Str "wrapper"] ,Para [Str "potassium"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "Oranges"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "$2.10"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [BulletList [[Plain [Str "cures",Space,Str "scurvy"]] ,[Plain [Str "tasty"]]]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "Apples"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "$1.10"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Para [Str "Some",Space,Str "text",LineBreak,LineBreak,Str "after",Space,Str "two",Space,Str "linebreaks"]]]])] (TableFoot ("",[],[]) [])]pandoc-3.1.3/test/endnotexml-reader.native0000644000000000000000000001142407346545000016761 0ustar0000000000000000Pandoc Meta { unMeta = fromList [ ( "nocite" , MetaInlines [ Cite [ Citation { citationId = "*" , citationPrefix = [] , citationSuffix = [] , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } ] [ Str "[@*]" ] ] ) , ( "references" , MetaList [ MetaMap (fromList [ ( "author" , MetaList [ MetaMap (fromList [ ( "family" , MetaString "Chapman" ) , ( "given" , MetaString "A. G." ) ]) ] ) , ( "container-title" , MetaInlines [ Str "Ecology" ] ) , ( "id" , MetaString "13264" ) , ( "isbn" , MetaInlines [ Str "0012-9658" ] ) , ( "issued" , MetaString "1937" ) , ( "number" , MetaInlines [ Str "1" ] ) , ( "pages" , MetaInlines [ Str "93-105" ] ) , ( "title" , MetaInlines [ Str "An" , SoftBreak , Str "ecological" , Space , Str "basis" , Space , Str "for" , Space , Str "reforestation" , Space , Str "of" , Space , Str "submariginal" , Space , Str "lands" , SoftBreak , Str "in" , Space , Str "the" , Space , Str "Central" , Space , Str "Hardwood" , Space , Str "Region" ] ) , ( "type" , MetaString "article-journal" ) , ( "volume" , MetaInlines [ Str "18" ] ) ]) , MetaMap (fromList [ ( "author" , MetaList [ MetaMap (fromList [ ( "family" , MetaString "Strohecker" ) , ( "given" , MetaString "H. F." ) ]) ] ) , ( "container-title" , MetaInlines [ Str "Ecology" ] ) , ( "id" , MetaString "13265" ) , ( "isbn" , MetaInlines [ Str "0012-9658" ] ) , ( "issued" , MetaString "1937" ) , ( "number" , MetaInlines [ Str "1" ] ) , ( "pages" , MetaInlines [ Str "162-168" ] ) , ( "title" , MetaInlines [ Str "A" , Space , Str "survey" , SoftBreak , Str "of" , Space , Str "soil" , Space , Str "temperatures" , Space , Str "in" , Space , Str "the" , Space , Str "Chicago" , Space , Str "area" ] ) , ( "type" , MetaString "article-journal" ) , ( "volume" , MetaInlines [ Str "18" ] ) ]) ] ) ] } [] pandoc-3.1.3/test/endnotexml-reader.xml0000644000000000000000000001472507346545000016302 0ustar0000000000000000 EndNote Ecology.enl EndNote 13264 13264 17 <style face="normal" font="default" size="100%">An ecological basis for reforestation of submariginal lands in the Central Hardwood Region</style> EndNote Ecology.enl EndNote 13265 13265 17 <style face="normal" font="default" size="100%">A survey of soil temperatures in the Chicago area</style> pandoc-3.1.3/test/epub/0000755000000000000000000000000007346545000013065 5ustar0000000000000000pandoc-3.1.3/test/epub/epub2_cover.epub0000644000000000000000000002702207346545000016160 0ustar0000000000000000PK 3Noa,mimetypeapplication/epub+zipPK yXSOEBPS/PK 6N OEBPS/css/PKYzXSR/sOEBPS/css/idGeneratedStyles.cssUT uauaux }Qn0s1LLL]0~ XVUf<0\` w`x2p|XXYj윇xy9~0 x89x`aef:`b`bt0HSV4?!fV6H%.nh@5?>3!HYVDI%]6!{|'dsHꕷX ;> :rTT3geΩk\м|EMK+k[vN]\=? {2:1MrJ_i9 ?UTVU7wtvu|6:6>19E$L{k{; `fKt,v1 < zRMPל)z m-"HOSLeo,/ۮ)!frVp2Y12[89:$YRzͩ TF᧟맿EWZ O1wޑX-Q}YtNi̔6Q{NGY"!f xqɷb6@قRsÏa$g>#?FwO[&HPjYItL4YʷզPq7~P2Ѭ? n|~D0h1.QQ3>},w^Bjc=u:߼MbH5W~5 y<+Β"i  (0&IQ^bS'H|*sHoB=ɓt2MN`8BIoJ!/6^N;*8í"hTp3)0" sO JA tkNy TZ[[ߺoL=j|֋buiݕ_8oCPg,(s/ݢ\&t#DK'JZ՚`Y㏸Apt>ʤx/KEX#ɂu"*N ' k /J{).V_7_W. uzRAuܯm҂;:TM$X` ~ҚKy9So{u%&0zKMݽ$=v%5n #C3x3KycM> wqm-hߵ睒tu[cR@AviCUDcLLFӹ*A+htH=*Z#Wٺ6~SByNkO|TS NFpA8TwAʀocj34 W5;ok~mj=#UexO*xx1 LZt ầ;}:Z5G ܍rچK67/=޿R||1v(F72 \!vs]cmP5f44P{eM YIۊz mi$tm(|G>/@Ǘ[_8J4Amm2vl꫺xyV!-6dzb`Gi2l(+Lm[8tEdbpVJaHIR*%X5\ ׺]xQFӉL[⨚Q{&\L DR`kd3@b&rh09˥]*~ 蘌y]ǟd 35IʕynkNbŮG`ZbK9 =&{ķ]ܷ6KX17r Gt#l2FBe< `p2дb-ya%oWQ!W#ߨ"b˩Cֱ:ꑙ[CJy@:X2RcI*g=ktmZ^Sc qpW{?M2~̴%qߩ^k;Qf|;8/B-ZA.B r()$ QX&XD>\JXPPۭu 90Y!D.*$ VM {?|]3} Z.uq1H]=|M;;wT; \$x'RBekzyZ'?,ZS(mS|20q3a4燋S;BR[Ϳ;!Ee? N,e[]y5M3voPMo0.;vUf_m/g}.D>>#GQ|%ހ|hG}YRGNtC c~#"DLtxk19?<+ӸwF8E ʿN೯R֙ ,ch!tC8zMqXݼANjfjzΊnaȀ?JDȊt rSv0nФ `?pkյI6 Rfێ|'}ܸw#"ucKdw l2::@HRDa+H_}w%4OtLP| $0&*gق_Q"lx vA6K7.xU.aMJm3I}j੍fcSqP>C !2Ax*3vUHSt>#UK J 񾘌Cnƫ4Lcn|!=>Q[iLP"_GBCs6AE` 4^ێ *B/|\ nKBFr/4ekq=$E>MY3q*~=J>[Pw k0sƧr Qy銅Nx^Ulj>2}㌪)\NAUFςWJz u1"H>m W1>GqsrK78ǂ.+5~{j!WcadfŐpkr`|02vY ]+bx 6A@V%*8(b|-A$TuٌtE34xş6?}֢s \ PD4^UiY@[U-![;6V'9hP k, z' qո(Ghծ | <&T4}# ԹZxQؤ*T_v>*ZPS7&o){7H(\Z=_~fiȱf5x<.U5N 1Ne{&:>[>wXuB˸ 1nG< gV"vq(>5vp[ƃ[݇9e/,Yt юjUϧ)g/x5LҒY/`~wWZHDEŋs oQ5Z V?(\NQO4_ùViGrTC( \}2WwD$'A-z6xNߑy0Pe9sh d ? ֟n& b `'ҿmS ؈&0A\Dh$9;x߷16Y1{jdO>mmEd0V)4}J<ũT BAt@\Zdyu|ҔչF`y(s32lAoesi(qT7tS8ݎ!dL]bs ,~Z]*QkwsqC3A,1sA[^130xəDH Z{%4t4rm<vLaFIg&oY$/+OK: {v!֋O='dIzvfdN~>q!mp lx>9Stajuي"z[̘C9͍͋Z&i>wpB*A <,M~?t& a O$$X^>ũ{wnWQevgOR\LE%oJƮJ`O9֦d׈j,brv0_fp(U‚kC9S% t%^8ԌIB(~2CVD$;co4V1Y)rx}{WIÏ9E`7f `[uoqꎫ=jt4ܶ}Gź/H§{PKө ۛ6#"bL4vxߧwf#˰( N$x8]Vr~kk'ze7w&1a:~o|H=⏔zM]Zᦣ W]F:T-Ri"`4 J.h >}6\( ɞ~ww[\/x9O/) Di|xf +⥲v޽ZdC>b5-Ơ^.<'Vp,"׼qGU꤆䱈GV:=PdX䀯_:b=Ӏ-߇&A,OؔMDwC,=>WTsf#I+Py}j=+0'-X[F2J$]Dž.Mn:<#ό&h4!x&ԢWā+#U%__T,~5Ȧg۬NF1=C44 8SL"L촢%h h:׬mSuAmߪl|>y]`Άbkq,G&o7=ßX~}:';:nuHs(?j8fh_ c/1-4'G'{ќIWNocF)%6ELejGmk _߹ U߸BGHYwZ~fR0ܬ֊!; J@vpAk30|ȫ&+zs6UM.5&߄.& ¥u3iTȮ%pѤZxP-vC I /FsNL2P^xAìÉۏBLrdObVV]Zukxq="*޹VMv]bŹψ`z69'/f|J3l1ӤARb'vo(m31-[Цc-CrqVN,qzqweg6Cg1הj@wḷn ,n4o$a34ۏ`^-h\ 0Kݗ[w2ÖɊǯ .#g]#qt90@S3=7g)n^A۾ |gsj77-GK/ @t8]vDW'݉U}J\/Yb.s(j| es5hGX "\T~ rQw["̎IbSoDṎygg)!}bq1jITɎ7y݃ali/}D]v\U߫NpJQ v 2<5=vG?Bu\&u@Oj3 X!yOMOK%1A/&O O-2b̈wp!IfClu.c<-_J%69 -PK3Ng(_OEBPS/EPUB_Pandoc_Test.xhtmlmN0)ޓmBiV*/"8mY !)z&Xl>:IΛ搥Sd^C}AYRbOeDؿ|8*$%⼞ZdiX݂6q^ôwoX&ڳ,~Ω8a1YfډlIiNd0bՒfUw} T } u9qa;6GXΕ/ s qN65% Fm>G買AFNS}UMK.9ѩ&IN_|?e܂N̠ለv vuDy!qaimONM/MM6F=nBjdh;45;2ڔ1X焑F`,leta*G~2W)bg13s 0;o7F:#w@03]a83*%$E䴫URXj|˄L.55rjpuiօ2NQ0)Y1F 'QT}UjZj̓v '/$)Ni(vPK3N#ڛ OEBPS/toc.ncxn0ۧ|?$2T[JibW vڃflɴM`&;iJ~@T&9bJ:%J&Tiz^O<-*=y|1zfl/ƍ(Z"3/|m}2o JxK>"3zPָaDAc „Fz4ۼN^T[ ЋqM`:ybBa=BX áF3ʹ~@h`po6sv ]r,r47 WDr!g㲓`'~dP?#O`Ri`LW I%u!%m ok#FS=F11YDNܱcҙ"9/Q1%n:˟PK 6N META-INF/PK3N9> META-INF/container.xml]j0DWG-ˁ@{mlu"" \Cr7oϔ7="=| -&ap!mtA`d:a jT8dA2WsU71&ڌuiTXKL4Dl%osK}cY+xc{g@PK3NVMETA-INF/encryption.xmleN0 )p;u!q@CxqH% oOR|A9N6!kG AoNXƳhVH@aCu9j9Z^2OZt4y%)Vzw&˝*Ǵ8-K6Ƿ3wS?O.'џg]}9PK3Nc}-META-INF/com.apple.ibooks.display-options.xmle10 EwNyD*!i7NPf5Q=FoW手$& !utg0<㰳!I~qm%zK1䋊{P}D*)& ]djC[hQ-|PK 3Noa,mimetypePK yXSA:OEBPS/PK 6N A^OEBPS/css/PKYzXSR/s큆OEBPS/css/idGeneratedStyles.cssUTuaux PK 3N AROEBPS/image/PK3N"%|OEBPS/image/cover.jpgPK3Ng(_= OEBPS/EPUB_Pandoc_Test.xhtmlPKyXScs!OEBPS/content.opfPKN4{x$OEBPS/cover.xhtmlPK3N#ڛ 큭%OEBPS/toc.ncxPK 6N As'META-INF/PK3N9> 큚'META-INF/container.xmlPK3NV큊(META-INF/encryption.xmlPK3Nc}-큒)META-INF/com.apple.ibooks.display-options.xmlPKZ*pandoc-3.1.3/test/epub/epub2_no_cover.epub0000644000000000000000000000700007346545000016646 0ustar0000000000000000PK 3Noa,mimetypeapplication/epub+zipPK zXSOEBPS/PK 6N OEBPS/css/PKzXSR/sOEBPS/css/idGeneratedStyles.cssUT uauaux }Qn0:IΛ搥Sd^C}AYRbOeDؿ|8*$%⼞ZdiX݂6q^ôwoX&ڳ,~Ω8a1YfډlIiNd0bՒfUw} T } u9qa;6GXΕ/ s qN65% Fm>G買AFNS}UMK.9ѩ&IN_|?e܂N̠ለv vuDy!qaim4mn]e[{Eh,2_3*E=[ }~IC}|9H \>unh5]&QXWU"nn013fvG ṙ%-MٛNH@Pl]d|pݴT8[VrqܓTPK3N#ڛ OEBPS/toc.ncxn0ۧ|?$2T[JibW vڃflɴM`&;iJ~@T&9bJ:%J&Tiz^O<-*=y|1zfl/ƍ(Z"3/|m}2o JxK>"3zPָaDAc „Fz4ۼN^T[ ЋqM`:ybBa=BX áF3ʹ~@h`po6sv ]r,r47 WDr!g㲓`'~dP?#O`Ri`LW I%u!%m ok#FS=F11YDNܱcҙ"9/Q1%n:˟PK 6N META-INF/PK3N9> META-INF/container.xml]j0DWG-ˁ@{mlu"" \Cr7oϔ7="=| -&ap!mtA`d:a jT8dA2WsU71&ڌuiTXKL4Dl%osK}cY+xc{g@PK3NVMETA-INF/encryption.xmleN0 )p;u!q@CxqH% oOR|A9N6!kG AoNXƳhVH@aCu9j9Z^2OZt4y%)Vzw&˝*Ǵ8-K6Ƿ3wS?O.'џg]}9PK3Nc}-META-INF/com.apple.ibooks.display-options.xmle10 EwNyD*!i7NPf5Q=FoW手$& !utg0<㰳!I~qm%zK1䋊{P}D*)& ]djC[hQ-|PK 3Noa,mimetypePK zXSA:OEBPS/PK 6N A^OEBPS/css/PKzXSR/s큆OEBPS/css/idGeneratedStyles.cssUTuaux PK3Ng(_ROEBPS/EPUB_Pandoc_Test.xhtmlPKzXS7=OEBPS/content.opfPK3N#ڛ WOEBPS/toc.ncxPK 6N AMETA-INF/PK3N9> DMETA-INF/container.xmlPK3NV4 META-INF/encryption.xmlPK3Nc}-< META-INF/com.apple.ibooks.display-options.xmlPK  pandoc-3.1.3/test/epub/epub2_picture.epub0000644000000000000000000002673607346545000016530 0ustar0000000000000000PK 3Noa,mimetypeapplication/epub+zipPK 6N META-INF/PK3N9> META-INF/container.xml]j0DWG-ˁ@{mlu"" \Cr7oϔ7="=| -&ap!mtA`d:a jT8dA2WsU71&ڌuiTXKL4Dl%osK}cY+xc{g@PK3NVMETA-INF/encryption.xmleN0 )p;u!q@CxqH% oOR|A9N6!kG AoNXƳhVH@aCu9j9Z^2OZt4y%)Vzw&˝*Ǵ8-K6Ƿ3wS?O.'џg]}9PK3Nc}-META-INF/com.apple.ibooks.display-options.xmle10 EwNyD*!i7NPf5Q=FoW手$& !utg0<㰳!I~qm%zK1䋊{P}D*)& ]djC[hQ-|PK zXSOEBPS/PK 6N OEBPS/css/PKgzXSR/sOEBPS/css/idGeneratedStyles.css}Qn0s1LLL]0~ XVUf<0\` w`x2p|XXYj윇xy9~0 x89x`aef:`b`bt0HSV4?!fV6H%.nh@5?>3!HYVDI%]6!{|'dsHꕷX ;> :rTT3geΩk\м|EMK+k[vN]\=? {2:1MrJ_i9 ?UTVU7wtvu|6:6>19E$L{k{; `fKt,v1 < zRMPל)z m-"HOSLeo,/ۮ)!frVp2Y12[89:$YRzͩ TF᧟맿EWZ O1wޑX-Q}YtNi̔6Q{NGY"!f xqɷb6@قRsÏa$g>#?FwO[&HPjYItL4YʷզPq7~P2Ѭ? n|~D0h1.QQ3>},w^Bjc=u:߼MbH5W~5 y<+Β"i  (0&IQ^bS'H|*sHoB=ɓt2MN`8BIoJ!/6^N;*8í"hTp3)0" sO JA tkNy TZ[[ߺoL=j|֋buiݕ_8oCPg,(s/ݢ\&t#DK'JZ՚`Y㏸Apt>ʤx/KEX#ɂu"*N ' k /J{).V_7_W. uzRAuܯm҂;:TM$X` ~ҚKy9So{u%&0zKMݽ$=v%5n #C3x3KycM> wqm-hߵ睒tu[cR@AviCUDcLLFӹ*A+htH=*Z#Wٺ6~SByNkO|TS NFpA8TwAʀocj34 W5;ok~mj=#UexO*xx1 LZt ầ;}:Z5G ܍rچK67/=޿R||1v(F72 \!vs]cmP5f44P{eM YIۊz mi$tm(|G>/@Ǘ[_8J4Amm2vl꫺xyV!-6dzb`Gi2l(+Lm[8tEdbpVJaHIR*%X5\ ׺]xQFӉL[⨚Q{&\L DR`kd3@b&rh09˥]*~ 蘌y]ǟd 35IʕynkNbŮG`ZbK9 =&{ķ]ܷ6KX17r Gt#l2FBe< `p2дb-ya%oWQ!W#ߨ"b˩Cֱ:ꑙ[CJy@:X2RcI*g=ktmZ^Sc qpW{?M2~̴%qߩ^k;Qf|;8/B-ZA.B r()$ QX&XD>\JXPPۭu 90Y!D.*$ VM {?|]3} Z.uq1H]=|M;;wT; \$x'RBekzyZ'?,ZS(mS|20q3a4燋S;BR[Ϳ;!Ee? N,e[]y5M3voPMo0.;vUf_m/g}.D>>#GQ|%ހ|hG}YRGNtC c~#"DLtxk19?<+ӸwF8E ʿN೯R֙ ,ch!tC8zMqXݼANjfjzΊnaȀ?JDȊt rSv0nФ `?pkյI6 Rfێ|'}ܸw#"ucKdw l2::@HRDa+H_}w%4OtLP| $0&*gق_Q"lx vA6K7.xU.aMJm3I}j੍fcSqP>C !2Ax*3vUHSt>#UK J 񾘌Cnƫ4Lcn|!=>Q[iLP"_GBCs6AE` 4^ێ *B/|\ nKBFr/4ekq=$E>MY3q*~=J>[Pw k0sƧr Qy銅Nx^Ulj>2}㌪)\NAUFςWJz u1"H>m W1>GqsrK78ǂ.+5~{j!WcadfŐpkr`|02vY ]+bx 6A@V%*8(b|-A$TuٌtE34xş6?}֢s \ PD4^UiY@[U-![;6V'9hP k, z' qո(Ghծ | <&T4}# ԹZxQؤ*T_v>*ZPS7&o){7H(\Z=_~fiȱf5x<.U5N 1Ne{&:>[>wXuB˸ 1nG< gV"vq(>5vp[ƃ[݇9e/,Yt юjUϧ)g/x5LҒY/`~wWZHDEŋs oQ5Z V?(\NQO4_ùViGrTC( \}2WwD$'A-z6xNߑy0Pe9sh d ? ֟n& b `'ҿmS ؈&0A\Dh$9;x߷16Y1{jdO>mmEd0V)4}J<ũT BAt@\Zdyu|ҔչF`y(s32lAoesi(qT7tS8ݎ!dL]bs ,~Z]*QkwsqC3A,1sA[^130xəDH Z{%4t4rm<vLaFIg&oY$/+OK: {v!֋O='dIzvfdN~>q!mp lx>9Stajuي"z[̘C9͍͋Z&i>wpB*A <,M~?t& a O$$X^>ũ{wnWQevgOR\LE%oJƮJ`O9֦d׈j,brv0_fp(U‚kC9S% t%^8ԌIB(~2CVD$;co4V1Y)rx}{WIÏ9E`7f `[uoqꎫ=jt4ܶ}Gź/H§{PKө ۛ6#"bL4vxߧwf#˰( N$x8]Vr~kk'ze7w&1a:~o|H=⏔zM]Zᦣ W]F:T-Ri"`4 J.h >}6\( ɞ~ww[\/x9O/) Di|xf +⥲v޽ZdC>b5-Ơ^.<'Vp,"׼qGU꤆䱈GV:=PdX䀯_:b=Ӏ-߇&A,OؔMDwC,=>WTsf#I+Py}j=+0'-X[F2J$]Dž.Mn:<#ό&h4!x&ԢWā+#U%__T,~5Ȧg۬NF1=C44 8SL"L촢%h h:׬mSuAmߪl|>y]`Άbkq,G&o7=ßX~}:';:nuHs(?j8fh_ c/1-4'G'{ќIWNocF)%6ELejGmk _߹ U߸BGHYwZ~fR0ܬ֊!; J@vpAk30|ȫ&+zs6UM.5&߄.& ¥u3iTȮ%pѤZxP-vC I /FsNL2P^xAìÉۏBLrdObVV]Zukxq="*޹VMv]bŹψ`z69'/f|J3l1ӤARb'vo(m31-[Цc-CrqVN,qzqweg6Cg1הj@wḷn ,n4o$a34ۏ`^-h\ 0Kݗ[w2ÖɊǯ .#g]#qt90@S3=7g)n^A۾ |gsj77-GK/ @t8]vDW'݉U}J\/Yb.s(j| es5hGX "\T~ rQw["̎IbSoDṎygg)!}bq1jITɎ7y݃ali/}D]v\U߫NpJQ v 2<5=vG?Bu\&u@Oj3 X!yOMOK%1A/&O O-2b̈wp!IfClu.c<-_J%69 -PK3Ng(_OEBPS/EPUB_Pandoc_Test.xhtmlmN0)ޓmBiV*/"8mY !)z&Xl>:IΛ搥Sd^C}AYRbOeDؿ|8*$%⼞ZdiX݂6q^ôwoX&ڳ,~Ω8a1YfډlIiNd0bՒfUw} T } u9qa;6GXΕ/ s qN65% Fm>G買AFNS}UMK.9ѩ&IN_|?e܂N̠ለv vuDy!qaimPA{.{mq=[3 HQg뜖sD^ !Os9[-A9=TC i~PK3NM{OEBPS/cover.xhtmlmOOO0?o#<]d+,qdbXc @@3طK+}]nZlX8>_6 qmsg<䈻7`PzZ"v]v5ft*Fa g.xbv&J-3፯t;j$ph׽q29SKE} +Sej$ 6y O0Y4_jQ\(_ lL1SPK3N#ڛ OEBPS/toc.ncxn0ۧ|?$2T[JibW vڃflɴM`&;iJ~@T&9bJ:%J&Tiz^O<-*=y|1zfl/ƍ(Z"3/|m}2o JxK>"3zPָaDAc „Fz4ۼN^T[ ЋqM`:ybBa=BX áF3ʹ~@h`po6sv ]r,r47 WDr!g㲓`'~dP?#O`Ri`LW I%u!%m ok#FS=F11YDNܱcҙ"9/Q1%n:˟PK 3Noa,mimetypePK 6N A:META-INF/PK3N9> aMETA-INF/container.xmlPK3NVQMETA-INF/encryption.xmlPK3Nc}-YMETA-INF/com.apple.ibooks.display-options.xmlPK zXSA!OEBPS/PK 6N AEOEBPS/css/PKgzXSR/smOEBPS/css/idGeneratedStyles.cssPK 6N AOEBPS/image/PK3N"%GOEBPS/image/image.jpgPK3Ng(_#OEBPS/EPUB_Pandoc_Test.xhtmlPKyXS@:s큡$OEBPS/content.opfPK3NM{C'OEBPS/cover.xhtmlPK3N#ڛ x(OEBPS/toc.ncxPK>*pandoc-3.1.3/test/epub/features.epub0000644000000000000000000002141207346545000015560 0ustar0000000000000000PK TXCoa,mimetypeapplication/epub+zipPK WSEPUB/PK 1WS EPUB/xhtml/PKWSη EPUB/xhtml/nav.xhtmlVKs WPrMɴy4dډ}h-&HhGq}IG>iY]&ODPQ#(D9ṝ>s.ybm!;Zέu'3'o!TȪiDU&X%Pb;X'Za% UZ(IHn isvSi#lB,FvQ[xEa:QW$e HR-Zܒ="߰R#5Bc̸t1TRSI/͕xjgiZ:jLUl a4!Rl8GWUwx/080Szϛmw]*>/:ٵx^k] \`6/dߏOw{wF%׏Cvo`3o8Ћݟ`}ʀz`\..uh.&qh]LR}Fi2`y~̡+-R7Rʬ0n Pl\ot{`GgCjav+\RV kH1TCl\ʢ:0*.1/#&p@SL3@^=DReQƇJeu.ʄl5k&e>r3^+j|Ж3ysܠfU[ +fSUBRw]^7u7d~@YnVZm.2𜴣ׇ&GaNk fB)PK1WSMu T#EPUB/xhtml/content-mathml-001.xhtml\o#ψ$%mpw!.#"EQ.%Z*\ʲ/).)}K)P!@CQc>~~iɵeˎπar838;e0q{ZMؠqWxdlklu}:6&Cu=Xh7j x🮍_!=A0s 2Ӯ\[汙<!61MӀMѠ5JC5ۡ[g2 tȺ}b"27uxykz`naYcŧtǭo21- 7nB6H3~_lǭfE`1b㨯@4bxL(CVJﺫ z\CC-17s);1~vAF}-h4dL=٧CFF{  ~v8b\Gbrv A>A睨_8.9vʯM(fL gĊwTg=r(CC)Ʈ0sVZ {q Q"7zz`>O3٭냐q14!K"QFV4Y_/fX2zeTрB3[>]bGU+J.O&*yΫ9{ݩ"7\oJp-EPW,s>F# fnz TP2 bУY :;x5H`.@>iWA#n:) Osü0nJEYb(חՀdg}xl5[A>;`~—6\BEFJq8H;-ĉ̓ry8v_`Ad>|S,$DR$\›y Eh|6q<ɨW Yٟܰu@dkA /IJPpa [iM [iK1lqB e ;|,:rrQYW !v TZ ,-al7 Thp-կ6\{5m}?&$.)ni^Gհw&ϣQ6X_m!u, HU=ͩBsAsOPUT7n",Uj(}_1UUd;OTtSĢflptxYSੰ ]1}g}0?sѣqz!v!-dÙdr |UM2;8>*Pr +!b#3ͰX¥/SӠ$ Z7y1&rQOoRbD|TZe*,C+O˖'rMT*߭f m<ْ] [nM2xgīfěK8$B~ĩ/O3C+w6r^!{]A.|ۨP*S\ĥuJm#{yW՛rIՕ̹iD4![R֛dNI![%h54Fw d>I hY2+fhBÍ4+ ͋DSYR]~U ۜCJKUk\Zh J4 ?k>8w ΒKHw¾;3QZė'YyEQp s/P2.#V/T`H-iȸmCP~Fg٩huַ ۣ;e]]ͯօlLOE "MW"|_%ӝk*"BmXj/` @sQBs 6AV f놏Ή*c4ګC+Z$>TES/wW׍N;pRaˍ05e+t |KC$ƧDU:ջj۾G# wtݘ~WU;Vz67c P#3K> T|;q:xyOYof U&|6TXo.'2TSavajO'$X?,J,myUm+)EIb=:UdH&GL"Ey'hc;2gPKTXC_ EPUB/xhtml/front.xhtmlVMoF=˿bJ@D\bȵ"EÊ;YrYR2;o9NSTl/9f͛3 ,2һ=<6RWd:: Zmo^C2Mgt5K/uXx/|S/_lB F܃ 'LQY ޛJ1J9 ֪ dĩ(->b&Z_D5y{z,=Sqc::낶;a &N#P*yblee*-/z ⬇|:* &*;\χvZłAqUdkMn%9ZX˼0}Zjjsaq% 0]M.W׿aPi!Jv:=OAZOeDک {V .ޞ"zT ʒ[>;x;3 B֕&/U)D3%fM8άTQ sajm4kxS(r 20CBIJ%Ɏ=݀Er.tTGYQ* ;Jh vÖR;D屮$ZHL$Z8Q n.M<:ohVF- MKvowrje+L.15u&arQȃD(! x6fLoQε9F4+ IE@Y)h&Tr 1IjA5Ӵp \aZR^T ךAv9ocGUAыՌMX$Eӆ1jOہXI-D Ut|N +ii} X`qхW[|Fa@'6r\cɢY8m'8iظT 9< SRq AV1cQL}8@ikEsPhK߉^b,?hi=Yɜb]&ٚ(lxJ^p)17Jn%}ޛ7opٚ^GY=3* ەFP7PK WS EPUB/css/PKK2DnCeEPUB/css/math.cssuMN0FV$"5DjM±ElGTwhFx3s|$Oծbo2ĐR!c]i|˺]}dx7Ӥ,hN>y~$F r޴CM4%Wي%6]oݽdheBh+GT|ݙ,VA_ IV߲T8-"~>}IBl'PKTXC5EPUB/css/base.cssS[0+"[V 6`x"3ɽ4o%v%ӴWT3:>sxL`{.{I2 -*4PtW~|[2eI~?<Ǔ%1 n!6 a dX-֌:hϖ,)+`F2 ElY S6 #zFGϚW2H5*]&5ň\{phVhF; =wd:36-H=1Υ+(œC%$k3% %Bj ;&TUߐ6_ft6-I=2VË)rAWTgXXھ,㶅t[iٞU.ui/lPg`5#l|%Jͧeq9/$^)EH<#X {XnFtxkPTm~ Bͥ K.):/PKWS;) EPUB/package.opfVr0>ӧH9?-L&130LI9pPd9%#ɤ}Npȕ<<+I֐t&LG[Jѓ80JFJZD^ Qy9f1gqiѻã3tpzzrv~09>=y]5k_VX@:~WO'G' D:[/xMcGS(A$w>PzFuce|;:*Ze~F10O9.?"c<)^PK TXCoa,mimetypePK WSA:EPUB/PK 1WS A]EPUB/xhtml/PKWSη EPUB/xhtml/nav.xhtmlPK1WSMu T#EPUB/xhtml/content-mathml-001.xhtmlPK/WSls #EPUB/xhtml/content-switch-001.xhtmlPKTXC_ EPUB/xhtml/front.xhtmlPK WS AEPUB/css/PKK2DnCeEPUB/css/math.cssPKTXC5EPUB/css/base.cssPKWS;) EPUB/package.opfPK 1 E AMETA-INF/PKTXC\ˬMETA-INF/container.xmlPK 8pandoc-3.1.3/test/epub/features.native0000644000000000000000000012573407346545000016127 0ustar0000000000000000[ Para [ Span ( "front.xhtml" , [] , [] ) [] ] , Div ( "" , [ "section" ] , [] ) [ Header 1 ( "" , [] , [] ) [ Str "Reflowable" , Space , Str "EPUB" , Space , Str "3" , Space , Str "Conformance" , Space , Str "Test" , Space , Str "Document:" , Space , Str "0100" ] , Div ( "" , [ "section" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Str "Status" , Space , Str "of" , Space , Str "this" , Space , Str "Document" ] , Para [ Str "This" , Space , Str "publication" , Space , Str "is" , Space , Str "currently" , Space , Str "considered" , Space , Span ( "" , [ "status" ] , [] ) [ Str "[UNDER" , Space , Str "DEVELOPMENT]" ] , Space , Str "by" , Space , Str "the" , Space , Str "IDPF." ] , Para [ Str "This" , Space , Str "publication" , Space , Str "is" , Space , Str "part" , Space , Str "of" , Space , Str "version" , Space , Span ( "" , [ "version" ] , [] ) [ Str "X.X" ] , Space , Str "of" , Space , Str "the" , Space , Str "EPUB" , Space , Str "3.0" , Space , Str "Compliance" , Space , Str "Test" , Space , Str "Suite" , Space , Str "released" , SoftBreak , Str "on" , Space , RawInline (Format "html") "" , Str "." ] , Para [ Str "Before" , Space , Str "using" , Space , Str "this" , Space , Str "publication" , Space , Str "to" , Space , Str "evaluate" , Space , Str "reading" , Space , Str "systems," , Space , Str "testers" , Space , Str "are" , Space , Str "strongly" , Space , Str "encouraged" , Space , Str "to" , SoftBreak , Str "verify" , Space , Str "that" , Space , Str "they" , Space , Str "have" , Space , Str "the" , Space , Str "latest" , Space , Str "release" , Space , Str "by" , Space , Str "checking" , Space , Str "the" , Space , Str "current" , Space , Str "release" , Space , Str "version" , Space , Str "and" , Space , Str "date" , Space , Str "of" , SoftBreak , Str "the" , Space , Str "test" , Space , Str "suite" , Space , Str "at" , Space , Link ( "" , [] , [] ) [ Str "TBD" ] ( "http://idpf.org/" , "" ) ] , Para [ Str "This" , Space , Str "publication" , Space , Str "is" , Space , Str "one" , Space , Str "of" , Space , Str "several" , Space , Str "that" , Space , Str "currently" , Space , Str "comprise" , Space , Str "the" , Space , Str "EPUB" , Space , Str "3" , Space , Str "conformance" , Space , Str "test" , Space , Str "suite" , SoftBreak , Str "for" , Space , Str "reflowable" , Space , Str "content." , Space , Str "The" , Space , Str "complete" , Space , Str "test" , Space , Str "suite" , Space , Str "includes" , Space , Str "all" , Space , Str "of" , Space , Str "the" , Space , Str "following" , Space , Str "publications:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "." ] ] ] ] , Div ( "" , [ "section" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Str "About" , Space , Str "this" , Space , Str "Document" ] , Para [ Str "This" , Space , Str "document" , Space , Str "focuses" , Space , Str "on" , Space , Str "human-evaluated" , Space , Str "binary" , Space , Str "(pass/fail)" , Space , Str "tests" , Space , Str "in" , Space , Str "a" , SoftBreak , Str "reflowable" , Space , Str "context." , Space , Str "Tests" , Space , Str "for" , Space , Str "fixed-layout" , Space , Str "content" , Space , Str "and" , Space , Str "other" , Space , Str "individual" , Space , Str "tests" , Space , Str "that" , SoftBreak , Str "require" , Space , Str "a" , Space , Str "dedicated" , Space , Str "epub" , Space , Str "file" , Space , Str "are" , Space , Str "available" , Space , Str "in" , Space , Str "additional" , Space , Str "sibling" , Space , Str "documents;" , Space , Str "refer" , Space , Str "to" , SoftBreak , Str "the" , Space , Link ( "" , [] , [] ) [ Str "test" , Space , Str "suite" , SoftBreak , Str "wiki" ] ( "https://github.com/mgylling/epub-testsuite/wiki/Overview" , "" ) , Space , Str "(" , Code ( "" , [] , [] ) "https://github.com/mgylling/epub-testsuite/wiki/Overview" , Str ")" , Space , Str "for" , Space , Str "additional" , SoftBreak , Str "information." ] ] , Div ( "" , [ "section" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Str "Conventions" ] , Para [ Str "The" , Space , Str "following" , Space , Str "conventions" , Space , Str "are" , Space , Str "used" , Space , Str "throughout" , Space , Str "the" , Space , Str "document:" ] , DefinitionList [ ( [ Str "1." , Space , Str "Locating" , Space , Str "a" , Space , Str "test" ] , [ [ Div ( "" , [ "ctest" ] , [] ) [ Para [ Str "Tests" , Space , Str "for" , Space , Emph [ Str "required" ] , Space , Str "Reading" , Space , Str "System" , Space , Str "functionality" , Space , Str "are" , SoftBreak , Str "preceded" , Space , Str "by" , Space , Str "the" , Space , Str "label:" , Space , Span ( "" , [ "nature" ] , [ ( "style" , "display: inline; font-size: 100%" ) ] ) [ Str "[REQUIRED]" ] ] ] , Div ( "" , [ "otest" ] , [] ) [ Para [ Str "Tests" , Space , Str "for" , Space , Emph [ Str "optional" ] , Space , Str "Reading" , Space , Str "System" , Space , Str "functionality" , Space , Str "are" , SoftBreak , Str "preceded" , Space , Str "by" , Space , Str "the" , Space , Str "label:" , Space , Span ( "" , [ "nature" ] , [ ( "style" , "display: inline; font-size: 100%" ) ] ) [ Str "[OPTIONAL]" ] ] ] ] ] ) , ( [ Str "2." , Space , Str "Performing" , Space , Str "the" , Space , Str "test" ] , [ [ Plain [ Str "Each" , Space , Str "test" , Space , Str "includes" , Space , Str "a" , Space , Str "description" , Space , Str "of" , Space , Str "its" , Space , Str "purpose" , Space , Str "followed" , Space , Str "by" , Space , Str "the" , Space , Str "actual" , Space , Strong [ Str "test" , Space , Str "statement," , SoftBreak , Str "which" , Space , Str "can" , Space , Str "always" , Space , Str "be" , Space , Str "evaluated" , Space , Str "to" , Space , Str "true" , Space , Str "or" , Space , Str "false" ] , Str "." , Space , Str "These" , Space , Str "statements" , Space , Str "typically" , Space , Str "have" , Space , Str "the" , Space , Str "form:" , SoftBreak , Str "\"If" , Space , Str "[some" , Space , Str "condition]," , Space , Str "the" , Space , Str "test" , Space , Str "passes\"." ] ] ] ) , ( [ Str "3." , Space , Str "Scoring" , Space , Str "in" , Space , Str "the" , Space , Str "results" , Space , Str "form" ] , [ [ Plain [ Str "@@@TODO" , Space , Str "provide" , Space , Str "info" , Space , Str "on" , Space , Str "where" , Space , Str "to" , Space , Str "get" , Space , Str "the" , Space , Str "results" , Space , Str "form" ] ] ] ) ] ] ] , Para [ Span ( "content-mathml-001.xhtml" , [] , [] ) [] ] , Div ( "" , [ "section" ] , [] ) [ Header 2 ( "content-mathml-001.xhtml#mathml" , [] , [] ) [ Str "MathML" ] , Div ( "content-mathml-001.xhtml#mathml-010" , [ "section" , "ctest" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , SoftBreak , Span ( "" , [ "test-id" ] , [] ) [ Str "mathml-010" ] , Space , Str "Rendering" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "MathML" , Space , Str "equation" , Space , Str "rendering" , Space , Str "is" , Space , Str "supported." ] , Plain [ Math DisplayMath "\\int_{- \\infty}^{\\infty}e^{- x^{2}}\\, dx = \\sqrt{\\pi}" , SoftBreak , Math DisplayMath "\\sum\\limits_{n = 1}^{\\infty}\\frac{1}{n^{2}} = \\frac{\\pi^{2}}{6}" , SoftBreak , Math DisplayMath "x = \\frac{- b \\pm \\sqrt{b^{2} - 4ac}}{2a}" ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "equations" , Space , Str "are" , Space , Str "not" , Space , Str "presented" , Space , Str "as" , Space , Str "linear" , Space , Str "text" , Space , Str "(e.g.," , Space , Str "x=-b\177b2-4ac2a)," , SoftBreak , Str "the" , Space , Str "test" , Space , Str "passes." ] ] , Div ( "content-mathml-001.xhtml#mathml-020" , [ "section" , "otest" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[OPTIONAL]" ] , SoftBreak , Span ( "" , [ "test-id" ] , [] ) [ Str "mathml-020" ] , Space , Str "CSS" , Space , Str "Styling" , Space , Str "of" , Space , Str "the" , Space , Code ( "" , [] , [] ) "math" , Space , Str "element" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "basic" , Space , Str "CSS" , Space , Str "styling" , Space , Str "of" , Space , Str "MathML" , Space , Str "is" , Space , Str "supported" , Space , Str "on" , Space , Str "the" , Space , Code ( "" , [] , [] ) "math" , Space , Str "element." ] , Plain [ Math InlineMath "{2x}{+ y - z}" ] , Para [ Str "The" , Space , Str "test" , Space , Str "passes" , Space , Str "if" , Space , Str "the" , Space , Str "equation" , Space , Str "has" , Space , Str "a" , Space , Str "yellow" , Space , Str "background" , Space , Str "and" , Space , Str "a" , Space , Str "dashed" , Space , Str "border." ] , Para [ Str "If" , Space , Str "the" , Space , Str "reading" , Space , Str "system" , Space , Str "does" , Space , Str "not" , Space , Str "have" , Space , Str "a" , Space , Str "viewport," , Space , Str "or" , Space , Str "does" , Space , Str "not" , Space , Str "support" , SoftBreak , Str "CSS" , Space , Str "styles," , Space , Str "this" , Space , Str "test" , Space , Str "should" , Space , Str "be" , Space , Str "marked" , Space , Code ( "" , [] , [] ) "Not Supported" , Str "." ] ] , Div ( "content-mathml-001.xhtml#mathml-021" , [ "section" , "otest" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[OPTIONAL]" ] , SoftBreak , Span ( "" , [ "test-id" ] , [] ) [ Str "mathml-021" ] , Space , Str "CSS" , Space , Str "Styling" , Space , Str "of" , Space , Str "the" , Space , Code ( "" , [] , [] ) "mo" , Space , Str "element" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "basic" , Space , Str "CSS" , Space , Str "styling" , Space , Str "of" , Space , Str "MathML" , Space , Str "is" , Space , Str "supported" , Space , Str "on" , Space , Str "the" , Space , Code ( "" , [] , [] ) "mo" , Space , Str "element." ] , Plain [ Math InlineMath "{2x}{+ y - z}" ] , Para [ Str "The" , Space , Str "test" , Space , Str "passes" , Space , Str "if" , Space , Str "the" , Space , Str "operators" , Space , Str "are" , Space , Str "enlarged" , Space , Str "relative" , Space , Str "to" , Space , Str "the" , Space , Str "other" , Space , Str "symbols" , Space , Str "and" , Space , Str "numbers." ] , Para [ Str "If" , Space , Str "the" , Space , Str "reading" , Space , Str "system" , Space , Str "does" , Space , Str "not" , Space , Str "have" , Space , Str "a" , Space , Str "viewport," , Space , Str "or" , Space , Str "does" , Space , Str "not" , Space , Str "support" , SoftBreak , Str "CSS" , Space , Str "styles," , Space , Str "this" , Space , Str "test" , Space , Str "should" , Space , Str "be" , Space , Str "marked" , Space , Code ( "" , [] , [] ) "Not Supported" , Str "." ] ] , Div ( "content-mathml-001.xhtml#mathml-022" , [ "section" , "otest" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[OPTIONAL]" ] , SoftBreak , Span ( "" , [ "test-id" ] , [] ) [ Str "mathml-022" ] , Space , Str "CSS" , Space , Str "Styling" , Space , Str "of" , Space , Str "the" , Space , Code ( "" , [] , [] ) "mi" , Space , Str "element" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "basic" , Space , Str "CSS" , Space , Str "styling" , Space , Str "of" , Space , Str "MathML" , Space , Str "is" , Space , Str "supported" , Space , Str "on" , Space , Str "the" , Space , Code ( "" , [] , [] ) "mi" , Space , Str "element." ] , Plain [ Math InlineMath "{2x}{+ y - z}" ] , Para [ Str "The" , Space , Str "test" , Space , Str "passes" , Space , Str "if" , Space , Str "the" , Space , Str "identifiers" , Space , Str "are" , Space , Str "bolded" , Space , Str "and" , Space , Str "blue." ] , Para [ Str "If" , Space , Str "the" , Space , Str "reading" , Space , Str "system" , Space , Str "does" , Space , Str "not" , Space , Str "have" , Space , Str "a" , Space , Str "viewport," , Space , Str "or" , Space , Str "does" , Space , Str "not" , Space , Str "support" , SoftBreak , Str "CSS" , Space , Str "styles," , Space , Str "this" , Space , Str "test" , Space , Str "should" , Space , Str "be" , Space , Str "marked" , Space , Code ( "" , [] , [] ) "Not Supported" , Str "." ] ] , Div ( "content-mathml-001.xhtml#mathml-023" , [ "section" , "otest" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[OPTIONAL]" ] , SoftBreak , Span ( "" , [ "test-id" ] , [] ) [ Str "mathml-023" ] , Space , Str "CSS" , Space , Str "Styling" , Space , Str "of" , Space , Str "the" , Space , Code ( "" , [] , [] ) "mn" , Space , Str "element" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "basic" , Space , Str "CSS" , Space , Str "styling" , Space , Str "of" , Space , Str "MathML" , Space , Str "is" , Space , Str "supported" , Space , Str "on" , Space , Str "the" , Space , Code ( "" , [] , [] ) "mn" , Space , Str "element." ] , Plain [ Math InlineMath "{2x}{+ y - z}" ] , Para [ Str "The" , Space , Str "test" , Space , Str "passes" , Space , Str "if" , Space , Str "the" , Space , Str "number" , Space , Str "2" , Space , Str "is" , Space , Str "italicized" , Space , Str "and" , Space , Str "blue." ] , Para [ Str "If" , Space , Str "the" , Space , Str "reading" , Space , Str "system" , Space , Str "does" , Space , Str "not" , Space , Str "have" , Space , Str "a" , Space , Str "viewport," , Space , Str "or" , Space , Str "does" , Space , Str "not" , Space , Str "support" , SoftBreak , Str "CSS" , Space , Str "styles," , Space , Str "this" , Space , Str "test" , Space , Str "should" , Space , Str "be" , Space , Str "marked" , Space , Code ( "" , [] , [] ) "Not Supported" , Str "." ] ] , Div ( "content-mathml-001.xhtml#mathml-024" , [ "section" , "ctest" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , SoftBreak , Span ( "" , [ "test-id" ] , [] ) [ Str "mathml-024" ] , Str "Horizontal" , Space , Str "stretch," , Space , Code ( "" , [] , [] ) "mover" , Str "," , Space , Code ( "" , [] , [] ) "munder" , Str "," , Space , Str "and" , Space , Code ( "" , [] , [] ) "mspace" , Space , Str "elements" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "horizontal" , Space , Str "stretch," , Space , Code ( "" , [] , [] ) "mover" , Str "," , Space , Code ( "" , [] , [] ) "munder" , Str "," , Space , Code ( "" , [] , [] ) "mspace" , Space , Str "elements" , Space , Str "are" , Space , Str "supported." ] , Plain [ Math DisplayMath "c = \\overset{\\text{complex number}}{\\overbrace{\\underset{\\text{real}}{\\underbrace{\\mspace{20mu} a\\mspace{20mu}}} + \\underset{\\text{imaginary}}{\\underbrace{\\quad b{\\mathbb{i}}\\quad}}}}" ] , Para [ Str "The" , Space , Str "test" , Space , Str "passes" , Space , Str "if" , Space , Str "the" , Space , Str "rendering" , Space , Str "looks" , Space , Str "like" , Space , Str "." ] ] , Div ( "content-mathml-001.xhtml#mathml-025" , [ "section" , "ctest" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , SoftBreak , Span ( "" , [ "test-id" ] , [] ) [ Str "mathml-025" ] , Str "Testing" , Space , Code ( "" , [] , [] ) "mtable" , Space , Str "with" , Space , Code ( "" , [] , [] ) "colspan" , Space , Str "and" , Space , Code ( "" , [] , [] ) "rowspan" , Space , Str "attributes," , Space , Str "Hebrew" , Space , Str "and" , Space , Str "Script" , Space , Str "fonts" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Code ( "" , [] , [] ) "mtable" , Space , Str "with" , Space , Code ( "" , [] , [] ) "colspan" , Space , Str "and" , Space , Code ( "" , [] , [] ) "mspace" , Space , Str "attributes" , Space , Str "(column" , Space , Str "and" , Space , Str "row" , Space , Str "spanning)" , Space , Str "are" , Space , Str "supported;" , Space , Str "uses" , Space , Str "Hebrew" , Space , Str "and" , Space , Str "Script" , Space , Str "alphabets." ] , Plain [ Math DisplayMath "\\begin{matrix}\n & {\\operatorname{cov}(\\mathcal{L})} & \\longrightarrow & {\\operatorname{non}(\\mathcal{K})} & \\longrightarrow & {\\operatorname{cof}(\\mathcal{K})} & \\longrightarrow & {\\operatorname{cof}(\\mathcal{L})} & \\longrightarrow & 2^{\\aleph_{0}} \\\\\n & \\uparrow & & \\uparrow & & \\uparrow & & \\uparrow & & \\\\\n & {\\mathfrak{b}} & \\longrightarrow & {\\mathfrak{d}} & & & & & & \\\\\n & \\uparrow & & \\uparrow & & & & & & \\\\\n\\aleph_{1} & \\longrightarrow & {\\operatorname{add}(\\mathcal{L})} & \\longrightarrow & {\\operatorname{add}(\\mathcal{K})} & \\longrightarrow & {\\operatorname{cov}(\\mathcal{K})} & \\longrightarrow & {\\operatorname{non}(\\mathcal{L})} & \n\\end{matrix}" ] , Para [ Str "The" , Space , Str "test" , Space , Str "passes" , Space , Str "if" , Space , Str "the" , Space , Str "rendering" , Space , Str "looks" , Space , Str "like" , Space , Link ( "" , [] , [] ) [ Str "Cicho\324's" , Space , Str "Diagram" ] ( "http://en.wikipedia.org/wiki/Cicho%C5%84's_diagram" , "" ) , Str ":" , Space , Str "." ] ] , Div ( "content-mathml-001.xhtml#mathml-026" , [ "section" , "ctest" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , SoftBreak , Span ( "" , [ "test-id" ] , [] ) [ Str "mathml-026" ] , Str "BiDi," , Space , Str "RTL" , Space , Str "and" , Space , Str "Arabic" , Space , Str "alphabets" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "right-to-left" , Space , Str "and" , Space , Str "Arabic" , Space , Str "alphabets" , Space , Str "are" , Space , Str "supported." ] , Plain [ Math DisplayMath "{\1583(\1587)} = \\left\\{ \\begin{matrix}\n{\\sum\\limits_{\1646 = 1}^{\1589}\1587^{\1646}} & {\\text{\1573\1584\1575\1603\1575\1606}\1587 > 0} \\\\\n{\\int_{1}^{\1589}{\1587^{\1646}\1569\1587}} & {\\text{\1573\1584\1575\1603\1575\1606}\1587 \\in \1605} \\\\\n{{\1591\1575}\\pi} & {\\text{\1594\1610\1585\1584\1604\1603}\\left( \\text{\1605\1593}\\pi \\simeq 3,141 \\right)}\n\\end{matrix} \\right." ] , Para [ Str "The" , Space , Str "test" , Space , Str "passes" , Space , Str "if" , Space , Str "the" , Space , Str "rendering" , Space , Str "looks" , Space , Str "like" , Space , Str "the" , Space , Str "following" , Space , Str "image:" ] ] , Div ( "content-mathml-001.xhtml#mathml-027" , [ "section" , "ctest" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , SoftBreak , Span ( "" , [ "test-id" ] , [] ) [ Str "mathml-027" ] , Str "Elementary" , Space , Str "math:" , Space , Str "long" , Space , Str "division" , Space , Str "notation" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Code ( "" , [] , [] ) "mlongdiv" , Space , Str "elements" , Space , Str "(from" , Space , Str "elementary" , Space , Str "math)" , Space , Str "are" , Space , Str "supported." ] , Plain [ Span ( "" , [ "math" ] , [ ( "xmlns" , "http://www.w3.org/1998/Math/MathML" ) ] ) [ SoftBreak , Str "3" , SoftBreak , Str "435.3" , SoftBreak , Str "1306" , SoftBreak , Str "12" , SoftBreak , Str "10" , SoftBreak , Str "9" , SoftBreak , Str "16" , SoftBreak , Str "15" , SoftBreak , Str "1.0" , SoftBreak , Str "9" , SoftBreak , Str "1" , SoftBreak ] ] , Para [ Str "The" , Space , Str "test" , Space , Str "passes" , Space , Str "if" , Space , Str "the" , Space , Str "rendering" , Space , Str "looks" , Space , Str "like" , Space , Str "the" , Space , Str "following" , Space , Str "image:" , Space , Str "." ] ] ] , Para [ Span ( "content-switch-001.xhtml" , [] , [] ) [] ] , Div ( "content-switch-001.xhtml#epub-switch" , [ "section" ] , [] ) [ Header 3 ( "" , [] , [] ) [ Code ( "" , [] , [] ) "epub:switch" ] , Div ( "content-switch-001.xhtml#switch-010" , [ "section" , "ctest" ] , [] ) [ Header 4 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "switch-010" ] , Space , Str "Support" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Link ( "" , [] , [] ) [ Code ( "" , [] , [] ) "epub:switch" ] ( "http://idpf.org/epub/30/spec/epub30-contentdocs.html#sec-xhtml-content-switch" , "" ) , Space , Str "element" , Space , Str "is" , Space , Str "supported." ] , Para [ Str "PASS" ] , Para [ Str "If" , Space , Str "only" , Space , Str "the" , Space , Str "word" , Space , Str "\"PASS\"" , Space , Str "is" , Space , Str "rendered" , Space , Str "before" , Space , Str "this" , Space , Str "paragraph," , Space , Str "the" , Space , Str "test" , Space , Str "passes." , Space , Str "If" , Space , Str "both" , Space , Str "\"PASS\"" , Space , Str "and" , Space , Str "\"FAIL\"" , Space , Str "are" , Space , Str "rendered," , Space , Str "or" , Space , Str "neither" , SoftBreak , Str "\"PASS\"" , Space , Str "nor" , Space , Str "\"FAIL\"" , Space , Str "is" , Space , Str "rendered," , Space , Str "the" , Space , Str "test" , Space , Str "fails." ] ] , Div ( "content-switch-001.xhtml#switch-020" , [ "section" , "otest" ] , [] ) [ Header 4 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[OPTIONAL]" ] , SoftBreak , Span ( "" , [ "test-id" ] , [] ) [ Str "switch-020" ] , SoftBreak , Str "MathML" , Space , Str "Embedding" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Str "MathML" , Space , Str "namespace" , Space , Str "is" , Space , Str "recognized" , Space , Str "when" , Space , Str "used" , Space , Str "in" , Space , Str "an" , Space , Link ( "" , [] , [] ) [ Code ( "" , [] , [] ) "epub:case" ] ( "http://idpf.org/epub/30/spec/epub30-contentdocs.html#sec-xhtml-epub-case" , "" ) , Space , Str "element." ] , Para [ Math InlineMath "{2x}{+ y - z}" ] , Para [ Str "If" , Space , Str "a" , Space , Str "MathML" , Space , Str "equation" , Space , Str "is" , Space , Str "rendered" , Space , Str "before" , Space , Str "this" , Space , Str "paragraph," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] , Para [ Str "If" , Space , Str "test" , Space , Code ( "" , [] , [] ) "switch-010" , Space , Str "did" , Space , Str "not" , Space , Str "pass," , Space , Str "this" , Space , Str "test" , Space , Str "should" , Space , Str "be" , Space , Str "marked" , Space , Code ( "" , [] , [] ) "Not Supported" , Str "." ] ] ] ] pandoc-3.1.3/test/epub/formatting.epub0000644000000000000000000003330607346545000016121 0ustar0000000000000000PK XCoa,mimetypeapplication/epub+zipPKXCW!Y|&EPUB/img/purple-aqua-square-bullet.gif_LvVLבʸ–҅/m6t频CQS IaB3S[V:ih/z^y~1yy#g+ta1U ,*%DX5V`\u*J~Og(-h   T((1СÀl:{BFAE€ƀ10*h4 P0$Pn$j$$p#AOEMCkI`Ii)eԀ8LՀ@#@AEq* H x<F X 88 8888=8 >C9pX9_ @s@@0*388 $$ *iPp1nTK`9 (cc8!LseN^hgD(ujÕZk #c{nomo3/rA?a" bjհY@ɂO}']Vu+c8{KeB딠%N1M2sOK>k~z4{ɧjkrKْy5;om)Oν|b UMl73gީj>7tKupkCvl 4eƿ:9HW e@X.-1~0]zfWsr3SA$A%5|LO`ʺKf-~m9!z^#?@(Yf)5 5A,uM,i(\Гy:Az9=4jA·˨nQ#:=$A㫍ܔ;1XbYuOv=99vCƶȋC'o;q}j`9'S|ǦwI'6NJg uwB3{]5~N)K>KMcvHk(C-ѧ ZgHh b^MG}lOs+= m_Pr(fмmF~Kޫ^]qg7nMSG&I.HND9yϏUz86:zפUon>#I%'-(./ʹqh0{,F<*v$JIoJʪíK~9\L8'~ {-)\s2wد?%_|!ְ74 +Ige0ye{6 Uξ3bi,k-R\\SeSBڶ<mnċ^}x| x׈/ƉrQ9\@|]M3~txXk{7ij&y-:qg Nɔ>(24\!./W > zw9FL;$ansGa`?>_.xu3lqNٵ^WOnϩIl:E 5(c.Զ6|Aݥx8=HvAm{K1>`}%FvևWfwab.cjj]*Bt5]/Z=\Pn=rUӫ{^BɓdfN|fZ7⁙ [f-:YkB$sç|pZU>qŃZcf˱d2}.mjy5VŎJ'o˸\Cy1+$=OpGgt.sI/l6i+o_wq9-+gyJ]:ZוYO&w /0[Y_PKxXSWJEPUB/xhtml/nav.xhtmlX[s6~N~>cdvnۇtN2BB0۵Ybݾ;G|ܦA䄳)| o~/P"S,9كm6fNbn$q0}G{g@+ qxZ@I!|Lyۛ Q`@i:sr'Aȓ^+1 tɛZC^)&xg0^#mG"q;( |Q+wN_F~}95ZAY Weʃҿ/2aQbV^ Uj{bGN-`á_NpO_ }F_ An 4,A{P3OsA%q9-Rmݖ򼘟!~dPKI5-5[~ա xeg %.7No s I1hBzJ܈B_~[`ɣWox\QRR, fۯOPOߞ??}ij*a)zsߝr_D&zP~O 'lĒBL+ TnRF͋㯐BnGE=`'@~`+\{l$.zc}KG8;/qd\Hb\nH,~pk);ư& o>RevE<Ԕ\;6طlvDbJl6%Qw/tYSeNkݜنlb, sHR=tG8ijʪ*^ c7bs$͜*5< -Ld `m[;\$Ogq۪LY+*PKxXS/ ; "EPUB/xhtml/styling-xhtml-005.xhtmlWn:]'_1:bw&M.P@HEq49R$Kc_!(q EQoLR33g} `e5O+@+v^u\}|w  j Mlڅu3?;;k9OH|_b/c<7"E[ꎁ_Bu-Zd-ac6IDH*QmA he`!`:Xc::DO(t[-ڈxH>,ζ=I\ŰG] x@K9@i1 w0 x"llX@T#D޹@&$gDսqG>3.@ewL.2C :jC4FT|P8:#WJJ [alQa$j&F7 |IܛuBR[.V(SNƈQrr=a5]jȐ"xfeZ;gtpژ;}ZkA`sAEYH5\n%z”yd%opOE!ۇ9LfI؇NX,$ %E3yb/۾ 6 ~%.:_VmwvOx_=Qr6&yyss#w5FLA{\!1֩Z;~`-Yr}(BW7_CVNGC$W)#D5cy0$^#ᎤfpMSwYelלWR@felEps0']fb5"KVM;Y MI|?kQCWT=po+y?< kDwqȾ~?Ӣ`֢{d=R Zv:9<7{]R#qsd='tn~gfb8q_˗ahZ91,fP !C"4M+ބYkt,5E}H8 ` %Pl ޫR26l5Y>h-y.kk)ҔaP/^rkQ <v0غV  >dJ0iKj4TqN :Lk7U+)m`@= kJU&!Ą=z r;0gm;PĀ ˋU6Q%[Nc$,G hPs.E`a[0).↰^3 ؔ\mCU,ӑaTzVrVrVrVrVrVrVrVrVrVrVrVrVrVWlJpޭXpPF7+-P|1^)ql$sÀi*r}PKxXSǭ-j"EPUB/xhtml/styling-xhtml-004.xhtml͘[O0W64Qa i6ӴkX{s4 *l)C OY 3F 0 !1}`a!YJk1KU#ϛy/7899NUB#T5I)Ԥ{2(/ &EuY.)F_QHz G -8ڠP.213L$W8f֋ hYV-7/&C121Ah0DXze.^4FG!Aczn-Ԟ? q -X%Az?vE\^=ғEF2B-xtjM̢k2c`MP]%-iL*E=WUOaŧ/pirRF4NsP pa9 쨔rE YuLW|5S˓2r]/}lD`IVzW6KB eGg^`wVgDRGS!NNM"1r<S+&d |!N%"-$"2$# =۩w է>.!rEbf&s>$A #э]u$ fI(=iV'9TeٍGƞJf[Eg f^B`H"dtGpXû>_[}>C3C]kt.qhUhK(X+##ɪ0$188EKxe2 Ⓚ;Y>;s_%V|:f5{[3#n5~ [=h'QSZ 0YQP[1BU"pIMk _h|Wdޡ:dm0 4. ,վ0 c\M~c3' crb \5*jxٮ:^Q8<4J\0HgTHY^Wf5t(gZ.9 ﬏'##u*y]ThkF)zH#5QAigA V'f5s0І2kSԚ0ht9.wl=j"|Wu טH, *MӃkDsa,I4NW./{[tۍ%rNO\cf\,9ct k|ژNtcf\RsHv6~إ-i9sVJe=;ǑG[9p '_f\HR,6-g-n{iH:JwPzi2EZ,E+r)bO%M3g.\,9'+īӖiZY+]B C.Z͜)ϧOY|vac;~q#[6_fw,8״=kh lBF z[ۓ68ug#G>A0-}gRǟۍ O{<ܣ '~2 ĺ&mъy!Tm JU@`09,TH`(\DTPGK| eX>HtԍCb|<ګ}g!Fاw}4(;@cq!y"rOC%< pij2T$F`ȉ%-P6|nNғ "ձe5_Y,۟AMsyr<{u-}+Շ&3&Z>߻- "S. sm۬}Bsj% #htRC//*2!Ss 2)9+膐' h傒P#sxgY 0 re)GMQHɇ3u U73EXr\*Qߎg, :`,RzFbSh y.8Sˑ9PKxXSZ?r"EPUB/xhtml/styling-xhtml-006.xhtmlՖo0ǟۿ0/ x`=!MB!DKcvٺ!:AZ8Ou ?ѺJ7G uQ5]?&ٙ?̿}үk/X9|٤TúS4b/*2Nqm\ 'KgU8sѵ\IpU;8&Nõ.=4hrp&MlEb6IT5m^^}*\j0ժ{Hⁿ"\}IwPKXC> EPUB/xhtml/front.xhtmlVMoF=+bJ@D\bȵ"EÊ,,w)Y~q`{73o0|u+8be.V¿X'8ڦ_Wѣ d6Wt?@W 2keN'!Xx"cJ0 E~ E; Ƿܿw:/ECcᶖàrWBV@ʠ#`bd*T+F)qYAlY}>{aw;0 :iG]cKu9leXl_αKX\,n#L f=Ƴ [)L:]|6\eeW2 t"[@ #0ДX cF?77^|} 6`ߐg~?tZruwRC~nHHz3235#Ǩgb+p9< U N4bnP(xtJāh3$eʬ ˙5#`>60F}=H t:8a{f=*v6I&(}:*. $BILu48kX]ƈ@%*}{lm ˇ'̥F{,bU'HL+k#Պ3Mh<F)y㹒zCCh*p-j`oZ{׵}Qto)6BVS^g e!y 82 b>wL3czSy\vD^EH<ʤr;\ $Q H0aj)($ őr9$wsOӼBI/p΄iHizS( ܅*N ē=qHk GH@V,S;]lJ; +YC 8zzcW[|0d&.b3)liAcL${qֶUMKP> ;W>*Ѽ+zYk~ȩ_JQi842#&8PHXcŵǸuww\ gLSť]q*uGRST_AʰWMnMpWEA"Vhf¤*g:۱-[Sl_O_?}sxL`{.{I2 -*4PtW~|[2eI~?<Ǔ%1 n!6 a dX-֌:hϖ,)+`F2 ElY S6 #zFGϚW2H5*]&5ň\{phVhF; =wd:36-H=1Υ+(œC%$k3% %Bj ;&TUߐ6_ft6-I=2VË)rAWTgXXھ,㶅t[iٞU.ui/lPg`5#l|%Jͧeq9/$^)EH<#X {XnFtxkPTm~ Bͥ K.):/PKD<~- EPUB/css/styling.cssn SڕpʹTfŐ4;;&cR6! b͝]l~!"3rB0 ,9Pn`+5CABO;@XG<@ÑHrSD> ]&2قKT)niSe5"E+"_"8Yx/,rpI},kփNBӀK oֱE+ s_tP &jWMvv{ UiI}`YEfw)vY*5ہLmhfgH&IŠ^o$o9rw{3]"N7OuS?pk$,zf[&Ѓ?:͔Z %<# >ESfJ-҅zr4[fI>6 &V[v^/!Ln&}%<$NfZ#emᅧj?B79APKXC\ˬMETA-INF/container.xmlUA 0E=Eѝkz1j0 M*z{JͣNCV/װi gLxNƁ`0LvF"q+n쉳ycf>GS(A$w>PzFuce|;:*Ze~F10O9.?"c<)^PK xXSEPUB/PK xXS EPUB/xhtml/PK xXS EPUB/css/PK xXS EPUB/img/PK xXS META-INF/PK XCoa,mimetypePKXCW!Y|&:EPUB/img/purple-aqua-square-bullet.gifPKxXSWJEPUB/xhtml/nav.xhtmlPKxXS/ ; "S EPUB/xhtml/styling-xhtml-005.xhtmlPKxXSҋ-"EPUB/xhtml/styling-xhtml-003.xhtmlPKxXSǭ-j";EPUB/xhtml/styling-xhtml-004.xhtmlPKxXSbpM"cEPUB/xhtml/styling-xhtml-002.xhtmlPKxXSᖠ+"EPUB/xhtml/styling-xhtml-001.xhtmlPKxXSZ?r"EPUB/xhtml/styling-xhtml-006.xhtmlPKXC> !EPUB/xhtml/front.xhtmlPKWSW &EPUB/package.opfPKXC5*EPUB/css/base.cssPKD<~- ,EPUB/css/styling.cssPKXC\ˬ 0META-INF/container.xmlPK xXSA0EPUB/PK xXS A1EPUB/xhtml/PK xXS A71EPUB/css/PK xXS A^1EPUB/img/PK xXS A1META-INF/PK1pandoc-3.1.3/test/epub/formatting.native0000644000000000000000000047051707346545000016465 0ustar0000000000000000[ Para [ Span ( "front.xhtml" , [] , [] ) [] ] , Div ( "" , [ "section" ] , [] ) [ Header 1 ( "" , [] , [] ) [ Str "EPUB" , Space , Str "3" , Space , Str "Styling" , Space , Str "Test" , Space , Str "Document:" , Space , Str "0101" ] , Div ( "" , [ "section" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Str "Status" , Space , Str "of" , Space , Str "this" , Space , Str "Document" ] , Para [ Str "This" , Space , Str "publication" , Space , Str "is" , Space , Str "currently" , Space , Str "considered" , Space , Span ( "" , [ "status" ] , [] ) [ Str "[UNDER" , Space , Str "DEVELOPMENT]" ] , Space , Str "by" , Space , Str "the" , Space , Str "IDPF." ] , Para [ Str "This" , Space , Str "publication" , Space , Str "is" , Space , Str "part" , Space , Str "of" , Space , Str "version" , Space , Span ( "" , [ "version" ] , [] ) [ Str "X.X" ] , Space , Str "of" , Space , Str "the" , Space , Str "EPUB" , Space , Str "3.0" , Space , Str "Compliance" , Space , Str "Test" , Space , Str "Suite" , Space , Str "released" , SoftBreak , Str "on" , Space , RawInline (Format "html") "" , Str "." ] , Para [ Str "Before" , Space , Str "using" , Space , Str "this" , Space , Str "publication" , Space , Str "to" , Space , Str "evaluate" , Space , Str "reading" , Space , Str "systems," , Space , Str "testers" , Space , Str "are" , Space , Str "strongly" , Space , Str "encouraged" , Space , Str "to" , SoftBreak , Str "verify" , Space , Str "that" , Space , Str "they" , Space , Str "have" , Space , Str "the" , Space , Str "latest" , Space , Str "release" , Space , Str "by" , Space , Str "checking" , Space , Str "the" , Space , Str "current" , Space , Str "release" , Space , Str "version" , Space , Str "and" , Space , Str "date" , Space , Str "of" , SoftBreak , Str "the" , Space , Str "test" , Space , Str "suite" , Space , Str "at" , Space , Link ( "" , [] , [] ) [ Str "TBD" ] ( "http://idpf.org/" , "" ) ] , Para [ Str "This" , Space , Str "publication" , Space , Str "is" , Space , Str "one" , Space , Str "of" , Space , Str "several" , Space , Str "that" , Space , Str "currently" , Space , Str "comprise" , Space , Str "the" , Space , Str "EPUB" , Space , Str "3" , Space , Str "conformance" , Space , Str "test" , Space , Str "suite" , SoftBreak , Str "for" , Space , Str "reflowable" , Space , Str "content." , Space , Str "The" , Space , Str "complete" , Space , Str "test" , Space , Str "suite" , Space , Str "includes" , Space , Str "all" , Space , Str "of" , Space , Str "the" , Space , Str "following" , Space , Str "publications:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "." ] ] ] ] , Div ( "" , [ "section" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Str "About" , Space , Str "this" , Space , Str "Document" ] , Para [ Str "This" , Space , Str "document" , Space , Str "focuses" , Space , Str "on" , Space , Str "human-evaluated" , Space , Str "binary" , Space , Str "(pass/fail)" , Space , Str "tests" , Space , Str "in" , Space , Str "a" , SoftBreak , Str "reflowable" , Space , Str "context." , Space , Str "Tests" , Space , Str "for" , Space , Str "fixed-layout" , Space , Str "content" , Space , Str "and" , Space , Str "other" , Space , Str "individual" , Space , Str "tests" , Space , Str "that" , SoftBreak , Str "require" , Space , Str "a" , Space , Str "dedicated" , Space , Str "epub" , Space , Str "file" , Space , Str "are" , Space , Str "available" , Space , Str "in" , Space , Str "additional" , Space , Str "sibling" , Space , Str "documents;" , Space , Str "refer" , Space , Str "to" , SoftBreak , Str "the" , Space , Link ( "" , [] , [] ) [ Str "test" , Space , Str "suite" , SoftBreak , Str "wiki" ] ( "https://github.com/mgylling/epub-testsuite/wiki/Overview" , "" ) , Space , Str "(" , Code ( "" , [] , [] ) "https://github.com/mgylling/epub-testsuite/wiki/Overview" , Str ")" , Space , Str "for" , Space , Str "additional" , SoftBreak , Str "information." ] ] , Div ( "" , [ "section" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Str "Conventions" ] , Para [ Str "The" , Space , Str "following" , Space , Str "conventions" , Space , Str "are" , Space , Str "used" , Space , Str "throughout" , Space , Str "the" , Space , Str "document:" ] , DefinitionList [ ( [ Str "1." , Space , Str "Locating" , Space , Str "a" , Space , Str "test" ] , [ [ Div ( "" , [ "ctest" ] , [] ) [ Para [ Str "Tests" , Space , Str "for" , Space , Emph [ Str "required" ] , Space , Str "Reading" , Space , Str "System" , Space , Str "functionality" , Space , Str "are" , SoftBreak , Str "preceded" , Space , Str "by" , Space , Str "the" , Space , Str "label:" , Space , Span ( "" , [ "nature" ] , [ ( "style" , "display: inline; font-size: 100%" ) ] ) [ Str "[REQUIRED]" ] ] ] , Div ( "" , [ "otest" ] , [] ) [ Para [ Str "Tests" , Space , Str "for" , Space , Emph [ Str "optional" ] , Space , Str "Reading" , Space , Str "System" , Space , Str "functionality" , Space , Str "are" , SoftBreak , Str "preceded" , Space , Str "by" , Space , Str "the" , Space , Str "label:" , Space , Span ( "" , [ "nature" ] , [ ( "style" , "display: inline; font-size: 100%" ) ] ) [ Str "[OPTIONAL]" ] ] ] ] ] ) , ( [ Str "2." , Space , Str "Performing" , Space , Str "the" , Space , Str "test" ] , [ [ Plain [ Str "Each" , Space , Str "test" , Space , Str "includes" , Space , Str "a" , Space , Str "description" , Space , Str "of" , Space , Str "its" , Space , Str "purpose" , Space , Str "followed" , Space , Str "by" , Space , Str "the" , Space , Str "actual" , Space , Strong [ Str "test" , Space , Str "statement," , SoftBreak , Str "which" , Space , Str "can" , Space , Str "always" , Space , Str "be" , Space , Str "evaluated" , Space , Str "to" , Space , Str "true" , Space , Str "or" , Space , Str "false" ] , Str "." , Space , Str "These" , Space , Str "statements" , Space , Str "typically" , Space , Str "have" , Space , Str "the" , Space , Str "form:" , SoftBreak , Str "\"If" , Space , Str "[some" , Space , Str "condition]," , Space , Str "the" , Space , Str "test" , Space , Str "passes\"." ] ] ] ) , ( [ Str "3." , Space , Str "Scoring" , Space , Str "in" , Space , Str "the" , Space , Str "results" , Space , Str "form" ] , [ [ Plain [ Str "@@@TODO" , Space , Str "provide" , Space , Str "info" , Space , Str "on" , Space , Str "where" , Space , Str "to" , Space , Str "get" , Space , Str "the" , Space , Str "results" , Space , Str "form" ] ] ] ) ] ] ] , Para [ Span ( "styling-xhtml-001.xhtml" , [] , [] ) [] ] , Div ( "styling-xhtml-001.xhtml#epub-css" , [ "section" ] , [] ) [ Header 1 ( "" , [] , [] ) [ Str "EPUB" , Space , Str "Style" , Space , Str "Sheets" ] , Para [ Str "This" , Space , Str "section" , Space , Str "contains" , Space , Str "tests" , Space , Str "for" , Space , Str "styling" , Space , Str "and" , Space , Str "layout." ] ] , Para [ Span ( "styling-xhtml-003.xhtml" , [] , [] ) [] ] , Div ( "styling-xhtml-003.xhtml#style-110" , [ "section" , "ctest" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-110" ] , Space , Str "Multi-Column" , Space , Str "Layouts" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Link ( "" , [] , [] ) [ Code ( "" , [] , [] ) "CSS Multi-Column Layout" ] ( "http://idpf.org/epub/30/spec/epub30-contentdocs.html#sec-css-multi-column" , "" ) , Space , Str "properties" , Space , Str "are" , Space , Str "supported." ] , Div ( "" , [ "multicol" ] , [] ) [ Para [ Str "Lorem" , Space , Str "ipsum" , Space , Str "dolor" , Space , Str "sit" , Space , Str "amet," , Space , Str "consectetur" , Space , Str "adipisicing" , Space , Str "elit," , Space , Str "sed" , Space , Str "do" , Space , Str "eiusmod" , Space , Str "tempor" , Space , Str "incididunt" , Space , Str "ut" , Space , Str "labore" , Space , Str "et" , Space , Str "dolore" , Space , Str "magna" , Space , Str "aliqua." , Space , Str "Ut" , Space , Str "enim" , Space , Str "ad" , Space , Str "minim" , Space , Str "veniam," , Space , Str "quis" , Space , Str "nostrud" , Space , Str "exercitation" , Space , Str "ullamco" , Space , Str "laboris" , Space , Str "nisi" , Space , Str "ut" , Space , Str "aliquip" , Space , Str "ex" , Space , Str "ea" , Space , Str "commodo" , Space , Str "consequat." , Space , Str "Duis" , Space , Str "aute" , Space , Str "irure" , Space , Str "dolor" , Space , Str "in" , Space , Str "reprehenderit" , Space , Str "in" , Space , Str "voluptate" , Space , Str "velit" , Space , Str "esse" , Space , Str "cillum" , Space , Str "dolore" , Space , Str "eu" , Space , Str "fugiat" , Space , Str "nulla" , Space , Str "pariatur." , Space , Str "Excepteur" , Space , Str "sint" , Space , Str "occaecat" , Space , Str "cupidatat" , Space , Str "non" , Space , Str "proident," , Space , Str "sunt" , Space , Str "in" , Space , Str "culpa" , Space , Str "qui" , Space , Str "officia" , Space , Str "deserunt" , Space , Str "mollit" , Space , Str "anim" , Space , Str "id" , Space , Str "est" , Space , Str "laborum." ] , Para [ Str "Lorem" , Space , Str "ipsum" , Space , Str "dolor" , Space , Str "sit" , Space , Str "amet," , Space , Str "consectetur" , Space , Str "adipisicing" , Space , Str "elit," , Space , Str "sed" , Space , Str "do" , Space , Str "eiusmod" , Space , Str "tempor" , Space , Str "incididunt" , Space , Str "ut" , Space , Str "labore" , Space , Str "et" , Space , Str "dolore" , Space , Str "magna" , Space , Str "aliqua." , Space , Str "Ut" , Space , Str "enim" , Space , Str "ad" , Space , Str "minim" , Space , Str "veniam," , Space , Str "quis" , Space , Str "nostrud" , Space , Str "exercitation" , Space , Str "ullamco" , Space , Str "laboris" , Space , Str "nisi" , Space , Str "ut" , Space , Str "aliquip" , Space , Str "ex" , Space , Str "ea" , Space , Str "commodo" , Space , Str "consequat." , Space , Str "Duis" , Space , Str "aute" , Space , Str "irure" , Space , Str "dolor" , Space , Str "in" , Space , Str "reprehenderit" , Space , Str "in" , Space , Str "voluptate" , Space , Str "velit" , Space , Str "esse" , Space , Str "cillum" , Space , Str "dolore" , Space , Str "eu" , Space , Str "fugiat" , Space , Str "nulla" , Space , Str "pariatur." , Space , Str "Excepteur" , Space , Str "sint" , Space , Str "occaecat" , Space , Str "cupidatat" , Space , Str "non" , Space , Str "proident," , Space , Str "sunt" , Space , Str "in" , Space , Str "culpa" , Space , Str "qui" , Space , Str "officia" , Space , Str "deserunt" , Space , Str "mollit" , Space , Str "anim" , Space , Str "id" , Space , Str "est" , Space , Str "laborum." ] , Para [ Str "Lorem" , Space , Str "ipsum" , Space , Str "dolor" , Space , Str "sit" , Space , Str "amet," , Space , Str "consectetur" , Space , Str "adipisicing" , Space , Str "elit," , Space , Str "sed" , Space , Str "do" , Space , Str "eiusmod" , Space , Str "tempor" , Space , Str "incididunt" , Space , Str "ut" , Space , Str "labore" , Space , Str "et" , Space , Str "dolore" , Space , Str "magna" , Space , Str "aliqua." , Space , Str "Ut" , Space , Str "enim" , Space , Str "ad" , Space , Str "minim" , Space , Str "veniam," , Space , Str "quis" , Space , Str "nostrud" , Space , Str "exercitation" , Space , Str "ullamco" , Space , Str "laboris" , Space , Str "nisi" , Space , Str "ut" , Space , Str "aliquip" , Space , Str "ex" , Space , Str "ea" , Space , Str "commodo" , Space , Str "consequat." , Space , Str "Duis" , Space , Str "aute" , Space , Str "irure" , Space , Str "dolor" , Space , Str "in" , Space , Str "reprehenderit" , Space , Str "in" , Space , Str "voluptate" , Space , Str "velit" , Space , Str "esse" , Space , Str "cillum" , Space , Str "dolore" , Space , Str "eu" , Space , Str "fugiat" , Space , Str "nulla" , Space , Str "pariatur." , Space , Str "Excepteur" , Space , Str "sint" , Space , Str "occaecat" , Space , Str "cupidatat" , Space , Str "non" , Space , Str "proident," , Space , Str "sunt" , Space , Str "in" , Space , Str "culpa" , Space , Str "qui" , Space , Str "officia" , Space , Str "deserunt" , Space , Str "mollit" , Space , Str "anim" , Space , Str "id" , Space , Str "est" , Space , Str "laborum." ] , Para [ Str "Lorem" , Space , Str "ipsum" , Space , Str "dolor" , Space , Str "sit" , Space , Str "amet," , Space , Str "consectetur" , Space , Str "adipisicing" , Space , Str "elit," , Space , Str "sed" , Space , Str "do" , Space , Str "eiusmod" , Space , Str "tempor" , Space , Str "incididunt" , Space , Str "ut" , Space , Str "labore" , Space , Str "et" , Space , Str "dolore" , Space , Str "magna" , Space , Str "aliqua." , Space , Str "Ut" , Space , Str "enim" , Space , Str "ad" , Space , Str "minim" , Space , Str "veniam," , Space , Str "quis" , Space , Str "nostrud" , Space , Str "exercitation" , Space , Str "ullamco" , Space , Str "laboris" , Space , Str "nisi" , Space , Str "ut" , Space , Str "aliquip" , Space , Str "ex" , Space , Str "ea" , Space , Str "commodo" , Space , Str "consequat." , Space , Str "Duis" , Space , Str "aute" , Space , Str "irure" , Space , Str "dolor" , Space , Str "in" , Space , Str "reprehenderit" , Space , Str "in" , Space , Str "voluptate" , Space , Str "velit" , Space , Str "esse" , Space , Str "cillum" , Space , Str "dolore" , Space , Str "eu" , Space , Str "fugiat" , Space , Str "nulla" , Space , Str "pariatur." , Space , Str "Excepteur" , Space , Str "sint" , Space , Str "occaecat" , Space , Str "cupidatat" , Space , Str "non" , Space , Str "proident," , Space , Str "sunt" , Space , Str "in" , Space , Str "culpa" , Space , Str "qui" , Space , Str "officia" , Space , Str "deserunt" , Space , Str "mollit" , Space , Str "anim" , Space , Str "id" , Space , Str "est" , Space , Str "laborum." ] , Para [ Str "Lorem" , Space , Str "ipsum" , Space , Str "dolor" , Space , Str "sit" , Space , Str "amet," , Space , Str "consectetur" , Space , Str "adipisicing" , Space , Str "elit," , Space , Str "sed" , Space , Str "do" , Space , Str "eiusmod" , Space , Str "tempor" , Space , Str "incididunt" , Space , Str "ut" , Space , Str "labore" , Space , Str "et" , Space , Str "dolore" , Space , Str "magna" , Space , Str "aliqua." , Space , Str "Ut" , Space , Str "enim" , Space , Str "ad" , Space , Str "minim" , Space , Str "veniam," , Space , Str "quis" , Space , Str "nostrud" , Space , Str "exercitation" , Space , Str "ullamco" , Space , Str "laboris" , Space , Str "nisi" , Space , Str "ut" , Space , Str "aliquip" , Space , Str "ex" , Space , Str "ea" , Space , Str "commodo" , Space , Str "consequat." , Space , Str "Duis" , Space , Str "aute" , Space , Str "irure" , Space , Str "dolor" , Space , Str "in" , Space , Str "reprehenderit" , Space , Str "in" , Space , Str "voluptate" , Space , Str "velit" , Space , Str "esse" , Space , Str "cillum" , Space , Str "dolore" , Space , Str "eu" , Space , Str "fugiat" , Space , Str "nulla" , Space , Str "pariatur." , Space , Str "Excepteur" , Space , Str "sint" , Space , Str "occaecat" , Space , Str "cupidatat" , Space , Str "non" , Space , Str "proident," , Space , Str "sunt" , Space , Str "in" , Space , Str "culpa" , Space , Str "qui" , Space , Str "officia" , Space , Str "deserunt" , Space , Str "mollit" , Space , Str "anim" , Space , Str "id" , Space , Str "est" , Space , Str "laborum." ] , Para [ Str "Lorem" , Space , Str "ipsum" , Space , Str "dolor" , Space , Str "sit" , Space , Str "amet," , Space , Str "consectetur" , Space , Str "adipisicing" , Space , Str "elit," , Space , Str "sed" , Space , Str "do" , Space , Str "eiusmod" , Space , Str "tempor" , Space , Str "incididunt" , Space , Str "ut" , Space , Str "labore" , Space , Str "et" , Space , Str "dolore" , Space , Str "magna" , Space , Str "aliqua." , Space , Str "Ut" , Space , Str "enim" , Space , Str "ad" , Space , Str "minim" , Space , Str "veniam," , Space , Str "quis" , Space , Str "nostrud" , Space , Str "exercitation" , Space , Str "ullamco" , Space , Str "laboris" , Space , Str "nisi" , Space , Str "ut" , Space , Str "aliquip" , Space , Str "ex" , Space , Str "ea" , Space , Str "commodo" , Space , Str "consequat." , Space , Str "Duis" , Space , Str "aute" , Space , Str "irure" , Space , Str "dolor" , Space , Str "in" , Space , Str "reprehenderit" , Space , Str "in" , Space , Str "voluptate" , Space , Str "velit" , Space , Str "esse" , Space , Str "cillum" , Space , Str "dolore" , Space , Str "eu" , Space , Str "fugiat" , Space , Str "nulla" , Space , Str "pariatur." , Space , Str "Excepteur" , Space , Str "sint" , Space , Str "occaecat" , Space , Str "cupidatat" , Space , Str "non" , Space , Str "proident," , Space , Str "sunt" , Space , Str "in" , Space , Str "culpa" , Space , Str "qui" , Space , Str "officia" , Space , Str "deserunt" , Space , Str "mollit" , Space , Str "anim" , Space , Str "id" , Space , Str "est" , Space , Str "laborum." ] , Para [ Str "Lorem" , Space , Str "ipsum" , Space , Str "dolor" , Space , Str "sit" , Space , Str "amet," , Space , Str "consectetur" , Space , Str "adipisicing" , Space , Str "elit," , Space , Str "sed" , Space , Str "do" , Space , Str "eiusmod" , Space , Str "tempor" , Space , Str "incididunt" , Space , Str "ut" , Space , Str "labore" , Space , Str "et" , Space , Str "dolore" , Space , Str "magna" , Space , Str "aliqua." , Space , Str "Ut" , Space , Str "enim" , Space , Str "ad" , Space , Str "minim" , Space , Str "veniam," , Space , Str "quis" , Space , Str "nostrud" , Space , Str "exercitation" , Space , Str "ullamco" , Space , Str "laboris" , Space , Str "nisi" , Space , Str "ut" , Space , Str "aliquip" , Space , Str "ex" , Space , Str "ea" , Space , Str "commodo" , Space , Str "consequat." , Space , Str "Duis" , Space , Str "aute" , Space , Str "irure" , Space , Str "dolor" , Space , Str "in" , Space , Str "reprehenderit" , Space , Str "in" , Space , Str "voluptate" , Space , Str "velit" , Space , Str "esse" , Space , Str "cillum" , Space , Str "dolore" , Space , Str "eu" , Space , Str "fugiat" , Space , Str "nulla" , Space , Str "pariatur." , Space , Str "Excepteur" , Space , Str "sint" , Space , Str "occaecat" , Space , Str "cupidatat" , Space , Str "non" , Space , Str "proident," , Space , Str "sunt" , Space , Str "in" , Space , Str "culpa" , Space , Str "qui" , Space , Str "officia" , Space , Str "deserunt" , Space , Str "mollit" , Space , Str "anim" , Space , Str "id" , Space , Str "est" , Space , Str "laborum." ] , Para [ Str "Lorem" , Space , Str "ipsum" , Space , Str "dolor" , Space , Str "sit" , Space , Str "amet," , Space , Str "consectetur" , Space , Str "adipisicing" , Space , Str "elit," , Space , Str "sed" , Space , Str "do" , Space , Str "eiusmod" , Space , Str "tempor" , Space , Str "incididunt" , Space , Str "ut" , Space , Str "labore" , Space , Str "et" , Space , Str "dolore" , Space , Str "magna" , Space , Str "aliqua." , Space , Str "Ut" , Space , Str "enim" , Space , Str "ad" , Space , Str "minim" , Space , Str "veniam," , Space , Str "quis" , Space , Str "nostrud" , Space , Str "exercitation" , Space , Str "ullamco" , Space , Str "laboris" , Space , Str "nisi" , Space , Str "ut" , Space , Str "aliquip" , Space , Str "ex" , Space , Str "ea" , Space , Str "commodo" , Space , Str "consequat." , Space , Str "Duis" , Space , Str "aute" , Space , Str "irure" , Space , Str "dolor" , Space , Str "in" , Space , Str "reprehenderit" , Space , Str "in" , Space , Str "voluptate" , Space , Str "velit" , Space , Str "esse" , Space , Str "cillum" , Space , Str "dolore" , Space , Str "eu" , Space , Str "fugiat" , Space , Str "nulla" , Space , Str "pariatur." , Space , Str "Excepteur" , Space , Str "sint" , Space , Str "occaecat" , Space , Str "cupidatat" , Space , Str "non" , Space , Str "proident," , Space , Str "sunt" , Space , Str "in" , Space , Str "culpa" , Space , Str "qui" , Space , Str "officia" , Space , Str "deserunt" , Space , Str "mollit" , Space , Str "anim" , Space , Str "id" , Space , Str "est" , Space , Str "laborum." ] , Para [ Str "Lorem" , Space , Str "ipsum" , Space , Str "dolor" , Space , Str "sit" , Space , Str "amet," , Space , Str "consectetur" , Space , Str "adipisicing" , Space , Str "elit," , Space , Str "sed" , Space , Str "do" , Space , Str "eiusmod" , Space , Str "tempor" , Space , Str "incididunt" , Space , Str "ut" , Space , Str "labore" , Space , Str "et" , Space , Str "dolore" , Space , Str "magna" , Space , Str "aliqua." , Space , Str "Ut" , Space , Str "enim" , Space , Str "ad" , Space , Str "minim" , Space , Str "veniam," , Space , Str "quis" , Space , Str "nostrud" , Space , Str "exercitation" , Space , Str "ullamco" , Space , Str "laboris" , Space , Str "nisi" , Space , Str "ut" , Space , Str "aliquip" , Space , Str "ex" , Space , Str "ea" , Space , Str "commodo" , Space , Str "consequat." , Space , Str "Duis" , Space , Str "aute" , Space , Str "irure" , Space , Str "dolor" , Space , Str "in" , Space , Str "reprehenderit" , Space , Str "in" , Space , Str "voluptate" , Space , Str "velit" , Space , Str "esse" , Space , Str "cillum" , Space , Str "dolore" , Space , Str "eu" , Space , Str "fugiat" , Space , Str "nulla" , Space , Str "pariatur." , Space , Str "Excepteur" , Space , Str "sint" , Space , Str "occaecat" , Space , Str "cupidatat" , Space , Str "non" , Space , Str "proident," , Space , Str "sunt" , Space , Str "in" , Space , Str "culpa" , Space , Str "qui" , Space , Str "officia" , Space , Str "deserunt" , Space , Str "mollit" , Space , Str "anim" , Space , Str "id" , Space , Str "est" , Space , Str "laborum." ] ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "text" , Space , Str "is" , Space , Str "rendered" , Space , Str "in" , Space , Str "three" , Space , Str "columns," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] , Para [ Span ( "styling-xhtml-002.xhtml" , [] , [] ) [] ] , Div ( "styling-xhtml-002.xhtml#style-lists" , [ "section" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Str "Lists" ] , Div ( "styling-xhtml-002.xhtml#style-list-style-type" , [ "section" ] , [] ) [ Header 3 ( "" , [] , [] ) [ Str "The" , Space , Code ( "" , [] , [] ) "list-style-type" , Space , Str "property" ] , Div ( "styling-xhtml-002.xhtml#style-009" , [ "section" , "ctest" ] , [] ) [ Header 4 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-009" ] , Space , Code ( "" , [] , [] ) "decimal" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "list-style-type" , Space , Str "property" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "decimal" , Space , Str "is" , Space , Str "supported" , Space , Str "on" , Space , Str "a" , Space , Code ( "" , [] , [] ) "ol" , Space , Str "element." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Lorem" ] ] , [ Plain [ Str "Ipsum" ] ] , [ Plain [ Str "Dolor" ] ] , [ Plain [ Str "Sit" ] ] , [ Plain [ Str "Amet" ] ] ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "list" , Space , Str "has" , Space , Str "decimal" , Space , Str "markers" , Space , Str "in" , Space , Str "ascending" , Space , Str "order," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] , Div ( "styling-xhtml-002.xhtml#style-010" , [ "section" , "ctest" ] , [] ) [ Header 4 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-010" ] , Space , Code ( "" , [] , [] ) "circle" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "list-style-type" , Space , Str "property" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "circle" , Space , Str "is" , Space , Str "supported" , Space , Str "on" , Space , Str "a" , Space , Code ( "" , [] , [] ) "ul" , Space , Str "element." ] , BulletList [ [ Plain [ Str "Lorem" ] ] , [ Plain [ Str "Ipsum" ] ] , [ Plain [ Str "Dolor" ] ] , [ Plain [ Str "Sit" ] ] , [ Plain [ Str "Amet" ] ] ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "list" , Space , Str "has" , Space , Str "circle" , Space , Str "markers," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] , Div ( "styling-xhtml-002.xhtml#style-011" , [ "section" , "ctest" ] , [] ) [ Header 4 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-011" ] , Space , Code ( "" , [] , [] ) "square" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "list-style-type" , Space , Str "property" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "square" , Space , Str "is" , Space , Str "supported" , Space , Str "on" , Space , Str "a" , Space , Code ( "" , [] , [] ) "ul" , Space , Str "element." ] , BulletList [ [ Plain [ Str "Lorem" ] ] , [ Plain [ Str "Ipsum" ] ] , [ Plain [ Str "Dolor" ] ] , [ Plain [ Str "Sit" ] ] , [ Plain [ Str "Amet" ] ] ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "list" , Space , Str "has" , Space , Str "square" , Space , Str "markers," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] , Div ( "styling-xhtml-002.xhtml#style-012" , [ "section" , "ctest" ] , [] ) [ Header 4 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-012" ] , Space , Code ( "" , [] , [] ) "disc" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "list-style-type" , Space , Str "property" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "disc" , Space , Str "is" , Space , Str "supported" , Space , Str "on" , Space , Str "a" , Space , Code ( "" , [] , [] ) "ul" , Space , Str "element." ] , BulletList [ [ Plain [ Str "Lorem" ] ] , [ Plain [ Str "Ipsum" ] ] , [ Plain [ Str "Dolor" ] ] , [ Plain [ Str "Sit" ] ] , [ Plain [ Str "Amet" ] ] ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "list" , Space , Str "has" , Space , Str "disc" , Space , Str "markers," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] , Div ( "styling-xhtml-002.xhtml#style-013" , [ "section" , "ctest" ] , [] ) [ Header 4 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-013" ] , Space , Code ( "" , [] , [] ) "lower-latin" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "list-style-type" , Space , Str "property" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "lower-latin" , Space , Str "is" , Space , Str "supported" , Space , Str "on" , Space , Str "a" , Space , Code ( "" , [] , [] ) "ol" , Space , Str "element." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Lorem" ] ] , [ Plain [ Str "Ipsum" ] ] , [ Plain [ Str "Dolor" ] ] , [ Plain [ Str "Sit" ] ] , [ Plain [ Str "Amet" ] ] ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "list" , Space , Str "has" , Space , Str "lower-latin" , Space , Str "markers" , Space , Str "in" , Space , Str "ascending" , Space , Str "order," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] , Div ( "styling-xhtml-002.xhtml#style-014" , [ "section" , "ctest" ] , [] ) [ Header 4 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-014" ] , Space , Code ( "" , [] , [] ) "lower-roman" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "list-style-type" , Space , Str "property" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "lower-roman" , Space , Str "is" , Space , Str "supported" , Space , Str "on" , Space , Str "a" , Space , Code ( "" , [] , [] ) "ol" , Space , Str "element." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Lorem" ] ] , [ Plain [ Str "Ipsum" ] ] , [ Plain [ Str "Dolor" ] ] , [ Plain [ Str "Sit" ] ] , [ Plain [ Str "Amet" ] ] ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "list" , Space , Str "has" , Space , Str "lower-roman" , Space , Str "markers" , Space , Str "in" , Space , Str "ascending" , Space , Str "order," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] , Div ( "styling-xhtml-002.xhtml#style-015" , [ "section" , "ctest" ] , [] ) [ Header 4 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-015" ] , Space , Code ( "" , [] , [] ) "upper-alpha" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "list-style-type" , Space , Str "property" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "upper-alpha" , Space , Str "is" , Space , Str "supported" , Space , Str "on" , Space , Str "a" , Space , Code ( "" , [] , [] ) "ol" , Space , Str "element." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Lorem" ] ] , [ Plain [ Str "Ipsum" ] ] , [ Plain [ Str "Dolor" ] ] , [ Plain [ Str "Sit" ] ] , [ Plain [ Str "Amet" ] ] ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "list" , Space , Str "has" , Space , Str "upper-alpha" , Space , Str "markers" , Space , Str "in" , Space , Str "ascending" , Space , Str "order," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] , Div ( "styling-xhtml-002.xhtml#style-016" , [ "section" , "ctest" ] , [] ) [ Header 4 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-016" ] , Space , Code ( "" , [] , [] ) "hiragana" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "list-style-type" , Space , Str "property" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "hiragana" , Space , Str "is" , Space , Str "supported" , Space , Str "on" , Space , Str "a" , Space , Code ( "" , [] , [] ) "ol" , Space , Str "element." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Lorem" ] ] , [ Plain [ Str "Ipsum" ] ] , [ Plain [ Str "Dolor" ] ] , [ Plain [ Str "Sit" ] ] , [ Plain [ Str "Amet" ] ] ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "list" , Space , Str "has" , Space , Str "hiragana" , Space , Str "markers" , Space , Str "in" , Space , Str "ascending" , Space , Str "order," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] , Div ( "styling-xhtml-002.xhtml#style-017" , [ "section" , "ctest" ] , [] ) [ Header 4 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-017" ] , Space , Code ( "" , [] , [] ) "hiragana-iroha" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "list-style-type" , Space , Str "property" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "hiragana-iroha" , Space , Str "is" , Space , Str "supported" , Space , Str "on" , Space , Str "a" , Space , Code ( "" , [] , [] ) "ol" , Space , Str "element." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Lorem" ] ] , [ Plain [ Str "Ipsum" ] ] , [ Plain [ Str "Dolor" ] ] , [ Plain [ Str "Sit" ] ] , [ Plain [ Str "Amet" ] ] ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "list" , Space , Str "has" , Space , Str "hiragana-iroha" , Space , Str "markers" , Space , Str "in" , Space , Str "ascending" , Space , Str "order," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] , Div ( "styling-xhtml-002.xhtml#style-018" , [ "section" , "ctest" ] , [] ) [ Header 4 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-018" ] , Space , Code ( "" , [] , [] ) "katakana" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "list-style-type" , Space , Str "property" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "katakana" , Space , Str "is" , Space , Str "supported" , Space , Str "on" , Space , Str "a" , Space , Code ( "" , [] , [] ) "ol" , Space , Str "element." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Lorem" ] ] , [ Plain [ Str "Ipsum" ] ] , [ Plain [ Str "Dolor" ] ] , [ Plain [ Str "Sit" ] ] , [ Plain [ Str "Amet" ] ] ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "list" , Space , Str "has" , Space , Str "katakana" , Space , Str "markers" , Space , Str "in" , Space , Str "ascending" , Space , Str "order," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] , Div ( "styling-xhtml-002.xhtml#style-019" , [ "section" , "ctest" ] , [] ) [ Header 4 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-019" ] , Space , Code ( "" , [] , [] ) "katakana-iroha" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "list-style-type" , Space , Str "property" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "katakana-iroha" , Space , Str "is" , Space , Str "supported" , Space , Str "on" , Space , Str "a" , Space , Code ( "" , [] , [] ) "ol" , Space , Str "element." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Lorem" ] ] , [ Plain [ Str "Ipsum" ] ] , [ Plain [ Str "Dolor" ] ] , [ Plain [ Str "Sit" ] ] , [ Plain [ Str "Amet" ] ] ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "list" , Space , Str "has" , Space , Str "katakana-iroha" , Space , Str "markers" , Space , Str "in" , Space , Str "ascending" , Space , Str "order," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] , Div ( "styling-xhtml-002.xhtml#style-020" , [ "section" , "ctest" ] , [] ) [ Header 4 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-020" ] , Space , Code ( "" , [] , [] ) "upper-roman" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "list-style-type" , Space , Str "property" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "upper-roman" , Space , Str "is" , Space , Str "supported" , Space , Str "on" , Space , Str "a" , Space , Code ( "" , [] , [] ) "ol" , Space , Str "element." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Lorem" ] ] , [ Plain [ Str "Ipsum" ] ] , [ Plain [ Str "Dolor" ] ] , [ Plain [ Str "Sit" ] ] , [ Plain [ Str "Amet" ] ] ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "list" , Space , Str "has" , Space , Str "upper-roman" , Space , Str "markers" , Space , Str "in" , Space , Str "ascending" , Space , Str "order," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] , Div ( "styling-xhtml-002.xhtml#style-021" , [ "section" , "ctest" ] , [] ) [ Header 4 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-021" ] , Space , Code ( "" , [] , [] ) "upper-latin" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "list-style-type" , Space , Str "property" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "upper-latin" , Space , Str "is" , Space , Str "supported" , Space , Str "on" , Space , Str "a" , Space , Code ( "" , [] , [] ) "ol" , Space , Str "element." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Lorem" ] ] , [ Plain [ Str "Ipsum" ] ] , [ Plain [ Str "Dolor" ] ] , [ Plain [ Str "Sit" ] ] , [ Plain [ Str "Amet" ] ] ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "list" , Space , Str "has" , Space , Str "upper-latin" , Space , Str "markers" , Space , Str "in" , Space , Str "ascending" , Space , Str "order," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] , Div ( "styling-xhtml-002.xhtml#style-022" , [ "section" , "ctest" ] , [] ) [ Header 4 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-022" ] , Space , Code ( "" , [] , [] ) "lower-alpha" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "list-style-type" , Space , Str "property" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "lower-alpha" , Space , Str "is" , Space , Str "supported" , Space , Str "on" , Space , Str "a" , Space , Code ( "" , [] , [] ) "ol" , Space , Str "element." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Lorem" ] ] , [ Plain [ Str "Ipsum" ] ] , [ Plain [ Str "Dolor" ] ] , [ Plain [ Str "Sit" ] ] , [ Plain [ Str "Amet" ] ] ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "list" , Space , Str "has" , Space , Str "lower-alpha" , Space , Str "markers" , Space , Str "in" , Space , Str "ascending" , Space , Str "order," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] , Div ( "styling-xhtml-002.xhtml#style-023" , [ "section" , "ctest" ] , [] ) [ Header 4 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-023" ] , Space , Code ( "" , [] , [] ) "lower-greek" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "list-style-type" , Space , Str "property" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "lower-greek" , Space , Str "is" , Space , Str "supported" , Space , Str "on" , Space , Str "a" , Space , Code ( "" , [] , [] ) "ol" , Space , Str "element." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Lorem" ] ] , [ Plain [ Str "Ipsum" ] ] , [ Plain [ Str "Dolor" ] ] , [ Plain [ Str "Sit" ] ] , [ Plain [ Str "Amet" ] ] ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "list" , Space , Str "has" , Space , Str "lower-greek" , Space , Str "markers" , Space , Str "in" , Space , Str "ascending" , Space , Str "order," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] , Div ( "styling-xhtml-002.xhtml#style-024" , [ "section" , "ctest" ] , [] ) [ Header 4 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-024" ] , Space , Code ( "" , [] , [] ) "armenian" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "list-style-type" , Space , Str "property" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "armenian" , Space , Str "is" , Space , Str "supported" , Space , Str "on" , Space , Str "a" , Space , Code ( "" , [] , [] ) "ol" , Space , Str "element." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Lorem" ] ] , [ Plain [ Str "Ipsum" ] ] , [ Plain [ Str "Dolor" ] ] , [ Plain [ Str "Sit" ] ] , [ Plain [ Str "Amet" ] ] ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "list" , Space , Str "has" , Space , Str "armenian" , Space , Str "markers" , Space , Str "in" , Space , Str "ascending" , Space , Str "order," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] , Div ( "styling-xhtml-002.xhtml#style-025" , [ "section" , "ctest" ] , [] ) [ Header 4 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-025" ] , Space , Code ( "" , [] , [] ) "cjk-ideographic" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "list-style-type" , Space , Str "property" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "cjk-ideographic" , Space , Str "is" , Space , Str "supported" , Space , Str "on" , Space , Str "a" , Space , Code ( "" , [] , [] ) "ol" , Space , Str "element." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Lorem" ] ] , [ Plain [ Str "Ipsum" ] ] , [ Plain [ Str "Dolor" ] ] , [ Plain [ Str "Sit" ] ] , [ Plain [ Str "Amet" ] ] ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "list" , Space , Str "has" , Space , Str "cjk-ideographic" , Space , Str "markers" , Space , Str "in" , Space , Str "ascending" , Space , Str "order," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] , Div ( "styling-xhtml-002.xhtml#style-026" , [ "section" , "ctest" ] , [] ) [ Header 4 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-026" ] , Space , Code ( "" , [] , [] ) "decimal-leading-zero" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "list-style-type" , Space , Str "property" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "decimal-leading-zero" , Space , Str "is" , Space , Str "supported" , Space , Str "on" , Space , Str "a" , Space , Code ( "" , [] , [] ) "ol" , Space , Str "element." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Lorem" ] ] , [ Plain [ Str "Ipsum" ] ] , [ Plain [ Str "Dolor" ] ] , [ Plain [ Str "Sit" ] ] , [ Plain [ Str "Amet" ] ] ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "list" , Space , Str "has" , Space , Str "decimal-leading-zero" , Space , Str "markers" , Space , Str "in" , Space , Str "ascending" , Space , Str "order," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] , Div ( "styling-xhtml-002.xhtml#style-027" , [ "section" , "ctest" ] , [] ) [ Header 4 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-027" ] , Space , Code ( "" , [] , [] ) "georgian" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "list-style-type" , Space , Str "property" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "georgian" , Space , Str "is" , Space , Str "supported" , Space , Str "on" , Space , Str "a" , Space , Code ( "" , [] , [] ) "ol" , Space , Str "element." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Lorem" ] ] , [ Plain [ Str "Ipsum" ] ] , [ Plain [ Str "Dolor" ] ] , [ Plain [ Str "Sit" ] ] , [ Plain [ Str "Amet" ] ] ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "list" , Space , Str "has" , Space , Str "georgian" , Space , Str "markers" , Space , Str "in" , Space , Str "ascending" , Space , Str "order," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] , Div ( "styling-xhtml-002.xhtml#style-028" , [ "section" , "ctest" ] , [] ) [ Header 4 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-028" ] , Space , Code ( "" , [] , [] ) "hebrew" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "list-style-type" , Space , Str "property" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "hebrew" , Space , Str "is" , Space , Str "supported" , Space , Str "on" , Space , Str "a" , Space , Code ( "" , [] , [] ) "ol" , Space , Str "element." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Lorem" ] ] , [ Plain [ Str "Ipsum" ] ] , [ Plain [ Str "Dolor" ] ] , [ Plain [ Str "Sit" ] ] , [ Plain [ Str "Amet" ] ] ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "list" , Space , Str "has" , Space , Str "hebrew" , Space , Str "markers" , Space , Str "in" , Space , Str "ascending" , Space , Str "order," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] , Div ( "styling-xhtml-002.xhtml#style-029" , [ "section" , "ctest" ] , [] ) [ Header 4 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-029" ] , Space , Code ( "" , [] , [] ) "none" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "list-style-type" , Space , Str "property" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "none" , Space , Str "is" , Space , Str "supported" , Space , Str "on" , Space , Str "a" , Space , Code ( "" , [] , [] ) "ol" , Space , Str "element." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Lorem" ] ] , [ Plain [ Str "Ipsum" ] ] , [ Plain [ Str "Dolor" ] ] , [ Plain [ Str "Sit" ] ] , [ Plain [ Str "Amet" ] ] ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "list" , Space , Str "has" , Space , Str "no" , Space , Str "markers," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] ] , Div ( "styling-xhtml-002.xhtml#style-list-style" , [ "section" ] , [] ) [ Header 3 ( "" , [] , [] ) [ Str "The" , Space , Code ( "" , [] , [] ) "list-style" , Space , Str "property" ] , Div ( "styling-xhtml-002.xhtml#style-030" , [ "section" , "ctest" ] , [] ) [ Header 4 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-030" ] , Space , Str "images" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "list-style" , Space , Str "shorthand" , Space , Str "property" , Space , Str "is" , Space , Str "supported" , Space , Str "using" , Space , Str "a" , Space , Str "gif" , Space , Str "on" , Space , Str "a" , Space , Code ( "" , [] , [] ) "ul" , Space , Str "element." ] , BulletList [ [ Plain [ Str "Lorem" ] ] , [ Plain [ Str "Ipsum" ] ] , [ Plain [ Str "Dolor" ] ] , [ Plain [ Str "Sit" ] ] , [ Plain [ Str "Amet" ] ] ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "list" , Space , Str "has" , Space , Str "the" , Space , Str "purple" , Space , Str "and" , Space , Str "aqua" , Space , Str "square" , Space , Str "bullet" , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] ] , Div ( "styling-xhtml-002.xhtml#style-list-style-position" , [ "section" ] , [] ) [ Header 3 ( "" , [] , [] ) [ Str "The" , Space , Code ( "" , [] , [] ) "list-style-position" , Space , Str "property" ] , Div ( "styling-xhtml-002.xhtml#style-040" , [ "section" , "ctest" ] , [] ) [ Header 4 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-040" ] , Space , Str "The" , Space , Code ( "" , [] , [] ) "list-style-position" , Space , Str "property:" , Space , Code ( "" , [] , [] ) "inside" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "list-style-position" , Space , Str "property" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "inside" , Space , Str "is" , Space , Str "supported" , Space , Str "on" , Space , Str "a" , Space , Code ( "" , [] , [] ) "ul" , Space , Str "element." ] , BulletList [ [ Plain [ Str "Lorem" , Space , Str "ipsum" , Space , Str "dolor" , Space , Str "sit" , Space , Str "amet," , Space , Str "consectetur" , Space , Str "adipisicing" , Space , Str "elit," , Space , Str "sed" , Space , Str "do" , Space , Str "eiusmod" , Space , Str "tempor" , Space , Str "incididunt" , Space , Str "ut" , Space , Str "labore" , Space , Str "et" , Space , Str "dolore" , Space , Str "magna" , Space , Str "aliqua." , Space , Str "Ut" , Space , Str "enim" , Space , Str "ad" , Space , Str "minim" , Space , Str "veniam," , Space , Str "quis" , Space , Str "nostrud" , Space , Str "exercitation" , Space , Str "ullamco" , Space , Str "laboris" , Space , Str "nisi" , Space , Str "ut" , Space , Str "aliquip" , Space , Str "ex" , Space , Str "ea" , Space , Str "commodo" , Space , Str "consequat." ] ] , [ Plain [ Str "Lorem" , Space , Str "ipsum" , Space , Str "dolor" , Space , Str "sit" , Space , Str "amet," , Space , Str "consectetur" , Space , Str "adipisicing" , Space , Str "elit," , Space , Str "sed" , Space , Str "do" , Space , Str "eiusmod" , Space , Str "tempor" , Space , Str "incididunt" , Space , Str "ut" , Space , Str "labore" , Space , Str "et" , Space , Str "dolore" , Space , Str "magna" , Space , Str "aliqua." , Space , Str "Ut" , Space , Str "enim" , Space , Str "ad" , Space , Str "minim" , Space , Str "veniam," , Space , Str "quis" , Space , Str "nostrud" , Space , Str "exercitation" , Space , Str "ullamco" , Space , Str "laboris" , Space , Str "nisi" , Space , Str "ut" , Space , Str "aliquip" , Space , Str "ex" , Space , Str "ea" , Space , Str "commodo" , Space , Str "consequat." ] ] , [ Plain [ Str "Lorem" , Space , Str "ipsum" , Space , Str "dolor" , Space , Str "sit" , Space , Str "amet," , Space , Str "consectetur" , Space , Str "adipisicing" , Space , Str "elit," , Space , Str "sed" , Space , Str "do" , Space , Str "eiusmod" , Space , Str "tempor" , Space , Str "incididunt" , Space , Str "ut" , Space , Str "labore" , Space , Str "et" , Space , Str "dolore" , Space , Str "magna" , Space , Str "aliqua." , Space , Str "Ut" , Space , Str "enim" , Space , Str "ad" , Space , Str "minim" , Space , Str "veniam," , Space , Str "quis" , Space , Str "nostrud" , Space , Str "exercitation" , Space , Str "ullamco" , Space , Str "laboris" , Space , Str "nisi" , Space , Str "ut" , Space , Str "aliquip" , Space , Str "ex" , Space , Str "ea" , Space , Str "commodo" , Space , Str "consequat." ] ] ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "list" , Space , Str "has" , Space , Str "markers" , Space , Str "inside" , Space , Str "the" , Space , Str "indentation," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] , Div ( "styling-xhtml-002.xhtml#style-041" , [ "section" , "ctest" ] , [] ) [ Header 4 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-041" ] , Space , Str "The" , Space , Code ( "" , [] , [] ) "list-style-position" , Space , Str "property:" , Space , Code ( "" , [] , [] ) "outside" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "list-style-position" , Space , Str "property" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "outside" , Space , Str "is" , Space , Str "supported" , Space , Str "on" , Space , Str "a" , Space , Code ( "" , [] , [] ) "ul" , Space , Str "element." ] , BulletList [ [ Plain [ Str "Lorem" , Space , Str "ipsum" , Space , Str "dolor" , Space , Str "sit" , Space , Str "amet," , Space , Str "consectetur" , Space , Str "adipisicing" , Space , Str "elit," , Space , Str "sed" , Space , Str "do" , Space , Str "eiusmod" , Space , Str "tempor" , Space , Str "incididunt" , Space , Str "ut" , Space , Str "labore" , Space , Str "et" , Space , Str "dolore" , Space , Str "magna" , Space , Str "aliqua." , Space , Str "Ut" , Space , Str "enim" , Space , Str "ad" , Space , Str "minim" , Space , Str "veniam," , Space , Str "quis" , Space , Str "nostrud" , Space , Str "exercitation" , Space , Str "ullamco" , Space , Str "laboris" , Space , Str "nisi" , Space , Str "ut" , Space , Str "aliquip" , Space , Str "ex" , Space , Str "ea" , Space , Str "commodo" , Space , Str "consequat." ] ] , [ Plain [ Str "Lorem" , Space , Str "ipsum" , Space , Str "dolor" , Space , Str "sit" , Space , Str "amet," , Space , Str "consectetur" , Space , Str "adipisicing" , Space , Str "elit," , Space , Str "sed" , Space , Str "do" , Space , Str "eiusmod" , Space , Str "tempor" , Space , Str "incididunt" , Space , Str "ut" , Space , Str "labore" , Space , Str "et" , Space , Str "dolore" , Space , Str "magna" , Space , Str "aliqua." , Space , Str "Ut" , Space , Str "enim" , Space , Str "ad" , Space , Str "minim" , Space , Str "veniam," , Space , Str "quis" , Space , Str "nostrud" , Space , Str "exercitation" , Space , Str "ullamco" , Space , Str "laboris" , Space , Str "nisi" , Space , Str "ut" , Space , Str "aliquip" , Space , Str "ex" , Space , Str "ea" , Space , Str "commodo" , Space , Str "consequat." ] ] , [ Plain [ Str "Lorem" , Space , Str "ipsum" , Space , Str "dolor" , Space , Str "sit" , Space , Str "amet," , Space , Str "consectetur" , Space , Str "adipisicing" , Space , Str "elit," , Space , Str "sed" , Space , Str "do" , Space , Str "eiusmod" , Space , Str "tempor" , Space , Str "incididunt" , Space , Str "ut" , Space , Str "labore" , Space , Str "et" , Space , Str "dolore" , Space , Str "magna" , Space , Str "aliqua." , Space , Str "Ut" , Space , Str "enim" , Space , Str "ad" , Space , Str "minim" , Space , Str "veniam," , Space , Str "quis" , Space , Str "nostrud" , Space , Str "exercitation" , Space , Str "ullamco" , Space , Str "laboris" , Space , Str "nisi" , Space , Str "ut" , Space , Str "aliquip" , Space , Str "ex" , Space , Str "ea" , Space , Str "commodo" , Space , Str "consequat." ] ] ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "list" , Space , Str "has" , Space , Str "the" , Space , Str "default" , Space , Str "setting" , Space , Str "(marker" , Space , Str "outside" , Space , Str "the" , Space , Str "indentation)," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] ] , Div ( "styling-xhtml-002.xhtml#style-list-start" , [ "section" ] , [] ) [ Header 3 ( "" , [] , [] ) [ Str "The" , Space , Str "HTML" , Space , Code ( "" , [] , [] ) "start" , Space , Str "attribute" ] , Div ( "styling-xhtml-002.xhtml#style-050" , [ "section" , "ctest" ] , [] ) [ Header 4 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-050" ] , Space , Str "Without" , Space , Code ( "" , [] , [] ) "list-style-type" , Space , Str "set" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "start" , Space , Str "attribute" , Space , Str "is" , Space , Str "supported" , Space , Str "on" , Space , Str "a" , Space , Code ( "" , [] , [] ) "ol" , Space , Str "element" , Space , Str "with" , Space , Str "no" , Space , Code ( "" , [] , [] ) "list-style-type" , Space , Str "property." ] , OrderedList ( 25 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Lorem" ] ] , [ Plain [ Str "Ipsum" ] ] , [ Plain [ Str "Dolor" ] ] , [ Plain [ Str "Sit" ] ] , [ Plain [ Str "Amet" ] ] ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "list" , Space , Str "starts" , Space , Str "at" , Space , Str "25," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] , Div ( "styling-xhtml-002.xhtml#style-051" , [ "section" , "ctest" ] , [] ) [ Header 4 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-051" ] , Space , Str "With" , Space , Code ( "" , [] , [] ) "list-style-type" , Space , Str "set" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "start" , Space , Str "attribute" , Space , Str "is" , Space , Str "supported" , Space , Str "on" , Space , Str "a" , Space , Code ( "" , [] , [] ) "ol" , Space , Str "element" , Space , Str "with" , Space , Str "a" , Space , Code ( "" , [] , [] ) "list-style-type" , Space , Str "property." ] , OrderedList ( 50 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Lorem" ] ] , [ Plain [ Str "Ipsum" ] ] , [ Plain [ Str "Dolor" ] ] , [ Plain [ Str "Sit" ] ] , [ Plain [ Str "Amet" ] ] ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "list" , Space , Str "starts" , Space , Str "at" , Space , Str "'L'" , Space , Str "(50)," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] ] ] , Para [ Span ( "styling-xhtml-004.xhtml" , [] , [] ) [] ] , Div ( "styling-xhtml-004.xhtml#style-media-rules" , [ "section" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Code ( "" , [] , [] ) "@media" , Space , Str "Rules" ] , Div ( "styling-xhtml-004.xhtml#style-210" , [ "section" , "ctest" ] , [] ) [ Header 3 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-210" ] , Space , Code ( "" , [] , [] ) "all" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "@media" , Space , Str "rule" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "all" , Space , Str "is" , Space , Str "supported." ] , Para [ Str "FAIL" ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "paragraph" , Space , Str "reads" , Space , Str "\"FAIL\"," , Space , Str "the" , Space , Str "test" , Space , Str "fails." ] ] , Div ( "styling-xhtml-004.xhtml#style-211" , [ "section" , "ctest" ] , [] ) [ Header 3 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-211" ] , Space , Code ( "" , [] , [] ) "screen" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "@media" , Space , Str "rule" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "screen" , Space , Str "is" , Space , Str "supported." ] , Para [ Str "FAIL" ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "paragraph" , Space , Str "reads" , Space , Str "\"FAIL\"," , Space , Str "the" , Space , Str "test" , Space , Str "fails." ] ] , Div ( "styling-xhtml-004.xhtml#style-212" , [ "section" , "ctest" ] , [] ) [ Header 3 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-212" ] , Space , Code ( "" , [] , [] ) "handheld" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "@media" , Space , Str "rule" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "handheld" , Space , Str "is" , Space , Str "supported." ] , Para [ Str "FAIL" ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "paragraph" , Space , Str "reads" , Space , Str "\"FAIL\"," , Space , Str "the" , Space , Str "test" , Space , Str "fails." ] ] , Div ( "styling-xhtml-004.xhtml#style-213" , [ "section" , "ctest" ] , [] ) [ Header 3 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-213" ] , Space , Code ( "" , [] , [] ) "tv" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "@media" , Space , Str "rule" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "tv" , Space , Str "is" , Space , Str "supported." ] , Para [ Str "FAIL" ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "paragraph" , Space , Str "reads" , Space , Str "\"FAIL\"," , Space , Str "the" , Space , Str "test" , Space , Str "fails." ] ] , Div ( "styling-xhtml-004.xhtml#style-220" , [ "section" , "ctest" ] , [] ) [ Header 3 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-220" ] , Space , Code ( "" , [] , [] ) "orientation:landscape" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "@media" , Space , Str "rule" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "orientation:landscape" , Space , Str "is" , Space , Str "supported." ] , Para [ Str "FAIL" ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "paragraph" , Space , Str "reads" , Space , Str "\"FAIL\"" , Space , Str "when" , Space , Str "the" , Space , Str "device" , Space , Str "is" , Space , Str "held" , Space , Str "in" , Space , Str "landscape" , Space , Str "mode," , Space , Str "and" , Space , Str "the" , Space , Str "device" , Space , Str "supports" , Space , Str "multiple" , Space , Str "orientations," , Space , Str "the" , Space , Str "test" , Space , Str "fails." ] ] , Div ( "styling-xhtml-004.xhtml#style-221" , [ "section" , "ctest" ] , [] ) [ Header 3 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-221" ] , Space , Code ( "" , [] , [] ) "orientation:portrait" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "@media" , Space , Str "rule" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "orientation:portrait" , Space , Str "is" , Space , Str "supported." ] , Para [ Str "FAIL" ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "paragraph" , Space , Str "reads" , Space , Str "\"FAIL\"" , Space , Str "when" , Space , Str "the" , Space , Str "device" , Space , Str "is" , Space , Str "held" , Space , Str "in" , Space , Str "portrait" , Space , Str "mode," , Space , Str "and" , Space , Str "the" , Space , Str "device" , Space , Str "supports" , Space , Str "multiple" , Space , Str "orientations," , Space , Str "the" , Space , Str "test" , Space , Str "fails." ] ] , Div ( "styling-xhtml-004.xhtml#style-230" , [ "section" , "ctest" ] , [] ) [ Header 3 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-230" ] , Space , Code ( "" , [] , [] ) "min-width" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "@media" , Space , Str "rule" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "min-width:200px" , Space , Str "is" , Space , Str "supported." ] , Para [ Str "FAIL" ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "paragraph" , Space , Str "reads" , Space , Str "\"FAIL\"," , Space , Str "the" , Space , Str "test" , Space , Str "fails." ] ] , Div ( "styling-xhtml-004.xhtml#style-231" , [ "section" , "ctest" ] , [] ) [ Header 3 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-231" ] , Space , Code ( "" , [] , [] ) "max-width" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "@media" , Space , Str "rule" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "max-width:2000px" , Space , Str "is" , Space , Str "supported." ] , Para [ Str "FAIL" ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "paragraph" , Space , Str "reads" , Space , Str "\"FAIL\"," , Space , Str "the" , Space , Str "test" , Space , Str "fails." ] ] , Div ( "styling-xhtml-004.xhtml#style-240" , [ "section" , "ctest" ] , [] ) [ Header 3 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-240" ] , Space , Code ( "" , [] , [] ) "min-device-width" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "@media" , Space , Str "rule" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "min-device-width:200px" , Space , Str "is" , Space , Str "supported." ] , Para [ Str "FAIL" ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "paragraph" , Space , Str "reads" , Space , Str "\"FAIL\"," , Space , Str "the" , Space , Str "test" , Space , Str "fails." ] ] , Div ( "styling-xhtml-004.xhtml#style-241" , [ "section" , "ctest" ] , [] ) [ Header 3 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-241" ] , Space , Code ( "" , [] , [] ) "max-device-width" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "@media" , Space , Str "rule" , Space , Str "set" , Space , Str "to" , Space , Code ( "" , [] , [] ) "max-device-width:2000px" , Space , Str "is" , Space , Str "supported." ] , Para [ Str "FAIL" ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "paragraph" , Space , Str "reads" , Space , Str "\"FAIL\"," , Space , Str "the" , Space , Str "test" , Space , Str "fails." ] ] ] , Para [ Span ( "styling-xhtml-005.xhtml" , [] , [] ) [] ] , Div ( "styling-xhtml-005.xhtml#style-text-xform" , [ "section" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Str "The" , Space , Code ( "" , [] , [] ) "text-transform" , Space , Str "property" ] , Div ( "styling-xhtml-005.xhtml#style-310" , [ "section" , "ctest" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-310" ] , Space , Code ( "" , [] , [] ) "uppercase" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "text-transform" , Space , Str "property" , Space , Str "set" , Space , Str "to" , Space , Str "uppercase" , Space , Str "is" , Space , Str "supported." ] , Para [ Str "Lorem" , Space , Str "ipsum" , Space , Str "dolor" , Space , Str "sit" , Space , Str "amet," , Space , Str "consectetur" , Space , Str "adipisicing" , Space , Str "elit," , Space , Str "sed" , Space , Str "do" , Space , Str "eiusmod" , Space , Str "tempor" , Space , Str "incididunt" , Space , Str "ut" , Space , Str "labore" , Space , Str "et" , Space , Str "dolore" , Space , Str "magna" , Space , Str "aliqua." , Space , Str "Ut" , Space , Str "enim" , Space , Str "ad" , Space , Str "minim" , Space , Str "veniam," , Space , Str "quis" , Space , Str "nostrud" , Space , Str "exercitation" , Space , Str "ullamco" , Space , Str "laboris" , Space , Str "nisi" , Space , Str "ut" , Space , Str "aliquip" , Space , Str "ex" , Space , Str "ea" , Space , Str "commodo" , Space , Str "consequat." , Space , Str "Duis" , Space , Str "aute" , Space , Str "irure" , Space , Str "dolor" , Space , Str "in" , Space , Str "reprehenderit" , Space , Str "in" , Space , Str "voluptate" , Space , Str "velit" , Space , Str "esse" , Space , Str "cillum" , Space , Str "dolore" , Space , Str "eu" , Space , Str "fugiat" , Space , Str "nulla" , Space , Str "pariatur." , Space , Str "Excepteur" , Space , Str "sint" , Space , Str "occaecat" , Space , Str "cupidatat" , Space , Str "non" , Space , Str "proident," , Space , Str "sunt" , Space , Str "in" , Space , Str "culpa" , Space , Str "qui" , Space , Str "officia" , Space , Str "deserunt" , Space , Str "mollit" , Space , Str "anim" , Space , Str "id" , Space , Str "est" , Space , Str "laborum." ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "paragraph" , Space , Str "is" , Space , Str "in" , Space , Str "upper" , Space , Str "case," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] , Div ( "styling-xhtml-005.xhtml#style-311" , [ "section" , "ctest" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-311" ] , Space , Code ( "" , [] , [] ) "capitalize" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "text-transform" , Space , Str "property" , Space , Str "set" , Space , Str "to" , Space , Str "capitalize" , Space , Str "is" , Space , Str "supported." ] , Para [ Str "Lorem" , Space , Str "ipsum" , Space , Str "dolor" , Space , Str "sit" , Space , Str "amet," , Space , Str "consectetur" , Space , Str "adipisicing" , Space , Str "elit," , Space , Str "sed" , Space , Str "do" , Space , Str "eiusmod" , Space , Str "tempor" , Space , Str "incididunt" , Space , Str "ut" , Space , Str "labore" , Space , Str "et" , Space , Str "dolore" , Space , Str "magna" , Space , Str "aliqua." , Space , Str "Ut" , Space , Str "enim" , Space , Str "ad" , Space , Str "minim" , Space , Str "veniam," , Space , Str "quis" , Space , Str "nostrud" , Space , Str "exercitation" , Space , Str "ullamco" , Space , Str "laboris" , Space , Str "nisi" , Space , Str "ut" , Space , Str "aliquip" , Space , Str "ex" , Space , Str "ea" , Space , Str "commodo" , Space , Str "consequat." , Space , Str "Duis" , Space , Str "aute" , Space , Str "irure" , Space , Str "dolor" , Space , Str "in" , Space , Str "reprehenderit" , Space , Str "in" , Space , Str "voluptate" , Space , Str "velit" , Space , Str "esse" , Space , Str "cillum" , Space , Str "dolore" , Space , Str "eu" , Space , Str "fugiat" , Space , Str "nulla" , Space , Str "pariatur." , Space , Str "Excepteur" , Space , Str "sint" , Space , Str "occaecat" , Space , Str "cupidatat" , Space , Str "non" , Space , Str "proident," , Space , Str "sunt" , Space , Str "in" , Space , Str "culpa" , Space , Str "qui" , Space , Str "officia" , Space , Str "deserunt" , Space , Str "mollit" , Space , Str "anim" , Space , Str "id" , Space , Str "est" , Space , Str "laborum." ] , Para [ Str "If" , Space , Str "each" , Space , Str "first" , Space , Str "letter" , Space , Str "of" , Space , Str "each" , Space , Str "word" , Space , Str "in" , Space , Str "the" , Space , Str "preceding" , Space , Str "paragraph" , Space , Str "is" , Space , Str "in" , Space , Str "upper" , Space , Str "case," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] , Div ( "styling-xhtml-005.xhtml#style-312" , [ "section" , "ctest" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-312" ] , Space , Code ( "" , [] , [] ) "lowercase" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "text-transform" , Space , Str "property" , Space , Str "set" , Space , Str "to" , Space , Str "lowercase" , Space , Str "is" , Space , Str "supported." ] , Para [ Str "Lorem" , Space , Str "ipsum" , Space , Str "dolor" , Space , Str "sit" , Space , Str "amet," , Space , Str "consectetur" , Space , Str "adipisicing" , Space , Str "elit," , Space , Str "sed" , Space , Str "do" , Space , Str "eiusmod" , Space , Str "tempor" , Space , Str "incididunt" , Space , Str "ut" , Space , Str "labore" , Space , Str "et" , Space , Str "dolore" , Space , Str "magna" , Space , Str "aliqua." , Space , Str "Ut" , Space , Str "enim" , Space , Str "ad" , Space , Str "minim" , Space , Str "veniam," , Space , Str "quis" , Space , Str "nostrud" , Space , Str "exercitation" , Space , Str "ullamco" , Space , Str "laboris" , Space , Str "nisi" , Space , Str "ut" , Space , Str "aliquip" , Space , Str "ex" , Space , Str "ea" , Space , Str "commodo" , Space , Str "consequat." , Space , Str "Duis" , Space , Str "aute" , Space , Str "irure" , Space , Str "dolor" , Space , Str "in" , Space , Str "reprehenderit" , Space , Str "in" , Space , Str "voluptate" , Space , Str "velit" , Space , Str "esse" , Space , Str "cillum" , Space , Str "dolore" , Space , Str "eu" , Space , Str "fugiat" , Space , Str "nulla" , Space , Str "pariatur." , Space , Str "Excepteur" , Space , Str "sint" , Space , Str "occaecat" , Space , Str "cupidatat" , Space , Str "non" , Space , Str "proident," , Space , Str "sunt" , Space , Str "in" , Space , Str "culpa" , Space , Str "qui" , Space , Str "officia" , Space , Str "deserunt" , Space , Str "mollit" , Space , Str "anim" , Space , Str "id" , Space , Str "est" , Space , Str "laborum." ] , Para [ Str "If" , Space , Str "the" , Space , Str "preceding" , Space , Str "paragraph" , Space , Str "is" , Space , Str "in" , Space , Str "lower" , Space , Str "case," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] ] , Para [ Span ( "styling-xhtml-006.xhtml" , [] , [] ) [] ] , Div ( "styling-xhtml-006.xhtml#style-ruby" , [ "section" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Str "The" , Space , Code ( "" , [] , [] ) "epub-ruby-position" , Space , Str "property" ] , Div ( "styling-xhtml-006.xhtml#style-410" , [ "section" , "ctest" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-410" ] , Space , Code ( "" , [] , [] ) "over" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "-epub-ruby-position" , Space , Str "property" , Space , Str "set" , Space , Str "to" , Space , Str "over" , Space , Str "is" , Space , Str "supported." ] , Plain [ RawInline (Format "html") "" , Strong [ Str "Lorem" , Space , Str "Ipsum" ] , Space , RawInline (Format "html") "" , Str "(" , RawInline (Format "html") "" , RawInline (Format "html") "" , Str "Lorem" , Space , Str "Ipsum" , RawInline (Format "html") "" , RawInline (Format "html") "" , Str ")" , RawInline (Format "html") "" , RawInline (Format "html") "" ] , Para [ Str "If" , Space , Str "the" , Space , Str "Ruby" , Space , Str "text" , Space , Str "is" , Space , Str "positioned" , Space , Str "on" , Space , Str "the" , Space , Link ( "" , [] , [] ) [ Str "over" ] ( "http://www.w3.org/TR/css3-writing-modes/#over" , "" ) , Space , Str "side" , Space , Str "of" , Space , Str "the" , Space , Str "ruby" , Space , Str "base," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] , Div ( "styling-xhtml-006.xhtml#style-411" , [ "section" , "ctest" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-411" ] , Space , Code ( "" , [] , [] ) "under" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "-epub-ruby-position" , Space , Str "property" , Space , Str "set" , Space , Str "to" , Space , Str "under" , Space , Str "is" , Space , Str "supported." ] , Plain [ RawInline (Format "html") "" , Strong [ Str "Lorem" , Space , Str "Ipsum" ] , Space , RawInline (Format "html") "" , Str "(" , RawInline (Format "html") "" , RawInline (Format "html") "" , Str "Lorem" , Space , Str "Ipsum" , RawInline (Format "html") "" , RawInline (Format "html") "" , Str ")" , RawInline (Format "html") "" , RawInline (Format "html") "" ] , Para [ Str "If" , Space , Str "the" , Space , Str "Ruby" , Space , Str "text" , Space , Str "is" , Space , Str "positioned" , Space , Str "on" , Space , Str "the" , Space , Link ( "" , [] , [] ) [ Str "under" ] ( "http://www.w3.org/TR/css3-writing-modes/#under" , "" ) , Space , Str "side" , Space , Str "of" , Space , Str "the" , Space , Str "ruby" , Space , Str "base," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] , Div ( "styling-xhtml-006.xhtml#style-412" , [ "section" , "ctest" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Span ( "" , [ "nature" ] , [] ) [ Str "[REQUIRED]" ] , Space , Span ( "" , [ "test-id" ] , [] ) [ Str "style-412" ] , Space , Code ( "" , [] , [] ) "inter-character" ] , Para [ Str "Tests" , Space , Str "whether" , Space , Str "the" , Space , Code ( "" , [] , [] ) "-epub-ruby-position" , Space , Str "property" , Space , Str "set" , Space , Str "to" , Space , Str "inter-caracter" , Space , Str "is" , Space , Str "supported." ] , Plain [ RawInline (Format "html") "" , Strong [ Str "Lorem" , Space , Str "Ipsum" ] , Space , RawInline (Format "html") "" , Str "(" , RawInline (Format "html") "" , RawInline (Format "html") "" , Str "Lorem" , Space , Str "Ipsum" , RawInline (Format "html") "" , RawInline (Format "html") "" , Str ")" , RawInline (Format "html") "" , RawInline (Format "html") "" ] , Para [ Str "If" , Space , Str "the" , Space , Str "Ruby" , Space , Str "text" , Space , Str "is" , Space , Str "positioned" , Space , Str "on" , Space , Str "the" , Space , Str "right" , Space , Str "side" , Space , Str "of" , Space , Str "the" , Space , Str "base" , Space , Str "text," , Space , Str "the" , Space , Str "test" , Space , Str "passes." ] ] ] ] pandoc-3.1.3/test/epub/img.epub0000644000000000000000000004777607346545000014543 0ustar0000000000000000PK &9Eoa,mimetypeapplication/epub+zipPK pXSEPUB/PK voXS EPUB/xhtml/PKvoXS:EPUB/xhtml/nav.xhtmlTMs0W&FVtچ(DKՇ 8ӓVڷo^5BgIBBU9eWնBqmfJnKv7n+M&ASlWgHQn;NӏDoL@N%yAatB^zÙ Xl/i$ޣO Z96 #{@--)SQqYqIx (uЕ./7t(! ׮ %_I@zNbײ7`Fyݒ!*(✣_p nC6=1BNGc;vU1H43J,u0s]Q,l6|۲;q|_%dK9M->Me Syc6ۊܨuߗm} aII\W7|_PKtoXSf#EPUB/xhtml/content-images-001.xhtmlUn0=_\^6(8 uP=Hd 3Z!RTizo@Cܧ#oH aKQViNP ctbaNoԩ "%8WNTb up:88ZT% >2ckaVtu-oc"fzM;2z"e;LCj`8©8Ёun[@. ~>,78+ VMtE5W'5=[N6 %8 jC$.L&Qحօqyհ&1 %/Q1%"cD=5Nh[L0 P ˆDhW%kKv~9~jVu4c9?yo'_[_noΨ$D_PK nXS EPUB/css/PK&9EnCeEPUB/css/math.cssuMN0FV$"5DjM±ElGTwhFx3s|$Oծbo2ĐR!c]i|˺]}dx7Ӥ,hN>y~$F r޴CM4%Wي%6]oݽdheBh+GT|ݙ,VA_ IV߲T8-"~>}IBl'PK&9E5EPUB/css/base.cssS[0+"[V 6`x"3ɽ4o%v%ӴWT3:>sxL`{.{I2 -*4PtW~|[2eI~?<Ǔ%1 n!6 a dX-֌:hϖ,)+`F2 ElY S6 #zFGϚW2H5*]&5ň\{phVhF; =wd:36-H=1Υ+(œC%$k3% %Bj ;&TUߐ6_ft6-I=2VË)rAWTgXXھ,㶅t[iٞU.ui/lPg`5#l|%Jͧeq9/$^)EH<#X {XnFtxkPTm~ Bͥ K.):/PK pXS EPUB/img/PK &9E EPUB/img/check.pngPNG  IHDR.2~sRGBgAMA a pHYsod IDATXGYTTWF1guML*A`hC/`2aSD@%JJ@ԬYݍ1ꪉk]E ̰yhe~ZF*t<0@G6(edUO7.wB{($a(r/Y4$}=id}0ժ@B@7rY e@ArxfcTX/ LTehq3jȇA(+:{_{G&^;MF/p^j=eXTqi1ދ>ΐltdɭ1@ȺgD,\sE: )7`rYAӽT)1(w 1QY Y 6b>G[Jߧ@h1+kAqNFl}7_a9O\}J58qJR&| "}=e$~^(nZMgpv!-R$ Z~2zQ8nQ ~E}lmұWΑD;Dani63|7)AC|E2%YU=ry@6Ż)jiݒMvK b6 &vΙZÊ0$H{>Z27 D5rmZ&m"r;zl$#uwyDSV9y `>ia$;}s/( L93ۊw¸zyB od[=Y ؤp~6y?ۯq_MJiCϥiE\=~B Me$~'~ZU{,2Nz]RTJrQI]LgY"b.@ @P_P<  [n kάeB~He *.Yf'.v-Bi31-لd9~%m n)GUF0Ao ԡFVYLtH© Xi Zy2^*}mOslR$-AVE! Jz;~Hlk̫  9`pAx(㱎3IW_oBYںۨSрGѶAY1K {z?`8hXzK*ϠO.#~\P\{?w=y:4q)G7nhmkmio9v߯^#Rfc}*a@0T)MBj1[4@u~H& m&oWVOcw^ ؀IENDB`PK&9E%&e EPUB/img/check.jpgTkTG3 AĬGP;JTQ5*b E)Q4 D7h6H%CCB1Q=&nݯ:Vﻷ^i@|4k#(0 `Zu@/lungڦ}=w @ݔp5 @ "@ "H@ !2@ #( @ᠠ7  57!@ 0\@@D""R"2"r""HHHHHHd 2!2%2#2'2BBˆ‰ !H 2CM(P WiQ@@T**R*2*r*"JJJJJHe22222RBB¨©"H)2Zep"L&&P&0&p& $`aecg2LL̘̙LP0p C`HR!gV_m6@90\m E"""""r DDĸĹ\..S.3.s.#W+++++8#9 PKRQEQ@E"EQD%EQBe2EQFT EQ%Sm6hl:hmp:u:;9;Ngp5]Tzl&U]g9ЃjF*VU ;8 j)wVkuWF=_93|n^~3?\Pq2ĭJu2~> ~gaF;.`SM'8YȨ9s.$$^c\lZ~m~}g/9E_9YxU/|_Ï(W7[Zq;midz6]]yCe^gӥKx;>ұp݂6{Mi xŭd=hypM eKٿ\yZC g{Gՙu}ݴ؅ȃ[:l^p_i#Ao3lrSLU}Kw<^z~&JMzSMgn|m+y͇85v>mϟ[~}qSc2ĺWLIʻeq^N#8|ߝuĒiG jk% 񽉽ZGv=N;gwNZnX]A zXФo,[k}CucY>OZiSe~^Wĕ>17Í]yF۞sLiKyË2̍C}ke⓶,vk]_N2=%g|2OK6݃,\z&\denc2'6.~يCk,׾e7.뚝[;{N ^tn~sM1Cg?l%YӯZ}DKul7C׬G j7FUM]w.IxtJ艿 "sU- c7D|q+ԓ#*׶(hSzgVL{-+wBɿ{⠶e1,u$׌3hlHx}5}buI<8qhn5.'K\5̋Ӈ^oTJ2xv[77/BUcIpÔf_i7+xsgwSUwz;|߀zc69[{{uy'rWyS&杉NQ:uKO;wgE1^>56.C#3/x{ߣe Hx]zPzutonyΪH/MzYv}7iíf́9kƯ-~X9*Zs/oG֧]yկW7C;lTE~mJY3$'G3[x4kÐPK&9E`P<EPUB/img/check.gifEmLU ffvՑǜ.BſCVƥXjcpE]K& d3J[ nwO96KJӏzywvܢY+  @C`QX+`Cp 8^ݲ?zWoI+M:\Tz(|q)ߥW7ܸ'ܜٜ zӎg9)}_}/_~eujx>8VowMgkinWQ?PzݫRk_ O&20m#S'&q's[vԧ?i\gbό;w)>in,6i˅Kh[(^'^1nAUe:vyf-0lֲQy%[W9oW:>g]wfcYYgv4vΥGOn(y.^&ea}UI}9lޕ#cgk5m͘?-bHm[jyif?k&?֒S']If 0PKpXS14; EPUB/package.opfVn6>oe~ְ@t(6)N-(D$IޠcR-g%7}`p)fx1AeE>7oWur4U.IX 3ÅjE!OUJG8~I ՂRLXqg)N^L+fIJ,ih')]3Z5+YX Ap/)lO[J*0綨!S"XSs(/xhbE2C5W'sFL \+A\ 4JyO%CYF۪.-6. x旰}$nQczhA az;Q,ή GAeDp_n{Lֆ"YUyNmN-ݲ> lz4DflyKJUO SSZ!xa1Bvw aoQ% PK &9E META-INF/PK&9E\ˬMETA-INF/container.xmlUA 0E=Eѝkz1j0 M*z{JͣNCV/װi gLxNƁ`0LvF"q+n쉳ycf>GS(A$w>PzFuce|;:*Ze~F10O9.?"c<)^PKpXS6%L',EPUB/img/multiscripts_and_greek_alphabet.pngmwVQEg9뎘o AP~6ղ} TvTJ-#[F;Ybq_.wg5~ :=}x: W(*((pGc)Eʤ͞xxߞqT{t7[-;AȎTEM\](^IdDɮ`kW¾+^p讘 1@,i4r#׷eckZf#00`m|E uDIMIũv{wIt52,i,5dŻS|x~g 3ٞecg63cYJfv~5YsphhiC'6"Q!},+3Ӹ 0rۻ;s[F m(9e.[q6<\o^W>r;$ۛ븎Atllnml V~l'G<;0rrrB4,vĴolI-o.e!oMA {RpZ(!$wqĚr^vze`ePIIc.rO8!bJKAzz>W+lS=+*b J]D9_mݖSx?SX5/_>k|^@ M7m-̂[ڜiv8f.kJ'Z@ L#h1.PNYLkZ~shH7&Q3Q9= sOp:KO'6c%%"W7$qppШmŅ\wF\tRc 9Eo*pe(\˿~C;wh`O8A;SDDp_cAAfE% D*Jc^%:/JCY%Q4 e#<-h݈a-插}DEۣFyzet]fy -,-߼ySh3pc±focHEQ]@u 3\$j~é盐014X;˧x͘6U9i{Gwf׭Iׯ_ j$L z8OcHHڐU&]jPWh|x(xL┰x5ߥ'3hzW2BSvŶ#ݼKqdAvKKK%%k~ Za345&L`l*G(=''c;I=me~b ldccG03 R+uA=߾}Bg+E/}.=7~o6_$N&8n4ΰz6,ƊUTHhhe~56bP<0@(ۢ3OZV??? C2&߻ ˽GbF>5pݞF>stcUW8a>;TBzI6MIųymH ?K]TFtvvRX P--/,`=&UqTᛟ?h!0D^ {o:;}e~vVc^žaQZ*]Pph}T"z\NdZEjHHȟǻgd rEdptl_A*SkJod3#v3‚0Mau0~*Tkjd/A0x`|tt)T2BLZ6An`βxjQi VU{q8"-c<[5)=$9~a5|͡=ƍ;@+ Ng $JPag+sn}JeE؎t)Kd_ww#1Qücd,jC8ǹٷNQB^tXg9ٹ܄krׇ -';_vQY>J^xu>wsua? Ԅw@>|U/ʈ"86\+Fp'EUikh6Lia!ⷬ瞇3)ȶ aEX0S\7bG+1:R7:E0ϗ<wKN8*VIx gsIwZl'ēnkiܼ uw>#",&7R6^{=ԥQGSxYYYUv/7z=TUoNMM=R1zf=U%0?LlGWgg2DmeiIl:Kz8)LYMނ::Cv`E*ջ6W31\uŭcu1\Ɩu*ɳkkjϯa Ȥ}ۍWf*12~"v6;;KoPءZ*7k1r:%k'fƲw3c ]r$$t|D`XІT0=%,ܜ1;T֔{##yyWW&@g?O||NjJz>N^pBZQ~5^g;::4rvA?)@Bu62t F7;$캕suH}>^[]]}/hVX5OO#-C+&&&.e(1Bl>+$/m&ffRzġ!Q} ?9YKIS;"k:j>* ?Uơ0_uvt^ EKyfԼbcS/,fpv(ac y$ꛊu^tL ?;{0߅a9]8C\ld < @VAch~, xQOCf@|!;ܜ0̮L3'(􇸋hT)|FF}_[JJ#Cp!-ԧu߭[/aJStF?uj0-af7jϭx, 1[H|IkXu #)1C%9X{9'O =Oú~}ŸSK] }]l;ok&@ +ѩzӷrp?ERWӭlY]舖I{ocAT * >Wj͉ \@|R265L;0# b):T?B)Q8Wl25-Nݻ >2hFk^-Muu_h-VV^"HIظkBY%m!PBF@CHBw8ZҩWUvT'iut6)q&l_Bua)a3<FE;@ZE<22JȘ(6Hx-}֪WQ+*7N@L=w~XEt,"->)\H8Mb5bdp&dg;I/9ҒB4gVjTZ$<ϟY \hpj~f)*+Z&􏶑ZZy^ CÇ^*U@[šU]հzU].)0L% ӊ*w35$}4lPpkCC8$$$h|ILL sL`jpXlB:[{Tp2zgEBW7DfaT5~Ԅ'&~8H./*\ǀ[5-~,,,p:/:s!+JfhhXX\WPPP봻'A9ٍU38#V  k 44D;2ܫB?`rl*CtӧOd#ccB6,{KP0g1׭N`ܼOO25:-*{MPBkA߫DkEQϻy"׭#82B0D!%yŽRh 4{Ӕ;iCTP#'}%Ż{= lmj9HՅ6Jp@ s !Gh9t&DsKZ\/~4Dx/heC# @W}rj&\DA}0>݀[ 2*hgȈ;N=E DP.wkaa~Α+ /sҰ^E= X VXfDLDja!q]]LOs!k7qd dб"/o@gފQOZ !)h]jVNe 嶙xQt(]Hf?𤵓ccJaBksuo<MkɌK衐PP}*Q픞`ù kh&""BQkŸVh?'LKVAhk@SXaIVnKWP?KaǿJš "oxc6 A _es[3GߥH5( y&,}u71h)䛀U.'gP*?>{u \<=J  P3[dڮFLfwT 7Y1Mt9h'V9IG3J0J̺["cc?VJ:kk%`3 11AY\_0?xQUT%3suI2ZX\RC#'m]Ȕ44y$_Vo^nC'.;ۙkr?]̞7w_ Ln4BQ<0iuטe}~fPP7!>A4ɚKHFgO@+Ŋ:[E=@Y5Э<=XV>VV~K3X͑᱐or/JH$?^ᾯu}Bj]YE%J þ;Qޣ`xZX[1Y`zX5u.zqq?=sU)dG[ cz+fi/n`'GFj/T{[L;=)So`57RAx=&j$x߾}|hrSeoI{vb A Y'Q{LT4''iMHfq~$uxy:3Lu õފz-{ UnP>in޻'--}~Tu_?+ؼ'_J*/=es̜g~mj |(Zޔ^ϪB+EGx<gf$ ->0Me Syc6ۊܨuߗm} aII\W7|_PKtoXSf#EPUB/xhtml/content-images-001.xhtmlUn0=_\^6(8 uP=Hd 3Z!RTizo@Cܧ#oH aKQViNP ctbaNoԩ "%8WNTb up:88ZT% >2ckaVtu-oc"fzM;2z"e;LCj`8©8Ёun[@. ~>,78+ VMtE5W'5=[N6 %8 jC$.L&Qحօqyհ&1 %/Q1%"cD=5Nh[L0 P ˆDhW%kKv~9~jVu4c9?yo'_[_noΨ$D_PK nXS EPUB/css/PK&9EnCeEPUB/css/math.cssuMN0FV$"5DjM±ElGTwhFx3s|$Oծbo2ĐR!c]i|˺]}dx7Ӥ,hN>y~$F r޴CM4%Wي%6]oݽdheBh+GT|ݙ,VA_ IV߲T8-"~>}IBl'PK&9E5EPUB/css/base.cssS[0+"[V 6`x"3ɽ4o%v%ӴWT3:>sxL`{.{I2 -*4PtW~|[2eI~?<Ǔ%1 n!6 a dX-֌:hϖ,)+`F2 ElY S6 #zFGϚW2H5*]&5ň\{phVhF; =wd:36-H=1Υ+(œC%$k3% %Bj ;&TUߐ6_ft6-I=2VË)rAWTgXXھ,㶅t[iٞU.ui/lPg`5#l|%Jͧeq9/$^)EH<#X {XnFtxkPTm~ Bͥ K.):/PK %qXS EPUB/img/PK &9E EPUB/img/check.pngPNG  IHDR.2~sRGBgAMA a pHYsod IDATXGYTTWF1guML*A`hC/`2aSD@%JJ@ԬYݍ1ꪉk]E ̰yhe~ZF*t<0@G6(edUO7.wB{($a(r/Y4$}=id}0ժ@B@7rY e@ArxfcTX/ LTehq3jȇA(+:{_{G&^;MF/p^j=eXTqi1ދ>ΐltdɭ1@ȺgD,\sE: )7`rYAӽT)1(w 1QY Y 6b>G[Jߧ@h1+kAqNFl}7_a9O\}J58qJR&| "}=e$~^(nZMgpv!-R$ Z~2zQ8nQ ~E}lmұWΑD;Dani63|7)AC|E2%YU=ry@6Ż)jiݒMvK b6 &vΙZÊ0$H{>Z27 D5rmZ&m"r;zl$#uwyDSV9y `>ia$;}s/( L93ۊw¸zyB od[=Y ؤp~6y?ۯq_MJiCϥiE\=~B Me$~'~ZU{,2Nz]RTJrQI]LgY"b.@ @P_P<  [n kάeB~He *.Yf'.v-Bi31-لd9~%m n)GUF0Ao ԡFVYLtH© Xi Zy2^*}mOslR$-AVE! Jz;~Hlk̫  9`pAx(㱎3IW_oBYںۨSрGѶAY1K {z?`8hXzK*ϠO.#~\P\{?w=y:4q)G7nhmkmio9v߯^#Rfc}*a@0T)MBj1[4@u~H& m&oWVOcw^ ؀IENDB`PK&9E%&e EPUB/img/check.jpgTkTG3 AĬGP;JTQ5*b E)Q4 D7h6H%CCB1Q=&nݯ:Vﻷ^i@|4k#(0 `Zu@/lungڦ}=w @ݔp5 @ "@ "H@ !2@ #( @ᠠ7  57!@ 0\@@D""R"2"r""HHHHHHd 2!2%2#2'2BBˆ‰ !H 2CM(P WiQ@@T**R*2*r*"JJJJJHe22222RBB¨©"H)2Zep"L&&P&0&p& $`aecg2LL̘̙LP0p C`HR!gV_m6@90\m E"""""r DDĸĹ\..S.3.s.#W+++++8#9 PKRQEQ@E"EQD%EQBe2EQFT EQ%Sm6hl:hmp:u:;9;Ngp5]Tzl&U]g9ЃjF*VU ;8 j)wVkuWF=_93|n^~3?\Pq2ĭJu2~> ~gaF;.`SM'8YȨ9s.$$^c\lZ~m~}g/9E_9YxU/|_Ï(W7[Zq;midz6]]yCe^gӥKx;>ұp݂6{Mi xŭd=hypM eKٿ\yZC g{Gՙu}ݴ؅ȃ[:l^p_i#Ao3lrSLU}Kw<^z~&JMzSMgn|m+y͇85v>mϟ[~}qSc2ĺWLIʻeq^N#8|ߝuĒiG jk% 񽉽ZGv=N;gwNZnX]A zXФo,[k}CucY>OZiSe~^Wĕ>17Í]yF۞sLiKyË2̍C}ke⓶,vk]_N2=%g|2OK6݃,\z&\denc2'6.~يCk,׾e7.뚝[;{N ^tn~sM1Cg?l%YӯZ}DKul7C׬G j7FUM]w.IxtJ艿 "sU- c7D|q+ԓ#*׶(hSzgVL{-+wBɿ{⠶e1,u$׌3hlHx}5}buI<8qhn5.'K\5̋Ӈ^oTJ2xv[77/BUcIpÔf_i7+xsgwSUwz;|߀zc69[{{uy'rWyS&杉NQ:uKO;wgE1^>56.C#3/x{ߣe Hx]zPzutonyΪH/MzYv}7iíf́9kƯ-~X9*Zs/oG֧]yկW7C;lTE~mJY3$'G3[x4kÐPK&9E`P<EPUB/img/check.gifEmLU ffvՑǜ.BſCVƥXjcpE]K& d3J[ nwO96KJӏzywvܢY+  @C`QX+`Cp 8^ݲ?zWoI+M:\Tz(|q)ߥW7ܸ'ܜٜ zӎg9)}_}/_~eujx>8VowMgkinWQ?PzݫRk_ O&20m#S'&q's[vԧ?i\gbό;w)>in,6i˅Kh[(^'^1nAUe:vyf-0lֲQy%[W9oW:>g]wfcYYgv4vΥGOn(y.^&ea}UI}9lޕ#cgk5m͘?-bHm[jyif?k&?֒S']If 0PK(qXSAp EPUB/package.opfVr6>Oǚc'HLm78rP7)knC%HIF4 H] %''qT&|o?Gh)[9G`-/#BbNy/{8*t)/J,aP),EB <@bO)N@/3*B7pp0.[b/\YIa <4 (i a$pmŸǐә}eU8xS ]$J8"%I-,,ao7QĬp oɌZbuކ; A.GޮCFp2r^pn{|%kC1yYŭRcŭ MZ3/P^08?RܷS]7c'MPK &9E META-INF/PK&9E\ˬMETA-INF/container.xmlUA 0E=Eѝkz1j0 M*z{JͣNCV/װi gLxNƁ`0LvF"q+n쉳ycf>GS(A$w>PzFuce|;:*Ze~F10O9.?"c<)^PK &9Eoa,mimetypePK (qXSA:EPUB/PK voXS A]EPUB/xhtml/PKvoXS:EPUB/xhtml/nav.xhtmlPKtoXSf#EPUB/xhtml/content-images-001.xhtmlPK nXS AEPUB/css/PK&9EnCeEPUB/css/math.cssPK&9E5EPUB/css/base.cssPK %qXS AEPUB/img/PK &9E FEPUB/img/check.pngPK&9E%&e uEPUB/img/check.jpgPK&9E`P<nEPUB/img/check.gifPK(qXSAp  EPUB/package.opfPK &9E A$META-INF/PK&9E\ˬ$META-INF/container.xmlPK%pandoc-3.1.3/test/epub/wasteland.epub0000644000000000000000000006236007346545000015733 0ustar0000000000000000PK i(@oa,mimetypeapplication/epub+zipPK <\R META-INF/PKi(@META-INF/container.xmlU;n0DkĶD Q$ j%v JۇIO9y%oZphg ~۵N8gZU9YV6'øP2ģm!3<;]ծ"yR -:b>[x?oS<6'PUFuF10m-S)/\gV>uPK 6yXSEPUB/PKҩCSX?*"OEPUB/wasteland-content.xhtml\ks7s[eILl˱veו jf0hs>$PJ%ht> "Wn+_vʔKm9}=za8Z<ܺ`߭>U6UxV\1\F?txΦP6LUcK6, cqvF6ʖJU2ejjLP6ϭ:S[ߔT~MMdXp?xp_wOW^w_-f>YLŇWfg~V{E ڂi639Zl)6M堢nT.8 Uw?n>ڗ]ʵ. t8ƵfժUGWk>Lom ;r=.,Xy]HzǘuGItֽPȻG{iDV56NURw&ĵd[j\дM?:iZ&28|1[SSz n,im]G~VsmfTS9Uk[?͖М0U:uHHט4A 4USٖlm xښT<"YWjHɮHwADkgKL0j27fz0LԩيπuTB2g›n2JL]7+V~q0~Ji17.[_@RoUԊۥKo!(D‰p՗ilIsEHimuI15]$Y4D): lO: ]'Y]GMDs쬃,Vֹ U%O*7#8Y6jRS4P}1j 9հr9TVDnR{(k-,-v=wm<ƁhpdgXx V7[#ePdλ{ˏk@Ќo0$3Cx˽ǃѧhprnbT_Ɣlkak̩՜ǥ.rbK9Os㫃>}' 豆͵>bBtS2Ap89j3mk`r0V9UF_a\9i-k&:txJq)z ɭ ~% \K J–I${D0'{+aѧIVb{7ûy>Y{S6\U[0[_G JIRq&% Li"H,dcXFC9oQW*Rg7RUyD ,!̋!qƸ]sŭ)9sb+g0jWǂy#P oeK M}/N=[ր\cN& FOou^!.ISrr_=[b!f+s%lC9Pu]2w$,ߏ|E&B3Eo,Jdlch܆8u5g1~CS]B90 *щk *fi#r }aJFf8Ϙ!#VH[_%쇊ƒ{ ܹ5 ܘ|2Q po[CfѰTϛ{ ş-mwdkl/"?Ŀ.H tHY,@#Ui}' S73cT uSaL4(~q6O3\boȚ@4gjKD-z@}-2,`fVjhۗ2B[J/5mʇJ~;˜7 >y4\7nLaV\͆aIOX2C#1z#|ıi灾 o 7Uq7)>6!?>6mWYki{o'Fh4F3-e.([Ƿw/L `; dyݥvJrR-i3'`+fntC5B\@?f^l_jLG=Dݽ^_UP~xz2Ggg?TU&x'IVC{cWDg ]]Z|NTKi޻{ik9ejic\1 |!QWG51I ΄i5EO{U1CP Sߊ)3Z\!qn|k#.װr*) /fBg$ miJGq.'q1J_33E_&@& KUIj` X \vh/v2ņZxR3ϻIEF#gVͼv[,I FZN=ӨTD0 n1 SB~a5lS6\ʰ%Tz6RqE֑䉰nv[-ڞgXG;2hPF';?Q\,yӵoKCHTublm>v4 gAxV"K[ Mtb\pAG3]j!/=4xCjf9t12fur)qkrj#vaȾO2Xzy~ uFk2aThgpgV1Y(bzM`&gN u\=1+P6t]-ȃt>"=R^TJ m~JVy4qϖ Q&q_חI{nÄ3W#V. wS 92hW 8IWT-b=lQt jqP 'F>n#(oVoU5Y57mr:[SGM&`e+,eKJJշ$4eQ??v0oXX9id{* RߤHe}`9 b& r:W2d}eօnOѐ}0=oٜ3iRFo1Ć/:Y&|{#3*mfN[~P󯫝kszP"zgB$TmG\k8Uo ?3`wWdžulc\o@ zc ۊ?tKKz]lw*ԟEѺnuyn߃wo@6^؃o{_6-o%jUa˄'!`bu?/瓣ó#u|~ΏO? 0t ÅNa P`-MXBg^ncH&KPilS27t_" {6m& SB!@A">I-$! 7 Fxӈ3宇!Yt^sޙ;/(ͯ` rҒ5" []/]:uwpoz՗Tl:`UА&f&Q>ZƯ眛4[ 2;=\x"nkqr{-W2Znled !@w4%2#=;(|ncWm8O mT5Տ% 4Oj~ͺXm`ԳqPPė*-CO>Qz]w/dlIH0ty;Yn~xy eVvf XfftTj=6xK5L^DUcH9#Q ?i._kVI.Lӏ<z/#Rd nr.ym=OD{! ;^ v Y4F=Y_ 7JF3ȳLxꀃ{Z}cmcQY%ϳk,Lv9Diz)m:X]BjWC@Q e@/Эj,z xw9:\54#85ڕ}[cFi Q{FUWVFvI Y0$Q7qdG|W* _6ȪĀߴ@/'R6~_%K`@.6 ĭ*STO|,i`$U~\=y/Ac_%>:vF*Md* 2)vԂӃpuC&,s  Kp.͈2G!olP3I3aj唜0򲪚:jZp\8n4ʕַIw 4>^r* |-Jg}4m2f#8B yJAp1RB5f2j ;NjJ;?% ⣝f (drix3p'q+B*"k˸Jk]̭uZ0ҙ!y!efسuPK-yXSάw1EPUB/wasteland-nav.xhtml]O0Gh+BDH4&?lPe=:vÏ(:=yr*&⽰Hs3:2Cґ؈g@,,}rDs0mN|1yi{.r2 d*uA %,`pFER4 ؗ#1G 0ݓtnqk 6@p]BV(k9*EVOCL{X|+P81<=#Z57o&dH׍Q v1* "nWl,շf`_qx|1z}>PD<%"!v8vx2gIS {vVQ KC߯-mpA?rUKu6RF;hcm}:QPK6yXS$EPUB/wasteland.ncxN0:v[() 4HE uQcɱвO J+{<$:ۖ 蘌1.r6D:߂6U!c͆ . 59<=9f&F_l>r4`:7QPI۲ݖ8h^bL[ORȍv]L<ҵ1k47%iX^V -pл`ŭ `݄H9}ν}Ήyc@ Ƞk, D0%HoIv7'?jp%/jb)oLf`baA$Paʎ^5TT54o3!FN kq_019aXXV388.2F2gZۓldggkȠA>=5ƕׇ'@%;H\Ia*MoGDX:L؝?y=>A>$"nN򌆛{zUvӾĀ!'0 #zB?FqO6dCdž fcK: ?hDJt\K8!: š;ӱ8[yұ.BM~Ř<_'0 <'G3DvG~ EǍfgb\IOK;:O>?a5&4(|BKf :0I?dc1CQ~$,}3MqȌ r5毸$a+N^ x PDF'O ^t ŜND/$:E(p7 X/_<Ӏ/2W+k׸o~O^L+pGG(|ڄN;I~߲!OoY88/xRH'7H888837tqNO'oS?F4=ʯ@z! tF[?|g>^/k?s >^uOzͮ zKjjܿ(Tn>S-M6]w~:}{'GŸ7ϘgӲF/,F/{FתBpq1s!@\Wː\R\V\X.9.S.Wa⿭?$v A'f*'}UW.rW{oY:ۇC68D bA@bтJߞBPؿ\>LLrLfLrg2e2aگvLtEk79M" O9>p \]U:3qض} I>1lnLUУfz]nݲgxp~^ 7OϱS`x':@ f'$ɀA  d\A P8 (t*h۠6P4 @_  P1Y (## xc 'Bb3143t0D`0v U.d&tJ(SE0D)l/)\,%N*'B!4̈2"Eq;bbbbbމ ?_8$Aȑx$.7O%E%eCߤnJD!P_DQZBZt JOLgY9Ygً-o`rr1rrCO(0)N)\SA2 ~ȫaEEmE5Q%F%RuFʵʯUUTTZT>v0`ZZ]-u:AFFƦfEN:$k:::E:QPE3{ںa Nїѯ_424(3??qaÞ^0DzV)7V5&7659kn 657%9a0'1ZXFl&fR#GYBZZ3X[Zg[ٴٶ/B3__zN88᎝NNN4ΦY.]κݾ~TSZMZMCC:í#葻uwOXL<}fltqr)7ӛ33^~?6>lť7ko7?~u)=9 x@\T.o(/##okj}QxУǒ.dמwb%$?2aW^X 3KC屸{G*$oؑ0DN9ֱَP4ػ$)|$. hqlzh*B^b݅a[2|޺ GZlv;էK7B+.;( *F؂މ[ JG# 3YɾAEXh0ep LfOk6=Z(,:9?{B^^<Äd ;gOwkXs& H=d]m RhA D,?S=a;WqsIr,c C1s cz-o+kVBIƓ0 z(T1bn4D/+U tu.<2o=0"$á -\mjNĤZ9 qH'ڹMv&f30 Xy`&Yl[!>&M!$f]mĥ$ޥ-T^Yvsʷ/+k1^Ktf/$gC+izks9P@<EnWb" ۪h].*~L˹EOLff<2Z7f5t {ߥ#t =hy0!/3A<٦ 몡+;2\#$K(@bf).ܟ6GUpvNޣ_oL^wR.%d^Җvi<^wYQXТ\H<'?>rrɦ4t6 ]5+Tc؂kM>u:m XDv53lHDZh&s}c(9Mz,ceԕ[౫l')ƚ_wyIHbg  mCjBwne3ѪRTwPiB`̊}svSܶn~m:^q_+ܢcJ5Zh֗8 @E)'Pyi'mo;q7W> FȍK3tʕi3l߽Xn> ܷDQ#lo +l(j+Gebߋf|oҲQͮ h4yI*!Xߥ@ư* ߴef(q^7 c uBl[x+h*BÀV֯fp)ˮ/_O_Jfqr''޷KmTvesɝ v8ͮci\_?vyKpJ`IƼv}6KNehpL"BAE-fH7.8-+j*3[3Q^i|69+,+ݳo/)TVͧ IH.ou瘷.1Me.ؖw+]'ԥ/j("{qռ3l{(KSM#81)B|[QZ<={4!w}m|ŐMD] V*s*PpaT5*o!{qiyC,a(!`1tH Zn4,U+vR#0 Q|&P{!n.Xju2pʒqp̑gX ) |Z/ oj]z]HL ] DWdDžfUhǮ4Nh"&Z^:b*s<gn=bLJ  :f\畦ߵvifz~4= ".PmpM9BԫA:Ί-^{f # ~kg=%f{@1[[9xK)7cBI3ҷl"/z* 䘃_+Qݐ(IEGdIT`R)I[Z]Vn2@2nfx#R4."bY@0d'|jQ!q2ZC|㫹g/"P]n͓]p>v)FB 5jv{WEm?܋3H=t]3LG$ä.};z78K(策M:hf3bk2&bawlO `9kz?8馴oy4WkS|%C4 9XR=2Rp2ue%t#yC.q L|󤰥t i , .rC8B>tɤ OdGRiULj+W'S2oEj{4^ֈ->up`Ч{pʳ'Yk;>8 sf؂C#\ ='O) hxr񺇲詼O u`juc0)O"~Cμ,Uɾe'Yuk8-6%Lޛq\OwR=y/jr^;*29i;nm~)2ޤe7GQ=0IOJ} U,4hzq=p&3G>5?nm˰7͊FƱN{q\Z@3/c=+^(k%($8ѪzNoW5z{~x櫻O,-th+wȺwѫMĵJsDhk7* jg^ħyuAQ6[tM;w_TZzGҔ#[+zrg8OQnyqmYJi2#jG.[5f&9(3eWRYщ7"KbnpudoXJgRW]z,J?>XSjmz{VNү/;̀+msV{I1?EQb+{ z7S.cwKD}k[p*_wy^ \O=5NZ\wp#w'{|F_*7Xq6#'22S=cǨ2O+WjtZܮ !NiEW_" rL1Ejw,ݤ`RMJCFJ \fӎS_q b׈̓ގ653(d,h9fUc%,/Yf7Z".RX%i F܃O!+|j]GD@0C/ FgG"Gشo?fag!jKܖav E:׾tRV0d2ɮq^r䊍yUFlOb!XxO0dФr2{effQ$^ؘC?@v^z^>ٝgN |ҫtu,؍>z{3(ً 6?Ei#a[&uvIox]2l`'ݞ݄1zi|ԶQmb#~KGBN(L͹b͇'kz}S0oIjO j2.ɵ.ho}ZZLO/ig-u5R*`s[+O9l?q?>h*ds\ Jv.B6f$v+XUnp̼Se5IvN`5녌7rF;yfy\6õB{M̞•C3G *{ڒ0~G GṆ9 ˪7Ϋ?JBK|_frBk8\j(XqK+oR=1y P^j9F)#K+5{/[Kɋ Jq [D;f–9J]akF:jUc컅3 qo,f.]vgpƳ- %RqQōxZϝ XTMHFXڶӌvEQt|uS'9g)pSno&ae!3Li%Qh]gk5žavl3G*Ql\.+wWkfS[YR94wPGUO|HCn2L)c,#:^zWE:_$5O+ W7=1F[ )TO|U3+|K~[:nC*∝Kh=J츷Gu Mk"Y!a|ij< ˣe}85KJ[i+\%+YS=ĻalxUO9d>WS1'a'킍iG٪Y[ O .R8]~( X'urAW#q# +9dI|2ۓI*IFN'Y/v, b# S $\Qn㇆xshTurts$ 6.n,{?QJy2|X_5#LZ#sXtBuXh`XS[*veK◿./i(p4M. i"= 4t#*cl~Bg5D3.k»ށђA^_2y+R3bK`ԎD kGft2󜦞@e8m]6G5 R},|Y KN8˃s?rwH,]/wy4,Pl0 >[])e#>CURC5fq[;aa1'TVeNZ0̡ЉJyR@tŠPCR1VpZK9kepДܼ'USm[m Š;y-Uxctwf 6S2yE"pdCkA[Y?9#mOrZ"ڍBfWx,t>A߆f÷M֭fcn#-AÚ=}xnc 3iFl#$!Qm^[a.L_5x2*\ ,q^6|acS ,ϵO(PpdԀTDM`?7.u]v+MDuK,]vg͵&Tmjdopad{`QYD|lS^5&74QV~B}<@^Zظa۞0h^V~(q%l^͜"Wj5{-ia-"$0bcZc6^u6C1ʭ-Oe@}HAjE,_>QU#ho/:%S1{`hm=.U"/Hj$dg/,g~O>I)&%SH jxo:-&ȗr~{}vPI90 %7.7t/L&L&M)aOmK=`(x'~B/QpYuꨪvcKb9w=W]j$5bXwgK*6lK{ Xݏ"\" tlO;sXۙtSOAJAN?c$S7~66* h/m0,ZmN{Iw}JpYQ^z8zc{0E=z}'HN}tX9bW2]+"S{pxg^k*mV+ٔe1MX%eܧ!gj'ߪQ*쇼 jRX<hEh8ca^^HPcc/{ߔGЬH,zG ('œFȓZ½!nXϔty5u6_u[nƉ f3=Z){-{6,Hedn#j|eN'.}u<UQ^, ɱbR=;gUvkS pAms ɱR,{^ȓ{+L ^Scњش(؂ ^Aa%-:eqct5V6W-L>=d{}YV'qr-:0 gƓ; jmw,lbhmFT?K)LC&f0@m ' @Gب쓙Ϯ j ]ZvdT%-506w*RKWFGEߊb-p8}GFtedԬBr[F.ΰ-i7cfN;pD=ƽIʕc5hb ㅙW UX':ϼwI3(UHeL6Mg Qזs1]bϪ?seb 0'-Ys ;SY1,tQ# zd CfJsʄqbl\- 4KL FjkXhXzhL^ɪ_c lJ\bn! ѢȚD..mAxFZB')tjB{w_jzNU~ֈpVGB:^D7DJ^RY`2W~ QFL0"VC'T@8LJv ,mm0˃B=/^JÖH3:9SJ^JrEYl?)V*QJX&R9Y :/ *7 uJ^W14̧xrHD,U(*i]3̴|7:ߙk< ]; -y,3${my8\L(.|IXkAF3 k^%v2wQ4ȑ%J)鵉[7'1c8AkE*30P|/$ ];RSt~'fTAݶ|,9Y^DAkOCRtkO =l qwI_Ri˹hM |qHTm( w֟=&* }\ oU{E)V7^-RWGA ?WY8-tz߱H`qSUR3^P5L1DžQA b5cn$VZ2q]@hzx2W7.4a4TJI$tYl#BZ^QjbỽbۘW;;*{qb3Enzz`{jHf2&jK#O} :!lW4x'4_2(d,'|d4½^`DA(XG)OA6eݯiй,# gƄ魄#9'_ӯI!Fx|up&44 gJ*u`3Օ+?5N;h#Qoьss:e= =7߅pWR)?=ˉ7fMn-b75wHO͉{ㅸ3X,5߉r[z13ȐJSx͎ղ1/fȡ֎LUJ)#a`kγN_ֻ9{$l4RAHmX L:03j[KCԣ4I9լn4܄72fBt'0t?*_groGnQ9pXUgO(Wڭ@rKFsBޢ Wvf!Q mh EN ,Ekw(-LwZqR*]I'`lCXACFħ7{BpCq$a,f<ɪpf*&_]`ꨎgFߪ[_}/1Yvy,1SX1on 3r ׄGz=1s\cxV" j|OHPUF{Rºa(k\q̐P],ƕv;S0`߰5W̜q+$]-DtL mz0~?[H]I彌YZLXJHۂVR89M*ޡ*&%#{Mbڤ(^ 1xbi=$𱮸A5KPKݍ-@6EPUB/wasteland-night.cssA 0E9Eh Xt'h0J5#H)Ż7. -tg*}rtPvRU-х;4 84kdSa])*%] d#}1p J :tf \zE둉Bk 9riu(j~8>9@hN7r--Gf_KPee5{fAN2 R Ֆh=#KKj3.~4GF{D?cw TA kd` wS7VV NP̭EyP!=Sl q{WʰVpzgWChJvga5l!%瞰1xaYBu87h¯ b_:JlN/~V8x#:Gȇ59X' 'PK i(@oa,mimetypePK <\R A:META-INF/PKi(@aMETA-INF/container.xmlPK 6yXSAIEPUB/PKҩCSX?*"OlEPUB/wasteland-content.xhtmlPK-yXSάw1/EPUB/wasteland-nav.xhtmlPK6yXS$ EPUB/wasteland.ncxPK`2@ɜsEPUB/wasteland.cssPK]R)<@!EPUB/wasteland-cover.jpgPKݍ-@6]EPUB/wasteland-night.cssPKe2@hs1=^EPUB/wasteland.opfPK bpandoc-3.1.3/test/epub/wasteland.native0000644000000000000000000042066207346545000016271 0ustar0000000000000000[ Para [ Image ( "" , [] , [] ) [] ( "wasteland-cover.jpg" , "" ) ] , Para [ Span ( "wasteland-content.xhtml" , [] , [] ) [] ] , Div ( "wasteland-content.xhtml#frontmatter" , [ "section" , "frontmatter" ] , [] ) [] , Div ( "wasteland-content.xhtml#bodymatter" , [ "section" , "bodymatter" ] , [] ) [ Div ( "wasteland-content.xhtml#ch1" , [ "section" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Str "I." , Space , Str "THE" , Space , Str "BURIAL" , Space , Str "OF" , Space , Str "THE" , Space , Str "DEAD" ] , Div ( "" , [ "linegroup" ] , [] ) [ Div ( "" , [] , [] ) [ Plain [ Str "April" , Space , Str "is" , Space , Str "the" , Space , Str "cruellest" , Space , Str "month," , Space , Str "breeding" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Lilacs" , Space , Str "out" , Space , Str "of" , Space , Str "the" , Space , Str "dead" , Space , Str "land," , Space , Str "mixing" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Memory" , Space , Str "and" , Space , Str "desire," , Space , Str "stirring" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Dull" , Space , Str "roots" , Space , Str "with" , Space , Str "spring" , Space , Str "rain." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Winter" , Space , Str "kept" , Space , Str "us" , Space , Str "warm," , Space , Str "covering" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Earth" , Space , Str "in" , Space , Str "forgetful" , Space , Str "snow," , Space , Str "feeding" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "A" , Space , Str "little" , Space , Str "life" , Space , Str "with" , Space , Str "dried" , Space , Str "tubers." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Summer" , Space , Str "surprised" , Space , Str "us," , Space , Str "coming" , Space , Str "over" , Space , Str "the" , Space , Str "Starnbergersee" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "With" , Space , Str "a" , Space , Str "shower" , Space , Str "of" , Space , Str "rain;" , Space , Str "we" , Space , Str "stopped" , Space , Str "in" , Space , Str "the" , Space , Str "colonnade," ] ] , Div ( "" , [] , [] ) [ Plain [ Str "And" , Space , Str "went" , Space , Str "on" , Space , Str "in" , Space , Str "sunlight," , Space , Str "into" , Space , Str "the" , Space , Str "Hofgarten," , Span ( "" , [ "lnum" ] , [] ) [ Str "10" ] ] ] , Div ( "" , [] , [] ) [ Plain [ Str "And" , Space , Str "drank" , Space , Str "coffee," , Space , Str "and" , Space , Str "talked" , Space , Str "for" , Space , Str "an" , Space , Str "hour." ] ] , Div ( "" , [] , [ ( "lang" , "de" ) ] ) [ Plain [ Str "Bin" , Space , Str "gar" , Space , Str "keine" , Space , Str "Russin," , Space , Str "stamm'" , Space , Str "aus" , Space , Str "Litauen," , Space , Str "echt" , SoftBreak , Str "deutsch." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "And" , Space , Str "when" , Space , Str "we" , Space , Str "were" , Space , Str "children," , Space , Str "staying" , Space , Str "at" , Space , Str "the" , Space , Str "archduke's," ] ] , Div ( "" , [] , [] ) [ Plain [ Str "My" , Space , Str "cousin's," , Space , Str "he" , Space , Str "took" , Space , Str "me" , Space , Str "out" , Space , Str "on" , Space , Str "a" , Space , Str "sled," ] ] , Div ( "" , [] , [] ) [ Plain [ Str "And" , Space , Str "I" , Space , Str "was" , Space , Str "frightened." , Space , Str "He" , Space , Str "said," , Space , Str "Marie," ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Marie," , Space , Str "hold" , Space , Str "on" , Space , Str "tight." , Space , Str "And" , Space , Str "down" , Space , Str "we" , Space , Str "went." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "In" , Space , Str "the" , Space , Str "mountains," , Space , Str "there" , Space , Str "you" , Space , Str "feel" , Space , Str "free." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "I" , Space , Str "read," , Space , Str "much" , Space , Str "of" , Space , Str "the" , Space , Str "night," , Space , Str "and" , Space , Str "go" , Space , Str "south" , Space , Str "in" , Space , Str "the" , Space , Str "winter." ] ] ] , Div ( "" , [ "linegroup" ] , [] ) [ Div ( "" , [] , [] ) [ Plain [ Str "What" , Space , Str "are" , Space , Str "the" , Space , Str "roots" , Space , Str "that" , Space , Str "clutch," , Space , Str "what" , Space , Str "branches" , Space , Str "grow" ] ] , Div ( "wasteland-content.xhtml#ln20" , [] , [] ) [ Plain [ Str "Out" , Space , Str "of" , Space , Str "this" , Space , Str "stony" , Space , Str "rubbish?" , Space , Str "Son" , Space , Str "of" , Space , Str "man," , Note [ Para [ Link ( "" , [] , [] ) [ Str "Line" , Space , Str "20." ] ( "#wasteland-content.xhtml#ln20" , "" ) , Space , Str "Cf." , Space , Str "Ezekiel" , Space , Str "2:1." ] ] , Span ( "" , [ "lnum" ] , [] ) [ Str "20" ] ] ] , Div ( "" , [] , [] ) [ Plain [ Str "You" , Space , Str "cannot" , Space , Str "say," , Space , Str "or" , Space , Str "guess," , Space , Str "for" , Space , Str "you" , Space , Str "know" , Space , Str "only" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "A" , Space , Str "heap" , Space , Str "of" , Space , Str "broken" , Space , Str "images," , Space , Str "where" , Space , Str "the" , Space , Str "sun" , Space , Str "beats," ] ] , Div ( "wasteland-content.xhtml#ln23" , [] , [] ) [ Plain [ Str "And" , Space , Str "the" , Space , Str "dead" , Space , Str "tree" , Space , Str "gives" , Space , Str "no" , Space , Str "shelter," , Space , Str "the" , Space , Str "cricket" , Space , Str "no" , Space , Str "relief," , Note [ Para [ Link ( "" , [] , [] ) [ Str "23." ] ( "#wasteland-content.xhtml#ln23" , "" ) , Space , Str "Cf." , Space , Str "Ecclesiastes" , Space , Str "12:5." ] ] ] ] , Div ( "" , [] , [] ) [ Plain [ Str "And" , Space , Str "the" , Space , Str "dry" , Space , Str "stone" , Space , Str "no" , Space , Str "sound" , Space , Str "of" , Space , Str "water." , Space , Str "Only" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "There" , Space , Str "is" , Space , Str "shadow" , Space , Str "under" , Space , Str "this" , Space , Str "red" , Space , Str "rock," ] ] , Div ( "" , [] , [] ) [ Plain [ Str "(Come" , Space , Str "in" , Space , Str "under" , Space , Str "the" , Space , Str "shadow" , Space , Str "of" , Space , Str "this" , Space , Str "red" , Space , Str "rock)," ] ] , Div ( "" , [] , [] ) [ Plain [ Str "And" , Space , Str "I" , Space , Str "will" , Space , Str "show" , Space , Str "you" , Space , Str "something" , Space , Str "different" , Space , Str "from" , Space , Str "either" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Your" , Space , Str "shadow" , Space , Str "at" , Space , Str "morning" , Space , Str "striding" , Space , Str "behind" , Space , Str "you" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Or" , Space , Str "your" , Space , Str "shadow" , Space , Str "at" , Space , Str "evening" , Space , Str "rising" , Space , Str "to" , Space , Str "meet" , Space , Str "you;" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "I" , Space , Str "will" , Space , Str "show" , Space , Str "you" , Space , Str "fear" , Space , Str "in" , Space , Str "a" , Space , Str "handful" , Space , Str "of" , Space , Str "dust." , Span ( "" , [ "lnum" ] , [] ) [ Str "30" ] ] ] , BlockQuote [ Div ( "" , [] , [] ) [ Div ( "wasteland-content.xhtml#ln31" , [] , [] ) [ Plain [ Str "Frisch" , Space , Str "weht" , Space , Str "der" , Space , Str "Wind" , Note [ Para [ Link ( "" , [] , [] ) [ Str "31." ] ( "#wasteland-content.xhtml#ln31" , "" ) , Space , Str "V." , Space , Str "Tristan" , Space , Str "und" , Space , Str "Isolde," , Space , Str "i," , Space , Str "verses" , Space , Str "5-8." ] ] ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Der" , Space , Str "Heimat" , Space , Str "zu" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Mein" , Space , Str "Irisch" , Space , Str "Kind," ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Wo" , Space , Str "weilest" , Space , Str "du?" ] ] ] ] , Div ( "" , [] , [] ) [ Plain [ Str "\"You" , Space , Str "gave" , Space , Str "me" , Space , Str "hyacinths" , Space , Str "first" , Space , Str "a" , Space , Str "year" , Space , Str "ago;" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "\"They" , Space , Str "called" , Space , Str "me" , Space , Str "the" , Space , Str "hyacinth" , Space , Str "girl.\"" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "\8213Yet" , Space , Str "when" , Space , Str "we" , Space , Str "came" , Space , Str "back," , Space , Str "late," , Space , Str "from" , Space , Str "the" , Space , Str "Hyacinth" , SoftBreak , Str "garden," ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Your" , Space , Str "arms" , Space , Str "full," , Space , Str "and" , Space , Str "your" , Space , Str "hair" , Space , Str "wet," , Space , Str "I" , Space , Str "could" , Space , Str "not" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Speak," , Space , Str "and" , Space , Str "my" , Space , Str "eyes" , Space , Str "failed," , Space , Str "I" , Space , Str "was" , Space , Str "neither" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Living" , Space , Str "nor" , Space , Str "dead," , Space , Str "and" , Space , Str "I" , Space , Str "knew" , Space , Str "nothing," , Span ( "" , [ "lnum" ] , [] ) [ Str "40" ] ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Looking" , Space , Str "into" , Space , Str "the" , Space , Str "heart" , Space , Str "of" , Space , Str "light," , Space , Str "the" , Space , Str "silence." ] ] , Div ( "wasteland-content.xhtml#ln42" , [] , [ ( "lang" , "de" ) ] ) [ Plain [ Emph [ Str "Od'" , Space , Str "und" , Space , Str "leer" , Space , Str "das" , Space , Str "Meer" ] , Str "." , Note [ Para [ Link ( "" , [] , [] ) [ Str "42." ] ( "#wasteland-content.xhtml#ln42" , "" ) , Space , Str "Id." , Space , Str "iii," , Space , Str "verse" , Space , Str "24." ] ] ] ] ] , Div ( "" , [ "linegroup" ] , [] ) [ Div ( "" , [] , [] ) [ Plain [ Str "Madame" , Space , Str "Sosostris," , Space , Str "famous" , Space , Str "clairvoyante," ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Had" , Space , Str "a" , Space , Str "bad" , Space , Str "cold," , Space , Str "nevertheless" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Is" , Space , Str "known" , Space , Str "to" , Space , Str "be" , Space , Str "the" , Space , Str "wisest" , Space , Str "woman" , Space , Str "in" , Space , Str "Europe," ] ] , Div ( "wasteland-content.xhtml#ln46" , [] , [] ) [ Plain [ Str "With" , Space , Str "a" , Space , Str "wicked" , Space , Str "pack" , Space , Str "of" , Space , Str "cards." , Space , Str "Here," , Space , Str "said" , Space , Str "she," , Note [ Para [ Link ( "" , [] , [] ) [ Str "46." ] ( "#wasteland-content.xhtml#ln46" , "" ) , Space , Str "I" , Space , Str "am" , Space , Str "not" , Space , Str "familiar" , Space , Str "with" , Space , Str "the" , Space , Str "exact" , Space , Str "constitution" , Space , Str "of" , Space , Str "the" , Space , Str "Tarot" , Space , Str "pack" , Space , Str "of" , SoftBreak , Str "cards," , Space , Str "from" , Space , Str "which" , Space , Str "I" , Space , Str "have" , Space , Str "obviously" , Space , Str "departed" , Space , Str "to" , Space , Str "suit" , Space , Str "my" , Space , Str "own" , Space , Str "convenience." , SoftBreak , Str "The" , Space , Str "Hanged" , Space , Str "Man," , Space , Str "a" , Space , Str "member" , Space , Str "of" , Space , Str "the" , Space , Str "traditional" , Space , Str "pack," , Space , Str "fits" , Space , Str "my" , Space , Str "purpose" , Space , Str "in" , Space , Str "two" , SoftBreak , Str "ways:" , Space , Str "because" , Space , Str "he" , Space , Str "is" , Space , Str "associated" , Space , Str "in" , Space , Str "my" , Space , Str "mind" , Space , Str "with" , Space , Str "the" , Space , Str "Hanged" , Space , Str "God" , Space , Str "of" , Space , Str "Frazer," , SoftBreak , Str "and" , Space , Str "because" , Space , Str "I" , Space , Str "associate" , Space , Str "him" , Space , Str "with" , Space , Str "the" , Space , Str "hooded" , Space , Str "figure" , Space , Str "in" , Space , Str "the" , Space , Str "passage" , Space , Str "of" , Space , Str "the" , SoftBreak , Str "disciples" , Space , Str "to" , Space , Str "Emmaus" , Space , Str "in" , Space , Str "Part" , Space , Str "V." , Space , Str "The" , Space , Str "Phoenician" , Space , Str "Sailor" , Space , Str "and" , Space , Str "the" , Space , Str "Merchant" , SoftBreak , Str "appear" , Space , Str "later;" , Space , Str "also" , Space , Str "the" , Space , Str "\"crowds" , Space , Str "of" , Space , Str "people,\"" , Space , Str "and" , Space , Str "Death" , Space , Str "by" , Space , Str "Water" , Space , Str "is" , SoftBreak , Str "executed" , Space , Str "in" , Space , Str "Part" , Space , Str "IV." , Space , Str "The" , Space , Str "Man" , Space , Str "with" , Space , Str "Three" , Space , Str "Staves" , Space , Str "(an" , Space , Str "authentic" , Space , Str "member" , Space , Str "of" , SoftBreak , Str "the" , Space , Str "Tarot" , Space , Str "pack)" , Space , Str "I" , Space , Str "associate," , Space , Str "quite" , Space , Str "arbitrarily," , Space , Str "with" , Space , Str "the" , Space , Str "Fisher" , Space , Str "King" , SoftBreak , Str "himself." ] ] ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Is" , Space , Str "your" , Space , Str "card," , Space , Str "the" , Space , Str "drowned" , Space , Str "Phoenician" , Space , Str "Sailor," ] ] , Div ( "" , [] , [] ) [ Plain [ Str "(Those" , Space , Str "are" , Space , Str "pearls" , Space , Str "that" , Space , Str "were" , Space , Str "his" , Space , Str "eyes." , Space , Str "Look!)" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Here" , Space , Str "is" , Space , Str "Belladonna," , Space , Str "the" , Space , Str "Lady" , Space , Str "of" , Space , Str "the" , Space , Str "Rocks," ] ] , Div ( "" , [] , [] ) [ Plain [ Str "The" , Space , Str "lady" , Space , Str "of" , Space , Str "situations." , Span ( "" , [ "lnum" ] , [] ) [ Str "50" ] ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Here" , Space , Str "is" , Space , Str "the" , Space , Str "man" , Space , Str "with" , Space , Str "three" , Space , Str "staves," , Space , Str "and" , Space , Str "here" , Space , Str "the" , Space , Str "Wheel," ] ] , Div ( "" , [] , [] ) [ Plain [ Str "And" , Space , Str "here" , Space , Str "is" , Space , Str "the" , Space , Str "one-eyed" , Space , Str "merchant," , Space , Str "and" , Space , Str "this" , Space , Str "card," ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Which" , Space , Str "is" , Space , Str "blank," , Space , Str "is" , Space , Str "something" , Space , Str "he" , Space , Str "carries" , Space , Str "on" , Space , Str "his" , Space , Str "back," ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Which" , Space , Str "I" , Space , Str "am" , Space , Str "forbidden" , Space , Str "to" , Space , Str "see." , Space , Str "I" , Space , Str "do" , Space , Str "not" , Space , Str "find" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "The" , Space , Str "Hanged" , Space , Str "Man." , Space , Str "Fear" , Space , Str "death" , Space , Str "by" , Space , Str "water." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "I" , Space , Str "see" , Space , Str "crowds" , Space , Str "of" , Space , Str "people," , Space , Str "walking" , Space , Str "round" , Space , Str "in" , Space , Str "a" , Space , Str "ring." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Thank" , Space , Str "you." , Space , Str "If" , Space , Str "you" , Space , Str "see" , Space , Str "dear" , Space , Str "Mrs." , Space , Str "Equitone," ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Tell" , Space , Str "her" , Space , Str "I" , Space , Str "bring" , Space , Str "the" , Space , Str "horoscope" , Space , Str "myself:" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "One" , Space , Str "must" , Space , Str "be" , Space , Str "so" , Space , Str "careful" , Space , Str "these" , Space , Str "days." ] ] ] , Div ( "" , [ "linegroup" ] , [] ) [ Div ( "wasteland-content.xhtml#ln60" , [] , [] ) [ Plain [ Str "Unreal" , Space , Str "City," , Note [ Para [ Link ( "" , [] , [] ) [ Str "60." ] ( "#wasteland-content.xhtml#ln60" , "" ) , Space , Str "Cf." , Space , Str "Baudelaire:" ] , BlockQuote [ Para [ Str "\"Fourmillante" , Space , Str "cite;," , Space , Str "cite;" , Space , Str "pleine" , Space , Str "de" , Space , Str "reves," , LineBreak , Str "Ou" , Space , Str "le" , Space , Str "spectre" , Space , Str "en" , SoftBreak , Str "plein" , Space , Str "jour" , Space , Str "raccroche" , Space , Str "le" , Space , Str "passant.\"" ] ] ] , Span ( "" , [ "lnum" ] , [] ) [ Str "60" ] ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Under" , Space , Str "the" , Space , Str "brown" , Space , Str "fog" , Space , Str "of" , Space , Str "a" , Space , Str "winter" , Space , Str "dawn," ] ] , Div ( "" , [] , [] ) [ Plain [ Str "A" , Space , Str "crowd" , Space , Str "flowed" , Space , Str "over" , Space , Str "London" , Space , Str "Bridge," , Space , Str "so" , Space , Str "many," ] ] , Div ( "wasteland-content.xhtml#ln63" , [] , [] ) [ Plain [ Str "I" , Space , Str "had" , Space , Str "not" , Space , Str "thought" , Space , Str "death" , Space , Str "had" , Space , Str "undone" , Space , Str "so" , Space , Str "many." , Note [ Para [ Link ( "" , [] , [] ) [ Str "63." ] ( "#wasteland-content.xhtml#ln63" , "" ) , Space , Str "Cf." , Space , Str "Inferno," , Space , Str "iii." , Space , Str "55-7." ] , BlockQuote [ Para [ Str "\"si" , Space , Str "lunga" , Space , Str "tratta" , LineBreak , Str "di" , Space , Str "gente," , Space , Str "ch'io" , Space , Str "non" , Space , Str "avrei" , Space , Str "mai" , Space , Str "creduto" , LineBreak , Str "che" , SoftBreak , Str "morte" , Space , Str "tanta" , Space , Str "n'avesse" , Space , Str "disfatta.\"" ] ] ] ] ] , Div ( "wasteland-content.xhtml#ln64" , [] , [] ) [ Plain [ Str "Sighs," , Space , Str "short" , Space , Str "and" , Space , Str "infrequent," , Space , Str "were" , Space , Str "exhaled," , Note [ Para [ Link ( "" , [] , [] ) [ Str "64." ] ( "#wasteland-content.xhtml#ln64" , "" ) , Space , Str "Cf." , Space , Str "Inferno," , Space , Str "iv." , Space , Str "25-7:" ] , BlockQuote [ Para [ Str "\"Quivi," , Space , Str "secondo" , Space , Str "che" , Space , Str "per" , Space , Str "ascoltahre," , LineBreak , Str "\"non" , Space , Str "avea" , Space , Str "pianto," , Space , Str "ma'" , Space , Str "che" , Space , Str "di" , SoftBreak , Str "sospiri," , LineBreak , Str "\"che" , Space , Str "l'aura" , Space , Str "eterna" , Space , Str "facevan" , Space , Str "tremare.\"" ] ] ] ] ] , Div ( "" , [] , [] ) [ Plain [ Str "And" , Space , Str "each" , Space , Str "man" , Space , Str "fixed" , Space , Str "his" , Space , Str "eyes" , Space , Str "before" , Space , Str "his" , Space , Str "feet." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Flowed" , Space , Str "up" , Space , Str "the" , Space , Str "hill" , Space , Str "and" , Space , Str "down" , Space , Str "King" , Space , Str "William" , Space , Str "Street," ] ] , Div ( "" , [] , [] ) [ Plain [ Str "To" , Space , Str "where" , Space , Str "Saint" , Space , Str "Mary" , Space , Str "Woolnoth" , Space , Str "kept" , Space , Str "the" , Space , Str "hours" ] ] , Div ( "wasteland-content.xhtml#ln68" , [] , [] ) [ Plain [ Str "With" , Space , Str "a" , Space , Str "dead" , Space , Str "sound" , Space , Str "on" , Space , Str "the" , Space , Str "final" , Space , Str "stroke" , Space , Str "of" , Space , Str "nine." , Note [ Para [ Link ( "" , [] , [] ) [ Str "68." ] ( "#wasteland-content.xhtml#ln68" , "" ) , Space , Str "A" , Space , Str "phenomenon" , Space , Str "which" , Space , Str "I" , Space , Str "have" , Space , Str "often" , Space , Str "noticed." ] ] ] ] , Div ( "" , [] , [] ) [ Plain [ Str "There" , Space , Str "I" , Space , Str "saw" , Space , Str "one" , Space , Str "I" , Space , Str "knew," , Space , Str "and" , Space , Str "stopped" , Space , Str "him," , Space , Str "crying" , SoftBreak , Str "\"Stetson!" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "\"You" , Space , Str "who" , Space , Str "were" , Space , Str "with" , Space , Str "me" , Space , Str "in" , Space , Str "the" , Space , Str "ships" , Space , Str "at" , Space , Str "Mylae!" , Span ( "" , [ "lnum" ] , [] ) [ Str "70" ] ] ] , Div ( "" , [] , [] ) [ Plain [ Str "\"That" , Space , Str "corpse" , Space , Str "you" , Space , Str "planted" , Space , Str "last" , Space , Str "year" , Space , Str "in" , Space , Str "your" , Space , Str "garden," ] ] , Div ( "" , [] , [] ) [ Plain [ Str "\"Has" , Space , Str "it" , Space , Str "begun" , Space , Str "to" , Space , Str "sprout?" , Space , Str "Will" , Space , Str "it" , Space , Str "bloom" , Space , Str "this" , Space , Str "year?" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "\"Or" , Space , Str "has" , Space , Str "the" , Space , Str "sudden" , Space , Str "frost" , Space , Str "disturbed" , Space , Str "its" , Space , Str "bed?" ] ] ] , Div ( "" , [ "linegroup" ] , [] ) [ Div ( "wasteland-content.xhtml#ln74" , [] , [] ) [ Plain [ Str "\"Oh" , Space , Str "keep" , Space , Str "the" , Space , Str "Dog" , Space , Str "far" , Space , Str "hence," , Space , Str "that's" , Space , Str "friend" , Space , Str "to" , Space , Str "men," , Note [ Para [ Link ( "" , [] , [] ) [ Str "74." ] ( "#wasteland-content.xhtml#ln74" , "" ) , Space , Str "Cf." , Space , Str "the" , Space , Str "Dirge" , Space , Str "in" , Space , Str "Webster's" , Space , Str "White" , Space , Str "Devil" , Space , Str "." ] ] ] ] , Div ( "" , [] , [] ) [ Plain [ Str "\"Or" , Space , Str "with" , Space , Str "his" , Space , Str "nails" , Space , Str "he'll" , Space , Str "dig" , Space , Str "it" , Space , Str "up" , Space , Str "again!" ] ] , Div ( "wasteland-content.xhtml#ln76" , [] , [] ) [ Plain [ Str "\"You!" , Space , Span ( "" , [] , [ ( "lang" , "fr" ) ] ) [ Str "hypocrite" , Space , Str "lecteur!" , Space , Str "-" , Space , Str "mon" , Space , Str "semblable," , Space , Str "-" , SoftBreak , Str "mon" , Space , Str "frere" ] , Space , Str "!\"" , Note [ Para [ Link ( "" , [] , [] ) [ Str "76." ] ( "#wasteland-content.xhtml#ln76" , "" ) , Space , Str "V." , Space , Str "Baudelaire," , Space , Str "Preface" , Space , Str "to" , Space , Str "Fleurs" , Space , Str "du" , Space , Str "Mal." ] ] ] ] ] ] , Div ( "wasteland-content.xhtml#ch2" , [ "section" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Str "II." , Space , Str "A" , Space , Str "GAME" , Space , Str "OF" , Space , Str "CHESS" ] , Div ( "" , [ "linegroup" ] , [] ) [ Div ( "wasteland-content.xhtml#ln77" , [] , [] ) [ Plain [ Str "The" , Space , Str "Chair" , Space , Str "she" , Space , Str "sat" , Space , Str "in," , Space , Str "like" , Space , Str "a" , Space , Str "burnished" , Space , Str "throne," , Note [ Para [ Link ( "" , [] , [] ) [ Str "77." ] ( "#wasteland-content.xhtml#ln77" , "" ) , Space , Str "Cf." , Space , Str "Antony" , Space , Str "and" , Space , Str "Cleopatra," , Space , Str "II." , Space , Str "ii.," , Space , Str "l." , Space , Str "190." ] ] ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Glowed" , Space , Str "on" , Space , Str "the" , Space , Str "marble," , Space , Str "where" , Space , Str "the" , Space , Str "glass" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Held" , Space , Str "up" , Space , Str "by" , Space , Str "standards" , Space , Str "wrought" , Space , Str "with" , Space , Str "fruited" , Space , Str "vines" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "From" , Space , Str "which" , Space , Str "a" , Space , Str "golden" , Space , Str "Cupidon" , Space , Str "peeped" , Space , Str "out" , Span ( "" , [ "lnum" ] , [] ) [ Str "80" ] ] ] , Div ( "" , [] , [] ) [ Plain [ Str "(Another" , Space , Str "hid" , Space , Str "his" , Space , Str "eyes" , Space , Str "behind" , Space , Str "his" , Space , Str "wing)" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Doubled" , Space , Str "the" , Space , Str "flames" , Space , Str "of" , Space , Str "sevenbranched" , Space , Str "candelabra" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Reflecting" , Space , Str "light" , Space , Str "upon" , Space , Str "the" , Space , Str "table" , Space , Str "as" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "The" , Space , Str "glitter" , Space , Str "of" , Space , Str "her" , Space , Str "jewels" , Space , Str "rose" , Space , Str "to" , Space , Str "meet" , Space , Str "it," ] ] , Div ( "" , [] , [] ) [ Plain [ Str "From" , Space , Str "satin" , Space , Str "cases" , Space , Str "poured" , Space , Str "in" , Space , Str "rich" , Space , Str "profusion;" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "In" , Space , Str "vials" , Space , Str "of" , Space , Str "ivory" , Space , Str "and" , Space , Str "coloured" , Space , Str "glass" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Unstoppered," , Space , Str "lurked" , Space , Str "her" , Space , Str "strange" , Space , Str "synthetic" , Space , Str "perfumes," ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Unguent," , Space , Str "powdered," , Space , Str "or" , Space , Str "liquid" , Space , Str "-" , Space , Str "troubled," , Space , Str "confused" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "And" , Space , Str "drowned" , Space , Str "the" , Space , Str "sense" , Space , Str "in" , Space , Str "odours;" , Space , Str "stirred" , Space , Str "by" , Space , Str "the" , Space , Str "air" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "That" , Space , Str "freshened" , Space , Str "from" , Space , Str "the" , Space , Str "window," , Space , Str "these" , Space , Str "ascended" , Span ( "" , [ "lnum" ] , [] ) [ Str "90" ] ] ] , Div ( "" , [] , [] ) [ Plain [ Str "In" , Space , Str "fattening" , Space , Str "the" , Space , Str "prolonged" , Space , Str "candle-flames," ] ] , Div ( "wasteland-content.xhtml#ln92" , [] , [] ) [ Plain [ Str "Flung" , Space , Str "their" , Space , Str "smoke" , Space , Str "into" , Space , Str "the" , Space , Str "laquearia," , Note [ Para [ Link ( "" , [] , [] ) [ Str "92." ] ( "#wasteland-content.xhtml#ln92" , "" ) , Space , Str "Laquearia." , Space , Str "V." , Space , Str "Aeneid," , Space , Str "I." , Space , Str "726:" ] , BlockQuote [ Para [ Str "dependent" , Space , Str "lychni" , Space , Str "laquearibus" , Space , Str "aureis" , Space , Str "incensi," , Space , Str "et" , Space , Str "noctem" , SoftBreak , Str "flammis" , LineBreak , Str "funalia" , Space , Str "vincunt." ] ] ] ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Stirring" , Space , Str "the" , Space , Str "pattern" , Space , Str "on" , Space , Str "the" , Space , Str "coffered" , Space , Str "ceiling." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Huge" , Space , Str "sea-wood" , Space , Str "fed" , Space , Str "with" , Space , Str "copper" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Burned" , Space , Str "green" , Space , Str "and" , Space , Str "orange," , Space , Str "framed" , Space , Str "by" , Space , Str "the" , Space , Str "coloured" , Space , Str "stone," ] ] , Div ( "" , [] , [] ) [ Plain [ Str "In" , Space , Str "which" , Space , Str "sad" , Space , Str "light" , Space , Str "a" , Space , Str "carved" , Space , Str "dolphin" , Space , Str "swam." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Above" , Space , Str "the" , Space , Str "antique" , Space , Str "mantel" , Space , Str "was" , Space , Str "displayed" ] ] , Div ( "wasteland-content.xhtml#ln98" , [] , [] ) [ Plain [ Str "As" , Space , Str "though" , Space , Str "a" , Space , Str "window" , Space , Str "gave" , Space , Str "upon" , Space , Str "the" , Space , Str "sylvan" , Space , Str "scene" , Note [ Para [ Link ( "" , [] , [] ) [ Str "98." ] ( "#wasteland-content.xhtml#ln98" , "" ) , Space , Str "Sylvan" , Space , Str "scene." , Space , Str "V." , Space , Str "Milton," , Space , Str "Paradise" , Space , Str "Lost," , Space , Str "iv." , Space , Str "140." ] ] ] ] , Div ( "wasteland-content.xhtml#ln99" , [] , [] ) [ Plain [ Str "The" , Space , Str "change" , Space , Str "of" , Space , Str "Philomel," , Space , Str "by" , Space , Str "the" , Space , Str "barbarous" , Space , Str "king" , Note [ Para [ Link ( "" , [] , [] ) [ Str "99." ] ( "#wasteland-content.xhtml#ln99" , "" ) , Space , Str "V." , Space , Str "Ovid," , Space , Str "Metamorphoses," , Space , Str "vi," , Space , Str "Philomela." ] ] ] ] , Div ( "wasteland-content.xhtml#ln100" , [] , [] ) [ Plain [ Str "So" , Space , Str "rudely" , Space , Str "forced;" , Space , Str "yet" , Space , Str "there" , Space , Str "the" , Space , Str "nightingale" , Note [ Para [ Link ( "" , [] , [] ) [ Str "100." ] ( "#wasteland-content.xhtml#ln100" , "" ) , Space , Str "Cf." , Space , Str "Part" , Space , Str "III," , Space , Str "l." , Space , Str "204." ] ] , SoftBreak , Span ( "" , [ "lnum" ] , [] ) [ Str "100" ] ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Filled" , Space , Str "all" , Space , Str "the" , Space , Str "desert" , Space , Str "with" , Space , Str "inviolable" , Space , Str "voice" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "And" , Space , Str "still" , Space , Str "she" , Space , Str "cried," , Space , Str "and" , Space , Str "still" , Space , Str "the" , Space , Str "world" , Space , Str "pursues," ] ] , Div ( "" , [] , [] ) [ Plain [ Str "\"Jug" , Space , Str "Jug\"" , Space , Str "to" , Space , Str "dirty" , Space , Str "ears." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "And" , Space , Str "other" , Space , Str "withered" , Space , Str "stumps" , Space , Str "of" , Space , Str "time" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Were" , Space , Str "told" , Space , Str "upon" , Space , Str "the" , Space , Str "walls;" , Space , Str "staring" , Space , Str "forms" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Leaned" , Space , Str "out," , Space , Str "leaning," , Space , Str "hushing" , Space , Str "the" , Space , Str "room" , Space , Str "enclosed." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Footsteps" , Space , Str "shuffled" , Space , Str "on" , Space , Str "the" , Space , Str "stair." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Under" , Space , Str "the" , Space , Str "firelight," , Space , Str "under" , Space , Str "the" , Space , Str "brush," , Space , Str "her" , Space , Str "hair" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Spread" , Space , Str "out" , Space , Str "in" , Space , Str "fiery" , Space , Str "points" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Glowed" , Space , Str "into" , Space , Str "words," , Space , Str "then" , Space , Str "would" , Space , Str "be" , Space , Str "savagely" , Space , Str "still." , Span ( "" , [ "lnum" ] , [] ) [ Str "110" ] ] ] ] , Div ( "" , [ "linegroup" ] , [] ) [ Div ( "" , [ "linegroup" ] , [] ) [ Div ( "" , [] , [] ) [ Plain [ Str "\"My" , Space , Str "nerves" , Space , Str "are" , Space , Str "bad" , Space , Str "to-night." , Space , Str "Yes," , Space , Str "bad." , Space , Str "Stay" , Space , Str "with" , Space , Str "me." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "\"Speak" , Space , Str "to" , Space , Str "me." , Space , Str "Why" , Space , Str "do" , Space , Str "you" , Space , Str "never" , Space , Str "speak." , Space , Str "Speak." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "\"What" , Space , Str "are" , Space , Str "you" , Space , Str "thinking" , Space , Str "of?" , Space , Str "What" , Space , Str "thinking?" , Space , Str "What?" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "\"I" , Space , Str "never" , Space , Str "know" , Space , Str "what" , Space , Str "you" , Space , Str "are" , Space , Str "thinking." , Space , Str "Think.\"" ] ] ] , Div ( "" , [ "linegroup" ] , [] ) [ Div ( "wasteland-content.xhtml#ln115" , [] , [] ) [ Plain [ Str "I" , Space , Str "think" , Space , Str "we" , Space , Str "are" , Space , Str "in" , Space , Str "rats'" , Space , Str "alley" , Note [ Para [ Link ( "" , [] , [] ) [ Str "115." ] ( "#wasteland-content.xhtml#ln115" , "" ) , Space , Str "Cf." , Space , Str "Part" , Space , Str "III," , Space , Str "l." , Space , Str "195." ] ] ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Where" , Space , Str "the" , Space , Str "dead" , Space , Str "men" , Space , Str "lost" , Space , Str "their" , Space , Str "bones." ] ] ] ] , Div ( "" , [ "linegroup" ] , [] ) [ Div ( "" , [] , [] ) [ Plain [ Str "\"What" , Space , Str "is" , Space , Str "that" , Space , Str "noise?\"" ] ] , Div ( "wasteland-content.xhtml#ln118" , [ "indent" ] , [] ) [ Plain [ Str "The" , Space , Str "wind" , Space , Str "under" , Space , Str "the" , Space , Str "door." , Note [ Para [ Link ( "" , [] , [] ) [ Str "118." ] ( "#wasteland-content.xhtml#ln118" , "" ) , Space , Str "Cf." , Space , Str "Webster:" ] , BlockQuote [ Para [ Str "\"Is" , Space , Str "the" , Space , Str "wind" , Space , Str "in" , Space , Str "that" , Space , Str "door" , Space , Str "still?\"" ] ] ] ] ] , Div ( "" , [] , [] ) [ Plain [ Str "\"What" , Space , Str "is" , Space , Str "that" , Space , Str "noise" , Space , Str "now?" , Space , Str "What" , Space , Str "is" , Space , Str "the" , Space , Str "wind" , Space , Str "doing?\"" ] ] , Div ( "" , [ "indent" ] , [] ) [ Plain [ Str "Nothing" , Space , Str "again" , Space , Str "nothing." , Span ( "" , [ "lnum" ] , [] ) [ Str "120" ] ] ] ] , Div ( "" , [ "linegroup" ] , [] ) [ Div ( "" , [] , [] ) [ Plain [ Str "\"Do" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "\"You" , Space , Str "know" , Space , Str "nothing?" , Space , Str "Do" , Space , Str "you" , Space , Str "see" , Space , Str "nothing?" , Space , Str "Do" , Space , Str "you" , Space , Str "remember" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "\"Nothing?\"" ] ] ] , Div ( "" , [ "linegroup" ] , [] ) [ Div ( "" , [] , [] ) [ Plain [ Str "I" , Space , Str "remember" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Those" , Space , Str "are" , Space , Str "pearls" , Space , Str "that" , Space , Str "were" , Space , Str "his" , Space , Str "eyes." ] ] , Div ( "wasteland-content.xhtml#ln126" , [] , [] ) [ Plain [ Str "\"Are" , Space , Str "you" , Space , Str "alive," , Space , Str "or" , Space , Str "not?" , Space , Str "Is" , Space , Str "there" , Space , Str "nothing" , Space , Str "in" , Space , Str "your" , Space , Str "head?\"" , Note [ Para [ Link ( "" , [] , [] ) [ Str "126." ] ( "#wasteland-content.xhtml#ln126" , "" ) , Space , Str "Cf." , Space , Str "Part" , Space , Str "I," , Space , Str "l." , Space , Str "37," , Space , Str "48." ] ] ] ] , Div ( "" , [] , [] ) [ Plain [ Str "But" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "O" , Space , Str "O" , Space , Str "O" , Space , Str "O" , Space , Str "that" , Space , Str "Shakespeherian" , Space , Str "Rag\8213" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "It's" , Space , Str "so" , Space , Str "elegant" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "So" , Space , Str "intelligent" , Span ( "" , [ "lnum" ] , [] ) [ Str "130" ] ] ] , Div ( "" , [] , [] ) [ Plain [ Str "\"What" , Space , Str "shall" , Space , Str "I" , Space , Str "do" , Space , Str "now?" , Space , Str "What" , Space , Str "shall" , Space , Str "I" , Space , Str "do?\"" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "I" , Space , Str "shall" , Space , Str "rush" , Space , Str "out" , Space , Str "as" , Space , Str "I" , Space , Str "am," , Space , Str "and" , Space , Str "walk" , Space , Str "the" , Space , Str "street" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "\"With" , Space , Str "my" , Space , Str "hair" , Space , Str "down," , Space , Str "so." , Space , Str "What" , Space , Str "shall" , Space , Str "we" , Space , Str "do" , Space , Str "to-morrow?" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "\"What" , Space , Str "shall" , Space , Str "we" , Space , Str "ever" , Space , Str "do?\"" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "The" , Space , Str "hot" , Space , Str "water" , Space , Str "at" , Space , Str "ten." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "And" , Space , Str "if" , Space , Str "it" , Space , Str "rains," , Space , Str "a" , Space , Str "closed" , Space , Str "car" , Space , Str "at" , Space , Str "four." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "And" , Space , Str "we" , Space , Str "shall" , Space , Str "play" , Space , Str "a" , Space , Str "game" , Space , Str "of" , Space , Str "chess," ] ] , Div ( "wasteland-content.xhtml#ln138" , [] , [] ) [ Plain [ Str "Pressing" , Space , Str "lidless" , Space , Str "eyes" , Space , Str "and" , Space , Str "waiting" , Space , Str "for" , Space , Str "a" , Space , Str "knock" , Space , Str "upon" , Space , Str "the" , Space , Str "door." , Note [ Para [ Link ( "" , [] , [] ) [ Str "138." ] ( "#wasteland-content.xhtml#ln138" , "" ) , Space , Str "Cf." , Space , Str "the" , Space , Str "game" , Space , Str "of" , Space , Str "chess" , Space , Str "in" , Space , Str "Middleton's" , Space , Str "Women" , Space , Str "beware" , Space , Str "Women." ] ] ] ] ] , Div ( "" , [ "linegroup" ] , [] ) [ Div ( "" , [] , [] ) [ Plain [ Str "When" , Space , Str "Lil's" , Space , Str "husband" , Space , Str "got" , Space , Str "demobbed," , Space , Str "I" , Space , Str "said" , Space , Str "-" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "I" , Space , Str "didn't" , Space , Str "mince" , Space , Str "my" , Space , Str "words," , Space , Str "I" , Space , Str "said" , Space , Str "to" , Space , Str "her" , Space , Str "myself," , Span ( "" , [ "lnum" ] , [] ) [ Str "140" ] ] ] , Div ( "" , [] , [] ) [ Plain [ Str "HURRY" , Space , Str "UP" , Space , Str "PLEASE" , Space , Str "ITS" , Space , Str "TIME" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Now" , Space , Str "Albert's" , Space , Str "coming" , Space , Str "back," , Space , Str "make" , Space , Str "yourself" , Space , Str "a" , Space , Str "bit" , Space , Str "smart." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "He'll" , Space , Str "want" , Space , Str "to" , Space , Str "know" , Space , Str "what" , Space , Str "you" , Space , Str "done" , Space , Str "with" , Space , Str "that" , Space , Str "money" , Space , Str "he" , Space , Str "gave" , SoftBreak , Str "you" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "To" , Space , Str "get" , Space , Str "yourself" , Space , Str "some" , Space , Str "teeth." , Space , Str "He" , Space , Str "did," , Space , Str "I" , Space , Str "was" , Space , Str "there." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "You" , Space , Str "have" , Space , Str "them" , Space , Str "all" , Space , Str "out," , Space , Str "Lil," , Space , Str "and" , Space , Str "get" , Space , Str "a" , Space , Str "nice" , Space , Str "set," ] ] , Div ( "" , [] , [] ) [ Plain [ Str "He" , Space , Str "said," , Space , Str "I" , Space , Str "swear," , Space , Str "I" , Space , Str "can't" , Space , Str "bear" , Space , Str "to" , Space , Str "look" , Space , Str "at" , Space , Str "you." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "And" , Space , Str "no" , Space , Str "more" , Space , Str "can't" , Space , Str "I," , Space , Str "I" , Space , Str "said," , Space , Str "and" , Space , Str "think" , Space , Str "of" , Space , Str "poor" , Space , Str "Albert," ] ] , Div ( "" , [] , [] ) [ Plain [ Str "He's" , Space , Str "been" , Space , Str "in" , Space , Str "the" , Space , Str "army" , Space , Str "four" , Space , Str "years," , Space , Str "he" , Space , Str "wants" , Space , Str "a" , Space , Str "good" , Space , Str "time," ] ] , Div ( "" , [] , [] ) [ Plain [ Str "And" , Space , Str "if" , Space , Str "you" , Space , Str "don't" , Space , Str "give" , Space , Str "it" , Space , Str "him," , Space , Str "there's" , Space , Str "others" , Space , Str "will," , Space , Str "I" , SoftBreak , Str "said." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Oh" , Space , Str "is" , Space , Str "there," , Space , Str "she" , Space , Str "said." , Space , Str "Something" , Space , Str "o'" , Space , Str "that," , Space , Str "I" , Space , Str "said." , Span ( "" , [ "lnum" ] , [] ) [ Str "150" ] ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Then" , Space , Str "I'll" , Space , Str "know" , Space , Str "who" , Space , Str "to" , Space , Str "thank," , Space , Str "she" , Space , Str "said," , Space , Str "and" , Space , Str "give" , Space , Str "me" , Space , Str "a" , Space , Str "straight" , SoftBreak , Str "look." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "HURRY" , Space , Str "UP" , Space , Str "PLEASE" , Space , Str "ITS" , Space , Str "TIME" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "If" , Space , Str "you" , Space , Str "don't" , Space , Str "like" , Space , Str "it" , Space , Str "you" , Space , Str "can" , Space , Str "get" , Space , Str "on" , Space , Str "with" , Space , Str "it," , Space , Str "I" , Space , Str "said." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Others" , Space , Str "can" , Space , Str "pick" , Space , Str "and" , Space , Str "choose" , Space , Str "if" , Space , Str "you" , Space , Str "can't." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "But" , Space , Str "if" , Space , Str "Albert" , Space , Str "makes" , Space , Str "off," , Space , Str "it" , Space , Str "won't" , Space , Str "be" , Space , Str "for" , Space , Str "lack" , Space , Str "of" , SoftBreak , Str "telling." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "You" , Space , Str "ought" , Space , Str "to" , Space , Str "be" , Space , Str "ashamed," , Space , Str "I" , Space , Str "said," , Space , Str "to" , Space , Str "look" , Space , Str "so" , Space , Str "antique." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "(And" , Space , Str "her" , Space , Str "only" , Space , Str "thirty-one.)" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "I" , Space , Str "can't" , Space , Str "help" , Space , Str "it," , Space , Str "she" , Space , Str "said," , Space , Str "pulling" , Space , Str "a" , Space , Str "long" , Space , Str "face," ] ] , Div ( "" , [] , [] ) [ Plain [ Str "It's" , Space , Str "them" , Space , Str "pills" , Space , Str "I" , Space , Str "took," , Space , Str "to" , Space , Str "bring" , Space , Str "it" , Space , Str "off," , Space , Str "she" , Space , Str "said." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "(She's" , Space , Str "had" , Space , Str "five" , Space , Str "already," , Space , Str "and" , Space , Str "nearly" , Space , Str "died" , Space , Str "of" , Space , Str "young" , Space , Str "George.)" , Span ( "" , [ "lnum" ] , [] ) [ Str "160" ] ] ] , Div ( "" , [] , [] ) [ Plain [ Str "The" , Space , Str "chemist" , Space , Str "said" , Space , Str "it" , Space , Str "would" , Space , Str "be" , Space , Str "all" , Space , Str "right," , Space , Str "but" , Space , Str "I've" , Space , Str "never" , Space , Str "been" , Space , Str "the" , SoftBreak , Str "same." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "You" , Space , Emph [ Str "are" ] , Space , Str "a" , Space , Str "proper" , Space , Str "fool," , Space , Str "I" , Space , Str "said." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Well," , Space , Str "if" , Space , Str "Albert" , Space , Str "won't" , Space , Str "leave" , Space , Str "you" , Space , Str "alone," , Space , Str "there" , Space , Str "it" , Space , Str "is," , Space , Str "I" , SoftBreak , Str "said," ] ] , Div ( "" , [] , [] ) [ Plain [ Str "What" , Space , Str "you" , Space , Str "get" , Space , Str "married" , Space , Str "for" , Space , Str "if" , Space , Str "you" , Space , Str "don't" , Space , Str "want" , Space , Str "children?" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "HURRY" , Space , Str "UP" , Space , Str "PLEASE" , Space , Str "ITS" , Space , Str "TIME" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Well," , Space , Str "that" , Space , Str "Sunday" , Space , Str "Albert" , Space , Str "was" , Space , Str "home," , Space , Str "they" , Space , Str "had" , Space , Str "a" , Space , Str "hot" , SoftBreak , Str "gammon," ] ] , Div ( "" , [] , [] ) [ Plain [ Str "And" , Space , Str "they" , Space , Str "asked" , Space , Str "me" , Space , Str "in" , Space , Str "to" , Space , Str "dinner," , Space , Str "to" , Space , Str "get" , Space , Str "the" , Space , Str "beauty" , Space , Str "of" , Space , Str "it" , SoftBreak , Str "hot\8213" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "HURRY" , Space , Str "UP" , Space , Str "PLEASE" , Space , Str "ITS" , Space , Str "TIME" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "HURRY" , Space , Str "UP" , Space , Str "PLEASE" , Space , Str "ITS" , Space , Str "TIME" ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Goonight" , Space , Str "Bill." , Space , Str "Goonight" , Space , Str "Lou." , Space , Str "Goonight" , Space , Str "May." , Space , Str "Goonight." , Span ( "" , [ "lnum" ] , [] ) [ Str "170" ] ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Ta" , Space , Str "ta." , Space , Str "Goonight." , Space , Str "Goonight." ] ] , Div ( "" , [] , [] ) [ Plain [ Str "Good" , Space , Str "night," , Space , Str "ladies," , Space , Str "good" , Space , Str "night," , Space , Str "sweet" , Space , Str "ladies," , Space , Str "good" , Space , Str "night," , Space , Str "good" , SoftBreak , Str "night." ] ] ] ] ] , Div ( "wasteland-content.xhtml#backmatter" , [ "section" , "backmatter" ] , [] ) [ Div ( "wasteland-content.xhtml#rearnotes" , [ "rearnotes" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Str "NOTES" , Space , Str "ON" , Space , Str "\"THE" , Space , Str "WASTE" , Space , Str "LAND\"" ] , Para [ Str "Not" , Space , Str "only" , Space , Str "the" , Space , Str "title," , Space , Str "but" , Space , Str "the" , Space , Str "plan" , Space , Str "and" , Space , Str "a" , Space , Str "good" , Space , Str "deal" , Space , Str "of" , Space , Str "the" , Space , Str "incidental" , Space , Str "symbolism" , Space , Str "of" , SoftBreak , Str "the" , Space , Str "poem" , Space , Str "were" , Space , Str "suggested" , Space , Str "by" , Space , Str "Miss" , Space , Str "Jessie" , Space , Str "L." , Space , Str "Weston's" , Space , Str "book" , Space , Str "on" , Space , Str "the" , Space , Str "Grail" , Space , Str "legend:" , SoftBreak , Str "From" , Space , Str "Ritual" , Space , Str "to" , Space , Str "Romance" ] , Para [ Str "Indeed," , Space , Str "so" , Space , Str "deeply" , Space , Str "am" , Space , Str "I" , Space , Str "indebted," , Space , Str "Miss" , Space , Str "Weston's" , Space , Str "book" , Space , Str "will" , Space , Str "elucidate" , Space , Str "the" , SoftBreak , Str "difficulties" , Space , Str "of" , Space , Str "the" , Space , Str "poem" , Space , Str "much" , Space , Str "better" , Space , Str "than" , Space , Str "my" , Space , Str "notes" , Space , Str "can" , Space , Str "do;" , Space , Str "and" , Space , Str "I" , Space , Str "recommend" , Space , Str "it" , SoftBreak , Str "(apart" , Space , Str "from" , Space , Str "the" , Space , Str "great" , Space , Str "interest" , Space , Str "of" , Space , Str "the" , Space , Str "book" , Space , Str "itself)" , Space , Str "to" , Space , Str "any" , Space , Str "who" , Space , Str "think" , Space , Str "such" , SoftBreak , Str "elucidation" , Space , Str "of" , Space , Str "the" , Space , Str "poem" , Space , Str "worth" , Space , Str "the" , Space , Str "trouble." , Space , Str "To" , Space , Str "another" , Space , Str "work" , Space , Str "of" , Space , Str "anthropology" , Space , Str "I" , Space , Str "am" , SoftBreak , Str "indebted" , Space , Str "in" , Space , Str "general," , Space , Str "one" , Space , Str "which" , Space , Str "has" , Space , Str "influenced" , Space , Str "our" , Space , Str "generation" , Space , Str "profoundly;" , Space , Str "I" , Space , Str "mean" , SoftBreak , Str "The" , Space , Str "Golden" , Space , Str "Bough;" , Space , Str "I" , Space , Str "have" , Space , Str "used" , Space , Str "especially" , Space , Str "the" , Space , Str "two" , Space , Str "volumes" , Space , Str "Adonis," , Space , Str "Attis," , Space , Str "Osiris." , SoftBreak , Str "Anyone" , Space , Str "who" , Space , Str "is" , Space , Str "acquainted" , Space , Str "with" , Space , Str "these" , Space , Str "works" , Space , Str "will" , Space , Str "immediately" , Space , Str "recognise" , Space , Str "in" , Space , Str "the" , Space , Str "poem" , SoftBreak , Str "certain" , Space , Str "references" , Space , Str "to" , Space , Str "vegetation" , Space , Str "ceremonies." ] , Div ( "" , [ "section" ] , [] ) [ Header 3 ( "" , [] , [] ) [ Str "I." , Space , Str "THE" , Space , Str "BURIAL" , Space , Str "OF" , Space , Str "THE" , Space , Str "DEAD" ] ] , Div ( "" , [ "section" ] , [] ) [ Header 3 ( "" , [] , [] ) [ Str "II." , Space , Str "A" , Space , Str "GAME" , Space , Str "OF" , Space , Str "CHESS" ] ] ] ] ] pandoc-3.1.3/test/fb2/0000755000000000000000000000000007346545000012603 5ustar0000000000000000pandoc-3.1.3/test/fb2/basic.fb20000644000000000000000000000252107346545000014257 0ustar0000000000000000 unrecognised pandoc <p />

    <p>Top-level title</p>
    <p>Section</p>
    <p>Subsection</p>

    This emphasized strong verbatim markdown. See this link.

    Ordered list:

    1. one

    2. two

    3. three

    Blockquote is for citatons.

    Code

    block

    is

    for

    code.

    Strikeout is Pandoc’s extension. Superscript and subscripts too: H2O is a liquid[1]. 210 is 1024.

    Math is another Pandoc extension: E = m c^2.

    <p>1</p>

    Sometimes.

    pandoc-3.1.3/test/fb2/basic.markdown0000644000000000000000000000066407346545000015436 0ustar0000000000000000# Top-level title ## Section ### Subsection This *emphasized* **strong** `verbatim` markdown. See this [link](http://example.com/). Ordered list: 1. one 1. two 1. three > Blockquote > is > for > citatons. Code block is for code. ~~Strikeout~~ is Pandoc's extension. Superscript and subscripts too: H~2~O is a liquid[^1]. 2^10^ is 1024. Math is another Pandoc extension: $E = m c^2$. [^1]: Sometimes. pandoc-3.1.3/test/fb2/images-embedded.fb20000644000000000000000000001357507346545000016205 0ustar0000000000000000 unrecognisedpandoc<p />
    This image was embedded using data URI scheme

    This image was embedded using data URI scheme

    iVBORw0KGgoAAAANSUhEUgAAADAAAAAgCAIAAADbtmxLAAABmGlDQ1BpY2MAAHjapdG/axMBGMbxTy4tldJSwSAiHW4ootKCqIOrVShIkRIrJNUluUvaQi4Nd1dEXAQHF4cOXVRcLOLirJv4BygIggqCi7sUBRcpcbiDgtBBfOGF5/315eV9qR7qRUk2EpL087S+MB82mivh2BeBcUcddrwVZYOLS0uLDrRfH1Xgw1wvSjL/ZpNxJ4uohFiKBmlOZYC7t/JBTmUXtWitFROMYDZtNFcIzqDWLvRl1FYL3UAtXa5fIughXC30A4TtQr9AGK2lCcFbzMRJPybYxWScxDFVGE16m1G5ZwUTnf71aziPaXUsYB4h2tjEOnrIMVfG/QJyAC/GtKvYKFlRqQe4jbTkrGKtZM+WvZvI0CnjbtnfKb1XMtBoroR//yzrnjtbbDRxhdFvw+HP04w9Zu/+cPj76XC4t0P1M2+29+c3trnwnerWfm7mCVP3ePl6P9d+xqstjn0dtNIWitMG3S4/njPZ5Mh7xm/8b734Z1m384nlOyy+4+EjTnSZunkyzsP1ft5J+63eKWT1hXn4AzDofghlJQBJAAAACXBIWXMAAAsSAAALEgHS3X78AAACInpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjahVRJtiQhCNx7ijpCMIhyHNPU9/oGffxeaNY3p/5VC5IAQkAhtL9/evh8Pp+PiwaNKZubAYDuugNcMH4ZIAN6A6ATo68kdAA8VQ1DkoEIq2EILiBiALIQDTISWvz3SSQNJHwnilWTGgC/ZMSa1Fc8TDznZH4rgWOtRrwQKGh8VyNZ8bAY9Ccj1EGXUI0JwNE3n3itxrzis7Sq1TgBiNMwesKo1TjfcdZqXBaiWRpLrcbbEjBLU63G9QGv1bit+CSKWi2W8+3QLDluF/wIBgBEaNQWNSjFzHj7/zgOP92EBap3v2BqlNi2pEbGVi0yBNwkcRPiTVxIJDVLRgJxEXGLRgAgLBASkiIIwlIEYgyBJCnC4lKExN6yGSW6SD961nvvQaxhBZq4rbptbX1HlJPSokN37t9m9957a5utDux7Xwk06WnWWOJ2yqgkPqW4e2urnmNPK0HMtq0Hkkc7ZbSXUleHiNMIoGy7r/ppEwAIV+Amv1rS/3ghgCz23ns+m/HrASdJMWT2chsBiS2z73fcLGd+3E8hZ05nQ81zzOW2n8Saj1VzwTMHZ+g6xcPg5ozLASM7Z/hl9kaPnPFQmrcyvm8lFKbrAQwAoegtYFy34rEXRSFP/qEo4tmQ0wywlwPyG5G/BJQXvF5wOR4k7m9HjlupR/y6Mp42RjhWxm+Oh99BvMrwD3UCiGvkpxuRAAAACXZwQWcAAAAwAAAAIACELJ4GAAALGklEQVRYw11YW48dV1b+1tq7qs6t+/TldPsSx3bbcRwncWY0A4LMCOYFXpgHJCR4QvwAnpAQj/wB/gR/ACR4QUKDECMUEjLOZew4zsRxuu122+52n9Pnfuqy9/p4qNNtD1tLpVKpap/vrMu31rdl/nAgIjSpF0kAJAEHGJwAAIQheqeARVqomCQZGUkjSYLmTAyAkCJiESRVNYQAaL3h8k3SzPj6MjEzsr7SqyoAcRABQItRVZ14kqifmNEkTZNiUZiZ934xm4WE3mva8GYGAA5UJ8YYIyCipiKk1ZuTBAhQBGZQFRKvTAgBaQBIeOekBqpa+0gBxFgAlmhqhixJzUKMRVEUx/3RWmel3z9xzrVX2+tuRb3WnrDKVFUEgKlCVWI055WMZ76AieipX0AYzYwQUZqZqJD0tKCqFJAxhKiqSZKooirj06fPMt/odlezhngFYar+0e7jxWLR6/Vc7ubzpNnM4BlDSDLvvQ8hnAYFIlCFRUDEjASgIGFGEcBIoSrMCFAVhgiKTxJPkgJVSeBBhKqaTCb5Ip4cD/efPP/g9q2soSvdTp7nAuv2Vk/2BoHFyWgRYxVjbDezRiMDMicNxqCqqhIZVZxZVK3zaRkgXYaMdeDMoMoapSpo8GSE1t6ihaCqPs3WV/VwPpxOp8fHRw++cUmq7XYzSbLV1W5vu3fw7Emn0xwcD+ZzF8vKQtlI09R7J6SXOldgEDEwAmdguMyYV/lEVWEkARExEkoVBxHWxeUSFefK6fTJ48dlme/sXN7a3vjVnf8NIQ6Hk1ajOZ+Nf/3ZZ9Uij0V+fedqM0v2nz5ut7LtCz1GC2WVJqmry1KgZKLqlbo0qLPanJrAVKgSRX/LPElxQF0smiDy6Ojo7pd3qXLjxo2r1y8fnwxORpN8Nt/u9fLF5OTFcRVKDWE0HJZF2O71IsOzZ0+e7D3tdDo7168miU9SJ6IhBIGD2KuKMpHaPwoFXkXq9Aak+/u//TsFRCEgEAljjFtbW+UiHPb765sbJ8M+Y9HtdAbDgWs0pSge7O1u9Tar+Xwwmy0m03I0XpgbjydZlk2n43armaVOJIqQDEIIIKBABK/iBYuAnT4HwJrx1CkhRosAIRBBo93ImunO25dv/eBmb231+rUrRTH/we1ba+udhw/uSoZGOzt38Vx/1D85folYLhazqpg3mj5ruNWVTqPhxcEsAOa8ihJiAhMEQVChCgXmhKcWT41O6IGq5kCjqPOTk9F4PF7rrlvKRtQHjx/d2Lk+mgy+evrwhzs3Xuzv0tmbb5z79LNPzm9utdorEoNkzPPx+x+812o10tR7DyCqUwCMQUUIUqm2JOolbb/GjmbwoDGS9GZBnYM4IS0E5+TChS1Nk7Z28uPhW29euvPRf2fN1pdffNE1vXnzxsGgf/B036duvbce5tXG2uZkfnL79q3t8+sA4Rws0CJIAOI8LADUusLqeC0rTl4RJgyg1Fe+fB7yUrxTQoRWVoExbWTjl6P5fD7dO6yIF4P+bDK/92T3hzffLWGffPq5c7K1uf7hj3+PrLqbqxffuDQc9VdWVtY31846l1CFqJlalk8gr/UxAIzLLrZkbVK5WHgHhFIYmS+K6ZhFkY/Hi/5gPOhLUzvnu73L59KVxjyffXH314vFIsbYaTXeuXFtcHx4sPd9S+3l84PMwTsyBrMgQhUIgrEUREWUU4O8uhcLdW45BsWpiVRgoSyYTxYn/ee7e9/f/2Z8eOwYm8pko4EktDvpzOZXL5z3Dd3b2/vi/r1G0795cat//GxrvWPTaW+lvdVdXUkTCaVagAUrF6wKVSAGxIAQJEZYiVjSSrBSq4SVWCFWKINYpQzK4FHmhqjOgbF/+Hx0dJyXtv/46ZuXtrrd1V6ruRhNJqPZlfbq5999/Dt/+LNf/tf/nEyH585t73338OrVS3E8Pnl+MJnOi7i4fG1no7cJ79Sh7vPISwCwZYCERN3TjQCFZFxGE3FJV97iXCGIKBZlcyV799zbIdhsNnvyaP/x3r6Z+Tx02i6Kv/7WO8bFX/3ZT37xyZ2yf9Ta2n73vZ1vf/Xlv338+R/97MOVjc63X99fbXduvfuONBJTAlDxiBGAWKQZSVn2BZ4lDYwAlDQzkF7LEmYQyUSTdkvTzNuiZLz25vlOt3N0cPTwxcH7W2/9+NbN0Uef3Pvs6w/+9KcraePb3+z+6NKF+cHLvvN/89d/2SQsTSdr3clwMh0M1nvr0ki4yI0iQgBSu8dYOwxm4BIEyTrTEY1mHrNpZD3KiMIhlLEokljKWueyytsX3ji/2rqzuzt4Obh95eLd3+ztf7Xv1e2sp8OXw73h8Od//FNNtIh5Rqx322tZWoWimo1c7hQi4mgBxtPpA3VBkXQ0M8BOh5VoS3D8j3+CACqsR4EYzUyIalqaCqCxyIsB/uFf//lPfv93R/2jf/z4m0Zmf/6j977af/wXH/7B6ubK+dVV2+g6D0Yzg4OoA0kRrYoiEXcarFfzq7IueJKsYZktAXl7MRURiARakiQ08xAACHCGybj/i3v3ZoNyDa3/vPPg59cuf/fi4GKjPRmH99cuHT5+Ouv3ipV5b2ve2lxRdfPJLMa4ttKxEEl68ZH52bh4xkDhbLI2OYNiBpL+cHfmnKvfq2nf+eWXi2L+6PgQh42nk+GVc1uf7h9+f1T8ZOftXz76flu7L07Gs7FttCYvknH74PiDt24kjWa/PyvLElupJ2OMZFXBROS3hnoz8sxBS9+YYemhrw9L55xCFCYSalgR7Ehy/+DFnChC0kq3m37j9nr2L7uPnrw8UBb//t2emGsnybW8OW9M3uhc+fbprNWW0Qwh6MwKAQGEEIhlpccYSVLl/wkPM4unqEj6+7MyUZeIpj6pRxOJjDGO5qNpbNLsWTiSyt/dex5mR1Ui+9Phxe72w+moI1mmViSbG7xQNNpHlrhKBnkkcbIwi5WZGegpgMYYq6oCoKoiamZAfB1TWCoq+o/2DxzEiU/TNHXeBCGEqqqKGKGIDPOFTedDY8x8M5HEIRlXi5D7TtrsVpv5cDbZyB69eL7a6IjIfD6NNBHJy1A3tcRJCOV4Nmq1OiqZUgFznonzZVWIECoqXjWpijJGevVipFkZqipYKt6JE1XXjj5tJHk+n41jptrtrifqptNpq9WaTMcqyXon9VlqxHgyi5GjWa6qeZ5DJcsyM6OomVm04WQwnY3XIGkCQGEhzktjORoN8yp3zqVpI0lSUNXB59OhiChE1RdaSK0XSTNqoSSbmQe8F8Bi4jRN00WRr3TY7jSzJAEAQZIkCBUQo1aqmtSTHmJkrGApQtu7lodKKXDQGCyaaJo4mgeAEEPM667sd59/dyoQpUYDUQBCpZiqqmrNIgCEIKlgWS1OTl4OYl9gRoo40VgrRhGpP0G9qMZgFieTKgaKOFXQgolaCE7MBOrgnEO0aKWfLI7rWRaAnC4ATv3ZpiLiVQFYoCmzLAuhHI5eMsInIBkNUXTZUAERAVlvFSrziZoZFxOaaK3HAJOw1K9ArQXKMl/MJ7Ld6Z0l/1m86qMCGEXEe7+EW0+g4iFljCHxLQGcWq0NUp/Ur52K+Vc3ohrrFrs8PzhlJgBiKt7MYoxVKIpiIRudtdc9QSxheTPnHIAYCaNzTlXNzKg+YWRQpgKQRjGIB8Pyb0BJnv1ikFoYOwBEBKAEqFQlaRalFtqkc440n3IZrNp7Z4LExMpgy4SAVBaFVp9zhBCIaBQnDqhPSQgKIAJPksal+AG8ogpRnQCIUVRFoSEE9QIaLNCpqiPFQUK0/wPxadi/ncvxsAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxMS0wMi0yOFQwMjo1NTowMiswMTowMGbLlncAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTEtMDItMjhUMDI6NTU6MDIrMDE6MDAXli7LAAAAEXRFWHRqcGVnOmNvbG9yc3BhY2UAMix1VZ8AAAAgdEVYdGpwZWc6c2FtcGxpbmctZmFjdG9yADF4MSwxeDEsMXgx6ZX8cAAAAABJRU5ErkJggg==
    pandoc-3.1.3/test/fb2/images-embedded.html0000644000000000000000000001363207346545000016472 0ustar0000000000000000
    This image was embedded using data URI scheme

    This image was embedded using data URI scheme

    pandoc-3.1.3/test/fb2/images.fb20000644000000000000000000002653207346545000014453 0ustar0000000000000000 unrecognisedpandoc<p />

    This example test if Pandoc correctly embeds images into FictionBook.

    Small inline image: alt text a small PNG image.

    Paragraph image:

    alt text of a big JPEG image

    alt text of a big missing image

    A missing image inline: alt text of missing image.

    /9j/4AAQSkZJRgABAQEASABIAAD/4QOoRXhpZgAATU0AKgAAAAgAFgD+AAQAAAABAAAAAQEPAAIAAAAUAAABFgEQAAIAAAAUAAABKgESAAMAAAABAAEAAAExAAIAAAAdAAABPgEyAAIAAAAUAAABXEdGAAkAAAABAAAAAkdJAAkAAAABAAAAKIdpAAQAAAABAAACXMYSAAEAAAAEAQEAAMYTAAEAAAAEAQEAAMYUAAIAAAAMAAABcMYhAAoAAAAJAAABfMYiAAoAAAAJAAABxMYnAAUAAAADAAACDMYoAAUAAAADAAACJMYqAAoAAAABAAACPMYrAAUAAAABAAACRMYsAAUAAAABAAACTMYuAAUAAAABAAACVMZaAAMAAAABABEAAMZbAAMAAAABABUAAAAAAABQRU5UQVggICAgICAgICAgICAgAFBFTlRBWCBLMjBEICAgICAgICAAZGFya3RhYmxlIDAuNy4xKzkxM35nYTA5MzllYQAAMjAxMTowMjowNiAwNzoyOToxNgBQRU5UQVggSzIwRAAAAZM/AAEAAP//NuAAAQAA///jlgABAAD//2viAAEAAAABh0EAAQAAAABNLwABAAD//+62AAEAAAAAKd8AAQAAAAFHQAABAAAAASNbAAEAAP//py8AAQAA///Z7gABAAD//4X3AAEAAAABWGsAAQAAAAAZVgABAAD//9qsAAEAAAAAUBMAAQAAAACr2QABAAAAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAEAAAABdAAAAQAAAAEAAAABAAAAAWX//4AAAAEAAAAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAVgpoABQAAAAEAAANegp0ABQAAAAEAAANmiCIAAwAAAAEAAQAAiCcAAwAAAAEAyAAAkAMAAgAAABQAAANukAQAAgAAABQAAAOCkgQACgAAAAEAAAOWkgcAAwAAAAEABQAAkgkAAwAAAAEAEAAAkgoABQAAAAEAAAOeoAEAAwAAAAEAAQAAohcAAwAAAAEAAgAApAEAAwAAAAEAAAAApAIAAwAAAAEAAQAApAMAAwAAAAEAAAAApAUAAwAAAAEAhwAApAYAAwAAAAEAAAAApAgAAwAAAAEAAAAApAkAAwAAAAEAAAAApAoAAwAAAAEAAAAApAwAAwAAAAEAAwAAAAAAAAAAAAEAAAAyAAAAHAAAAAoyMDExOjAyOjA2IDA3OjI5OjE2ADIwMTE6MDI6MDYgMDc6Mjk6MTYAAAAACgAAAAoAAP/iAxhJQ0NfUFJPRklMRQABAQAAAwhsY21zBCAAAG1udHJSR0IgWFlaIAfbAAIACgAWABAAGmFjc3BBUFBMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD21gABAAAAANMtbGNtcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADWRlc2MAAAEgAAAAUGNwcnQAAAFwAAAAgHd0cHQAAAHwAAAAFGNoYWQAAAIEAAAALHJYWVoAAAIwAAAAFGJYWVoAAAJEAAAAFGdYWVoAAAJYAAAAFHJUUkMAAAJsAAAAIGdUUkMAAAKMAAAAIGJUUkMAAAKsAAAAIGNocm0AAALMAAAAJGRtbmQAAALwAAAADWRtZGQAAAMAAAAABW1sdWMAAAAAAAAAAQAAAAxlblVTAAAANAAAABwAUgAAAEcAAABCAAAAIAAAAGIAAAB1AAAAaQAAAGwAAAB0AAAALQAAAGkAAABuAAAAAAAAbWx1YwAAAAAAAAABAAAADGVuVVMAAABkAAAAHABOAAAAbwAAACAAAABjAAAAbwAAAHAAAAB5AAAAcgAAAGkAAABnAAAAaAAAAHQAAAAsAAAAIAAAAHUAAABzAAAAZQAAACAAAABmAAAAcgAAAGUAAABlAAAAbAAAAHkAAAAAAABYWVogAAAAAAAA9tYAAQAAAADTLXNmMzIAAAAAAAEMSgAABeP///MqAAAHmwAA/Yf///ui///9owAAA9gAAMCUWFlaIAAAAAAAAG+UAAA47gAAA5BYWVogAAAAAAAAJJ0AAA+DAAC2vlhZWiAAAAAAAABipQAAt5AAABjecGFyYQAAAAAAAwAAAAJmZgAA8qcAAA1ZAAAT0AAACltwYXJhAAAAAAADAAAAAmZmAADypwAADVkAABPQAAAKW3BhcmEAAAAAAAMAAAACZmYAAPKnAAANWQAAE9AAAApbY2hybQAAAAAAAwAAAACj1wAAVHsAAEzNAACZmgAAJmYAAA9cKGR0IGludGVybmFsKQAAAHNSR0IAAAAA/9sAQwAbEhQXFBEbFxYXHhwbIChCKyglJShROj0wQmBVZWRfVV1baniZgWpxkHNbXYW1hpCeo6utq2eAvMm6pseZqKuk/9sAQwEcHh4oIyhOKytOpG5dbqSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSk/8AAEQgAgADAAwERAAIRAQMRAf/EABkAAAMBAQEAAAAAAAAAAAAAAAEAAwQCBf/EADIQAAEDAwMDAQYGAgMAAAAAAAEAAhEDEiExE1EEQWEiQpFxI4GxFFLwMqEF0eEkYsH/xAAXAQEBAQEAAAAAAAAAAAAAAAAAAQID/8QAGxEBAQEBAAMBAAAAAAAAAAAAABEBEgIxIUH/2gAMAwEAAhEDEQA/APehabMIGEDCBhAwgYQMoATGdQgQ4GI7oCgEIFAoGEAVAhAoAgYQBAECigqNCwhRSiFBw54aEUWvDhIKDpERqGDMqqg6rIsbr2Co7Y4lrc50Ed8qC4cDjugMogoFAECgUUEAhAoAgEKhQBBoWAoFAHCfiqMtZxaCKhjz2VGShXLPS6QQ3ug1N6gbgaQZicaICKm48lkY0M6oOOoDGupkyWE5xp+iiAWupsYHD1EAADlFdF74ggNdOkIKNJLrSSecILtUBhAECgCBQBAqgIAgCBQaFlCgCDJ1FdzMNJB4wqrhlZrzZVBDoiI1QZOrpOkOa8ENabCRM+CqE1A1jS4EEDMHA+iDU53oaYDT2jUf5UGZ1V0xJudaSD7JDhn9cKjS2s0VxcC5wAjnKg5fdV6p0uAa0DPYKjRRe1lIxmO/KhCOpaHkGdYQXDge6AoGEAQKAIAgUAQBAEGhZQoFBCo2nock9lVQNA33tdLRm3Uqo46mi1/TuioSw5k+yeUEqDTUZ8zBJ26k89j+uQipvApN/Duabg2WPHcDsgl1Nz6FOrTa6bXH08RP+EGiqW0unNYGXO9cHXJwPsglcRSD3ujxMl0qi7XAUjL4GjQ6JKgpSBj0tdkyC46oNNJrvaIlBaFAoFAECiggCBKAIAqLrLJQcvzgIoNZGpKI5exuvqEdwUGd729O4vvDmu/cMSPKqslaqyk8vJ/49QWuH5D2093uQ9KPO70oeS4GnrGsDBQZqrrehaWEQabmEf8Aa0/eFUFkGmKlYkuHpYzsTpJ5RVWU3Bw26bQ4CCT7I+PPj7IK0KT3m4YaDgnNyg2tptmXep3JQdhoGigKAIFFBAoAgUAQBAFRZZQzCDlzgAgQ7X4IIPebvVFvCqpWhziXMf4kf4QQqspNllgdRcYgey49vH68Koy9NVrs6mpRAc5zRJDtXdp90IJdU67pOlptxc4N8yJE/wAomrUKdT8W8UTdTZ6GnWwd/wCZRWi5oI6ZrvDiOOPiUVrY4N0LwYjtCgowOH7iZQWBwiFQKoVFBAoAilAEAQBUVlZZAnCKy1XuktbBPHCKl+IcwAvY4azkH7FUVaWuALXYJmRlB2RTAFznE83FSpGbqdupSfFQ3EYBP/qtIxMu6nrBd8vqqTDkcgj+DJV/Eef1dRzXFjwWPbUJI4mMq4mvV6YGh07KDQQ97cN5Pcnx/pRrMEDp6QABugF1xzn7ZRcaadakykJdaJ0/0oq9PqGVDgzGAiRYOlEgygZQCVFMoFAJQMooSgZQCVR1KyhJkIOQwNGNUHDgACYM+EVnqUHXBzKQBPMEfUK1GZ+410VDafyDv8Ciqsp06jMummYwMZ8oRne/Z/selc4Sc0y8e0IxPmVfxncms398xv4qi4NBLhHxz3V8U8saemfuPcX66uz7m/AKa3mNvUPLg2lSaHVHic+yOSpienNDotl0l7nuOpHpn3JuqtUokmWvLTyM/dKho3NJbUJ8HlFaAUDKhAlCGUIEoplCBKBlCBKLAlCDcoQbkIbkI5JzPCEcl0unhCOKoY8RUAI4KpGDqKh6T1seXUnDLXajyr7SRz1RNb+vp1Wj1sAqN76Jns3LlYeurs6ur04ozI9+VrMjHltkaw5tB220es4lx08lZ9unr439I9tMRfcXZLjqSppy1NqBxQg3IQCQTlCCHQhDcoQLkWG5CBchDchAuRYFyENyEC5UiW8FeWoO8FJpB3gk0h3gkIBqgDukIx9RVvBjLQJE5WsxNZWl7hEkjTOR9VYyFB1nyKl8tGCDqO2EiePz5rA+KXW/KcCA4QSr+OW/PL49I7TAHON9QnLu/wCvCjtMxQVWgztyfphSKvT6m15Gg7JFahVBCkWODW+aMwISI73UindCQDdHKQO4kA3PKQDcSB3UgG6kA3UgG6rBlFUcrpHPsdzykOhvKQ6O4kOk6tUuFo96Q6RqOhoaDMJGenDazGttkDukOk6lQ1HE0yL2SQQYlIm+VY5NSvI18qOdutTasumJI/hWN55K0nuyBE95KRrPJelJ/f7kjXTQHwNUi9OTU+Z9EidO9xIvQbiQ6O55SHTk1Y7pDo7iQ6O4kOg3PKQ6DcKQ6O4eUh0BqFInTFkFbcBDnA4JQd3P/MULoEuOpJQc2lBzUkDRBwAXGFEFzYHhFZSbapjGVn9RSnnAKuC4vGkiOFpape8QbihdHdf+YoXXO48u/cULpudyUKEnlCg57gNShXLajicklCu7jOqFC9w7lCg6s8DBKhdD8Q8nVC6O+7lC6d1x9pUup7zuVmhFZ3KtB33cpSnfdylKd535ilKTWJ1KUEVY0SgGpISjNVy6eVnUVoODW6K4K7ytUd5KBveEoG4JnKUdbyUDdSgGpIhKgMdalB3AlU3jlKOS4FKjlQHEaqgY5QQuKwG8oDeVQ3lShvPCoN6BvShvQckyoC10CFR1egb0DegbwgbwgbggbvKBvHKBuQN/lKG/ygF3lAl3lKOHunRQCFAIKA5QDKBQGUCqFAoplEMoplEFAoFAJQKBQP0QKBQBAoFB/9k=iVBORw0KGgoAAAANSUhEUgAAADAAAAAgCAIAAADbtmxLAAABmGlDQ1BpY2MAAHjapdG/axMBGMbxTy4tldJSwSAiHW4ootKCqIOrVShIkRIrJNUluUvaQi4Nd1dEXAQHF4cOXVRcLOLirJv4BygIggqCi7sUBRcpcbiDgtBBfOGF5/315eV9qR7qRUk2EpL087S+MB82mivh2BeBcUcddrwVZYOLS0uLDrRfH1Xgw1wvSjL/ZpNxJ4uohFiKBmlOZYC7t/JBTmUXtWitFROMYDZtNFcIzqDWLvRl1FYL3UAtXa5fIughXC30A4TtQr9AGK2lCcFbzMRJPybYxWScxDFVGE16m1G5ZwUTnf71aziPaXUsYB4h2tjEOnrIMVfG/QJyAC/GtKvYKFlRqQe4jbTkrGKtZM+WvZvI0CnjbtnfKb1XMtBoroR//yzrnjtbbDRxhdFvw+HP04w9Zu/+cPj76XC4t0P1M2+29+c3trnwnerWfm7mCVP3ePl6P9d+xqstjn0dtNIWitMG3S4/njPZ5Mh7xm/8b734Z1m384nlOyy+4+EjTnSZunkyzsP1ft5J+63eKWT1hXn4AzDofghlJQBJAAAACXBIWXMAAAsSAAALEgHS3X78AAACInpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjahVRJtiQhCNx7ijpCMIhyHNPU9/oGffxeaNY3p/5VC5IAQkAhtL9/evh8Pp+PiwaNKZubAYDuugNcMH4ZIAN6A6ATo68kdAA8VQ1DkoEIq2EILiBiALIQDTISWvz3SSQNJHwnilWTGgC/ZMSa1Fc8TDznZH4rgWOtRrwQKGh8VyNZ8bAY9Ccj1EGXUI0JwNE3n3itxrzis7Sq1TgBiNMwesKo1TjfcdZqXBaiWRpLrcbbEjBLU63G9QGv1bit+CSKWi2W8+3QLDluF/wIBgBEaNQWNSjFzHj7/zgOP92EBap3v2BqlNi2pEbGVi0yBNwkcRPiTVxIJDVLRgJxEXGLRgAgLBASkiIIwlIEYgyBJCnC4lKExN6yGSW6SD961nvvQaxhBZq4rbptbX1HlJPSokN37t9m9957a5utDux7Xwk06WnWWOJ2yqgkPqW4e2urnmNPK0HMtq0Hkkc7ZbSXUleHiNMIoGy7r/ppEwAIV+Amv1rS/3ghgCz23ns+m/HrASdJMWT2chsBiS2z73fcLGd+3E8hZ05nQ81zzOW2n8Saj1VzwTMHZ+g6xcPg5ozLASM7Z/hl9kaPnPFQmrcyvm8lFKbrAQwAoegtYFy34rEXRSFP/qEo4tmQ0wywlwPyG5G/BJQXvF5wOR4k7m9HjlupR/y6Mp42RjhWxm+Oh99BvMrwD3UCiGvkpxuRAAAACXZwQWcAAAAwAAAAIACELJ4GAAALGklEQVRYw11YW48dV1b+1tq7qs6t+/TldPsSx3bbcRwncWY0A4LMCOYFXpgHJCR4QvwAnpAQj/wB/gR/ACR4QUKDECMUEjLOZew4zsRxuu122+52n9Pnfuqy9/p4qNNtD1tLpVKpap/vrMu31rdl/nAgIjSpF0kAJAEHGJwAAIQheqeARVqomCQZGUkjSYLmTAyAkCJiESRVNYQAaL3h8k3SzPj6MjEzsr7SqyoAcRABQItRVZ14kqifmNEkTZNiUZiZ934xm4WE3mva8GYGAA5UJ8YYIyCipiKk1ZuTBAhQBGZQFRKvTAgBaQBIeOekBqpa+0gBxFgAlmhqhixJzUKMRVEUx/3RWmel3z9xzrVX2+tuRb3WnrDKVFUEgKlCVWI055WMZ76AieipX0AYzYwQUZqZqJD0tKCqFJAxhKiqSZKooirj06fPMt/odlezhngFYar+0e7jxWLR6/Vc7ubzpNnM4BlDSDLvvQ8hnAYFIlCFRUDEjASgIGFGEcBIoSrMCFAVhgiKTxJPkgJVSeBBhKqaTCb5Ip4cD/efPP/g9q2soSvdTp7nAuv2Vk/2BoHFyWgRYxVjbDezRiMDMicNxqCqqhIZVZxZVK3zaRkgXYaMdeDMoMoapSpo8GSE1t6ihaCqPs3WV/VwPpxOp8fHRw++cUmq7XYzSbLV1W5vu3fw7Emn0xwcD+ZzF8vKQtlI09R7J6SXOldgEDEwAmdguMyYV/lEVWEkARExEkoVBxHWxeUSFefK6fTJ48dlme/sXN7a3vjVnf8NIQ6Hk1ajOZ+Nf/3ZZ9Uij0V+fedqM0v2nz5ut7LtCz1GC2WVJqmry1KgZKLqlbo0qLPanJrAVKgSRX/LPElxQF0smiDy6Ojo7pd3qXLjxo2r1y8fnwxORpN8Nt/u9fLF5OTFcRVKDWE0HJZF2O71IsOzZ0+e7D3tdDo7168miU9SJ6IhBIGD2KuKMpHaPwoFXkXq9Aak+/u//TsFRCEgEAljjFtbW+UiHPb765sbJ8M+Y9HtdAbDgWs0pSge7O1u9Tar+Xwwmy0m03I0XpgbjydZlk2n43armaVOJIqQDEIIIKBABK/iBYuAnT4HwJrx1CkhRosAIRBBo93ImunO25dv/eBmb231+rUrRTH/we1ba+udhw/uSoZGOzt38Vx/1D85folYLhazqpg3mj5ruNWVTqPhxcEsAOa8ihJiAhMEQVChCgXmhKcWT41O6IGq5kCjqPOTk9F4PF7rrlvKRtQHjx/d2Lk+mgy+evrwhzs3Xuzv0tmbb5z79LNPzm9utdorEoNkzPPx+x+812o10tR7DyCqUwCMQUUIUqm2JOolbb/GjmbwoDGS9GZBnYM4IS0E5+TChS1Nk7Z28uPhW29euvPRf2fN1pdffNE1vXnzxsGgf/B036duvbce5tXG2uZkfnL79q3t8+sA4Rws0CJIAOI8LADUusLqeC0rTl4RJgyg1Fe+fB7yUrxTQoRWVoExbWTjl6P5fD7dO6yIF4P+bDK/92T3hzffLWGffPq5c7K1uf7hj3+PrLqbqxffuDQc9VdWVtY31846l1CFqJlalk8gr/UxAIzLLrZkbVK5WHgHhFIYmS+K6ZhFkY/Hi/5gPOhLUzvnu73L59KVxjyffXH314vFIsbYaTXeuXFtcHx4sPd9S+3l84PMwTsyBrMgQhUIgrEUREWUU4O8uhcLdW45BsWpiVRgoSyYTxYn/ee7e9/f/2Z8eOwYm8pko4EktDvpzOZXL5z3Dd3b2/vi/r1G0795cat//GxrvWPTaW+lvdVdXUkTCaVagAUrF6wKVSAGxIAQJEZYiVjSSrBSq4SVWCFWKINYpQzK4FHmhqjOgbF/+Hx0dJyXtv/46ZuXtrrd1V6ruRhNJqPZlfbq5999/Dt/+LNf/tf/nEyH585t73338OrVS3E8Pnl+MJnOi7i4fG1no7cJ79Sh7vPISwCwZYCERN3TjQCFZFxGE3FJV97iXCGIKBZlcyV799zbIdhsNnvyaP/x3r6Z+Tx02i6Kv/7WO8bFX/3ZT37xyZ2yf9Ta2n73vZ1vf/Xlv338+R/97MOVjc63X99fbXduvfuONBJTAlDxiBGAWKQZSVn2BZ4lDYwAlDQzkF7LEmYQyUSTdkvTzNuiZLz25vlOt3N0cPTwxcH7W2/9+NbN0Uef3Pvs6w/+9KcraePb3+z+6NKF+cHLvvN/89d/2SQsTSdr3clwMh0M1nvr0ki4yI0iQgBSu8dYOwxm4BIEyTrTEY1mHrNpZD3KiMIhlLEokljKWueyytsX3ji/2rqzuzt4Obh95eLd3+ztf7Xv1e2sp8OXw73h8Od//FNNtIh5Rqx322tZWoWimo1c7hQi4mgBxtPpA3VBkXQ0M8BOh5VoS3D8j3+CACqsR4EYzUyIalqaCqCxyIsB/uFf//lPfv93R/2jf/z4m0Zmf/6j977af/wXH/7B6ubK+dVV2+g6D0Yzg4OoA0kRrYoiEXcarFfzq7IueJKsYZktAXl7MRURiARakiQ08xAACHCGybj/i3v3ZoNyDa3/vPPg59cuf/fi4GKjPRmH99cuHT5+Ouv3ipV5b2ve2lxRdfPJLMa4ttKxEEl68ZH52bh4xkDhbLI2OYNiBpL+cHfmnKvfq2nf+eWXi2L+6PgQh42nk+GVc1uf7h9+f1T8ZOftXz76flu7L07Gs7FttCYvknH74PiDt24kjWa/PyvLElupJ2OMZFXBROS3hnoz8sxBS9+YYemhrw9L55xCFCYSalgR7Ehy/+DFnChC0kq3m37j9nr2L7uPnrw8UBb//t2emGsnybW8OW9M3uhc+fbprNWW0Qwh6MwKAQGEEIhlpccYSVLl/wkPM4unqEj6+7MyUZeIpj6pRxOJjDGO5qNpbNLsWTiSyt/dex5mR1Ui+9Phxe72w+moI1mmViSbG7xQNNpHlrhKBnkkcbIwi5WZGegpgMYYq6oCoKoiamZAfB1TWCoq+o/2DxzEiU/TNHXeBCGEqqqKGKGIDPOFTedDY8x8M5HEIRlXi5D7TtrsVpv5cDbZyB69eL7a6IjIfD6NNBHJy1A3tcRJCOV4Nmq1OiqZUgFznonzZVWIECoqXjWpijJGevVipFkZqipYKt6JE1XXjj5tJHk+n41jptrtrifqptNpq9WaTMcqyXon9VlqxHgyi5GjWa6qeZ5DJcsyM6OomVm04WQwnY3XIGkCQGEhzktjORoN8yp3zqVpI0lSUNXB59OhiChE1RdaSK0XSTNqoSSbmQe8F8Bi4jRN00WRr3TY7jSzJAEAQZIkCBUQo1aqmtSTHmJkrGApQtu7lodKKXDQGCyaaJo4mgeAEEPM667sd59/dyoQpUYDUQBCpZiqqmrNIgCEIKlgWS1OTl4OYl9gRoo40VgrRhGpP0G9qMZgFieTKgaKOFXQgolaCE7MBOrgnEO0aKWfLI7rWRaAnC4ATv3ZpiLiVQFYoCmzLAuhHI5eMsInIBkNUXTZUAERAVlvFSrziZoZFxOaaK3HAJOw1K9ArQXKMl/MJ7Ld6Z0l/1m86qMCGEXEe7+EW0+g4iFljCHxLQGcWq0NUp/Ur52K+Vc3ohrrFrs8PzhlJgBiKt7MYoxVKIpiIRudtdc9QSxheTPnHIAYCaNzTlXNzKg+YWRQpgKQRjGIB8Pyb0BJnv1ikFoYOwBEBKAEqFQlaRalFtqkc440n3IZrNp7Z4LExMpgy4SAVBaFVp9zhBCIaBQnDqhPSQgKIAJPksal+AG8ogpRnQCIUVRFoSEE9QIaLNCpqiPFQUK0/wPxadi/ncvxsAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxMS0wMi0yOFQwMjo1NTowMiswMTowMGbLlncAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTEtMDItMjhUMDI6NTU6MDIrMDE6MDAXli7LAAAAEXRFWHRqcGVnOmNvbG9yc3BhY2UAMix1VZ8AAAAgdEVYdGpwZWc6c2FtcGxpbmctZmFjdG9yADF4MSwxeDEsMXgx6ZX8cAAAAABJRU5ErkJggg==
    pandoc-3.1.3/test/fb2/images.markdown0000644000000000000000000000056507346545000015622 0ustar0000000000000000This example test if Pandoc correctly embeds images into FictionBook. Small inline image: ![alt text a small PNG image][inline-image]. Paragraph image: ![alt text of a big JPEG image](fb2/test.jpg "image title text") ![alt text of a big missing image](missing.jpg) A missing image inline: ![alt text of missing image](missing.jpg). [inline-image]: fb2/test-small.png pandoc-3.1.3/test/fb2/math.fb20000644000000000000000000000110207346545000014121 0ustar0000000000000000 unrecognisedpandoc<p />

    List math:

    • E = m c^2

    • A = \pi r^2

    Inline math: x=\frac{-b \pm \sqrt {b^2-4ac}}{2a}.

    Display math:

    \int_a^b \! f(x)\,dx = F(b) - F(a).
    pandoc-3.1.3/test/fb2/math.markdown0000644000000000000000000000023107346545000015274 0ustar0000000000000000List math: - $E = m c^2$ - $A = \pi r^2$ Inline math: $x=\frac{-b \pm \sqrt {b^2-4ac}}{2a}$. Display math: $$\int_a^b \! f(x)\,dx = F(b) - F(a).$$ pandoc-3.1.3/test/fb2/meta.fb20000644000000000000000000000073107346545000014125 0ustar0000000000000000 unrecognisedBook title

    This is the abstract.

    It consists of two paragraphs.

    pandoc
    <p>Book title</p>
    pandoc-3.1.3/test/fb2/meta.markdown0000644000000000000000000000014007346545000015270 0ustar0000000000000000--- title: Book title abstract: | This is the abstract. It consists of two paragraphs. --- pandoc-3.1.3/test/fb2/reader/0000755000000000000000000000000007346545000014045 5ustar0000000000000000pandoc-3.1.3/test/fb2/reader/emphasis.fb20000644000000000000000000000103407346545000016247 0ustar0000000000000000

    Plain, strong, emphasis, strong emphasis, emphasized strong.

    Strikethrough: deleted

    Subscript and superscript

    Some code

    pandoc-3.1.3/test/fb2/reader/emphasis.native0000644000000000000000000000155507346545000017074 0ustar0000000000000000Pandoc Meta { unMeta = fromList [] } [ Div ( "" , [ "section" ] , [] ) [ Para [ Str "Plain," , Space , Strong [ Str "strong" ] , Str "," , Space , Emph [ Str "emphasis" ] , Str "," , Space , Strong [ Emph [ Str "strong" , Space , Str "emphasis" ] ] , Str "," , Space , Emph [ Strong [ Str "emphasized" , Space , Str "strong" ] ] , Str "." ] , Para [ Str "Strikethrough:" , Space , Strikeout [ Str "deleted" ] ] , Para [ Subscript [ Str "Subscript" ] , Space , Str "and" , Space , Superscript [ Str "superscript" ] ] , Para [ Str "Some" , Space , Code ( "" , [] , [] ) "code" ] ] ] pandoc-3.1.3/test/fb2/reader/epigraph.fb20000644000000000000000000000061607346545000016242 0ustar0000000000000000

    Body epigraph

    Section epigraph

    Subsection epigraph

    pandoc-3.1.3/test/fb2/reader/epigraph.native0000644000000000000000000000075607346545000017064 0ustar0000000000000000Pandoc Meta { unMeta = fromList [] } [ Div ( "" , [ "epigraph" ] , [] ) [ Para [ Str "Body" , Space , Str "epigraph" ] ] , Div ( "" , [ "section" ] , [] ) [ Div ( "" , [ "epigraph" ] , [] ) [ Para [ Str "Section" , Space , Str "epigraph" ] ] , Div ( "" , [ "section" ] , [] ) [ Div ( "" , [ "epigraph" ] , [] ) [ Para [ Str "Subsection" , Space , Str "epigraph" ] ] ] ] ] pandoc-3.1.3/test/fb2/reader/meta.fb20000644000000000000000000000127707346545000015375 0ustar0000000000000000 First Middle Last Another Author Book title

    Book annotation

    Second paragraph of book annotation

    foo, bar, baz 2018
    <p>Body title</p>
    pandoc-3.1.3/test/fb2/reader/meta.native0000644000000000000000000000244407346545000016207 0ustar0000000000000000Pandoc Meta { unMeta = fromList [ ( "abstract" , MetaBlocks [ Para [ Str "Book" , Space , Str "annotation" ] , Para [ Str "Second" , Space , Str "paragraph" , Space , Str "of" , Space , Str "book" , Space , Str "annotation" ] ] ) , ( "author" , MetaList [ MetaInlines [ Str "First" , Space , Str "Middle" , Space , Str "Last" ] , MetaInlines [ Str "Another" , Space , Str "Author" ] ] ) , ( "date" , MetaInlines [ Str "2018" ] ) , ( "keywords" , MetaList [ MetaString "foo" , MetaString "bar" , MetaString "baz" ] ) , ( "title" , MetaInlines [ Str "Book" , Space , Str "title" ] ) ] } [ Header 1 ( "" , [] , [] ) [ Str "Body" , Space , Str "title" ] ] pandoc-3.1.3/test/fb2/reader/notes.fb20000644000000000000000000000100107346545000015560 0ustar0000000000000000

    Note 1.

    Second note 2.

    <p>1</p>

    Note contents

    <p>2</p>

    Second note contents.

    pandoc-3.1.3/test/fb2/reader/notes.native0000644000000000000000000000113007346545000016400 0ustar0000000000000000Pandoc Meta { unMeta = fromList [] } [ Div ( "" , [ "section" ] , [] ) [ Para [ Str "Note" , Space , Note [ Para [ Str "Note" , Space , Str "contents" ] ] , Str "." ] , Para [ Str "Second" , Space , Str "note" , Space , Note [ Para [ Str "Second" , Space , Str "note" , Space , Str "contents." ] ] , Str "." ] ] ] pandoc-3.1.3/test/fb2/reader/poem.fb20000644000000000000000000000116607346545000015404 0ustar0000000000000000
    <p>Poem title</p>

    Poem epigraph

    Subtitle <p>First stanza title</p> Verse More verse One more stanza Author April 2018
    pandoc-3.1.3/test/fb2/reader/poem.native0000644000000000000000000000140407346545000016214 0ustar0000000000000000Pandoc Meta { unMeta = fromList [] } [ Div ( "" , [ "section" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Str "Poem" , Space , Str "title" ] , Div ( "" , [ "epigraph" ] , [] ) [ Para [ Str "Poem" , Space , Str "epigraph" ] ] , Header 2 ( "" , [ "unnumbered" ] , [] ) [ Str "Subtitle" ] , Header 2 ( "" , [] , [] ) [ Str "First" , Space , Str "stanza" , Space , Str "title" ] , LineBlock [ [ Str "Verse" ] , [ Emph [ Str "More" ] , Space , Str "verse" ] ] , LineBlock [ [ Str "One" , Space , Str "more" , Space , Str "stanza" ] ] , Para [ Str "Author" ] , Para [ Str "April" , Space , Str "2018" ] ] ] pandoc-3.1.3/test/fb2/reader/titles.fb20000644000000000000000000000072607346545000015751 0ustar0000000000000000 <p>Body title</p>
    <p>Section title</p>
    <p>Subsection title</p> <p>with multiple paragraphs</p>
    <p>Another subsection title</p>
    pandoc-3.1.3/test/fb2/reader/titles.native0000644000000000000000000000162507346545000016565 0ustar0000000000000000Pandoc Meta { unMeta = fromList [] } [ Header 1 ( "" , [] , [] ) [ Str "Body" , Space , Str "title" ] , Div ( "" , [ "section" ] , [] ) [ Header 2 ( "" , [] , [] ) [ Str "Section" , Space , Str "title" ] , Div ( "" , [ "section" ] , [] ) [ Header 3 ( "" , [] , [] ) [ Str "Subsection" , Space , Str "title" , LineBreak , Str "with" , Space , Str "multiple" , Space , Str "paragraphs" ] ] , Div ( "" , [ "section" ] , [] ) [ Header 3 ( "" , [] , [] ) [ Str "Another" , Space , Str "subsection" , Space , Str "title" ] ] ] ] pandoc-3.1.3/test/fb2/test-small.png0000644000000000000000000000777207346545000015413 0ustar0000000000000000PNG  IHDR0 ۶lKiCCPiccxڥѿkO.-R "n(҂U(H+$%KB. wWD\]T\,⬛( )qA|}EI606+qGveKK_U\/J2fq'XiNeANeh`6m4WΠ.eV @-]_"!\-B@ [I?&d1UMzQgk8iu,`!:z1Wr/ƴ(YQbdϖ)n)W2h,;[l4qoӌ=fppC3o7~n Sxz?~ƫ-}.?3{oogY;,#Nty2~I)dy0~e%I pHYs  ~"zTXtRaw profile type exifxڅTI$!{:B0r}^h7U B@!z|>)\0~ z$t{kcO+A̶G;eRWliW&Zx!,{>'I1dr-w,g~O!gNgCs嶟ĚUs3g:#;geFP2o% -`\E!O(ِ ^p9$oG[G26F8VoAuk vpAg0 , IDATX]X[WVڻέtvq'qf4^$$xB$xAB#2e8qvv~xm[KRj˷ַep "4I$!zEZ$I#IL "b$U5hM213ҫ*q@QUx$MbQ~1kfT'# "՛PfPLiHxZHXhj,IBEQZg?qεWnE֞TUBUb4界g_@͌Q1I*ӧ2vWxab\CH2!"PE@Č aFH*POOUIAL&"<+NVOhccl7F#2' ƠUYTi ]u̠*hdޢ>Wp>NGqIv3InowIsBH{':W`10g`̘WDUa$1Je\՝ !V9g"E~}j3K>n =F e&Rdꕺ4ڜTEctÁk4(n6|0-&r4^'YMvN$ B @>)!F!AȚۗofom+E1[k띇JF;;w\?9~X.7>kՕN,漊bAP 愧ON聪@x<^[Fع> z;7^ٛoOon+dj5{ SAER$%mƎf1fA8!-…-Mv[o^g֗_|5ytߧnd~r,"H<,Ժx-+N^& W|RSBVV1md㗣|>;l2d7-a|s߸4WVV7:PZO 1.dmRXxR/ENj`y~0΋|mg ԡKeDӍd\FqIW\!(es%{!l6{h޾~:yok\Qu,ƸұIzٸx@l69bpw末߫i嗋bs[~Td_>~[/NƳm&/qn$f?+['cdUD䷆z3AKߘa顯KB&jXHrŜ(BJ~z/G1ilY8{fGU"#YV$P4GJy$q0)"jf@|SX**ĉO4u! MCc|3!WNVp6x|>4P7Ix6j:*RseU**^52FzbY*X*މU׎>m$y>c'i՚L*z'Yjx2YyC%23Yd0 i@a!Kc9 *wΥi#IRPӡ(DZHI3j$b4MEt4$A$Vԓbd`)BۻJ)p,h8Cww*FQBj" `Y-NN^b_`F8X+F?A`'*8UЂZNCh,Y.N٦"UX), ^2'  QtPYo*hԯ@2_'%YE{[O!e!-Z RԯW7adPF1o@IbZ;DT%iڤs4r{g`˄TVsh'OI Oƥ QQTE!,Щ#ABiؿ%tEXtdate:create2011-02-28T02:55:02+01:00f˖w%tEXtdate:modify2011-02-28T02:55:02+01:00.tEXtjpeg:colorspace2,uU tEXtjpeg:sampling-factor1x1,1x1,1x1pIENDB`pandoc-3.1.3/test/fb2/test.jpg0000644000000000000000000000756707346545000014303 0ustar0000000000000000JFIFHHExifMM**1>2\GF GI (i\ p! |" ' ($* <+D,L.TZ[PENTAX PENTAX K20D darktable 0.7.1+913~ga0939ea2011:02:06 07:29:16PENTAX K20D?6kAM/)G@#[/XkVڬPte^f"'n      2 2011:02:06 07:29:162011:02:06 07:29:16 ICC_PROFILElcms mntrRGB XYZ  acspAPPL-lcms desc Pcprtpwtptchad,rXYZ0bXYZDgXYZXrTRCl gTRC bTRC chrm$dmnd dmddmluc enUS4RGB built-inmluc enUSdNo copyright, use freelyXYZ -sf32 J*XYZ o8XYZ $XYZ bparaff Y [paraff Y [paraff Y [chrmT{L&f\(dt internal)sRGBC (B+(%%(Q:=0B`Ued_U][jxjqs[]gɺǙC(#(N++Nn]n2!1QAa"Bq#R2$b1!A ?i@0 ub;( P(@( QJ!AÞE `̪:`%t*  @QA B@hX p-g*QrK57ƈYΨ8da9ƟQ9Et^]:B 4I' T @* P2u4xªᕚePC"5Ak i3P5.3Si5A]1&ZH>p*_u^3*4Q{YHc*\8  PAe *6$UP4 ћu*_Ӻ*Ù>4g'n M;n :OAm.\\rp>%q2]*R24:$)H2 4k%@P (  Pr"YnAoNÚ1#ʪZ)<Cҏ;(y. ޅAkOAdbbKNyEU68$#Ϗ Ф ٗzAh( E @Qe39s~ Qo V81$MXE {.=~*5ZjQsD]}Ђ]S:Zm "D( u?DMlEh8QZ 08~e!P*E PTVVYpU $X:Q P QLP @(JP Tu+(IэPp& EgA2}BECit3.f01(FwgsL{B1>e_w&|*A.u|Szg= kyC˃iRhuGϲ9*bzsCt:rn(e-<ҡsImB|QZ@ʄ BBBePr#s)u)<=#}Br ;LV;r~R*^FEjA E o3#ԊwB@7G) )HԀnu Uϱo)C.zCj: Fzpkm;:NCQ"IUMJ5򣝺ڲ#V7J{Oy)%ItTӓS}'N/AyHtՎC7<: RR'LYmC A KPsR@Q́jVQJy*฼i"8ZZn(]b;. rP'(9Rrڎ'$+ ;(:*C'T.Bq.VhEgr}ܥ)w)JwRXJPEX(5\yYV[+QJn o%u(JZM㔣Rj.+7CyR ށ(oA2-tTuz  nrw wtPP(P P@ )C(Q@%@(Apandoc-3.1.3/test/fb2/titles.fb20000644000000000000000000000110707346545000014501 0ustar0000000000000000 unrecognisedpandoc<p />
    <p>Simple title</p>

    This example tests FictionBook titles.

    <p><emphasis>Emphasized</emphasis> <strong>Strong</strong> Title</p>
    pandoc-3.1.3/test/fb2/titles.markdown0000644000000000000000000000013107346545000015646 0ustar0000000000000000# Simple title This example tests FictionBook titles. # *Emphasized* **Strong** Title pandoc-3.1.3/test/haddock-reader.haddock0000644000000000000000000000250007346545000016303 0ustar0000000000000000This file tests the Pandoc reader for Haddock. We've borrowed examples from Haddock's documentation: . The following characters have special meanings in Haddock, \/, \', \`, \", \@, \<, so they must be escaped. \* This is a paragraph, not a list item. \> This sentence is not code. \>\>\> This is not an example. The references λ, λ and λ all represent the lower-case letter lambda. This is a code block: > map :: (a -> b) -> [a] -> [b] > map _ [] = [] > map f (x:xs) = f x : map f xs This is another code block: @ f x = x + x. The \@...\@ code block /interprets markup normally/. "Module.Foo" \"Hello World\" @ Haddock supports REPL examples: >>> fib 10 55 >>> putStrLn "foo\nbar" foo bar That was /really cool/! I had no idea @fib 10 = 55@. This module defines the type 'T'. The identifier 'M.T' is not in scope I don't have to escape my apostrophes; great, isn't it? This is a reference to the "Foo" module. This is a bulleted list: * first item * second item This is an enumerated list: (1) first item 2. second item This is a definition list: [@foo@] The description of @foo@. [@bar@] The description of @bar@. Here is a link: is a fun language! pandoc-3.1.3/test/haddock-reader.native0000644000000000000000000001735207346545000016207 0ustar0000000000000000Pandoc Meta { unMeta = fromList [] } [ Para [ Str "This" , Space , Str "file" , Space , Str "tests" , Space , Str "the" , Space , Str "Pandoc" , Space , Str "reader" , Space , Str "for" , Space , Str "Haddock." , SoftBreak , Str "We've" , Space , Str "borrowed" , Space , Str "examples" , Space , Str "from" , Space , Str "Haddock's" , Space , Str "documentation:" , Space , Link ( "" , [] , [] ) [ Str "http://www.haskell.org/haddock/doc/html/ch03s08.html" ] ( "http://www.haskell.org/haddock/doc/html/ch03s08.html" , "http://www.haskell.org/haddock/doc/html/ch03s08.html" ) , Str "." ] , Para [ Str "The" , Space , Str "following" , Space , Str "characters" , Space , Str "have" , Space , Str "special" , Space , Str "meanings" , Space , Str "in" , Space , Str "Haddock," , Space , Str "/," , Space , Str "'," , Space , Str "`," , Space , Str "\"," , Space , Str "@," , Space , Str "<," , Space , Str "so" , Space , Str "they" , Space , Str "must" , Space , Str "be" , Space , Str "escaped." ] , Para [ Str "*" , Space , Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "paragraph," , Space , Str "not" , Space , Str "a" , Space , Str "list" , Space , Str "item." , SoftBreak , Str ">" , Space , Str "This" , Space , Str "sentence" , Space , Str "is" , Space , Str "not" , Space , Str "code." , SoftBreak , Str ">>>" , Space , Str "This" , Space , Str "is" , Space , Str "not" , Space , Str "an" , Space , Str "example." ] , Para [ Str "The" , Space , Str "references" , Space , Str "\955," , Space , Str "\955" , Space , Str "and" , Space , Str "\955" , Space , Str "all" , Space , Str "represent" , Space , Str "the" , Space , Str "lower-case" , Space , Str "letter" , Space , Str "lambda." ] , Para [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "code" , Space , Str "block:" ] , CodeBlock ( "" , [] , [] ) "map :: (a -> b) -> [a] -> [b]\nmap _ [] = []\nmap f (x:xs) = f x : map f xs" , Para [ Str "This" , Space , Str "is" , Space , Str "another" , Space , Str "code" , Space , Str "block:" ] , Para [ Code ( "" , [] , [] ) "f x = x + x." , LineBreak , Code ( "" , [] , [] ) "The @...@ code block " , Emph [ Code ( "" , [] , [] ) "interprets markup normally" ] , Code ( "" , [] , [] ) "." , Code ( "" , [ "haskell" , "module" ] , [] ) "Module.Foo" , Code ( "" , [] , [] ) "" , LineBreak , Code ( "" , [] , [] ) "\"Hello World\"" ] , Para [ Str "Haddock" , Space , Str "supports" , Space , Str "REPL" , Space , Str "examples:" ] , Para [ Code ( "" , [ "prompt" ] , [] ) ">>>" , Space , Code ( "" , [ "haskell" , "expr" ] , [] ) "fib 10" , LineBreak , Code ( "" , [ "result" ] , [] ) "55" ] , Para [ Code ( "" , [ "prompt" ] , [] ) ">>>" , Space , Code ( "" , [ "haskell" , "expr" ] , [] ) "putStrLn \"foo\\nbar\"" , LineBreak , Code ( "" , [ "result" ] , [] ) "foo" , LineBreak , Code ( "" , [ "result" ] , [] ) "bar" ] , Para [ Str "That" , Space , Str "was" , Space , Emph [ Str "really" , Space , Str "cool" ] , Str "!" , SoftBreak , Str "I" , Space , Str "had" , Space , Str "no" , Space , Str "idea" , Space , Code ( "" , [] , [] ) "fib 10 = 55" , Str "." ] , Para [ Str "This" , Space , Str "module" , Space , Str "defines" , Space , Str "the" , Space , Str "type" , Space , Code ( "" , [ "haskell" , "identifier" ] , [] ) "T" , Str "." , SoftBreak , Str "The" , Space , Str "identifier" , Space , Code ( "" , [ "haskell" , "identifier" ] , [] ) "M.T" , Space , Str "is" , Space , Str "not" , Space , Str "in" , Space , Str "scope" , SoftBreak , Str "I" , Space , Str "don't" , Space , Str "have" , Space , Str "to" , Space , Str "escape" , Space , Str "my" , Space , Str "apostrophes;" , Space , Str "great," , Space , Str "isn't" , Space , Str "it?" , SoftBreak , Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "reference" , Space , Str "to" , Space , Str "the" , Space , Code ( "" , [ "haskell" , "module" ] , [] ) "Foo" , Space , Str "module." ] , Para [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "bulleted" , Space , Str "list:" ] , BulletList [ [ Para [ Str "first" , Space , Str "item" ] ] , [ Para [ Str "second" , Space , Str "item" ] ] ] , Para [ Str "This" , Space , Str "is" , Space , Str "an" , Space , Str "enumerated" , Space , Str "list:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Para [ Str "first" , Space , Str "item" ] ] , [ Para [ Str "second" , Space , Str "item" ] ] ] , Para [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "definition" , Space , Str "list:" ] , DefinitionList [ ( [ Code ( "" , [] , [] ) "foo" ] , [ [ Para [ Str "The" , Space , Str "description" , Space , Str "of" , Space , Code ( "" , [] , [] ) "foo" , Str "." ] ] ] ) , ( [ Code ( "" , [] , [] ) "bar" ] , [ [ Para [ Str "The" , Space , Str "description" , Space , Str "of" , Space , Code ( "" , [] , [] ) "bar" , Str "." ] ] ] ) ] , Para [ Str "Here" , Space , Str "is" , Space , Str "a" , Space , Str "link:" , Space , Link ( "" , [] , [] ) [ Str "http://haskell.org" ] ( "http://haskell.org" , "http://haskell.org" ) ] , Para [ Link ( "" , [] , [] ) [ Str "Haskell" ] ( "http://haskell.org" , "http://haskell.org" ) , Space , Str "is" , Space , Str "a" , Space , Str "fun" , Space , Str "language!" ] , Para [ Link ( "" , [] , [] ) [ Str "Click" , Space , Str "Here!" ] ( "http://example.com" , "http://example.com" ) ] ] pandoc-3.1.3/test/html-reader.html0000644000000000000000000004100407346545000015223 0ustar0000000000000000 Pandoc Test Suite

    Pandoc Test Suite

    This is a set of tests for pandoc. Most of them are adapted from John Gruber's markdown test suite.


    Headers

    Level 2 with an embedded link

    Level 3 with emphasis

    Level 4

    Level 5

    Level 1

    Level 2 with emphasis

    Level 3

    with no blank line

    Level 2

    with no blank line


    Paragraphs

    Here's a regular paragraph.

    In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item.

    Here's one with a bullet. * criminey.

    There should be a hard line break
    here.


    Block Quotes

    E-mail style:

    This is a block quote. It is pretty short.

    Code in a block quote:

    sub status {
        print "working";
    }
    

    A list:

    1. item one
    2. item two

    Nested block quotes:

    nested

    nested

    This should not be a block quote: 2 > 1.

    Box-style:

    Example:

    sub status {
        print "working";
    }
    
    1. do laundry
    2. take out the trash

    Here's a nested one:

    Joe said:

    Don't quote me.

    And a following paragraph.


    Inline quotes

    Normal text but then a inline quote.

    Missing a cite attribute means its just normal text


    Code Blocks

    Code:

    ---- (should be four hyphens)
    
    sub status {
        print "working";
    }
    
    this code block is indented by one tab
    

    And:

        this code block is indented by two tabs
    
    These should not be escaped:  \$ \\ \> \[ \{
    

    Lists

    Unordered

    Asterisks tight:

    • asterisk 1
    • asterisk 2
    • asterisk 3

    Asterisks loose:

    • asterisk 1

    • asterisk 2

    • asterisk 3

    Pluses tight:

    • Plus 1
    • Plus 2
    • Plus 3

    Pluses loose:

    • Plus 1

    • Plus 2

    • Plus 3

    Minuses tight:

    • Minus 1
    • Minus 2
    • Minus 3

    Minuses loose:

    • Minus 1

    • Minus 2

    • Minus 3

    Ordered

    Tight:

    1. First
    2. Second
    3. Third

    and:

    1. One
    2. Two
    3. Three

    Loose using tabs:

    1. First

    2. Second

    3. Third

    and using spaces:

    1. One

    2. Two

    3. Three

    Multiple paragraphs:

    1. Item 1, graf one.

      Item 1. graf two. The quick brown fox jumped over the lazy dog's back.

    2. Item 2.

    3. Item 3.

    List styles:

                Nested

                • Tab
                  • Tab
                    • Tab

                Here's another:

                1. First
                2. Second:
                  • Fee
                  • Fie
                  • Foe
                3. Third

                Same thing but with paragraphs:

                1. First

                2. Second:

                  • Fee
                  • Fie
                  • Foe
                3. Third

                Tabs and spaces

                • this is a list item indented with tabs

                • this is a list item indented with spaces

                  • this is an example list item indented with tabs

                  • this is an example list item indented with spaces

                Fancy list markers

                1. begins with 2
                2. and now 3

                  with a continuation

                  1. sublist with roman numerals, starting with 4
                  2. more items
                    1. a subsublist
                    2. a subsublist

                Nesting:

                1. Upper Alpha
                  1. Upper Roman.
                    1. Decimal start with 6
                      1. Lower alpha with paren

                Autonumbering:

                1. Autonumber.
                2. More.
                  1. Nested.

                Definition

                Violin
                Stringed musical instrument.
                Torture device.
                Cello
                Violoncello
                Low-voiced stringed instrument.

                Inline Markup

                This is emphasized, and so is this.

                This is strong, and so is this.

                Empty and .

                An emphasized link.

                This is strong and em.

                So is this word.

                This is strong and em.

                So is this word.

                This is code: >, $, \, \$, <html>.

                This is small caps.

                These are all underlined: foo and bar.

                These are all strikethrough: foo, bar, and baz.


                Smart quotes, ellipses, dashes

                "Hello," said the spider. "'Shelob' is my name."

                'A', 'B', and 'C' are letters.

                'Oak,' 'elm,' and 'beech' are names of trees. So is 'pine.'

                'He said, "I want to go."' Were you alive in the 70's?

                Here is some quoted 'code' and a "quoted link".

                Some dashes: one---two --- three--four -- five.

                Dashes between numbers: 5-7, 255-66, 1987-1999.

                Ellipses...and. . .and . . . .


                LaTeX

                • \cite[22-23]{smith.1899}
                • \doublespacing
                • $2+2=4$
                • $x \in y$
                • $\alpha \wedge \omega$
                • $223$
                • $p$-Tree
                • $\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$
                • Here's one that has a line break in it: $\alpha + \omega \times x^2$.

                These shouldn't be math:

                • To get the famous equation, write $e = mc^2$.
                • $22,000 is a lot of money. So is $34,000. (It worked if "lot" is emphasized.)
                • Escaped $: $73 this should be emphasized 23$.

                Here's a LaTeX table:

                \begin{tabular}{|l|l|}\hline Animal & Number \\ \hline Dog & 2 \\ Cat & 1 \\ \hline \end{tabular}


                Special Characters

                Here is some unicode:

                • I hat: Î
                • o umlaut: ö
                • section: §
                • set membership: ∈
                • copyright: ©

                AT&T has an ampersand in their name.

                AT&T is another way to write it.

                This & that.

                4 < 5.

                6 > 5.

                Backslash: \

                Backtick: `

                Asterisk: *

                Underscore: _

                Left brace: {

                Right brace: }

                Left bracket: [

                Right bracket: ]

                Left paren: (

                Right paren: )

                Greater-than: >

                Hash: #

                Period: .

                Bang: !

                Plus: +

                Minus: -


                Links

                Explicit

                Just a URL.

                URL and title.

                URL and title.

                URL and title.

                URL and title

                URL and title

                Email link (nobody [at] nowhere.net)

                Empty.

                Reference

                Foo bar.

                Foo bar.

                Foo bar.

                With embedded [brackets].

                b by itself should be a link.

                Indented once.

                Indented twice.

                Indented thrice.

                This should [not] be a link.

                [not]: /url
                

                Foo bar.

                Foo biz.

                With ampersands

                Here's a link with an ampersand in the URL.

                Here's a link with an amersand in the link text: AT&T.

                Here's an inline link.

                Here's an inline link in pointy braces.

                Autolinks

                With an ampersand: http://example.com/?foo=1&bar=2

                An e-mail address: nobody [at] nowhere.net

                Blockquoted: http://example.com/

                Auto-links should not occur here: <http://example.com/>

                or here: <http://example.com/>
                

                Images

                From "Voyage dans la Lune" by Georges Melies (1902):

                lalune

                Here is a movie movie icon.


                Footnotes

                Here is a footnote reference(1), and another(longnote). This should not be a footnote reference, because it contains a space^(my note).

                (1) Here is the footnote. It can go anywhere in the document, not just at the end.

                (longnote) Here's the other note. This one contains multiple blocks.

                Caret characters are used to indicate that the blocks all belong to a single footnote (as with block quotes).

                  { <code> }
                

                If you want, you can use a caret at the beginning of every line, as with blockquotes, but all that you need is a caret at the beginning of the first line of the block and any preceding blank lines.

                text Leading space

                Trailing space text

                text Leading spaces

                Trailing spaces text

                Tables

                Tables with Headers

                X Y Z
                1 2 3
                4 5 6

                X Y Z
                1 2 3
                4 5 6

                Row headers

                X Y Z
                1 2 3
                4 5 6

                X Y Z
                1 2 3
                4 5 6

                X Y Z
                1 2 3
                4 5 6

                X Y Z
                1 2 3
                4 5 6

                X Y Z
                1 2 3
                4 5 6

                X Y Z
                1 2 3
                4 5 6

                X Y Z
                1

                2

                3
                4 5 6

                Tables without Headers

                1 2 3
                4 5 6

                tbody tags omitted

                1 2 3
                4 5 6

                empty head

                1 2 3
                4 5 6

                explicit body and foot

                1 2 3
                4 5 6

                Colspans and Rowspans

                1 and 2 3
                4, 5, and 6

                Numbers
                1 and 4 2 3
                5 6

                Attributes

                Cat X
                1 2 3
                4 5 6

                Tag omission

                thead, tbody, and tfoot

                X Y Z
                1 2 3
                4 5 6

                Empty Tables

                This section should be empty.

                pandoc-3.1.3/test/html-reader.native0000644000000000000000000023201007346545000015544 0ustar0000000000000000Pandoc Meta { unMeta = fromList [ ( "generator" , MetaInlines [ Str "pandoc" ] ) , ( "title" , MetaInlines [ Str "Pandoc" , Space , Str "Test" , Space , Str "Suite" ] ) ] } [ Header 1 ( "pandoc-test-suite" , [ "title" ] , [] ) [ Str "Pandoc" , Space , Str "Test" , Space , Str "Suite" ] , Para [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "set" , Space , Str "of" , Space , Str "tests" , Space , Str "for" , Space , Str "pandoc." , Space , Str "Most" , Space , Str "of" , Space , Str "them" , Space , Str "are" , Space , Str "adapted" , Space , Str "from" , Space , Str "John" , Space , Str "Gruber's" , Space , Str "markdown" , Space , Str "test" , Space , Str "suite." ] , HorizontalRule , Header 1 ( "headers" , [] , [] ) [ Str "Headers" ] , Header 2 ( "level-2-with-an-embedded-link" , [] , [] ) [ Str "Level" , Space , Str "2" , Space , Str "with" , Space , Str "an" , Space , Link ( "" , [] , [] ) [ Str "embedded" , Space , Str "link" ] ( "/url" , "" ) ] , Header 3 ( "level-3-with-emphasis" , [] , [] ) [ Str "Level" , Space , Str "3" , Space , Str "with" , Space , Emph [ Str "emphasis" ] ] , Header 4 ( "level-4" , [] , [] ) [ Str "Level" , Space , Str "4" ] , Header 5 ( "level-5" , [] , [] ) [ Str "Level" , Space , Str "5" ] , Header 1 ( "level-1" , [] , [] ) [ Str "Level" , Space , Str "1" ] , Header 2 ( "level-2-with-emphasis" , [] , [] ) [ Str "Level" , Space , Str "2" , Space , Str "with" , Space , Emph [ Str "emphasis" ] ] , Header 3 ( "level-3" , [] , [] ) [ Str "Level" , Space , Str "3" ] , Para [ Str "with" , Space , Str "no" , Space , Str "blank" , Space , Str "line" ] , Header 2 ( "level-2" , [] , [] ) [ Str "Level" , Space , Str "2" ] , Para [ Str "with" , Space , Str "no" , Space , Str "blank" , Space , Str "line" ] , HorizontalRule , Header 1 ( "paragraphs" , [] , [] ) [ Str "Paragraphs" ] , Para [ Str "Here's" , Space , Str "a" , Space , Str "regular" , Space , Str "paragraph." ] , Para [ Str "In" , Space , Str "Markdown" , Space , Str "1.0.0" , Space , Str "and" , Space , Str "earlier." , Space , Str "Version" , Space , Str "8." , Space , Str "This" , Space , Str "line" , Space , Str "turns" , Space , Str "into" , Space , Str "a" , Space , Str "list" , Space , Str "item." , Space , Str "Because" , Space , Str "a" , Space , Str "hard-wrapped" , Space , Str "line" , Space , Str "in" , Space , Str "the" , Space , Str "middle" , Space , Str "of" , Space , Str "a" , Space , Str "paragraph" , Space , Str "looked" , Space , Str "like" , Space , Str "a" , Space , Str "list" , Space , Str "item." ] , Para [ Str "Here's" , Space , Str "one" , Space , Str "with" , Space , Str "a" , Space , Str "bullet." , Space , Str "*" , Space , Str "criminey." ] , Para [ Str "There" , Space , Str "should" , Space , Str "be" , Space , Str "a" , Space , Str "hard" , Space , Str "line" , Space , Str "break" , LineBreak , Str "here." ] , HorizontalRule , Header 1 ( "block-quotes" , [] , [] ) [ Str "Block" , Space , Str "Quotes" ] , Para [ Str "E-mail" , Space , Str "style:" ] , BlockQuote [ Para [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "block" , Space , Str "quote." , Space , Str "It" , Space , Str "is" , Space , Str "pretty" , Space , Str "short." ] ] , BlockQuote [ Para [ Str "Code" , Space , Str "in" , Space , Str "a" , Space , Str "block" , Space , Str "quote:" ] , CodeBlock ( "" , [] , [] ) "sub status {\n print \"working\";\n}" , Para [ Str "A" , Space , Str "list:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "item" , Space , Str "one" ] ] , [ Plain [ Str "item" , Space , Str "two" ] ] ] , Para [ Str "Nested" , Space , Str "block" , Space , Str "quotes:" ] , BlockQuote [ Para [ Str "nested" ] ] , BlockQuote [ Para [ Str "nested" ] ] ] , Para [ Str "This" , Space , Str "should" , Space , Str "not" , Space , Str "be" , Space , Str "a" , Space , Str "block" , Space , Str "quote:" , Space , Str "2" , Space , Str ">" , Space , Str "1." ] , Para [ Str "Box-style:" ] , BlockQuote [ Para [ Str "Example:" ] , CodeBlock ( "" , [] , [] ) "sub status {\n print \"working\";\n}" ] , BlockQuote [ OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "do" , Space , Str "laundry" ] ] , [ Plain [ Str "take" , Space , Str "out" , Space , Str "the" , Space , Str "trash" ] ] ] ] , Para [ Str "Here's" , Space , Str "a" , Space , Str "nested" , Space , Str "one:" ] , BlockQuote [ Para [ Str "Joe" , Space , Str "said:" ] , BlockQuote [ Para [ Str "Don't" , Space , Str "quote" , Space , Str "me." ] ] ] , Para [ Str "And" , Space , Str "a" , Space , Str "following" , Space , Str "paragraph." ] , HorizontalRule , Header 1 ( "inline-quotes" , [] , [] ) [ Str "Inline" , Space , Str "quotes" ] , Para [ Str "Normal" , Space , Str "text" , Space , Str "but" , Space , Str "then" , Space , Str "a" , Space , Quoted DoubleQuote [ Span ( "" , [] , [ ( "cite" , "https://www.imdb.com/title/tt0062622/quotes/qt0396921" ) ] ) [ Str "inline" , Space , Str "quote" ] ] , Str "." ] , Para [ Quoted DoubleQuote [ Str "Missing" , Space , Str "a" , Space , Str "cite" , Space , Str "attribute" , Space , Str "means" , Space , Str "its" , Space , Str "just" , Space , Str "normal" , Space , Str "text" ] ] , HorizontalRule , Header 1 ( "code-blocks" , [] , [] ) [ Str "Code" , Space , Str "Blocks" ] , Para [ Str "Code:" ] , CodeBlock ( "" , [] , [] ) "---- (should be four hyphens)\n\nsub status {\n print \"working\";\n}\n\nthis code block is indented by one tab" , Para [ Str "And:" ] , CodeBlock ( "" , [] , [] ) " this code block is indented by two tabs\n\nThese should not be escaped: \\$ \\\\ \\> \\[ \\{" , HorizontalRule , Header 1 ( "lists" , [] , [] ) [ Str "Lists" ] , Header 2 ( "unordered" , [] , [] ) [ Str "Unordered" ] , Para [ Str "Asterisks" , Space , Str "tight:" ] , BulletList [ [ Plain [ Str "asterisk" , Space , Str "1" ] ] , [ Plain [ Str "asterisk" , Space , Str "2" ] ] , [ Plain [ Str "asterisk" , Space , Str "3" ] ] ] , Para [ Str "Asterisks" , Space , Str "loose:" ] , BulletList [ [ Para [ Str "asterisk" , Space , Str "1" ] ] , [ Para [ Str "asterisk" , Space , Str "2" ] ] , [ Para [ Str "asterisk" , Space , Str "3" ] ] ] , Para [ Str "Pluses" , Space , Str "tight:" ] , BulletList [ [ Plain [ Str "Plus" , Space , Str "1" ] ] , [ Plain [ Str "Plus" , Space , Str "2" ] ] , [ Plain [ Str "Plus" , Space , Str "3" ] ] ] , Para [ Str "Pluses" , Space , Str "loose:" ] , BulletList [ [ Para [ Str "Plus" , Space , Str "1" ] ] , [ Para [ Str "Plus" , Space , Str "2" ] ] , [ Para [ Str "Plus" , Space , Str "3" ] ] ] , Para [ Str "Minuses" , Space , Str "tight:" ] , BulletList [ [ Plain [ Str "Minus" , Space , Str "1" ] ] , [ Plain [ Str "Minus" , Space , Str "2" ] ] , [ Plain [ Str "Minus" , Space , Str "3" ] ] ] , Para [ Str "Minuses" , Space , Str "loose:" ] , BulletList [ [ Para [ Str "Minus" , Space , Str "1" ] ] , [ Para [ Str "Minus" , Space , Str "2" ] ] , [ Para [ Str "Minus" , Space , Str "3" ] ] ] , Header 2 ( "ordered" , [] , [] ) [ Str "Ordered" ] , Para [ Str "Tight:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "First" ] ] , [ Plain [ Str "Second" ] ] , [ Plain [ Str "Third" ] ] ] , Para [ Str "and:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "One" ] ] , [ Plain [ Str "Two" ] ] , [ Plain [ Str "Three" ] ] ] , Para [ Str "Loose" , Space , Str "using" , Space , Str "tabs:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Para [ Str "First" ] ] , [ Para [ Str "Second" ] ] , [ Para [ Str "Third" ] ] ] , Para [ Str "and" , Space , Str "using" , Space , Str "spaces:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Para [ Str "One" ] ] , [ Para [ Str "Two" ] ] , [ Para [ Str "Three" ] ] ] , Para [ Str "Multiple" , Space , Str "paragraphs:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Para [ Str "Item" , Space , Str "1," , Space , Str "graf" , Space , Str "one." ] , Para [ Str "Item" , Space , Str "1." , Space , Str "graf" , Space , Str "two." , Space , Str "The" , Space , Str "quick" , Space , Str "brown" , Space , Str "fox" , Space , Str "jumped" , Space , Str "over" , Space , Str "the" , Space , Str "lazy" , Space , Str "dog's" , Space , Str "back." ] ] , [ Para [ Str "Item" , Space , Str "2." ] ] , [ Para [ Str "Item" , Space , Str "3." ] ] ] , Para [ Str "List" , Space , Str "styles:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [] , OrderedList ( 1 , LowerRoman , DefaultDelim ) [] , OrderedList ( 1 , LowerRoman , DefaultDelim ) [] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [] , OrderedList ( 1 , LowerRoman , DefaultDelim ) [] , OrderedList ( 1 , LowerRoman , DefaultDelim ) [] , Header 2 ( "nested" , [] , [] ) [ Str "Nested" ] , BulletList [ [ Plain [ Str "Tab" ] , BulletList [ [ Plain [ Str "Tab" ] , BulletList [ [ Plain [ Str "Tab" ] ] ] ] ] ] ] , Para [ Str "Here's" , Space , Str "another:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "First" ] ] , [ Plain [ Str "Second:" ] , BulletList [ [ Plain [ Str "Fee" ] ] , [ Plain [ Str "Fie" ] ] , [ Plain [ Str "Foe" ] ] ] ] , [ Plain [ Str "Third" ] ] ] , Para [ Str "Same" , Space , Str "thing" , Space , Str "but" , Space , Str "with" , Space , Str "paragraphs:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Para [ Str "First" ] ] , [ Para [ Str "Second:" ] , BulletList [ [ Plain [ Str "Fee" ] ] , [ Plain [ Str "Fie" ] ] , [ Plain [ Str "Foe" ] ] ] ] , [ Para [ Str "Third" ] ] ] , Header 2 ( "tabs-and-spaces" , [] , [] ) [ Str "Tabs" , Space , Str "and" , Space , Str "spaces" ] , BulletList [ [ Para [ Str "this" , Space , Str "is" , Space , Str "a" , Space , Str "list" , Space , Str "item" , Space , Str "indented" , Space , Str "with" , Space , Str "tabs" ] ] , [ Para [ Str "this" , Space , Str "is" , Space , Str "a" , Space , Str "list" , Space , Str "item" , Space , Str "indented" , Space , Str "with" , Space , Str "spaces" ] , BulletList [ [ Para [ Str "this" , Space , Str "is" , Space , Str "an" , Space , Str "example" , Space , Str "list" , Space , Str "item" , Space , Str "indented" , Space , Str "with" , Space , Str "tabs" ] ] , [ Para [ Str "this" , Space , Str "is" , Space , Str "an" , Space , Str "example" , Space , Str "list" , Space , Str "item" , Space , Str "indented" , Space , Str "with" , Space , Str "spaces" ] ] ] ] ] , Header 2 ( "fancy-list-markers" , [] , [] ) [ Str "Fancy" , Space , Str "list" , Space , Str "markers" ] , OrderedList ( 2 , Decimal , DefaultDelim ) [ [ Plain [ Str "begins" , Space , Str "with" , Space , Str "2" ] ] , [ Para [ Str "and" , Space , Str "now" , Space , Str "3" ] , Para [ Str "with" , Space , Str "a" , Space , Str "continuation" ] , OrderedList ( 4 , LowerRoman , DefaultDelim ) [ [ Plain [ Str "sublist" , Space , Str "with" , Space , Str "roman" , Space , Str "numerals," , Space , Str "starting" , Space , Str "with" , Space , Str "4" ] ] , [ Plain [ Str "more" , Space , Str "items" ] , OrderedList ( 1 , UpperAlpha , DefaultDelim ) [ [ Plain [ Str "a" , Space , Str "subsublist" ] ] , [ Plain [ Str "a" , Space , Str "subsublist" ] ] ] ] ] ] ] , Para [ Str "Nesting:" ] , OrderedList ( 1 , UpperAlpha , DefaultDelim ) [ [ Plain [ Str "Upper" , Space , Str "Alpha" ] , OrderedList ( 1 , UpperRoman , DefaultDelim ) [ [ Plain [ Str "Upper" , Space , Str "Roman." ] , OrderedList ( 6 , Decimal , DefaultDelim ) [ [ Plain [ Str "Decimal" , Space , Str "start" , Space , Str "with" , Space , Str "6" ] , OrderedList ( 3 , LowerAlpha , DefaultDelim ) [ [ Plain [ Str "Lower" , Space , Str "alpha" , Space , Str "with" , Space , Str "paren" ] ] ] ] ] ] ] ] ] , Para [ Str "Autonumbering:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Autonumber." ] ] , [ Plain [ Str "More." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Nested." ] ] ] ] ] , HorizontalRule , Header 2 ( "definition" , [] , [] ) [ Str "Definition" ] , DefinitionList [ ( [ Str "Violin" ] , [ [ Plain [ Str "Stringed" , Space , Str "musical" , Space , Str "instrument." ] ] , [ Plain [ Str "Torture" , Space , Str "device." ] ] ] ) , ( [ Str "Cello" , LineBreak , Str "Violoncello" ] , [ [ Plain [ Str "Low-voiced" , Space , Str "stringed" , Space , Str "instrument." ] ] ] ) ] , HorizontalRule , Header 1 ( "inline-markup" , [] , [] ) [ Str "Inline" , Space , Str "Markup" ] , Para [ Str "This" , Space , Str "is" , Space , Emph [ Str "emphasized" ] , Str "," , Space , Str "and" , Space , Str "so" , Space , Emph [ Str "is" , Space , Str "this" ] , Str "." ] , Para [ Str "This" , Space , Str "is" , Space , Strong [ Str "strong" ] , Str "," , Space , Str "and" , Space , Str "so" , Space , Strong [ Str "is" , Space , Str "this" ] , Str "." ] , Para [ Str "Empty" , Space , Strong [] , Space , Str "and" , Space , Emph [] , Str "." ] , Para [ Str "An" , Space , Emph [ Link ( "" , [] , [] ) [ Str "emphasized" , Space , Str "link" ] ( "/url" , "" ) ] , Str "." ] , Para [ Strong [ Emph [ Str "This" , Space , Str "is" , Space , Str "strong" , Space , Str "and" , Space , Str "em." ] ] ] , Para [ Str "So" , Space , Str "is" , Space , Strong [ Emph [ Str "this" ] ] , Space , Str "word." ] , Para [ Strong [ Emph [ Str "This" , Space , Str "is" , Space , Str "strong" , Space , Str "and" , Space , Str "em." ] ] ] , Para [ Str "So" , Space , Str "is" , Space , Strong [ Emph [ Str "this" ] ] , Space , Str "word." ] , Para [ Str "This" , Space , Str "is" , Space , Str "code:" , Space , Code ( "" , [] , [] ) ">" , Str "," , Space , Code ( "" , [] , [] ) "$" , Str "," , Space , Code ( "" , [] , [] ) "\\" , Str "," , Space , Code ( "" , [] , [] ) "\\$" , Str "," , Space , Code ( "" , [] , [] ) "" , Str "." ] , Para [ Str "This" , Space , Str "is" , Space , SmallCaps [ Str "small" , Space , Str "caps" ] , Str "." ] , Para [ Str "These" , Space , Str "are" , Space , Str "all" , Space , Str "underlined:" , Space , Underline [ Str "foo" ] , Space , Str "and" , Space , Underline [ Str "bar" ] , Str "." ] , Para [ Str "These" , Space , Str "are" , Space , Str "all" , Space , Str "strikethrough:" , Space , Strikeout [ Str "foo" ] , Str "," , Space , Strikeout [ Str "bar" ] , Str "," , Space , Str "and" , Space , Strikeout [ Str "baz" ] , Str "." ] , HorizontalRule , Header 1 ( "smart-quotes-ellipses-dashes" , [] , [] ) [ Str "Smart" , Space , Str "quotes," , Space , Str "ellipses," , Space , Str "dashes" ] , Para [ Str "\"Hello,\"" , Space , Str "said" , Space , Str "the" , Space , Str "spider." , Space , Str "\"'Shelob'" , Space , Str "is" , Space , Str "my" , Space , Str "name.\"" ] , Para [ Str "'A'," , Space , Str "'B'," , Space , Str "and" , Space , Str "'C'" , Space , Str "are" , Space , Str "letters." ] , Para [ Str "'Oak,'" , Space , Str "'elm,'" , Space , Str "and" , Space , Str "'beech'" , Space , Str "are" , Space , Str "names" , Space , Str "of" , Space , Str "trees." , Space , Str "So" , Space , Str "is" , Space , Str "'pine.'" ] , Para [ Str "'He" , Space , Str "said," , Space , Str "\"I" , Space , Str "want" , Space , Str "to" , Space , Str "go.\"'" , Space , Str "Were" , Space , Str "you" , Space , Str "alive" , Space , Str "in" , Space , Str "the" , Space , Str "70's?" ] , Para [ Str "Here" , Space , Str "is" , Space , Str "some" , Space , Str "quoted" , Space , Str "'" , Code ( "" , [] , [] ) "code" , Str "'" , Space , Str "and" , Space , Str "a" , Space , Str "\"" , Link ( "" , [] , [] ) [ Str "quoted" , Space , Str "link" ] ( "http://example.com/?foo=1&bar=2" , "" ) , Str "\"." ] , Para [ Str "Some" , Space , Str "dashes:" , Space , Str "one---two" , Space , Str "---" , Space , Str "three--four" , Space , Str "--" , Space , Str "five." ] , Para [ Str "Dashes" , Space , Str "between" , Space , Str "numbers:" , Space , Str "5-7," , Space , Str "255-66," , Space , Str "1987-1999." ] , Para [ Str "Ellipses...and." , Space , Str "." , Space , Str ".and" , Space , Str "." , Space , Str "." , Space , Str "." , Space , Str "." ] , HorizontalRule , Header 1 ( "latex" , [] , [] ) [ Str "LaTeX" ] , BulletList [ [ Plain [ Str "\\cite[22-23]{smith.1899}" ] ] , [ Plain [ Str "\\doublespacing" ] ] , [ Plain [ Str "$2+2=4$" ] ] , [ Plain [ Str "$x" , Space , Str "\\in" , Space , Str "y$" ] ] , [ Plain [ Str "$\\alpha" , Space , Str "\\wedge" , Space , Str "\\omega$" ] ] , [ Plain [ Str "$223$" ] ] , [ Plain [ Str "$p$-Tree" ] ] , [ Plain [ Str "$\\frac{d}{dx}f(x)=\\lim_{h\\to" , Space , Str "0}\\frac{f(x+h)-f(x)}{h}$" ] ] , [ Plain [ Str "Here's" , Space , Str "one" , Space , Str "that" , Space , Str "has" , Space , Str "a" , Space , Str "line" , Space , Str "break" , Space , Str "in" , Space , Str "it:" , Space , Str "$\\alpha" , Space , Str "+" , Space , Str "\\omega" , Space , Str "\\times" , Space , Str "x^2$." ] ] ] , Para [ Str "These" , Space , Str "shouldn't" , Space , Str "be" , Space , Str "math:" ] , BulletList [ [ Plain [ Str "To" , Space , Str "get" , Space , Str "the" , Space , Str "famous" , Space , Str "equation," , Space , Str "write" , Space , Code ( "" , [] , [] ) "$e = mc^2$" , Str "." ] ] , [ Plain [ Str "$22,000" , Space , Str "is" , Space , Str "a" , Space , Emph [ Str "lot" ] , Space , Str "of" , Space , Str "money." , Space , Str "So" , Space , Str "is" , Space , Str "$34,000." , Space , Str "(It" , Space , Str "worked" , Space , Str "if" , Space , Str "\"lot\"" , Space , Str "is" , Space , Str "emphasized.)" ] ] , [ Plain [ Str "Escaped" , Space , Code ( "" , [] , [] ) "$" , Str ":" , Space , Str "$73" , Space , Emph [ Str "this" , Space , Str "should" , Space , Str "be" , Space , Str "emphasized" ] , Space , Str "23$." ] ] ] , Para [ Str "Here's" , Space , Str "a" , Space , Str "LaTeX" , Space , Str "table:" ] , Para [ Str "\\begin{tabular}{|l|l|}\\hline" , Space , Str "Animal" , Space , Str "&" , Space , Str "Number" , Space , Str "\\\\" , Space , Str "\\hline" , Space , Str "Dog" , Space , Str "&" , Space , Str "2" , Space , Str "\\\\" , Space , Str "Cat" , Space , Str "&" , Space , Str "1" , Space , Str "\\\\" , Space , Str "\\hline" , Space , Str "\\end{tabular}" ] , HorizontalRule , Header 1 ( "special-characters" , [] , [] ) [ Str "Special" , Space , Str "Characters" ] , Para [ Str "Here" , Space , Str "is" , Space , Str "some" , Space , Str "unicode:" ] , BulletList [ [ Plain [ Str "I" , Space , Str "hat:" , Space , Str "\206" ] ] , [ Plain [ Str "o" , Space , Str "umlaut:" , Space , Str "\246" ] ] , [ Plain [ Str "section:" , Space , Str "\167" ] ] , [ Plain [ Str "set" , Space , Str "membership:" , Space , Str "\8712" ] ] , [ Plain [ Str "copyright:" , Space , Str "\169" ] ] ] , Para [ Str "AT&T" , Space , Str "has" , Space , Str "an" , Space , Str "ampersand" , Space , Str "in" , Space , Str "their" , Space , Str "name." ] , Para [ Str "AT&T" , Space , Str "is" , Space , Str "another" , Space , Str "way" , Space , Str "to" , Space , Str "write" , Space , Str "it." ] , Para [ Str "This" , Space , Str "&" , Space , Str "that." ] , Para [ Str "4" , Space , Str "<" , Space , Str "5." ] , Para [ Str "6" , Space , Str ">" , Space , Str "5." ] , Para [ Str "Backslash:" , Space , Str "\\" ] , Para [ Str "Backtick:" , Space , Str "`" ] , Para [ Str "Asterisk:" , Space , Str "*" ] , Para [ Str "Underscore:" , Space , Str "_" ] , Para [ Str "Left" , Space , Str "brace:" , Space , Str "{" ] , Para [ Str "Right" , Space , Str "brace:" , Space , Str "}" ] , Para [ Str "Left" , Space , Str "bracket:" , Space , Str "[" ] , Para [ Str "Right" , Space , Str "bracket:" , Space , Str "]" ] , Para [ Str "Left" , Space , Str "paren:" , Space , Str "(" ] , Para [ Str "Right" , Space , Str "paren:" , Space , Str ")" ] , Para [ Str "Greater-than:" , Space , Str ">" ] , Para [ Str "Hash:" , Space , Str "#" ] , Para [ Str "Period:" , Space , Str "." ] , Para [ Str "Bang:" , Space , Str "!" ] , Para [ Str "Plus:" , Space , Str "+" ] , Para [ Str "Minus:" , Space , Str "-" ] , HorizontalRule , Header 1 ( "links" , [] , [] ) [ Str "Links" ] , Header 2 ( "explicit" , [] , [] ) [ Str "Explicit" ] , Para [ Str "Just" , Space , Str "a" , Space , Link ( "" , [] , [] ) [ Str "URL" ] ( "/url/" , "" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , Space , Str "and" , Space , Str "title" ] ( "/url/" , "title" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , Space , Str "and" , Space , Str "title" ] ( "/url/" , "title preceded by two spaces" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , Space , Str "and" , Space , Str "title" ] ( "/url/" , "title preceded by a tab" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , Space , Str "and" , Space , Str "title" ] ( "/url/" , "title with \"quotes\" in it" ) ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , Space , Str "and" , Space , Str "title" ] ( "/url/" , "title with single quotes" ) ] , Para [ Str "Email" , Space , Str "link" , Space , Str "(nobody" , Space , Str "[at]" , Space , Str "nowhere.net)" ] , Para [ Link ( "" , [] , [] ) [ Str "Empty" ] ( "" , "" ) , Str "." ] , Header 2 ( "reference" , [] , [] ) [ Str "Reference" ] , Para [ Str "Foo" , Space , Link ( "" , [] , [] ) [ Str "bar" ] ( "/url/" , "" ) , Str "." ] , Para [ Str "Foo" , Space , Link ( "" , [] , [] ) [ Str "bar" ] ( "/url/" , "" ) , Str "." ] , Para [ Str "Foo" , Space , Link ( "" , [] , [] ) [ Str "bar" ] ( "/url/" , "" ) , Str "." ] , Para [ Str "With" , Space , Link ( "" , [] , [] ) [ Str "embedded" , Space , Str "[brackets]" ] ( "/url/" , "" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "b" ] ( "/url/" , "" ) , Space , Str "by" , Space , Str "itself" , Space , Str "should" , Space , Str "be" , Space , Str "a" , Space , Str "link." ] , Para [ Str "Indented" , Space , Link ( "" , [] , [] ) [ Str "once" ] ( "/url" , "" ) , Str "." ] , Para [ Str "Indented" , Space , Link ( "" , [] , [] ) [ Str "twice" ] ( "/url" , "" ) , Str "." ] , Para [ Str "Indented" , Space , Link ( "" , [] , [] ) [ Str "thrice" ] ( "/url" , "" ) , Str "." ] , Para [ Str "This" , Space , Str "should" , Space , Str "[not]" , Space , Str "be" , Space , Str "a" , Space , Str "link." ] , CodeBlock ( "" , [] , [] ) "[not]: /url" , Para [ Str "Foo" , Space , Link ( "" , [] , [] ) [ Str "bar" ] ( "/url/" , "Title with \"quotes\" inside" ) , Str "." ] , Para [ Str "Foo" , Space , Link ( "" , [] , [] ) [ Str "biz" ] ( "/url/" , "Title with \"quote\" inside" ) , Str "." ] , Header 2 ( "with-ampersands" , [] , [] ) [ Str "With" , Space , Str "ampersands" ] , Para [ Str "Here's" , Space , Str "a" , Space , Link ( "" , [] , [] ) [ Str "link" , Space , Str "with" , Space , Str "an" , Space , Str "ampersand" , Space , Str "in" , Space , Str "the" , Space , Str "URL" ] ( "http://example.com/?foo=1&bar=2" , "" ) , Str "." ] , Para [ Str "Here's" , Space , Str "a" , Space , Str "link" , Space , Str "with" , Space , Str "an" , Space , Str "amersand" , Space , Str "in" , Space , Str "the" , Space , Str "link" , Space , Str "text:" , Space , Link ( "" , [] , [] ) [ Str "AT&T" ] ( "http://att.com/" , "AT&T" ) , Str "." ] , Para [ Str "Here's" , Space , Str "an" , Space , Link ( "" , [] , [] ) [ Str "inline" , Space , Str "link" ] ( "/script?foo=1&bar=2" , "" ) , Str "." ] , Para [ Str "Here's" , Space , Str "an" , Space , Link ( "" , [] , [] ) [ Str "inline" , Space , Str "link" , Space , Str "in" , Space , Str "pointy" , Space , Str "braces" ] ( "/script?foo=1&bar=2" , "" ) , Str "." ] , Header 2 ( "autolinks" , [] , [] ) [ Str "Autolinks" ] , Para [ Str "With" , Space , Str "an" , Space , Str "ampersand:" , Space , Link ( "" , [] , [] ) [ Str "http://example.com/?foo=1&bar=2" ] ( "http://example.com/?foo=1&bar=2" , "" ) ] , BulletList [ [ Plain [ Str "In" , Space , Str "a" , Space , Str "list?" ] ] , [ Plain [ Link ( "" , [] , [] ) [ Str "http://example.com/" ] ( "http://example.com/" , "" ) ] ] , [ Plain [ Str "It" , Space , Str "should." ] ] ] , Para [ Str "An" , Space , Str "e-mail" , Space , Str "address:" , Space , Str "nobody" , Space , Str "[at]" , Space , Str "nowhere.net" ] , BlockQuote [ Para [ Str "Blockquoted:" , Space , Link ( "" , [] , [] ) [ Str "http://example.com/" ] ( "http://example.com/" , "" ) ] ] , Para [ Str "Auto-links" , Space , Str "should" , Space , Str "not" , Space , Str "occur" , Space , Str "here:" , Space , Code ( "" , [] , [] ) "" ] , CodeBlock ( "" , [] , [] ) "or here: " , HorizontalRule , Header 1 ( "images" , [] , [] ) [ Str "Images" ] , Para [ Str "From" , Space , Str "\"Voyage" , Space , Str "dans" , Space , Str "la" , Space , Str "Lune\"" , Space , Str "by" , Space , Str "Georges" , Space , Str "Melies" , Space , Str "(1902):" ] , Para [ Image ( "" , [] , [] ) [ Str "lalune" ] ( "lalune.jpg" , "Voyage dans la Lune" ) ] , Para [ Str "Here" , Space , Str "is" , Space , Str "a" , Space , Str "movie" , Space , Image ( "" , [] , [] ) [ Str "movie" ] ( "movie.jpg" , "" ) , Space , Str "icon." ] , HorizontalRule , Header 1 ( "footnotes" , [] , [] ) [ Str "Footnotes" ] , Para [ Str "Here" , Space , Str "is" , Space , Str "a" , Space , Str "footnote" , Space , Str "reference" , Link ( "" , [] , [] ) [ Str "(1)" ] ( "#note_1" , "" ) , Str "," , Space , Str "and" , Space , Str "another" , Link ( "" , [] , [] ) [ Str "(longnote)" ] ( "#note_longnote" , "" ) , Str "." , Space , Str "This" , Space , Str "should" , Space , Emph [ Str "not" ] , Space , Str "be" , Space , Str "a" , Space , Str "footnote" , Space , Str "reference," , Space , Str "because" , Space , Str "it" , Space , Str "contains" , Space , Str "a" , Space , Str "space^(my" , Space , Str "note)." ] , Para [ Link ( "" , [] , [] ) [ Str "(1)" ] ( "#ref_1" , "" ) , Space , Str "Here" , Space , Str "is" , Space , Str "the" , Space , Str "footnote." , Space , Str "It" , Space , Str "can" , Space , Str "go" , Space , Str "anywhere" , Space , Str "in" , Space , Str "the" , Space , Str "document," , Space , Str "not" , Space , Str "just" , Space , Str "at" , Space , Str "the" , Space , Str "end." ] , Para [ Link ( "" , [] , [] ) [ Str "(longnote)" ] ( "#ref_longnote" , "" ) , Space , Str "Here's" , Space , Str "the" , Space , Str "other" , Space , Str "note." , Space , Str "This" , Space , Str "one" , Space , Str "contains" , Space , Str "multiple" , Space , Str "blocks." ] , Para [ Str "Caret" , Space , Str "characters" , Space , Str "are" , Space , Str "used" , Space , Str "to" , Space , Str "indicate" , Space , Str "that" , Space , Str "the" , Space , Str "blocks" , Space , Str "all" , Space , Str "belong" , Space , Str "to" , Space , Str "a" , Space , Str "single" , Space , Str "footnote" , Space , Str "(as" , Space , Str "with" , Space , Str "block" , Space , Str "quotes)." ] , CodeBlock ( "" , [] , [] ) " { }" , Para [ Str "If" , Space , Str "you" , Space , Str "want," , Space , Str "you" , Space , Str "can" , Space , Str "use" , Space , Str "a" , Space , Str "caret" , Space , Str "at" , Space , Str "the" , Space , Str "beginning" , Space , Str "of" , Space , Str "every" , Space , Str "line," , Space , Str "as" , Space , Str "with" , Space , Str "blockquotes," , Space , Str "but" , Space , Str "all" , Space , Str "that" , Space , Str "you" , Space , Str "need" , Space , Str "is" , Space , Str "a" , Space , Str "caret" , Space , Str "at" , Space , Str "the" , Space , Str "beginning" , Space , Str "of" , Space , Str "the" , Space , Str "first" , Space , Str "line" , Space , Str "of" , Space , Str "the" , Space , Str "block" , Space , Str "and" , Space , Str "any" , Space , Str "preceding" , Space , Str "blank" , Space , Str "lines." ] , Para [ Str "text" , Space , Emph [ Str "Leading" , Space , Str "space" ] ] , Para [ Emph [ Str "Trailing" , Space , Str "space" ] , Space , Str "text" ] , Para [ Str "text" , Space , Emph [ Str "Leading" , Space , Str "spaces" ] ] , Para [ Emph [ Str "Trailing" , Space , Str "spaces" ] , Space , Str "text" ] , Header 1 ( "tables" , [] , [] ) [ Str "Tables" ] , Header 2 ( "tables-with-headers" , [] , [] ) [ Str "Tables" , Space , Str "with" , Space , Str "Headers" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "X" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Y" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Z" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "6" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , HorizontalRule , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "X" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Y" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Z" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "6" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , HorizontalRule , Para [ Str "Row" , Space , Str "headers" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "X" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Y" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Z" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 1) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "6" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , HorizontalRule , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "X" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Y" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Z" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 1) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "3" ] ] ] ] ] (TableFoot ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "6" ] ] ] ]) , HorizontalRule , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "X" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Y" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Z" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "3" ] ] ] ] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "6" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , HorizontalRule , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "X" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Y" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Z" ] ] ] ] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "6" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , HorizontalRule , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "X" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Y" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Z" ] ] ] ] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "6" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , HorizontalRule , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "X" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Y" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Z" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "3" ] ] ] ] , TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "6" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , HorizontalRule , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "X" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Y" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Z" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "3" ] ] ] ] , TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "6" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Header 2 ( "tables-without-headers" , [] , [] ) [ Str "Tables" , Space , Str "without" , Space , Str "Headers" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "6" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , HorizontalRule , Para [ Str "tbody" , Space , Str "tags" , Space , Str "omitted" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "6" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , HorizontalRule , Para [ Str "empty" , Space , Str "head" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "6" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , HorizontalRule , Para [ Str "explicit" , Space , Str "body" , Space , Str "and" , Space , Str "foot" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "3" ] ] ] ] ] (TableFoot ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "6" ] ] ] ]) , Header 2 ( "colspans-and-rowspans" , [] , [] ) [ Str "Colspans" , Space , Str "and" , Space , Str "Rowspans" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 2) [ Plain [ Str "1" , Space , Str "and" , Space , Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 3) [ Plain [ Str "4," , Space , Str "5," , Space , Str "and" , Space , Str "6" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , HorizontalRule , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 3) [ Plain [ Str "Numbers" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 2) (ColSpan 1) [ Plain [ Str "1" , Space , Str "and" , Space , Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "6" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Header 2 ( "attributes" , [] , [] ) [ Str "Attributes" ] , Table ( "attrib-test-table" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [ "table-head" ] , [] ) [ Row ( "" , [ "table-head-row" ] , [] ) [ Cell ( "" , [] , [ ( "abbr" , "x" ) ] ) AlignDefault (RowSpan 1) (ColSpan 3) [ Plain [ Str "Cat" , Space , Str "X" ] ] ] ]) [ TableBody ( "" , [ "main" ] , [ ( "part" , "body" ) ] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [ ( "part" , "row" ) ] ) [ Cell ( "" , [] , [ ( "part" , "cell" ) ] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [ ( "valign" , "bottom" ) ] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] , Cell ( "" , [] , [ ( "style" , "color: #151950" ) ] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "3" ] ] ] ] ] (TableFoot ( "" , [ "summary" ] , [] ) [ Row ( "" , [] , [ ( "bgcolor" , "#ccc" ) ] ) [ Cell ( "" , [] , [ ( "square" , "true" ) ] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "6" ] ] ] ]) , Header 2 ( "tag-omission" , [] , [] ) [ Str "Tag" , Space , Str "omission" ] , Para [ Str "thead," , Space , Str "tbody," , Space , Str "and" , Space , Str "tfoot" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "X" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Y" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Z" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "3" ] ] ] ] ] (TableFoot ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "6" ] ] ] ]) , Header 2 ( "empty-tables" , [] , [] ) [ Str "Empty" , Space , Str "Tables" ] , Para [ Str "This" , Space , Str "section" , Space , Str "should" , Space , Str "be" , Space , Str "empty." ] ] pandoc-3.1.3/test/insert0000644000000000000000000000001707346545000013357 0ustar0000000000000000STUFF INSERTED pandoc-3.1.3/test/ipynb/0000755000000000000000000000000007346545000013253 5ustar0000000000000000pandoc-3.1.3/test/ipynb/mime.ipynb0000644000000000000000000001017607346545000015252 0ustar0000000000000000{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "0ad1fbe7-107b-4668-ae4d-8ce4ae9a4400", "metadata": {}, "outputs": [], "source": [ "from __future__ import annotations\n", "\n", "from dataclasses import dataclass" ] }, { "cell_type": "code", "execution_count": 2, "id": "c2d3a9f4-dfdb-4ced-bbcd-3dfd1780af80", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "7.29.0\n" ] } ], "source": [ "import IPython\n", "\n", "print(IPython.__version__)" ] }, { "cell_type": "markdown", "id": "21e7a4a1-0cf8-48cc-823c-dca698ae6853", "metadata": {}, "source": [ "Supported IPython display formatters:" ] }, { "cell_type": "code", "execution_count": 3, "id": "053cdbc4-b157-4e3e-9c86-8f374770d006", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "text/plain\n", "text/html\n", "text/markdown\n", "image/svg+xml\n", "image/png\n", "application/pdf\n", "image/jpeg\n", "text/latex\n", "application/json\n", "application/javascript\n" ] } ], "source": [ "ip = get_ipython()\n", "for mime in ip.display_formatter.formatters:\n", " print(mime)" ] }, { "cell_type": "markdown", "id": "d79b063d-ce81-497b-a0ea-5b2e2972e845", "metadata": {}, "source": [ "Let's write a simple class that will output different mime:" ] }, { "cell_type": "code", "execution_count": 4, "id": "c847636c-1c45-432e-9d8d-7310dd7f5637", "metadata": {}, "outputs": [], "source": [ "@dataclass\n", "class Mime:\n", " math: str\n", "\n", " def _repr_mimebundle_(\n", " self,\n", " include: Container[str] | None = None,\n", " exclude: Container[str] | None = None,\n", " **kwargs,\n", " ) -> dict[str, str]:\n", " string = self.math\n", " data = {\n", " \"text/plain\": string,\n", " \"text/html\": (latex := f\"\\\\[{string}\\\\]\"),\n", " \"text/markdown\": f\"$${string}$$\",\n", " # \"image/svg+xml\":,\n", " # \"image/png\":,\n", " # \"application/pdf\":,\n", " # \"image/jpeg\":,\n", " \"text/latex\": latex,\n", " # \"application/json\":,\n", " # \"application/javascript\":,\n", " }\n", " if include:\n", " data = {k: v for k, v in data.items() if k in include}\n", " if exclude:\n", " data = {k: v for k, v in data.items() if k not in exclude}\n", " return data" ] }, { "cell_type": "code", "execution_count": 5, "id": "4fa54f22-0c3a-4809-91f7-ea7101ff1907", "metadata": {}, "outputs": [], "source": [ "mime = Mime(\"E = mc^2\")" ] }, { "cell_type": "code", "execution_count": 6, "id": "c419e6a6-240c-4af0-a244-5f1526705c30", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\[E = mc^2\\]" ], "text/latex": [ "\\[E = mc^2\\]" ], "text/markdown": [ "$$E = mc^2$$" ], "text/plain": [ "E = mc^2" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mime" ] }, { "cell_type": "markdown", "id": "bf140b8e-16ac-4670-9778-f1c1d9486f9d", "metadata": {}, "source": [ "Note that #7561 made ipynb reader aware of this, and #7563 made ipynb writer aware of this." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.6" } }, "nbformat": 4, "nbformat_minor": 5 } pandoc-3.1.3/test/ipynb/mime.native0000644000000000000000000001056407346545000015420 0ustar0000000000000000[ Div ( "0ad1fbe7-107b-4668-ae4d-8ce4ae9a4400" , [ "cell" , "code" ] , [ ( "execution_count" , "1" ) ] ) [ CodeBlock ( "" , [ "python" ] , [] ) "from __future__ import annotations\n\nfrom dataclasses import dataclass" ] , Div ( "c2d3a9f4-dfdb-4ced-bbcd-3dfd1780af80" , [ "cell" , "code" ] , [ ( "execution_count" , "2" ) ] ) [ CodeBlock ( "" , [ "python" ] , [] ) "import IPython\n\nprint(IPython.__version__)" , Div ( "" , [ "output" , "stream" , "stdout" ] , [] ) [ CodeBlock ( "" , [] , [] ) "7.29.0\n" ] ] , Div ( "21e7a4a1-0cf8-48cc-823c-dca698ae6853" , [ "cell" , "markdown" ] , [] ) [ Para [ Str "Supported" , Space , Str "IPython" , Space , Str "display" , Space , Str "formatters:" ] ] , Div ( "053cdbc4-b157-4e3e-9c86-8f374770d006" , [ "cell" , "code" ] , [ ( "execution_count" , "3" ) ] ) [ CodeBlock ( "" , [ "python" ] , [] ) "ip = get_ipython()\nfor mime in ip.display_formatter.formatters:\n print(mime)" , Div ( "" , [ "output" , "stream" , "stdout" ] , [] ) [ CodeBlock ( "" , [] , [] ) "text/plain\ntext/html\ntext/markdown\nimage/svg+xml\nimage/png\napplication/pdf\nimage/jpeg\ntext/latex\napplication/json\napplication/javascript\n" ] ] , Div ( "d79b063d-ce81-497b-a0ea-5b2e2972e845" , [ "cell" , "markdown" ] , [] ) [ Para [ Str "Let's" , Space , Str "write" , Space , Str "a" , Space , Str "simple" , Space , Str "class" , Space , Str "that" , Space , Str "will" , Space , Str "output" , Space , Str "different" , Space , Str "mime:" ] ] , Div ( "c847636c-1c45-432e-9d8d-7310dd7f5637" , [ "cell" , "code" ] , [ ( "execution_count" , "4" ) ] ) [ CodeBlock ( "" , [ "python" ] , [] ) "@dataclass\nclass Mime:\n math: str\n\n def _repr_mimebundle_(\n self,\n include: Container[str] | None = None,\n exclude: Container[str] | None = None,\n **kwargs,\n ) -> dict[str, str]:\n string = self.math\n data = {\n \"text/plain\": string,\n \"text/html\": (latex := f\"\\\\[{string}\\\\]\"),\n \"text/markdown\": f\"$${string}$$\",\n # \"image/svg+xml\":,\n # \"image/png\":,\n # \"application/pdf\":,\n # \"image/jpeg\":,\n \"text/latex\": latex,\n # \"application/json\":,\n # \"application/javascript\":,\n }\n if include:\n data = {k: v for k, v in data.items() if k in include}\n if exclude:\n data = {k: v for k, v in data.items() if k not in exclude}\n return data" ] , Div ( "4fa54f22-0c3a-4809-91f7-ea7101ff1907" , [ "cell" , "code" ] , [ ( "execution_count" , "5" ) ] ) [ CodeBlock ( "" , [ "python" ] , [] ) "mime = Mime(\"E = mc^2\")" ] , Div ( "c419e6a6-240c-4af0-a244-5f1526705c30" , [ "cell" , "code" ] , [ ( "execution_count" , "6" ) ] ) [ CodeBlock ( "" , [ "python" ] , [] ) "mime" , Div ( "" , [ "output" , "execute_result" ] , [ ( "execution_count" , "6" ) ] ) [ RawBlock (Format "html") "\\[E = mc^2\\]" , RawBlock (Format "latex") "\\[E = mc^2\\]" , RawBlock (Format "markdown") "$$E = mc^2$$" , CodeBlock ( "" , [] , [] ) "E = mc^2" ] ] , Div ( "bf140b8e-16ac-4670-9778-f1c1d9486f9d" , [ "cell" , "markdown" ] , [] ) [ Para [ Str "Note" , Space , Str "that" , Space , Str "#7561" , Space , Str "made" , Space , Str "ipynb" , Space , Str "reader" , Space , Str "aware" , Space , Str "of" , Space , Str "this," , Space , Str "and" , Space , Str "#7563" , Space , Str "made" , Space , Str "ipynb" , Space , Str "writer" , Space , Str "aware" , Space , Str "of" , Space , Str "this." ] ] ] pandoc-3.1.3/test/ipynb/mime.out.ipynb0000644000000000000000000000740207346545000016056 0ustar0000000000000000{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from __future__ import annotations\n", "\n", "from dataclasses import dataclass" ], "id": "0ad1fbe7-107b-4668-ae4d-8ce4ae9a4400" }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "7.29.0\n" ] } ], "source": [ "import IPython\n", "\n", "print(IPython.__version__)" ], "id": "c2d3a9f4-dfdb-4ced-bbcd-3dfd1780af80" }, { "cell_type": "markdown", "metadata": {}, "source": [ "Supported IPython display formatters:" ], "id": "21e7a4a1-0cf8-48cc-823c-dca698ae6853" }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "text/plain\n", "text/html\n", "text/markdown\n", "image/svg+xml\n", "image/png\n", "application/pdf\n", "image/jpeg\n", "text/latex\n", "application/json\n", "application/javascript\n" ] } ], "source": [ "ip = get_ipython()\n", "for mime in ip.display_formatter.formatters:\n", " print(mime)" ], "id": "053cdbc4-b157-4e3e-9c86-8f374770d006" }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's write a simple class that will output different mime:" ], "id": "d79b063d-ce81-497b-a0ea-5b2e2972e845" }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "@dataclass\n", "class Mime:\n", " math: str\n", "\n", " def _repr_mimebundle_(\n", " self,\n", " include: Container[str] | None = None,\n", " exclude: Container[str] | None = None,\n", " **kwargs,\n", " ) -> dict[str, str]:\n", " string = self.math\n", " data = {\n", " \"text/plain\": string,\n", " \"text/html\": (latex := f\"\\\\[{string}\\\\]\"),\n", " \"text/markdown\": f\"$${string}$$\",\n", " # \"image/svg+xml\":,\n", " # \"image/png\":,\n", " # \"application/pdf\":,\n", " # \"image/jpeg\":,\n", " \"text/latex\": latex,\n", " # \"application/json\":,\n", " # \"application/javascript\":,\n", " }\n", " if include:\n", " data = {k: v for k, v in data.items() if k in include}\n", " if exclude:\n", " data = {k: v for k, v in data.items() if k not in exclude}\n", " return data" ], "id": "c847636c-1c45-432e-9d8d-7310dd7f5637" }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "mime = Mime(\"E = mc^2\")" ], "id": "4fa54f22-0c3a-4809-91f7-ea7101ff1907" }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "output_type": "execute_result", "execution_count": 6, "metadata": {}, "data": { "text/html": [ "\\[E = mc^2\\]" ], "text/latex": [ "\\[E = mc^2\\]" ], "text/markdown": [ "$$E = mc^2$$" ], "text/plain": [ "E = mc^2" ] } } ], "source": [ "mime" ], "id": "c419e6a6-240c-4af0-a244-5f1526705c30" }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that #7561 made ipynb reader aware of this, and #7563 made ipynb writer aware of this." ], "id": "bf140b8e-16ac-4670-9778-f1c1d9486f9d" } ], "nbformat": 4, "nbformat_minor": 5, "metadata": {} } pandoc-3.1.3/test/ipynb/rank.ipynb0000644000000000000000000000302407346545000015250 0ustar0000000000000000{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "5cf8f54d-bf3c-4db2-996d-22662a86ad43", "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "id": "a0228622-9ff8-4392-9ddd-f70a90f0e106", "metadata": {}, "outputs": [ { "data": { "text/html": "

                you should see this when converting from ipynb to html instead of the image below.

                ", "image/png": "iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAACdAAAAnQGPcuduAAAASUlEQVR4nGNkYGBgc1HM+/lfkI/hqQ0XAwsDAwPDzSphBi6h/wwlahsgAiJCHxkkBL4zWLA8YGBkYGBgZGBg4GRgYPjDwMDABADgfgxL+wQIRAAAAABJRU5ErkJggg==\n", "text/plain": [ "
                " ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(1, 1), dpi=4)\n", "ax.imshow([[0, 1], [2, 3]]);" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.0" } }, "nbformat": 4, "nbformat_minor": 5 } pandoc-3.1.3/test/ipynb/rank.out.html0000644000000000000000000000230307346545000015700 0ustar0000000000000000
                import matplotlib.pyplot as plt
                fig, ax = plt.subplots(figsize=(1, 1), dpi=4)
                ax.imshow([[0, 1], [2, 3]]);

                you should see this when converting from ipynb to html instead of the image below.

                pandoc-3.1.3/test/ipynb/simple.in.native0000644000000000000000000000257707346545000016374 0ustar0000000000000000Pandoc (Meta {unMeta = fromList [("jupyter",MetaMap (fromList [("nbformat",MetaInlines [Str "4"]),("nbformat_minor",MetaInlines [Str "5"])]))]}) [Div ("uid1",["cell","markdown"],[]) [Header 1 ("lorem-ipsum",[],[]) [Str "Lorem",Space,Str "ipsum"] ,Para [Strong [Str "Lorem",Space,Str "ipsum"],Space,Str "dolor",Space,Str "sit",Space,Str "amet,",Space,Str "consectetur",Space,Str "adipiscing",Space,Str "elit.",Space,Str "Nunc",Space,Str "luctus",SoftBreak,Str "bibendum",Space,Str "felis",Space,Str "dictum",Space,Str "sodales."]] ,Div ("uid2",["cell","code"],[]) [CodeBlock ("",["python"],[]) "print(\"hello\")"] ,Div ("uid3",["cell","markdown"],[]) [Header 2 ("pyout",[],[]) [Str "Pyout"]] ,Div ("uid4",["cell","code"],[("execution_count","2")]) [CodeBlock ("",["python"],[]) "from IPython.display import HTML\nHTML(\"\"\"\n\nHTML\n\"\"\")" ,Div ("uid5",["output","execute_result"],[("execution_count","2")]) [RawBlock (Format "html") "\nHTML\nhello"]] ,Div ("uid6",["cell","markdown"],[("tags","[\"foo\",\"bar\"]")]) [Header 2 ("image",[],[]) [Str "Image"] ,Para [Str "This",Space,Str "image",Space,Image ("",[],[]) [Str "the",Space,Str "moon"] ("lalune.jpg",""),Space,Str "will",Space,Str "be",Space,Str "included",Space,Str "as",Space,Str "a",Space,Str "cell",SoftBreak,Str "attachment."]]] pandoc-3.1.3/test/ipynb/simple.ipynb0000644000000000000000000005640007346545000015614 0ustar0000000000000000{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Lorem ipsum\n", "===========\n", "\n", "**Lorem ipsum** dolor sit amet, consectetur adipiscing elit. Nunc luctus\n", "bibendum felis dictum sodales." ], "id": "uid1" }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print(\"hello\")" ], "id": "uid2" }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pyout\n", "-----" ], "id": "uid3" }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "output_type": "execute_result", "execution_count": 2, "metadata": {}, "data": { "text/html": [ "\n", "HTML\n", "hello" ] } } ], "source": [ "from IPython.display import HTML\n", "HTML(\"\"\"\n", "\n", "HTML\n", "\"\"\")" ], "id": "uid4" }, { "cell_type": "markdown", "metadata": { "tags": [ "foo", "bar" ] }, "source": [ "Image\n", "-----\n", "\n", "This image ![the moon](attachment:lalune.jpg) will be included as a cell\n", "attachment." ], "attachments": { "lalune.jpg": { "image/jpeg": "/9j/4AAQSkZJRgABAQEAeAB4AAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcU\nFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgo\nKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAD6APoDAREA\nAhEBAxEB/8QAHAAAAAcBAQAAAAAAAAAAAAAAAQIDBAUGBwAI/8QAPhAAAgEDAwIEBAQFAgUFAAMA\nAQIDAAQRBRIhBjETIkFRB2FxgRQykaEjQlKxwRXwFjNictEIJEPh8SZTgv/EABcBAQEBAQAAAAAA\nAAAAAAAAAAABAgT/xAAbEQEBAQEAAwEAAAAAAAAAAAAAARECEiExQf/aAAwDAQACEQMRAD8A2t0Y\noQpwT2qVzMV+N3UHgrDY2eoM0y58VEbgfp9K1yMRmnuJ5h40jyYHGSeKrWE8u2QAApOMdqGCsmT8\nh70TAJwMAZx249aKBy4c9vTNUC0zDCgmmmG7Ockjkj1PrUTAjcy5XP0ouCgHae4IomOJHhgIc55P\nHY0Uk5IXLMcUBQ27n96JYO2MYLebHtRBA7BcMx29sdxQJqwZRtIP+BQKpjHHc+xzigNGoAO/k+nP\nAoAYlee5oBiGeWySO9AJCgY5PHagFCADzj2GaA2N2TkjA/U0HMwbPPeiyBLDfkkj04FCl1cBMgn6\nURwYFGySR6D2oAeQDAxnHGKAhU4IbGc+tFwnwDj9aK7f8v2oNu+IHxNvJdXmt9EmKWSqArA/mPvx\nUxMZNe3Ml1dvNcMzSSEsxPOferJhht/OWyAPc0UfdgDcuM8n50AMCykZFARsngcY/egTcbjnJz9O\n9AB2kZGSQOcUCX8x83bntQCMruJ4B7D1oCyOGzxtJ9M80CAdg5UjFE0aFJrghLeNpHY4IRdx/QUN\nWCw6D6q1EZttEvirHAZ4ig/U4qw1b9H+CHVN3Mq6hJaWMJ5ZjJ4hA/7R3P3q3ET+pf8Ap/lWNm03\nXkkkA8qTW+3PHupP9qxopV78G+s7VSV0+OcAn/kzqSfscVvIKzqPTWu6XKE1LSL+Bhz5oDg/cd6l\nEZzGwLrtPqrA8frUCJfcw9gfegUjZsEAffNADyHt78UAjCjzDJxRcO5Pw3gwCGOVJQp8ZncMGOeN\noxwMY96GCbQffFFcUXKjDDt2NEo+N3yyM5z3okKuqJgIzONoJyuMGi4QfGcqSfXBoYHJx659qKIR\nnnsfUGgJn/poJYoTIGLY+eDzQFlQK2G/KCTmgbspfO0qce/agPGcR7nHf9vnQFfBPlOc88Gg7uuc\nc/M0Bd208YJJweKAYrea4kKQICRGW5IUYUZJ570DYqcknt3FE0VuVyDzj1oamOlulda6puvC0a0e\nZVIWSbtGn1Y1NNbX0x8ENH0qL8X1NdtqDoNxiQbIh8u+WpqL70Tc6fcxypouiRadbW8hhLFFXcB7\nEdz+tNFvEZxkmmgShbA9PlUA+Hgg/wBqDgmBkd6ArJuJBGR7VdEdqWgaVqMfh6hp9pcLj/5Ig2Ka\nKJrvwW6S1EFoLaWwmPIe2fAz81ORTRm3UfwI1mzBbRL+K/ReyS/w3x/b+1Wexmev9O6xoE2zWdOu\nbUDszr5T9G7H9auCJj2n3PPrUXTlGBB2kYx96GlQMjJJHuRRXBgDgk8DtRKH8w4OfYA0SUlIMsFX\nJ4oujHH8ufnRRGOSNoJNAeFC77F2jPucfvQFEqgY3nj/AKaCUY58wwq54AoCzOmVMke9QeRnGR7Z\noEIF7pnaTk49KDpSSwQntQJsGKjgggZ9uDQc4OOe1Am2UCkHOR7dqA8t/cSW8MEkrGGEsUTPCk4z\nj9KJT3pzQtS6m1aPT9Jh8SVxlmJwqL/UfYURuuhfArR7f8NLrF1cXciKDJCrbI2b7c4+9NGtaRpt\nrpdqltYW0VtAn5Y41wBUodvGjqUdQyn0YZqAIreOBFSFFRF7BQAKA1xcRwKplcJuOBn1NAR7y2ik\nWMzoZnGVQHJNAuQcD3oBKkD2FBy8jnvQFxnjjmg4rxwKBMqCBtPNA3vbCC+tngvYo54HGGSRQQR9\nDV0Y91n8DNOvFkuOmZmsrk5PgSNuiY98D1X+1XRhWu6DqWgX72er2j2069t/ZvmD2IoGG7jbnj1F\nFlB224PB+VClN4DYJHyAojmPGCck8cetCAxgjPp6UaAGKtx6+9ATAXO7nFBw8HHLN+goJhBuj2Fe\nAcnmgNazW8U0vjweODGyqpYrsYjytx3x3oGa5LEEjH9XvQGlgmjjMmQq4HBPfPYgevagG5nhe3tk\nFuInQHxJQTmQntn0wKBKTlAeDx60DSY+U9zn+mgsnQvROr9Y3W2xi8KxV8SXUnCrjvj1Y/IUR6c6\nA6H03o6wMVgrSXMoBmuX/NIf8Djt/eiLfjJwO9ZBiOfmKDhktzQAzYBLZ8oyaDF+rOptVv8AUjNZ\nL4tjA/lT+kr3wvqTQX/pi3Y+DqFxKXurmFWAaPaVzg4I/b0oHlxqV7penRTXFu93dPLsESYB2k8n\n7CgnradLq1WaIOFI/K42sPkRQCg3Kcd6Dgp3d6AdrGg5VxnjmgKWB8uQGxnFAUgKuSefSghuqNC0\njXbAWGtxQyJKdsYc4YMf6T6GtDzR8S/hnqfSUz3NvuvNILYSZR5o+ezj/Pb6UGfLzyD/AJoFFySQ\nVBHpQDJ5kGByPahAbWxn5+po0OF3D+XPtQJsNwOe+aAuygmMkebgHnHFALHYpJwSeGz2oGpOJWAI\n49BQEZlYAHkg4oARVOMvtBIJJ7AUAX6xxSOsUgmjViFcKRuHviiVfvhT8NZuqpk1LVFeHRkPlHZp\nznsP+n50qPS+mWVppdnFa2cEcFtGu1I41ChR8qyHVxK8cLPDD4kgGVQHBNAa0maaBJGTYzDJXOcU\nCy5JOaA2OMfoaArkheM7vlQNYNOtoWLJCgLHJwo5NApPKLaNpGRQB6j2oGmnRvcyNd3O/DkeErLh\nkWgklIdCyZOCRzxzQEeRxhdpUnncBkD5UCxXjJ7+tAlctMsIMLohz5mcZAH09aBQYdQwyAeaAuA7\nMAQxHH0oG1481nbGVInuWU5Kr+bHrgepoKB1u+o6jqlvBH05NevEBPBK0pQR4I4BHZj+1Bb9IS7l\nsFtNWtYwDGFYB/EXHqpJ7/WtQYx8VfhGbdZtV6Uh8gy81mpyR6koPb5UGKY4YkeYd88fbFAI5AC9\n8c5oQBb+U9+9GnN5RgDgjOPWgAN3yMfWgAqc91/UUD2RSSRg9+49KCR6e0WfX9WS0icRwgb55WOF\nijH5nP0FBYNRi6dSR7HRNPmu0hOW1GaXaZMdwBwAP3oynE0XRYrFtV02wS4ECj8dp1wcsE7eJEf3\n9qlFZ616ZttPu7Kbp9Zbi0vYzNCcgjHqoHuKsEp8LPh7P1PqjXerxywaXaviRSu1pWH8g+XuflQe\nmIIY7S3SK3hVIo12pGoAAA7AClEL1N1RH0/oTalcwx+IACLaSQKx59Ppmshv0D1jH1ZbTubU27xk\nkAnKsuSMg/UUFluLlLaJXETyecKAg554zigXiubeRnSKeJ5FOGVXBIPsaBLULoWkIfw3kYsAqIOS\nTQJMbpm3oqlmwACeF9yfn+1A+Bx34oE5IY5P+YFbnPIzQKAckHuRQCAQOO1AL8r9KDhkZOT9M8UC\ncrxgAyYJzwD70CT3Itxm8kgi3fly+P7/AOKA9pskhEkZysnOfeg6RH8w3tgjAHtQRZ1uystSg0m5\neRJ2UbHceV8fP3oJkBSAVII9xQFdSRwKDDvjN8L/AMSJte6chxcgFrm1QcSf9aj39x61YMH8Q+Ck\nfhqpQncxBDH5H6VRwXJ/Ke1Am2QchuMYOaNFSAVznB9qAm8f10D2RmX8jDHP3oLbebtA6ej0m2Lr\nfX6LcX7IMskf8kf6HcffIoG8yTadZxSTxCK3kRZUwSFfkruIJ78GhiS6Y1OS3160uZJFWO5bwZtx\nzuQ8bcfPNMZXvo2wsLnQ9R0q/maJNNv5Yo3bjCuMAHPzqA2jdUan0lF0/ZXcElxp9zE+5WVd/DE7\n1IPPB7H2po1bSNXsdYthLp1ykyEcj+ZT817ioITrnoux6vs1gv5JYnjz4ckZ/Ln5etA+6N0BemdB\nttMina4WEFfFdQpIJJ7D60E5I4Vo9qnnsQO1A3k0yzeTxhCizZJ3qNpz9RQO449igMSxHGW5NAIw\nBtUAUAMORkfegMhG3jtQD8+fvQGXJz7UAHuRQA5YDI5FB0qCQA5yaCs2/SFit/Jd3AmvJ2bO64ct\nt5zwD2oLMilVAUDgcAelAJLbhgZz3oGN9HPIYmhtrWRw2czjt7Y+dA+h3mJS67W9gc0AvuLYANAD\npkZABHY85oPOnxy+Hx06Z+odGjC2jt/7qBRwjH+cY9D6/OrKMebcceHwfaqCYIyDgZ96GhHOFJI4\n/WjQpXnsaCz9J6fDqGvRC8OLO3Vri5PB/hqMkfc4H3oDT3UupapcXrKS9zISgDdhnAGPbsKC5aLL\nBHq9p01c6bbagPE23kpJYhmz5IySAAMj6nNGdRnT2lu3V9vaQQrJDHfCMFj5kAfufsMUFogu5H0j\nrLUYXK+Lq0aRse/lf/8AOKlFfudagvbnQpNQRmtILydCwPdCQcgMOMZFQanPoeiawBd9M6s9jeKP\nK1vKQp+RFA4septa6fuFtuqbRrmzx5b+BAdo927A+vsflQXfTr2z1O3W5025juIW/mjOR9KAZI91\n4khaRNo4XdwT9KAl3b2+oWpjMoZWbOVfnI9sUCrXUNssUU8w3sQoJH5jQLvwQQC3NAKvuUPtK54w\naDg23v6UA7weBnNAIOBigMr+hoOjdZQdhBx3waAVG0Z7UBWfAOQSflQChyNxBAxQRutarb6bHALi\n9trSW4kEcJnGd7ewFA/j8QEK/IA/MBjmgWDDBB7igj9dupLTTbiaHZ4oQ7A7bQW9ATVgwXSNV6on\nl8azW6t45pWdxHIxWA/zNtz7A8Glg2S1u7fX+nt0J/H2c4MMhmQoW9GBUjj60g8sfEHpebpDqi4s\nHLG2Y77eQ486E8fcdvtVFekGW4UfegKVAAKgnFGhuDzxQXbpDTZF6a13UnUqrCOzQ5wGZmXIJ+lE\n0ppkEK6nJcRWcTW9hA08iKcjcowpye/mxQ0+6VRbC/jvLm48L8LG9y8pIOXxkDnuSTipqHXQMng3\nes9S3fhn8DbvcZI5Mr/lH700dc3Dad8NtPs4nU6jeXD6nMCwBRF5XOfU8YHrTNJFF1X8RawW1jc4\nGxTKNrZB385yPkBTFw1stSu7Ni9tPLGSQfK5Aphi8J8UNUm6fn0u72yvJ5fGbuF/39aYYtGgadp9\n/axXnRetzaXqnhqZI3bEcj4547Ak/X6UxFisPiXe6NMdO65057eQAr+LhUlHHbOPX07UwWXpQ6Bq\nMo1LpgW0sioVI8Qgxk+684qC028M5890Y3kHKbUwF+lA4LDOzu2M4FAOG3DaoI9cntQdJxzQEyR2\n59f/AKoGl5fSQRFo7ZpB/MhYIR9zxQdayyXKb7gqox5Yo2yB9WHc0DPUIWnhWKxkuYFRs5gcKWbP\nY59KBkx6isVeSGW31JNwHhyOUkA+o8v9qCfjkMo/LJFKqBmRvSgc2swnRyFcYODuXGfpQMtRsLK8\nvYJL+wjuGiUtHK6hghz6Z7H6UEmCsig84I9RigiruC9t0DaaVmIIHhTOQMeuGwT9qCJ1ywv9T0U2\n9xFFiaVBJGHz5M5ODgYPY/arKJPTtLW1t44i7SKq48w8x+ZPrTRJoipGFQAAdgKgzX47dMJrXSrX\nkUe6807MykDkp/MP8/aro80FQyZ+tUJ7hvH0x270XQ7KGtXvIk0T4c9P2bIhkvpnvJVfjIxhf7qf\ntRDXpu0/1DpzXltUlkvmWMBI+2zdnn64oYa6yX0XTm0i4jQ3t6wmuV53xov5UPpyeeKyLbpFtZ6X\npmn6TqNq7/ic6pqQRR/DVf8Alq2fTOP0FXBnXU+ox32o3lzeW+JrxlMXHKR9wfbJ/tVWK5f3AnaA\njafCTwwcY4BOM/qKKSjA4Dg8j37UHZKkE5P0olSFlcLDdJPbTNBOigjxOVZu3+80Rbbnrq9l0t9I\n6isRd2rgKpPlZMdyre9An07oupoh1zo2+lea2fMlr+WZFx7ZwwqWDVug/ihDq7R6b1EPwmpMNokP\nlVj8xng1BqEUe1EAJOMDOc5oDSxq6YYeuaAJF4oCBUQ7mJ45zQHYB14wR86AVjBXyjge1AEcRTHl\nA9hQE8kbgEohJ5yQM0ETHNqMOr3IZQ9tIMQyEjKt7D3FBLqywRPJKTuxlj3zQI3Ut14e+yhWRj28\nQ7RjH60EfpF3rU/jLqFrHbS4/hqpJXH19aCRa8jgiVr1xGwXzYyf99qA9tc29/aRXFnKs1vINyOO\n2KByoxwe9AYocHGKBvdwLcWzxSLuR1KuD6gjBoPHXWujt071Nf6YSSkUnkJ4yp5H7f2rQgWAA3Y+\n1An4j/1t+tBrHxKuYS+gx24LRx6ZFtI/lz60FY0+/v8ASphNpd68EpXY5AGNvzFF1YOirZbzVrvX\n9dkNxZWH8eeaY5Lyj8qj7kcVlETqOqXd/HrPUNzcNE16Tbwxf1JkEgD2AA/etBte9R2Oq2cv+p6X\nHJfBFjgmjkMaRgAAEqO5o1FWfbgjsR8+9AlI5CgEggeoNAq0iug8uD7g80KKmCcZ7fPmjJzJfT/h\nWtjJvhOPK/OOe49u9A96X1W90/VrRtNkkSfxQF8I5yScdvX6UGidSLpfVFzcvbRiy6kgZBGysFW7\nB9T7HHNSjU+o9S1iz0e2uNLmX8RYxJ+KgYeVwVGTn5d6gjug/iU3UOt/6TewQpP59skL5B29x/8A\nYoNHPB78Ggb2l3bXO78PKsoyVyvIBHBFAoSkbfyhn4GfWgTnmWFN7ybAvc4Jz9hQRdx1dp0S3Dw+\nJJHbDdPIUZUjX3yRz9Bmrgzbqb4x9Oxho4bB751O5HPkXPsc80wQHT/xrJ1IHUbGKO0kdRiBiAgz\n+YjnsPpTKN/tLy3vLOK5t5klt5F3LKhyCPemAYLuK5XMDEj1OCP71ArGWLMPT0oIbU7h11u2t49O\nllWWNm/FIRsjI4AI/egfQ2ktpbww2XgxoDl9wJ49cUCHUGv2GixM13Mkcm0squwUH5/SrgxDW/jF\ncXOteHb3otrKEEiRISRM3zGc49v1qDT+gfiBpvV7y2unxTxywRhz4ozuHbOR2+9Bmf8A6kNIEWpa\nZqiooEqtBIR6kHI/atfRjDEt3AKjgVQjug9j+lQWh72e/htTOzyeCnhHPomeMYoJvQum7vVD47K9\njpsQBkvZ5NoAHcgUAa7rKamE0Lp9Xh0G1OZZTwZSO8jn9cCsivdS38F9cJDZIY7G2URxKe5x/MT7\nnNaEKrENwAFPPlosFwS2cd/cc0UlIm3JOeKDo2LH+UA0SjgDk98URzPiJ2449e/NAbS7v8PdpKkp\nikQ5WQLkqccGgmYNQmXWLeQLG9wVRQVPlcj+Yn3xQa98OviAjz3WjdXSpFdliEuJCNjDtsJ7enep\nRdel+kdL0rqOTVdIsoYklV1dixO3nunpg9jUCnU3WMeka5b2EUcl3JInmigQs6ZPlJAHY8+vpQP9\nO1m3nthNo0cTwM2JDwoVj6H5gd6CbhtUiVn8TcXO4ktkZ+We1BAf8Z6fZ2uqXWpyxQrbStGseQzM\nB2IA961B59+IHXmodXal+HsPFh04HbHCo25+bY/zQWv4f/CCxvII73qC8iuXYb1tYZeF9txHf6U3\nBatX+DvSl86x6cr2dwjbnEUmcj6Enj6U8hLdJdEX/SmowJp2tTT6Oc+La3HO0442+3NBf1LmRUjj\nQAfmc+nyHvWQockYyQcY3CgaabaPZxGNnaUFi3mPb6f+KA2q3RstNurnBxDE0mPfCk1YPMemaP1L\n8RtYN9fJPc2aMUaVmCKg54H0z6VRYendf6Z6T1W56a6j6fgfwJyguhGJmPzbIzjHtSjTn0zSunbi\n01fSkt9Os5GAmWNCDOGxtXb6HnNZEZ8etOF90DPKFy1rKk3zAzg/3rXI8u7zvOTg4zVoTLDJ81QW\nDTb2SwuvFgcrkbXwM5H0PFGqsjpd6+kcT61Nc2ieb8OikFc/9PA+WfSjKA1nWBzpFlZ/hLWM4KH8\nzsPVj6mghN4IyQRk5NGo5BkFmyAfSgVjChdpGO/FAXYpOHLBe/FAQqoBJbA9sUBGxgtgEj/eaCf6\nDGjt1TZf8RNGumKS7mQZQkDIB+WaMrf8Ub/ovV7V20JIYL62K4khhCLOCcEcAdu9BmCuEQvxvyFU\ng42+v+/rQaj0zax/EXRY9Nns0t9TtM+BqCKAjEclXA98jn+1Si7Cz6u6O0tLjTrxLu2tQJJrDwcK\nE/m2M2SfeoLrpupDV9Mh1OytUS2vIN8m4BZQf6T7+vPpj50GfdK9L6rJqk1y1y0elRDKRqdjHHoy\nDhjx39e9BZr7fagW0j3kul3iETRqHkeF8ZBUjkZIxjtk5rQ86dW6r+O1OcW0UtvaRsY4oWfLKBxz\n7k/5NA46P6X1rqS6WPS7V9v88rAqi/f3oN46X6C1DSotkus+BIwKl8hn2+3PapROXPT2t20bPY6k\nJ5UGYmbIfIHGW5z68VBI6DrzzWSrrAjtrwFUbDja5OBlfuaCbluJLeNwIpLiVF3bVXAP0Pv8qBxL\nO8cYcW7vnuqkAigNFKs8CyxlwG/lcYI+1A31ayF/pt1auSFmiaM/LIxVgwfoO413o3qqfSLyUSwo\ndogAyZVGcbPTPr71aNDvendJ6wtbu7Fi1lezK0bS4VZMjtnFZE0bC5u9Jh0qRAr2yw4uWx59vBI4\n4PegN1tpbap0lqOk2sipLPB4aFsnHbBNOR5A1exFhqFxbeKkngyMhdOxIPcVuhiZFz/zBUEwcKvY\nnP6fWi0+6chjn6h062uATFLcRrIMnzAsO9EehNR+GvTV3GUh0+O2YsGaWHIf9amjIfib0no3S0Vt\nFY3M000zMzLJtLKvvkenyx96oz0rwNjA8cj2osFLbVAbOc9jRQiXOAwxnj3oBlAxwDj37UDY+vHO\nQeTQBIdqjcPMfnQwJclWyBgCjJBFeefw4VaVycBUGST2wAKD0L8H9C1rSIILjWLSCytY1lZASVnl\nL4PI/wD8+vvUo1uwbxI5GkjdVc7isvOBjtj2qBWKFZiQ8CJCB5FHYj5jHFArDbQ20ey3RY1HOAOP\nsKCH1u61CPSLt9MtlXUHUrbCbJBbPdtvYetXR5T1y2udD6lni1ErJdJLvlK4wWOCePvVgsV/8Sr6\n7UW1vA0NiowIonMe4+7FeT9ARQRmodWa9EYpPBhs1Tygw26rk9xknkn70EjonxZ17TXjAeKTkZ3L\n+YZ7N8vpSjX+lOpNM6umgkMG3EgBV1DYbG4kewz2NZGkC43CP8MPFBONysMAD50DaHVH8S6N1a+B\naxMUjd280pA5wPb296DrXWLK9WNoJdtwybxDKPDcAnHIoJBifTBzzmgaz2UFzPFNNbwvLCcxuygl\nT7igdRRKg8qAZ5JAAzQEnuYoHiSWQIZW2ID/ADH2H6UERr12BY6hueIQJaO7SK/nHfnHtx3pyPGW\noN4jynuCfU963RF+DL/UtQWTkjaWY/8ATnHFGql+j1VerdJY8r+KiJz/ANwoy9C/EjqSbpbRY723\nRJC8ojIcZ4IJ/wAVkecer9en1+9FzeLCCq4URjgDP7mtLhteadBY2kMczyHUpcO0YxtiUjgH/q9c\nelAiLy1kjCX1ruyMLNGdrj0+h+lE0+t+kNQltJ7yKS3jgiTxUFw/hySp7qp70NV6YEBgWUNjBoaK\neAODnHrRoVgDnBP0ozpxZ2f4y5trVeGuJFiBPpk4zQep9C0LTembS30fQbWP8ZsDyTugZgf6ix9f\nYZpbgmbXSmXULaa6kMzpltzcjJ//AGpaLCY1CDsF74PrUCgHY0HbSx7Z96BGUfxB2xjtQZ11t0Tb\n6jNfyw2wM18gV5AcBdpzyPnV0Yp1F0o/TEczXjXaTOQYpIk3QlT3B9Rj0zVl0VKbVppImheUSwbs\ngFfXHc0De0tri/ujFYQSSyfmKopPHqaDV/g9p+padr/gkSRTzKu0kZRlPLYPbOPf2pg9GWzRCMJA\nFxH5do4wayKX1z/G0CdzqLWRkiaTxQBLudclQvovbv3oMU/4Z67uwnUAt3u1Zw42yhmx3/Ln8v0o\nN86L1d00i3i1UiGQIocNnEbnkqT2xgiguEbI4DIysp7EHNAZnxQQ/Usksej3EsCl5EUthR5sY52/\nMjigr6Qrp3R15LqEcIlmgdpFGAsY2navPJApyPJtwd8rnGBuJz6Gt0MzGSTyf0qCwSKA5ZsAjnn2\notTXQYj/AOMNIDqCrXUZwf8AuGDRG6fF6Gyfo6+ub0CR4EPgIScLIeAcfc1keatN0661a+S3sYTP\nKzAbV9B7/StLrQ/iXp9pYLp8elWsUM11AzXMqt53I7g7j244oiB6W6Tn6j2TeAy2FspTeB+Z+/8A\nmgtnWlvpdl1Dp1pq07Ja20GFQpuDHHAwPf39KDHriVTKSPOCeBnHHtQGsrG5v5pfwcTOIlMjgEeV\nfck0XRIreS7uUigRpJXOEVe5PtRE/wBJ9HaxqvUcdhNFJp0lviaSWVcMgzxgdySeBipo9T6O8Npp\nUJ1K4iW5KgSvIyqxb5jPH0paJm1NvKivE6Mp7MpyP1FQLRTwy58F0cjuAckfagOTtO3+Y8igMWCI\nWbOPlzQNhNBOWEbq5Q+YKc4+tAD7JEZgQfXj0oI/VtIttXsZLW5hRopByCP/ADVlGRa78Erae63a\nXK1tG3LAncM/Kmh10l8IZdBv4rxtTE0yggJsyoz6/P0po0zSNKEMdo9xGnjxuzkqMAEgjj7Gmial\njWQMgyCRyQcGoITqHT7q/a30+G2jFmwLSzl8GPBGFA9c5NBPRwJDbpHCipEi4CjtigqfWltqCaG8\nWhNbxyzOBIs8W8FcY4+dWQQ/wtuZdIGqadrknhy2u2QyOSEZOeRngY+XvTBZZevOmhC8janbqiZ5\n3Zzj2FMFcs+sh1ZqsFrp8UkGkrlpbh+DNzhVX5Z5NQTfXyWUXSV2t+wW3EZ5I4HHt61eYPI0mA5C\n9snFaoLsPv8AvUEk5JcA8cZG480WnOlXX4PVLO4yQ0cyP244Yf8AiiPUfUump1B0/c2O8xfi4v8A\nmL3UcGpgw/SujNX0Trj8PpckimOMvHO/kEg9Rjs3PpV0aFq/Qqa1ZJ/qcrverEqNOwGM+uMfemiV\ntrKbQdMNjp9rvtkhPht6mU5yT8u1BkvXg1qXUtOvddgRY1R3j2YHiMvZSD27CgzSCyuNQ1KK0giL\n3Mz4VAOc/wDignoNNOnaHeiW8hgkku/Al2+Ziqgn09M0ETp0qpqSmGKOdFcEeLwMfPHag3JLuCRt\nPmQWsDhNphtVAcn1w3BPFSwDdWGpX1/OYdOtbbSrlQ80szHdn0GR24/c1AbWemdatLbTJdGvJIJy\npDQwMV3exwOPatSz9Ei/R+txy2mr3evyHV4miWIDhGwwyGA7nGRS2YNZAUBWYDdjGayEvxMYB3nY\nu4KCfU+woG93c2enWs1xcPFDCp8zEgDPzq4GGgz22saS1zZSZhkdsFePXt86YHWmySeLNDMYikZ4\nYNlvvUD+VARxQJqgwRQHUAAe2O1AWOFRM8mDlgB37fagb6reXFt4ItLZJnZsuWfaI0Hdjwcn2FAz\n0nWX1i4u4xY3VpFbv4eZ1x4vGdy/KgkriN2aMRlQoOW3DOR/5qwYr1P1tp2pdS3WnanKkGh24kRl\n2eaYgcb/AFxnnAqiv9Jno0dRLJPbtdQtkNPIALaMnODsPPpSjbdK0DTbWQXui+Gsco3BU5hPP5gP\nT7VkU74t6PZHpq/1N5ZZbwrtRnmOwDPOFJwPsK1xR5ybudw788VaC5X2WoJRULSBpAe5PA/aiinA\nZnHck4A70THq/Qr23/4Y0u4lmCpLBGA7epxjH60Du+WGOBvFlFuWOFcYyCfbPrUojri6k06xX8PF\nNfBUJ3ltzM3scVBjfVvVXVNit5dapNDZGQGK3shjeAe7YHIwAOT3zVggNTiu+orrR4p7m+upJFR7\nh3TPhggDaoBwRjnPH5hV0af0xotnoD3l5dWdrY2YjGLhwPEHoef996CC6m0HpuPpk3Wny2s9sJPH\nJ3AeI2D39T37UGU9QTDULuGPSLPwIyoVIYk2lj6/X70G2/DPp0hVudRuBLcwxhRGkeEjB9M+p96D\nSLprVHiieaAE+YxHkke4H1qUOIBawL4uAuc8nvj71AwjRtQ1eO78QNp9odyLju/qT8uf70Gb6r8S\npLzryy0vp+4NxYSSCEswI2u2Rn3OOD9qC4dVamen9NlaC7tUaIFvCmnHiy4HJXJxnOeDVwed+rOv\nLnqSyWO4jZSru/kc7ck+30GKosXw2+KmqaDJDY3jR3OmqNoRhtZAP6SP7Ggtmt63qbTJ1XLazJps\nlwBFblypEOAA7L2OWANS+xrnR2vW3UmjJeWp8wJSRf6WHeoJdSPMCRmgMq8DmgBpNsgUIxBGSccD\n70DczmS8MDWoe28MN4+f588rj980CktuJZYpFdlKZ4B4OfegQ1hpIrVjbsRMBhBj8x9qsHnX/hm3\n6y1O/u9V1ddPmS6aD8OkQdyxOSe4OMmqLUvwQsYY4Xjv7m4YEEhwFyMY7fXB5pRbvhp0jqfSMV7b\n6jqZvLGQAwxAEBDk54PuD6VkVb49a5DBpiaNaeF/FIaQDumOwpzMGDEZQZ5+VboR8In1I+9QWDY6\ngFn7jjHpQhtJEFbAGBnijT0P8H7qPVOh47a42yNaymPBOcDupoykep+m73V7g/8Av2itQowvJIx6\nj5/OpRjfUWrax051RPY6LqFy8YACkebO4Z7HjNWCY0ToW2utJbqPreW5na4O4R78cehY9+fQVKLX\n05p1ro97awC4kX8VFmJLeEKdoyfOxJPbHbHYVAz0rqKPWNauri9t1ktJgILYgEiNFJ/Op9STmrBB\ndeaFCo0y3jt444DI3jLE204Y5DD+9UPPhv0NaRtPq99mSLOy22nOfdh75oNC0vT7m1uJGvGiii3A\nW8UDbQAeDu9zUohLlhouqap1VciF4I1FtbxSthtobBIPuTn7VBJ2vUth1TYk2ULi9iALwyKQYz6Z\n9CM0Ft060/DWEcDHe2Mucdye9BFW3SekWt3LPb2cUTsd2UGCG9x7VYMzufhzdX/WmoXj+BPpx3I7\nXZMmXYckc8EVRKaP8I+nXikLQuxOQSTnBzj6UEjonw90XSrq3S3s7dplJcl1EhGDx396lFx1TQ4N\nVjaC7UNCU2lAO/8AvNWDCLp9X+E/WgWImXSp2LRq7eSRT3B9iP8AFSjd9P1+21TRodVsMS2rLmTb\nyUGOePXFQSltcLcW0c1vh4mXcjDswoDLdRm4FvISsgXeTghDzjAPbPyzmgVFxCzuiOC0WN3sM+5o\nDqySJmNg3rx7UFb60tNUubGJdFdEvhIdryflUFSM49TVgyTQenJemOorf/U4H1Fpp1edAh/hOQTu\nQ9375JA4q0bnbPBcxxT20wkjKkqYzlT9ayGWu38um2MbLEJ7iRtoUds+/wAgBzQeW/iHqi6j1Pdz\neL44HkL9txHtWhVUOVyvHNB2F9zQT8hUAhAdp5FCG0mSAzE4HGDRppvwL1bwOpJbEsFiuYyVX3de\nR98Zoy2ZtRgmjkSRZocEp51K7se3vUow/rfpFE124mVpfD4mk2MWdCc4A+VWCH1281/UmFnpklzP\nYRFBEG8uGC4yQfcn9alGgaJo95rRsbi53WaxwrHOm7BjYcHnvz/moJaw07pXSI5IW1K0CQnDhpAW\nB9R796CudY62msTRW+gadI8KnDXMkLLv9MA8HGOKC3dAXF1dRfh75f41moi4G0AdwcfTj7UFhv7R\njqMBV5AJFZHkR8FRjIx6CgpXVNjJ1JqNn07p26CztSJLlpIydyj2J+fGaC+afplrazqLa3SKNIgg\nx3IHYUEsBk4wQc4oK11L1z070/M9rql6wuVA3QopLcjNBDwfFboqeSO2W7kQNxuaEhQfnQLt8Tui\nreVoV1UeXnckTFT9DigHRuv+mbu9ZV1W3Nyc4IRlVl9O47/KgtU+s6baw+JcX1umRkAuM/p3oK/1\nt0rYdX6cqXKESqN8Ug/Mp9P1qwZ702mo9GdUTWJsmOn3EY8CAORGXJAwScjJ5q0bJDNLb6YklxbK\nsgA3wwndg9sDtWQN3aw3ZKTwLLEQOGORn6ehoG1vYAw3FikRt7JSuH3Hc/GSc5P0oHn4aO2uGuYy\niose044wBQIm6F1dwfh5ARs8R8L2BHGfnQHv9PS4PjxrGLtFKxysm4qD3oCxboIIo7e1jhQHzAYU\nJ8wP8VYM56j1ktaal1BMrS2sAaK1OQDD6eUepY9yfQVR5zv7hrmaSaRtzyHJY0DcE4BPIPb5UBwO\nO4oJYzFvzEYHAH9XvQhNZN7AEgDOSDRo/wBA1SXRdVtNQgb/AJUgfBHcZ/8AGaGPVlhPbarZ2t5C\nEeORBKje2RUrI1zYxTBhMinIwcjvUEcugWkO4AMisMEA8N69u3yoERrOhWNxNYy6hapcxAeJHM+D\n8u9ASLStLlm/EWdpZyxy+Z3RQ3I5B44oJKTT4blFWSNBEOeBg5+goFYbOK1TKhIxnIbGMH50Cpcy\no6AMrIcM2OD68Ggb6Lbbllu5Cd88hYBu6rztWglSNkfm4P70Gaat8Rba96w0vp3R2mhufxyi4kO3\nYyDOV9+f8VYMw+P0cP8Ax4JVuEKzW8bEr5tuMj0+lUZ7Y2X4288GK+towRlZXYqv9uKCQi6YmbT2\nu11GzaJWKnYxbBB49KCFnhubdiwL+U8OhP60ElpXUFxY6nDdXQF0qYbZKxwT9vWg3npb42aHcmC1\n1C3uLSQjEkpIdQfr3xUondP6x6e6tv7e101hczRzrNtaFiFC/wAxPYHtUF+lj8bYCTgMG59cUC4O\nBQQOo2eoXepFTeL/AKYQN1sEwWx6Fu+DQLX2kw3Ok3Vjas9qJ48Exd1PHb9KCE6R0G86Ut7mK71K\nK4gklM7TyKRIBjtjtjj96AOreudJsrMJbXksk8jBCbVdzRjONxBHP/3QQ9x1jcWGkERWWqXdpMPC\nt7x4wfFOOWPbA+fAqwZr8TJ9Qbp2ymvEjsrSTEVvawyHz45Lv6E4wPqaoyl8g91OKDlYEc8mgKW5\nPH7UE80f8PPHl7gDFAZkUjawUIQG8w5ouknAUbl9Dg59KK1X4Z9XXFvo8mlRXax3KHfBG8Rk3qe6\njHOc54+dMZO7jr/qK8vWtba4tYu38TwvDOMc8N60wPLbrW10PS7pnvrnUtbAKobgBUUk9jg8f/lM\nC2rydMdRSaRqWoLEbx4UefwxkL2BVvvn9Klgv3Tp0lPxFno6wJ4IVmEOMEHsf2xUD2e4ks7n+NGD\naCMu8q8lCMcEfPNA6tW/EwrMybEYZUHnI9Cf/FAzu7G4LXTWs38SRNqhs4Bz3z9KCO6x07UNT6al\ntNMvEs7xkC7nPlI9R2/egwbrDT+r+kupLCeK9nu3KBYGRy+QvdWFWCU6avtA6h1iKDqLRhpmpvkx\nz2p8JGb3z7k557VRX77TdHteuPBut401CAouyXGcdvmASaC069030brYaay/CwPFwWspRErfUN7U\nGZX2hWSiY6ZrMc0CvhUlBUk/UcGgiLq2mtG8F54yDwfDfIoGkrRsSZXwOB2zmgsvw06XHVfUcFvI\n22xQ753Ze4H8v3OBUo9a6XodjpltHbabDHZIhVsQqBuA9DxznFQTQUe5oDYGMnn7UEbpV3JqDyz+\nBJFbBtsXiDBf/qx6CgDXL42cSRwGM3UzBQrHGFzy32oG2i2kKTSI80lzMow0rqQoyew+3tQO59Kt\nJJRI9rEzgg7igz3z/egZ6paJdGGwW4eBXy7pGeXUdwT6A5qwebPjJrcOr9TvbWZQ2Onr+Gi2nIJH\ncj7+vyqigOuRk+vtxQAqEk4BU0ABj7j96CzzKxYD0GeM0CQG3OMAjkfOgbSZwzE4PJyfWi6caTdz\naffW95akrPFIrLg/tRHpGzs9C6t0W31FrO3Y43MrcbH9c/eloZ6v0JpWoKlrHHBbScSFEHYc5Pz7\n1NDXUoJrK1g0dvw9qsspW3nXaN6KMrHnH5ieSfan0U3Rr1uidaRbiwk8BUSS6naQkjc3ZcHaRnn7\n0wbja6lZX+nw3NvMksM+FXnPJ9DUCeoXj2hSG2t2km7op4U/f/FAvHaNePb3N0jRzRA7VD8Akc9u\n/FAvcxnawZQ3HYtjJoKfDFAdeub6Vo1dSULIBtTbgYOfU8jNWUVvrm5ih0m1urixhlsI5HJliOwR\n5/LkkHHJPamjHdQ0HWdemlutN0+YWBYtC0rHDhjwVz3zWgx1n4e9U6QE8XT5Zd//APR5se9XBXbj\nS9S0zAvbO5tyWKAOhG4/KpQ3ZHXO5JFK98qRUGhfCbph77Uvx91pv463wVjR0LR7s483796WjW7r\nTrXpHWrSW2YK7lmXTbaIFpCRjjHOOSeeBipaNLtXuIre3R43lnkGXYADZnnmoH6Dkbzn6UDGWe9a\n/hKG3jsW8riQMJS3svp86B6zgMQmDtGT8qDNb6XUpOoPx72tzOkjFYowOduDwDjj70Gg6Wsq2KNe\nAJKRuKk52fIn5DvVkENrvW+iaSAsl0txI2Asdud5Yk4A4pgzv4l9ST6JZSXbyyprWpw+FFa5G21g\nz5icfzH3pgwCSQlh688+tUEwjjngZ7UHAHuWAHpn+1AXj5frQWXOGBZcKSe3c/rQIyAtnI27eBj/\nADQIMAuH8vHBB9DQwVpPLjOckEZ/ahi9/Czqj/S9VhtLm6aG1uZFUsT5VOfX5Gpg9GiNJArxsrxs\nv1BHypYGF7pljeG3kvLZSlqzNGGxhSRjP6GoG1yLUWiWc2nSPA4KJGItyYHYHHarop3wu0jWYNUv\nzriNBp8ErraRMANxJ/N7nA7ZqDUHgSQLvAbacjI7H3oOuIFuYzGS68jJRyp4+lA0m0yDwGjiTw3b\nzBwTuDe+TQVbV+mLmW1NtbSok9weZiC2zPLEZ+/FBM6Xo40/TYdL8Jr21G4vJcuCck55HbFWUKQ/\nh4tR/DTz2o8TK21qmMgKOf8AfpmrokljG1i5BHI57D5VNorut9Lab1LA638W6H8sboNrqQckq3pn\ntV0RWsfD6K7SGC3vTFahQJY2iVmkI9d+Mimie0Hp2DQ7AQacio3JZgqjcT3zxk1KHGldPWtnqMup\nS5uNTmGGnk5KjGNqf0r8qgmkhVGcquGblm96BDUZZYLGVrdN8+MIvux7UGKTdXdbaRrFvbaxbWN4\nd58BmwCjHPORycLx2q4LNe9S9TdN6I13qkWmzSXdwBCGlO4hiMKAB2A9ag0WySQwpLLtMjDcQBhV\nz6CgoHxF17XbnUYunulgsUsu4TTvjIUAEhR+x4qwZwtkOi7651PXJobm4tohHbQhdgecjnaPZeOf\neqMy1vWLvWNQlvb+ZpJpWyT2A9gB6Cgjy5AO4A5oAGRgBR39aA7Z8MkFtxPY0AbV9UGfpQWhj5Tk\nBQGxuBoEGG1iQCyHvj1oELgSkK6oRnIBIxzRdJ28Q3+fHiAds96LoH3AF1wCfyijNbF8JviI1rbQ\n6Pq/iSopxFOx5Uf0n3qUbWQk8II2SRyDPuCDUHMpSIiJQSBwDwKAgTxApnEbyIQ+APyn0+9A5B3A\ngfmoEWgcb3VlMpGFYjt+negSs7zxH/C3RWO9UElM8SAHG5fl/agNdXcEbJAZ1WadvDQDJO7Gf7c0\nED1dqWv2enzw6Rb24nZfJd3EwREHqxyMZHzOKBbT7H8PZWTK5uZ9o3Xm1SzEry5PsT7UFF+JnUez\nSZ9LttRs2km2m5KSFWXDZI491AyBzVwK6J8T7CRtPjee0tbaGAtdNISdoXgLEo5JJxyfSmC6aF1f\no2vELZXDJOxwkMybHYe4HtUFiJWJd8rKqjuTQcZV8SNI0dy43BlGVA+ZoBniE0RU7tp77Tg5zQUv\n4hNrU2tdNWOhylPEnaS5UHGYlAzn5cn74oHGt6l0z07k6nJC123HhKPFlbPptGTj9q0Kx0XMvU+t\ny6vqQtpWlZo4LOdGDWsak8Aflycgk+v2qC8a1q8OnaXLPOz2kCIWkZ+CqjgYx6n0xTBkmp9Sabp0\nKdRyI5vJkaGw08MVKIDw8jA557896QY1q2o3eqXr3N7O8skjnlnzgn5e1UMCGV/MOM0BJFOVwfX0\noFtgZTjkg8UBtpOeO1B3hg85FBZXVMM+VJAA2+h96BO4IMJ/p7qvuKBKacmOKB5CYYx5UzgDPfHz\noGwD5OApJHAHrQEAk8NWdNpx+XdkA0AIGhkGWOQcgg8UGw/DP4kmwhi07WCTZqAiSbstGc4+pFKN\nvs5o7q2Sa3kWaJxkOp4NZDOHUh/qL2k8LW78eG7kbZv+0+/yoEZp7fUpX/BXpgvYZTCSRtO7vtwe\n/vQdY6jeyatPp91FEPw8aSNMoYbi2cADt6Z70DS60KW7luJdV1JniJzBtURG2b0KN7+/vQKSWUWn\nLLqN3cSLP4ex5Y8jxiPykr23+nzzigpXUPVOu6Vqmmf8UWttb9OXDqkjRnfI3H849uRkDOKC0axL\nFr+nLB0rrUMM0bqCIGGGX1AH09qsGc9UfBiTV9Vhu9Pu5oPGLNeG6bczN7jHvVEr058Gre3sLeDV\nrmOdo3LmSFNjEH+XdntQXO51XQOl5YrCKGWa8SMYS3tzMyLjjJHb9alDqz1S5ktJ7nVdLmSVDiOO\nNfEMiE4Xy+h9xUDm11CaTxEOn3VmpHFxKFCr9s5GPmKAus6jb9M6RJf3c88yxpjcxL7uM5OO3HrQ\nVTSupoOuYdZMTSpptriNFtXKXDA/Pjhs9h2xQOJ7Xpnpa2S91WK2swqjbGw3ysfcnuxrQsGmapYv\npwvra1FtDL52Mi+Gx49sZoMb+LXV0t+jWl3OYLGTO2zjx4h2nyszHsG4/Sgxt5ZJmEsjl3PB3GgS\nlyXBxkDnNADseB2PsaA8SoXQyFgmQCV70B5R/EIjYmPJxnvigEKcYDfrQF2/X9aCwqC7l2zwfT/F\nAJJ5747E5oGTqZArKOfccftQHZWwmOD23Z4NAEkTEBmwR7g5AoG7KSSE5HyFAMTyQsMHa/cEcEc5\noL58P+v7rppdryPNAXx+GfsQe7Z9D2/Wg3zSdX0fqzT08F433eYwscOpHt9PcVkQPW632mX9vfWd\nrbXiRgrIdu2eHIwGD57+nIoKdc/ELVdC0u5afp27SUtta5vJMMzk+UDjzYHtQWDpj4gxXmif/wAi\ntXZkGZzFGW8MehZO+PmM0Fibr/poWQmF6xXA2xmFg59sKRk0C2nQP1KFvdb0vwIUJNtDKcsVP8zD\n0Jx2oJDTNA0vR5p7qzs44pJOXkUc/SgNfa/pNvbF5L2JgTsCo2WJzjGKA1jcNcxOF/m/I0zbt4+g\nxgenNA5s7CCxWWYQxpNLgyMiY3nt2oHajcuexAoEL1C1uyFkVHO1ixHb17/KgwT4rdXWep6oul2O\npywaTYqVLxDyySDjaM9x6Z+tWDPdB1TW7Wa9sumpGlursqMQRlpXwd3BA4571RcdN0i41G7h/wBS\nmNxqdkwn1O6u5/4cAXlYgcnngE/pQNvih8S211obHRyYbWInfJG/Ex9MD2+tBmNzcTXTtJcSSSSH\nH5jngDAH0oEdxbg5A9wKAzPwO+fegSLfLJoFoR5fUfegXOcHGAT8qAM+XaBzQCCwGDuyPlQWJpV3\n7Q5TIweM7u/f9qA9vNYpFML2KaR8YiaJgAh55PvQRvnYoqA+MThcDnPai4PKWQlH3K6tggjnPaiE\nmz4ZznBPfFAVWG0AZDH1z2HzoE7lhv8AJIHI/mGRQI8AEeuOMGgndN6pu7V4RJLKY4WDLhypXj0o\nNL6d+MMS4ttetDdQgDNwAPEwPRh2NZGkabrvTXVZiexvba5aI+ILWZQG3Y4IDdvtQScvTdjK8cht\nFjkQ+VlYgqPXGKA17daV07apJrV9CsZbELTgbu3YY78UEHf9evJ4K9P6JqGoiR1XxjCUjAJ5OT3N\nBM9YdSWPTenwy3t7bWbSuBunUthfUhRyT+1BA2vXnS/jGdeo9LnIHljeLwSCe5zgmgejrOz1S3kG\nhazoaXYGAJ5Sw3e38uaCsJfX02rPD1XfXtvcCXdBJGjLbOO+EK88Y7nIoLB1H1Bb6WkN1ddSQ29i\no/5MZEjzt7DGTjj2FXNGUfEH4wRaxCtnp2kwGGM7llvBvIOO4XOAe/fNMwZbqusalfLBHfzSvFH+\nSIgKo+igYqiwWfWV30rpp03p6exJnUPJexQnxuR+Ulu2PkKCrT6jcSiTxZnbxCWcFidxPJJ96BBD\nlQ35fbFAbahBHJIGO+KAIwg5YnB455oDkKcbW7UAOowSMjOORQcCVXPp+9AqDkHcDmgMNpHPcUBT\nuzQWCJXcFvKR2Y0CMiqjnz4UcH/6oG8gKluwxyAfSjQ6ylEJBJfv37/OiYQMjbjkZXOSP/FEELAE\nkNn1waBCXdjORnPoc80CZeTb5wQe2BQAm4y7jlhjvQcWO3cW4GB7ZpgGC5a3uUeNyGQ5GCR+45pg\nt+l/EzqLTgxj1O5Zc4CSOXCj70wOE+Jd/Pq0V7qVvb3bISAWUBhnuc+/2pgvkHx0soLaNIdKkEiq\nR5yDg47cYpgresfELSNc1n8VrFtAw2ZBiiywwcgeb14x2xTBYNA13ozUo/GOqWVizDc1nf6crIh/\n7wOf1rOURvVupdE6ncpFeakiSWsZdbjSLfw1Zs+VVyMHA75xWsFDHU0idTJdf65rT28YKpPvHjKp\n9Bk49qYK/rGpXF/qU9zPdyzyyMSJJAAx9ifnVlwNZ7vxYEh8GAEHO8DDH5H5U0IPK8jHxSzFQAMn\nOKgJkFwPT6UBlAII5z3zQCjnA5OKBXeuAT9KABMA208DtxQHRhzgUC3KjJx9z2oAP6/L3NAHC8Hg\n/XNAcNtGe4oEy5yeaCdLk7yx2qQCAO1AmXZSSexHbPNAhJuLJkgjvzRonuAJy2cd8UCbyOi453Dj\n7GiYTZyVPPl74oYLJIyq68EH3Gf3oYTDEjLbiP1FEDHOUOdgOfXIBFAm77j5Mnng/WgLI5UE8Eg9\niO9AnuJbuQx5wOBQFRxuIbOc54PrQK28ws76F722EyI4d4HJUOPb35yKBm8oeQsi4BPbPb71RyYI\nHmPGRg00GRsbsHIPY0Bg52AEEseBUCQJyOPXtQDtcdvvjtQCQ/GBwKAuXU4PrQBvZE5IGeO1Affj\nBJ57UBvEO045HagFWAAzktQKIzBeMg0C5kz5mOG/WgMrDJJ7jmgEnIyOccYoA3cEMRj05oC7/wDe\nBQTduzEoNxwcZGaAJOWfPNAlISVOT60aIQfkj+amgJ3bnnigKeFGPQUCf/x0Smw4V8exogX/AOY3\n+/SgKxKxeU459KAgJOckntQJkkcgkGgAAFFz/XQEmJaY7jnk96BM9yPQelAf/wCX7UBv/jagGP8A\nKB6ZoDf00HMfO/0oAH5TQA/5moECSMDPFAvGASMjPP8AigVX+b60BW7/AHoHEJJD55oDd4snv70C\nsSjCcDmgVAAbgYoGYJ3nk9qBUAYHAoP/2Q==\n" } }, "id": "uid6" } ], "nbformat": 4, "nbformat_minor": 5, "metadata": {} } pandoc-3.1.3/test/ipynb/simple.out.native0000644000000000000000000000501607346545000016564 0ustar0000000000000000Pandoc Meta { unMeta = fromList [ ( "jupyter" , MetaMap (fromList [ ( "nbformat" , MetaString "4" ) , ( "nbformat_minor" , MetaString "5" ) ]) ) ] } [ Div ( "uid1" , [ "cell" , "markdown" ] , [] ) [ Header 1 ( "lorem-ipsum" , [] , [] ) [ Str "Lorem" , Space , Str "ipsum" ] , Para [ Strong [ Str "Lorem" , Space , Str "ipsum" ] , Space , Str "dolor" , Space , Str "sit" , Space , Str "amet," , Space , Str "consectetur" , Space , Str "adipiscing" , Space , Str "elit." , Space , Str "Nunc" , Space , Str "luctus" , SoftBreak , Str "bibendum" , Space , Str "felis" , Space , Str "dictum" , Space , Str "sodales." ] ] , Div ( "uid2" , [ "cell" , "code" ] , [] ) [ CodeBlock ( "" , [ "python" ] , [] ) "print(\"hello\")" ] , Div ( "uid3" , [ "cell" , "markdown" ] , [] ) [ Header 2 ( "pyout" , [] , [] ) [ Str "Pyout" ] ] , Div ( "uid4" , [ "cell" , "code" ] , [ ( "execution_count" , "2" ) ] ) [ CodeBlock ( "" , [ "python" ] , [] ) "from IPython.display import HTML\nHTML(\"\"\"\n\nHTML\n\"\"\")" , Div ( "" , [ "output" , "execute_result" ] , [ ( "execution_count" , "2" ) ] ) [ RawBlock (Format "html") "\nHTML\nhello" ] ] , Div ( "uid6" , [ "cell" , "markdown" ] , [ ( "tags" , "[\"foo\",\"bar\"]" ) ] ) [ Header 2 ( "image" , [] , [] ) [ Str "Image" ] , Para [ Str "This" , Space , Str "image" , Space , Image ( "" , [] , [] ) [ Str "the" , Space , Str "moon" ] ( "uid6-lalune.jpg" , "" ) , Space , Str "will" , Space , Str "be" , Space , Str "included" , Space , Str "as" , Space , Str "a" , Space , Str "cell" , SoftBreak , Str "attachment." ] ] ] pandoc-3.1.3/test/jats-reader.native0000644000000000000000000020604507346545000015552 0ustar0000000000000000Pandoc Meta { unMeta = fromList [ ( "author" , MetaList [ MetaInlines [ Str "John" , Space , Str "MacFarlane" ] , MetaInlines [ Str "Anonymous" ] ] ) , ( "title" , MetaInlines [ Str "Pandoc" , Space , Str "Test" , Space , Str "Suite" ] ) ] } [ Para [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "set" , Space , Str "of" , Space , Str "tests" , Space , Str "for" , Space , Str "pandoc." , Space , Str "Most" , Space , Str "of" , Space , Str "them" , Space , Str "are" , Space , Str "adapted" , Space , Str "from" , Space , Str "John" , Space , Str "Gruber's" , Space , Str "markdown" , Space , Str "test" , Space , Str "suite." ] , Header 1 ( "headers" , [] , [] ) [ Str "Headers" ] , Header 2 ( "level-2-with-an-embedded-link" , [] , [] ) [ Str "Level" , Space , Str "2" , Space , Str "with" , Space , Str "an" , SoftBreak , Link ( "" , [] , [] ) [ Str "embedded" , SoftBreak , Str "link" ] ( "/url" , "" ) ] , Header 3 ( "level-3-with-emphasis" , [] , [] ) [ Str "Level" , Space , Str "3" , Space , Str "with" , Space , Emph [ Str "emphasis" ] ] , Header 4 ( "level-4" , [] , [] ) [ Str "Level" , Space , Str "4" ] , Header 5 ( "level-5" , [] , [] ) [ Str "Level" , Space , Str "5" ] , Header 1 ( "level-1" , [] , [] ) [ Str "Level" , Space , Str "1" ] , Header 2 ( "level-2-with-emphasis" , [] , [] ) [ Str "Level" , Space , Str "2" , Space , Str "with" , Space , Emph [ Str "emphasis" ] ] , Header 3 ( "level-3" , [] , [] ) [ Str "Level" , Space , Str "3" ] , Para [ Str "with" , Space , Str "no" , Space , Str "blank" , Space , Str "line" ] , Header 2 ( "level-2" , [] , [] ) [ Str "Level" , Space , Str "2" ] , Para [ Str "with" , Space , Str "no" , Space , Str "blank" , Space , Str "line" ] , Header 1 ( "paragraphs" , [] , [] ) [ Str "Paragraphs" ] , Para [ Str "Here's" , Space , Str "a" , Space , Str "regular" , Space , Str "paragraph." ] , Para [ Str "In" , Space , Str "Markdown" , Space , Str "1.0.0" , Space , Str "and" , Space , Str "earlier." , Space , Str "Version" , Space , Str "8." , Space , Str "This" , Space , Str "line" , Space , Str "turns" , Space , Str "into" , Space , Str "a" , Space , Str "list" , Space , Str "item." , Space , Str "Because" , Space , Str "a" , Space , Str "hard-wrapped" , Space , Str "line" , Space , Str "in" , Space , Str "the" , Space , Str "middle" , Space , Str "of" , Space , Str "a" , Space , Str "paragraph" , Space , Str "looked" , Space , Str "like" , Space , Str "a" , Space , Str "list" , Space , Str "item." ] , Para [ Str "Here's" , Space , Str "one" , Space , Str "with" , Space , Str "a" , Space , Str "bullet." , Space , Str "*" , Space , Str "criminey." ] , Para [ Str "There" , Space , Str "should" , Space , Str "be" , Space , Str "a" , Space , Str "hard" , Space , Str "line" , Space , Str "break" , LineBreak , Str "here." ] , Header 1 ( "statements" , [] , [] ) [ Str "Statements" ] , Header 2 ( "" , [] , [] ) [ Str "CAP" , Space , Str "TITLE" ] , Para [ Str "Some" , Space , Str "text" , Space , Str "to" , Space , Str "make" , Space , Str "this" , Space , Str "regular" ] , Header 1 ( "block-quotes" , [] , [] ) [ Str "Block" , Space , Str "Quotes" ] , Para [ Str "E-mail" , Space , Str "style:" ] , BlockQuote [ Para [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "block" , Space , Str "quote." , Space , Str "It" , Space , Str "is" , Space , Str "pretty" , Space , Str "short." ] ] , BlockQuote [ Para [ Str "Code" , Space , Str "in" , Space , Str "a" , Space , Str "block" , Space , Str "quote:" ] , CodeBlock ( "" , [] , [] ) "sub status {\n print \"working\";\n}" , Para [ Str "A" , Space , Str "list:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Para [ Str "item" , Space , Str "one" ] ] , [ Para [ Str "item" , Space , Str "two" ] ] ] , Para [ Str "Nested" , Space , Str "block" , Space , Str "quotes:" ] , BlockQuote [ Para [ Str "nested" ] ] , BlockQuote [ Para [ Str "nested" ] ] ] , Para [ Str "This" , Space , Str "should" , Space , Str "not" , Space , Str "be" , Space , Str "a" , Space , Str "block" , Space , Str "quote:" , Space , Str "2" , Space , Str ">" , Space , Str "1." ] , Para [ Str "Box-style:" ] , BlockQuote [ Para [ Str "Example:" ] , CodeBlock ( "" , [] , [] ) "sub status {\n print \"working\";\n}" ] , BlockQuote [ OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Para [ Str "do" , Space , Str "laundry" ] ] , [ Para [ Str "take" , Space , Str "out" , Space , Str "the" , Space , Str "trash" ] ] ] ] , Para [ Str "Here's" , Space , Str "a" , Space , Str "nested" , Space , Str "one:" ] , BlockQuote [ Para [ Str "Joe" , Space , Str "said:" ] , BlockQuote [ Para [ Str "Don't" , Space , Str "quote" , Space , Str "me." ] ] ] , Para [ Str "And" , Space , Str "a" , Space , Str "following" , Space , Str "paragraph." ] , Header 1 ( "code-blocks" , [] , [] ) [ Str "Code" , Space , Str "Blocks" ] , Para [ Str "Code:" ] , CodeBlock ( "" , [] , [] ) "---- (should be four hyphens)\n\nsub status {\n print \"working\";\n}\n\nthis code block is indented by one tab" , Para [ Str "And:" ] , CodeBlock ( "" , [] , [] ) " this code block is indented by two tabs\n\nThese should not be escaped: \\$ \\\\ \\> \\[ \\{" , Header 1 ( "lists" , [] , [] ) [ Str "Lists" ] , Header 2 ( "unordered" , [] , [] ) [ Str "Unordered" ] , Para [ Str "Asterisks" , Space , Str "tight:" ] , BulletList [ [ Para [ Str "asterisk" , Space , Str "1" ] ] , [ Para [ Str "asterisk" , Space , Str "2" ] ] , [ Para [ Str "asterisk" , Space , Str "3" ] ] ] , Para [ Str "Asterisks" , Space , Str "loose:" ] , BulletList [ [ Para [ Str "asterisk" , Space , Str "1" ] ] , [ Para [ Str "asterisk" , Space , Str "2" ] ] , [ Para [ Str "asterisk" , Space , Str "3" ] ] ] , Para [ Str "Pluses" , Space , Str "tight:" ] , BulletList [ [ Para [ Str "Plus" , Space , Str "1" ] ] , [ Para [ Str "Plus" , Space , Str "2" ] ] , [ Para [ Str "Plus" , Space , Str "3" ] ] ] , Para [ Str "Pluses" , Space , Str "loose:" ] , BulletList [ [ Para [ Str "Plus" , Space , Str "1" ] ] , [ Para [ Str "Plus" , Space , Str "2" ] ] , [ Para [ Str "Plus" , Space , Str "3" ] ] ] , Para [ Str "Minuses" , Space , Str "tight:" ] , BulletList [ [ Para [ Str "Minus" , Space , Str "1" ] ] , [ Para [ Str "Minus" , Space , Str "2" ] ] , [ Para [ Str "Minus" , Space , Str "3" ] ] ] , Para [ Str "Minuses" , Space , Str "loose:" ] , BulletList [ [ Para [ Str "Minus" , Space , Str "1" ] ] , [ Para [ Str "Minus" , Space , Str "2" ] ] , [ Para [ Str "Minus" , Space , Str "3" ] ] ] , Header 2 ( "ordered" , [] , [] ) [ Str "Ordered" ] , Para [ Str "Tight:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Para [ Str "First" ] ] , [ Para [ Str "Second" ] ] , [ Para [ Str "Third" ] ] ] , Para [ Str "and:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Para [ Str "One" ] ] , [ Para [ Str "Two" ] ] , [ Para [ Str "Three" ] ] ] , Para [ Str "Loose" , Space , Str "using" , Space , Str "tabs:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Para [ Str "First" ] ] , [ Para [ Str "Second" ] ] , [ Para [ Str "Third" ] ] ] , Para [ Str "and" , Space , Str "using" , Space , Str "spaces:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Para [ Str "One" ] ] , [ Para [ Str "Two" ] ] , [ Para [ Str "Three" ] ] ] , Para [ Str "Multiple" , Space , Str "paragraphs:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Para [ Str "Item" , Space , Str "1," , Space , Str "graf" , Space , Str "one." ] , Para [ Str "Item" , Space , Str "1." , Space , Str "graf" , Space , Str "two." , Space , Str "The" , Space , Str "quick" , Space , Str "brown" , Space , Str "fox" , Space , Str "jumped" , Space , Str "over" , Space , Str "the" , Space , Str "lazy" , SoftBreak , Str "dog's" , Space , Str "back." ] ] , [ Para [ Str "Item" , Space , Str "2." ] ] , [ Para [ Str "Item" , Space , Str "3." ] ] ] , Para [ Str "List" , Space , Str "styles:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [] , OrderedList ( 1 , LowerRoman , DefaultDelim ) [] , Header 2 ( "nested" , [] , [] ) [ Str "Nested" ] , BulletList [ [ Para [ Str "Tab" ] , BulletList [ [ Para [ Str "Tab" ] , BulletList [ [ Para [ Str "Tab" ] ] ] ] ] ] ] , Para [ Str "Here's" , Space , Str "another:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Para [ Str "First" ] ] , [ Para [ Str "Second:" ] , BulletList [ [ Para [ Str "Fee" ] ] , [ Para [ Str "Fie" ] ] , [ Para [ Str "Foe" ] ] ] ] , [ Para [ Str "Third" ] ] ] , Para [ Str "Same" , Space , Str "thing" , Space , Str "but" , Space , Str "with" , Space , Str "paragraphs:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Para [ Str "First" ] ] , [ Para [ Str "Second:" ] , BulletList [ [ Para [ Str "Fee" ] ] , [ Para [ Str "Fie" ] ] , [ Para [ Str "Foe" ] ] ] ] , [ Para [ Str "Third" ] ] ] , Header 2 ( "tabs-and-spaces" , [] , [] ) [ Str "Tabs" , Space , Str "and" , Space , Str "spaces" ] , BulletList [ [ Para [ Str "this" , Space , Str "is" , Space , Str "a" , Space , Str "list" , Space , Str "item" , Space , Str "indented" , Space , Str "with" , Space , Str "tabs" ] ] , [ Para [ Str "this" , Space , Str "is" , Space , Str "a" , Space , Str "list" , Space , Str "item" , Space , Str "indented" , Space , Str "with" , Space , Str "spaces" ] , BulletList [ [ Para [ Str "this" , Space , Str "is" , Space , Str "an" , Space , Str "example" , Space , Str "list" , Space , Str "item" , Space , Str "indented" , Space , Str "with" , Space , Str "tabs" ] ] , [ Para [ Str "this" , Space , Str "is" , Space , Str "an" , Space , Str "example" , Space , Str "list" , Space , Str "item" , Space , Str "indented" , Space , Str "with" , Space , Str "spaces" ] ] ] ] ] , Header 2 ( "fancy-list-markers" , [] , [] ) [ Str "Fancy" , Space , Str "list" , Space , Str "markers" ] , Para [ Str "Autonumbering:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Para [ Str "Autonumber." ] ] , [ Para [ Str "More." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Para [ Str "Nested." ] ] ] ] ] , Header 2 ( "definition" , [] , [] ) [ Str "Definition" ] , DefinitionList [ ( [ Str "Violin" ] , [ [ Para [ Str "Stringed" , Space , Str "musical" , Space , Str "instrument." ] , Para [ Str "Torture" , Space , Str "device." ] ] ] ) , ( [ Str "Cello" , LineBreak , Str "Violoncello" ] , [ [ Para [ Str "Low-voiced" , Space , Str "stringed" , Space , Str "instrument." ] ] ] ) ] , Header 1 ( "inline-markup" , [] , [] ) [ Str "Inline" , Space , Str "Markup" ] , Para [ Str "This" , Space , Str "is" , Space , Emph [ Str "emphasized" ] , Str "," , Space , Str "and" , Space , Str "so" , Space , Emph [ Str "is" , SoftBreak , Str "this" ] , Str "." ] , Para [ Str "This" , Space , Str "is" , Space , Strong [ Str "strong" ] , Str "," , Space , Str "and" , Space , Str "so" , SoftBreak , Strong [ Str "is" , Space , Str "this" ] , Str "." ] , Para [ Str "Empty" , Space , Strong [] , Space , Str "and" , Space , Emph [] , Str "." ] , Para [ Str "An" , SoftBreak , Emph [ Link ( "" , [] , [] ) [ Str "emphasized" , SoftBreak , Str "link" ] ( "/url" , "" ) ] , Str "." ] , Para [ Strong [ Emph [ Str "This" , Space , Str "is" , Space , Str "strong" , Space , Str "and" , Space , Str "em." ] ] ] , Para [ Str "So" , Space , Str "is" , Space , Strong [ Emph [ Str "this" ] ] , Space , Str "word." ] , Para [ Strong [ Emph [ Str "This" , Space , Str "is" , Space , Str "strong" , Space , Str "and" , Space , Str "em." ] ] ] , Para [ Str "So" , Space , Str "is" , Space , Strong [ Emph [ Str "this" ] ] , Space , Str "word." ] , Para [ Str "This" , Space , Str "is" , Space , Str "code:" , Space , Code ( "" , [] , [] ) ">" , Str "," , Space , Code ( "" , [] , [] ) "$" , Str "," , SoftBreak , Code ( "" , [] , [] ) "\\" , Str "," , Space , Code ( "" , [] , [] ) "\\$" , Str "," , SoftBreak , Code ( "" , [] , [] ) "" , Str "." ] , Para [ Str "This" , Space , Str "is" , Space , SmallCaps [ Str "small" , Space , Str "caps" ] , Str "." ] , Para [ Str "These" , Space , Str "are" , Space , Str "all" , Space , Str "underlined:" , Space , Str "foo" , Space , Str "and" , Space , Str "bar." ] , Para [ Str "These" , Space , Str "are" , Space , Str "all" , Space , Str "strikethrough:" , Space , Strikeout [ Str "foo" ] , Str "," , SoftBreak , Strikeout [ Str "bar" ] , Str "," , Space , Str "and" , Space , Strikeout [ Str "baz" ] , Str "." ] , Header 1 ( "smart-quotes-ellipses-dashes" , [] , [] ) [ Str "Smart" , Space , Str "quotes," , Space , Str "ellipses," , Space , Str "dashes" ] , Para [ Str "\"Hello,\"" , Space , Str "said" , Space , Str "the" , Space , Str "spider." , Space , Str "\"'Shelob'" , Space , Str "is" , Space , Str "my" , Space , Str "name.\"" ] , Para [ Str "'A'," , Space , Str "'B'," , Space , Str "and" , Space , Str "'C'" , Space , Str "are" , Space , Str "letters." ] , Para [ Str "'Oak,'" , Space , Str "'elm,'" , Space , Str "and" , Space , Str "'beech'" , Space , Str "are" , Space , Str "names" , Space , Str "of" , Space , Str "trees." , Space , Str "So" , Space , Str "is" , Space , Str "'pine.'" ] , Para [ Str "'He" , Space , Str "said," , Space , Str "\"I" , Space , Str "want" , Space , Str "to" , Space , Str "go.\"'" , Space , Str "Were" , Space , Str "you" , Space , Str "alive" , Space , Str "in" , Space , Str "the" , Space , Str "70's?" ] , Para [ Str "Here" , Space , Str "is" , Space , Str "some" , Space , Str "quoted" , Space , Str "'" , Code ( "" , [] , [] ) "code" , Str "'" , Space , Str "and" , Space , Str "a" , SoftBreak , Str "\"" , Link ( "" , [] , [] ) [ Str "quoted" , SoftBreak , Str "link" ] ( "http://example.com/?foo=1&bar=2" , "" ) , Str "\"." ] , Para [ Str "Some" , Space , Str "dashes:" , Space , Str "one---two" , Space , Str "---" , Space , Str "three--four" , Space , Str "--" , Space , Str "five." ] , Para [ Str "Dashes" , Space , Str "between" , Space , Str "numbers:" , Space , Str "5-7," , Space , Str "255-66," , Space , Str "1987-1999." ] , Para [ Str "Ellipses...and." , Space , Str "." , Space , Str ".and" , Space , Str "." , Space , Str "." , Space , Str "." , Space , Str "." ] , Header 1 ( "latex" , [] , [] ) [ Str "LaTeX" ] , BulletList [ [ Para [ Str "\\cite[22-23]{smith.1899}" ] ] , [ Para [ Str "\\doublespacing" ] ] , [ Para [ Str "$2+2=4$" ] ] , [ Para [ Str "$x" , Space , Str "\\in" , Space , Str "y$" ] ] , [ Para [ Str "$\\alpha" , Space , Str "\\wedge" , Space , Str "\\omega$" ] ] , [ Para [ Str "$223$" ] ] , [ Para [ Str "$p$-Tree" ] ] , [ Para [ Str "$\\frac{d}{dx}f(x)=\\lim_{h\\to" , Space , Str "0}\\frac{f(x+h)-f(x)}{h}$" ] ] , [ Para [ Str "Here's" , Space , Str "one" , Space , Str "that" , Space , Str "has" , Space , Str "a" , Space , Str "line" , Space , Str "break" , Space , Str "in" , Space , Str "it:" , Space , Str "$\\alpha" , Space , Str "+" , Space , Str "\\omega" , Space , Str "\\times" , SoftBreak , Str "x^2$." ] ] ] , Para [ Str "These" , Space , Str "shouldn't" , Space , Str "be" , Space , Str "math:" ] , BulletList [ [ Para [ Str "To" , Space , Str "get" , Space , Str "the" , Space , Str "famous" , Space , Str "equation," , Space , Str "write" , SoftBreak , Code ( "" , [] , [] ) "$e = mc^2$" , Str "." ] ] , [ Para [ Str "$22,000" , Space , Str "is" , Space , Str "a" , Space , Emph [ Str "lot" ] , Space , Str "of" , Space , Str "money." , Space , Str "So" , Space , Str "is" , Space , Str "$34,000." , Space , Str "(It" , SoftBreak , Str "worked" , Space , Str "if" , Space , Str "\"lot\"" , Space , Str "is" , Space , Str "emphasized.)" ] ] , [ Para [ Str "Escaped" , Space , Code ( "" , [] , [] ) "$" , Str ":" , Space , Str "$73" , Space , Emph [ Str "this" , Space , Str "should" , Space , Str "be" , SoftBreak , Str "emphasized" ] , Space , Str "23$." ] ] ] , Para [ Str "Here's" , Space , Str "a" , Space , Str "LaTeX" , Space , Str "table:" ] , Para [ Str "\\begin{tabular}{|l|l|}\\hline" , Space , Str "Animal" , Space , Str "&" , Space , Str "Number" , Space , Str "\\\\" , Space , Str "\\hline" , Space , Str "Dog" , Space , Str "&" , SoftBreak , Str "2" , Space , Str "\\\\" , Space , Str "Cat" , Space , Str "&" , Space , Str "1" , Space , Str "\\\\" , Space , Str "\\hline" , Space , Str "\\end{tabular}" ] , Header 1 ( "special-characters" , [] , [] ) [ Str "Special" , Space , Str "Characters" ] , Para [ Str "Here" , Space , Str "is" , Space , Str "some" , Space , Str "unicode:" ] , BulletList [ [ Para [ Str "I" , Space , Str "hat:" , Space , Str "\206" ] ] , [ Para [ Str "o" , Space , Str "umlaut:" , Space , Str "\246" ] ] , [ Para [ Str "section:" , Space , Str "\167" ] ] , [ Para [ Str "set" , Space , Str "membership:" , Space , Str "elem" ] ] , [ Para [ Str "copyright:" , Space , Str "\169" ] ] ] , Para [ Str "AT&T" , Space , Str "has" , Space , Str "an" , Space , Str "ampersand" , Space , Str "in" , Space , Str "their" , Space , Str "name." ] , Para [ Str "AT&T" , Space , Str "is" , Space , Str "another" , Space , Str "way" , Space , Str "to" , Space , Str "write" , Space , Str "it." ] , Para [ Str "This" , Space , Str "&" , Space , Str "that." ] , Para [ Str "4" , Space , Str "<" , Space , Str "5." ] , Para [ Str "6" , Space , Str ">" , Space , Str "5." ] , Para [ Str "Backslash:" , Space , Str "\\" ] , Para [ Str "Backtick:" , Space , Str "`" ] , Para [ Str "Asterisk:" , Space , Str "*" ] , Para [ Str "Underscore:" , Space , Str "_" ] , Para [ Str "Left" , Space , Str "brace:" , Space , Str "{" ] , Para [ Str "Right" , Space , Str "brace:" , Space , Str "}" ] , Para [ Str "Left" , Space , Str "bracket:" , Space , Str "[" ] , Para [ Str "Right" , Space , Str "bracket:" , Space , Str "]" ] , Para [ Str "Left" , Space , Str "paren:" , Space , Str "(" ] , Para [ Str "Right" , Space , Str "paren:" , Space , Str ")" ] , Para [ Str "Greater-than:" , Space , Str ">" ] , Para [ Str "Hash:" , Space , Str "#" ] , Para [ Str "Period:" , Space , Str "." ] , Para [ Str "Bang:" , Space , Str "!" ] , Para [ Str "Plus:" , Space , Str "+" ] , Para [ Str "Minus:" , Space , Str "-" ] , Header 1 ( "links" , [] , [] ) [ Str "Links" ] , Header 2 ( "explicit" , [] , [] ) [ Str "Explicit" ] , Para [ Str "Just" , Space , Str "a" , SoftBreak , Link ( "" , [] , [] ) [ Str "URL" ] ( "/url/" , "" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , SoftBreak , Str "and" , Space , Str "title" ] ( "/url/" , "title" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , SoftBreak , Str "and" , Space , Str "title" ] ( "/url/" , "title preceded by two spaces" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , SoftBreak , Str "and" , Space , Str "title" ] ( "/url/" , "title preceded by a tab" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , SoftBreak , Str "and" , Space , Str "title" ] ( "/url/" , "title with \"quotes\" in it" ) ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , SoftBreak , Str "and" , Space , Str "title" ] ( "/url/" , "title with single quotes" ) ] , Para [ Str "Email" , Space , Str "link" , Space , Str "(nobody" , Space , Str "[at]" , Space , Str "nowhere.net)" ] , Para [ Link ( "" , [] , [] ) [ Str "Empty" ] ( "" , "" ) , Str "." ] , Header 2 ( "reference" , [] , [] ) [ Str "Reference" ] , Para [ Str "Foo" , SoftBreak , Link ( "" , [] , [] ) [ Str "bar" ] ( "/url/" , "" ) , Str "." ] , Para [ Str "Foo" , SoftBreak , Link ( "" , [] , [] ) [ Str "bar" ] ( "/url/" , "" ) , Str "." ] , Para [ Str "Foo" , SoftBreak , Link ( "" , [] , [] ) [ Str "bar" ] ( "/url/" , "" ) , Str "." ] , Para [ Str "With" , Space , Link ( "" , [] , [] ) [ Str "embedded" , SoftBreak , Str "[brackets]" ] ( "/url/" , "" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "b" ] ( "/url/" , "" ) , Space , Str "by" , SoftBreak , Str "itself" , Space , Str "should" , Space , Str "be" , Space , Str "a" , Space , Str "link." ] , Para [ Str "Indented" , SoftBreak , Link ( "" , [] , [] ) [ Str "once" ] ( "/url" , "" ) , Str "." ] , Para [ Str "Indented" , SoftBreak , Link ( "" , [] , [] ) [ Str "twice" ] ( "/url" , "" ) , Str "." ] , Para [ Str "Indented" , SoftBreak , Link ( "" , [] , [] ) [ Str "thrice" ] ( "/url" , "" ) , Str "." ] , Para [ Str "This" , Space , Str "should" , Space , Str "[not]" , Space , Str "be" , Space , Str "a" , Space , Str "link." ] , CodeBlock ( "" , [] , [] ) "[not]: /url" , Para [ Str "Foo" , SoftBreak , Link ( "" , [] , [] ) [ Str "bar" ] ( "/url/" , "Title with \"quotes\" inside" ) , Str "." ] , Para [ Str "Foo" , SoftBreak , Link ( "" , [] , [] ) [ Str "biz" ] ( "/url/" , "Title with \"quote\" inside" ) , Str "." ] , Header 2 ( "with-ampersands" , [] , [] ) [ Str "With" , Space , Str "ampersands" ] , Para [ Str "Here's" , Space , Str "a" , SoftBreak , Link ( "" , [] , [] ) [ Str "link" , SoftBreak , Str "with" , Space , Str "an" , Space , Str "ampersand" , Space , Str "in" , Space , Str "the" , Space , Str "URL" ] ( "http://example.com/?foo=1&bar=2" , "" ) , Str "." ] , Para [ Str "Here's" , Space , Str "a" , Space , Str "link" , Space , Str "with" , Space , Str "an" , Space , Str "amersand" , Space , Str "in" , Space , Str "the" , Space , Str "link" , Space , Str "text:" , SoftBreak , Link ( "" , [] , [] ) [ Str "AT&T" ] ( "http://att.com/" , "AT&T" ) , Str "." ] , Para [ Str "Here's" , Space , Str "an" , SoftBreak , Link ( "" , [] , [] ) [ Str "inline" , SoftBreak , Str "link" ] ( "/script?foo=1&bar=2" , "" ) , Str "." ] , Para [ Str "Here's" , Space , Str "an" , SoftBreak , Link ( "" , [] , [] ) [ Str "inline" , SoftBreak , Str "link" , Space , Str "in" , Space , Str "pointy" , Space , Str "braces" ] ( "/script?foo=1&bar=2" , "" ) , Str "." ] , Header 2 ( "autolinks" , [] , [] ) [ Str "Autolinks" ] , Para [ Str "With" , Space , Str "an" , Space , Str "ampersand:" , SoftBreak , Link ( "" , [] , [] ) [ Str "http://example.com/?foo=1&bar=2" ] ( "http://example.com/?foo=1&bar=2" , "" ) ] , BulletList [ [ Para [ Str "In" , Space , Str "a" , Space , Str "list?" ] ] , [ Para [ Link ( "" , [] , [] ) [ Str "http://example.com/" ] ( "http://example.com/" , "" ) ] ] , [ Para [ Str "It" , Space , Str "should." ] ] ] , Para [ Str "An" , Space , Str "e-mail" , Space , Str "address:" , Space , Str "nobody" , Space , Str "[at]" , Space , Str "nowhere.net" ] , BlockQuote [ Para [ Str "Blockquoted:" , SoftBreak , Link ( "" , [] , [] ) [ Str "http://example.com/" ] ( "http://example.com/" , "" ) ] ] , Para [ Str "Auto-links" , Space , Str "should" , Space , Str "not" , Space , Str "occur" , Space , Str "here:" , SoftBreak , Code ( "" , [] , [] ) "" ] , CodeBlock ( "" , [] , [] ) "or here: " , Header 1 ( "images" , [] , [] ) [ Str "Images" ] , Para [ Str "From" , Space , Str "\"Voyage" , Space , Str "dans" , Space , Str "la" , Space , Str "Lune\"" , Space , Str "by" , Space , Str "Georges" , Space , Str "Melies" , Space , Str "(1902):" ] , Para [ Image ( "" , [] , [] ) [] ( "lalune.jpg" , "Voyage dans la Lune" ) ] , Para [ Str "Here" , Space , Str "is" , Space , Str "a" , Space , Str "movie" , SoftBreak , Image ( "" , [] , [] ) [] ( "movie.jpg" , "" ) , SoftBreak , Str "icon." ] , Header 1 ( "footnotes" , [] , [] ) [ Str "Footnotes" ] , Para [ Str "Here" , Space , Str "is" , Space , Str "a" , Space , Str "footnote" , Space , Str "reference" , Link ( "" , [] , [] ) [ Str "(1)" ] ( "#note_1" , "" ) , Str "," , SoftBreak , Str "and" , SoftBreak , Str "another" , Link ( "" , [] , [] ) [ Str "(longnote)" ] ( "#note_longnote" , "" ) , Str "." , SoftBreak , Str "This" , Space , Str "should" , Space , Emph [ Str "not" ] , Space , Str "be" , Space , Str "a" , Space , Str "footnote" , Space , Str "reference," , Space , Str "because" , Space , Str "it" , SoftBreak , Str "contains" , Space , Str "a" , Space , Str "space^(my" , Space , Str "note)." ] , Para [ Link ( "" , [] , [] ) [ Str "(1)" ] ( "#ref_1" , "" ) , Space , Str "Here" , Space , Str "is" , Space , Str "the" , Space , Str "footnote." , Space , Str "It" , Space , Str "can" , SoftBreak , Str "go" , Space , Str "anywhere" , Space , Str "in" , Space , Str "the" , Space , Str "document," , Space , Str "not" , Space , Str "just" , Space , Str "at" , Space , Str "the" , Space , Str "end." ] , Para [ Link ( "" , [] , [] ) [ Str "(longnote)" ] ( "#ref_longnote" , "" ) , Space , Str "Here's" , SoftBreak , Str "the" , Space , Str "other" , Space , Str "note." , Space , Str "This" , Space , Str "one" , Space , Str "contains" , Space , Str "multiple" , Space , Str "blocks." ] , Para [ Str "Caret" , Space , Str "characters" , Space , Str "are" , Space , Str "used" , Space , Str "to" , Space , Str "indicate" , Space , Str "that" , Space , Str "the" , Space , Str "blocks" , Space , Str "all" , Space , Str "belong" , Space , Str "to" , SoftBreak , Str "a" , Space , Str "single" , Space , Str "footnote" , Space , Str "(as" , Space , Str "with" , Space , Str "block" , Space , Str "quotes)." ] , CodeBlock ( "" , [] , [] ) " { }" , Para [ Str "If" , Space , Str "you" , Space , Str "want," , Space , Str "you" , Space , Str "can" , Space , Str "use" , Space , Str "a" , Space , Str "caret" , Space , Str "at" , Space , Str "the" , Space , Str "beginning" , Space , Str "of" , Space , Str "every" , Space , Str "line," , Space , Str "as" , SoftBreak , Str "with" , Space , Str "blockquotes," , Space , Str "but" , Space , Str "all" , Space , Str "that" , Space , Str "you" , Space , Str "need" , Space , Str "is" , Space , Str "a" , Space , Str "caret" , Space , Str "at" , Space , Str "the" , Space , Str "beginning" , SoftBreak , Str "of" , Space , Str "the" , Space , Str "first" , Space , Str "line" , Space , Str "of" , Space , Str "the" , Space , Str "block" , Space , Str "and" , Space , Str "any" , Space , Str "preceding" , Space , Str "blank" , Space , Str "lines." ] , Para [ Str "text" , Space , Emph [ Str "Leading" , Space , Str "space" ] ] , Para [ Emph [ Str "Trailing" , Space , Str "space" ] , Space , Str "text" ] , Para [ Str "text" , Space , Emph [ Str "Leading" , Space , Str "spaces" ] ] , Para [ Emph [ Str "Trailing" , Space , Str "spaces" ] , Space , Str "text" ] , Header 1 ( "tables" , [] , [] ) [ Str "Tables" ] , Header 2 ( "tables-with-headers" , [] , [] ) [ Str "Tables" , Space , Str "with" , Space , Str "Headers" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "X" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Y" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Z" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "6" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "X" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Y" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Z" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "6" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "X" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Y" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Z" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "6" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "X" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Y" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Z" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "6" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "X" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Y" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Z" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "6" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "X" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Y" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Z" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "6" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "X" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Y" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Z" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "6" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "X" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Y" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Z" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "6" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "X" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Y" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Z" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "6" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Header 2 ( "tables-without-headers" , [] , [] ) [ Str "Tables" , Space , Str "without" , Space , Str "Headers" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "6" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "6" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "6" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "6" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Header 2 ( "table-with-spans-and-alignments" , [] , [] ) [ Str "Tables" , Space , Str "with" , Space , Str "spans" , Space , Str "and" , Space , Str "alignments" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 2) [ Para [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignRight (RowSpan 1) (ColSpan 1) [ Para [ Str "2" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 2) [ Para [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignLeft (RowSpan 1) (ColSpan 1) [ Para [ Str "2" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 2) (ColSpan 1) [ Para [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "6" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 2) [ Para [ Str "7" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Header 2 ( "empty-tables" , [] , [] ) [ Str "Empty" , Space , Str "Tables" ] , Para [ Str "This" , Space , Str "section" , Space , Str "should" , Space , Str "be" , Space , Str "empty." ] ] pandoc-3.1.3/test/jats-reader.xml0000644000000000000000000007031507346545000015063 0ustar0000000000000000
                Pandoc Test Suite MacFarlane John Anonymous

                This is a set of tests for pandoc. Most of them are adapted from John Gruber's markdown test suite.

                Headers Level 2 with an <ext-link ext-link-type="uri" xlink:href="/url">embedded link</ext-link> Level 3 with <italic>emphasis</italic> Level 4 Level 5 Level 1 Level 2 with <italic>emphasis</italic> Level 3

                with no blank line

                Level 2

                with no blank line

                Paragraphs

                Here's a regular paragraph.

                In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item.

                Here's one with a bullet. * criminey.

                There should be a hard line breakhere.

                Statements CAP TITLE

                Some text to make this regular

                Block Quotes

                E-mail style:

                This is a block quote. It is pretty short.

                Code in a block quote:

                sub status { print "working"; }

                A list:

                item one

                item two

                Nested block quotes:

                nested

                nested

                This should not be a block quote: 2 > 1.

                Box-style:

                Example:

                sub status { print "working"; }

                do laundry

                take out the trash

                Here's a nested one:

                Joe said:

                Don't quote me.

                And a following paragraph.

                Code Blocks

                Code:

                ---- (should be four hyphens) sub status { print "working"; } this code block is indented by one tab

                And:

                this code block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{
                Lists Unordered

                Asterisks tight:

                asterisk 1

                asterisk 2

                asterisk 3

                Asterisks loose:

                asterisk 1

                asterisk 2

                asterisk 3

                Pluses tight:

                Plus 1

                Plus 2

                Plus 3

                Pluses loose:

                Plus 1

                Plus 2

                Plus 3

                Minuses tight:

                Minus 1

                Minus 2

                Minus 3

                Minuses loose:

                Minus 1

                Minus 2

                Minus 3

                Ordered

                Tight:

                First

                Second

                Third

                and:

                One

                Two

                Three

                Loose using tabs:

                First

                Second

                Third

                and using spaces:

                One

                Two

                Three

                Multiple paragraphs:

                Item 1, graf one.

                Item 1. graf two. The quick brown fox jumped over the lazy dog's back.

                Item 2.

                Item 3.

                List styles:

                Nested

                Tab

                Tab

                Tab

                Here's another:

                First

                Second:

                Fee

                Fie

                Foe

                Third

                Same thing but with paragraphs:

                First

                Second:

                Fee

                Fie

                Foe

                Third

                Tabs and spaces

                this is a list item indented with tabs

                this is a list item indented with spaces

                this is an example list item indented with tabs

                this is an example list item indented with spaces

                Fancy list markers

                Autonumbering:

                Autonumber.

                More.

                Nested.

                Definition Violin

                Stringed musical instrument.

                Torture device.

                CelloVioloncello

                Low-voiced stringed instrument.

                Inline Markup

                This is emphasized, and so is this.

                This is strong, and so is this.

                Empty and .

                An emphasized link.

                This is strong and em.

                So is this word.

                This is strong and em.

                So is this word.

                This is code: >, $, \, \$, <html>.

                This is small caps.

                These are all underlined: foo and bar.

                These are all strikethrough: foo, bar, and baz.

                Smart quotes, ellipses, dashes

                "Hello," said the spider. "'Shelob' is my name."

                'A', 'B', and 'C' are letters.

                'Oak,' 'elm,' and 'beech' are names of trees. So is 'pine.'

                'He said, "I want to go."' Were you alive in the 70's?

                Here is some quoted 'code' and a "quoted link".

                Some dashes: one---two --- three--four -- five.

                Dashes between numbers: 5-7, 255-66, 1987-1999.

                Ellipses...and. . .and . . . .

                LaTeX

                \cite[22-23]{smith.1899}

                \doublespacing

                $2+2=4$

                $x \in y$

                $\alpha \wedge \omega$

                $223$

                $p$-Tree

                $\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$

                Here's one that has a line break in it: $\alpha + \omega \times x^2$.

                These shouldn't be math:

                To get the famous equation, write $e = mc^2$.

                $22,000 is a lot of money. So is $34,000. (It worked if "lot" is emphasized.)

                Escaped $: $73 this should be emphasized 23$.

                Here's a LaTeX table:

                \begin{tabular}{|l|l|}\hline Animal & Number \\ \hline Dog & 2 \\ Cat & 1 \\ \hline \end{tabular}

                Special Characters

                Here is some unicode:

                I hat: Î

                o umlaut: ö

                section: §

                set membership: elem

                copyright: ©

                AT&T has an ampersand in their name.

                AT&T is another way to write it.

                This & that.

                4 < 5.

                6 > 5.

                Backslash: \

                Backtick: `

                Asterisk: *

                Underscore: _

                Left brace: {

                Right brace: }

                Left bracket: [

                Right bracket: ]

                Left paren: (

                Right paren: )

                Greater-than: >

                Hash: #

                Period: .

                Bang: !

                Plus: +

                Minus: -

                Links Explicit

                Just a URL.

                URL and title.

                URL and title.

                URL and title.

                URL and title

                URL and title

                Email link (nobody [at] nowhere.net)

                Empty.

                Reference

                Foo bar.

                Foo bar.

                Foo bar.

                With embedded [brackets].

                b by itself should be a link.

                Indented once.

                Indented twice.

                Indented thrice.

                This should [not] be a link.

                [not]: /url

                Foo bar.

                Foo biz.

                With ampersands

                Here's a link with an ampersand in the URL.

                Here's a link with an amersand in the link text: AT&T.

                Here's an inline link.

                Here's an inline link in pointy braces.

                Autolinks

                With an ampersand: http://example.com/?foo=1&bar=2

                In a list?

                http://example.com/

                It should.

                An e-mail address: nobody [at] nowhere.net

                Blockquoted: http://example.com/

                Auto-links should not occur here: <http://example.com/>

                or here: <http://example.com/>
                Images

                From "Voyage dans la Lune" by Georges Melies (1902):

                Here is a movie icon.

                Footnotes

                Here is a footnote reference(1), and another(longnote). This should not be a footnote reference, because it contains a space^(my note).

                (1) Here is the footnote. It can go anywhere in the document, not just at the end.

                (longnote) Here's the other note. This one contains multiple blocks.

                Caret characters are used to indicate that the blocks all belong to a single footnote (as with block quotes).

                { <code> }

                If you want, you can use a caret at the beginning of every line, as with blockquotes, but all that you need is a caret at the beginning of the first line of the block and any preceding blank lines.

                text Leading space

                Trailing space text

                text Leading spaces

                Trailing spaces text

                Tables Tables with Headers

                X

                Y

                Z

                1

                2

                3

                4

                5

                6

                X

                Y

                Z

                1

                2

                3

                4

                5

                6

                X

                Y

                Z

                1

                2

                3

                4

                5

                6

                X

                Y

                Z

                1

                2

                3

                4

                5

                6

                X

                Y

                Z

                1

                2

                3

                4

                5

                6

                X

                Y

                Z

                1

                2

                3

                4

                5

                6

                X

                Y

                Z

                1

                2

                3

                4

                5

                6

                X

                Y

                Z

                1

                2

                3

                4

                5

                6

                X

                Y

                Z

                1

                2

                3

                4

                5

                6

                Tables without Headers

                1

                2

                3

                4

                5

                6

                1

                2

                3

                4

                5

                6

                1

                2

                3

                4

                5

                6

                1

                2

                3

                4

                5

                6

                Tables with spans and alignments

                1

                2

                1

                2

                4

                5

                6

                7

                Empty Tables

                This section should be empty.

                pandoc-3.1.3/test/jira-reader.jira0000644000000000000000000000754207346545000015176 0ustar0000000000000000h1. {anchor:headers}Headers h2. {anchor:level-2-with-an-embedded-link}Level 2 with an [embedded link|https://test.example/url] h3. {anchor:level-3-with-emphasis}Level 3 with _emphasis_ h4. Level 4 h5. Level 5 h6. Level 6 h0. this is not a header. ---- h1. Paragraphs Here’s a regular paragraph. Here’s one with a bullet. * criminey. There should be a hard line break here. ---- h1. Block Quotes E-mail style: bq. This is a block quote. It is pretty short. {quote} Code in a block quote: {code:java} sub status { print "working"; } {code} An enumeration: # item one # item two {quote} A following paragraph. ---- h1. Code Blocks Code: {code:java} ---- (should be four hyphens) sub status { print "working"; } {code} And: {code:java} this code block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{ {code} ---- h1. {anchor:lists}Lists h2. {anchor:unordered}Unordered Asterisks: * asterisk 1 * asterisk 2 * asterisk 3 Minuses: - Minus 1 - Minus 2 - Minus 3 h2. Ordered # First # Second # Third Linebreak in paragraph: # Item 1, line one. Item 1. line two. The quick brown fox jumped over the lazy dog’s back. # Item 2. # Item 3. h2. Nested * Tab ** Tab *** Tab Here’s another: # First # Second: #* Fee #* Fie #* Foe # Third Nested enumerations: # Essential ## Important ### Relevant #### Insignificant ---- h1. Linebreaks and Markup in Lists * *apple* red fruit * *orange* orange fruit * *banana* yellow fruit Multiple blocks with italics: * *_apple_* red fruit contains seeds, crisp, pleasant to taste * *_orange_* orange fruit {code:java} { orange code block } {code} bq. orange block quote ---- h1. Colored Text Blocks {color:red} This is red. {color} h2. Eiffel 65 {color:blue} da ba dee {color} ---- h1. Inline Markup This is _emphasized_, and so _is this_. This is *strong*, and so *is this*. An _[emphasized link|https://my.example/url]_. *_This is strong and em._* So is *_this_* word. This is code: {{>}}, {{$}}, {{\}}, {{\$}}, {{}}. -This is _strikeout_.- Superscripts: a{^}bc{^}d a{^}_hello_{^} a{^}hello there{^}. Subscripts: H{~}2{~}O, C{~}6{~}H{~}12{~}O{~}6{~}, C{~} n {~}H{~}_2n_{~}O{~}n{~}. These should not be superscripts or subscripts, because of markers used within words: a^b c^d, a~b c~d. ---- h1. Dashes, and emoticons Some dashes: one -- two --- three. Sure (/) Nope (x) Nice :D Capital d\:D ---- h1. Math * 2 + 2 = 4 * _x_ ∈ {_}y{_} * _α_ ∧ {_}ω{_} * _p_-Tree * Here’s one more: _α_ + {_}ω{_} × {_}x{_}^2^. ---- h1. Special Characters Here is some unicode: * I hat: Î * o umlaut: ö * section: § * set membership: ∈ * copyright: © AT&T has an ampersand in their name. AT&T is another way to write it. This & that. 4 < 5. 6 > 5. Backslash: \ Backtick: ` Asterisk: * Underscore: _ Left brace: { Right brace: } Left bracket: [ Right bracket: ] Left paren: ( Right paren: ) Greater-than: > Hash: # Period: . Bang: ! Plus: + Minus: - ---- h1. Links h2. Explicit Just a [URL|https://example.org/url]. [File URL|file://some/file/name/]. [IRC link|irc://example.org/pandoc]. [Email link|mailto:nobody@nowhere.invalid] [Not a link|not a URL]. h2. Reference With [embedded \[brackets\]|https://example.net/url/]. https://pandoc.org by itself should be a link. h2. With ampersands Here’s a [link with an ampersand in the URL|http://example.com/?foo=1&bar=2]. Here’s a link with an ampersand in the link text: [AT&T|http://att.com/]. h2. Autolinks With an ampersand: http://example.com/?foo=1&bar=2 * In a list? * http://example.com/ * It should. An e-mail address: mailto:nobody@nowhere.invalid bq. Blockquoted: http://example.com/ {code:java} Autolink should not occur here: {code} ---- h1. Images From "Voyage dans la Lune" by Georges Melies (1902): !lalune.jpg! Here is a movie !movie.jpg! icon. pandoc-3.1.3/test/jira-reader.native0000644000000000000000000005062707346545000015541 0ustar0000000000000000Pandoc Meta { unMeta = fromList [] } [ Header 1 ( "" , [] , [] ) [ Span ( "headers" , [] , [] ) [] , Str "Headers" ] , Header 2 ( "" , [] , [] ) [ Span ( "level-2-with-an-embedded-link" , [] , [] ) [] , Str "Level" , Space , Str "2" , Space , Str "with" , Space , Str "an" , Space , Link ( "" , [] , [] ) [ Str "embedded" , Space , Str "link" ] ( "https://test.example/url" , "" ) ] , Header 3 ( "" , [] , [] ) [ Span ( "level-3-with-emphasis" , [] , [] ) [] , Str "Level" , Space , Str "3" , Space , Str "with" , Space , Emph [ Str "emphasis" ] ] , Header 4 ( "" , [] , [] ) [ Str "Level" , Space , Str "4" ] , Header 5 ( "" , [] , [] ) [ Str "Level" , Space , Str "5" ] , Header 6 ( "" , [] , [] ) [ Str "Level" , Space , Str "6" ] , Para [ Str "h0." , Space , Str "this" , Space , Str "is" , Space , Str "not" , Space , Str "a" , Space , Str "header." ] , HorizontalRule , Header 1 ( "" , [] , [] ) [ Str "Paragraphs" ] , Para [ Str "Here\8217s" , Space , Str "a" , Space , Str "regular" , Space , Str "paragraph." ] , Para [ Str "Here\8217s" , Space , Str "one" , Space , Str "with" , Space , Str "a" , Space , Str "bullet." , Space , Str "*" , Space , Str "criminey." ] , Para [ Str "There" , Space , Str "should" , Space , Str "be" , Space , Str "a" , Space , Str "hard" , Space , Str "line" , Space , Str "break" , LineBreak , Str "here." ] , HorizontalRule , Header 1 ( "" , [] , [] ) [ Str "Block" , Space , Str "Quotes" ] , Para [ Str "E-mail" , Space , Str "style:" ] , BlockQuote [ Para [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "block" , Space , Str "quote." , Space , Str "It" , Space , Str "is" , Space , Str "pretty" , Space , Str "short." ] ] , BlockQuote [ Para [ Str "Code" , Space , Str "in" , Space , Str "a" , Space , Str "block" , Space , Str "quote:" ] , CodeBlock ( "" , [ "java" ] , [] ) "sub status {\n print \"working\";\n}\n" , Para [ Str "An" , Space , Str "enumeration:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Para [ Str "item" , Space , Str "one" ] ] , [ Para [ Str "item" , Space , Str "two" ] ] ] ] , Para [ Str "A" , Space , Str "following" , Space , Str "paragraph." ] , HorizontalRule , Header 1 ( "" , [] , [] ) [ Str "Code" , Space , Str "Blocks" ] , Para [ Str "Code:" ] , CodeBlock ( "" , [ "java" ] , [] ) "---- (should be four hyphens)\n\nsub status {\n print \"working\";\n}\n" , Para [ Str "And:" ] , CodeBlock ( "" , [ "java" ] , [] ) " this code block is indented by two tabs\n\nThese should not be escaped: \\$ \\\\ \\> \\[ \\{\n" , HorizontalRule , Header 1 ( "" , [] , [] ) [ Span ( "lists" , [] , [] ) [] , Str "Lists" ] , Header 2 ( "" , [] , [] ) [ Span ( "unordered" , [] , [] ) [] , Str "Unordered" ] , Para [ Str "Asterisks:" ] , BulletList [ [ Para [ Str "asterisk" , Space , Str "1" ] ] , [ Para [ Str "asterisk" , Space , Str "2" ] ] , [ Para [ Str "asterisk" , Space , Str "3" ] ] ] , Para [ Str "Minuses:" ] , BulletList [ [ Para [ Str "Minus" , Space , Str "1" ] ] , [ Para [ Str "Minus" , Space , Str "2" ] ] , [ Para [ Str "Minus" , Space , Str "3" ] ] ] , Header 2 ( "" , [] , [] ) [ Str "Ordered" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Para [ Str "First" ] ] , [ Para [ Str "Second" ] ] , [ Para [ Str "Third" ] ] ] , Para [ Str "Linebreak" , Space , Str "in" , Space , Str "paragraph:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Para [ Str "Item" , Space , Str "1," , Space , Str "line" , Space , Str "one." , LineBreak , Str "Item" , Space , Str "1." , Space , Str "line" , Space , Str "two." , Space , Str "The" , Space , Str "quick" , Space , Str "brown" , Space , Str "fox" , Space , Str "jumped" , Space , Str "over" , Space , Str "the" , Space , Str "lazy" , Space , Str "dog\8217s" , Space , Str "back." ] ] , [ Para [ Str "Item" , Space , Str "2." ] ] , [ Para [ Str "Item" , Space , Str "3." ] ] ] , Header 2 ( "" , [] , [] ) [ Str "Nested" ] , BulletList [ [ Para [ Str "Tab" ] , BulletList [ [ Para [ Str "Tab" ] , BulletList [ [ Para [ Str "Tab" ] ] ] ] ] ] ] , Para [ Str "Here\8217s" , Space , Str "another:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Para [ Str "First" ] ] , [ Para [ Str "Second:" ] , BulletList [ [ Para [ Str "Fee" ] ] , [ Para [ Str "Fie" ] ] , [ Para [ Str "Foe" ] ] ] ] , [ Para [ Str "Third" ] ] ] , Para [ Str "Nested" , Space , Str "enumerations:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Para [ Str "Essential" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Para [ Str "Important" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Para [ Str "Relevant" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Para [ Str "Insignificant" ] ] ] ] ] ] ] ] ] , HorizontalRule , Header 1 ( "" , [] , [] ) [ Str "Linebreaks" , Space , Str "and" , Space , Str "Markup" , Space , Str "in" , Space , Str "Lists" ] , BulletList [ [ Para [ Strong [ Str "apple" ] , LineBreak , Str "red" , Space , Str "fruit" ] ] , [ Para [ Strong [ Str "orange" ] , LineBreak , Str "orange" , Space , Str "fruit" ] ] , [ Para [ Strong [ Str "banana" ] , LineBreak , Str "yellow" , Space , Str "fruit" ] ] ] , Para [ Str "Multiple" , Space , Str "blocks" , Space , Str "with" , Space , Str "italics:" ] , BulletList [ [ Para [ Strong [ Emph [ Str "apple" ] ] , LineBreak , Str "red" , Space , Str "fruit" , LineBreak , Str "contains" , Space , Str "seeds," , Space , Str "crisp," , Space , Str "pleasant" , Space , Str "to" , Space , Str "taste" ] ] , [ Para [ Strong [ Emph [ Str "orange" ] ] , LineBreak , Str "orange" , Space , Str "fruit" ] , CodeBlock ( "" , [ "java" ] , [] ) "{ orange code block }\n" , BlockQuote [ Para [ Str "orange" , Space , Str "block" , Space , Str "quote" ] ] ] ] , HorizontalRule , Header 1 ( "" , [] , [] ) [ Str "Colored" , Space , Str "Text" , Space , Str "Blocks" ] , Div ( "" , [] , [ ( "color" , "red" ) ] ) [ Para [ LineBreak , Str "This" , Space , Str "is" , Space , Str "red." ] ] , Header 2 ( "" , [] , [] ) [ Str "Eiffel" , Space , Str "65" ] , Div ( "" , [] , [ ( "color" , "blue" ) ] ) [ Para [ LineBreak , Str "da" , Space , Str "ba" , Space , Str "dee" ] ] , HorizontalRule , Header 1 ( "" , [] , [] ) [ Str "Inline" , Space , Str "Markup" ] , Para [ Str "This" , Space , Str "is" , Space , Emph [ Str "emphasized" ] , Str "," , Space , Str "and" , Space , Str "so" , Space , Emph [ Str "is" , Space , Str "this" ] , Str "." ] , Para [ Str "This" , Space , Str "is" , Space , Strong [ Str "strong" ] , Str "," , Space , Str "and" , Space , Str "so" , Space , Strong [ Str "is" , Space , Str "this" ] , Str "." ] , Para [ Str "An" , Space , Emph [ Link ( "" , [] , [] ) [ Str "emphasized" , Space , Str "link" ] ( "https://my.example/url" , "" ) ] , Str "." ] , Para [ Strong [ Emph [ Str "This" , Space , Str "is" , Space , Str "strong" , Space , Str "and" , Space , Str "em." ] ] ] , Para [ Str "So" , Space , Str "is" , Space , Strong [ Emph [ Str "this" ] ] , Space , Str "word." ] , Para [ Str "This" , Space , Str "is" , Space , Str "code:" , Space , Code ( "" , [] , [] ) ">" , Str "," , Space , Code ( "" , [] , [] ) "$" , Str "," , Space , Code ( "" , [] , [] ) "\\" , Str "," , Space , Code ( "" , [] , [] ) "\\$" , Str "," , Space , Code ( "" , [] , [] ) "" , Str "." ] , Para [ Strikeout [ Str "This" , Space , Str "is" , Space , Emph [ Str "strikeout" ] , Str "." ] ] , Para [ Str "Superscripts:" , Space , Str "a" , Superscript [ Str "bc" ] , Str "d" , Space , Str "a" , Superscript [ Emph [ Str "hello" ] ] , Space , Str "a" , Superscript [ Str "hello\160there" ] , Str "." ] , Para [ Str "Subscripts:" , Space , Str "H" , Subscript [ Str "2" ] , Str "O," , Space , Str "C" , Subscript [ Str "6" ] , Str "H" , Subscript [ Str "12" ] , Str "O" , Subscript [ Str "6" ] , Str "," , Space , Str "C" , Subscript [ Str "\160n\160" ] , Str "H" , Subscript [ Emph [ Str "2n" ] ] , Str "O" , Subscript [ Str "n" ] , Str "." ] , Para [ Str "These" , Space , Str "should" , Space , Str "not" , Space , Str "be" , Space , Str "superscripts" , Space , Str "or" , Space , Str "subscripts," , Space , Str "because" , Space , Str "of" , Space , Str "markers" , Space , Str "used" , Space , Str "within" , Space , Str "words:" , Space , Str "a^b" , Space , Str "c^d," , Space , Str "a~b" , Space , Str "c~d." ] , HorizontalRule , Header 1 ( "" , [] , [] ) [ Str "Dashes," , Space , Str "and" , Space , Str "emoticons" ] , Para [ Str "Some" , Space , Str "dashes:" , Space , Str "one" , Space , Str "\8211" , Space , Str "two" , Space , Str "\8212" , Space , Str "three." ] , Para [ Str "Sure" , Space , Str "\10004" , LineBreak , Str "Nope" , Space , Str "\10060" ] , Para [ Str "Nice" , Space , Str "\128515" ] , Para [ Str "Capital" , Space , Str "d:D" ] , HorizontalRule , Header 1 ( "" , [] , [] ) [ Str "Math" ] , BulletList [ [ Para [ Str "2\8197+\8197\&2\8196=\8196\&4" ] ] , [ Para [ Emph [ Str "x" ] , Str "\8196\8712\8196" , Emph [ Str "y" ] ] ] , [ Para [ Emph [ Str "\945" ] , Str "\8197\8743\8197" , Emph [ Str "\969" ] ] ] , [ Para [ Emph [ Str "p" ] , Str "-Tree" ] ] , [ Para [ Str "Here\8217s" , Space , Str "one" , Space , Str "more:" , Space , Emph [ Str "\945" ] , Str "\8197+\8197" , Emph [ Str "\969" ] , Str "\8197\215\8197" , Emph [ Str "x" ] , Superscript [ Str "2" ] , Str "." ] ] ] , HorizontalRule , Header 1 ( "" , [] , [] ) [ Str "Special" , Space , Str "Characters" ] , Para [ Str "Here" , Space , Str "is" , Space , Str "some" , Space , Str "unicode:" ] , BulletList [ [ Para [ Str "I" , Space , Str "hat:" , Space , Str "\206" ] ] , [ Para [ Str "o" , Space , Str "umlaut:" , Space , Str "\246" ] ] , [ Para [ Str "section:" , Space , Str "\167" ] ] , [ Para [ Str "set" , Space , Str "membership:" , Space , Str "\8712" ] ] , [ Para [ Str "copyright:" , Space , Str "\169" ] ] ] , Para [ Str "AT&T" , Space , Str "has" , Space , Str "an" , Space , Str "ampersand" , Space , Str "in" , Space , Str "their" , Space , Str "name." ] , Para [ Str "AT&T" , Space , Str "is" , Space , Str "another" , Space , Str "way" , Space , Str "to" , Space , Str "write" , Space , Str "it." ] , Para [ Str "This" , Space , Str "&" , Space , Str "that." ] , Para [ Str "4" , Space , Str "<" , Space , Str "5." ] , Para [ Str "6" , Space , Str ">" , Space , Str "5." ] , Para [ Str "Backslash:" , Space , Str "\\" ] , Para [ Str "Backtick:" , Space , Str "`" ] , Para [ Str "Asterisk:" , Space , Str "*" ] , Para [ Str "Underscore:" , Space , Str "_" ] , Para [ Str "Left" , Space , Str "brace:" , Space , Str "{" ] , Para [ Str "Right" , Space , Str "brace:" , Space , Str "}" ] , Para [ Str "Left" , Space , Str "bracket:" , Space , Str "[" ] , Para [ Str "Right" , Space , Str "bracket:" , Space , Str "]" ] , Para [ Str "Left" , Space , Str "paren:" , Space , Str "(" ] , Para [ Str "Right" , Space , Str "paren:" , Space , Str ")" ] , Para [ Str "Greater-than:" , Space , Str ">" ] , Para [ Str "Hash:" , Space , Str "#" ] , Para [ Str "Period:" , Space , Str "." ] , Para [ Str "Bang:" , Space , Str "!" ] , Para [ Str "Plus:" , Space , Str "+" ] , Para [ Str "Minus:" , Space , Str "-" ] , HorizontalRule , Header 1 ( "" , [] , [] ) [ Str "Links" ] , Header 2 ( "" , [] , [] ) [ Str "Explicit" ] , Para [ Str "Just" , Space , Str "a" , Space , Link ( "" , [] , [] ) [ Str "URL" ] ( "https://example.org/url" , "" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "File" , Space , Str "URL" ] ( "file://some/file/name/" , "" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "IRC" , Space , Str "link" ] ( "irc://example.org/pandoc" , "" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "Email" , Space , Str "link" ] ( "mailto:nobody@nowhere.invalid" , "" ) ] , Para [ Str "[Not" , Space , Str "a" , Space , Str "link|not" , Space , Str "a" , Space , Str "URL]." ] , Header 2 ( "" , [] , [] ) [ Str "Reference" ] , Para [ Str "With" , Space , Link ( "" , [] , [] ) [ Str "embedded" , Space , Str "[brackets]" ] ( "https://example.net/url/" , "" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "https://pandoc.org" ] ( "https://pandoc.org" , "" ) , Space , Str "by" , Space , Str "itself" , Space , Str "should" , Space , Str "be" , Space , Str "a" , Space , Str "link." ] , Header 2 ( "" , [] , [] ) [ Str "With" , Space , Str "ampersands" ] , Para [ Str "Here\8217s" , Space , Str "a" , Space , Link ( "" , [] , [] ) [ Str "link" , Space , Str "with" , Space , Str "an" , Space , Str "ampersand" , Space , Str "in" , Space , Str "the" , Space , Str "URL" ] ( "http://example.com/?foo=1&bar=2" , "" ) , Str "." ] , Para [ Str "Here\8217s" , Space , Str "a" , Space , Str "link" , Space , Str "with" , Space , Str "an" , Space , Str "ampersand" , Space , Str "in" , Space , Str "the" , Space , Str "link" , Space , Str "text:" , Space , Link ( "" , [] , [] ) [ Str "AT&T" ] ( "http://att.com/" , "" ) , Str "." ] , Header 2 ( "" , [] , [] ) [ Str "Autolinks" ] , Para [ Str "With" , Space , Str "an" , Space , Str "ampersand:" , Space , Link ( "" , [] , [] ) [ Str "http://example.com/?foo=1&bar=2" ] ( "http://example.com/?foo=1&bar=2" , "" ) ] , BulletList [ [ Para [ Str "In" , Space , Str "a" , Space , Str "list?" ] ] , [ Para [ Link ( "" , [] , [] ) [ Str "http://example.com/" ] ( "http://example.com/" , "" ) ] ] , [ Para [ Str "It" , Space , Str "should." ] ] ] , Para [ Str "An" , Space , Str "e-mail" , Space , Str "address:" , Space , Link ( "" , [] , [] ) [ Str "mailto:nobody@nowhere.invalid" ] ( "mailto:nobody@nowhere.invalid" , "" ) ] , BlockQuote [ Para [ Str "Blockquoted:" , Space , Link ( "" , [] , [] ) [ Str "http://example.com/" ] ( "http://example.com/" , "" ) ] ] , CodeBlock ( "" , [ "java" ] , [] ) "Autolink should not occur here: \n" , HorizontalRule , Header 1 ( "" , [] , [] ) [ Str "Images" ] , Para [ Str "From" , Space , Str "\"Voyage" , Space , Str "dans" , Space , Str "la" , Space , Str "Lune\"" , Space , Str "by" , Space , Str "Georges" , Space , Str "Melies" , Space , Str "(1902):" ] , Para [ Image ( "" , [] , [] ) [] ( "lalune.jpg" , "" ) ] , Para [ Str "Here" , Space , Str "is" , Space , Str "a" , Space , Str "movie" , Space , Image ( "" , [] , [] ) [] ( "movie.jpg" , "" ) , Space , Str "icon." ] ] pandoc-3.1.3/test/lalune.jpg0000644000000000000000000003761607346545000014131 0ustar0000000000000000JFIFxxC   %# , #&')*)-0-(0%()(C   (((((((((((((((((((((((((((((((((((((((((((((((((((>!1"AQaq2#BR3br$C&S!1A ? pOj~7u .|TF~J#{4&'a\'8h6o%&)d?S5̗Wo53I!,za[ sEvܸ'@ )lq'?Nv@ 1vx,z#f}@!( QpOx0c% |fw 獣 cކ |Q\Qr ;v4J>7|3Bh'+.|g*IǮ}{Ph h% b@YP+a($恻)|*qڀG@W>Ss4ݴIbB $F[aFIb$EnW ZnֺѭeRIFV544}*/5jqȇ˾ZD1ʚ.mo!E]{odh=>Ux j ހd{UhVi Hb(nAh-3SMQlm+^/UgMYӮm@ξSn&=Qtv}iP22IQ\O}4IIH2W'.qDc6MBv~xQ| 2GAg٠BNN=(:RK'l}4 P)9ݨ-Ė$aD N3҉OzsBԺVOa%qbp}_{K]\]Ȋ l>ѭimj[@8TƎC)a"T{ \\Gn84{hXfq@rMz*@{h8 ʂ{/ أdA} ]Y ӯKNO#n|UtaZhg=f؊۞=EPvۃP7$|9'$ǭ `zQ*zsPpq7(&na^ֳ[4<81+ށWh2d*pO| z{{d'@|IA9JNP &>Sh, :Xm±WėRpcG:ގ1X+Is(k8~2p;A(8d4̀Kg2h1~mVR3Y/cSJAv>q){Uh(\jW^wt&O'('KU H6@(7)z wwh9WːH 'JnдvXkqC"Jv>e]1;ԃ[Hua.r!S^⠄랋5Ibxz>zgA"Wu H$A9#hy47͒wsbıe40PFGހF;Pϟ'>{@X EJ@rh+6!b] 'f-j 2)U@pۆsށsbhmdp㷶>tbR뵽F@v<Ο:g0pc1q}`z8hХyh,'èk Ë;uk8zOu.\^27an‚zM\ڀ6JIb䌒#sFu[WA w0X~.}#\F8E~ZBPFkH/'BBA 8EAϡ}3=+[B,zZFǖhnNMhGҀduHZD8]%ݽjc2Vl_lP*P,QO0($~c@A4C+0h86s@ buwF{P~T#q PFZ[pw ?0`?]M(C;m5`tW'Ƴ[x敝r1X6d{t's d([сR8,|AyC.,cC:vU[zQT[ .n@S l+6/m9$~X>%;t緐IG_NeCj2K*# Oo tcy)0@Ppڠ\'$vAhAX!sZ%o*Xla3!iXdQ)fcJLz^HeԓpR@>'?,J('G!\`\g@QK%-gPI( mka/n G?>>JM޼1EՃV ŕcʣGD:zP4MzM1Rd޴^g/8&CFQV}#> H(4 <>B'挜}?Zɾ+{nz_UkFd'@_$vPhH_T\ܽb˩ dUsRO-bG_XğQz;%7P7B bG<v;*2W+pEmZaM& PEuv<>$ Q#_|f ۩1aNs\L?HF($u3S(/-,⹷%w,r+ H8# XOJmN[NU6o!##Ci-0x19}=q@Pk,Ls$rm,Ү C[qsxvH!$L14{k1 C㲽K)к}^YOR;R}p!Dq)qք* O>Z,qsE%"m9⃣b@4J8G3'n8ݤ)D9Yf Be- EOb}A|:=֍ҤWeKö{zwEץGKҺMWH$]] u7XǤkG%ܒ'(Ocϯ;YMG͉ ނnTYMKdggk]jr JѬy bA߈yuv{8£n~mAkz+amaG7W;җαwۜE&r>>%)v49ϋkqӎ6sAREH@s(igyo( -6c MX<ǦhKX7=͚1F"ϥQazOU鮣#8ǵ(ӟLҺvWҒNcB ᱵvsY}3-k*M8?޵5hLT 6K +3Y( gXVՏdѨ Jc iv)8r{@B%=@F `?h' h6_FbdB@2Q^BH`+!" ۽` !TAͬtXSρ"G%\|J.ϫ;KK:.@k 3dzCW!Q- &P鏝}ҽ/ɪMr-Fcz2׽}=]4jGTFH;d<պ9ŴRF8g(sO4:?XW*:_ *-> gjN\m='bf|[PH:dTl8e~n[-p"T]UpK;qn( < ,eoq> k!Z!f?,U;wz}"Q,(vɕFq>hzwI [bW+FVLdM &*D .[}87[imtȩ,xh['M9@Eqm⤞ ӱ ?A0p؜Z->ctkLRF 0,;~e!bXr!z7KEmM332ɴGz=+KmP9cE8 1=P18@Aj~t0%VEyVT$п-kH b +XV@IY/ԣ[o9HU"BGb>cP+ 6EG8-uRl[=oaWGkgQ+%KRcxՂ*E sy?@Ef՚F)<lD~%)-$P\?${z`@`YCcxzѡX:qgg˛kU$X>8- MK}A;f_a[fJe-܌jZ,&5;P(cAKFQAAuD3_ 3_ WsъuJ?LG3^5L7BTc5eRVHKW{KkK'*OW=Zv$S̫e<lژ=l@v0k"?'s&K%B/n1Ogu{g6(7΋4xR!" F璤F22K$E-lc28+tu亄pfE v<)m+`n'>C3$J"yA :u`lo@C!' !}dyMӮk䷱+0W{+K^i`|zUPu5̪w#;n8 z[=x Sx gZ[v]CZjӲZABp0=(1THx_"S#G}4]+y.R(W>DIvvE&%&YW <`w$*h>iPJ%*#*oJZ&mM)r?QP-˟jcȠ1`Y4 NXF)>$F`A҂?V-{-naFA#5eJ{\mr?*hu_eomLM2lʌ)L4 vqx9*0 >ƚ&d >ml K9|F\OGCnŠ"( Z[j Z[,<[\cY?ۙtid29!9g0YeΚ۪&yݜSrϬVjZIin78U_y5_%]%vFy#Ƿ^`4Bj>A$FW_,2CG2?n8a#}KPt͎pj`N>$csH=F;7>thZBdrެJ;zhA k!>zNrO˵K׃ZRӯucTwfH= +CRTz 4$o'4:tbtWx |ڃrK$m>d8MUpO,ua__aӭm41ݟAۏzgZ%ѯ$r401]jԳHGqi^&bl0`;dRكY@V`7cyػ}OowsgZqpC 3ή ƒ6RfW^:`u'43Fx`o@Tq@P@XQ3Ƀwo\[x"&vlg#Aݏ'P3u..7V[/ܿ* +ݚ1P Su-֝ʐhvDe昁\g gGQ,۵-(N_5T'ymqPc}[]SbZcx`r0X 58G{$T{tφjpF9UѧƋg=՝bmuk='p#`=Pe=A0.H#*!6>_ϧHUn0F#>ރHkTxyGGZ8Z.< #F5x@}܋O˟A-/ ńK0#kF}8?j UjgZ Tho iNj.%rqW.zc>A⦩ Gs@?h-޷r̚lEn\콎XRGkI%RE u# 2i6#FI@d05{o 7+4 Kn%)Jgx9CXi"cnLcjy-NUO.äAܱ9'8ɪ-KBxnHp#[t1^: @dU=k&iœ1A~U#PX6:Y1BIV=~=S㶸#Zc9zu{hB/$zΥQjNuD:.rnjՂcD[k%幝qXTӚu{kbKxB'ēT X֮/mKI؀HΧԓAu 2;x2N0Cφ iOfHi}{B[-[msRK.uUȅERhl9TvKa6$B "c>#4:{c.qܞV'Z=Q;A{U3su֚r;]&]$sD^) BNA$8PHt]*-e%uz\uM V6CBSi@;Ճ}_?ZtشjOp}(~Tѡl1-.dAxA)mpor0€uNC0lE,X3h&c`޼{PVTtWD'PTՃ$zr^+8QiW9C8Fl\ #*JTk!.c,B{hQ> 4[.sx8BZT9\vOTBI18`Ѧ/V:[b_w^G-&DfJǷJ0Mvei|>&ct'8V}v_ԘY\aAo..2A'Fhѱf±Λca?栖ӺWHH[R Æ{u[t 5̐<c w@\]]E{5@ӏюW GQz WTԚN۠"K2w('h/~kk:kt4 raA,N0A(+]K=;=z@ )-<*y#[7;hWU^w$LT(Fe]VܜeV_Nʂ>\_[F@.3wJu~rJ|Ŗ{igTMblF\0I$3Ko$ʲ7 ݃d ݬ7d,8cmo` 7)R}ssyh2ӎ0&]]yF{ce+hY]B.]F͢V*v1lxv, OZWP\Xp]t+z[fr`--$#JHu(ǧMas4sZ!B1=P_ 8 \P.g]EM7[lz@ Γucjj'OJNo:R+J+$ȤH;c8zI my, ]7G?CuņDVZݤ·xN9ck2}AvkĎLEok ώK8)|N(9X&<~ǗdR6PhIQ}}(WW\[iQ]w(wdާs珝1+ֵR=Goރ ?K,'{(G/ՅX%:j@b(:Ff1j|$fϹ9Q_t{^n5 .qvI7Ѻi k)DJPdck1%I?QѼ2|lI8 /NWp[lP{sRZzm vH[ҭ$H3=ꖉta[_.wy&mfPhGr>*둓*NS@,+g$G΁18y' hRkvn觅?@vx7H;T?nP/s7c& PzV]IBہSYEonbI[req=4g^[7OX- JW=Z uSteyWvKԴ ;rXn?*7duJʑPh_ a/iXд{7ޖnNj[f YM19'*Z4W7y]fy~@YZ;0|&ѓoԤǽ#09ۃ8Ak*أ^9';ՐCkoi ,Kq#`,vybN3}I>e%*kZ>Vm`Ϙ1 I a>A09g{zgPAe\)'s# -x40 ZO.3Fj,VKERTj`h$ lPGʖe᷒JZ4a$c?\Qhsi< $b-ɁvH`/θ0q'{٨5$ r2;znc1G*xP4LhO 7M[W鋙mMf gΗ?MKn/%˂rNyVP?Q4ڏ+mj 9~IcXr9>U6oR,nk$zg]Z-LV@6Y#~2){A4;f q=MJi]=kg˩KNaNJcjJ Qᛖoz5eVM{Pbuw[iŽmcxwڮ 5R7MwE%!€`=j $020@UϠ|E׵۝F.`K.4~NJg d:.S&!!vvez2cPfi[$(#ːhd`hAmb@,=hFr#tC ދ}\(5|&ֶ*)SGzmd$6I>Ps)HA p<@qȄ>@houe2b;~EcPIL  uwlf4$4=]kz|v_%d|(ed}u,į.O>_GIKlIed= \ $m>7 ]4x I'J`h]_k-$p̛wʪ;AU#HܸFTDT{89/kSk]5cSĝPq ƷtNrBmDŽŕd E̽O˫BV8,F k' /֯<"8ǩ0dRit)r#ɑ(09=5j7z#Y~^C_8$S[`e8;Pw9WT>T} JiɎ(BayS8=l)$pVtqwd@X?&`f"I->Rhkyhd: d3R/i<-nxnmFi)_W e0FӻcɫOEbΣo:Ds2Ƙľ3zU4aLM*i\0?>8l@{^kdb ll7ܞkBj/ kQm v2/ǏlfߣZ]`;lLjv+3(1IK#sh%@4x]s@ ;>T&wS#=))|b&yFآ>18\sڋY Gܮ=>pO|PXmd1aN$a@0h'tީxDc.^=(4^7P3p0=v5iMuYomZ# Yݎ A'/Mm9YX5֕Ӷ&} [ncwzx+&W0y9=Xu%M{{mfҸR_RrOAkם/רX/{KyivRw悰jU^ wA$hlB>q(ř%'q<}C }@mA;#9bpx[:23EUs*Ah 6q@S4ٍ2*>po *[ J4:Q ߿Ή es?DB]FsseXc;w`{f Gd9$~`:N cYs9pL]W! PgϿژ/|t4JHGb+z-#\[@fA,o^1`5ތԣeb75ֳFn:Ey"Iku-5fϕW#qZCM"u2]kOo*28 \_Sw,ĉ$1'V\ g`H|;SB+,@'8 \O=@(w?JOFP-ʌ}j? s@pF{˜h'Kڤ@vRIGl@&H#4h g@phM<{ $g2ۈE1P`9P&2yh #H=@[ yPn!@"8wPߜo(y "=G&cF 4rc@``ǁP$ ׵qC.]NodNH{P;N9X3 #0^2 LZ+ {hq(w1总ݻ1(7df$<%!%NO!榀۞x)F=tJl8WDZ7+yN9 $$ G hQst9L#zP@o6(7s;(~S@H ##<WnzCw'(p9T`ځPpandoc-3.1.3/test/latex-reader.latex0000644000000000000000000003056607346545000015560 0ustar0000000000000000\documentclass{article} \usepackage[utf8x]{inputenc} \usepackage{hyperref} \usepackage[normalem]{ulem} \usepackage{enumerate} \usepackage{setspace} \usepackage{fancyvrb} \usepackage{graphicx} \VerbatimFootnotes % allows verbatim text in footnotes \title{Pandoc Test Suite} \author{John MacFarlane \and Anonymous} \date{July 17, 2006} \begin{document} \maketitle This is a set of tests for pandoc. Most of them are adapted from John Gruber's markdown test suite. \begin{center}\rule{3in}{0.4pt}\end{center} \section{Headers} \subsection{Level 2 with an \href{/url}{embedded link}} \subsubsection{Level 3 with \emph{emphasis}} Level 4 Level 5 \section[alt title ignored]{Level 1} \subsection{Level 2 with \emph{emphasis}} \subsubsection{Level 3} with no blank line \subsection{Level 2} with no blank line \begin{center}\rule{3in}{0.4pt}\end{center} \section{Paragraphs} Here's a regular paragraph. In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item. Here's one with a bullet. * criminey. There should be a hard line break\\here. \begin{center}\rule{3in}{0.4pt}\end{center} \section{Block Quotes} E-mail style: \begin{quote} This is a block quote. It is pretty short. \end{quote} \begin {quote} Code in a block quote: \begin{verbatim} sub status { print "working"; } \end{verbatim} A list: \begin{enumerate}[1.] \item item one \item item two \end{enumerate} Nested block quotes: \begin{quote} nested \end{quote} \begin{quote} nested \end{quote} \end{quote} This should not be a block quote: 2 \textgreater{} 1. Box-style: \begin{quote} Example: \begin{verbatim} sub status { print "working"; } \end{verbatim} \end{quote} \begin{quote} \begin{enumerate}[1.] \item do laundry \item take out the trash \end{enumerate} \end{quote} Here's a nested one: \begin{quote} Joe said: \begin{quote} Don't quote me. \end{quote} \end{quote} And a following paragraph. \begin{center}\rule{3in}{0.4pt}\end{center} \section{Code Blocks} Code: \begin{verbatim} ---- (should be four hyphens) sub status { print "working"; } this code block is indented by one tab \end{verbatim} And: \begin{verbatim} this code block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{ \end{verbatim} \begin{obeylines} this has \emph{two lines} \end{obeylines} \begin{center}\rule{3in}{0.4pt}\end{center} \section{Lists} \subsection{Unordered} Asterisks tight: \begin{itemize} \item asterisk 1 \item asterisk 2 \item asterisk 3 \end{itemize} Asterisks loose: \begin{itemize} \item asterisk 1 \item asterisk 2 \item asterisk 3 \end{itemize} Pluses tight: \begin{itemize} \item Plus 1 \item Plus 2 \item Plus 3 \end{itemize} Pluses loose: \begin{itemize} \item Plus 1 \item Plus 2 \item Plus 3 \end{itemize} Minuses tight: \begin{itemize} \item Minus 1 \item Minus 2 \item Minus 3 \end{itemize} Minuses loose: \begin{itemize} \item Minus 1 \item Minus 2 \item Minus 3 \end{itemize} \subsection{Ordered} Tight: \begin{enumerate}[1.] \item First \item Second \item Third \end{enumerate} and: \begin{enumerate}[1.] \item One \item Two \item Three \end{enumerate} Loose using tabs: \begin{enumerate}[1.] \item First \item Second \item Third \end{enumerate} and using spaces: \begin{enumerate}[1.] \item One \item Two \item Three \end{enumerate} Multiple paragraphs: \begin{enumerate}[1.] \item Item 1, graf one. Item 1. graf two. The quick brown fox jumped over the lazy dog's back. \item Item 2. \item Item 3. \end{enumerate} \subsection{Nested} \begin{itemize} \item Tab \begin{itemize} \item Tab \begin{itemize} \item Tab \end{itemize} \end{itemize} \end{itemize} Here's another: \begin{enumerate}[1.] \item First \item Second: \begin{itemize} \item Fee \item Fie \item Foe \end{itemize} \item Third \end{enumerate} Same thing but with paragraphs: \begin{enumerate}[1.] \item First \item Second: \begin{itemize} \item Fee \item Fie \item Foe \end{itemize} \item Third \end{enumerate} \subsection{Tabs and spaces} \begin{itemize} \item this is a list item indented with tabs \item this is a list item indented with spaces \begin{itemize} \item this is an example list item indented with tabs \item this is an example list item indented with spaces \end{itemize} \end{itemize} \subsection{Fancy list markers} \begin{enumerate}[(1)] \setcounter{enumi}{1} \item begins with 2 \item and now 3 with a continuation \begin{enumerate}[i.] \setcounter{enumii}{3} \item sublist with roman numerals, starting with 4 \item more items \begin{enumerate}[(A)] \item a subsublist \item a subsublist \end{enumerate} \end{enumerate} \end{enumerate} Nesting: \begin{enumerate}[A.] \item Upper Alpha \begin{enumerate}[I.] \item Upper Roman. \begin{enumerate}[(1)] \setcounter{enumiii}{5} \item Decimal start with 6 \begin{enumerate}[a)] \setcounter{enumiv}{2} \item Lower alpha with paren \end{enumerate} \end{enumerate} \end{enumerate} \end{enumerate} Autonumbering: \begin{enumerate} \item Autonumber. \item More. \begin{enumerate} \item Nested. \end{enumerate} \end{enumerate} Should not be a list item: M.A. 2007 B. Williams \begin{center}\rule{3in}{0.4pt}\end{center} \section{Definition Lists} Tight using spaces: \begin{description} \item[apple] red fruit \item[orange] orange fruit \item[banana] yellow fruit \end{description} Tight using tabs: \begin{description} \item[apple] red fruit \item[orange] orange fruit \item[banana] yellow fruit \end{description} Loose: \begin{description} \item[apple] red fruit \item[orange] orange fruit \item[banana] yellow fruit \end{description} Multiple blocks with italics: \begin{description} \item[\emph{apple}] red fruit contains seeds, crisp, pleasant to taste \item[\emph{orange}] orange fruit \begin{verbatim} { orange code block } \end{verbatim} \begin{quote} orange block quote \end{quote} \end{description} \section{HTML Blocks} Simple block on one line: foo And nested without indentation: foo bar Interpreted markdown in a table: This is \emph{emphasized} And this is \textbf{strong} Here's a simple block: foo This should be a code block, though: \begin{verbatim}
                foo
                \end{verbatim} As should this: \begin{verbatim}
                foo
                \end{verbatim} Now, nested: foo This should just be an HTML comment: Multiline: Code block: \begin{verbatim} \end{verbatim} Just plain comment, with trailing spaces on the line: Code: \begin{verbatim}
                \end{verbatim} Hr's: \begin{center}\rule{3in}{0.4pt}\end{center} \section{Inline Markup} This is \emph{emphasized}, and so \emph{is this}. This is \textbf{strong}, and so \textbf{is this}. An \emph{\href{/url}{emphasized link}}. \textbf{\emph{This is strong and em.}} So is \textbf{\emph{this}} word. \textbf{\emph{This is strong and em.}} So is \textbf{\emph{this}} word. This is code: \verb!>!, \verb!$!, \verb!\!, \verb!\$!, \verb!!. \sout{This is \emph{strikeout}.} Superscripts: a\textsuperscript{bc}d a\textsuperscript{\emph{hello}} a\textsuperscript{hello there}. Subscripts: H\textsubscript{2}O, H\textsubscript{23}O, H\textsubscript{many of them}O. These should not be superscripts or subscripts, because of the unescaped spaces: a\^{}b c\^{}d, a\ensuremath{\sim}b c\ensuremath{\sim}d. \begin{center}\rule{3in}{0.4pt}\end{center} \section{Smart quotes, ellipses, dashes} ``Hello,'' said the spider. ``\,`Shelob' is my name.'' `A', `B', and `C' are letters. `Oak,' `elm,' and `beech' are names of trees. So is `pine.' `He said, ``I want to go.''\,' Were you alive in the 70's? Here is some quoted `\verb!code!' and a ``\href{http://example.com/?foo=1&bar=2}{quoted link}''. Some dashes: one---two---three---four---five. Dashes between numbers: 5--7, 255--66, 1987--1999. Ellipses\ldots{}and\ldots{}and\ldots{}. \begin{center}\rule{3in}{0.4pt}\end{center} \section{LaTeX} \begin{itemize} \item \cite[22-23]{smith.1899} \item \doublespacing \item $2+2=4$ \item $x \in y$ \item $\alpha \wedge \omega$ \item $223$ \item $p$-Tree \item $\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$ \item Here's one that has a line break in it: $\alpha + \omega \times x^2$. \end{itemize} These shouldn't be math: \begin{itemize} \item To get the famous equation, write \verb!$e = mc^2$!. \item \$22,000 is a \emph{lot} of money. So is \$34,000. (It worked if ``lot'' is emphasized.) \item Escaped \verb!$!: \$73 \emph{this should be emphasized} 23\$. \end{itemize} Here's a LaTeX table: \begin{tabular}{|l|l|}\hline Animal & Number \\ \hline Dog & 2 \\ Cat & 1 \\ \hline \end{tabular} A table with one column: \begin{tabular}{c} Animal \\ Vegetable \end{tabular} \begin{center}\rule{3in}{0.4pt}\end{center} \section{Special Characters} Here is some unicode: \begin{itemize} \item I hat: Î \item o umlaut: ö \item section: § \item set membership: ∈ \item copyright: © \end{itemize} AT\&T has an ampersand in their name. AT\&T is another way to write it. This \& that. 4 \textless{} 5. 6 \textgreater{} 5. Backslash: \textbackslash{} Backtick: ` Asterisk: * Underscore: \_ Left brace: \{ Right brace: \} Left bracket: [ Right bracket: ] Left paren: ( Right paren: ) Greater-than: \textgreater{} Hash: \# Period: . Bang: ! Plus: + Minus: - \begin{center}\rule{3in}{0.4pt}\end{center} \section{Links} \subsection{Explicit} Just a \href{/url/}{URL}. \href{/url/}{URL and title}. \href{/url/}{URL and title}. \href{/url/}{URL and title}. \href{/url/}{URL and title} \href{/url/}{URL and title} \href{/url/with_underscore}{with\_underscore} \href{mailto:nobody@nowhere.net}{Email link} \href{}{Empty}. \subsection{Reference} Foo \href{/url/}{bar}. Foo \href{/url/}{bar}. Foo \href{/url/}{bar}. With \href{/url/}{embedded [brackets]}. \href{/url/}{b} by itself should be a link. Indented \href{/url}{once}. Indented \href{/url}{twice}. Indented \href{/url}{thrice}. This should [not][] be a link. \begin{verbatim} [not]: /url \end{verbatim} Foo \href{/url/}{bar}. Foo \href{/url/}{biz}. \subsection{With ampersands} Here's a \href{http://example.com/?foo=1&bar=2}{link with an ampersand in the URL}. Here's a link with an amersand in the link text: \href{http://att.com/}{AT\&T}. Here's an \href{/script?foo=1&bar=2}{inline link}. Here's an \href{/script?foo=1&bar=2}{inline link in pointy braces}. \subsection{Autolinks} With an ampersand: \url{http://example.com/?foo=1&bar=2} \begin{itemize} \item In a list? \item \url{http://example.com/} \item It should. \end{itemize} An e-mail address: \href{mailto:nobody@nowhere.net}{nobody@nowhere.net} \begin{quote} Blockquoted: \url{http://example.com/} \end{quote} Auto-links should not occur here: \verb!! \begin{verbatim} or here: \end{verbatim} \begin{center}\rule{3in}{0.4pt}\end{center} \section{Images} From ``Voyage dans la Lune'' by Georges Melies (1902): \includegraphics{lalune.jpg} Here is a movie \includegraphics{movie.jpg} icon. \begin{center}\rule{3in}{0.4pt}\end{center} \section{Footnotes} Here is a footnote reference,\footnote{ Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document. } and another.\footnote{ Here's the long note. This one contains multiple blocks. Subsequent blocks are indented to show that they belong to the footnote (as with list items). \begin{Verbatim} { } \end{Verbatim} If you want, you can indent every line, but you can also be lazy and just indent the first line of each block. } This should \emph{not} be a footnote reference, because it contains a space.[\^{}my note] Here is an inline note.\footnote{ This is \emph{easier} to type. Inline notes may contain \href{http://google.com}{links} and \verb!]! verbatim characters, as well as [bracketed text]. } \begin{quote} Notes can go in quotes.\footnote{ In quote. } \end{quote} \begin{enumerate}[1.] \item And in list items.\footnote{ In list. } \end{enumerate} This paragraph should not be part of the note, as it is not indented. \section{Escaped characters} \$ \% \& \# \_ \{ \} \end{document} pandoc-3.1.3/test/latex-reader.native0000644000000000000000000014562707346545000015736 0ustar0000000000000000Pandoc Meta { unMeta = fromList [ ( "author" , MetaList [ MetaInlines [ Str "John" , Space , Str "MacFarlane" ] , MetaInlines [ Str "Anonymous" ] ] ) , ( "date" , MetaInlines [ Str "July" , Space , Str "17," , Space , Str "2006" ] ) , ( "title" , MetaInlines [ Str "Pandoc" , Space , Str "Test" , Space , Str "Suite" ] ) ] } [ RawBlock (Format "latex") "\\maketitle" , Para [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "set" , Space , Str "of" , Space , Str "tests" , Space , Str "for" , Space , Str "pandoc." , Space , Str "Most" , Space , Str "of" , Space , Str "them" , Space , Str "are" , Space , Str "adapted" , Space , Str "from" , SoftBreak , Str "John" , Space , Str "Gruber\8217s" , Space , Str "markdown" , Space , Str "test" , Space , Str "suite." ] , Div ( "" , [ "center" ] , [] ) [ HorizontalRule ] , Header 1 ( "headers" , [] , [] ) [ Str "Headers" ] , Header 2 ( "level-2-with-an-embedded-link" , [] , [] ) [ Str "Level" , Space , Str "2" , Space , Str "with" , Space , Str "an" , Space , Link ( "" , [] , [] ) [ Str "embedded" , Space , Str "link" ] ( "/url" , "" ) ] , Header 3 ( "level-3-with-emphasis" , [] , [] ) [ Str "Level" , Space , Str "3" , Space , Str "with" , Space , Emph [ Str "emphasis" ] ] , Para [ Str "Level" , Space , Str "4" ] , Para [ Str "Level" , Space , Str "5" ] , Header 1 ( "level-1" , [] , [] ) [ Str "Level" , Space , Str "1" ] , Header 2 ( "level-2-with-emphasis" , [] , [] ) [ Str "Level" , Space , Str "2" , Space , Str "with" , Space , Emph [ Str "emphasis" ] ] , Header 3 ( "level-3" , [] , [] ) [ Str "Level" , Space , Str "3" ] , Para [ Str "with" , Space , Str "no" , Space , Str "blank" , Space , Str "line" ] , Header 2 ( "level-2" , [] , [] ) [ Str "Level" , Space , Str "2" ] , Para [ Str "with" , Space , Str "no" , Space , Str "blank" , Space , Str "line" ] , Div ( "" , [ "center" ] , [] ) [ HorizontalRule ] , Header 1 ( "paragraphs" , [] , [] ) [ Str "Paragraphs" ] , Para [ Str "Here\8217s" , Space , Str "a" , Space , Str "regular" , Space , Str "paragraph." ] , Para [ Str "In" , Space , Str "Markdown" , Space , Str "1.0.0" , Space , Str "and" , Space , Str "earlier." , Space , Str "Version" , Space , Str "8." , Space , Str "This" , Space , Str "line" , Space , Str "turns" , Space , Str "into" , Space , Str "a" , SoftBreak , Str "list" , Space , Str "item." , Space , Str "Because" , Space , Str "a" , Space , Str "hard-wrapped" , Space , Str "line" , Space , Str "in" , Space , Str "the" , Space , Str "middle" , Space , Str "of" , Space , Str "a" , Space , Str "paragraph" , SoftBreak , Str "looked" , Space , Str "like" , Space , Str "a" , Space , Str "list" , Space , Str "item." ] , Para [ Str "Here\8217s" , Space , Str "one" , Space , Str "with" , Space , Str "a" , Space , Str "bullet." , Space , Str "*" , Space , Str "criminey." ] , Para [ Str "There" , Space , Str "should" , Space , Str "be" , Space , Str "a" , Space , Str "hard" , Space , Str "line" , Space , Str "break" , LineBreak , Str "here." ] , Div ( "" , [ "center" ] , [] ) [ HorizontalRule ] , Header 1 ( "block-quotes" , [] , [] ) [ Str "Block" , Space , Str "Quotes" ] , Para [ Str "E-mail" , Space , Str "style:" ] , BlockQuote [ Para [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "block" , Space , Str "quote." , Space , Str "It" , Space , Str "is" , Space , Str "pretty" , Space , Str "short." ] ] , BlockQuote [ Para [ Str "Code" , Space , Str "in" , Space , Str "a" , Space , Str "block" , Space , Str "quote:" ] , CodeBlock ( "" , [] , [] ) "sub status {\n print \"working\";\n}" , Para [ Str "A" , Space , Str "list:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Para [ Str "item" , Space , Str "one" ] ] , [ Para [ Str "item" , Space , Str "two" ] ] ] , Para [ Str "Nested" , Space , Str "block" , Space , Str "quotes:" ] , BlockQuote [ Para [ Str "nested" ] ] , BlockQuote [ Para [ Str "nested" ] ] ] , Para [ Str "This" , Space , Str "should" , Space , Str "not" , Space , Str "be" , Space , Str "a" , Space , Str "block" , Space , Str "quote:" , Space , Str "2" , Space , Str ">" , Space , Str "1." ] , Para [ Str "Box-style:" ] , BlockQuote [ Para [ Str "Example:" ] , CodeBlock ( "" , [] , [] ) "sub status {\n print \"working\";\n}" ] , BlockQuote [ OrderedList ( 1 , Decimal , Period ) [ [ Para [ Str "do" , Space , Str "laundry" ] ] , [ Para [ Str "take" , Space , Str "out" , Space , Str "the" , Space , Str "trash" ] ] ] ] , Para [ Str "Here\8217s" , Space , Str "a" , Space , Str "nested" , Space , Str "one:" ] , BlockQuote [ Para [ Str "Joe" , Space , Str "said:" ] , BlockQuote [ Para [ Str "Don\8217t" , Space , Str "quote" , Space , Str "me." ] ] ] , Para [ Str "And" , Space , Str "a" , Space , Str "following" , Space , Str "paragraph." ] , Div ( "" , [ "center" ] , [] ) [ HorizontalRule ] , Header 1 ( "code-blocks" , [] , [] ) [ Str "Code" , Space , Str "Blocks" ] , Para [ Str "Code:" ] , CodeBlock ( "" , [] , [] ) "---- (should be four hyphens)\n\nsub status {\n print \"working\";\n}\n\nthis code block is indented by one tab" , Para [ Str "And:" ] , CodeBlock ( "" , [] , [] ) " this code block is indented by two tabs\n\nThese should not be escaped: \\$ \\\\ \\> \\[ \\{" , Para [ Str "this" , Space , Str "has" , Space , Emph [ Str "two" , LineBreak , Str "lines" ] ] , Div ( "" , [ "center" ] , [] ) [ HorizontalRule ] , Header 1 ( "lists" , [] , [] ) [ Str "Lists" ] , Header 2 ( "unordered" , [] , [] ) [ Str "Unordered" ] , Para [ Str "Asterisks" , Space , Str "tight:" ] , BulletList [ [ Para [ Str "asterisk" , Space , Str "1" ] ] , [ Para [ Str "asterisk" , Space , Str "2" ] ] , [ Para [ Str "asterisk" , Space , Str "3" ] ] ] , Para [ Str "Asterisks" , Space , Str "loose:" ] , BulletList [ [ Para [ Str "asterisk" , Space , Str "1" ] ] , [ Para [ Str "asterisk" , Space , Str "2" ] ] , [ Para [ Str "asterisk" , Space , Str "3" ] ] ] , Para [ Str "Pluses" , Space , Str "tight:" ] , BulletList [ [ Para [ Str "Plus" , Space , Str "1" ] ] , [ Para [ Str "Plus" , Space , Str "2" ] ] , [ Para [ Str "Plus" , Space , Str "3" ] ] ] , Para [ Str "Pluses" , Space , Str "loose:" ] , BulletList [ [ Para [ Str "Plus" , Space , Str "1" ] ] , [ Para [ Str "Plus" , Space , Str "2" ] ] , [ Para [ Str "Plus" , Space , Str "3" ] ] ] , Para [ Str "Minuses" , Space , Str "tight:" ] , BulletList [ [ Para [ Str "Minus" , Space , Str "1" ] ] , [ Para [ Str "Minus" , Space , Str "2" ] ] , [ Para [ Str "Minus" , Space , Str "3" ] ] ] , Para [ Str "Minuses" , Space , Str "loose:" ] , BulletList [ [ Para [ Str "Minus" , Space , Str "1" ] ] , [ Para [ Str "Minus" , Space , Str "2" ] ] , [ Para [ Str "Minus" , Space , Str "3" ] ] ] , Header 2 ( "ordered" , [] , [] ) [ Str "Ordered" ] , Para [ Str "Tight:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Para [ Str "First" ] ] , [ Para [ Str "Second" ] ] , [ Para [ Str "Third" ] ] ] , Para [ Str "and:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Para [ Str "One" ] ] , [ Para [ Str "Two" ] ] , [ Para [ Str "Three" ] ] ] , Para [ Str "Loose" , Space , Str "using" , Space , Str "tabs:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Para [ Str "First" ] ] , [ Para [ Str "Second" ] ] , [ Para [ Str "Third" ] ] ] , Para [ Str "and" , Space , Str "using" , Space , Str "spaces:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Para [ Str "One" ] ] , [ Para [ Str "Two" ] ] , [ Para [ Str "Three" ] ] ] , Para [ Str "Multiple" , Space , Str "paragraphs:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Para [ Str "Item" , Space , Str "1," , Space , Str "graf" , Space , Str "one." ] , Para [ Str "Item" , Space , Str "1." , Space , Str "graf" , Space , Str "two." , Space , Str "The" , Space , Str "quick" , Space , Str "brown" , Space , Str "fox" , Space , Str "jumped" , Space , Str "over" , Space , Str "the" , Space , Str "lazy" , Space , Str "dog\8217s" , SoftBreak , Str "back." ] ] , [ Para [ Str "Item" , Space , Str "2." ] ] , [ Para [ Str "Item" , Space , Str "3." ] ] ] , Header 2 ( "nested" , [] , [] ) [ Str "Nested" ] , BulletList [ [ Para [ Str "Tab" ] , BulletList [ [ Para [ Str "Tab" ] , BulletList [ [ Para [ Str "Tab" ] ] ] ] ] ] ] , Para [ Str "Here\8217s" , Space , Str "another:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Para [ Str "First" ] ] , [ Para [ Str "Second:" ] , BulletList [ [ Para [ Str "Fee" ] ] , [ Para [ Str "Fie" ] ] , [ Para [ Str "Foe" ] ] ] ] , [ Para [ Str "Third" ] ] ] , Para [ Str "Same" , Space , Str "thing" , Space , Str "but" , Space , Str "with" , Space , Str "paragraphs:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Para [ Str "First" ] ] , [ Para [ Str "Second:" ] , BulletList [ [ Para [ Str "Fee" ] ] , [ Para [ Str "Fie" ] ] , [ Para [ Str "Foe" ] ] ] ] , [ Para [ Str "Third" ] ] ] , Header 2 ( "tabs-and-spaces" , [] , [] ) [ Str "Tabs" , Space , Str "and" , Space , Str "spaces" ] , BulletList [ [ Para [ Str "this" , Space , Str "is" , Space , Str "a" , Space , Str "list" , Space , Str "item" , Space , Str "indented" , Space , Str "with" , Space , Str "tabs" ] ] , [ Para [ Str "this" , Space , Str "is" , Space , Str "a" , Space , Str "list" , Space , Str "item" , Space , Str "indented" , Space , Str "with" , Space , Str "spaces" ] , BulletList [ [ Para [ Str "this" , Space , Str "is" , Space , Str "an" , Space , Str "example" , Space , Str "list" , Space , Str "item" , Space , Str "indented" , Space , Str "with" , Space , Str "tabs" ] ] , [ Para [ Str "this" , Space , Str "is" , Space , Str "an" , Space , Str "example" , Space , Str "list" , Space , Str "item" , Space , Str "indented" , Space , Str "with" , Space , Str "spaces" ] ] ] ] ] , Header 2 ( "fancy-list-markers" , [] , [] ) [ Str "Fancy" , Space , Str "list" , Space , Str "markers" ] , OrderedList ( 2 , Decimal , TwoParens ) [ [ Para [ Str "begins" , Space , Str "with" , Space , Str "2" ] ] , [ Para [ Str "and" , Space , Str "now" , Space , Str "3" ] , Para [ Str "with" , Space , Str "a" , Space , Str "continuation" ] , OrderedList ( 4 , LowerRoman , Period ) [ [ Para [ Str "sublist" , Space , Str "with" , Space , Str "roman" , Space , Str "numerals," , Space , Str "starting" , Space , Str "with" , Space , Str "4" ] ] , [ Para [ Str "more" , Space , Str "items" ] , OrderedList ( 1 , UpperAlpha , TwoParens ) [ [ Para [ Str "a" , Space , Str "subsublist" ] ] , [ Para [ Str "a" , Space , Str "subsublist" ] ] ] ] ] ] ] , Para [ Str "Nesting:" ] , OrderedList ( 1 , UpperAlpha , Period ) [ [ Para [ Str "Upper" , Space , Str "Alpha" ] , OrderedList ( 1 , UpperRoman , Period ) [ [ Para [ Str "Upper" , Space , Str "Roman." ] , OrderedList ( 6 , Decimal , TwoParens ) [ [ Para [ Str "Decimal" , Space , Str "start" , Space , Str "with" , Space , Str "6" ] , OrderedList ( 3 , LowerAlpha , OneParen ) [ [ Para [ Str "Lower" , Space , Str "alpha" , Space , Str "with" , Space , Str "paren" ] ] ] ] ] ] ] ] ] , Para [ Str "Autonumbering:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Para [ Str "Autonumber." ] ] , [ Para [ Str "More." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Para [ Str "Nested." ] ] ] ] ] , Para [ Str "Should" , Space , Str "not" , Space , Str "be" , Space , Str "a" , Space , Str "list" , Space , Str "item:" ] , Para [ Str "M.A." , Space , Str "2007" ] , Para [ Str "B." , Space , Str "Williams" ] , Div ( "" , [ "center" ] , [] ) [ HorizontalRule ] , Header 1 ( "definition-lists" , [] , [] ) [ Str "Definition" , Space , Str "Lists" ] , Para [ Str "Tight" , Space , Str "using" , Space , Str "spaces:" ] , DefinitionList [ ( [ Str "apple" ] , [ [ Para [ Str "red" , Space , Str "fruit" ] ] ] ) , ( [ Str "orange" ] , [ [ Para [ Str "orange" , Space , Str "fruit" ] ] ] ) , ( [ Str "banana" ] , [ [ Para [ Str "yellow" , Space , Str "fruit" ] ] ] ) ] , Para [ Str "Tight" , Space , Str "using" , Space , Str "tabs:" ] , DefinitionList [ ( [ Str "apple" ] , [ [ Para [ Str "red" , Space , Str "fruit" ] ] ] ) , ( [ Str "orange" ] , [ [ Para [ Str "orange" , Space , Str "fruit" ] ] ] ) , ( [ Str "banana" ] , [ [ Para [ Str "yellow" , Space , Str "fruit" ] ] ] ) ] , Para [ Str "Loose:" ] , DefinitionList [ ( [ Str "apple" ] , [ [ Para [ Str "red" , Space , Str "fruit" ] ] ] ) , ( [ Str "orange" ] , [ [ Para [ Str "orange" , Space , Str "fruit" ] ] ] ) , ( [ Str "banana" ] , [ [ Para [ Str "yellow" , Space , Str "fruit" ] ] ] ) ] , Para [ Str "Multiple" , Space , Str "blocks" , Space , Str "with" , Space , Str "italics:" ] , DefinitionList [ ( [ Emph [ Str "apple" ] ] , [ [ Para [ Str "red" , Space , Str "fruit" ] , Para [ Str "contains" , Space , Str "seeds," , Space , Str "crisp," , Space , Str "pleasant" , Space , Str "to" , Space , Str "taste" ] ] ] ) , ( [ Emph [ Str "orange" ] ] , [ [ Para [ Str "orange" , Space , Str "fruit" ] , CodeBlock ( "" , [] , [] ) "{ orange code block }" , BlockQuote [ Para [ Str "orange" , Space , Str "block" , Space , Str "quote" ] ] ] ] ) ] , Header 1 ( "html-blocks" , [] , [] ) [ Str "HTML" , Space , Str "Blocks" ] , Para [ Str "Simple" , Space , Str "block" , Space , Str "on" , Space , Str "one" , Space , Str "line:" ] , Para [ Str "foo" , SoftBreak , Str "And" , Space , Str "nested" , Space , Str "without" , Space , Str "indentation:" ] , Para [ Str "foo" , SoftBreak , Str "bar" , SoftBreak , Str "Interpreted" , Space , Str "markdown" , Space , Str "in" , Space , Str "a" , Space , Str "table:" ] , Para [ Str "This" , Space , Str "is" , Space , Emph [ Str "emphasized" ] , SoftBreak , Str "And" , Space , Str "this" , Space , Str "is" , Space , Strong [ Str "strong" ] , SoftBreak , Str "Here\8217s" , Space , Str "a" , Space , Str "simple" , Space , Str "block:" ] , Para [ Str "foo" , SoftBreak , Str "This" , Space , Str "should" , Space , Str "be" , Space , Str "a" , Space , Str "code" , Space , Str "block," , Space , Str "though:" ] , CodeBlock ( "" , [] , [] ) "
                \n foo\n
                " , Para [ Str "As" , Space , Str "should" , Space , Str "this:" ] , CodeBlock ( "" , [] , [] ) "
                foo
                " , Para [ Str "Now," , Space , Str "nested:" ] , Para [ Str "foo" , SoftBreak , Str "This" , Space , Str "should" , Space , Str "just" , Space , Str "be" , Space , Str "an" , Space , Str "HTML" , Space , Str "comment:" ] , Para [ Str "Multiline:" ] , Para [ Str "Code" , Space , Str "block:" ] , CodeBlock ( "" , [] , [] ) "" , Para [ Str "Just" , Space , Str "plain" , Space , Str "comment," , Space , Str "with" , Space , Str "trailing" , Space , Str "spaces" , Space , Str "on" , Space , Str "the" , Space , Str "line:" ] , Para [ Str "Code:" ] , CodeBlock ( "" , [] , [] ) "
                " , Para [ Str "Hr\8217s:" ] , Div ( "" , [ "center" ] , [] ) [ HorizontalRule ] , Header 1 ( "inline-markup" , [] , [] ) [ Str "Inline" , Space , Str "Markup" ] , Para [ Str "This" , Space , Str "is" , Space , Emph [ Str "emphasized" ] , Str "," , Space , Str "and" , Space , Str "so" , Space , Emph [ Str "is" , Space , Str "this" ] , Str "." ] , Para [ Str "This" , Space , Str "is" , Space , Strong [ Str "strong" ] , Str "," , Space , Str "and" , Space , Str "so" , Space , Strong [ Str "is" , Space , Str "this" ] , Str "." ] , Para [ Str "An" , Space , Emph [ Link ( "" , [] , [] ) [ Str "emphasized" , Space , Str "link" ] ( "/url" , "" ) ] , Str "." ] , Para [ Strong [ Emph [ Str "This" , Space , Str "is" , Space , Str "strong" , Space , Str "and" , Space , Str "em." ] ] ] , Para [ Str "So" , Space , Str "is" , Space , Strong [ Emph [ Str "this" ] ] , Space , Str "word." ] , Para [ Strong [ Emph [ Str "This" , Space , Str "is" , Space , Str "strong" , Space , Str "and" , Space , Str "em." ] ] ] , Para [ Str "So" , Space , Str "is" , Space , Strong [ Emph [ Str "this" ] ] , Space , Str "word." ] , Para [ Str "This" , Space , Str "is" , Space , Str "code:" , Space , Code ( "" , [] , [] ) ">" , Str "," , Space , Code ( "" , [] , [] ) "$" , Str "," , Space , Code ( "" , [] , [] ) "\\" , Str "," , Space , Code ( "" , [] , [] ) "\\$" , Str "," , SoftBreak , Code ( "" , [] , [] ) "" , Str "." ] , Para [ Strikeout [ Str "This" , Space , Str "is" , Space , Emph [ Str "strikeout" ] , Str "." ] ] , Para [ Str "Superscripts:" , Space , Str "a" , Superscript [ Str "bc" ] , Str "d" , SoftBreak , Str "a" , Superscript [ Emph [ Str "hello" ] ] , Space , Str "a" , Superscript [ Str "hello" , Space , Str "there" ] , Str "." ] , Para [ Str "Subscripts:" , Space , Str "H" , Subscript [ Str "2" ] , Str "O," , Space , Str "H" , Subscript [ Str "23" ] , Str "O," , SoftBreak , Str "H" , Subscript [ Str "many" , Space , Str "of" , Space , Str "them" ] , Str "O." ] , Para [ Str "These" , Space , Str "should" , Space , Str "not" , Space , Str "be" , Space , Str "superscripts" , Space , Str "or" , Space , Str "subscripts," , Space , Str "because" , Space , Str "of" , Space , Str "the" , SoftBreak , Str "unescaped" , Space , Str "spaces:" , Space , Str "a^b" , Space , Str "c^d," , Space , Str "a" , Math InlineMath "\\sim" , Str "b" , SoftBreak , Str "c" , Math InlineMath "\\sim" , Str "d." ] , Div ( "" , [ "center" ] , [] ) [ HorizontalRule ] , Header 1 ( "smart-quotes-ellipses-dashes" , [] , [] ) [ Str "Smart" , Space , Str "quotes," , Space , Str "ellipses," , Space , Str "dashes" ] , Para [ Quoted DoubleQuote [ Str "Hello," ] , Space , Str "said" , Space , Str "the" , Space , Str "spider." , Space , Quoted DoubleQuote [ Str "\8198" , Quoted SingleQuote [ Str "Shelob" ] , Space , Str "is" , Space , Str "my" , Space , Str "name." ] ] , Para [ Quoted SingleQuote [ Str "A" ] , Str "," , Space , Quoted SingleQuote [ Str "B" ] , Str "," , Space , Str "and" , Space , Quoted SingleQuote [ Str "C" ] , Space , Str "are" , Space , Str "letters." ] , Para [ Quoted SingleQuote [ Str "Oak," ] , Space , Quoted SingleQuote [ Str "elm," ] , Space , Str "and" , Space , Quoted SingleQuote [ Str "beech" ] , Space , Str "are" , Space , Str "names" , Space , Str "of" , Space , Str "trees." , Space , Str "So" , Space , Str "is" , Space , Quoted SingleQuote [ Str "pine." ] ] , Para [ Quoted SingleQuote [ Str "He" , Space , Str "said," , Space , Quoted DoubleQuote [ Str "I" , Space , Str "want" , Space , Str "to" , Space , Str "go." ] , Str "\8198" ] , Space , Str "Were" , Space , Str "you" , Space , Str "alive" , Space , Str "in" , Space , Str "the" , Space , Str "70\8217s?" ] , Para [ Str "Here" , Space , Str "is" , Space , Str "some" , Space , Str "quoted" , Space , Quoted SingleQuote [ Code ( "" , [] , [] ) "code" ] , Space , Str "and" , Space , Str "a" , SoftBreak , Quoted DoubleQuote [ Link ( "" , [] , [] ) [ Str "quoted" , Space , Str "link" ] ( "http://example.com/?foo=1&bar=2" , "" ) ] , Str "." ] , Para [ Str "Some" , Space , Str "dashes:" , Space , Str "one\8212two\8212three\8212four\8212five." ] , Para [ Str "Dashes" , Space , Str "between" , Space , Str "numbers:" , Space , Str "5\8211\&7," , Space , Str "255\8211\&66," , Space , Str "1987\8211\&1999." ] , Para [ Str "Ellipses\8230and\8230and\8230." ] , Div ( "" , [ "center" ] , [] ) [ HorizontalRule ] , Header 1 ( "latex" , [] , [] ) [ Str "LaTeX" ] , BulletList [ [ Para [ Cite [ Citation { citationId = "smith.1899" , citationPrefix = [] , citationSuffix = [ Str "22-23" ] , citationMode = NormalCitation , citationNoteNum = 0 , citationHash = 0 } ] [ RawInline (Format "latex") "\\cite[22-23]{smith.1899}" ] ] ] , [ RawBlock (Format "latex") "\\doublespacing" ] , [ Para [ Math InlineMath "2+2=4" ] ] , [ Para [ Math InlineMath "x \\in y" ] ] , [ Para [ Math InlineMath "\\alpha \\wedge \\omega" ] ] , [ Para [ Math InlineMath "223" ] ] , [ Para [ Math InlineMath "p" , Str "-Tree" ] ] , [ Para [ Math InlineMath "\\frac{d}{dx}f(x)=\\lim_{h\\to 0}\\frac{f(x+h)-f(x)}{h}" ] ] , [ Para [ Str "Here\8217s" , Space , Str "one" , Space , Str "that" , Space , Str "has" , Space , Str "a" , Space , Str "line" , Space , Str "break" , Space , Str "in" , Space , Str "it:" , SoftBreak , Math InlineMath "\\alpha + \\omega \\times x^2" , Str "." ] ] ] , Para [ Str "These" , Space , Str "shouldn\8217t" , Space , Str "be" , Space , Str "math:" ] , BulletList [ [ Para [ Str "To" , Space , Str "get" , Space , Str "the" , Space , Str "famous" , Space , Str "equation," , Space , Str "write" , Space , Code ( "" , [] , [] ) "$e = mc^2$" , Str "." ] ] , [ Para [ Str "$22,000" , Space , Str "is" , Space , Str "a" , Space , Emph [ Str "lot" ] , Space , Str "of" , Space , Str "money." , Space , Str "So" , Space , Str "is" , Space , Str "$34,000." , Space , Str "(It" , Space , Str "worked" , Space , Str "if" , SoftBreak , Quoted DoubleQuote [ Str "lot" ] , Space , Str "is" , Space , Str "emphasized.)" ] ] , [ Para [ Str "Escaped" , Space , Code ( "" , [] , [] ) "$" , Str ":" , Space , Str "$73" , Space , Emph [ Str "this" , Space , Str "should" , Space , Str "be" , Space , Str "emphasized" ] , Space , Str "23$." ] ] ] , Para [ Str "Here\8217s" , Space , Str "a" , Space , Str "LaTeX" , Space , Str "table:" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Animal" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Number" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Dog" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cat" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "A" , Space , Str "table" , Space , Str "with" , Space , Str "one" , Space , Str "column:" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignCenter , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Animal" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Vegetable" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Div ( "" , [ "center" ] , [] ) [ HorizontalRule ] , Header 1 ( "special-characters" , [] , [] ) [ Str "Special" , Space , Str "Characters" ] , Para [ Str "Here" , Space , Str "is" , Space , Str "some" , Space , Str "unicode:" ] , BulletList [ [ Para [ Str "I" , Space , Str "hat:" , Space , Str "\206" ] ] , [ Para [ Str "o" , Space , Str "umlaut:" , Space , Str "\246" ] ] , [ Para [ Str "section:" , Space , Str "\167" ] ] , [ Para [ Str "set" , Space , Str "membership:" , Space , Str "\8712" ] ] , [ Para [ Str "copyright:" , Space , Str "\169" ] ] ] , Para [ Str "AT&T" , Space , Str "has" , Space , Str "an" , Space , Str "ampersand" , Space , Str "in" , Space , Str "their" , Space , Str "name." ] , Para [ Str "AT&T" , Space , Str "is" , Space , Str "another" , Space , Str "way" , Space , Str "to" , Space , Str "write" , Space , Str "it." ] , Para [ Str "This" , Space , Str "&" , Space , Str "that." ] , Para [ Str "4" , Space , Str "<" , Space , Str "5." ] , Para [ Str "6" , Space , Str ">" , Space , Str "5." ] , Para [ Str "Backslash:" , Space , Str "\\" ] , Para [ Str "Backtick:" , Space , Str "\8216" ] , Para [ Str "Asterisk:" , Space , Str "*" ] , Para [ Str "Underscore:" , Space , Str "_" ] , Para [ Str "Left" , Space , Str "brace:" , Space , Str "{" ] , Para [ Str "Right" , Space , Str "brace:" , Space , Str "}" ] , Para [ Str "Left" , Space , Str "bracket:" , Space , Str "[" ] , Para [ Str "Right" , Space , Str "bracket:" , Space , Str "]" ] , Para [ Str "Left" , Space , Str "paren:" , Space , Str "(" ] , Para [ Str "Right" , Space , Str "paren:" , Space , Str ")" ] , Para [ Str "Greater-than:" , Space , Str ">" ] , Para [ Str "Hash:" , Space , Str "#" ] , Para [ Str "Period:" , Space , Str "." ] , Para [ Str "Bang:" , Space , Str "!" ] , Para [ Str "Plus:" , Space , Str "+" ] , Para [ Str "Minus:" , Space , Str "-" ] , Div ( "" , [ "center" ] , [] ) [ HorizontalRule ] , Header 1 ( "links" , [] , [] ) [ Str "Links" ] , Header 2 ( "explicit" , [] , [] ) [ Str "Explicit" ] , Para [ Str "Just" , Space , Str "a" , Space , Link ( "" , [] , [] ) [ Str "URL" ] ( "/url/" , "" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , Space , Str "and" , Space , Str "title" ] ( "/url/" , "" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , Space , Str "and" , Space , Str "title" ] ( "/url/" , "" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , Space , Str "and" , Space , Str "title" ] ( "/url/" , "" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , Space , Str "and" , Space , Str "title" ] ( "/url/" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , Space , Str "and" , Space , Str "title" ] ( "/url/" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "with_underscore" ] ( "/url/with_underscore" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "Email" , Space , Str "link" ] ( "mailto:nobody@nowhere.net" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "Empty" ] ( "" , "" ) , Str "." ] , Header 2 ( "reference" , [] , [] ) [ Str "Reference" ] , Para [ Str "Foo" , Space , Link ( "" , [] , [] ) [ Str "bar" ] ( "/url/" , "" ) , Str "." ] , Para [ Str "Foo" , Space , Link ( "" , [] , [] ) [ Str "bar" ] ( "/url/" , "" ) , Str "." ] , Para [ Str "Foo" , Space , Link ( "" , [] , [] ) [ Str "bar" ] ( "/url/" , "" ) , Str "." ] , Para [ Str "With" , Space , Link ( "" , [] , [] ) [ Str "embedded" , Space , Str "[brackets]" ] ( "/url/" , "" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "b" ] ( "/url/" , "" ) , Space , Str "by" , Space , Str "itself" , Space , Str "should" , Space , Str "be" , Space , Str "a" , Space , Str "link." ] , Para [ Str "Indented" , Space , Link ( "" , [] , [] ) [ Str "once" ] ( "/url" , "" ) , Str "." ] , Para [ Str "Indented" , Space , Link ( "" , [] , [] ) [ Str "twice" ] ( "/url" , "" ) , Str "." ] , Para [ Str "Indented" , Space , Link ( "" , [] , [] ) [ Str "thrice" ] ( "/url" , "" ) , Str "." ] , Para [ Str "This" , Space , Str "should" , Space , Str "[not][]" , Space , Str "be" , Space , Str "a" , Space , Str "link." ] , CodeBlock ( "" , [] , [] ) "[not]: /url" , Para [ Str "Foo" , Space , Link ( "" , [] , [] ) [ Str "bar" ] ( "/url/" , "" ) , Str "." ] , Para [ Str "Foo" , Space , Link ( "" , [] , [] ) [ Str "biz" ] ( "/url/" , "" ) , Str "." ] , Header 2 ( "with-ampersands" , [] , [] ) [ Str "With" , Space , Str "ampersands" ] , Para [ Str "Here\8217s" , Space , Str "a" , SoftBreak , Link ( "" , [] , [] ) [ Str "link" , Space , Str "with" , Space , Str "an" , Space , Str "ampersand" , Space , Str "in" , Space , Str "the" , Space , Str "URL" ] ( "http://example.com/?foo=1&bar=2" , "" ) , Str "." ] , Para [ Str "Here\8217s" , Space , Str "a" , Space , Str "link" , Space , Str "with" , Space , Str "an" , Space , Str "amersand" , Space , Str "in" , Space , Str "the" , Space , Str "link" , Space , Str "text:" , SoftBreak , Link ( "" , [] , [] ) [ Str "AT&T" ] ( "http://att.com/" , "" ) , Str "." ] , Para [ Str "Here\8217s" , Space , Str "an" , Space , Link ( "" , [] , [] ) [ Str "inline" , Space , Str "link" ] ( "/script?foo=1&bar=2" , "" ) , Str "." ] , Para [ Str "Here\8217s" , Space , Str "an" , SoftBreak , Link ( "" , [] , [] ) [ Str "inline" , Space , Str "link" , Space , Str "in" , Space , Str "pointy" , Space , Str "braces" ] ( "/script?foo=1&bar=2" , "" ) , Str "." ] , Header 2 ( "autolinks" , [] , [] ) [ Str "Autolinks" ] , Para [ Str "With" , Space , Str "an" , Space , Str "ampersand:" , Space , Link ( "" , [ "uri" ] , [] ) [ Str "http://example.com/?foo=1&bar=2" ] ( "http://example.com/?foo=1&bar=2" , "" ) ] , BulletList [ [ Para [ Str "In" , Space , Str "a" , Space , Str "list?" ] ] , [ Para [ Link ( "" , [ "uri" ] , [] ) [ Str "http://example.com/" ] ( "http://example.com/" , "" ) ] ] , [ Para [ Str "It" , Space , Str "should." ] ] ] , Para [ Str "An" , Space , Str "e-mail" , Space , Str "address:" , SoftBreak , Link ( "" , [] , [] ) [ Str "nobody@nowhere.net" ] ( "mailto:nobody@nowhere.net" , "" ) ] , BlockQuote [ Para [ Str "Blockquoted:" , Space , Link ( "" , [ "uri" ] , [] ) [ Str "http://example.com/" ] ( "http://example.com/" , "" ) ] ] , Para [ Str "Auto-links" , Space , Str "should" , Space , Str "not" , Space , Str "occur" , Space , Str "here:" , Space , Code ( "" , [] , [] ) "" ] , CodeBlock ( "" , [] , [] ) "or here: " , Div ( "" , [ "center" ] , [] ) [ HorizontalRule ] , Header 1 ( "images" , [] , [] ) [ Str "Images" ] , Para [ Str "From" , Space , Quoted DoubleQuote [ Str "Voyage" , Space , Str "dans" , Space , Str "la" , Space , Str "Lune" ] , Space , Str "by" , Space , Str "Georges" , Space , Str "Melies" , Space , Str "(1902):" ] , Para [ Image ( "" , [] , [] ) [ Str "image" ] ( "lalune.jpg" , "" ) ] , Para [ Str "Here" , Space , Str "is" , Space , Str "a" , Space , Str "movie" , Space , Image ( "" , [] , [] ) [ Str "image" ] ( "movie.jpg" , "" ) , Space , Str "icon." ] , Div ( "" , [ "center" ] , [] ) [ HorizontalRule ] , Header 1 ( "footnotes" , [] , [] ) [ Str "Footnotes" ] , Para [ Str "Here" , Space , Str "is" , Space , Str "a" , Space , Str "footnote" , SoftBreak , Str "reference," , Note [ Para [ Str "Here" , Space , Str "is" , Space , Str "the" , Space , Str "footnote." , Space , Str "It" , Space , Str "can" , Space , Str "go" , Space , Str "anywhere" , Space , Str "after" , Space , Str "the" , Space , Str "footnote" , SoftBreak , Str "reference." , Space , Str "It" , Space , Str "need" , Space , Str "not" , Space , Str "be" , Space , Str "placed" , Space , Str "at" , Space , Str "the" , Space , Str "end" , Space , Str "of" , Space , Str "the" , Space , Str "document." ] ] , SoftBreak , Str "and" , SoftBreak , Str "another." , Note [ Para [ Str "Here\8217s" , Space , Str "the" , Space , Str "long" , Space , Str "note." , Space , Str "This" , Space , Str "one" , Space , Str "contains" , Space , Str "multiple" , Space , Str "blocks." ] , Para [ Str "Subsequent" , Space , Str "blocks" , Space , Str "are" , Space , Str "indented" , Space , Str "to" , Space , Str "show" , Space , Str "that" , Space , Str "they" , Space , Str "belong" , Space , Str "to" , Space , Str "the" , SoftBreak , Str "footnote" , Space , Str "(as" , Space , Str "with" , Space , Str "list" , Space , Str "items)." ] , CodeBlock ( "" , [] , [] ) " { }" , Para [ Str "If" , Space , Str "you" , Space , Str "want," , Space , Str "you" , Space , Str "can" , Space , Str "indent" , Space , Str "every" , Space , Str "line," , Space , Str "but" , Space , Str "you" , Space , Str "can" , Space , Str "also" , Space , Str "be" , Space , Str "lazy" , SoftBreak , Str "and" , Space , Str "just" , Space , Str "indent" , Space , Str "the" , Space , Str "first" , Space , Str "line" , Space , Str "of" , Space , Str "each" , Space , Str "block." ] ] , SoftBreak , Str "This" , Space , Str "should" , Space , Emph [ Str "not" ] , Space , Str "be" , Space , Str "a" , Space , Str "footnote" , Space , Str "reference," , Space , Str "because" , Space , Str "it" , Space , Str "contains" , SoftBreak , Str "a" , Space , Str "space.[^my" , Space , Str "note]" , Space , Str "Here" , Space , Str "is" , Space , Str "an" , Space , Str "inline" , SoftBreak , Str "note." , Note [ Para [ Str "This" , Space , Str "is" , Space , Emph [ Str "easier" ] , Space , Str "to" , Space , Str "type." , Space , Str "Inline" , Space , Str "notes" , Space , Str "may" , Space , Str "contain" , SoftBreak , Link ( "" , [] , [] ) [ Str "links" ] ( "http://google.com" , "" ) , Space , Str "and" , Space , Code ( "" , [] , [] ) "]" , Space , Str "verbatim" , Space , Str "characters," , SoftBreak , Str "as" , Space , Str "well" , Space , Str "as" , Space , Str "[bracketed" , Space , Str "text]." ] ] ] , BlockQuote [ Para [ Str "Notes" , Space , Str "can" , Space , Str "go" , Space , Str "in" , Space , Str "quotes." , Note [ Para [ Str "In" , Space , Str "quote." ] ] ] ] , OrderedList ( 1 , Decimal , Period ) [ [ Para [ Str "And" , Space , Str "in" , Space , Str "list" , Space , Str "items." , Note [ Para [ Str "In" , Space , Str "list." ] ] ] ] ] , Para [ Str "This" , Space , Str "paragraph" , Space , Str "should" , Space , Str "not" , Space , Str "be" , Space , Str "part" , Space , Str "of" , Space , Str "the" , Space , Str "note," , Space , Str "as" , Space , Str "it" , Space , Str "is" , Space , Str "not" , SoftBreak , Str "indented." ] , Header 1 ( "escaped-characters" , [] , [] ) [ Str "Escaped" , Space , Str "characters" ] , Para [ Str "$" , Space , Str "%" , Space , Str "&" , Space , Str "#" , Space , Str "_" , Space , Str "{" , Space , Str "}" ] ] pandoc-3.1.3/test/lhs-test-markdown.native0000644000000000000000000000403307346545000016725 0ustar0000000000000000[ Header 1 ( "lhs-test" , [] , [] ) [ Str "lhs" , Space , Str "test" ] , Para [ Code ( "" , [] , [] ) "unsplit" , Space , Str "is" , Space , Str "an" , Space , Str "arrow" , Space , Str "that" , Space , Str "takes" , Space , Str "a" , Space , Str "pair" , Space , Str "of" , Space , Str "values" , Space , Str "and" , Space , Str "combines" , Space , Str "them" , Space , Str "to" , SoftBreak , Str "return" , Space , Str "a" , Space , Str "single" , Space , Str "value:" ] , CodeBlock ( "" , [ "haskell" , "literate" ] , [] ) "unsplit :: (Arrow a) => (b -> c -> d) -> a (b, c) d\nunsplit = arr . uncurry\n -- arr (\\op (x,y) -> x `op` y)" , Para [ Code ( "" , [] , [] ) "(***)" , Space , Str "combines" , Space , Str "two" , Space , Str "arrows" , Space , Str "into" , Space , Str "a" , Space , Str "new" , Space , Str "arrow" , Space , Str "by" , Space , Str "running" , Space , Str "the" , Space , Str "two" , Space , Str "arrows" , Space , Str "on" , Space , Str "a" , SoftBreak , Str "pair" , Space , Str "of" , Space , Str "values" , Space , Str "(one" , Space , Str "arrow" , Space , Str "on" , Space , Str "the" , Space , Str "first" , Space , Str "item" , Space , Str "of" , Space , Str "the" , Space , Str "pair" , Space , Str "and" , Space , Str "one" , Space , Str "arrow" , Space , Str "on" , Space , Str "the" , SoftBreak , Str "second" , Space , Str "item" , Space , Str "of" , Space , Str "the" , Space , Str "pair)." ] , CodeBlock ( "" , [] , [] ) "f *** g = first f >>> second g" , Para [ Str "Block" , Space , Str "quote:" ] , BlockQuote [ Para [ Str "foo" , Space , Str "bar" ] ] ] pandoc-3.1.3/test/lhs-test.fragment.html+lhs0000644000000000000000000000166707346545000017161 0ustar0000000000000000

                lhs test

                unsplit is an arrow that takes a pair of values and combines them to return a single value:

                > unsplit :: (Arrow a) => (b -> c -> d) -> a (b, c) d
                > unsplit = arr . uncurry
                > -- arr (\op (x,y) -> x `op` y)

                (***) combines two arrows into a new arrow by running the two arrows on a pair of values (one arrow on the first item of the pair and one arrow on the second item of the pair).

                f *** g = first f >>> second g

                Block quote:

                foo bar

                pandoc-3.1.3/test/lhs-test.html0000644000000000000000000002017607346545000014571 0ustar0000000000000000 lhs-test

                lhs test

                unsplit is an arrow that takes a pair of values and combines them to return a single value:

                unsplit :: (Arrow a) => (b -> c -> d) -> a (b, c) d
                unsplit = arr . uncurry
                          -- arr (\op (x,y) -> x `op` y)

                (***) combines two arrows into a new arrow by running the two arrows on a pair of values (one arrow on the first item of the pair and one arrow on the second item of the pair).

                f *** g = first f >>> second g

                Block quote:

                foo bar

                pandoc-3.1.3/test/lhs-test.html+lhs0000644000000000000000000002031507346545000015346 0ustar0000000000000000 lhs-test

                lhs test

                unsplit is an arrow that takes a pair of values and combines them to return a single value:

                > unsplit :: (Arrow a) => (b -> c -> d) -> a (b, c) d
                > unsplit = arr . uncurry
                >           -- arr (\op (x,y) -> x `op` y)

                (***) combines two arrows into a new arrow by running the two arrows on a pair of values (one arrow on the first item of the pair and one arrow on the second item of the pair).

                f *** g = first f >>> second g

                Block quote:

                foo bar

                pandoc-3.1.3/test/lhs-test.latex0000644000000000000000000001171307346545000014737 0ustar0000000000000000% Options for packages loaded elsewhere \PassOptionsToPackage{unicode}{hyperref} \PassOptionsToPackage{hyphens}{url} % \documentclass[ ]{article} \usepackage{amsmath,amssymb} \usepackage{iftex} \ifPDFTeX \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{textcomp} % provide euro and other symbols \else % if luatex or xetex \usepackage{unicode-math} % this also loads fontspec \defaultfontfeatures{Scale=MatchLowercase} \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1} \fi \usepackage{lmodern} \ifPDFTeX\else % xetex/luatex font selection \fi % Use upquote if available, for straight quotes in verbatim environments \IfFileExists{upquote.sty}{\usepackage{upquote}}{} \IfFileExists{microtype.sty}{% use microtype if available \usepackage[]{microtype} \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts }{} \makeatletter \@ifundefined{KOMAClassName}{% if non-KOMA class \IfFileExists{parskip.sty}{% \usepackage{parskip} }{% else \setlength{\parindent}{0pt} \setlength{\parskip}{6pt plus 2pt minus 1pt}} }{% if KOMA class \KOMAoptions{parskip=half}} \makeatother \usepackage{xcolor} \usepackage{color} \usepackage{fancyvrb} \newcommand{\VerbBar}{|} \newcommand{\VERB}{\Verb[commandchars=\\\{\}]} \DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}} % Add ',fontsize=\small' for more characters per line \newenvironment{Shaded}{}{} \newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}} \newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}} \newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{#1}} \newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}} \newcommand{\BuiltInTok}[1]{\textcolor[rgb]{0.00,0.50,0.00}{#1}} \newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}} \newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{#1}}} \newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}} \newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{#1}} \newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}} \newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{#1}} \newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}} \newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{#1}}} \newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}} \newcommand{\ExtensionTok}[1]{#1} \newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}} \newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{#1}} \newcommand{\ImportTok}[1]{\textcolor[rgb]{0.00,0.50,0.00}{\textbf{#1}}} \newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}} \newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}} \newcommand{\NormalTok}[1]{#1} \newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{#1}} \newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{#1}} \newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{#1}} \newcommand{\RegionMarkerTok}[1]{#1} \newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}} \newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{#1}} \newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}} \newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{#1}} \newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}} \newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}} \setlength{\emergencystretch}{3em} % prevent overfull lines \providecommand{\tightlist}{% \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} \setcounter{secnumdepth}{-\maxdimen} % remove section numbering \ifLuaTeX \usepackage{selnolig} % disable illegal ligatures \fi \IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}} \IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available \urlstyle{same} \hypersetup{ hidelinks, pdfcreator={LaTeX via pandoc}} \author{} \date{} \begin{document} \hypertarget{lhs-test}{% \section{lhs test}\label{lhs-test}} \texttt{unsplit} is an arrow that takes a pair of values and combines them to return a single value: \begin{Shaded} \begin{Highlighting}[] \OtherTok{unsplit ::}\NormalTok{ (}\DataTypeTok{Arrow}\NormalTok{ a) }\OtherTok{=\textgreater{}}\NormalTok{ (b }\OtherTok{{-}\textgreater{}}\NormalTok{ c }\OtherTok{{-}\textgreater{}}\NormalTok{ d) }\OtherTok{{-}\textgreater{}}\NormalTok{ a (b, c) d} \NormalTok{unsplit }\OtherTok{=}\NormalTok{ arr }\OperatorTok{.} \FunctionTok{uncurry} \CommentTok{{-}{-} arr (\textbackslash{}op (x,y) {-}\textgreater{} x \textasciigrave{}op\textasciigrave{} y)} \end{Highlighting} \end{Shaded} \texttt{(***)} combines two arrows into a new arrow by running the two arrows on a pair of values (one arrow on the first item of the pair and one arrow on the second item of the pair). \begin{verbatim} f *** g = first f >>> second g \end{verbatim} Block quote: \begin{quote} foo bar \end{quote} \end{document} pandoc-3.1.3/test/lhs-test.latex+lhs0000644000000000000000000000474707346545000015532 0ustar0000000000000000% Options for packages loaded elsewhere \PassOptionsToPackage{unicode}{hyperref} \PassOptionsToPackage{hyphens}{url} % \documentclass[ ]{article} \usepackage{amsmath,amssymb} \usepackage{iftex} \ifPDFTeX \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{textcomp} % provide euro and other symbols \else % if luatex or xetex \usepackage{unicode-math} % this also loads fontspec \defaultfontfeatures{Scale=MatchLowercase} \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1} \fi \usepackage{lmodern} \ifPDFTeX\else % xetex/luatex font selection \fi % Use upquote if available, for straight quotes in verbatim environments \IfFileExists{upquote.sty}{\usepackage{upquote}}{} \IfFileExists{microtype.sty}{% use microtype if available \usepackage[]{microtype} \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts }{} \makeatletter \@ifundefined{KOMAClassName}{% if non-KOMA class \IfFileExists{parskip.sty}{% \usepackage{parskip} }{% else \setlength{\parindent}{0pt} \setlength{\parskip}{6pt plus 2pt minus 1pt}} }{% if KOMA class \KOMAoptions{parskip=half}} \makeatother \usepackage{xcolor} \usepackage{listings} \newcommand{\passthrough}[1]{#1} \lstset{defaultdialect=[5.3]Lua} \lstset{defaultdialect=[x86masm]Assembler} \lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{} \setlength{\emergencystretch}{3em} % prevent overfull lines \providecommand{\tightlist}{% \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} \setcounter{secnumdepth}{-\maxdimen} % remove section numbering \ifLuaTeX \usepackage{selnolig} % disable illegal ligatures \fi \IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}} \IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available \urlstyle{same} \hypersetup{ hidelinks, pdfcreator={LaTeX via pandoc}} \author{} \date{} \begin{document} \hypertarget{lhs-test}{% \section{lhs test}\label{lhs-test}} \texttt{unsplit} is an arrow that takes a pair of values and combines them to return a single value: \begin{code} unsplit :: (Arrow a) => (b -> c -> d) -> a (b, c) d unsplit = arr . uncurry -- arr (\op (x,y) -> x `op` y) \end{code} \texttt{(***)} combines two arrows into a new arrow by running the two arrows on a pair of values (one arrow on the first item of the pair and one arrow on the second item of the pair). \begin{verbatim} f *** g = first f >>> second g \end{verbatim} Block quote: \begin{quote} foo bar \end{quote} \end{document} pandoc-3.1.3/test/lhs-test.markdown0000644000000000000000000000076507346545000015451 0ustar0000000000000000lhs test ======== `unsplit` is an arrow that takes a pair of values and combines them to return a single value: ``` {.haskell .literate} unsplit :: (Arrow a) => (b -> c -> d) -> a (b, c) d unsplit = arr . uncurry -- arr (\op (x,y) -> x `op` y) ``` `(***)` combines two arrows into a new arrow by running the two arrows on a pair of values (one arrow on the first item of the pair and one arrow on the second item of the pair). f *** g = first f >>> second g Block quote: > foo bar pandoc-3.1.3/test/lhs-test.markdown+lhs0000644000000000000000000000073707346545000016232 0ustar0000000000000000lhs test ======== `unsplit` is an arrow that takes a pair of values and combines them to return a single value: > unsplit :: (Arrow a) => (b -> c -> d) -> a (b, c) d > unsplit = arr . uncurry > -- arr (\op (x,y) -> x `op` y) `(***)` combines two arrows into a new arrow by running the two arrows on a pair of values (one arrow on the first item of the pair and one arrow on the second item of the pair). f *** g = first f >>> second g Block quote: > foo bar pandoc-3.1.3/test/lhs-test.native0000644000000000000000000000403307346545000015105 0ustar0000000000000000[ Header 1 ( "lhs-test" , [] , [] ) [ Str "lhs" , Space , Str "test" ] , Para [ Code ( "" , [] , [] ) "unsplit" , Space , Str "is" , Space , Str "an" , Space , Str "arrow" , Space , Str "that" , Space , Str "takes" , Space , Str "a" , Space , Str "pair" , Space , Str "of" , Space , Str "values" , Space , Str "and" , Space , Str "combines" , Space , Str "them" , Space , Str "to" , SoftBreak , Str "return" , Space , Str "a" , Space , Str "single" , Space , Str "value:" ] , CodeBlock ( "" , [ "haskell" , "literate" ] , [] ) "unsplit :: (Arrow a) => (b -> c -> d) -> a (b, c) d\nunsplit = arr . uncurry\n -- arr (\\op (x,y) -> x `op` y)" , Para [ Code ( "" , [] , [] ) "(***)" , Space , Str "combines" , Space , Str "two" , Space , Str "arrows" , Space , Str "into" , Space , Str "a" , Space , Str "new" , Space , Str "arrow" , Space , Str "by" , Space , Str "running" , Space , Str "the" , Space , Str "two" , Space , Str "arrows" , Space , Str "on" , Space , Str "a" , SoftBreak , Str "pair" , Space , Str "of" , Space , Str "values" , Space , Str "(one" , Space , Str "arrow" , Space , Str "on" , Space , Str "the" , Space , Str "first" , Space , Str "item" , Space , Str "of" , Space , Str "the" , Space , Str "pair" , Space , Str "and" , Space , Str "one" , Space , Str "arrow" , Space , Str "on" , Space , Str "the" , SoftBreak , Str "second" , Space , Str "item" , Space , Str "of" , Space , Str "the" , Space , Str "pair)." ] , CodeBlock ( "" , [] , [] ) "f *** g = first f >>> second g" , Para [ Str "Block" , Space , Str "quote:" ] , BlockQuote [ Para [ Str "foo" , Space , Str "bar" ] ] ] pandoc-3.1.3/test/lhs-test.rst0000644000000000000000000000077407346545000014437 0ustar0000000000000000lhs test ======== ``unsplit`` is an arrow that takes a pair of values and combines them to return a single value: .. code:: haskell unsplit :: (Arrow a) => (b -> c -> d) -> a (b, c) d unsplit = arr . uncurry -- arr (\op (x,y) -> x `op` y) ``(***)`` combines two arrows into a new arrow by running the two arrows on a pair of values (one arrow on the first item of the pair and one arrow on the second item of the pair). :: f *** g = first f >>> second g Block quote: foo bar pandoc-3.1.3/test/lhs-test.rst+lhs0000644000000000000000000000074607346545000015220 0ustar0000000000000000lhs test ======== ``unsplit`` is an arrow that takes a pair of values and combines them to return a single value: > unsplit :: (Arrow a) => (b -> c -> d) -> a (b, c) d > unsplit = arr . uncurry > -- arr (\op (x,y) -> x `op` y) ``(***)`` combines two arrows into a new arrow by running the two arrows on a pair of values (one arrow on the first item of the pair and one arrow on the second item of the pair). :: f *** g = first f >>> second g Block quote: foo bar pandoc-3.1.3/test/man-reader.man0000644000000000000000000000624607346545000014652 0ustar0000000000000000.TH "Pandoc Man tests" "" "Oct 17, 2018" "" "" .PP This is a set of tests for pandoc. .PP * * * * * .SH Headers .SH Level 1 .SS Level 2 * * * * * .SH Paragraphs .PP Here's a regular paragraph. .PP Another paragraph In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard\-wrapped line in the middle of a paragraph looked like a list item. .PP There should be a hard line break .PD 0 .P .PD here. .PP * * * * * .SH Block Quotes Code in a block quote: .RS .nf \f[C] sub\ status\ { \ \ \ \ print\ "working"; } \f[] .fi .RE .PP A list: .IP "1." 3 item one .IP "2." 3 item two .PP .SH Code Blocks .PP Code: .IP .nf \f[C] \-\-\-\- (should be four hyphens) sub status { print "working"; } \f[] .fi .PP And: .IP .nf \f[C] \tthis code line is indented by one tab \f[] .fi .PP * * * * * .SH Lists .SS Unordered .PP Asterisks: .IP \[bu] 2 asterisk 1 .IP \[bu] 2 asterisk 2 .IP \[bu] 2 asterisk 3 .PP .SS Ordered .IP "1." 3 First .IP "2." 3 Second .IP "3." 3 Third .PP .SS Nested .IP \[bu] 2 Tab .RS 2 .IP \[bu] 2 Tab .RS 2 .IP \[bu] 2 Tab .RE .RE .PP Here's another: .IP "1." 3 First .IP "2." 3 Second: .RS 4 .IP \[bu] 2 Fee .IP \[bu] 2 Fie .IP \[bu] 2 Foe .RE .IP "3." 3 Third .PP Same thing: .IP "1." 3 First .IP "2." 3 Second: .RS 4 .IP \[bu] 2 Fee .IP \[bu] 2 Fie .IP \[bu] 2 Foe .RE .IP "3." 3 Third .SS different styles: .IP "A." 3 Upper Alpha .RS 4 .IP "I." 3 Upper Roman. .RS 4 .IP "(6)" 4 Decimal start with 6 .RS 4 .IP "c)" 3 Lower alpha with paren .RE .RE .RE .SS Ordered Definition lists .TP .B term1 definition 1 .RS .PP continued .RE .TP .B term2 definition 2 * * * * * .SH Special Characters AT&T has an ampersand in their name. .PP 4 < 5. .PP 6 > 5. .PP Backslash: \\ .PP Backtick: ` .PP Asterisk: * .PP Underscore: _ .PP Left brace: { .PP Right brace: } .PP Left bracket: [ .PP Right bracket: ] .PP Left paren: ( .PP Right paren: ) .PP Greater\-than: > .PP Hash: # .PP Period: . .PP Bang: ! .PP Plus: + .PP Minus: \- .PP .SH Links .PP .UR http://\:example.com some random site .UE . .PP .MT me@example.com my email address .ME . .SH Macros .de au .B Me Myself .. .de auth !! .I The author is \\$1. .!! .au and I. .auth "John Jones" .ds me The \f[B]Author\f[R] It's \*(me. .SH Tables .TS tab(@); r l c l. T{ Right T}@T{ Left T}@T{ Center T}@T{ Default T} _ T{ 12 T}@T{ 12 T}@T{ 12 T}@T{ 12 T} T{ 123 T}@T{ 123 T}@T{ 123 T}@T{ 123 T} T{ 1 T}@T{ 1 T}@T{ 1 T}@T{ 1 T} .TE .TS allbox tab(;); rlcl. T{ Right T};T{ Left T};T{ Center T};T{ Left \f[I]more\f[R] T} _ T{ 12 T};T{ 12 T};T{ 12 T};T{ 12 T} T{ 123 T};T{ 123 T};T{ 123 T};T{ 123 T} T{ 1 T};T{ 1 T};T{ 1 T};T{ 1 T} .TE .TS tab(@); cw(10.5n) lw(9.6n) rw(11.4n) lw(24.5n). T{ Centered Header T}@T{ Left Aligned T}@T{ Right Aligned T}@T{ Default aligned T} _ T{ First T}@T{ row T}@T{ 12.0 T}@T{ Example of a row that spans multiple lines. T} T{ Second T}@T{ row T}@T{ 5.0 T}@T{ Here\[cq]s another one. Note the blank line between rows. T} .TE .PP Table without column headers: .PP .TS tab(@); r l c r. T{ 12 T}@T{ 12 T}@T{ 12 T}@T{ 12 T} T{ 123 T}@T{ 123 T}@T{ 123 T}@T{ 123 T} T{ 1 T}@T{ 1 T}@T{ 1 T}@T{ 1 T} .TE .TS tab(@); rl. a@b T{ .PP one .PP two T}@T{ .nf some code .fi T} .TE pandoc-3.1.3/test/man-reader.native0000644000000000000000000006153307346545000015365 0ustar0000000000000000Pandoc Meta { unMeta = fromList [ ( "date" , MetaInlines [ Str "Oct" , Space , Str "17," , Space , Str "2018" ] ) , ( "section" , MetaInlines [] ) , ( "title" , MetaInlines [ Str "Pandoc" , Space , Str "Man" , Space , Str "tests" ] ) ] } [ Para [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "set" , Space , Str "of" , Space , Str "tests" , Space , Str "for" , Space , Str "pandoc." ] , Para [ Str "*" , Space , Str "*" , Space , Str "*" , Space , Str "*" , Space , Str "*" ] , Header 1 ( "" , [] , [] ) [ Str "Headers" ] , Header 1 ( "" , [] , [] ) [ Str "Level" , Space , Str "1" ] , Header 2 ( "" , [] , [] ) [ Str "Level" , Space , Str "2" ] , Para [ Str "*" , Space , Str "*" , Space , Str "*" , Space , Str "*" , Space , Str "*" ] , Header 1 ( "" , [] , [] ) [ Str "Paragraphs" ] , Para [ Str "Here's" , Space , Str "a" , Space , Str "regular" , Space , Str "paragraph." ] , Para [ Str "Another" , Space , Str "paragraph" , Space , Str "In" , Space , Str "Markdown" , Space , Str "1.0.0" , Space , Str "and" , Space , Str "earlier." , Space , Str "Version" , Space , Str "8." , Space , Str "This" , Space , Str "line" , Space , Str "turns" , Space , Str "into" , Space , Str "a" , Space , Str "list" , Space , Str "item." , Space , Str "Because" , Space , Str "a" , Space , Str "hard-wrapped" , Space , Str "line" , Space , Str "in" , Space , Str "the" , Space , Str "middle" , Space , Str "of" , Space , Str "a" , Space , Str "paragraph" , Space , Str "looked" , Space , Str "like" , Space , Str "a" , Space , Str "list" , Space , Str "item." ] , Para [ Str "There" , Space , Str "should" , Space , Str "be" , Space , Str "a" , Space , Str "hard" , Space , Str "line" , Space , Str "break" ] , Para [ Str "here." ] , Para [ Str "*" , Space , Str "*" , Space , Str "*" , Space , Str "*" , Space , Str "*" ] , Header 1 ( "" , [] , [] ) [ Str "Block" , Space , Str "Quotes" ] , Para [ Str "Code" , Space , Str "in" , Space , Str "a" , Space , Str "block" , Space , Str "quote:" ] , BlockQuote [ CodeBlock ( "" , [] , [] ) "sub status {\n print \"working\";\n}" ] , Para [ Str "A" , Space , Str "list:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Para [ Str "item" , Space , Str "one" ] ] , [ Para [ Str "item" , Space , Str "two" ] ] ] , Header 1 ( "" , [] , [] ) [ Str "Code" , Space , Str "Blocks" ] , Para [ Str "Code:" ] , CodeBlock ( "" , [] , [] ) "---- (should be four hyphens)\n\nsub status {\n print \"working\";\n}\n" , Para [ Str "And:" ] , CodeBlock ( "" , [] , [] ) "\tthis code line is indented by one tab" , Para [ Str "*" , Space , Str "*" , Space , Str "*" , Space , Str "*" , Space , Str "*" ] , Header 1 ( "" , [] , [] ) [ Str "Lists" ] , Header 2 ( "" , [] , [] ) [ Str "Unordered" ] , Para [ Str "Asterisks:" ] , BulletList [ [ Para [ Str "asterisk" , Space , Str "1" ] ] , [ Para [ Str "asterisk" , Space , Str "2" ] ] , [ Para [ Str "asterisk" , Space , Str "3" ] ] ] , Header 2 ( "" , [] , [] ) [ Str "Ordered" ] , OrderedList ( 1 , Decimal , Period ) [ [ Para [ Str "First" ] ] , [ Para [ Str "Second" ] ] , [ Para [ Str "Third" ] ] ] , Header 2 ( "" , [] , [] ) [ Str "Nested" ] , BulletList [ [ Para [ Str "Tab" ] , BulletList [ [ Para [ Str "Tab" ] , BulletList [ [ Para [ Str "Tab" ] ] ] ] ] ] ] , Para [ Str "Here's" , Space , Str "another:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Para [ Str "First" ] ] , [ Para [ Str "Second:" ] , BulletList [ [ Para [ Str "Fee" ] ] , [ Para [ Str "Fie" ] ] , [ Para [ Str "Foe" ] ] ] ] , [ Para [ Str "Third" ] ] ] , Para [ Str "Same" , Space , Str "thing:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Para [ Str "First" ] ] , [ Para [ Str "Second:" ] , BulletList [ [ Para [ Str "Fee" ] ] , [ Para [ Str "Fie" ] ] , [ Para [ Str "Foe" ] ] ] ] , [ Para [ Str "Third" ] ] ] , Header 2 ( "" , [] , [] ) [ Str "different" , Space , Str "styles:" ] , OrderedList ( 1 , UpperAlpha , Period ) [ [ Para [ Str "Upper" , Space , Str "Alpha" ] , OrderedList ( 1 , UpperRoman , Period ) [ [ Para [ Str "Upper" , Space , Str "Roman." ] , OrderedList ( 6 , Decimal , TwoParens ) [ [ Para [ Str "Decimal" , Space , Str "start" , Space , Str "with" , Space , Str "6" ] , OrderedList ( 3 , LowerAlpha , OneParen ) [ [ Para [ Str "Lower" , Space , Str "alpha" , Space , Str "with" , Space , Str "paren" ] ] ] ] ] ] ] ] ] , Header 2 ( "" , [] , [] ) [ Str "Ordered" ] , Para [ Str "Definition" , Space , Str "lists" ] , DefinitionList [ ( [ Strong [ Str "term1" ] ] , [ [ Para [ Str "definition" , Space , Str "1" ] , Para [ Str "continued" ] ] ] ) , ( [ Strong [ Str "term2" ] ] , [ [ Para [ Str "definition" , Space , Str "2" , Space , Str "*" , Space , Str "*" , Space , Str "*" , Space , Str "*" , Space , Str "*" ] ] ] ) ] , Header 1 ( "" , [] , [] ) [ Str "Special" , Space , Str "Characters" ] , Para [ Str "AT&T" , Space , Str "has" , Space , Str "an" , Space , Str "ampersand" , Space , Str "in" , Space , Str "their" , Space , Str "name." ] , Para [ Str "4" , Space , Str "<" , Space , Str "5." ] , Para [ Str "6" , Space , Str ">" , Space , Str "5." ] , Para [ Str "Backslash:" , Space , Str "\\" ] , Para [ Str "Backtick:" , Space , Str "`" ] , Para [ Str "Asterisk:" , Space , Str "*" ] , Para [ Str "Underscore:" , Space , Str "_" ] , Para [ Str "Left" , Space , Str "brace:" , Space , Str "{" ] , Para [ Str "Right" , Space , Str "brace:" , Space , Str "}" ] , Para [ Str "Left" , Space , Str "bracket:" , Space , Str "[" ] , Para [ Str "Right" , Space , Str "bracket:" , Space , Str "]" ] , Para [ Str "Left" , Space , Str "paren:" , Space , Str "(" ] , Para [ Str "Right" , Space , Str "paren:" , Space , Str ")" ] , Para [ Str "Greater-than:" , Space , Str ">" ] , Para [ Str "Hash:" , Space , Str "#" ] , Para [ Str "Period:" , Space , Str "." ] , Para [ Str "Bang:" , Space , Str "!" ] , Para [ Str "Plus:" , Space , Str "+" ] , Para [ Str "Minus:" , Space , Str "-" ] , Header 1 ( "" , [] , [] ) [ Str "Links" ] , Para [ Link ( "" , [] , [] ) [ Str "some" , Space , Str "randomsite" ] ( "http://example.com" , "" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "my" , Space , Str "email" , Space , Str "address" ] ( "mailto:me@example.com" , "" ) , Str "." ] , Header 1 ( "" , [] , [] ) [ Str "Macros" ] , Para [ Strong [ Str "Me" , Space , Str "Myself" ] , Space , Str "and" , Space , Str "I." , Space , Emph [ Str "The" , Space , Str "author" , Space , Str "is" , Space , Str "John" , Space , Str "Jones." ] , Space , Str "It's" , Space , Str "The" , Space , Strong [ Str "Author" ] , Str "." ] , Header 1 ( "" , [] , [] ) [ Str "Tables" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignRight , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Right" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Left" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Center" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Default" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignRight , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Right" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Left" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Center" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Left" , Space , Emph [ Str "more" ] ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignCenter , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignRight , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Centered" , Space , Str "Header" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Left" , Space , Str "Aligned" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Right" , Space , Str "Aligned" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Default" , Space , Str "aligned" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "First" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "row" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12.0" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Example" , Space , Str "of" , Space , Str "a" , Space , Str "row" , Space , Str "that" , Space , Str "spans" , Space , Str "multiple" , Space , Str "lines." ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Second" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "row" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5.0" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Here\8217s" , Space , Str "another" , Space , Str "one." , Space , Str "Note" , Space , Str "the" , Space , Str "blank" , Space , Str "line" , Space , Str "between" , Space , Str "rows." ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Table" , Space , Str "without" , Space , Str "column" , Space , Str "headers:" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignRight , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignRight , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignRight , ColWidth 0.5 ) , ( AlignLeft , ColWidth 0.5 ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "a" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "b" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "one" ] , Para [ Str "two" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ CodeBlock ( "" , [] , [] ) "some\n code" ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] pandoc-3.1.3/test/markdown-citations.native0000644000000000000000000003572307346545000017171 0ustar0000000000000000[ Header 1 ( "pandoc-with-citeproc-hs" , [] , [] ) [ Str "Pandoc" , Space , Str "with" , Space , Str "citeproc-hs" ] , BulletList [ [ Para [ Cite [ Citation { citationId = "nonexistent" , citationPrefix = [] , citationSuffix = [] , citationMode = NormalCitation , citationNoteNum = 1 , citationHash = 0 } ] [ Str "[@nonexistent]" ] ] ] , [ Para [ Cite [ Citation { citationId = "nonexistent" , citationPrefix = [] , citationSuffix = [] , citationMode = AuthorInText , citationNoteNum = 2 , citationHash = 0 } ] [ Str "@nonexistent" ] ] ] , [ Para [ Cite [ Citation { citationId = "item1" , citationPrefix = [] , citationSuffix = [] , citationMode = AuthorInText , citationNoteNum = 3 , citationHash = 0 } ] [ Str "@item1" ] , Space , Str "says" , Space , Str "blah." ] ] , [ Para [ Cite [ Citation { citationId = "item1" , citationPrefix = [] , citationSuffix = [ Str "p.\160\&30" ] , citationMode = AuthorInText , citationNoteNum = 4 , citationHash = 0 } ] [ Str "@item1" , Space , Str "[p." , Space , Str "30]" ] , Space , Str "says" , Space , Str "blah." ] ] , [ Para [ Cite [ Citation { citationId = "item1" , citationPrefix = [] , citationSuffix = [ Str "p.\160\&30," , Space , Str "with" , Space , Str "suffix" ] , citationMode = AuthorInText , citationNoteNum = 5 , citationHash = 0 } ] [ Str "@item1" , Space , Str "[p." , Space , Str "30," , Space , Str "with" , Space , Str "suffix]" ] , Space , Str "says" , Space , Str "blah." ] ] , [ Para [ Cite [ Citation { citationId = "item1" , citationPrefix = [] , citationSuffix = [] , citationMode = AuthorInText , citationNoteNum = 6 , citationHash = 0 } , Citation { citationId = "item2" , citationPrefix = [] , citationSuffix = [ Space , Str "p.\160\&30" ] , citationMode = SuppressAuthor , citationNoteNum = 6 , citationHash = 0 } , Citation { citationId = "\1087\1091\1085\1082\1090\&3" , citationPrefix = [ Str "see" , Space , Str "also" ] , citationSuffix = [] , citationMode = NormalCitation , citationNoteNum = 6 , citationHash = 0 } ] [ Str "@item1" , Space , Str "[-@item2" , Space , Str "p." , Space , Str "30;" , Space , Str "see" , Space , Str "also" , Space , Str "@\1087\1091\1085\1082\1090\&3]" ] , Space , Str "says" , Space , Str "blah." ] ] , [ Para [ Str "In" , Space , Str "a" , Space , Str "note." , Note [ Para [ Cite [ Citation { citationId = "\1087\1091\1085\1082\1090\&3" , citationPrefix = [] , citationSuffix = [ Str "p.\160\&12" ] , citationMode = AuthorInText , citationNoteNum = 7 , citationHash = 0 } ] [ Str "@\1087\1091\1085\1082\1090\&3" , Space , Str "[p." , Space , Str "12]" ] , Space , Str "and" , Space , Str "a" , Space , Str "citation" , Space , Str "without" , Space , Str "locators" , Space , Cite [ Citation { citationId = "\1087\1091\1085\1082\1090\&3" , citationPrefix = [] , citationSuffix = [] , citationMode = NormalCitation , citationNoteNum = 7 , citationHash = 0 } ] [ Str "[@\1087\1091\1085\1082\1090\&3]" ] , Str "." ] ] ] ] , [ Para [ Str "A" , Space , Str "citation" , Space , Str "group" , Space , Cite [ Citation { citationId = "item1" , citationPrefix = [ Str "see" ] , citationSuffix = [ Space , Str "chap.\160\&3" ] , citationMode = NormalCitation , citationNoteNum = 8 , citationHash = 0 } , Citation { citationId = "\1087\1091\1085\1082\1090\&3" , citationPrefix = [ Str "also" ] , citationSuffix = [ Space , Str "p.\160\&34-35" ] , citationMode = NormalCitation , citationNoteNum = 8 , citationHash = 0 } ] [ Str "[see" , Space , Str "@item1" , Space , Str "chap." , Space , Str "3;" , Space , Str "also" , Space , Str "@\1087\1091\1085\1082\1090\&3" , Space , Str "p." , Space , Str "34-35]" ] , Str "." ] ] , [ Para [ Str "Another" , Space , Str "one" , Space , Cite [ Citation { citationId = "item1" , citationPrefix = [ Str "see" ] , citationSuffix = [ Space , Str "p.\160\&34-35" ] , citationMode = NormalCitation , citationNoteNum = 9 , citationHash = 0 } ] [ Str "[see" , Space , Str "@item1" , Space , Str "p." , Space , Str "34-35]" ] , Str "." ] ] , [ Para [ Str "And" , Space , Str "another" , Space , Str "one" , Space , Str "in" , Space , Str "a" , Space , Str "note." , Note [ Para [ Str "Some" , Space , Str "citations" , Space , Cite [ Citation { citationId = "item1" , citationPrefix = [ Str "see" ] , citationSuffix = [ Space , Str "chap.\160\&3" ] , citationMode = NormalCitation , citationNoteNum = 10 , citationHash = 0 } , Citation { citationId = "\1087\1091\1085\1082\1090\&3" , citationPrefix = [] , citationSuffix = [] , citationMode = NormalCitation , citationNoteNum = 10 , citationHash = 0 } , Citation { citationId = "item2" , citationPrefix = [] , citationSuffix = [] , citationMode = NormalCitation , citationNoteNum = 10 , citationHash = 0 } ] [ Str "[see" , Space , Str "@item1" , Space , Str "chap." , Space , Str "3;" , Space , Str "@\1087\1091\1085\1082\1090\&3;" , Space , Str "@item2]" ] , Str "." ] ] ] ] , [ Para [ Str "Citation" , Space , Str "with" , Space , Str "a" , Space , Str "suffix" , Space , Str "and" , Space , Str "locator" , Space , Cite [ Citation { citationId = "item1" , citationPrefix = [] , citationSuffix = [ Space , Str "pp.\160\&33," , Space , Str "35-37," , Space , Str "and" , Space , Str "nowhere" , Space , Str "else" ] , citationMode = NormalCitation , citationNoteNum = 11 , citationHash = 0 } ] [ Str "[@item1" , Space , Str "pp." , Space , Str "33," , Space , Str "35-37," , Space , Str "and" , Space , Str "nowhere" , Space , Str "else]" ] , Str "." ] ] , [ Para [ Str "Citation" , Space , Str "with" , Space , Str "suffix" , Space , Str "only" , Space , Cite [ Citation { citationId = "item1" , citationPrefix = [] , citationSuffix = [ Space , Str "and" , Space , Str "nowhere" , Space , Str "else" ] , citationMode = NormalCitation , citationNoteNum = 12 , citationHash = 0 } ] [ Str "[@item1" , Space , Str "and" , Space , Str "nowhere" , Space , Str "else]" ] , Str "." ] ] , [ Para [ Str "Now" , Space , Str "some" , Space , Str "modifiers." , Note [ Para [ Str "Like" , Space , Str "a" , Space , Str "citation" , Space , Str "without" , Space , Str "author:" , Space , Cite [ Citation { citationId = "item1" , citationPrefix = [] , citationSuffix = [] , citationMode = SuppressAuthor , citationNoteNum = 13 , citationHash = 0 } ] [ Str "[-@item1]" ] , Str "," , Space , Str "and" , Space , Str "now" , Space , Str "Doe" , Space , Str "with" , Space , Str "a" , Space , Str "locator" , Space , Cite [ Citation { citationId = "item2" , citationPrefix = [] , citationSuffix = [ Space , Str "p.\160\&44" ] , citationMode = SuppressAuthor , citationNoteNum = 13 , citationHash = 0 } ] [ Str "[-@item2" , Space , Str "p." , Space , Str "44]" ] , Str "." ] ] ] ] , [ Para [ Str "With" , Space , Str "some" , Space , Str "markup" , Space , Cite [ Citation { citationId = "item1" , citationPrefix = [ Emph [ Str "see" ] ] , citationSuffix = [ Space , Str "p.\160" , Strong [ Str "32" ] ] , citationMode = NormalCitation , citationNoteNum = 14 , citationHash = 0 } ] [ Str "[*see*" , Space , Str "@item1" , Space , Str "p." , Space , Str "**32**]" ] , Str "." ] ] ] , Header 1 ( "references" , [] , [] ) [ Str "References" ] ] pandoc-3.1.3/test/markdown-citations.txt0000644000000000000000000000157207346545000016515 0ustar0000000000000000Pandoc with citeproc-hs ======================= - [@nonexistent] - @nonexistent - @item1 says blah. - @item1 [p. 30] says blah. - @item1 [p. 30, with suffix] says blah. - @item1 [-@item2 p. 30; see also @пункт3] says blah. - In a note.[^1] - A citation group [see @item1 chap. 3; also @пункт3 p. 34-35]. - Another one [see @item1 p. 34-35]. - And another one in a note.[^2] - Citation with a suffix and locator [@item1 pp. 33, 35-37, and nowhere else]. - Citation with suffix only [@item1 and nowhere else]. - Now some modifiers.[^3] - With some markup [*see* @item1 p. **32**]. References ========== [^1]: @пункт3 [p. 12] and a citation without locators [@пункт3]. [^2]: Some citations [see @item1 chap. 3; @пункт3; @item2]. [^3]: Like a citation without author: [-@item1], and now Doe with a locator [-@item2 p. 44]. pandoc-3.1.3/test/markdown-reader-more.native0000644000000000000000000012634307346545000017375 0ustar0000000000000000Pandoc Meta { unMeta = fromList [ ( "author" , MetaList [ MetaInlines [ Str "Author" , Space , Str "One" ] , MetaInlines [ Str "Author" , Space , Str "Two" ] , MetaInlines [ Str "Author" , Space , Str "Three" ] , MetaInlines [ Str "Author" , Space , Str "Four" ] ] ) , ( "title" , MetaInlines [ Str "Title" , SoftBreak , Str "spanning" , Space , Str "multiple" , Space , Str "lines" ] ) ] } [ Header 1 ( "additional-markdown-reader-tests" , [] , [] ) [ Str "Additional" , Space , Str "markdown" , Space , Str "reader" , Space , Str "tests" ] , Header 2 ( "blank-line-before-url-in-link-reference" , [] , [] ) [ Str "Blank" , Space , Str "line" , Space , Str "before" , Space , Str "URL" , Space , Str "in" , Space , Str "link" , Space , Str "reference" ] , Para [ Link ( "" , [] , [] ) [ Str "foo" ] ( "/url" , "" ) , Space , Str "and" , Space , Link ( "" , [] , [] ) [ Str "bar" ] ( "/url" , "title" ) ] , Header 2 ( "raw-context-environments" , [] , [] ) [ Str "Raw" , Space , Str "ConTeXt" , Space , Str "environments" ] , RawBlock (Format "tex") "\\placeformula \\startformula" , Para [ Str "L_{1}" , Space , Str "=" , Space , Str "L_{2}" , SoftBreak , RawInline (Format "tex") "\\stopformula" ] , RawBlock (Format "tex") "\\start[a2]\n\\start[a2]\n\\stop[a2]\n\\stop[a2]" , Header 2 ( "raw-latex-environments" , [] , [] ) [ Str "Raw" , Space , Str "LaTeX" , Space , Str "environments" ] , RawBlock (Format "tex") "\\begin{center}\n\\begin{tikzpicture}[baseline={([yshift=+-.5ex]current bounding box.center)}, level distance=24pt]\n\\Tree [.{S} [.NP John\\index{i} ] [.VP [.V likes ] [.NP himself\\index{i,*j} ]]]\n\\end{tikzpicture}\n\\end{center}" , Header 2 ( "urls-with-spaces-and-punctuation" , [] , [] ) [ Str "URLs" , Space , Str "with" , Space , Str "spaces" , Space , Str "and" , Space , Str "punctuation" ] , Para [ Link ( "" , [] , [] ) [ Str "foo" ] ( "/bar%20and%20baz" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "foo" ] ( "/bar%20and%20baz" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "foo" ] ( "/bar%20and%20baz" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "foo" ] ( "bar%20baz" , "title" ) ] , Para [ Link ( "" , [] , [] ) [ Str "baz" ] ( "/foo%20foo" , "" ) , Space , Link ( "" , [] , [] ) [ Str "bam" ] ( "/foo%20fee" , "" ) , Space , Link ( "" , [] , [] ) [ Str "bork" ] ( "/foo/zee%20zob" , "title" ) ] , Para [ Link ( "" , [] , [] ) [ Str "Ward\8217s" , Space , Str "method." ] ( "http://en.wikipedia.org/wiki/Ward's_method" , "" ) ] , Header 2 ( "horizontal-rules-with-spaces-at-end" , [] , [] ) [ Str "Horizontal" , Space , Str "rules" , Space , Str "with" , Space , Str "spaces" , Space , Str "at" , Space , Str "end" ] , HorizontalRule , HorizontalRule , Header 2 ( "raw-html-before-header" , [] , [] ) [ Str "Raw" , Space , Str "HTML" , Space , Str "before" , Space , Str "header" ] , Para [ RawInline (Format "html") "" , RawInline (Format "html") "" ] , Header 3 ( "my-header" , [] , [] ) [ Str "my" , Space , Str "header" ] , Header 2 ( "in-math" , [] , [] ) [ Str "$" , Space , Str "in" , Space , Str "math" ] , Para [ Math InlineMath "\\$2 + \\$3" ] , Para [ Math InlineMath "x = \\text{the $n$th root of $y$}" ] , Para [ Str "This" , Space , Str "should" , Space , Str "not" , Space , Str "be" , Space , Str "math:" ] , Para [ Str "$PATH" , Space , Str "90" , Space , Str "$PATH" ] , Header 2 ( "commented-out-list-item" , [] , [] ) [ Str "Commented-out" , Space , Str "list" , Space , Str "item" ] , BulletList [ [ Plain [ Str "one" , SoftBreak , RawInline (Format "html") "" ] ] , [ Plain [ Str "three" ] ] ] , Header 2 ( "indented-code-at-beginning-of-list" , [] , [] ) [ Str "Indented" , Space , Str "code" , Space , Str "at" , Space , Str "beginning" , Space , Str "of" , Space , Str "list" ] , BulletList [ [ CodeBlock ( "" , [] , [] ) "code\ncode" , OrderedList ( 1 , Decimal , Period ) [ [ CodeBlock ( "" , [] , [] ) "code\ncode" ] , [ CodeBlock ( "" , [] , [] ) "code\ncode" ] ] , BulletList [ [ CodeBlock ( "" , [] , [] ) "code\ncode" ] , [ Plain [ Str "no" , Space , Str "code" ] ] ] ] ] , Header 2 ( "backslash-newline" , [] , [] ) [ Str "Backslash" , Space , Str "newline" ] , Para [ Str "hi" , LineBreak , Str "there" ] , Header 2 ( "code-spans" , [] , [] ) [ Str "Code" , Space , Str "spans" ] , Para [ Code ( "" , [] , [] ) "hi\\" ] , Para [ Code ( "" , [] , [] ) "hi there" ] , Para [ Code ( "" , [] , [] ) "hi````there" ] , Para [ Str "`hi" ] , Para [ Str "there`" ] , Header 2 ( "multilingual-urls" , [] , [] ) [ Str "Multilingual" , Space , Str "URLs" ] , Para [ Link ( "" , [ "uri" ] , [] ) [ Str "http://\27979.com?\27979=\27979" ] ( "http://\27979.com?\27979=\27979" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "foo" ] ( "/bar/\27979?x=\27979" , "title" ) ] , Para [ Link ( "" , [ "email" ] , [] ) [ Str "\27979@foo.\27979.baz" ] ( "mailto:\27979@foo.\27979.baz" , "" ) ] , Header 2 ( "numbered-examples" , [] , [] ) [ Str "Numbered" , Space , Str "examples" ] , OrderedList ( 1 , Example , TwoParens ) [ [ Plain [ Str "First" , Space , Str "example." ] ] , [ Plain [ Str "Second" , Space , Str "example." ] ] ] , Para [ Str "Explanation" , Space , Str "of" , Space , Str "examples" , Space , Str "(2)" , Space , Str "and" , Space , Str "(3)." ] , OrderedList ( 3 , Example , TwoParens ) [ [ Plain [ Str "Third" , Space , Str "example." ] ] ] , Header 2 ( "macros" , [] , [] ) [ Str "Macros" ] , RawBlock (Format "tex") "\\newcommand{\\tuple}[1]{\\langle #1 \\rangle}" , Para [ Math InlineMath "\\langle x,y \\rangle" ] , Header 2 ( "case-insensitive-references" , [] , [] ) [ Str "Case-insensitive" , Space , Str "references" ] , Para [ Link ( "" , [] , [] ) [ Str "Fum" ] ( "/fum" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "FUM" ] ( "/fum" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "bat" ] ( "/bat" , "" ) ] , Header 2 ( "curly-smart-quotes" , [] , [] ) [ Str "Curly" , Space , Str "smart" , Space , Str "quotes" ] , Para [ Quoted DoubleQuote [ Str "Hi" ] ] , Para [ Quoted SingleQuote [ Str "Hi" ] ] , Header 2 ( "consecutive-lists" , [] , [] ) [ Str "Consecutive" , Space , Str "lists" ] , BulletList [ [ Plain [ Str "one" ] ] , [ Plain [ Str "two" ] ] ] , OrderedList ( 1 , Decimal , Period ) [ [ Plain [ Str "one" ] ] , [ Plain [ Str "two" ] ] ] , OrderedList ( 1 , LowerAlpha , Period ) [ [ Plain [ Str "one" ] ] , [ Plain [ Str "two" ] ] ] , Header 2 ( "implicit-header-references" , [] , [] ) [ Str "Implicit" , Space , Str "header" , Space , Str "references" ] , Header 3 ( "my-header-1" , [] , [] ) [ Str "My" , Space , Str "header" ] , Header 3 ( "my-other-header" , [] , [] ) [ Str "My" , Space , Str "other" , Space , Str "header" ] , Para [ Str "A" , Space , Str "link" , Space , Str "to" , Space , Link ( "" , [] , [] ) [ Str "My" , Space , Str "header" ] ( "#my-header" , "" ) , Str "." ] , Para [ Str "Another" , Space , Str "link" , Space , Str "to" , Space , Link ( "" , [] , [] ) [ Str "it" ] ( "#my-header" , "" ) , Str "." ] , Para [ Str "Should" , Space , Str "be" , Space , Link ( "" , [] , [] ) [ Str "case" , Space , Str "insensitive" ] ( "#my-header" , "" ) , Str "." ] , Para [ Str "Link" , Space , Str "to" , Space , Link ( "" , [] , [] ) [ Str "Explicit" , Space , Str "header" , Space , Str "attributes" ] ( "#foobar" , "" ) , Str "." ] , Para [ Str "But" , Space , Str "this" , Space , Str "is" , Space , Str "not" , Space , Str "a" , Space , Str "link" , Space , Str "to" , Space , Link ( "" , [] , [] ) [ Str "My" , Space , Str "other" , Space , Str "header" ] ( "/foo" , "" ) , Str "," , Space , Str "since" , Space , Str "the" , Space , Str "reference" , Space , Str "is" , Space , Str "defined." ] , Header 2 ( "foobar" , [ "baz" ] , [ ( "key" , "val" ) ] ) [ Str "Explicit" , Space , Str "header" , Space , Str "attributes" ] , BlockQuote [ Header 2 ( "foobar" , [ "baz" ] , [ ( "key" , "val" ) ] ) [ Str "Header" , Space , Str "attributes" , Space , Str "inside" , Space , Str "block" , Space , Str "quote" ] ] , Header 2 ( "line-blocks" , [] , [] ) [ Str "Line" , Space , Str "blocks" ] , LineBlock [ [ Str "But" , Space , Str "can" , Space , Str "a" , Space , Str "bee" , Space , Str "be" , Space , Str "said" , Space , Str "to" , Space , Str "be" ] , [ Str "\160\160\160\160or" , Space , Str "not" , Space , Str "to" , Space , Str "be" , Space , Str "an" , Space , Str "entire" , Space , Str "bee," ] , [ Str "\160\160\160\160\160\160\160\160when" , Space , Str "half" , Space , Str "the" , Space , Str "bee" , Space , Str "is" , Space , Str "not" , Space , Str "a" , Space , Str "bee," ] , [ Str "\160\160\160\160\160\160\160\160\160\160\160\160due" , Space , Str "to" , Space , Str "some" , Space , Str "ancient" , Space , Str "injury?" ] , [] , [ Str "Continuation" , Space , Str "line" ] , [ Str "\160\160and" , Space , Str "another" ] ] , Header 2 ( "grid-tables" , [] , [] ) [ Str "Grid" , Space , Str "Tables" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidth 0.2638888888888889 ) , ( AlignDefault , ColWidth 0.16666666666666666 ) , ( AlignDefault , ColWidth 0.18055555555555555 ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "col" , Space , Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "col" , Space , Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "col" , Space , Str "3" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "r1" , Space , Str "a" , SoftBreak , Str "r1" , Space , Str "bis" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "b" , SoftBreak , Str "b" , Space , Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "c" , SoftBreak , Str "c" , Space , Str "2" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "r2" , Space , Str "d" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "e" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "f" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Headless" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidth 0.2638888888888889 ) , ( AlignDefault , ColWidth 0.16666666666666666 ) , ( AlignDefault , ColWidth 0.18055555555555555 ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "r1" , Space , Str "a" , SoftBreak , Str "r1" , Space , Str "bis" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "b" , SoftBreak , Str "b" , Space , Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "c" , SoftBreak , Str "c" , Space , Str "2" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "r2" , Space , Str "d" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "e" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "f" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "With" , Space , Str "alignments" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignRight , ColWidth 0.2638888888888889 ) , ( AlignLeft , ColWidth 0.16666666666666666 ) , ( AlignCenter , ColWidth 0.18055555555555555 ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "col" , Space , Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "col" , Space , Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "col" , Space , Str "3" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "r1" , Space , Str "a" , SoftBreak , Str "r1" , Space , Str "bis" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "b" , SoftBreak , Str "b" , Space , Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "c" , SoftBreak , Str "c" , Space , Str "2" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "r2" , Space , Str "d" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "e" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "f" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Headless" , Space , Str "with" , Space , Str "alignments" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignRight , ColWidth 0.2638888888888889 ) , ( AlignLeft , ColWidth 0.16666666666666666 ) , ( AlignCenter , ColWidth 0.18055555555555555 ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "r1" , Space , Str "a" , SoftBreak , Str "r1" , Space , Str "bis" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "b" , SoftBreak , Str "b" , Space , Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "c" , SoftBreak , Str "c" , Space , Str "2" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "r2" , Space , Str "d" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "e" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "f" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Spaces" , Space , Str "at" , Space , Str "ends" , Space , Str "of" , Space , Str "lines" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidth 0.2638888888888889 ) , ( AlignDefault , ColWidth 0.16666666666666666 ) , ( AlignDefault , ColWidth 0.18055555555555555 ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "r1" , Space , Str "a" , SoftBreak , Str "r1" , Space , Str "bis" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "b" , SoftBreak , Str "b" , Space , Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "c" , SoftBreak , Str "c" , Space , Str "2" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "r2" , Space , Str "d" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "e" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "f" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Multiple" , Space , Str "blocks" , Space , Str "in" , Space , Str "a" , Space , Str "cell" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidth 0.2638888888888889 ) , ( AlignDefault , ColWidth 0.16666666666666666 ) , ( AlignDefault , ColWidth 0.18055555555555555 ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Header 1 ( "col-1" , [] , [] ) [ Str "col" , Space , Str "1" ] , Para [ Str "col" , Space , Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Header 1 ( "col-2" , [] , [] ) [ Str "col" , Space , Str "2" ] , Para [ Str "col" , Space , Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Header 1 ( "col-3" , [] , [] ) [ Str "col" , Space , Str "3" ] , Para [ Str "col" , Space , Str "3" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "r1" , Space , Str "a" ] , Para [ Str "r1" , Space , Str "bis" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ BulletList [ [ Plain [ Str "b" ] ] , [ Plain [ Str "b" , Space , Str "2" ] ] , [ Plain [ Str "b" , Space , Str "2" ] ] ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "c" , SoftBreak , Str "c" , Space , Str "2" , SoftBreak , Str "c" , Space , Str "2" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "East" , Space , Str "Asian" , Space , Str "characters" , Space , Str "have" , Space , Str "double" , Space , Str "width" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidth 4.1666666666666664e-2 ) , ( AlignDefault , ColWidth 6.944444444444445e-2 ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "\39770" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "fish" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Zero-width" , Space , Str "space" , Space , Str "in" , Space , Str "German" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidth 0.1111111111111111 ) , ( AlignDefault , ColWidth 0.1111111111111111 ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "German" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "English" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Auf\8204lage" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "edition" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Zero-width" , Space , Str "non-joiner" , Space , Str "in" , Space , Str "Persian" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidth 0.1111111111111111 ) , ( AlignDefault , ColWidth 0.1388888888888889 ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "\1605\1740\8204\1582\1608\1575\1607\1605" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "I" , Space , Str "want" , Space , Str "to" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Empty" , Space , Str "cells" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidth 5.555555555555555e-2 ) , ( AlignDefault , ColWidth 5.555555555555555e-2 ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Table" , Space , Str "with" , Space , Str "cells" , Space , Str "spanning" , Space , Str "multiple" , Space , Str "rows" , Space , Str "or" , Space , Str "columns:" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidth 0.19444444444444445 ) , ( AlignDefault , ColWidth 0.1111111111111111 ) , ( AlignDefault , ColWidth 0.1527777777777778 ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 2) [ Plain [ Str "Property" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Earth" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 3) (ColSpan 1) [ Plain [ Str "Temperature" , SoftBreak , Str "1961-1990" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "min" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "-89.2" , Space , Str "\176C" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "mean" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "14" , Space , Str "\176C" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "min" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "56.7" , Space , Str "\176C" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Table" , Space , Str "with" , Space , Str "complex" , Space , Str "header:" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidth 0.3055555555555556 ) , ( AlignDefault , ColWidth 0.1111111111111111 ) , ( AlignDefault , ColWidth 0.1111111111111111 ) , ( AlignDefault , ColWidth 0.1111111111111111 ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 2) (ColSpan 1) [ Plain [ Str "Location" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 3) [ Plain [ Str "Temperature" , Space , Str "1961-1990" , SoftBreak , Str "in" , Space , Str "degree" , Space , Str "Celsius" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "min" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "mean" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "max" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Antarctica" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "-89.2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "N/A" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "19.8" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Earth" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "-89.2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "14" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "56.7" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Header 2 ( "entities-in-links-and-titles" , [] , [] ) [ Str "Entities" , Space , Str "in" , Space , Str "links" , Space , Str "and" , Space , Str "titles" ] , Para [ Link ( "" , [] , [] ) [ Str "link" ] ( "/\252rl" , "\246\246!" ) ] , Para [ Link ( "" , [ "uri" ] , [] ) [ Str "http://g\246\246gle.com" ] ( "http://g\246\246gle.com" , "" ) ] , Para [ Link ( "" , [ "email" ] , [] ) [ Str "me@ex\228mple.com" ] ( "mailto:me@ex\228mple.com" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "foobar" ] ( "/\252rl" , "\246\246!" ) ] , Header 2 ( "parentheses-in-urls" , [] , [] ) [ Str "Parentheses" , Space , Str "in" , Space , Str "URLs" ] , Para [ Link ( "" , [] , [] ) [ Str "link" ] ( "/hi(there)" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "link" ] ( "/hithere)" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "linky" ] ( "hi_(there_(nested))" , "" ) ] , Header 2 ( "backslashes-in-link-references" , [] , [] ) [ Str "Backslashes" , Space , Str "in" , Space , Str "link" , Space , Str "references" ] , Para [ Link ( "" , [] , [] ) [ Str "*" , RawInline (Format "tex") "\\a" ] ( "b" , "" ) ] , Header 2 ( "reference-link-fallbacks" , [] , [] ) [ Str "Reference" , Space , Str "link" , Space , Str "fallbacks" ] , Para [ Str "[" , Emph [ Str "not" , Space , Str "a" , Space , Str "link" ] , Str "]" , Space , Str "[" , Emph [ Str "nope" ] , Str "]\8230" ] , Header 2 ( "reference-link-followed-by-a-citation" , [] , [] ) [ Str "Reference" , Space , Str "link" , Space , Str "followed" , Space , Str "by" , Space , Str "a" , Space , Str "citation" ] , Para [ Str "MapReduce" , Space , Str "is" , Space , Str "a" , Space , Str "paradigm" , Space , Str "popularized" , Space , Str "by" , Space , Link ( "" , [] , [] ) [ Str "Google" ] ( "http://google.com" , "" ) , Space , Cite [ Citation { citationId = "mapreduce" , citationPrefix = [] , citationSuffix = [] , citationMode = NormalCitation , citationNoteNum = 2 , citationHash = 0 } ] [ Str "[@mapreduce]" ] , Space , Str "as" , Space , Str "its" , SoftBreak , Str "most" , Space , Str "vocal" , Space , Str "proponent." ] , Header 2 ( "empty-reference-links" , [] , [] ) [ Str "Empty" , Space , Str "reference" , Space , Str "links" ] , Para [ Str "bar" ] , Para [ Link ( "" , [] , [] ) [ Str "foo2" ] ( "" , "" ) ] , Header 2 ( "wrapping-shouldnt-introduce-new-list-items" , [] , [] ) [ Str "Wrapping" , Space , Str "shouldn\8217t" , Space , Str "introduce" , Space , Str "new" , Space , Str "list" , Space , Str "items" ] , BulletList [ [ Plain [ Str "blah" , Space , Str "blah" , Space , Str "blah" , Space , Str "blah" , Space , Str "blah" , Space , Str "blah" , Space , Str "blah" , Space , Str "blah" , Space , Str "blah" , Space , Str "blah" , Space , Str "blah" , Space , Str "blah" , Space , Str "blah" , Space , Str "blah" , Space , Str "2015." ] ] ] , Header 2 ( "bracketed-spans" , [] , [] ) [ Str "Bracketed" , Space , Str "spans" ] , Para [ Span ( "id" , [ "class" ] , [ ( "key" , "val" ) ] ) [ Emph [ Str "foo" ] , Space , Str "bar" , Space , Str "baz" , Space , Link ( "" , [] , [] ) [ Str "link" ] ( "url" , "" ) ] ] ] pandoc-3.1.3/test/markdown-reader-more.txt0000644000000000000000000001477707346545000016735 0ustar0000000000000000% Title spanning multiple lines % Author One Author Two; Author Three; Author Four # Additional markdown reader tests ## Blank line before URL in link reference [foo] and [bar] [foo]: /url [bar]: /url "title" ## Raw ConTeXt environments \placeformula \startformula L_{1} = L_{2} \stopformula \start[a2] \start[a2] \stop[a2] \stop[a2] ## Raw LaTeX environments \begin{center} \begin{tikzpicture}[baseline={([yshift=+-.5ex]current bounding box.center)}, level distance=24pt] \Tree [.{S} [.NP John\index{i} ] [.VP [.V likes ] [.NP himself\index{i,*j} ]]] \end{tikzpicture} \end{center} ## URLs with spaces and punctuation [foo](/bar and baz) [foo](/bar and baz ) [foo]( /bar and baz ) [foo](bar baz "title" ) [baz][] [bam][] [bork][] [baz]: /foo foo [bam]: /foo fee [bork]: /foo/zee zob (title) [Ward's method.](http://en.wikipedia.org/wiki/Ward's_method) ## Horizontal rules with spaces at end * * * * * -- - -- -- - ## Raw HTML before header ### my header ## $ in math $\$2 + \$3$ $x = \text{the $n$th root of $y$}$ This should not be math: $PATH 90 $PATH ## Commented-out list item - one - three ## Indented code at beginning of list - code code 1. code code 12345678. code code - code code - no code ## Backslash newline hi\ there ## Code spans `hi\` `hi there` `` hi````there `` `hi there` ## Multilingual URLs [foo](/bar/测?x=测 "title") <测@foo.测.baz> ## Numbered examples (@) First example. (@foo) Second example. Explanation of examples (@foo) and (@bar). (@bar) Third example. ## Macros \newcommand{\tuple}[1]{\langle #1 \rangle} $\tuple{x,y}$ ## Case-insensitive references [Fum] [FUM] [bat] [fum]: /fum [BAT]: /bat ## Curly smart quotes “Hi” ‘Hi’ ## Consecutive lists - one - two 1. one 2. two a. one b. two ## Implicit header references ### My header ### My other header A link to [My header]. Another link to [it][My header]. Should be [case insensitive][my header]. Link to [Explicit header attributes]. [my other header]: /foo But this is not a link to [My other header], since the reference is defined. ## Explicit header attributes {#foobar .baz key="val"} > ## Header attributes inside block quote {#foobar .baz key="val"} ## Line blocks | But can a bee be said to be | or not to be an entire bee, | when half the bee is not a bee, | due to some ancient injury? | | Continuation line | and another ## Grid Tables +------------------+-----------+------------+ | col 1 | col 2 | col 3 | +==================+===========+============+ | r1 a | b | c | | r1 bis | b 2 | c 2 | +------------------+-----------+------------+ | r2 d | e | f | +------------------+-----------+------------+ Headless +------------------+-----------+------------+ | r1 a | b | c | | r1 bis | b 2 | c 2 | +------------------+-----------+------------+ | r2 d | e | f | +------------------+-----------+------------+ With alignments +------------------+-----------+------------+ | col 1 | col 2 | col 3 | +=================:+:==========+:==========:+ | r1 a | b | c | | r1 bis | b 2 | c 2 | +------------------+-----------+------------+ | r2 d | e | f | +------------------+-----------+------------+ Headless with alignments +-----------------:+:----------+:----------:+ | r1 a | b | c | | r1 bis | b 2 | c 2 | +------------------+-----------+------------+ | r2 d | e | f | +------------------+-----------+------------+ Spaces at ends of lines +------------------+-----------+------------+ | r1 a | b | c | | r1 bis | b 2 | c 2 | +------------------+-----------+------------+ | r2 d | e | f | +------------------+-----------+------------+ Multiple blocks in a cell +------------------+-----------+------------+ | # col 1 | # col 2 | # col 3 | | col 1 | col 2 | col 3 | +------------------+-----------+------------+ | r1 a | - b | c | | | - b 2 | c 2 | | r1 bis | - b 2 | c 2 | +------------------+-----------+------------+ East Asian characters have double width +--+----+ |魚|fish| +--+----+ Zero-width space in German +-------+-------+ |German |English| +-------+-------+ |Auf‌lage|edition| +-------+-------+ Zero-width non-joiner in Persian +-------+---------+ |می‌خواهم|I want to| +-------+---------+ Empty cells +---+---+ | | | +---+---+ Table with cells spanning multiple rows or columns: +---------------------+----------+ | Property | Earth | +=============+=======+==========+ | | min | -89.2 °C | | Temperature +-------+----------+ | 1961-1990 | mean | 14 °C | | +-------+----------+ | | min | 56.7 °C | +-------------+-------+----------+ Table with complex header: +---------------------+-----------------------+ | Location | Temperature 1961-1990 | | | in degree Celsius | | +-------+-------+-------+ | | min | mean | max | +=====================+=======+=======+=======+ | Antarctica | -89.2 | N/A | 19.8 | +---------------------+-------+-------+-------+ | Earth | -89.2 | 14 | 56.7 | +---------------------+-------+-------+-------+ ## Entities in links and titles [link](/ürl "öö!") [foobar] [foobar]: /ürl "öö!" ## Parentheses in URLs [link](/hi(there)) [link](/hithere\)) [linky] [linky]: hi_(there_(nested)) ## Backslashes in link references [\*\a](b) ## Reference link fallbacks [*not a link*] [*nope*]... ## Reference link followed by a citation MapReduce is a paradigm popularized by [Google] [@mapreduce] as its most vocal proponent. [Google]: http://google.com ## Empty reference links [foo2]: bar [foo2] ## Wrapping shouldn't introduce new list items - blah blah blah blah blah blah blah blah blah blah blah blah blah blah 2015. ## Bracketed spans [*foo* bar baz [link](url)]{.class #id key=val} pandoc-3.1.3/test/media/0000755000000000000000000000000007346545000013211 5ustar0000000000000000pandoc-3.1.3/test/media/rId25.jpg0000644000000000000000000000246407346545000014606 0ustar0000000000000000JFIFxxC   %# , #&')*)-0-(0%()(C   (((((((((((((((((((((((((((((((((((((((((((((((((((221!1Q"Aaq#$23Bb ?"Ku-}_:\{ i˧\ z%0Z|E Ei%T!ϠeI=: ÕHlWҳgh2O /1 qeHxvN joHEd|fI!brq1JeôJUU="Dj#lM;9_5 񬁹0>PI$:h>RB>X) ]?xSGب姥yuQr'Tv#mqU[_ZlWS0Ɍ:ǹA:s;H }|U<0SMDnLf :qM1UTZNX$Ùi]cGZFQjUPߣvMAYyM憵bIOd W.*j^2hj-= s6CU pq\(mI4a"DN9zÂf"hpe#;Ol~A~PY C?TAu~'l59m4N{~)knz󂭎$L.dPH79` ;jOv!D;>gml Z:b3v''>[mdC򖞦hxFf lzc;$W}6nƉu 0ƨnIm'ԤyH*('adeKU+*Ȋ ԖI;gu` =ƨ,74  (~f8ז d:7:*N1\i[ )Tq=S2q s]kp٘+\'7OsA))ir_p! 92TET,r$AVtXnB$:"z ~O}pandoc-3.1.3/test/media/rId26.jpg0000644000000000000000000000246407346545000014607 0ustar0000000000000000JFIFxxC   %# , #&')*)-0-(0%()(C   (((((((((((((((((((((((((((((((((((((((((((((((((((221!1Q"Aaq#$23Bb ?"Ku-}_:\{ i˧\ z%0Z|E Ei%T!ϠeI=: ÕHlWҳgh2O /1 qeHxvN joHEd|fI!brq1JeôJUU="Dj#lM;9_5 񬁹0>PI$:h>RB>X) ]?xSGب姥yuQr'Tv#mqU[_ZlWS0Ɍ:ǹA:s;H }|U<0SMDnLf :qM1UTZNX$Ùi]cGZFQjUPߣvMAYyM憵bIOd W.*j^2hj-= s6CU pq\(mI4a"DN9zÂf"hpe#;Ol~A~PY C?TAu~'l59m4N{~)knz󂭎$L.dPH79` ;jOv!D;>gml Z:b3v''>[mdC򖞦hxFf lzc;$W}6nƉu 0ƨnIm'ԤyH*('adeKU+*Ȋ ԖI;gu` =ƨ,74  (~f8ז d:7:*N1\i[ )Tq=S2q s]kp٘+\'7OsA))ir_p! 92TET,r$AVtXnB$:"z ~O}pandoc-3.1.3/test/media/rId27.jpg0000644000000000000000000000246407346545000014610 0ustar0000000000000000JFIFxxC   %# , #&')*)-0-(0%()(C   (((((((((((((((((((((((((((((((((((((((((((((((((((221!1Q"Aaq#$23Bb ?"Ku-}_:\{ i˧\ z%0Z|E Ei%T!ϠeI=: ÕHlWҳgh2O /1 qeHxvN joHEd|fI!brq1JeôJUU="Dj#lM;9_5 񬁹0>PI$:h>RB>X) ]?xSGب姥yuQr'Tv#mqU[_ZlWS0Ɍ:ǹA:s;H }|U<0SMDnLf :qM1UTZNX$Ùi]cGZFQjUPߣvMAYyM憵bIOd W.*j^2hj-= s6CU pq\(mI4a"DN9zÂf"hpe#;Ol~A~PY C?TAu~'l59m4N{~)knz󂭎$L.dPH79` ;jOv!D;>gml Z:b3v''>[mdC򖞦hxFf lzc;$W}6nƉu 0ƨnIm'ԤyH*('adeKU+*Ȋ ԖI;gu` =ƨ,74  (~f8ז d:7:*N1\i[ )Tq=S2q s]kp٘+\'7OsA))ir_p! 92TET,r$AVtXnB$:"z ~O}pandoc-3.1.3/test/mediawiki-reader.native0000644000000000000000000011233607346545000016553 0ustar0000000000000000Pandoc Meta { unMeta = fromList [] } [ Header 1 ( "header" , [] , [] ) [ Str "header" ] , Header 2 ( "header_level_two" , [] , [] ) [ Str "header" , Space , Str "level" , Space , Str "two" ] , Header 3 ( "header_level_3" , [] , [] ) [ Str "header" , Space , Str "level" , Space , Str "3" ] , Header 4 ( "header_level_four" , [] , [] ) [ Str "header" , Space , Emph [ Str "level" ] , Space , Str "four" ] , Header 5 ( "header_level_5" , [] , [] ) [ Str "header" , Space , Str "level" , Space , Str "5" ] , Header 6 ( "header_level_6" , [] , [] ) [ Str "header" , Space , Str "level" , Space , Str "6" ] , Para [ Str "=======" , Space , Str "not" , Space , Str "a" , Space , Str "header" , Space , Str "========" ] , Para [ Code ( "" , [] , [] ) "==\160not\160a\160header\160==" ] , Header 2 ( "emph_and_strong" , [] , [] ) [ Str "emph" , Space , Str "and" , Space , Str "strong" ] , Para [ Emph [ Str "emph" ] , Space , Strong [ Str "strong" ] ] , Para [ Strong [ Emph [ Str "strong" , Space , Str "and" , Space , Str "emph" ] ] ] , Para [ Strong [ Emph [ Str "emph" , Space , Str "inside" ] , Space , Str "strong" ] ] , Para [ Strong [ Str "strong" , Space , Str "with" , Space , Emph [ Str "emph" ] ] ] , Para [ Emph [ Strong [ Str "strong" , Space , Str "inside" ] , Space , Str "emph" ] ] , Header 2 ( "horizontal_rule" , [] , [] ) [ Str "horizontal" , Space , Str "rule" ] , Para [ Str "top" ] , HorizontalRule , Para [ Str "bottom" ] , HorizontalRule , Header 2 ( "nowiki" , [] , [] ) [ Str "nowiki" ] , Para [ Str "''not" , Space , Str "emph''" ] , Header 2 ( "strikeout" , [] , [] ) [ Str "strikeout" ] , Para [ Strikeout [ Str "This" , Space , Str "is" , Space , Emph [ Str "struck" , Space , Str "out" ] ] ] , Header 2 ( "entities" , [] , [] ) [ Str "entities" ] , Para [ Str "hi" , Space , Str "&" , Space , Str "low" ] , Para [ Str "hi" , Space , Str "&" , Space , Str "low" ] , Para [ Str "G\246del" ] , Para [ Str "\777\2730" ] , Header 2 ( "comments" , [] , [] ) [ Str "comments" ] , Para [ Str "inline" , Space , Str "comment" ] , Para [ Str "between" , Space , Str "blocks" ] , Header 2 ( "linebreaks" , [] , [] ) [ Str "linebreaks" ] , Para [ Str "hi" , LineBreak , Str "there" ] , Para [ Str "hi" , LineBreak , Str "there" ] , Header 2 ( "indents" , [] , [] ) [ Str ":" , Space , Str "indents" ] , Para [ Str "hi" ] , DefinitionList [ ( [] , [ [ Plain [ Str "there" ] ] ] ) ] , Para [ Str "bud" ] , Para [ Str "hi" ] , DefinitionList [ ( [] , [ [ DefinitionList [ ( [] , [ [ Plain [ Str "there" ] ] ] ) ] ] ] ) ] , Para [ Str "bud" ] , Header 2 ( "p_tags" , [] , [] ) [ Str "p" , Space , Str "tags" ] , Para [ Str "hi" , Space , Str "there" ] , Para [ Str "bud" ] , Para [ Str "another" ] , Header 2 ( "raw_html" , [] , [] ) [ Str "raw" , Space , Str "html" ] , Para [ Str "hi" , Space , RawInline (Format "html") "" , Emph [ Str "there" ] , RawInline (Format "html") "" , Str "." ] , Para [ RawInline (Format "html") "" , Str "inserted" , RawInline (Format "html") "" ] , RawBlock (Format "html") "
                " , Para [ Str "hi" , Space , Emph [ Str "there" ] ] , RawBlock (Format "html") "
                " , Header 2 ( "sup_sub_del" , [] , [] ) [ Str "sup," , Space , Str "sub," , Space , Str "del" ] , Para [ Str "H" , Subscript [ Str "2" ] , Str "O" , Space , Str "base" , Superscript [ Emph [ Str "exponent" ] ] , SoftBreak , Strikeout [ Str "hello" ] ] , Header 2 ( "inline_code" , [] , [] ) [ Str "inline" , Space , Str "code" ] , Para [ Code ( "" , [] , [] ) "*\8594*" , Space , Code ( "" , [] , [] ) "typed" , Space , Code ( "" , [ "haskell" ] , [] ) ">>=" ] , Header 2 ( "code_blocks" , [] , [] ) [ Str "code" , Space , Str "blocks" ] , CodeBlock ( "" , [] , [] ) "case xs of\n (_:_) -> reverse xs\n [] -> ['*']" , CodeBlock ( "" , [ "haskell" ] , [] ) "case xs of\n (_:_) -> reverse xs\n [] -> ['*']" , CodeBlock ( "" , [ "ruby" , "numberLines" ] , [ ( "startFrom" , "100" ) ] ) "widgets.each do |w|\n print w.price\nend" , Header 2 ( "block_quotes" , [] , [] ) [ Str "block" , Space , Str "quotes" ] , Para [ Str "Regular" , Space , Str "paragraph" ] , BlockQuote [ Para [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "block" , Space , Str "quote." ] , Para [ Str "With" , Space , Str "two" , Space , Str "paragraphs." ] ] , Para [ Str "Nother" , Space , Str "paragraph." ] , Header 2 ( "external_links" , [] , [] ) [ Str "external" , Space , Str "links" ] , Para [ Link ( "" , [] , [] ) [ Emph [ Str "Google" ] , Space , Str "search" , Space , Str "engine" ] ( "http://google.com" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "http://pandoc.org" ] ( "http://pandoc.org" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "1" ] ( "http://google.com" , "" ) , Space , Link ( "" , [] , [] ) [ Str "2" ] ( "http://yahoo.com" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "email" , Space , Str "me" ] ( "mailto:info@example.org" , "" ) ] , Header 2 ( "internal_links" , [] , [] ) [ Str "internal" , Space , Str "links" ] , Para [ Link ( "" , [] , [] ) [ Str "Help" ] ( "Help" , "wikilink" ) ] , Para [ Link ( "" , [] , [] ) [ Str "the" , Space , Str "help" , Space , Str "page" ] ( "Help" , "wikilink" ) ] , Para [ Link ( "" , [] , [] ) [ Str "Helpers" ] ( "Help" , "wikilink" ) ] , Para [ Link ( "" , [] , [] ) [ Str "Help" ] ( "Help" , "wikilink" ) , Str "ers" ] , Para [ Link ( "" , [] , [] ) [ Str "Contents" ] ( "Help:Contents" , "wikilink" ) ] , Para [ Link ( "" , [] , [] ) [ Str "#My" , Space , Str "anchor" ] ( "#My_anchor" , "wikilink" ) ] , Para [ Link ( "" , [] , [] ) [ Str "and" , Space , Str "text" ] ( "Page#with_anchor" , "wikilink" ) ] , Header 2 ( "images" , [] , [] ) [ Str "images" ] , Figure ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "caption" ] ]) [ Plain [ Image ( "" , [] , [] ) [] ( "example.jpg" , "caption" ) ] ] , Figure ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "the" , Space , Emph [ Str "caption" ] , Space , Str "with" , Space , Link ( "" , [] , [] ) [ Str "external" , Space , Str "link" ] ( "http://google.com" , "" ) ] ]) [ Plain [ Image ( "" , [] , [] ) [] ( "example.jpg" , "the caption with external link" ) ] ] , Figure ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "caption" ] ]) [ Plain [ Image ( "" , [] , [ ( "width" , "30" ) , ( "height" , "40" ) ] ) [] ( "example.jpg" , "caption" ) ] ] , Figure ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "caption" ] ]) [ Plain [ Image ( "" , [] , [ ( "width" , "30" ) ] ) [] ( "example.jpg" , "caption" ) ] ] , Figure ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "caption" ] ]) [ Plain [ Image ( "" , [] , [ ( "width" , "30" ) ] ) [] ( "example.jpg" , "caption" ) ] ] , Figure ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "example.jpg" ] ]) [ Plain [ Image ( "" , [] , [] ) [] ( "example.jpg" , "example.jpg" ) ] ] , Figure ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "example_es.jpg" ] ]) [ Plain [ Image ( "" , [] , [] ) [] ( "example_es.jpg" , "example_es.jpg" ) ] ] , Header 2 ( "lists" , [] , [] ) [ Str "lists" ] , BulletList [ [ Plain [ Str "Start" , Space , Str "each" , Space , Str "line" ] ] , [ Plain [ Str "with" , Space , Str "an" , Space , Str "asterisk" , Space , Str "(*)." ] , BulletList [ [ Plain [ Str "More" , Space , Str "asterisks" , Space , Str "gives" , Space , Str "deeper" ] , BulletList [ [ Plain [ Str "and" , Space , Str "deeper" , Space , Str "levels." ] ] ] ] ] ] , [ Plain [ Str "Line" , Space , Str "breaks" , LineBreak , Str "don't" , Space , Str "break" , Space , Str "levels." ] , BulletList [ [ BulletList [ [ Plain [ Str "But" , Space , Str "jumping" , Space , Str "levels" , Space , Str "creates" , Space , Str "empty" , Space , Str "space." ] ] ] ] ] ] ] , Para [ Str "Any" , Space , Str "other" , Space , Str "start" , Space , Str "ends" , Space , Str "the" , Space , Str "list." ] , BulletList [ [ BulletList [ [ Plain [ Str "two" ] ] ] ] , [ Plain [ Str "one" ] ] ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Start" , Space , Str "each" , Space , Str "line" ] ] , [ Plain [ Str "with" , Space , Str "a" , Space , Str "number" , Space , Str "sign" , Space , Str "(#)." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "More" , Space , Str "number" , Space , Str "signs" , Space , Str "gives" , Space , Str "deeper" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "and" , Space , Str "deeper" ] ] , [ Plain [ Str "levels." ] ] ] ] ] ] , [ Plain [ Str "Line" , Space , Str "breaks" , LineBreak , Str "don't" , Space , Str "break" , Space , Str "levels." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "But" , Space , Str "jumping" , Space , Str "levels" , Space , Str "creates" , Space , Str "empty" , Space , Str "space." ] ] ] ] ] ] , [ Plain [ Str "Blank" , Space , Str "lines" ] ] ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "end" , Space , Str "the" , Space , Str "list" , Space , Str "and" , Space , Str "start" , Space , Str "another." ] ] ] , Para [ Str "Any" , Space , Str "other" , Space , Str "start" , Space , Str "also" , SoftBreak , Str "ends" , Space , Str "the" , Space , Str "list." ] , DefinitionList [ ( [ Str "item" , Space , Str "1" ] , [ [ Plain [ Str "definition" , Space , Str "1" ] ] ] ) , ( [ Str "item" , Space , Str "2" ] , [ [ Plain [ Str "definition" , Space , Str "2-1" ] ] , [ Plain [ Str "definition" , Space , Str "2-2" ] ] ] ) ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "one" ] ] , [ Plain [ Str "two" ] , BulletList [ [ Plain [ Str "two" , Space , Str "point" , Space , Str "one" ] ] , [ Plain [ Str "two" , Space , Str "point" , Space , Str "two" ] ] ] ] , [ Plain [ Str "three" ] , DefinitionList [ ( [ Str "three" , Space , Str "item" , Space , Str "one" ] , [ [ Plain [ Str "three" , Space , Str "def" , Space , Str "one" ] ] ] ) ] ] , [ Plain [ Str "four" ] , DefinitionList [ ( [] , [ [ Plain [ Str "four" , Space , Str "def" , Space , Str "one" ] ] , [ Plain [ Str "this" , Space , Str "looks" , Space , Str "like" , Space , Str "a" , Space , Str "continuation" ] ] , [ Plain [ Str "and" , Space , Str "is" , Space , Str "often" , Space , Str "used" ] ] , [ Plain [ Str "instead" , LineBreak , Str "of" , Space , Str "
                " ] ] ] ) ] ] , [ Plain [ RawInline (Format "mediawiki") "{{{template\n|author=John\n|title=My Book\n}}}" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "five" , Space , Str "sub" , Space , Str "1" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "five" , Space , Str "sub" , Space , Str "1" , Space , Str "sub" , Space , Str "1" ] ] ] ] , [ Plain [ Str "five" , Space , Str "sub" , Space , Str "2" ] ] ] ] ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "list" , Space , Str "item" , Space , Emph [ Str "emph" ] ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "list" , Space , Str "item" , Space , Str "B1" ] ] , [ Plain [ Str "list" , Space , Str "item" , Space , Str "B2" ] ] ] , Para [ Str "continuing" , Space , Str "list" , Space , Str "item" , Space , Str "A1" ] ] , [ Plain [ Str "list" , Space , Str "item" , Space , Str "A2" ] ] ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "abc" ] ] , [ Plain [ Str "def" ] ] , [ Plain [ Str "ghi" ] ] ] , OrderedList ( 9 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Amsterdam" ] ] , [ Plain [ Str "Rotterdam" ] ] , [ Plain [ Str "The" , Space , Str "Hague" ] ] ] , Header 2 ( "math" , [] , [] ) [ Str "math" ] , Para [ Str "Here" , Space , Str "is" , Space , Str "some" , Space , Math InlineMath "x=\\frac{y^\\pi}{z}" , Str "." ] , Para [ Str "With" , Space , Str "spaces:" , Space , Math InlineMath "x=\\frac{y^\\pi}{z}" , Str "." ] , Header 2 ( "preformatted_blocks" , [] , [] ) [ Str "preformatted" , Space , Str "blocks" ] , Para [ Code ( "" , [] , [] ) "Start\160each\160line\160with\160a\160space." , LineBreak , Code ( "" , [] , [] ) "Text\160is\160" , Strong [ Code ( "" , [] , [] ) "preformatted" ] , Code ( "" , [] , [] ) "\160and" , LineBreak , Emph [ Code ( "" , [] , [] ) "markups" ] , Code ( "" , [] , [] ) "\160" , Strong [ Emph [ Code ( "" , [] , [] ) "can" ] ] , Code ( "" , [] , [] ) "\160be\160done." ] , Para [ Code ( "" , [] , [] ) "\160hell\160\160\160\160\160\160yeah" ] , Para [ Code ( "" , [] , [] ) "Start\160with\160a\160space\160in\160the\160first\160column," , LineBreak , Code ( "" , [] , [] ) "(before\160the\160)." , LineBreak , Code ( "" , [] , [] ) "" , LineBreak , Code ( "" , [] , [] ) "Then\160your\160block\160format\160will\160be" , LineBreak , Code ( "" , [] , [] ) "\160\160\160\160maintained." , LineBreak , Code ( "" , [] , [] ) "" , LineBreak , Code ( "" , [] , [] ) "This\160is\160good\160for\160copying\160in\160code\160blocks:" , LineBreak , Code ( "" , [] , [] ) "" , LineBreak , Code ( "" , [] , [] ) "def\160function():" , LineBreak , Code ( "" , [] , [] ) "\160\160\160\160\"\"\"documentation\160string\"\"\"" , LineBreak , Code ( "" , [] , [] ) "" , LineBreak , Code ( "" , [] , [] ) "\160\160\160\160if\160True:" , LineBreak , Code ( "" , [] , [] ) "\160\160\160\160\160\160\160\160print\160True" , LineBreak , Code ( "" , [] , [] ) "\160\160\160\160else:" , LineBreak , Code ( "" , [] , [] ) "\160\160\160\160\160\160\160\160print\160False" ] , Para [ Str "Not" ] , RawBlock (Format "html") "
                " , Para [ Str "preformatted" ] , Para [ Str "Don't" , Space , Str "need" ] , Para [ Code ( "" , [] , [] ) "a\160blank\160line" ] , Para [ Str "around" , Space , Str "a" , Space , Str "preformatted" , Space , Str "block." ] , Header 2 ( "templates" , [] , [] ) [ Str "templates" ] , RawBlock (Format "mediawiki") "{{Welcome}}" , RawBlock (Format "mediawiki") "{{Foo:Bar}}" , RawBlock (Format "mediawiki") "{{Thankyou|all your effort|Me}}" , Para [ Str "Written" , Space , RawInline (Format "mediawiki") "{{{date}}}" , Space , Str "by" , Space , RawInline (Format "mediawiki") "{{{name}}}" , Str "." ] , Header 2 ( "tables" , [] , [] ) [ Str "tables" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Orange" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Apple" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Bread" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Pie" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Butter" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Ice" , Space , Str "cream" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "Food" , Space , Str "complements" ] ]) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Orange" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Apple" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Bread" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Pie" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Butter" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Ice" , Space , Str "cream" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "Food" , Space , Str "complements" ] ]) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Orange" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Apple" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Bread" ] , Para [ Str "and" , Space , Str "cheese" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Pie" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "apple" ] ] , [ Plain [ Str "carrot" ] ] ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Orange" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Apple" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "more" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Bread" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Pie" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "more" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Butter" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Ice" , Space , Str "cream" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "and" , Space , Str "more" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignLeft , ColWidth 0.25 ) , ( AlignRight , ColWidth 0.125 ) , ( AlignCenter , ColWidth 0.125 ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [ ( "width" , "50%" ) ] ) AlignLeft (RowSpan 1) (ColSpan 1) [ Para [ Str "Left" ] ] , Cell ( "" , [] , [] ) AlignRight (RowSpan 1) (ColSpan 1) [ Para [ Str "Right" ] ] , Cell ( "" , [] , [] ) AlignCenter (RowSpan 1) (ColSpan 1) [ Para [ Str "Center" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "left" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "15.00" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "centered" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "more" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "2.0" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "more" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Orange" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Apple" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Bread" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "fruit" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "topping" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "apple" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "ice" , Space , Str "cream" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Butter" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Ice" , Space , Str "cream" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Orange" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Paragraph" , Space , Str "after" , Space , Str "the" , Space , Str "table." ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "fruit" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "topping" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "apple" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "ice" , Space , Str "cream" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Header 2 ( "notes" , [] , [] ) [ Str "notes" ] , Para [ Str "My" , Space , Str "note!" , Note [ Plain [ Str "This." ] ] ] , Para [ Str "URL" , Space , Str "note." , Note [ Plain [ Link ( "" , [] , [] ) [ Str "http://docs.python.org/library/functions.html#range" ] ( "http://docs.python.org/library/functions.html#range" , "" ) ] ] ] ] pandoc-3.1.3/test/mediawiki-reader.wiki0000644000000000000000000001136307346545000016226 0ustar0000000000000000= header = == header level two == ===header level 3=== ====header ''level'' four==== ===== header level 5 ===== ====== header level 6 ====== ======= not a header ======== == not a header == == emph and strong == ''emph'' '''strong''' '''''strong and emph''''' '''''emph inside'' strong''' '''strong with ''emph''''' '''''strong inside''' emph'' == horizontal rule == top ---- bottom ---- == nowiki == ''not emph'' == strikeout == This is ''struck out'' == entities == hi & low hi & low Gödel ̉પ == comments == inline comment between blocks == linebreaks == hi
                there hi
                there == : indents == hi : there bud hi :: there bud == p tags == hi there

                bud

                another

                == raw html == hi ''there''. inserted
                hi ''there''
                == sup, sub, del == H2O base''exponent'' hello == inline code == *→* typed >>= == code blocks ==
                case xs of
                     (_:_) -> reverse xs
                     []    -> ['*']
                
                case xs of (_:_) -> reverse xs [] -> ['*'] widgets.each do |w| print w.price end == block quotes == Regular paragraph
                This is a block quote. With two paragraphs.
                Nother paragraph. == external links == [http://google.com ''Google'' search engine] http://pandoc.org [http://google.com] [http://yahoo.com] [mailto:info@example.org email me] == internal links == [[Help]] [[Help|the help page]] [[Help]]ers [[Help]]ers [[Help:Contents|]] [[#My anchor]] [[Page#with anchor|and text]] == images == [[File:example.jpg|caption]] [[File:example.jpg|border|the ''caption'' with [http://google.com external link]]] [[File:example.jpg|frameless|border|30x40px|caption]] [[File:example.jpg|frameless|border|30px|caption]] [[File:example.jpg|page=4|30px|border|caption]] [[File:example.jpg]] [[Archivo:example_es.jpg]] == lists == * Start each line * with an asterisk (*). ** More asterisks gives deeper *** and deeper levels. * Line breaks
                don't break levels. *** But jumping levels creates empty space. Any other start ends the list. ** two * one # Start each line # with a number sign (#). ## More number signs gives deeper ### and deeper ### levels. # Line breaks
                don't break levels. ### But jumping levels creates empty space. # Blank lines # end the list and start another. Any other start also ends the list. ;item 1 : definition 1 ;item 2 : definition 2-1 : definition 2-2 # one # two #* two point one #* two point two # three #; three item one #: three def one # four #: four def one #: this looks like a continuation #: and is often used #: instead
                of
                # {{{template |author=John |title=My Book }}} ## five sub 1 ### five sub 1 sub 1 ## five sub 2
                1. list item ''emph''
                  1. list item B1
                  2. list item B2
                  continuing list item A1
                2. list item A2
                  #abc #def #ghi
                1. Amsterdam
                2. Rotterdam
                3. The Hague
                == math == Here is some x=\frac{y^\pi}{z}. With spaces: x=\frac{y^\pi}{z} . == preformatted blocks == Start each line with a space. Text is '''preformatted''' and ''markups'' '''''can''''' be done. hell yeah Start with a space in the first column, (before the ). Then your block format will be maintained. This is good for copying in code blocks: def function(): """documentation string""" if True: print True else: print False Not
                preformatted Don't need a blank line around a preformatted block. == templates == {{Welcome}} {{Foo:Bar}} {{Thankyou|all your effort|Me}} Written {{{date}}} by {{{name}}}. == tables == {| |- |Orange |Apple |- |Bread |Pie |- |Butter |Ice cream |} {| |+Food complements !Orange !Apple |- |Bread |Pie |- !Butter |Ice cream |} {| |+Food complements !Orange !Apple |- |Bread and cheese |Pie # apple # carrot |} {| | Orange || Apple || more |- | Bread || Pie || more |- | Butter || Ice cream || and more |} {|width=50% ! align="left" width="50%"| Left ! align="right"|Right ! align="center"|Center |- | left || 15.00 || centered |- | more || 2.0 || more |} {| |- |Orange |Apple |- |Bread | {| !fruit !topping |- |apple |ice cream |} |- |Butter |Ice cream |} {| |Orange |}Paragraph after the table. {| !fruit !topping |- |apple |ice cream |} == notes == My note!This. URL note.http://docs.python.org/library/functions.html#range pandoc-3.1.3/test/movie.jpg0000644000000000000000000000202607346545000013753 0ustar0000000000000000JFIFHHPThis art is in the public domain. Kevin Hughes, kevinh@eit.com, September 1995CC"  # 9v& !146QTqtu ? f* j81sE+oWmFd3ݕO.-IwSIʑ} [s}S6OʚHkzu:"mlE$WEQևuu{:N1+AX~$C0 AaMFQ:vhc(cRp߰_[6e*Ҏ"Ec?GD< [I { )FqSGȑ_J Xaq^j #}r4ىRNFd5e61U~=30$ jФy7[ ZtaǣSP16`ղO0Y_aw:Q#Qu}9_89 5 n*QoPPödv:ɅhfW(DT r.\hHbU>SӶQ߭z:Ȱ)Xˠ*%up9#>jLJ>ֲ4"}}FإZ>]+# *n./< % $ebR3jܤP]=N ~OǏໞXBI,_~pandoc-3.1.3/test/odt/markdown/0000755000000000000000000000000007346545000014542 5ustar0000000000000000pandoc-3.1.3/test/odt/markdown/blockquote2.md0000644000000000000000000000003307346545000017312 0ustar0000000000000000Paragraph > A blockquote. pandoc-3.1.3/test/odt/markdown/bold.md0000644000000000000000000000003007346545000015775 0ustar0000000000000000Here comes **bold** textpandoc-3.1.3/test/odt/markdown/citation.md0000644000000000000000000000003707346545000016676 0ustar0000000000000000Some text[@Ex] with a citation.pandoc-3.1.3/test/odt/markdown/endnote.md0000644000000000000000000000006207346545000016516 0ustar0000000000000000Some text[^1] with an endnote. [^1]: Endnote textpandoc-3.1.3/test/odt/markdown/externalLink.md0000644000000000000000000000010207346545000017515 0ustar0000000000000000Here comes an [external link](http://example.com/) to example.com.pandoc-3.1.3/test/odt/markdown/footnote.md0000644000000000000000000000006307346545000016720 0ustar0000000000000000Some text[^1] with a footnote. [^1]: Footnote textpandoc-3.1.3/test/odt/markdown/formula.md0000644000000000000000000000002707346545000016530 0ustar0000000000000000$$E = {m \cdot c^{2}}$$pandoc-3.1.3/test/odt/markdown/headers.md0000644000000000000000000000013607346545000016477 0ustar0000000000000000# A header (Lv 1) A paragraph ## Another header (Lv 2) Another paragraph # Back to Level 1pandoc-3.1.3/test/odt/markdown/horizontalRule.md0000644000000000000000000000000307346545000020076 0ustar0000000000000000---pandoc-3.1.3/test/odt/markdown/image.md0000644000000000000000000000005107346545000016142 0ustar0000000000000000![](10000000000000FA000000FAD6A15225.jpg)pandoc-3.1.3/test/odt/markdown/imageIndex.md0000644000000000000000000000017207346545000017136 0ustar0000000000000000# Abbildungsverzeichnis Abbildung 1: Image caption ![Abbildung 1: Image caption](10000000000000FA000000FAD6A15225.jpg) pandoc-3.1.3/test/odt/markdown/imageWithCaption.md0000644000000000000000000000010307346545000020312 0ustar0000000000000000![Abbildung 1: Image caption](10000000000000FA000000FAD6A15225.jpg)pandoc-3.1.3/test/odt/markdown/italic.md0000644000000000000000000000003007346545000016322 0ustar0000000000000000Here comes *italic* textpandoc-3.1.3/test/odt/markdown/listBlocks.md0000644000000000000000000000076107346545000017201 0ustar0000000000000000 Indented text in a list. This is a numbered block.It contains several paragraphs of text.Like this.Next item.pandoc-3.1.3/test/odt/markdown/paragraph.md0000644000000000000000000000010607346545000017026 0ustar0000000000000000This is a paragraph. This is another paragraph. This is a third one.pandoc-3.1.3/test/odt/markdown/strikeout.md0000644000000000000000000000005107346545000017111 0ustar0000000000000000Here comes text that was ~~striken out~~.pandoc-3.1.3/test/odt/markdown/trackedChanges.md0000644000000000000000000000004107346545000017765 0ustar0000000000000000Some text with and inserted text.pandoc-3.1.3/test/odt/markdown/underlined.md0000644000000000000000000000003407346545000017212 0ustar0000000000000000Here comes *underlined* textpandoc-3.1.3/test/odt/native/0000755000000000000000000000000007346545000014206 5ustar0000000000000000pandoc-3.1.3/test/odt/native/blockquote.native0000644000000000000000000000011207346545000017560 0ustar0000000000000000[Para [Str "Normal"],BlockQuote [Para [Str "Indented",Space,Str "(1cm)"]]]pandoc-3.1.3/test/odt/native/image.native0000644000000000000000000000017207346545000016500 0ustar0000000000000000[Para [Image ("",[],[("width","5.292cm"),("height","5.292cm")]) [] ("Pictures/10000000000000FA000000FAD6A15225.jpg","")]] pandoc-3.1.3/test/odt/native/imageIndex.native0000644000000000000000000000030207346545000017463 0ustar0000000000000000[Para [Image ("",[],[("width","5.292cm"),("height","5.292cm")]) [Str "Abbildung",Space,Str "1:",Space,Str "Image",Space,Str "caption"] ("Pictures/10000000000000FA000000FAD6A15225.jpg","fig:")]] pandoc-3.1.3/test/odt/native/imageWithCaption.native0000644000000000000000000000030207346545000020645 0ustar0000000000000000[Para [Image ("",[],[("width","5.292cm"),("height","5.292cm")]) [Str "Abbildung",Space,Str "1:",Space,Str "Image",Space,Str "caption"] ("Pictures/10000000000000FA000000FAD6A15225.jpg","fig:")]] pandoc-3.1.3/test/odt/native/inlinedCode.native0000644000000000000000000000024007346545000017627 0ustar0000000000000000[Para [Str "Here",Space,Str "comes",Space,Code ("",[],[]) "inlined code",Space,Str "text",Space,Str "and",Space,Code ("",[],[]) "an another",Space,Str "one."]] pandoc-3.1.3/test/odt/native/orderedListHeader.native0000644000000000000000000000373307346545000021015 0ustar0000000000000000[ OrderedList ( 1 , Decimal , Period ) [ [ Plain [ Str "A" , Space , Str "list" , Space , Str "item" , Space , Str "(list-header)" ] ] , [ Plain [ Str "A" , Space , Str "second" ] ] , [ Para [ Str "A" , Space , Str "third" ] , OrderedList ( 1 , Decimal , Period ) [ [ Para [ Str "New" , Space , Str "level!" , Space , Str "(list-header)" ] , OrderedList ( 1 , Decimal , Period ) [ [ Plain [ Str "And" , Space , Str "another!" , Space , Str "(list-header)" ] ] , [ Plain [ Str "It's" , Space , Str "great" , Space , Str "up" , Space , Str "here!" ] ] ] ] , [ Plain [ Str "Oh" , Space , Str "noes" ] ] , [ Plain [ Str "We" , Space , Str "fell!" ] ] ] ] , [ Plain [ Str "Maybe" , Space , Str "someone" ] ] , [ Plain [ Str "Pushed" , Space , Str "us?" ] ] ] , Para [] , OrderedList ( 4 , Decimal , Period ) [ [ Plain [ Str "Start" , Space , Str "new" , Space , Str "list," , Space , Str "but" , Space , Str "a" , Space , Str "different" , Space , Str "starting" , Space , Str "point." , Space , Str "(list-header)" ] ] , [ Plain [ Str "Because" , Space , Str "we" , Space , Str "can." ] ] ] ] pandoc-3.1.3/test/odt/native/orderedListMixed.native0000644000000000000000000000146107346545000020667 0ustar0000000000000000Pandoc (Meta {unMeta = fromList []}) [OrderedList (1,Decimal,Period) [[Plain [Str "A",Space,Str "list",Space,Str "item"]],[Plain [Str "A",Space,Str "second"]],[Para [Str "A",Space,Str "third"],OrderedList (1,Decimal,Period) [[Para [Str "New",Space,Str "level!"],OrderedList (1,LowerAlpha,OneParen) [[Plain [Str "And",Space,Str "another!"]],[Plain [Str "It's",Space,Str "great",Space,Str "up",Space,Str "here!"]]]],[Plain [Str "Oh",Space,Str "noes"]],[Plain [Str "We",Space,Str "fell!"]]]],[Plain [Str "Maybe",Space,Str "someone"]],[Plain [Str "Pushed",Space,Str "us?"]]],Para [],OrderedList (4,Decimal,Period) [[Plain [Str "Start",Space,Str "new",Space,Str "list,",Space,Str "but",Space,Str "a",Space,Str "different",Space,Str "starting",Space,Str "point."]] ,[Plain [Str "Because",Space,Str "we",Space,Str "can."]]]]pandoc-3.1.3/test/odt/native/orderedListRoman.native0000644000000000000000000000146707346545000020703 0ustar0000000000000000Pandoc (Meta {unMeta = fromList []}) [OrderedList (1,UpperRoman,Period) [[Plain[Str "A",Space,Str "list",Space,Str "item"]],[Plain [Str "A",Space,Str "second"]],[Para [Str "A",Space,Str "third"],OrderedList (1,UpperRoman,Period) [[Para [Str "New",Space,Str "level!"],OrderedList (1,UpperRoman,Period) [[Plain [Str "And",Space,Str "another!"]],[Plain [Str "It's",Space,Str "great",Space,Str "up",Space,Str "here!"]]]],[Plain [Str "Oh",Space,Str "noes"]],[Plain [Str "We",Space,Str "fell!"]]]],[Plain [Str "Maybe",Space,Str "someone"]],[Plain [Str "Pushed",Space,Str "us?"]]],Para [],OrderedList (4,UpperRoman,Period) [[Plain [Str "Start",Space,Str "new",Space,Str "list,",Space,Str "but",Space,Str "a",Space,Str "different",Space,Str "starting",Space,Str "point."]] ,[Plain [Str "Because",Space,Str "we",Space,Str "can."]]]]pandoc-3.1.3/test/odt/native/orderedListSimple.native0000644000000000000000000000145407346545000021054 0ustar0000000000000000Pandoc (Meta {unMeta = fromList []}) [OrderedList (1,Decimal,Period) [[Plain [Str "A",Space,Str "list",Space,Str "item"]],[Plain [Str "A",Space,Str "second"]],[Para [Str "A",Space,Str "third"],OrderedList (1,Decimal,Period) [[Para [Str "New",Space,Str "level!"],OrderedList (1,Decimal,Period) [[Plain [Str "And",Space,Str "another!"]],[Plain [Str "It's",Space,Str "great",Space,Str "up",Space,Str "here!"]]]],[Plain [Str "Oh",Space,Str "noes"]],[Plain [Str "We",Space,Str "fell!"]]]],[Plain [Str "Maybe",Space,Str "someone"]],[Plain [Str "Pushed",Space,Str "us?"]]],Para [],OrderedList (4,Decimal,Period) [[Plain [Str "Start",Space,Str "new",Space,Str "list,",Space,Str "but",Space,Str "a",Space,Str "different",Space,Str "starting",Space,Str "point."]] ,[Plain [Str "Because",Space,Str "we",Space,Str "can."]]]]pandoc-3.1.3/test/odt/native/referenceToChapter.native0000644000000000000000000000060207346545000021164 0ustar0000000000000000[Header 1 ("a-chapter",[],[]) [Span ("anchor",[],[]) [],Str "A",Space,Str "chapter"],Para [Str "Some",Space,Str "text."],Header 1 ("another-chapter",[],[]) [Str "Another",Space,Str "chapter"],Para [Str "A",Space,Str "reference",Space,Str "to",Space,Str "."],Para [Str "A",Space,Str "reference",Space,Str "to",Space,Link ("",[],[]) [Str "A",Space,Str "chapter"] ("#anchor",""),Str "."]] pandoc-3.1.3/test/odt/native/referenceToListItem.native0000644000000000000000000000051007346545000021326 0ustar0000000000000000[OrderedList (1,Decimal,Period) [[Plain [Span ("anchor",[],[]) [],Str "A",Space,Str "list",Space,Str "item"]],[Plain [Str "Another",Space,Str "list",Space,Str "item"]]],Para [Str "A",Space,Str "reference",Space,Str "to",Space,Str "list",Space,Str "item",Space,Link ("",[],[]) [Str "1."] ("#anchor",""),Str "."],Para [],Para []] pandoc-3.1.3/test/odt/native/referenceToText.native0000644000000000000000000000053007346545000020522 0ustar0000000000000000[Para [Span ("an anchor",[],[]) [],Str "Some",Space,Str "text."],Para [Str "A",Space,Str "reference",Space,Str "to",Space,Link ("",[],[]) [Str "Some",Space,Str "text"] ("#an anchor",""),Str "."],Para [Str "Some",Space,Str "text",LineBreak,Str "Another",Space,Str "one",Space,Str "with",Space,Str "a",Space,Str "link",Span ("anchor",[],[]) []]] pandoc-3.1.3/test/odt/native/simpleTable.native0000644000000000000000000000101607346545000017655 0ustar0000000000000000[Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidthDefault),(AlignDefault,ColWidthDefault)] (TableHead ("",[],[]) [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [],Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) []]]) [TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Content"]],Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "More",Space,Str "content"]]]]] (TableFoot ("",[],[]) []),Para []]pandoc-3.1.3/test/odt/native/simpleTableWithCaption.native0000644000000000000000000000120407346545000022026 0ustar0000000000000000[Table ("",[],[]) (Caption Nothing [Para [Str "Table",Space,Str "1:",Space,Str "Some",Space,Str "caption",Space,Str "for",Space,Str "a",Space,Str "table"]]) [(AlignDefault,ColWidthDefault),(AlignDefault,ColWidthDefault)] (TableHead ("",[],[]) [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [],Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) []]]) [TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Content"]],Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "More",Space,Str "content"]]]]] (TableFoot ("",[],[]) []),Para []]pandoc-3.1.3/test/odt/native/tab.native0000644000000000000000000000035207346545000016164 0ustar0000000000000000[Para [Str "Three",Space,Str "tabs",Space,Str "between",Space,Str "A",Space,Str "and",Space,Str "B",Space,Str "will",Space,Str "be",Space,Str "converted",Space,Str "to",Space,Str "one",Space,Str "Space:",Space,Str "A",Space,Str "B."]]pandoc-3.1.3/test/odt/native/tableWithContents.native0000644000000000000000000000122007346545000021052 0ustar0000000000000000[Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidthDefault),(AlignDefault,ColWidthDefault)] (TableHead ("",[],[]) [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [],Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) []]]) [TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "A"]],Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "B"]]],Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "C"]],Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "D"]]]]] (TableFoot ("",[],[]) []),Para []]pandoc-3.1.3/test/odt/native/textMixedStyles.native0000644000000000000000000000112107346545000020570 0ustar0000000000000000[Para [Str "This",Space,Str "is",Space,Str "a",Space,Str "simple",Space,Str "text"] ,Para [] ,Para [Str "that",Space,Str "is",Space,Str "both",Space,Emph [Str "italic",Space],Strong [Str "bold",Space],Emph [Str "underlined",Space],Str "and",Space,Str "the",Space,Emph [Strong [Str "first",Space,Str "two"]],Space,Str "and",Space,Str "the",Space,Emph [Strong [Str "last",Space,Str "two",Space]],Space,Str "and",Space,Strong [Strikeout [Str "bold",Space,Str "and",Space,Str "line",Space,Str "through"]]] ,Para [] ,Para [Str "And",Space,Str "with",Space,Superscript [Emph [Str "superscripts"]]]] pandoc-3.1.3/test/odt/native/unicode.native0000644000000000000000000000011707346545000017043 0ustar0000000000000000[Para [Str "\8220\8221\8217\231\1256\169\188\1074\1073\1060\1064\246\201\181"]]pandoc-3.1.3/test/odt/native/unorderedList.native0000644000000000000000000000072507346545000020245 0ustar0000000000000000[BulletList [[Plain [Str "A",Space,Str "list",Space,Str "item"]],[Plain [Str "A",Space,Str "second"]],[Para [Str "A",Space,Str "third"],BulletList [[Para [Str "New",Space,Str "level!"],BulletList [[Plain [Str "And",Space,Str "another!"]],[Plain [Str "It's",Space,Str "great",Space,Str "up",Space,Str "here!"]]]],[Plain [Str "Oh",Space,Str "noes"]],[Plain [Str "We",Space,Str "fell!"]]]],[Plain [Str "Maybe",Space,Str "someone"]],[Plain [Str "Pushed",Space,Str "us?"]]]]pandoc-3.1.3/test/odt/native/unorderedListHeader.native0000644000000000000000000000251007346545000021350 0ustar0000000000000000[ BulletList [ [ Plain [ Str "A" , Space , Str "list" , Space , Str "item" , Space , Str "(list-header)" ] ] , [ Plain [ Str "A" , Space , Str "second" ] ] , [ Para [ Str "A" , Space , Str "third" ] , BulletList [ [ Para [ Str "New" , Space , Str "level!" , Space , Str "(list-header)" ] , BulletList [ [ Plain [ Str "And" , Space , Str "another!" , Space , Str "(list-header)" ] ] , [ Plain [ Str "It's" , Space , Str "great" , Space , Str "up" , Space , Str "here!" ] ] ] ] , [ Plain [ Str "Oh" , Space , Str "noes" ] ] , [ Plain [ Str "We" , Space , Str "fell!" ] ] ] ] , [ Plain [ Str "Maybe" , Space , Str "someone" ] ] , [ Plain [ Str "Pushed" , Space , Str "us?" ] ] ] ] pandoc-3.1.3/test/odt/odt/0000755000000000000000000000000007346545000013506 5ustar0000000000000000pandoc-3.1.3/test/odt/odt/blockquote.odt0000644000000000000000000002062207346545000016370 0ustar0000000000000000PKd7lF^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKd7lF'Configurations2/accelerator/current.xmlPKPKd7lFConfigurations2/images/Bitmaps/PKd7lFConfigurations2/floater/PKd7lFConfigurations2/progressbar/PKd7lFConfigurations2/menubar/PKd7lFConfigurations2/popupmenu/PKd7lFConfigurations2/statusbar/PKd7lFConfigurations2/toolbar/PKd7lFConfigurations2/toolpanel/PKd7lFebThumbnails/thumbnail.pngPNG  IHDRzAIDATxP@ф-Q)6s'pM}PAE}PAE}PAE}PAeO˲_gqz=v5Lo=}\<[H (fi?o1ݘ`¿oXvwx]nU2ͬcif4胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(9E IENDB`PKd7lF content.xmlWQo0~WDABy@ba-B $ ! $^=I-N{N⦬"e[w|n?nkmuBe3fBUϯ}qV`65WQ<΀\yycUPІUEY==#xfs EK=u^YlP{S`ܶE{}m7778zS4LceD1!Ë5dn~;NI5#KCl5k6į'z߃3kscAf6;NBw@cWoq=B'S"i p 7AInp;w;65ك`$D+cC&w[n0 ݺJ}-{2v \c8pF<<AI$l5܊"Ph mbEWjx:: %\@$#Ʃtn$s}<=QE}k=p ->d"pi)EaM;L[W`\(5@M`iKr09ĽqD@Q4dMe8eaZtr3[&W'bԐ9a gC h4R{ځ6 $a2ځǰ ޣig>UUɌqO.D$ ܢC]j &dok͏:\2:up B;* ‚X 0 Uv"vGᛱaj09?2Q҅>_\Ӏ.QA+m,╦']f\B G]qru؜%=څrG}i E#`Jr ~̞)7{H ?̗MǶbEer].)B ?/)X:0Oa\xb}Hƀ|q [ VÉQڲс,%N IxZ֚&WB8 HG@0]ˈ`c$`"S_sl߾zW BZкE-(k0ɜĖ[l=<%r|`ChU 1cMᕡ\GvcMTչ0Q^,5 ?@ڈpX-[=/015EfÿuYqi@'#&x7q]< c^%$WV!aJ{Lܡ ݕ$|u7V ]oU=]OthPKm(+!PKd7lF styles.xmlZK6W*-˻]-E$!%bCIIQeVq< `-1JhBʔgVY2(Eyh1ʕq)8Y,-_U f4&hc2NIx X4RY+"FC>nFgv3Mc1:7 axo|| &{ u 4TiZn_s޺lwml=I==ɞb"%1p i긅X :@:rUTǺYdwnb(5HtdsElInzkF4Ԝu΃BS}-D} D g`e|1hA[G[UB]0K7`>!]"BYÔ̮T"z%3Nrn;NcM@vgqkF?)0-ޅ1U{,/ /Ft Ip%u0|3#DH.s}6?B eXdǰOWM 8xP w(JKg Ylr*V`K @V{;7 _q!zo2oHcxKx1%\+C.L{w"2C8wЖpqUA}3݆O9^!ǿH8kל+ Eؾ:n1>A'(=/c Dsa!)!iA^#y23x#`jbѽit(64ZnIok{W栓]çHSPv4?ñm4Ih9\bz?8fPs*ߪ ܨw)qhkr~0HR9u`:#kdxZ?Xpo- M;.V]~ޠ3ѡpI3uwi Zk5^z SPK;)PKd7lF manifest.rdf͓n0 Martin Linnemann2015-03-12T07:57:29.212015-03-12T07:59:08.12Martin LinnemannPT1M40S1OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PKd7lFMETA-INF/manifest.xmln }zP& `ID`G*ɶtZlNGx fbSh$siR@U4Qr%i;I~5XyPpFtbъ8b/ Nt5dm):TL0üʛƴ)\ŵPZ t 1a“z pT v^}HQ{/ofOIoD =ӫut0xzu~PKjҠ">PKd7lF^2 ''mimetypePKd7lF'MConfigurations2/accelerator/current.xmlPKd7lFConfigurations2/images/Bitmaps/PKd7lFConfigurations2/floater/PKd7lFConfigurations2/progressbar/PKd7lFQConfigurations2/menubar/PKd7lFConfigurations2/popupmenu/PKd7lFConfigurations2/statusbar/PKd7lFConfigurations2/toolbar/PKd7lF-Configurations2/toolpanel/PKd7lFebeThumbnails/thumbnail.pngPKd7lFc=Xl content.xmlPKd7lFm(+!  settings.xmlPKd7lF;) styles.xmlPKd7lFh Gmanifest.rdfPKd7lFqkmeta.xmlPKd7lFjҠ">META-INF/manifest.xmlPKp pandoc-3.1.3/test/odt/odt/blockquote2.odt0000644000000000000000000002150007346545000016446 0ustar0000000000000000PK=V^2 ''mimetypeapplication/vnd.oasis.opendocument.textPK=V?V/meta.xmlr } Ǟ%9TƘW衧(l,ӷ/igzs_>^.6BCZEd ў7aZ .z(3~| ('y&eD)]4V9޸7\̝#4(3\aL}uo{=T7?PK=VOK META-INF/manifest.xmlAn E9b[ٴYUvB/@ `8o_jɉěnTw1ـ5+_9ԡ| SCBk 0]ڬ(J6IT$-C=x@kHna`ϛcW W֪jY(\K3-`fpk.8H^ V!ydgeV= N4:HʼH=(hl7IBi rC|Wn>Be]4Z}_|PK=Vm9 content.xmlVo 䐤ZqiNi;VmT 8_,w񁽹?T"3m)Z-(b"E[o6*9eIhS1icwti. -E 7$3XIN|nW1!۲Kv gi%;,s5|0"^7U/)*۶]7 >:LG\hQL0bl,[Æ%ɦ1=[bɮ}14$z7%~w/c h/3ZsܽsZ*e1D܍?DJopQzLla2ERI@wEYG[O']([,FI GyFr7.J[.>rpqZtkainqgx̉03pjTza(ȿ¾zHh4t~vBї_ [@$GӖ<Ùq 4<9ߡ(ͧotq"vlL6r\w;V[?7humx ;:@h!y`8&nؿA t`xC@?t#J߰>vbolg&[ 63saQ3ݷH}i[▴\xOHp3q6Ax75f ۙ\aK9zMN1MeY6KCX5I{ݮ{opygygȾ&״os_ٹl*2ci?B(Su7(W4[>K Vqxv8:ԁF)sTE7lM1 &"[E1'y{TtV3ҭF]s\)r%0Յ qOLmIwYߢȧ" xMa^ 怜Mcy:%AHIF4mM?[`Ć&Ǐm͔#{8l5"a |xF=x.4t/NIIx5 $G2 ?g媖Jb0dĄ:;5V鞻tJxkY/c%mj:rxz̃\ގ^hxᱮ 9o!bG*;"Vh,fd$j`}N58Aj|ײJ#-|6E05( qs(ΖDmqiلd6r*fj:; ᰞ$ׅZ}[> ؍Вjc*d]d=nm6Q/ '-We_d?/nf;y1ej=| ѱ^P! hXAgGzlJ0ߐ( 9mrSK!ܖ1 Q{Ï9%OKTiY,fi9yyC(@'.;/s!"<=  S0 4x`$6zC.O:4C Hذm_9ۘjFp?:[87K-V El9Ih?Kђ)3TsK|8v+<ƓNQ waӻ/ғ} p2DrOx=zY)P|EK 1/mMB eh&$8є iN BGA$ Տg12x~5 k*dXaԠ'r4yyxϬ{f y"#7\°n2켷aWp?*A/V)c:Bc]uBB%B!.z[uyU:D1B?uKCv̵w(=OnVeP?@b局^w캚MdMo~?r榟LĆ?]&]n]e.kмrZQ qE2x׋WzFjy*IQ4R}dي>g(4EGSxW5'=}S5=/Z),㗌) }؅a'vMoKo^bG_/@cec]-@jn̲|E D[iaUo-t (t&f~eJ5a!cLTQ~?bՑeʞGXE $A4 ָ-~S/y޺iN.;ₗZn]h%͕Œ~*2E'!X\";Xˎ*ׅ3}_7Z#=6uGb6ФiKRwԵyz^ꮟF<֥v%9 IM,xTul*,,W)'fXhm.%f3NH`~~Yƺae/Tg;%چ]ዽl4gQOL]wAYk}F-W˹-h/h*FXhF7ZZj~CWҼ\eb-oK|ThyKw -_ϧzrSroj)H%0 ):|DREZ.+›˵!-qLEiF^ FKc"-h#ҩFkRK`l2_$b1BQZ.ѺF/%r?-us*-ɨ/5YDB|&ec\0R”|6s )瓥)s<)-%0R/'jR#eyjb.VR)ד_aVn7-o`NJ%`|Oҥpg*L-p_ZTL-p}Jr>k^S \"ܹOej."ׯPzN˧zRsZ>zè7SSruR1-~اr5fX|6<p}.O6o忽X *]>&c=d?ҍdӑ<<ICq$OWGr=:0C#iLJHZ iͥ.i%Hɓkᡴ)!}b&*qZ2b>}j}4|I~<$ə!y8O_#eϊGkE3ɧRGk$Vm\Qɧ eɧLKFRIj{PZ5RֻF2V>=DtH)FۥGrl!]q$!9d^T!j~H%*%R? =CHLHQ"Cre=Dܒ{ 8H}4&R> }*wye*S$P!?="Ygzj#9@mnC?/(l6TamnC,/݆(G^GZ>"\V['H뭶A_V EK_$چBzm($چBzm$چCzm0(_ꭶk44HRH^kHC!yBZ# Fk4i0(m#CFEA=-B7.š\v] r#,Vf=ӅIRMC-@˦`'jSظI @ɱ֫\s}kT7!oԘBqIh !?!X].C-It}Ccrot׆ O/ "Zޖt[#m `/HT$٢x7t(}) nHSvRX3LUnꂃQU0-[ mCwg3Z-aF}ht | .5-$ڵ0[ҲA3n~f' 1(P@ cF\.-/ޡ5wwhrǺʞ~ _8gggdW98l߼8r]m@./Q ;6$1piMmV03>,=_]^|qp./p9 : &wL04Jl+\jϘG?Yre+cu8;Tj}\{RQAyKzq9ERƨSZuI;갥w)m4ʻ(fbi3ph WX!M%S[zs \ic} =ULl(@=Ob=Imڨl g%(=͈HqթĿ@Z~H 3K$bMAYGi-7 8M9օ>^t\~B@sϞ{y ;w eR=6k`R#n(od`>hDقRAVU'[|];z%M0۷J³?I|ձpY;Tŋ90V۶dM!08To# jIe7GO^Zeْ!x=b$7ڥ^p0U`asZɚPK=V'Configurations2/accelerator/current.xmlPK=VqŃThumbnails/thumbnail.png sb``p 8ty L7<]C*漽u@!S \vI9K31 ~a,bH2Qgkg\=c̵vĵW۽ꛖ٦YK:(胢>(胢>(胢>(,ܿpw?W}_͏~xGclq[X籒fnհ?O?:x}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}P>3N{IENDB`PKaF content.xmln6} CznE?P@HmAKM"USzcIJ,oDZiKvř! Gt2(YZo vi}YoV_ypSo@"l!hں,(/ _oACHE{G8s6Z(|bʑs6gX6Xʤf7lc{Ceփ.NߗNp9ʶ`>5ݰ{#/s!j1PS-}tjOötEv/wgc vLf4F?.k)߫Ty oS{g)VU>vGdwYw`/8 &AiZ* `js©{v0g\2; 41 S{ۉweM\s]vF<_^aFNi"SƷO!dH ˤ"k1<*yn: {:VoKI,IŇ{ՌldaPUB |iafyDuƼi?p7czlTlVfqy)oQ#dJX?D|9Ҳt4-`[DF\@޲> XZeޟTCj3h0Z0Cg2% ˸ml n*$60.63TEԆe66v% MϪq#j2b87% ̼l*r#j2wM2Z2s`h4 hb4Ƃ1A`FP,F#h$4K[4FN,F#h$4 h b41AC`FT.mƅ5#7DW85 :--'; ZKv@+O9,ʸ]e +Oe(O=Tƕ=tW͊DeXyDGa}2?8G5^4j>١oU!"L^]V&ߘvXuRPTln#Wy So=b)piV-p=bxd]r덏'+YszV/'||13 &ZFePNGW5aO$,pm[| ZfnUmEײq\Vk4.=IV6.'O\S::ܛzFc0ٗydGL$i3bTP-13,ټ^r˿OvРڽFIt%v[T7C!B~Rf؄i#T|URI/GEؘQ&R^ˀNn`؄ɷ5`NXAC_DY2D:4{Tv`,0Iv`1ltheGU~&c2cMEܳ|&h#) pz5mߗm.Z;Q(;_`<.8زip.gtJIs~NRtA"3i^-۪Vvx7suQ6f >up B;* ‚X 0 rDE7#f;q0p7Fi/J|!p[N&C:DץWtALq 5~uiIa3XwekG 4@ E(ҁ{/'Lܬ!-8#3_J4y;Jr~%ʖ)u ;(@cCk<[q!u-l;+Z 'FjF H8$NiEZ+c^ I T-{Rcoƾe+ &g ?EyL%Ax['C<@p`%m-6 2H^-B8Y|v8LDTp'tZn?1Ib ֡>(U.Wp}5pt)۟O}d)jx/@R^ >;PEs~4>hBAu[IP!` %E4s#R6Hc]5 jz#2b ,Hן6^W_TȟPLҿ(x9~4SƘí{3o1J/&wBs>eU7l LYZMg,B"bF.t|5g1ZIU &,Lc2nH9:Z':>2OS B6V&-PJ1Ɇ$oMFh gEaB6yl: |!࿏F|?4 <1H1FHx$N]qfb0CDQe{$$%ɒ !x kL0Rۉ3o|M%G1}f~IĆJ:MXdP$4点rAAP߄Y΂Qs/КD_a֑d]hVl,,`oo& WHf wHH@XFX5]}e$*k9=v%G;Y߅)֍s_ٻUKI7x*,'ߟI+IJc$4A QR'>c3!JR fF8[s cr_ !7A4At_RkACQr0Ch ߠ7gۜ;հe5J ŀbsek$fcFlEcD)FeJE-"ʗ>sWT$h'!ԓɧbhamh|q:b%fr IC lK{S #K9;wR cүDa[E!,HVĢ@fNhRYや!bߜyQAl_h2%Rx"%IUgφv:eiJK˔=K -=옥bg~v3:ffi\R*愳[혥%biN8:ei ˡLٳ YڙCR4'ғYUiP{$=혙SKJМpvKۃNzh FPZN1>I?u,XېI=5)}K-uGg{Y,8[*goh:aKJ AH ;\fT%aa*ʾtTpvP8{$*QphjxIw(&p1&wT#k0h"kzed.YqNJc-BK"-h*"ι"|W+ %2B2 oT]\u%ekU C*H-Tjh9#u",^;< p,\#k/myjH-\7 ׃jk2PFH-\㛅kbM4p9PH-XˆEKpH-\ۅk ZT(D6RhYUWGALȼaydx<2G^-r 78.0=\+{9j饡CE㫟 QbUߋ!o,`K!%X`M. ֽR>te[l {! ktieqKƗ^0%iXadt2zf>^30{0\}EwͿ ;_; JI7 E:pmǎ,^.yFelj>A"7q FtpW]5X9ߗU.y4,0_N4*p"Z [ټ1 %Ț:ֽmsܨp6~t Ρek~Sn@WR;@ryMkNǭ#\7-;Btd -CT JQD2r;3{oxYύN!SpUY&bR}ڏF#đ``p#PuÈgҏw譓+)@="5WHi+Ϧ7y3wG #l9^54Iv)PF~Ngj3̻f&I ʡ&I C]OI>r4wQs3蹘 Rإ`Hq,q[ =); s 3g'/UxЂbA>툃]'nOj8ŤV hه Martin Linnemann2015-03-01T17:26:12.312015-03-01T17:52:11.03Martin LinnemannPT10M3S2OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PKaFMETA-INF/manifest.xmln }zP& `ID`G*ɶtZlNGx fbSh$siR@U4Qr%i;I~5XyPpFtbъ8b/ Nt5dm):TL0üʛƴ)\ŵPZ t 1a“z pT v^}HQ{/ofOIoD =ӫut0xzu~PKjҠ">PKaF^2 ''mimetypePKaFMConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/progressbar/PKaFQConfigurations2/menubar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/statusbar/PKaFConfigurations2/toolbar/PKaF-Configurations2/toolpanel/PKaF3eThumbnails/thumbnail.pngPKaF»B1p content.xmlPKaF6:=(+! settings.xmlPKaF Ɇ .styles.xmlPKaFh >manifest.rdfPKaFfQV}meta.xmlPKaFjҠ">"META-INF/manifest.xmlPKp$pandoc-3.1.3/test/odt/odt/citation.odt0000644000000000000000000002513207346545000016033 0ustar0000000000000000PKaF^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKaFConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/menubar/PKaFConfigurations2/progressbar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/toolbar/PKaFConfigurations2/statusbar/PKaFConfigurations2/toolpanel/PKaF.fThumbnails/thumbnail.pngPNG  IHDRzAIDATxъ0l v9z><%!J!mǾ??>(胢>(胢>(胢>(>mk:Xuej]<1ϵ{ 1e~z׳>?x_(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(,c!!2IENDB`PKaF content.xmln6} Cz$vY(i łhXJTE*o}C}>IȉHIW+E$8C7?`GG78kcb6޽޼0^_~m+9}a:>_ֵ!NG+XkU^%c;\imĸ-Au'hSĸ(,m!E-|2Ⱥ ADq6B+ێ؊g wd\IkQH+ױ1r0nOzXIbH~mpX;5H{TͮvE*RQX6S3>ޙ[W01sBX$UNHTEXtP 4 w:mu]4C"pX0w4wu3,i`77L—S[5ܭ7{֘zFK(4>7MHJm)6s}!,!⫐ u_p`A+?2!.]#$/P%\`91+UG`l n$ַ|4Hyx12yap(-ScƘA='vW7(Ň@NNlz#?x<:c6̫{>Ȃ;,4DI\̟,䦹(io.q8=l8ĭ0+Ϣr穰pepZOM>ğ}/&[獲UdDCwJRA·nVi"'B8/N O|zȘE _hMD)#(P@ub~:~mmlfM̥50!nd3bҔK!ncsk>o^2q#[Xf\Rְ\ q瓆%si rٙ5k%h d<}Z^4\K\G#j@kĢ5NA'h`FA,Z#(t: Fk]`5: FkĢ5΂Ah`FQ,Z#$tK_4yF~FcbF t3yݒڰ7寖[­+ GXe`a'4U' W*CcXe*@a}12aZV$*S$ qպzVz1XXkqiպV1XZBZx#\Z, ?zK¥^Gpi_iC/?zK=Go`iW+XZ.VTiÆB9-TYp (:,KB҂AUF\H&HNY^^;V3VҸP(tk]nȆ Q?P#/DDsC8oic$_c93.k꽑.G19D$2-#U IPKʞ|vPKaF settings.xmlZ]s:}"w ioa:H2o^Y+L/1艉%JqήX=w杁 0r~OO?8!i T4CS-_yMdd1 ,k̔_˧+/2&iV;TyѨf*Z"( dE5;[oi^kc[kOm֮֟{oQF^N8B/DLAo)" `kB9=Vp!>cB,eKwmU\J :pk(\e㸤}'I|*iI=uJgBG{RQh 2<$mY8"v6omħ],0(i@U >F}k*@x8R [*EfM;T;c\(5AM`iKr09ĽqD@a8dMe8a fځm?|QCe5 DxSPM4TJѤJEiʂ1aFx{ TUGn[&S&T=H璌66P r^Pc06{[k~hs (tDi,Q&`A $\%Nu9O '!3{9Ajl'Ye9]+hMF٘ @)rTl9#TWa\ rDEmAᛱaj8a2~e4Eq },&:D]ףWtj(,ӐD/>.9Ih, Qc _N^CZqFfhvh?,$+*--SrI!PeIB$&yC 5 7VNՖd)qq"Ӛ|5: $zt X] )` 6?O:L`kMPwBojA^KZȴ%}͙20SrM1WgO|md6_>*buCngSxa(Wjk‘ØbSUu.LTӟz mD@ , -ϣ"_,4lMrp-˜D`V!aJ{LԦ ݕ$|q7 _[Q?oOt==Twӡ PKca](+!PKaF styles.xml]ݲSPlMra dl%leff/f*e*ϒG˓%Y0XbPH꯻%?nVA S=pO֤?9OlJmɣ >u8|(!cV8yLGP =܏+•5̪t7iSaƻ#f{̪uSa 6U紩& 9|Aa%$b@"Y+C&)^3n{yGQx ]H1J3qJ`72khh ~w;l}Lȧk :Npjmvo୴m`B$B,֒ ՝2?yyjc<$]Zbc4GA8BbMN>;`EAD>Yl:|!VO َ,ݲ :9H9FHx4J]q&K0!d=Pؒqq FQp -L4wߋ77|B2KӂERs.+oKI{M7uI: ҇Ҝ;$ wk LFK"V|l1 +R EY襙Pf vHHO ,C #]e*k)=u%G;y߅i֍羪wa3."6=(K#bCϔ`mıqFc g(J۱ushoGVJ8]s C _!s/@IÃ)i_?006`PUBï[ݰe!ŀ"]3k$nc|EmCD)eZE-"ɗ>sWt$h Qbham<ݏd5n0}Gwb4{ķDZ^_5=QqʤX8dAnnƤ`[v84YhK1Ik*M;"OZO|b[q^bʺhmK8Rn?}S 3zS |s($Y/[A`/ɭ}e#@$vURT;lګm߃.Q4nB[suk9&~hVk(d.@H;KR2Zk㗊qŏП(MC:]7*vW,#܌WV/:e'Kk4Ϯ5ieJۜg ]<0֩ľqyRٻSc)&@t?s$vgkXԇ¶YQYٕxMJf[x iX%W'Ǣ^-؄7Ϟ #MY<46RS_E4.:G^GGu*nP-Kej^&D< J2 wF7&YInt+|GVهC{+;JʇmAON|Ђf@({S[au9 ƾ5ۊCf]^\jPR*ˊ vN&{6{Svz󠵴Jٱ$҃;6 TOnፙy v.)C -=1KKJ҂prK?ܔݞ=/*eҒprKoD䖞ܘG4*v%IOo%bhA8L=CzRvL- ǘzڟ:Pz1<^*.NWզӪPS-%UzI6SsjA-s hCo0.WmsNw3GrU;\T-,4Tn[G{zUl4A58'L;Ly`(.p6&w$TÞmJ5U2,Vظc%w -ܶ,bx,.\?Z){gd)^S}.!rѕZW cWA K P AaQ@\t55 qr9TCjzZz#ctMlmtI5Z&.7Ё%..R jr ҿ*%..R z~€!Jˮqo0WG=ǀyPydp/)v <{IDZjZH^)jznrs7CXb+5j `K!%X`M ֽRt[l {!kxneqK^Q6_4,_2K~k~Q^'B]\O:52~8҃5:8te&4_L4*"u@ CyƀT k fNl@W,n бkS#FWy_4)E.敔[t41@ yM[Gl@[wn ao0nRU5T pNY/+h^܎IIͽ*IvkFKD#N,QF2tGq1}~(uD?@~FfWiouD1J5)_q4WR@ q9IL8Qw@R@44FB/+#x-Ov$% ;fNS* `N~e~;퍍3̻ D4F$UÙ߆j Uw;r47K[+)®v)Iuvv&e'uka期Ů ku,g r Martin Linnemann2015-03-01T17:26:12.312015-03-01T18:04:58.76Martin LinnemannPT10M3S2OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PKaFMETA-INF/manifest.xmln }zP& `ID`G*ɶtZlNGx fbSh$siR@U4Qr%i;I~5XyPpFtbъ8b/ Nt5dm):TL0üʛƴ)\ŵPZ t 1a“z pT v^}HQ{/ofOIoD =ӫut0xzu~PKjҠ">PKaF^2 ''mimetypePKaFMConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/menubar/PKaFMConfigurations2/progressbar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/toolbar/PKaFConfigurations2/statusbar/PKaF-Configurations2/toolpanel/PKaF.feThumbnails/thumbnail.pngPKaFʞ|v content.xmlPKaFca](+! settings.xmlPKaF? styles.xmlPKaFh manifest.rdfPKaF'DN meta.xmlPKaFjҠ">o$META-INF/manifest.xmlPKp%pandoc-3.1.3/test/odt/odt/endnote.odt0000644000000000000000000002530607346545000015660 0ustar0000000000000000PKшaF^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKшaFConfigurations2/floater/PKшaF'Configurations2/accelerator/current.xmlPKPKшaFConfigurations2/images/Bitmaps/PKшaFConfigurations2/menubar/PKшaFConfigurations2/progressbar/PKшaFConfigurations2/popupmenu/PKшaFConfigurations2/toolbar/PKшaFConfigurations2/statusbar/PKшaFConfigurations2/toolpanel/PKшaF Thumbnails/thumbnail.pngPNG  IHDRzAIDATxA @@фe[}TZi i-#WCWF v?͗]}k7)l&?N-;A"t}19ݽ"˭xlʠȋQT.Ru;m7)JЧr ^E/)Yr'Dm@%KA؎͘L>BrC<47}I-RB}= k?0u9I##3ޓW(=v[r,n4gя2^*Nwj"I-LKIB,Z~cOVkl%9%|DJH?4)Oi%)Ke?1Q"2[7z[fbAӯkF674}GH63UˮMT[t)oUi]cs֧m̵/3"vsJGRa\M&M|VekCX]_ HĊ0=*{G_ >[?~DzL{㮺X 3la 3ǣnGet_v?_z(||[U.7)U*ol7y͵o^?%n 9[}[Hej^Ѻ?6[eB#\Y_/SS$r'Hn~UxogQkzvQ!cЎP0A4*tteK\=K R̒!, ܶUqek(5r?wÍj(zm O#HZPO]+*@̸?R 1{H*EeM;T[]y(5AaaK?5rD@a8`e(a fM?|Qj5EPM4PJJEiȂ61aCs{ .{TZ'n{&S&ZT=Hg62P r^P#0&[k~lqr/(tXDAFr;- 2fO.4s81KG B?5Sc*VyFn2@"ħNA(b; %: Bh8l7(j ߌ S)(íN (;(]yf8i3p$*p.UtlGPCgQd6#ztWvQxH-0@dXR,*pB32DCBOB2A.R_h,tHb-bg0.tУ> ߾bM?[:[pZI p0ć:)JHrNSF8B*=J<5̪tiSa[E=sfUڏѦ0sTx֜Z]E(%Ql~{.47Mo3xwiS{9_{}`YwzN_pC ׫ 㢱E<. (nl oWeW(]0?ca i_*/&Qi nUR um{+ܛZMLR+^-/8]|N8,TrlƖGG4N̛(Ў2]fbTɺ}_ ЭG7?O}dqSn s Ay|Aa-$Rf FM!coXGQxA-gCZ(Z+y(S9SF)Zn%d|kJKU)d )yƭ%w ;e~dBiVMdžKK,(HCPT :c*XQ-cc$[H%E~6C7tV[T'#)LF 3 sv6'Y'2Ty (,Ix ~&;q? h|u`?Oެo8E,Y$ʖ3qIIxi{l}ୡŜ$6s҇B%Gk}*[%@+@cɇޢuk sg%t !Y> Y'5GN-e@<î*9ǺƣO;dzNwndrZ1jr1^!Zl1/}e3%xX5mј3`4fćvltSTƑNl_Ɯn_j– ( P oz?0766򒃥J\Ue ~wg醵/P !T;ty-h ^H\<<`vɾpĊlQZasvmC-<6Vt h Qɇlham<ݏ_33 XmGc4{ė/L"F-]/񚞨8UeNY[-1)X&Mm!&a=tҪANϺhXo_y۫E0gd9nGy+yQn)S?uS ع3zSڌ̹BR-l 3pփ2H kQ;˃}!֫L-Q4.B[sT:൜yBu?`nTp\/JY y ;7^'),GN7}*T?a iHS|ZQF]XxtZ^qB=rHxkSJ, v5MK,Bf?w2 N:|UDaSs[$vW]2H?&cX*YblIq@N&D8tL(blö8))מ,4п |M. KB֩%׺2PAy(XǒO|l9v9gk -麑\^?ert}-4̝7Kő o`Ëzl4e[1:ħ!%[/3 +У#:clhj7(J ݔZx'd hJO#3tR ,=<ҭ0E.|bo!HXY:xUR6l R!W |_5[a4l'Jp67s ɱT zN&}6Դ{UvzsմJ)iZi*zϏᕩy z.(E 5=2M JEӂptM]ݞ=ЧCRҴ$]+Ӵ;ѧCRѴ ]ӓ+HBEϣ镩y<5鹠T-G״c_={χ*jI8De֞J ^ԠښsV[B=Ydcp.Ԫk*7 -ropvP9ips*^5>Abr8LL"W\BTS4TF-'jrJB5v9\\\-=kxZbVQ{k)e' EY=vY He05f ^.\ө|Y9JH-\1 '9UZ ՠ0[!rՐZF װ7689TCjẻXz#wMlwI5X&.7Ё%κ.R br ҿ*%κ.R rz€!J-^,`` z1)Vy)6VQڥS !9TvPMO խR$=3DU+X`N ֭R5i ` !KW("0B^aKV)k|jnEu#l(wÒ }~6 7{u/\? g_@p\ g_@p\ Iu@p\ȕp0\? gh߶|t5~a4u荻D^'Wu*wwХEl]0\#'#=X U8h{~b0Ҩd ņ^7)u+R)m^6@ǦMxՒ^Տss iS7+)hbZ" h̵:P!rހ\`Eȫ j<ˣ,1bfy~'y$wѫ.k)sD"KD#N,QdBikϧޚH .ˬ,{hKPb)sC)w&Ř)ɊӘ]s1I+v5|D?(ԫeUF?nNל V^q1e4z1^qqwv0>nN6gIc]hUT*&qA']_N760Zeňj7n~av[f3p[鬸K8B|.6!Lvv&E'>'ZfOV9s lay QQP\جeᔓZ*wՙ*6ܛ=o .! 吣dT_TǬv*9Eی(cP%PKpf PKшaFh manifest.rdf͓n0 Martin Linnemann2015-03-01T17:26:12.312015-03-01T18:06:33.87Martin LinnemannPT10M3S2OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PKшaFRE1META-INF/manifest.xmln @z=Lt@"TߏDJmtad=`;[d/eU}Wۮ6V!P1.T,z, :(-TZʩh_ K4X*jm Of[̩kdmVR8a>%s3b]hLJ:L0a˛Z7na-R` P7D𨹚l@w=&^FKSGw(}7O0sr%(p/3pOH|U?${(胢>(胢>(胢>(胢>(}f<]ؿx>e}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}P3: mIENDB`PK,aF content.xmlݎ6zS!3IU?Tbvޭ0U)6ۧh{ы>V6B2⛙ؿcK߼xE$Xk1F0o}x}.!vÀ6 =]IZ`EEtW$A*zd e\;ީS{`01pȯ;=Y*;BaiJbƋB4.hwًG-5tPwy#,Xk ?)2Cf= %]W`PIGK1\t| ;D!(K2k}#DgX0z} K~W+ S~rLKw|qxkM7yjA䡀W0X\-+a)tƸtj]h L,5Ƹ4j]h T,WCc|#\J, ?zK¥^RGp)_(C_>,?zK=åRGp)W#\JҒ^OUkgNىk< 1* K<^԰!!y%]1(]LKAșK7ĪFٛhA'1(z='qLYDI=,N~t#Dvf__Y$j,ƧSWuΚgx6ؓcOdž0T\%GgaZ7 r^ap0Cwܣ5+EPKO5WqPK,aF settings.xmlZs8~"IRZ \߄`5#lȥ`z[OL,iW߷+2'/4Gy흟ս\ίIs+x4iN5CS -_{Mdd1 ,k̔_k/2&ijl ռvh4jfjr燪gU|3z희74^kc[Wk)7[ۜ?ۭ]{aj5hkiM06#fk]\v%.3S$^NMT|nQ?#)19`(IeT ɶ…; a`1KN a ᮭ+[CiVYnmUEl}Q<^$P?6.SI&΄fRh gxB,BUlHcke+K]tY`Pqizz aWч#v^-^U")4*fåT) 3l41* jHDyjKX2!e)6avkl_|QCe4 DxSPM4TJѤJEiʂ1aG=ՆV}7)m*]$sIFL(EꭗL֚.\2:< q4QwQQ&`\Lٌf.'fD{Ajl'Ze9(hMF٘ @)sTl œX0.`;GQ[P`fln'8L# :}c&(tdA?˕6zTJӓ.s\B E]~ru؜%=څ2G}!i #`!Jr ~^)7{H ?̗MǶ# 9?IĊJ e\RH~YR!a-¸:CvBod{e9$YJ@'&5_M0c IsNz &KC1uIC!(s?X[q,KxYh3cm S^Щ,$mo, BWߟ4f3،$^ |>dbNeϸ\g}L;K (<0 8n=TUkx^iTQ6sޑޑ+(]k0 ?Si qж/[Q{QirnYR peõMs<KܛFM8؝FvNq|8 LTptږ'G$N,(Ў]: |{Q`]Ůdጆj`Ƴ7TOCqSv;9p'}xi??p|,?l.X_фD<{{SQRdqJ3V8ı&l$9b)j^戼~F K9\IЃ%+g ^Nh.Iqpsvp|C}y!F%<-CZ(Z{N_Q >d#K򸁧R!!1]|5rƀۧ99SX XHDȁeX sB>egt|>+D*<6^6xbD~"BbT'+(>:<ΊhDl#H:l!ߧb^bni)OF Rj@at{ j)sR4R #(e|0 ˙i Çb8!:oP%mӀE\0o\о%Eo|մXP^͂~ΊBFCwz#]0w+ޢ,tҌ7Hf 6HaH[X5'V-U@$jk)-v%G:Y߅)֍3_ٺuqРɼ;{)ʒu|, 6.HL]l0E 5c;6buOjN;ƑNt_FPrܖrQA$޴?0r%76JH]Uf~ݩu((*;[>_4{X{-;'17d /7h 'RȓZs+T?G; L>C k~%h0S6vT;&V9G,~Ex`1z\xʼneI40 DAnJA);M,*е[V zEk?B}E=^#'<#_Zs谶.ZNi4ϰd]u5;&J;`oEmA|WoLD"r)AV˖6.K@A$ vPꆭz|z=D=ŋ$yi+/SٙϫW#reFUF;;KqgÊє2$]3ǫS%3c5a#ln{AmH&I+|_IkZ")BYE'=.l [{B;?=_M|OkRB֫%צ\⠼JSlb)&Z=So7ݟqg ir׍TJX|c3vtu$,5%ȑax.}yh)ʶ cy! $;|14:R%nL܋?-$ro2{^%y> :i҇ ~[kB>gy{^=nEVdWv2̚D{J} .YBJԚxG#ǪFn۴kTx䀘M[Xjul|0 NY*g~AOD0B=(#kH&Fl@b E2зTX%}CHR;郭IJJ 7N(4Puli4m LAiRѴ \ӣӴ=( ̞\Sk\Rj愓kzrcNgM9~)Ms^eJEӂprMOoLLʔ9䚞ݘ'0-jz%HoLӹN%hN8-T=cz(S*cT]%gm,+uI͙HYrkRy e ˠ$[.-=$Pu hc֠\"uNFw=GgU;\E aa*^e۫pf7FizL:j<0͎9\;\%\=k|^Ϣ;VIwךkIe+eY>uY H7 \]l\t%eiU3C*H#T㫅j4@XV\t55L58>v9yjH#\W `YUNH#\ӫk6i#XB"`ͮ, "-ˡB"pͯ14P\vm/hjFuud44 7,GFNqKYOp%).0=H^)wj~nrѳA7CXb5`K!%X` ֽRte;$`;5>7X2H ִ#Xsu/aԯFIoX*h ٛ{a&`&`OJn+X&@@nQ6&Y[ݧUoŒX?5`I!|P.Dbh?qn \_dY>^-0_͕*p"ko@rEw}ƀ k fNl@W,n ЩkS-V7} ,/qj" hJʭ:2P-\m_5@E.Bt<M;yD5"zKb8$\z,Ftn`|-RhȘre"+e#N, WdBam%NLdEX\׀⦞ P\$86D*xj-Tb̊EIL/=]KSAPv[QuSY.,`"y#)Pi^8`:azN~ \'G Cxw HVJTJLN%*B#"`a(05 G^Շ5>v9 Oml8F\AB/Cʼn.́iN\O 0̜SKKAK$* y9[͔.V)&nt37ž=u| .9!Ր#_)Y JCe3*kł*PK֡e PK,aF manifest.rdf͓n0 Martin Linnemann2015-03-01T17:26:12.312015-03-01T18:17:24.40Martin LinnemannPT10M3S2OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PK,aFMETA-INF/manifest.xmln }zP& `ID`G*ɶtZlNGx fbSh$siR@U4Qr%i;I~5XyPpFtbъ8b/ Nt5dm):TL0üʛƴ)\ŵPZ t 1a“z pT v^}HQ{/ofOIoD =ӫut0xzu~PKjҠ">PK,aF^2 ''mimetypePK,aFMConfigurations2/floater/PK,aF'Configurations2/accelerator/current.xmlPK,aFConfigurations2/images/Bitmaps/PK,aFConfigurations2/progressbar/PK,aFQConfigurations2/menubar/PK,aFConfigurations2/popupmenu/PK,aFConfigurations2/statusbar/PK,aFConfigurations2/toolbar/PK,aF-Configurations2/toolpanel/PK,aF]²eThumbnails/thumbnail.pngPK,aFO5Wq Mcontent.xmlPK,aF*$+! settings.xmlPK,aF֡e  styles.xmlPK,aFh Zmanifest.rdfPK,aFw. meta.xmlPK,aFjҠ">$META-INF/manifest.xmlPKp&pandoc-3.1.3/test/odt/odt/expressionUnevaluated.odt0000644000000000000000000002511507346545000020617 0ustar0000000000000000PK,aF^2 ''mimetypeapplication/vnd.oasis.opendocument.textPK,aFConfigurations2/floater/PK,aF'Configurations2/accelerator/current.xmlPKPK,aFConfigurations2/images/Bitmaps/PK,aFConfigurations2/progressbar/PK,aFConfigurations2/menubar/PK,aFConfigurations2/popupmenu/PK,aFConfigurations2/statusbar/PK,aFConfigurations2/toolbar/PK,aFConfigurations2/toolpanel/PK,aF]²Thumbnails/thumbnail.pngPNG  IHDRzAyIDATx1 @ _VZ703j13ܚ>(胢>(胢>(胢>(胢>(}f<]ؿx>e}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}P3: mIENDB`PK aFS/Eq content.xmln6} Cz)$YFY $CvD)D)Qؾ){=$%EIKsI"r39?MD8ŮXCcc$]͹[KyYcaz,@z|{]#K%Ce"̗[ǥײnc.{n\x#:+=_97{)ZwuVrQ \(Ad$5H^bih;{.R[)VX]FX)zJqpyi@/Ta6,{#7ޗwww}#$43p i5[*/%Iij?cJU9;'~Y[)8{^,:hα66Z0uweơypv䴱Ib.P[T8ө℥Z{jܞDD-MiDƶ<ܫaaF%-7 N j#&7K5o ڻhdܕ/i]5dæ=nuY(uID1vъ#C:O =d#cz q,P!& mJб$S-"?P…n_SǨPY63WX tj'Џ@]ni4(/ly%T9HDoD3"E+-sslb1`5͕DRcԂG9}T2qIYŗ9fi4$C2e۶=dZ?eY }u.gfjafdM't)<&rnzlLWl̮Mɤy)]&55ӥ8,k,cSƙEM55Kq6Y5ֱFU `#`#F0`#F0׸#F0`#F0`ds3{r1YkXF%-krU_-GF yBo (Co& Co ňDof 9Eon@ыbA 2r-@b%WGWO1?????tOq=~h Hf OB"Eexd5 /(:VV*b{w׆l.A4æ&22$ !LΫ|bp[cQP5Y&(Y^(͸H.UүCyFyoa.APK,aF*$+! settings.xmlZs8~"IRZ \߄`5#lȥ`z[OL,iW߷+2'/4Gy흟ս\ίIs+x4iN5CS -_{Mdd1 ,k̔_k/2&ijl ռvh4jfjr燪gU|3z희74^kc[Wk)7[ۜ?ۭ]{aj5hkiM06#fk]\v%.3S$^NMT|nQ?#)19`(IeT ɶ…; a`1KN a ᮭ+[CiVYnmUEl}Q<^$P?6.SI&΄fRh gxB,BUlHcke+K]tY`Pqizz aWч#v^-^U")4*fåT) 3l41* jHDyjKX2!e)6avkl_|QCe4 DxSPM4TJѤJEiʂ1aG=ՆV}7)m*]$sIFL(EꭗL֚.\2:< q4QwQQ&`\Lٌf.'fD{Ajl'Ze9(hMF٘ @)sTl œX0.`;GQ[P`fln'8L# :}c&(tdA?˕6zTJӓ.s\B E]~ru؜%=څ2G}!i #`!Jr ~^)7{H ?̗MǶ# 9?IĊJ e\RH~YR!a-¸:CvBod{e9$YJ@'&5_M0c IsNz &KC1uIC!(s?X[q,KxYh3cm S^Щ,$mo, BWߟ4f3،$^ |>dbNeϸ\g}L;K (<0 8n=TUkx^iTQ6sޑޑ+(]k0 ?Si qж/[Q{QirnYR peõMs<KܛFM8؝FvNq|8 LTptږ'G$N,(Ў]: |{Q`]Ůdጆj`Ƴ7TOCqSv;9p'}xi??p|,?l.X_фD<{{SQRdqJ3V8ı&l$9b)j^戼~F K9\IЃ%+g ^Nh.Iqpsvp|C}y!F%<-CZ(Z{N_Q >d#K򸁧R!!1]|5rƀۧ99SX XHDȁeX sB>egt|>+D*<6^6xbD~"BbT'+(>:<ΊhDl#H:l!ߧb^bni)OF Rj@at{ j)sR4R #(e|0 ˙i Çb8!:oP%mӀE\0o\о%Eo|մXP^͂~ΊBFCwz#]0w+ޢ,tҌ7Hf 6HaH[X5'V-U@$jk)-v%G:Y߅)֍3_ٺuqРɼ;{)ʒu|, 6.HL]l0E 5c;6buOjN;ƑNt_FPrܖrQA$޴?0r%76JH]Uf~ݩu((*;[>_4{X{-;'17d /7h 'RȓZs+T?G; L>C k~%h0S6vT;&V9G,~Ex`1z\xʼneI40 DAnJA);M,*е[V zEk?B}E=^#'<#_Zs谶.ZNi4ϰd]u5;&J;`oEmA|WoLD"r)AV˖6.K@A$ vPꆭz|z=D=ŋ$yi+/SٙϫW#reFUF;;KqgÊє2$]3ǫS%3c5a#ln{AmH&I+|_IkZ")BYE'=.l [{B;?=_M|OkRB֫%צ\⠼JSlb)&Z=So7ݟqg ir׍TJX|c3vtu$,5%ȑax.}yh)ʶ cy! $;|14:R%nL܋?-$ro2{^%y> :i҇ ~[kB>gy{^=nEVdWv2̚D{J} .YBJԚxG#ǪFn۴kTx䀘M[Xjul|0 NY*g~AOD0B=(#kH&Fl@b E2зTX%}CHR;郭IJJ 7N(4Puli4m LAiRѴ \ӣӴ=( ̞\Sk\Rj愓kzrcNgM9~)Ms^eJEӂprMOoLLʔ9䚞ݘ'0-jz%HoLӹN%hN8-T=cz(S*cT]%gm,+uI͙HYrkRy e ˠ$[.-=$Pu hc֠\"uNFw=GgU;\E aa*^e۫pf7FizL:j<0͎9\;\%\=k|^Ϣ;VIwךkIe+eY>uY H7 \]l\t%eiU3C*H#T㫅j4@XV\t55L58>v9yjH#\W `YUNH#\ӫk6i#XB"`ͮ, "-ˡB"pͯ14P\vm/hjFuud44 7,GFNqKYOp%).0=H^)wj~nrѳA7CXb5`K!%X` ֽRte;$`;5>7X2H ִ#Xsu/aԯFIoX*h ٛ{a&`&`OJn+X&@@nQ6&Y[ݧUoŒX?5`I!|P.Dbh?qn \_dY>^-0_͕*p"ko@rEw}ƀ k fNl@W,n ЩkS-V7} ,/qj" hJʭ:2P-\m_5@E.Bt<M;yD5"zKb8$\z,Ftn`|-RhȘre"+e#N, WdBam%NLdEX\׀⦞ P\$86D*xj-Tb̊EIL/=]KSAPv[QuSY.,`"y#)Pi^8`:azN~ \'G Cxw HVJTJLN%*B#"`a(05 G^Շ5>v9 Oml8F\AB/Cʼn.́iN\O 0̜SKKAK$* y9[͔.V)&nt37ž=u| .9!Ր#_)Y JCe3*kł*PK֡e PK,aFh manifest.rdf͓n0 Martin Linnemann2015-03-01T17:26:12.312015-03-01T18:17:24.40Martin LinnemannPT10M3S2OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PK,aFjҠ">META-INF/manifest.xmln }zP& `ID`G*ɶtZlNGx fbSh$siR@U4Qr%i;I~5XyPpFtbъ8b/ Nt5dm):TL0üʛƴ)\ŵPZ t 1a“z pT v^}HQ{/ofOIoD =ӫut0xzu~PKjҠ">PK,aF^2 ''mimetypePK,aFMConfigurations2/floater/PK,aF'Configurations2/accelerator/current.xmlPK,aFConfigurations2/images/Bitmaps/PK,aFConfigurations2/progressbar/PK,aFQConfigurations2/menubar/PK,aFConfigurations2/popupmenu/PK,aFConfigurations2/statusbar/PK,aFConfigurations2/toolbar/PK,aF-Configurations2/toolpanel/PK,aF]²eThumbnails/thumbnail.pngPK aFS/Eq  Mcontent.xmlPK,aF*$+! d settings.xmlPK,aF֡e  styles.xmlPK,aFh manifest.rdfPK,aFw.B meta.xmlPK,aFjҠ">b$META-INF/manifest.xmlPKp%pandoc-3.1.3/test/odt/odt/externalLink.odt0000644000000000000000000002475707346545000016675 0ustar0000000000000000PKaF^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKaFConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/progressbar/PKaFConfigurations2/menubar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/statusbar/PKaFConfigurations2/toolbar/PKaFConfigurations2/toolpanel/PKaF|e))Thumbnails/thumbnail.pngPNG  IHDRzAIDATxjP {ѓ;Yw~#7j9?®7G: x}AE}PAE}PAE}PAE}P1Mu6My~[ec$;Ȳ vU_6{?;؎o.wt{ËMu7+> .z%E>V$ˉHIG#E$y/;y I8[X#gh 0Oza}a _>fqx39׵ k+؜#I䜡yyY5[t{l>lO|ѲzϱqhWYBP+^y/ D7=%ׅpM.ҍk{]4=S:m#Tu|6?$ XT n]9#%6HT΍įw}mJ\7P>lOB Vsγ*@ᎇésֻGwDX̽G=D,<( ؍\J,U dՙK6a2B t reYU08& hrWZ~) g҇gd?|<.(K\iJ2d:xbALU`y[b;Uz褕nV^!>z7x8 bkDGv$ X?nӂ&rO4 d)HAǚטA a . 2-EH"; ]_o=-brC|B., #d GMFa1켷 š:HKbn, Ƣb"ge>6S)KLvW`ݕXxrxE;~5?؁gWZʕ6oכ{) Y"51?ʹHuC f3BhR t*{ױه)Fsa_ٴs& pc"\m8m6J-,P 뚩wQLo/r afC e=t&&@bM2#)Ccel,a,Y].ڥ10g΂;i=.GcX}&zI]3F6q.Fua966uӚ%ui y73%h Es>^R\q#;s&5$a 9hUWF#0A7`FJ,F#h-Z h-b4V1A[tE#hb4V1A+`FB,F#h)Z hm`ZR#16#l}3crZr_zk,ƕ"堷j*zq6">PW[\ +a)= tڸtj\ H-5ڸ4j\ P-WMcf~XF.t?:eN2G`C-Z]?Όae2Gp3)\F,t?EE[-bCM: >!Eo#!IB3J2HHMEKV7h̭T󿽳&ߘ6vuVTln#Wy o3bV piV+x}bxh}r덏N <ڻzQ>p1 :s[ ZFPLGO.4aϘG,p][l Zg^UmEײq\Vl|:!@deh`dR[t(zk@m6L(E]T/0J#\X˘i0@̅_ĬaPC2sc+*}iUލbfd١`D(OP9Ǟ0g*BCYnS`fln'8L# :}c&(tdA?˕6zTJӓ.s\B E]~ru؜%=څ2G}!i #`!Jr ~^)7H ?̗Mƶ$bEer].) ,)X0a\xb}Hƀ|q ; VÉQڲс,%N NxZ֚&Wp@$[_`9"˗!,I O}ͩ ~R]-5kIw@ӷ9T&uj[n 7 ӝ~\זY@fe@ ᓢ+VY7ƌ}6WreVC 9)6PUDYaIh0F b_0mѐ2x<((RK:1!w$yM >˖@B S;f6h%᫋-89Pmڊ1Ȏ@]EPyЯWPK'),!PKaF styles.xml]ݒSP>T€ `MR٪=8k,ثk6 [EY0.ΒշwSt|WR8nlTecx^jLP7>#9#O]td: DO/}Q=S5& !PP6\{8})%vE[XUF>k&~n*c:ifgi1E cJׁ>(U.cSpF5ptǛ֟z릴V{0/, bnh鴟(\2z9e;A1 s(TH#j>ǾBGI)\>TX}h?^ԅ~F K9=¤kCJŊ E$ꇸKR>e9Z?8?veA!-c|fCĩy@IEHHLѣ1Y!lL8}2Vwb D$B.qsEb ՞2?񹇬4zЙ+ylte3l8N&RB=L8+ ac`ӑ Еm d=L['#) @at f)s$iA#(em}q&da;q +fIudP(4点rAAPxXPW~UgA(͹hMQH`.Z4y`+67( 4 i8,a`)|ːvYӱhwY Jq+d}N羲wafT].k& ,YUXN ?nÏsP~k68M:1T:JP~82S銞hXW!Ş]xJOM'V4%S= ~͉S *F1,1`&رl>'iJ*{-;'1ċ %ǖi7b\iT"r|3G|EeX$z2_ m= KQUwT'&V9}@l$b2҅U&Ej`;ap.K@A$5Q;ۃcKT;lګn?.^4VnB([sTzk9󊇪&~\kV .܀K;KR3 :i>qOпey\㡜W)NuKA*ܫWa>:b%f9W~~r򧟪nWOfidWVaEo:Tr~lŹ)`; (_e{Y";9є(mQg[l*Uyu\AcnQC~bC6OZCOJhuyI$YkVxƢN@f}R[au 93[yQӓAj>+?Lɏ;^Hig夁gCK۝ZJK˔=K -=꘥bg~v3;ffk\R*愳[阥'%biN8:ei?ӡLٳ ғYڞӡLXni,iPsEz13Of:;9얶2?L3 b}lHAS/+ !kzGS(S.Օ5(IXpJYodz[R*GXNh @Ze*6. SyhU֥j|}Łt;L&uTٗ;\FTK4T@1A5C%Ö;@!r1fwJZFE w8VNr^)$r۲},b,rwR"#d(0Uxpfe \\+!pn.K \TAj,T=V/ŧG.rՐZkܟhXspp=mtM"W]krpMS \vK\u]͂eEKrH-\ۅk ZP\wm/xM#G]- bB #cѽ<8x'8.0=\R@5kP!eҳ7CXb˹4XRH ִ%XKu//]Y`^y-_{kɥA̯FI}oX+W Lm^> W_@ptA N:mR ncNpt(\gαcs5~ˡ4@st郻@^'W,u*wЅM0\GG s8翰 c؅BOߛFF%Nd6@ $7t :YS0suڼb5@'MxNՒՏn9[_)D敔Lu;P-\m^I" hNG!*DQM($)NL >^A0wod8v+, o1>Cpf8tNrnQu3[ur%G4?tcfȗ3m黦 =w$K}uYC*w0J~) {mR85#ˌYa05ILP5 "F%_go'Fb.Na!Pm1iىٜc9 Martin Linnemann2015-03-01T17:26:12.312015-03-01T17:55:51.85Martin LinnemannPT10M3S2OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PKaFMETA-INF/manifest.xmln }zP& `ID`G*ɶtZlNGx fbSh$siR@U4Qr%i;I~5XyPpFtbъ8b/ Nt5dm):TL0üʛƴ)\ŵPZ t 1a“z pT v^}HQ{/ofOIoD =ӫut0xzu~PKjҠ">PKaF^2 ''mimetypePKaFMConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/progressbar/PKaFQConfigurations2/menubar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/statusbar/PKaFConfigurations2/toolbar/PKaF-Configurations2/toolpanel/PKaF|e))eThumbnails/thumbnail.pngPKaF+7v content.xmlPKaF'),! settings.xmlPKaF<3 e 9styles.xmlPKaFh manifest.rdfPKaFy=_meta.xmlPKaFjҠ">$META-INF/manifest.xmlPKpi%pandoc-3.1.3/test/odt/odt/footnote.odt0000644000000000000000000002513307346545000016057 0ustar0000000000000000PKPaF^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKPaFConfigurations2/floater/PKPaF'Configurations2/accelerator/current.xmlPKPKPaFConfigurations2/images/Bitmaps/PKPaFConfigurations2/progressbar/PKPaFConfigurations2/menubar/PKPaFConfigurations2/popupmenu/PKPaFConfigurations2/statusbar/PKPaFConfigurations2/toolbar/PKPaFConfigurations2/toolpanel/PKPaFKThumbnails/thumbnail.pngPNG  IHDRzAIDATxъP@ф "ZF{ܤAyoOKE}PAE}PAE}PAE}PAy{4-Q[8Ǹ߯g bd(胢>(胢>(胢>(sѧ˿IENDB`PKPaF content.xmln6} Cz|k/ lC@o Zmb)R8){=$"'-%]X 9߈7o:ő -3y'l>ܼ/˯xxso`&m3 \.] " X̥7!f;ym :?Wj! ΥlRE$Lmg*}ᎇésH̽^q% F.XViV*aXCz=6aB"HA(]̍p#%f]}Z, hzSMą[n<ztcp ]&w!Z @@Ҡ8x8yZLovW?1G|4FL >0g\7([q<{!qܥuݲLNrx6ώ 7{(+ R^A]!I89lA=vʻs@-(ߑ` 69<N!.!F-|fa916t:HKr\7usQ>s1?r31Gpǩ%&{⫳yJ,P uaz: >!E6%!IA+'JwBFH%H-Eݤz(Ńs+ZָP(5pܯmrN,:l"!{|Tש|%,5etxzp]а ɹԘ{P~ngPKtvPKPaF settings.xmlZ[s:~?"K$t )- fN߄`5#Yِ!=1]i/߷+2g/4Gy.C.7{g3@3 As }F˥n7^d)Y i&& 7˚og73eƋIbX|@5F%L PPU췪U]o&SVV?V򿽳&ߘ6vuVsڍG*/V &fĬxzvy]r>Lqbxh7.kW|n^oT儏#\ N)&Q)ѓm >3&cs][W2Cx/ڪ6kP.il+w_}~(/u_|_ޫS'ϓLfqh ƅ/eeD'$i;"TaQ05i,3z-v6Rz.]T{o4MOA@` *Pb"˾5XO ^096A@=^ {-h]"z5grNmb˭6\aӞ<%r|`ChU 1cMᕡ\﫭GvcMTչ0QVvXbRL遴.-wL[4d{^a">h e`so␃lyƼ&JㄎogO@B S{f6h%᫋-89PmڊG?TOCeYZPK$,2!PKPaF styles.xml]_8OAmslnRd}_yr>ɵ$˖d!0%BGR[Ryz8N|>%.}Ř~d]waj$>I8|$(q򘺏$¡zYW)k*ΘeҦ”${f̲mSa 6. 1\PWF Spnрˡ5͆M0.Β5wSt|WRYq4(E&Ԙ]o02#9#O]td:Dߧ/}Qޒ؏Os|T(m!-qokٷXbwk]Ze4ೆagꦂ;jv1HY4OP`;UEu{3B>T? SM)Ww"1/$ra7H޽7o:'.Q`{9e{AA~ٯ$PGԼG?}"S!}pd'ɱ.H5H~L 1@rP oK*V ("_P?})cu}hd 92Fw7mD1LY-$JYĠ=>&+䑭'85vO}s0rJBLae0`!F!qcEb; ՞2?񹇬yj=`U<~2hDrňN6'Q~mRB=L8+ ac`ӑ OǶ}Kn ɈA1B QBH?윝`6B*%-Io SXcZv~q&l4w?7C6tP%i"B9̔ dχ&;Ɯ:s҇œ@k}&[@#@bcak?~C6nB0K7C G2<2XE]6c`q8ڕps>d}NX7~ޅEΨ\ ~g0EdUa9!6LJ^݆$@ r68M:1V:JP~82R銞hX!^_xJOM'V4%C=~۫u,Q )Lvlh4gX{-;#17d / hK'R6L1.`W*jT#?$(@{ L>C[k~%qӀl; `#$b2҅U&(lw Rfp7$nTK8y/!Ie.GALycE;Yys23ϪxO}#ғQ8fY3iEhJb6癿oΟmh gUxz]b?ظT.X4gD|8笝tMۖ?Vu#z2K#+d¿Y}ʅyP2e׫4,[ߣO~YE͑(jKp| ^C<)rl /P#zglr7(tWI4ݔZo%% C$6jCSFy^!=̘3@&e6 ''XVdYbϘy!Ey^C/f&f5((e ;+' T=Zi=(--SJ[z1KsBάfw̎=عT g1KO&S JҜpvK?tCR ғYڞCR4'ӎYQiPs$=똙'3 JМpvK[fL=cz(SJSL]&g^4՗I=gŴ)Ku{Y,SrfA.sj hCo.WmuIFw3G먲.U;\T-,a*6ʾtT=7]< \ *x`-wBbpppe#6XqВm":}# H>`ۅk6S/k"W] ktpYZ,uP R f : UWCjrn`yc6q^R 0p55%D*R fHH-Xӛ˂EKrH-\ۅk ZT(D6RhY&1!ѱ^ySx'8.0=\C5kP!Ţgo(ŐWi siiK^)^-69 `[54X2H֤%XKu/a̯FI}X+_W Lm^> W_@ptA N:mR ncNpt(\gαcsk/Ci~wp#Or˯2XDU 8E#a',|kUnz?Y`tb4SҨdLc?= u)Ǎp݀6Xt ЉkS-FWy[p/qj" hJJuP.r݀6t ٤urE}[I"RDoH م`dW-ۑS~sv27|M+RD+< vo, w4>"6&'%WpGQaD=LdHvGu2%e4?tcf0O]N5wG 'TM"$,d2E0*˞ &f]S>eP8ʱƮ*\S-MZ 6yq?cv\\.9C#ִD\n1̜SUA zy66wCB 7;w1vj8ŤVُ Martin Linnemann2015-03-01T17:26:12.312015-03-01T17:58:33.60Martin LinnemannPT10M3S2OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PKPaFMETA-INF/manifest.xmln }zP& `ID`G*ɶtZlNGx fbSh$siR@U4Qr%i;I~5XyPpFtbъ8b/ Nt5dm):TL0üʛƴ)\ŵPZ t 1a“z pT v^}HQ{/ofOIoD =ӫut0xzu~PKjҠ">PKPaF^2 ''mimetypePKPaFMConfigurations2/floater/PKPaF'Configurations2/accelerator/current.xmlPKPaFConfigurations2/images/Bitmaps/PKPaFConfigurations2/progressbar/PKPaFQConfigurations2/menubar/PKPaFConfigurations2/popupmenu/PKPaFConfigurations2/statusbar/PKPaFConfigurations2/toolbar/PKPaF-Configurations2/toolpanel/PKPaFKeThumbnails/thumbnail.pngPKPaFtv content.xmlPKPaF$,2! settings.xmlPKPaF} styles.xmlPKPaFh manifest.rdfPKPaF09O meta.xmlPKPaFjҠ">p$META-INF/manifest.xmlPKp%pandoc-3.1.3/test/odt/odt/formula.odt0000644000000000000000000003365407346545000015676 0ustar0000000000000000PKaF^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKaFConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/progressbar/PKaFConfigurations2/menubar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/statusbar/PKaFConfigurations2/toolbar/PKaFConfigurations2/toolpanel/PKaF0Object 1/Configurations2/accelerator/current.xmlPKPKaF(Object 1/Configurations2/images/Bitmaps/PKaF!Object 1/Configurations2/floater/PKaF%Object 1/Configurations2/progressbar/PKaF!Object 1/Configurations2/menubar/PKaF#Object 1/Configurations2/popupmenu/PKaF#Object 1/Configurations2/statusbar/PKaF!Object 1/Configurations2/toolbar/PKaF#Object 1/Configurations2/toolpanel/PKaFObject 1/content.xmluAn1 EʾB]RRf$m=IâoKKfrY5i ho\pdbU|\j]km}^OQ)!:4151AطVC Xiѯ c+L8POpDKA-|)3yBK E"N$ePO_~PKɓIPKaFObject 1/settings.xmlMs0 HH;$gaDz$9@}% Im'[Gj*`7"o;gu)4?tp6>xS:"kz:^D{H$'HOihomgTr<]6OQݳkw6#gQ}"@fB Qw]kN'C" 0m(,w^s=Y c Z [[LY0Bjfꪜ@5_4Nyh""A΀ ^97Yx^@aQ="JuEbQrHsy`zC"攧/`FR6x бr: *P#e+(a0@YdLu3bj^ g@e١& w:3$&aԷňobU&0(ư:X68Do bYMjڙfUF L"bUfXjm@B(j b #f}Q/G>ae' ZUᦾ4pU7^5$G Slmaݿ)@"p?L_`;*~F\[)G"(cROE:sYf@z* A_񸕪mi}TUk&="|]w`s-[p (7a0KWEtgD]$K X 3j:mRLBl#ź!gY\9J@zYjN)r%oOeQy2: RN(Xbn"9Oahu뛅[i4'o 7/PK`iPKaFObjectReplacements/Object 1 s qcd0dFid{i@! @2(5('d9Y @!$37X/\!(?71q @% `>fMPfHFv f;6$ āt b)ue?)l6I.Լܤv@rFlN4z3}p|q ӎ* pw_nɍԿ @[}VjTwq/LPK.GPKaFӔThumbnails/thumbnail.pngPNG  IHDRzAIDATxA m!JK=9o pj胢>(胢>(胢>(胢>({c 8]}ieD`V04PQYn72Mė'΍rn73]2/5\8p /0uQ)m];AL;4H :Swкɾxtr7o m{!$ogu% V*EfpXo`chAÒ!  ɂ1=Ewg/q 1#ķTȬ ԰ _ oQż.&KJ(Vw<=8zS'峻3mGkAềx'O\yր U.JV˚付zk(yYٰLSߍ|kCVDP`aP=+Փ/3 lA-vpsްBu*Ptubӝ]V#Sn˯(LT5@cطy"Es+D ӹe+I:j h-.P9ۧI>zdY@ջ*K[v߹MҞ%a@[ާ_wL\Km`F Z fLոawefB6rU(ڰ\ty\jsB6qWոab8%s ̴UzԆebpWh)t F`4vb1A#XFX0F#h 4hc4riF02ډhc4Fb1AcXFP0F#h(4ʥ-FF2#g:::nn9F3~Vµ+GXeAgaծ'TU'tW*CeXe*CGa}22jV$**S$: qUzQVzYXkqiUQVYZFaE"XFh.?Ze2GhE0?>XFh.?ZeV2G`E.Z ?ܓ R5L! \0$$7flŃ|olSNG-y|4)b>d6%`ЬoP) ^TkzAdJe'Ѕ阾fK|yTBl[a\AVoԸɍK0'zRيF7̺]IkT_[0d5!OKR89Ht0DKfuQP%á=: oPK'tqPKaF settings.xmlZ[s:~?"wB.9IRZ ɜ {jdGlIl=1]i/߷+2'/4Gy흟y'  _{nf3&k1Kj\pVP, Z6K߾tyx{ظxOT&ԪS::ڛzKn1Wy? IU9"v6F|,weAUƑ1 ]EyǷox TC!B~vRh7̰)`ǘ`'r ! ,͓b@?=JC؄Q&VeH'7#lCu-F }0}OA94PN(F+Xh+ :L\nT>[ODwLL{v %ml0^Pc06{[k%SGcE~U%n?.nv,P e4] i/qbV0A~j! ˱+ƶ*}iUލbfd١`D(OP9GAV % Bh qoƆvd0p7Fi/.J|!pY;N;L ts \ic9G4=27;%P8Y!'Y͉^"ݓ}]x+s7F .Y8+ 2q|)d~l;DPLqP%T?@% X" O30/na'Y!j81JW[6:C ĉpOkZ3d9 L0CW$bu2% X>0) w/ՂPt.pi=} J39Le`R6Vpc0iϪO|md6_>)buCngSxe(Wjk?BaL):&KLv@O=6"eiy LQMF?,4lMrp-Kakt0NUFdc&jSA`QrV ]7U=]dOthPKRr%+!PKaF styles.xml]͒)TrmrDRHxJVO "!1I3gɣI4,Nz &KC1uIC!(s?X[q,KxYh3cm S^Щ,$mo, BWߟ4f3،$^ |>dbNeϸ\g}L;K (<0 8n=TUkx^iTQ6sޑޑ+(]k0 ?Si qж/[Q{QirnYR peõMs<KܛFM8؝FvNq|8 LTptږ'G$N,(Ў]: |{Q`]Ůdጆj`Ƴ7TOCqSv;9p'}xi??p|,?l.X_фD<{{SQRdqJ3V8ı&l$9b)j^戼~F K9\IЃ%+g ^Nh.Iqpsvp|C}y!F%<-CZ(Z{N_Q >d#K򸁧R!!1]|5rƀۧ99SX XHDȁeX sB>egt|>+D*<6^6xbD~"BbT'+(>:<ΊhDl#H:l!ߧb^bni)OF Rj@at{ j)sR4R #(e|0 ˙i Çb8!:oP%mӀE\0o\о%Eo|մXP^͂~ΊBFCwz#]0w+ޢ,tҌ7Hf 6HaH[X5'V-U@$jk)-v%G:Y߅)֍3_ٺuqРɼ;{)ʒu|, 6.HL]l0E 5c;6buOjN;ƑNt_FPrܖrQA$޴?0r%76JH]Uf~ݩu((*;[>_4{X{-;'17d /7h 'RȓZs+T?G; L>C k~%h0S6vT;&V9G,~Ex`1z\xʼneI40 DAnJA);M,*е[V zEk?B}E=^#'<#_Zs谶.ZNi4ϰd]u5;&J;`oEmA|WoLD"r)AV˖6.K@A$ vPꆭz|z=D=ŋ$yi+/SٙϫW#reFUF;;KqgÊє2$]3ǫS%3c5a#ln{AmH&I+|_IkZ")BYE'=.l [{B;?=_M|OkRB֫%צ\⠼JSlb)&Z=So7ݟqg ir׍TJX|c3vtu$,5%ȑax.}yh)ʶ cy! $;|14:R%nL܋?-$ro2{^%y> :i҇ ~[kB>gy{^=nEVdWv2̚D{J} .YBJԚxG#ǪFn۴kTx䀘M[Xjul|0 NY*g~AOD0B=(#kH&Fl@b E2зTX%}CHR;郭IJJ 7N(4Puli4m LAiRѴ \ӣӴ=( ̞\Sk\Rj愓kzrcNgM9~)Ms^eJEӂprMOoLLʔ9䚞ݘ'0-jz%HoLӹN%hN8-T=cz(S*cT]%gm,+uI͙HYrkRy e ˠ$[.-=$Pu hc֠\"uNFw=GgU;\E aa*^e۫pf7FizL:j<0͎9\;\%\=k|^Ϣ;VIwךkIe+eY>uY H7 \]l\t%eiU3C*H#T㫅j4@XV\t55L58>v9yjH#\W `YUNH#\ӫk6i#XB"`ͮ, "-ˡB"pͯ14P\vm/hjFuud44 7,GFNqKYOp%).0=H^)wj~nrѳA7CXb5`K!%X` ֽRte;$`;5>7X2H ִ#Xsu/aԯFIoX*h ٛ{a&`&`OJn+X&@@nQ6&Y[ݧUoŒX?5`I!|P.Dbh?qn \_dY>^-0_͕*p"ko@rEw}ƀ k fNl@W,n ЩkS-V7} ,/qj" hJʭ:2P-\m_5@E.Bt<M;yD5"zKb8$\z,Ftn`|-RhȘre"+e#N, WdBam%NLdEX\׀⦞ P\$86D*xj-Tb̊EIL/=]KSAPv[QuSY.,`"y#)Pi^8`:azN~ \'G Cxw HVJTJLN%*B#"`a(05 G^Շ5>v9 Oml8F\AB/Cʼn.́iN\O 0̜SKKAK$* y9[͔.V)&nt37ž=u| .9!Ր#_)Y JCe3*kł*PK֡e PKaF manifest.rdf͓n0 Martin Linnemann2015-03-01T17:26:12.312015-03-01T18:07:27.67Martin LinnemannPT10M3S2OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PKaFMETA-INF/manifest.xml͕MO0 U\P u88 $gn8{nAِk#ϔL^:atA I@sS ]~Qo8C[V9rynХ^>_8-5S2%+JHHC JR7P4Rp2[ d yҕ2mN B İ˅ѕ]S8 !4romD %"?c:Ƞ'x+\GD4v D1h1MwT*ckY3K#*!KY#e)M= 8my; j7Oh&>vT4ƹ}wՖV6A C7zPKe&u:PKaF^2 ''mimetypePKaFMConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/progressbar/PKaFQConfigurations2/menubar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/statusbar/PKaFConfigurations2/toolbar/PKaF-Configurations2/toolpanel/PKaF0eObject 1/Configurations2/accelerator/current.xmlPKaF(Object 1/Configurations2/images/Bitmaps/PKaF! Object 1/Configurations2/floater/PKaF%JObject 1/Configurations2/progressbar/PKaF!Object 1/Configurations2/menubar/PKaF#Object 1/Configurations2/popupmenu/PKaF# Object 1/Configurations2/statusbar/PKaF!NObject 1/Configurations2/toolbar/PKaF#Object 1/Configurations2/toolpanel/PKaFɓIObject 1/content.xmlPKaF`iObject 1/settings.xmlPKaF.G ObjectReplacements/Object 1PKaFӔ Thumbnails/thumbnail.pngPKaF'tq content.xmlPKaFRr%+! settings.xmlPKaF֡e  styles.xmlPKaFh I(manifest.rdfPKaFs)meta.xmlPKaFe&u:-META-INF/manifest.xmlPK%q/pandoc-3.1.3/test/odt/odt/headers.odt0000644000000000000000000002442307346545000015636 0ustar0000000000000000PKaF^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKaFConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/menubar/PKaFConfigurations2/progressbar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/toolbar/PKaFConfigurations2/statusbar/PKaFConfigurations2/toolpanel/PKaF~^Thumbnails/thumbnail.pngPNG  IHDRzAIDATxj@@Q _.fmwLP4 䪙IxAE}PAE}PAE}PAE}P&x{{]xk~,1q߿w} q`>t#9n5uqSO1nGKsd/;~ <hȋRXУ1^C1+B_(胢 U"EQϕ͏o{?NJdY/0y!_W8\sOPAssWpύ"~]2\ݠ9E<:'_:.GMt4s~Tǽ%-Y E}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}P'yIENDB`PKaF content.xmln6} A G,v[[ i dmAKM,%"uSzcI:ԗDJ/IDΐ G^{Tu5?_~-39p/>ųs}383yτ3cSYzpq#㼷{QYڞE#㼷]Ugi Iͻ/YU=ƒAֽ (=%"Yn3w#+˞NV4dv&XblӶR[ T5>ix VN  U]U$5k#2>;ry_u &wZ{IۓT9! *flgeJF_wgw!8̙;gD,+JXx+4+|^0̘Kz଱䲱A|.L(! qB%fYaaZxtn)33o@"/l}qsO3.+0mm{I :xVY}&h#<cDd<;+ 2@!Z(X0 ?EFEPO ~Ipq"C>NzހBr Xh#ǗFfr&v7Cw_zF4  8("Opd=N<|x}d .l]c.p ςlO];PK}¢sWI2pE|)2Y-gnf%ᳱwL\b : fhN$aLyI]3c#7v].GcXx\.c#z\ưMkyI]3c#2G5$a}cW6dr`4tZ FiĢ4ւQA (`FR,J#h%KW4FM,J#h%Z Fi-Ģ4QAK(`FV.]ƥA}‹w2纙Cn\9qԀUVzBm\EzBOq52ԆU2gj*zaE6"E>NQWNS\aոQWS\+a*ոL?,t?:KåRGp)S!\JVk0sمtOsi>Pt0FPc#)J ! ހާ|*>~xĭiiwrD!Y'EmԻU~PK~ _PKaF settings.xmlZ[s:~?"w!mOa:H3o^Y+ҔK1Kڕ}R>-cq Jsy;`{t+Op64C h03Z.u3R%4MbM41Y|=)˿,O^dLҬVռzh4fjrǪgV/|3z흭74u 6gvkl>sXX۷5iM06#fkծڇq &'xiG{7]7jb.FR|A'brzKQ^˨ɶ…; h%.CXBkP, Z6 =xeqǢB5 (=O2et&tt0=(ޟ$`|(.OHvEN>[aj:(XnZz-F|*-weA1 ]E |װrhxT'#ϡT1C2J.oaS1UN W=B"JCPXGŒL }~bF8NX`wX!܌;ɷ5dNhA@i<DC:4MTdv`,`3S|KU*MtdD' "\JAnѡ|e5nwm.Z{Q(`,.Gر@981`6#hw ?ljY9 .$d W0HU?L;ͺ(CP:8S=ia,U`;GQ0NqF@nu(MEQEB/.2 ~i.QA+m,╦']f'" ?4$9K{ϵ oeCh GBb@=S&n~/%:m 9?IĊJ e\RH~^R!a,¸:CvBd{e9$YJ@'&5_M0c I?syTQQ6 _t2bͽCI(:}-h&$)wDm*lѐ]9J[q|sܡJ ~ ;uYOCuAz_ZPK*,!PKaF styles.xml]ݒSPJra n3=[$L^o [3ri*ϒG'#ɲ/ I;H:ݏOp4 уa[#c#Az0~ޑ2O|L]G='>y}68ϼ{H+”g̲t”wO-̘ei?A۶”l*/I[44&FYPSDuvc$=χZ+<  qigж 啇NZeq#Wxk Ƽoؗe7([k0 ?dӶ/ʻg*/ ܲ'LLՙsT玪 r `69wT*7ݠ 7,L@&o twh WXz \k'_)WH/@@z?. رܽsн9_] /܈^ 8Q;3B*U.W= cؕ oE\ K'2-x =R-m_SۦZ Martin Linnemann2015-03-01T17:26:12.312015-03-01T17:39:22.18Martin LinnemannPT10M3S2OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PKaFMETA-INF/manifest.xmln }zP& `ID`G*ɶtZlNGx fbSh$siR@U4Qr%i;I~5XyPpFtbъ8b/ Nt5dm):TL0üʛƴ)\ŵPZ t 1a“z pT v^}HQ{/ofOIoD =ӫut0xzu~PKjҠ">PKaF^2 ''mimetypePKaFMConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/menubar/PKaFMConfigurations2/progressbar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/toolbar/PKaFConfigurations2/statusbar/PKaF-Configurations2/toolpanel/PKaF~^eThumbnails/thumbnail.pngPKaF~ _ }content.xmlPKaF*,! settings.xmlPKaFz݋ ' styles.xmlPKaFh manifest.rdfPKaFmeta.xmlPKaFjҠ">(#META-INF/manifest.xmlPKp$pandoc-3.1.3/test/odt/odt/hiddenTextByStyle.odt0000644000000000000000000002505607346545000017642 0ustar0000000000000000PKaF^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKaFConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/menubar/PKaFConfigurations2/progressbar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/toolbar/PKaFConfigurations2/statusbar/PKaFConfigurations2/toolpanel/PKaF@}Thumbnails/thumbnail.pngPNG  IHDRzA_IDATx! @+? q`b{f\|PAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPfZ<>IENDB`PKaF content.xmln6} Czd#8~h] @o ZlGn}C}>IIQD5VdW 9p@wo`%Kñzw?3w u$t)߁&lf6" b ]k^{Ɵqe8Wu'`U}8E`_Yڊ}ZS mil8آvf]pl6Pnlr6TOC"`ʩv[݀rmƧx^uc/)a2dX QPu/i{*7Bac*?4 U: ;'zYϚ#a3wϚYiP4a„;YYD3c.Ó8&"rL$!tjG0Wo(m\~ljkd<#n 1 zg ou40XiqDe_$kǃ>ŘgD~Fns(OlsݺR|']кODkD>< ,f%Gccu(?̟vȚNqI<2c4fF6fN].GcXn&dR.c#ZY=.GcXf}lcS֩y_RnqM.GcXa؍5\%F5nbA+hXFZ0Z#h!ZEk5rF0Ek5VbAkhXFR0Z#h)ʥ+T#PaxQ#96Cd}3cl41 k,ƕ"堷j*zq6">PW[\ +a)= tڸtj\ H-5ڸ4j\ P-WMc|!\Z,t ?:K¥NGpi[hC?,t?:KåGpiS!\ZvAPg-$TYHa-Lj@3)T%C^ػe(׭"{"߫ʳoEy{_Z]lh1HS` Mg\f>|J6iŠ&hbrvv3SY .ȘY.ŇsTEѨf*V"* djwԽ㷮 7[ۜ?ۭ]{aj5hkiM06#fkկڇ)[;MMTߧ|n^oԎ8B/DLAo)" `kq:zpC'}Ƅ>X|%fIڪ85ju{VQ^ />/?/uO|\$ZvJgBG{R$m43'bλv*{H®G[T7 DSh!U!K;RfؔicLU|9URId _C'C؄Q&eH'7#lCy-F }0}OA94PN(F+Xh+ :L| =6|SULhS"AK2`B)-:o5`m%SGcE~U%n?.nv,Pe4] i¯qbV0A~j! ˱+ƶ*}iUލbfd١`D(OP9GAvZA3K@uƅPl'(j ߌ SDaVo^].B"v @8tr^*^izenv"KpOCND'\V<$\p,D)Vď |8ef}iRڡvd!'XQil\K ~¯K 4:$61̳EXRg`1 _NhBpbllt =$K֤ f!$#s`HeHKA|a"HS_sj߽zW BZкE-(k0IĖ[mt=+<%r|`ChU 1cMᕡ\'vcMTչ0QVvXbRL遴.-L[4d{^`">* 4Ԇe`so␃lyƼ&Jㄎo_eK@ Zj@)I;f6h%᫋-89Pmڊ1Ȏ@]EPyϯOֿPK+#T$+!PKaF styles.xml]͒)TrmrDRHxJVO "!1I3gɣI4,Nz &KC1uIC!(s?X[q,KxYh3cm S^Щ,$mo, BWߟ4f3،$^ |>dbNeϸ\g}L;K (<0 8n=TUkx^iTQ6sޑޑ+(]k0 ?Si qж/[Q{QirnYR peõMs<KܛFM8؝FvNq|8 LTptږ'G$N,(Ў]: |{Q`]Ůdጆj`Ƴ7TOCqSv;9p'}xi??p|,?l.X_фD<{{SQRdqJ3V8ı&l$9b)j^戼~F K9\IЃ%+g ^Nh.Iqpsvp|C}y!F%<-CZ(Z{N_Q >d#K򸁧R!!1]|5rƀۧ99SX XHDȁeX sB>egt|>+D*<6^6xbD~"BbT'+(>:<ΊhDl#H:l!ߧb^bni)OF Rj@at{ j)sR4R #(e|0 ˙i Çb8!:oP%mӀE\0o\о%Eo|մXP^͂~ΊBFCwz#]0w+ޢ,tҌ7Hf 6HaH[X5'V-U@$jk)-v%G:Y߅)֍3_ٺuqРɼ;{)ʒu|, 6.HL]l0E 5c;6buOjN;ƑNt_FPrܖrQA$޴?0r%76JH]Uf~ݩu((*;[>_4{X{-;'17d /7h 'RȓZs+T?G; L>C k~%h0S6vT;&V9G,~Ex`1z\xʼneI40 DAnJA);M,*е[V zEk?B}E=^#'<#_Zs谶.ZNi4ϰd]u5;&J;`oEmA|WoLD"r)AV˖6.K@A$ vPꆭz|z=D=ŋ$yi+/SٙϫW#reFUF;;KqgÊє2$]3ǫS%3c5a#ln{AmH&I+|_IkZ")BYE'=.l [{B;?=_M|OkRB֫%צ\⠼JSlb)&Z=So7ݟqg ir׍TJX|c3vtu$,5%ȑax.}yh)ʶ cy! $;|14:R%nL܋?-$ro2{^%y> :i҇ ~[kB>gy{^=nEVdWv2̚D{J} .YBJԚxG#ǪFn۴kTx䀘M[Xjul|0 NY*g~AOD0B=(#kH&Fl@b E2зTX%}CHR;郭IJJ 7N(4Puli4m LAiRѴ \ӣӴ=( ̞\Sk\Rj愓kzrcNgM9~)Ms^eJEӂprMOoLLʔ9䚞ݘ'0-jz%HoLӹN%hN8-T=cz(S*cT]%gm,+uI͙HYrkRy e ˠ$[.-=$Pu hc֠\"uNFw=GgU;\E aa*^e۫pf7FizL:j<0͎9\;\%\=k|^Ϣ;VIwךkIe+eY>uY H7 \]l\t%eiU3C*H#T㫅j4@XV\t55L58>v9yjH#\W `YUNH#\ӫk6i#XB"`ͮ, "-ˡB"pͯ14P\vm/hjFuud44 7,GFNqKYOp%).0=H^)wj~nrѳA7CXb5`K!%X` ֽRte;$`;5>7X2H ִ#Xsu/aԯFIoX*h ٛ{a&`&`OJn+X&@@nQ6&Y[ݧUoŒX?5`I!|P.Dbh?qn \_dY>^-0_͕*p"ko@rEw}ƀ k fNl@W,n ЩkS-V7} ,/qj" hJʭ:2P-\m_5@E.Bt<M;yD5"zKb8$\z,Ftn`|-RhȘre"+e#N, WdBam%NLdEX\׀⦞ P\$86D*xj-Tb̊EIL/=]KSAPv[QuSY.,`"y#)Pi^8`:azN~ \'G Cxw HVJTJLN%*B#"`a(05 G^Շ5>v9 Oml8F\AB/Cʼn.́iN\O 0̜SKKAK$* y9[͔.V)&nt37ž=u| .9!Ր#_)Y JCe3*kł*PK֡e PKaF manifest.rdf͓n0 Martin Linnemann2015-03-01T17:26:12.312015-03-01T18:08:10.12Martin LinnemannPT10M3S2OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PKaFMETA-INF/manifest.xmln }zP& `ID`G*ɶtZlNGx fbSh$siR@U4Qr%i;I~5XyPpFtbъ8b/ Nt5dm):TL0üʛƴ)\ŵPZ t 1a“z pT v^}HQ{/ofOIoD =ӫut0xzu~PKjҠ">PKaF^2 ''mimetypePKaFMConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/menubar/PKaFMConfigurations2/progressbar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/toolbar/PKaFConfigurations2/statusbar/PKaF-Configurations2/toolpanel/PKaF@}eThumbnails/thumbnail.pngPKaF6qgo 3content.xmlPKaF+#T$+! E settings.xmlPKaF֡e  styles.xmlPKaFh manifest.rdfPKaF9# meta.xmlPKaFjҠ">C$META-INF/manifest.xmlPKp%pandoc-3.1.3/test/odt/odt/hiddenTextByVariable.odt0000644000000000000000000002504407346545000020264 0ustar0000000000000000PKaF^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKaFConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/progressbar/PKaFConfigurations2/menubar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/statusbar/PKaFConfigurations2/toolbar/PKaFConfigurations2/toolpanel/PKaF@}Thumbnails/thumbnail.pngPNG  IHDRzA_IDATx! @+? q`b{f\|PAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPfZ<>IENDB`PKaF content.xmlM6z:YEU+ʹٕz[9`Slrh=ЏOR!3Fbo|<"540pxsn} -qqL\Tʧ3!>\ ;克 NIM!X LMAe![bYx#y@h፼@,2@xd MI|Yİ/|tQ^;:B%}"t370{ȏ#J M@$k!bv W~3}wX2@H%Z<#eпe):}t>v3Ÿ 1~x Je|OGFQ\C6AO!?JDa< kngl ˆ!H/Y!Ə פX! 6({,.,G/m|,? cY gMȔL>̟* flͦ͸aX%Ki ̬ĚrI2ZrkljM K>^d3k8o%h ˼̺5cwbLL!xch@M,#$t: F{Ģ=AGh`GU.xh@M,#$t: F{Ģ=AGh`GU.xJ@9UDt7iy2b#- ~kSp΁Vs[X q =պVSX{h{-ư>Ec\e>EOq^4U^VFc\eFOqt4UtVGƫ1?>XP?piCXP ?piC-ZwK B.(KJR.EC]4&1 S6׍r\DC &F4ӂAVOǔE@lXM{_Z]lh1HS` Mg\f>|J6iŠ&hbrvv3SY .ȘY.ŇsTEѨf*V"* djwԽ㷮 7[ۜ?ۭ]{aj5hkiM06#fkկڇ)[;MMTߧ|n^oԎ8B/DLAo)" `kq:zpC'}Ƅ>X|%fIڪ85ju{VQ^ />/?/uO|\$ZvJgBG{R$m43'bλv*{H®G[T7 DSh!U!K;RfؔicLU|9URId _C'C؄Q&eH'7#lCy-F }0}OA94PN(F+Xh+ :L| =6|SULhS"AK2`B)-:o5`m%SGcE~U%n?.nv,Pe4] i¯qbV0A~j! ˱+ƶ*}iUލbfd١`D(OP9GAvZA3K@uƅPl'(j ߌ SDaVo^].B"v @8tr^*^izenv"KpOCND'\V<$\p,D)Vď |8ef}iRڡvd!'XQil\K ~¯K 4:$61̳EXRg`1 _NhBpbllt =$K֤ f!$#s`HeHKA|a"HS_sj߽zW BZкE-(k0IĖ[mt=+<%r|`ChU 1cMᕡ\'vcMTչ0QVvXbRL遴.-L[4d{^`">* 4Ԇe`so␃lyƼ&Jㄎo_eK@ Zj@)I;f6h%᫋-89Pmڊ1Ȏ@]EPyϯOֿPK+#T$+!PKaF styles.xml]͒)TrmrDRHxJVO "!1I3gɣI4,Nz &KC1uIC!(s?X[q,KxYh3cm S^Щ,$mo, BWߟ4f3،$^ |>dbNeϸ\g}L;K (<0 8n=TUkx^iTQ6sޑޑ+(]k0 ?Si qж/[Q{QirnYR peõMs<KܛFM8؝FvNq|8 LTptږ'G$N,(Ў]: |{Q`]Ůdጆj`Ƴ7TOCqSv;9p'}xi??p|,?l.X_фD<{{SQRdqJ3V8ı&l$9b)j^戼~F K9\IЃ%+g ^Nh.Iqpsvp|C}y!F%<-CZ(Z{N_Q >d#K򸁧R!!1]|5rƀۧ99SX XHDȁeX sB>egt|>+D*<6^6xbD~"BbT'+(>:<ΊhDl#H:l!ߧb^bni)OF Rj@at{ j)sR4R #(e|0 ˙i Çb8!:oP%mӀE\0o\о%Eo|մXP^͂~ΊBFCwz#]0w+ޢ,tҌ7Hf 6HaH[X5'V-U@$jk)-v%G:Y߅)֍3_ٺuqРɼ;{)ʒu|, 6.HL]l0E 5c;6buOjN;ƑNt_FPrܖrQA$޴?0r%76JH]Uf~ݩu((*;[>_4{X{-;'17d /7h 'RȓZs+T?G; L>C k~%h0S6vT;&V9G,~Ex`1z\xʼneI40 DAnJA);M,*е[V zEk?B}E=^#'<#_Zs谶.ZNi4ϰd]u5;&J;`oEmA|WoLD"r)AV˖6.K@A$ vPꆭz|z=D=ŋ$yi+/SٙϫW#reFUF;;KqgÊє2$]3ǫS%3c5a#ln{AmH&I+|_IkZ")BYE'=.l [{B;?=_M|OkRB֫%צ\⠼JSlb)&Z=So7ݟqg ir׍TJX|c3vtu$,5%ȑax.}yh)ʶ cy! $;|14:R%nL܋?-$ro2{^%y> :i҇ ~[kB>gy{^=nEVdWv2̚D{J} .YBJԚxG#ǪFn۴kTx䀘M[Xjul|0 NY*g~AOD0B=(#kH&Fl@b E2зTX%}CHR;郭IJJ 7N(4Puli4m LAiRѴ \ӣӴ=( ̞\Sk\Rj愓kzrcNgM9~)Ms^eJEӂprMOoLLʔ9䚞ݘ'0-jz%HoLӹN%hN8-T=cz(S*cT]%gm,+uI͙HYrkRy e ˠ$[.-=$Pu hc֠\"uNFw=GgU;\E aa*^e۫pf7FizL:j<0͎9\;\%\=k|^Ϣ;VIwךkIe+eY>uY H7 \]l\t%eiU3C*H#T㫅j4@XV\t55L58>v9yjH#\W `YUNH#\ӫk6i#XB"`ͮ, "-ˡB"pͯ14P\vm/hjFuud44 7,GFNqKYOp%).0=H^)wj~nrѳA7CXb5`K!%X` ֽRte;$`;5>7X2H ִ#Xsu/aԯFIoX*h ٛ{a&`&`OJn+X&@@nQ6&Y[ݧUoŒX?5`I!|P.Dbh?qn \_dY>^-0_͕*p"ko@rEw}ƀ k fNl@W,n ЩkS-V7} ,/qj" hJʭ:2P-\m_5@E.Bt<M;yD5"zKb8$\z,Ftn`|-RhȘre"+e#N, WdBam%NLdEX\׀⦞ P\$86D*xj-Tb̊EIL/=]KSAPv[QuSY.,`"y#)Pi^8`:azN~ \'G Cxw HVJTJLN%*B#"`a(05 G^Շ5>v9 Oml8F\AB/Cʼn.́iN\O 0̜SKKAK$* y9[͔.V)&nt37ž=u| .9!Ր#_)Y JCe3*kł*PK֡e PKaF manifest.rdf͓n0 Martin Linnemann2015-03-01T17:26:12.312015-03-01T18:13:44.96Martin LinnemannPT10M3S2OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PKaFMETA-INF/manifest.xmln }zP& `ID`G*ɶtZlNGx fbSh$siR@U4Qr%i;I~5XyPpFtbъ8b/ Nt5dm):TL0üʛƴ)\ŵPZ t 1a“z pT v^}HQ{/ofOIoD =ӫut0xzu~PKjҠ">PKaF^2 ''mimetypePKaFMConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/progressbar/PKaFQConfigurations2/menubar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/statusbar/PKaFConfigurations2/toolbar/PKaF-Configurations2/toolpanel/PKaF@}eThumbnails/thumbnail.pngPKaF\cP/o 3content.xmlPKaF+#T$+! ; settings.xmlPKaF֡e  styles.xmlPKaFh manifest.rdfPKaFG  meta.xmlPKaFjҠ">9$META-INF/manifest.xmlPKp%pandoc-3.1.3/test/odt/odt/horizontalRule.odt0000644000000000000000000002362207346545000017244 0ustar0000000000000000PKaF^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKaFConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/menubar/PKaFConfigurations2/progressbar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/toolbar/PKaFConfigurations2/statusbar/PKaFConfigurations2/toolpanel/PKaFhThumbnails/thumbnail.pngPNG  IHDRzAvIDATx1 @EA=gOE\_kmp`>(胢>(胢>(胢>(胢>(Wsc+}m}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}P~~ {E[IENDB`PKaF content.xmlVM0WDԛ1TR`UZ JUNm@}1 K P<<όǞ=s6\y< IR.7?,TqʒT2g"$:K-E 7$93*lXINX~؃M!۲Kv3.Y\CvI՗찐Ԑ(S b/= UU @ MS\[[5* <p͙%}9l(Iީ!mzwnӑ%woN坤!7'vQxg@7:M/BAчvUo~6.g9%-/n'DF@As" ؾ.NjMkp2BJf1]1WDnLsqh,1 {rsTijLkQEd V @Z̷e[ 78S:2zTVc/ 7艋,j]=#zJ%=MNb?D R/ b-6^9۪Gkz6Gv0V;Oa-/[%*uޛ= ajQPj {7Vg΃Sj =hd5{dPx3);/,"|O#3X#xrOZ4>NΝړ 3Ldi:Q #57;FV[{hJpf4|WN#NlbL9]@FcCDv:4XbU1CZᰋT_aZ:fҳJkH)!y;(I;>1s 5Pm TUg:3icՀ:T݀|/SYg@V*1{==>~%5ǘVwb f1v߶gQECj!tbtfR.y"Wgh3,0/Ø.#"=YSՊR^FUg.I #j=-"^ xlB e>W2?4D4-4")/5 `wMc] 0UQ QAA!['ރPyzf28f5Q|/@gEi2kHłsR{,Lk9;GrS^tz.Tl Ųo0D;xr; R@tn:wjjjAsŐX×6^:eM<-{zK_,PK8D'PKaF styles.xml]ݎۺS Z-Z46mIErh#~\Yh}IQeRkH`f2 zO8N|>VhpW/iN>=Y.}=ff@8Lhdq8'(y68D8Bs{κ-LYSq,K9m*LydѢyόYbm*Ly4~NsILl"Q<~ۣNh>lv'j`fv (`Y2@npC ǍMRtjjO+i5cއw5wɲ5L_xӴ/ʻg*7ܲ޾? 󦔫mHKIy\lz y@=N ,#X6~cP/3 n BD<# E+tYqK%[?IuGAceO]'#]\Co(Lz>,X1?$QrBwI71[>gb^,wBs>U7lF1LYZM,BBbF.d<51܍SXLXHDȅe\sBeOt|!+dZX:s{0M1Z !B1b IDYJh gEAF6El:|!6࿏Fb?4 <1H1FHx$J]q&K0!]ؒqqԲZAǙ\i ),oo8йBiT \0W.h?ւ"?k4Ե_Y>}5JsZ+o:l8D4y؊cob -B7͸B0K7C G2=2Xel,C~%VYq+C[k~%qӀl; `>"~Ex`1jze|Bxʼn*bi`;aph|qSQV cd'3]Ğoʖza<y7ҿm]N0aaC5]JZI+)oY`<bɒW)uvlQeGOcf73.8k' 3z~ϜbTŸslL'\$1 X,҇*\7k\ [왋?haHV?Ƀ\>+?LaA(!UN:{6)K[Lٳ ңYڞh ]*vfg7cfv%bhN8Yz2j,]R*愳[Sak^eʞ얞tTʔ9얞vҎ:MK$Y<\R*愳[vԣp^eʞSd3]Gβ)2dmRyѢz e Qљd˥j8–zpwl;K4T9ZGu*vjq`9&SIlUWl0M0%PLbPMP P\ 5ldY;V+}h9ZmYD󽿲,b,rwR"#dkO(0Uxpfe \\+!pn.K \TAj,T=V'ãjH-\5O4q,r9TCjzY6Cet 5Y.?R%.R f iR9TH\u]5-M*"] 4,`QWGF}KyXydt/)r {IDZjJ.H^)jvirѳ2`Uߋ!o,`K!%XӖ`M/ ֽR~B5n ` %X`M. ֽ"tQR@ 7}m:S۹/th WX: ~k'_)7H'@@:(\kαcs5ˡ{5@st郻@^'2X׉>.Dngr8:j +/06]h?Y`th1)aiT2D@rCyc@J53'\7+]t{TQ-Ml^%N-Bm^ITE5:P.r݀t q4iBMTBtIWYm3fIHJ?7p !Hc21mFCO7@_=A!.GUk.QY'WRZzDNC7;|;VNok |{Gt%ڔ54Iv)v*(ڤpjFX6ٳD;ü 0`j؇j1S9ؽ@&տξߘ_7dA\F.C#bZӲq0sOyBQ-M*8x{ *@(/~7dSLjl}3wi9aBG[H5_:,y̒J_Q/EFPKy7M MPKaF manifest.rdf͓n0 Martin Linnemann2015-03-01T17:26:12.312015-03-01T20:40:11.46Martin LinnemannPT10M3S2OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PKaFMETA-INF/manifest.xmln }zP& `ID`G*ɶtZlNGx fbSh$siR@U4Qr%i;I~5XyPpFtbъ8b/ Nt5dm):TL0üʛƴ)\ŵPZ t 1a“z pT v^}HQ{/ofOIoD =ӫut0xzu~PKjҠ">PKaF^2 ''mimetypePKaFMConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/menubar/PKaFMConfigurations2/progressbar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/toolbar/PKaFConfigurations2/statusbar/PKaF-Configurations2/toolpanel/PKaFheThumbnails/thumbnail.pngPKaF]!y* Jcontent.xmlPKaF8D' settings.xmlPKaFy7M M styles.xmlPKaFh Hmanifest.rdfPKaFnWnmeta.xmlPKaFjҠ">!META-INF/manifest.xmlPKp #pandoc-3.1.3/test/odt/odt/image.odt0000644000000000000000000010112007346545000015273 0ustar0000000000000000PKaF^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKaFConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/progressbar/PKaFConfigurations2/menubar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/statusbar/PKaFConfigurations2/toolbar/PKaFConfigurations2/toolpanel/PKaF^,,Thumbnails/thumbnail.pngPNG  IHDRzAIDATxytet:d! eT.lQQDaP""1 *M2l#*0zDaQQAH `VY:RUuUWIN9=.U_}VM8?hӐ `A~,A ? X `A~,A ?"yAPEQd ,K@hS-,;\~(Cj9^QU9 (!h na|#<hv/TUA,l6]6 BvXV\'e(?0ݻOTUS5+K'rOmٹ0FS{"/gE#"T8&F]IbwPU%6 )5'>,h}&Z#5soee_(J`CAMøJa.CN# ",eAjFefTEk3{5.5-v- *alpP8 WZL3A>X>tO20ϘQ?NHd][-vE()xѢkDI1h wJ$\"/|:C5~rPk#Cb>tA ^CH"/Z뼷?쳤™G?fp1>Vi;fo>ܾc现(HF!U6Uv>}Z_ffkhh!(ofvV%a<~8a#:O==ڵfϞ԰R8M-IE7,(?3#xM 8NC[7bU}ىݻw 2ad"Ո=ƌCQ.BJfV;wΞʍUE=o|xcpD "t. MoƏ#G'I3p(ܷo_lznA!GPU3 v;@1.X*~۴iӔf9 P"aOCQ~`bœ⊉۱}i FJJ ~b\%Q "yü}cǎ(YQ'P`G9-.NDWh}&Z_\ 599{ndEXUyknTϛ7>YYY' U &! j[ŕu9fiii׮]`P Gd6;~nh1"ܹsa/%SR}ʢ 0III+W4ތ۷cccBccjQ.6ĺݰ'---֯1i{1*F "D#~bYlYJjytr% N8w%K X }}QטޔӰFfF=a%(ڿ! ()/9Hic;ٳg59ꍭݷt(6'L̂p2tPlֳgO3A0oɊmPǨfGS[[w ʕ+Wzt{ݺuӦ&hiۤ㩫G9s\)PzG>ڽ[Y_^|U1gΜӧ~+|52Aof;,7o3g)MHmvG8_yF9crs}bm߾mʔiؗY~8p&ĩ)I6o\h+>|A^7̌aÆ1j'z_r:-tG f$&&‰W_}l\\l\\||B,W^^YbGD(CA-!I:tPYY_xo,G6n4=g~8sܹݻ5~O>ۘ=DGTTgt@qZWWo1(//xALE,y~1AD`pԴ˗/Zh[N<%YPHEu}u6d>CH[,_2QTWzoj +!D#g3g6ڵkT{I}e!D@Fh6vH-,,4Ets 15C!.];qE h$c\|Ʉo9)vBQP:hPS`BS\\?y ]1tׯKVNq pӦM]>-FDNWZ+ٻaeP ~yBeE-YTT6cyP(aƍqx 9護 :l8BBB޽S< D4A9k9#IS5IVWW6s=vu葋)~טf1&|k>iӦy<'籍UVZUTWd}64x>wzluֳgΚ5g;;^r9w"=͚5s1)1֭[]j׮]rr2Og2a„NԴU41oEÆ64ӓKJ>0_qII>}~~IFJXQ233;oi3bDQѮF_3,A6}(5s޼yLFjjEEd׿:t/U+WMĩS7Uvmm0"!=O䘗(>9::`WWWqǏw_zO$FY l;*~ )_>:fL~SSŪmxg#GYI_%~OΝ?/7‰'6ylŞ^?ݶCfs(EQE@&Zŝ;w$QcqSSwߣ! ^aa!7JEyӏ;@?,)(sYzQP4-4Qiqoݲuܸ'wuږbt.lDȐe93+ /~-Ç}>WTTk#<ހ,K\ z{9eʔgL}?7oU$%&Zba̕+W0bV%qzTc^xQq(Æ k2h_ih4>gň(?0l1˫OsZ%pBn5JobyA'Cmxw vA"=W\A8{lnVXhbRQQ:h<)/m'հ,d]hVVvFF͛7Qc" Tt?Rn7"D}Cħ'-]رٽz:u/:Wgb8d..]}^{Ə||^z fժU-'2;O声NE~?ު_ ; 26I\Lsa6o޼쯫>߽kwR{466:Ψ/l/N/֭k֬1` x/df+2V%?g>+vUm6=($cIdQ~v?!j w[?glN4MtK;:uo߾;$6UV[E>11qҤ<[YiyyĈGA'A1!›~ч[;?ҭv6 ܞ5ݸ\|{=1?ݻww}(K,;t[|\={۵}狽{sJu08,:g'NL߰h~}3f=JFAN򢙩bcֿޖ6O{?ߍ- 9dԱcǸ8WSU=I 111QQ`.]`Kb9qb?vkjG4iRQRUD$cf+FpD4UV3ĩ'O^vR(?0J?/sv:uTZZv7}p&>C x<'m{СkZS^Vu_:4V9Ce*3Ikn1 6ŨY fjŲh˙YYΒ~뜞.Xu?jw^>z?ΰl0ի{!:;PĘ ]wxs!>-FDvc^w0l5OC}AAF… iii M>ѣoקtf5( P=̛7A*b\Q@DYt);dȍ~{lH$#^_LXp͹gTQhL"pbʊ矛&مիW#}Aj]b+g AyÆ LTվK(!b** bD)o$sH>FҢ_ޏY,F,KkE&?%xkMSD!LtıPڈPQhR`щbAG|[(`( +IUU?ccA=vN'4B?DECoeXXYS.Kk` { fNq)oƥh 9ҥ50!SgڐKo<:v]JF>F#hb4N1A'`FA,F#(t: h]`j4: hb4΂1A`FQ,F#$tK_4Aۗj?)3D{89fYw_[o 8S u=1:=aZWêS #hqiղ"V"1PXAhN(Ջưԋj]hN(֕ưjj](y5?fF0ǧ=e2Gp7+\F,?E/ǩ?2GpG3\F , ?z=e~4X`[=Hzy#Ky!3hm*bx|u^34lmqhv7ُgS )VA`l6y_KemBRќ_[vTkuNޖrH5ahAmLy,dh͵F5;uҊ`%4#u5bMa~A>(d7|^7Lfoidy\ ũK #M@ $6Mw-?I!s\y?PK],CrPKaFi??-Pictures/10000000000000FA000000FAD6A15225.jpgJFIFxxC   %# , #&')*)-0-(0%()(C   (((((((((((((((((((((((((((((((((((((((((((((((((((>!1"AQaq2#BR3br$C&S!1A ? pOj~7u .|TF~J#{4&'a\'8h6o%&)d?S5̗Wo53I!,za[ sEvܸ'@ )lq'?Nv@ 1vx,z#f}@!( QpOx0c% |fw 獣 cކ |Q\Qr ;v4J>7|3Bh'+.|g*IǮ}{Ph h% b@YP+a($恻)|*qڀG@W>Ss4ݴIbB $F[aFIb$EnW ZnֺѭeRIFV544}*/5jqȇ˾ZD1ʚ.mo!E]{odh=>Ux j ހd{UhVi Hb(nAh-3SMQlm+^/UgMYӮm@ξSn&=Qtv}iP22IQ\O}4IIH2W'.qDc6MBv~xQ| 2GAg٠BNN=(:RK'l}4 P)9ݨ-Ė$aD N3҉OzsBԺVOa%qbp}_{K]\]Ȋ l>ѭimj[@8TƎC)a"T{ \\Gn84{hXfq@rMz*@{h8 ʂ{/ أdA} ]Y ӯKNO#n|UtaZhg=f؊۞=EPvۃP7$|9'$ǭ `zQ*zsPpq7(&na^ֳ[4<81+ށWh2d*pO| z{{d'@|IA9JNP &>Sh, :Xm±WėRpcG:ގ1X+Is(k8~2p;A(8d4̀Kg2h1~mVR3Y/cSJAv>q){Uh(\jW^wt&O'('KU H6@(7)z wwh9WːH 'JnдvXkqC"Jv>e]1;ԃ[Hua.r!S^⠄랋5Ibxz>zgA"Wu H$A9#hy47͒wsbıe40PFGހF;Pϟ'>{@X EJ@rh+6!b] 'f-j 2)U@pۆsށsbhmdp㷶>tbR뵽F@v<Ο:g0pc1q}`z8hХyh,'èk Ë;uk8zOu.\^27an‚zM\ڀ6JIb䌒#sFu[WA w0X~.}#\F8E~ZBPFkH/'BBA 8EAϡ}3=+[B,zZFǖhnNMhGҀduHZD8]%ݽjc2Vl_lP*P,QO0($~c@A4C+0h86s@ buwF{P~T#q PFZ[pw ?0`?]M(C;m5`tW'Ƴ[x敝r1X6d{t's d([сR8,|AyC.,cC:vU[zQT[ .n@S l+6/m9$~X>%;t緐IG_NeCj2K*# Oo tcy)0@Ppڠ\'$vAhAX!sZ%o*Xla3!iXdQ)fcJLz^HeԓpR@>'?,J('G!\`\g@QK%-gPI( mka/n G?>>JM޼1EՃV ŕcʣGD:zP4MzM1Rd޴^g/8&CFQV}#> H(4 <>B'挜}?Zɾ+{nz_UkFd'@_$vPhH_T\ܽb˩ dUsRO-bG_XğQz;%7P7B bG<v;*2W+pEmZaM& PEuv<>$ Q#_|f ۩1aNs\L?HF($u3S(/-,⹷%w,r+ H8# XOJmN[NU6o!##Ci-0x19}=q@Pk,Ls$rm,Ү C[qsxvH!$L14{k1 C㲽K)к}^YOR;R}p!Dq)qք* O>Z,qsE%"m9⃣b@4J8G3'n8ݤ)D9Yf Be- EOb}A|:=֍ҤWeKö{zwEץGKҺMWH$]] u7XǤkG%ܒ'(Ocϯ;YMG͉ ނnTYMKdggk]jr JѬy bA߈yuv{8£n~mAkz+amaG7W;җαwۜE&r>>%)v49ϋkqӎ6sAREH@s(igyo( -6c MX<ǦhKX7=͚1F"ϥQazOU鮣#8ǵ(ӟLҺvWҒNcB ᱵvsY}3-k*M8?޵5hLT 6K +3Y( gXVՏdѨ Jc iv)8r{@B%=@F `?h' h6_FbdB@2Q^BH`+!" ۽` !TAͬtXSρ"G%\|J.ϫ;KK:.@k 3dzCW!Q- &P鏝}ҽ/ɪMr-Fcz2׽}=]4jGTFH;d<պ9ŴRF8g(sO4:?XW*:_ *-> gjN\m='bf|[PH:dTl8e~n[-p"T]UpK;qn( < ,eoq> k!Z!f?,U;wz}"Q,(vɕFq>hzwI [bW+FVLdM &*D .[}87[imtȩ,xh['M9@Eqm⤞ ӱ ?A0p؜Z->ctkLRF 0,;~e!bXr!z7KEmM332ɴGz=+KmP9cE8 1=P18@Aj~t0%VEyVT$п-kH b +XV@IY/ԣ[o9HU"BGb>cP+ 6EG8-uRl[=oaWGkgQ+%KRcxՂ*E sy?@Ef՚F)<lD~%)-$P\?${z`@`YCcxzѡX:qgg˛kU$X>8- MK}A;f_a[fJe-܌jZ,&5;P(cAKFQAAuD3_ 3_ WsъuJ?LG3^5L7BTc5eRVHKW{KkK'*OW=Zv$S̫e<lژ=l@v0k"?'s&K%B/n1Ogu{g6(7΋4xR!" F璤F22K$E-lc28+tu亄pfE v<)m+`n'>C3$J"yA :u`lo@C!' !}dyMӮk䷱+0W{+K^i`|zUPu5̪w#;n8 z[=x Sx gZ[v]CZjӲZABp0=(1THx_"S#G}4]+y.R(W>DIvvE&%&YW <`w$*h>iPJ%*#*oJZ&mM)r?QP-˟jcȠ1`Y4 NXF)>$F`A҂?V-{-naFA#5eJ{\mr?*hu_eomLM2lʌ)L4 vqx9*0 >ƚ&d >ml K9|F\OGCnŠ"( Z[j Z[,<[\cY?ۙtid29!9g0YeΚ۪&yݜSrϬVjZIin78U_y5_%]%vFy#Ƿ^`4Bj>A$FW_,2CG2?n8a#}KPt͎pj`N>$csH=F;7>thZBdrެJ;zhA k!>zNrO˵K׃ZRӯucTwfH= +CRTz 4$o'4:tbtWx |ڃrK$m>d8MUpO,ua__aӭm41ݟAۏzgZ%ѯ$r401]jԳHGqi^&bl0`;dRكY@V`7cyػ}OowsgZqpC 3ή ƒ6RfW^:`u'43Fx`o@Tq@P@XQ3Ƀwo\[x"&vlg#Aݏ'P3u..7V[/ܿ* +ݚ1P Su-֝ʐhvDe昁\g gGQ,۵-(N_5T'ymqPc}[]SbZcx`r0X 58G{$T{tφjpF9UѧƋg=՝bmuk='p#`=Pe=A0.H#*!6>_ϧHUn0F#>ރHkTxyGGZ8Z.< #F5x@}܋O˟A-/ ńK0#kF}8?j UjgZ Tho iNj.%rqW.zc>A⦩ Gs@?h-޷r̚lEn\콎XRGkI%RE u# 2i6#FI@d05{o 7+4 Kn%)Jgx9CXi"cnLcjy-NUO.äAܱ9'8ɪ-KBxnHp#[t1^: @dU=k&iœ1A~U#PX6:Y1BIV=~=S㶸#Zc9zu{hB/$zΥQjNuD:.rnjՂcD[k%幝qXTӚu{kbKxB'ēT X֮/mKI؀HΧԓAu 2;x2N0Cφ iOfHi}{B[-[msRK.uUȅERhl9TvKa6$B "c>#4:{c.qܞV'Z=Q;A{U3su֚r;]&]$sD^) BNA$8PHt]*-e%uz\uM V6CBSi@;Ճ}_?ZtشjOp}(~Tѡl1-.dAxA)mpor0€uNC0lE,X3h&c`޼{PVTtWD'PTՃ$zr^+8QiW9C8Fl\ #*JTk!.c,B{hQ> 4[.sx8BZT9\vOTBI18`Ѧ/V:[b_w^G-&DfJǷJ0Mvei|>&ct'8V}v_ԘY\aAo..2A'Fhѱf±Λca?栖ӺWHH[R Æ{u[t 5̐<c w@\]]E{5@ӏюW GQz WTԚN۠"K2w('h/~kk:kt4 raA,N0A(+]K=;=z@ )-<*y#[7;hWU^w$LT(Fe]VܜeV_Nʂ>\_[F@.3wJu~rJ|Ŗ{igTMblF\0I$3Ko$ʲ7 ݃d ݬ7d,8cmo` 7)R}ssyh2ӎ0&]]yF{ce+hY]B.]F͢V*v1lxv, OZWP\Xp]t+z[fr`--$#JHu(ǧMas4sZ!B1=P_ 8 \P.g]EM7[lz@ Γucjj'OJNo:R+J+$ȤH;c8zI my, ]7G?CuņDVZݤ·xN9ck2}AvkĎLEok ώK8)|N(9X&<~ǗdR6PhIQ}}(WW\[iQ]w(wdާs珝1+ֵR=Goރ ?K,'{(G/ՅX%:j@b(:Ff1j|$fϹ9Q_t{^n5 .qvI7Ѻi k)DJPdck1%I?QѼ2|lI8 /NWp[lP{sRZzm vH[ҭ$H3=ꖉta[_.wy&mfPhGr>*둓*NS@,+g$G΁18y' hRkvn觅?@vx7H;T?nP/s7c& PzV]IBہSYEonbI[req=4g^[7OX- JW=Z uSteyWvKԴ ;rXn?*7duJʑPh_ a/iXд{7ޖnNj[f YM19'*Z4W7y]fy~@YZ;0|&ѓoԤǽ#09ۃ8Ak*أ^9';ՐCkoi ,Kq#`,vybN3}I>e%*kZ>Vm`Ϙ1 I a>A09g{zgPAe\)'s# -x40 ZO.3Fj,VKERTj`h$ lPGʖe᷒JZ4a$c?\Qhsi< $b-ɁvH`/θ0q'{٨5$ r2;znc1G*xP4LhO 7M[W鋙mMf gΗ?MKn/%˂rNyVP?Q4ڏ+mj 9~IcXr9>U6oR,nk$zg]Z-LV@6Y#~2){A4;f q=MJi]=kg˩KNaNJcjJ Qᛖoz5eVM{Pbuw[iŽmcxwڮ 5R7MwE%!€`=j $020@UϠ|E׵۝F.`K.4~NJg d:.S&!!vvez2cPfi[$(#ːhd`hAmb@,=hFr#tC ދ}\(5|&ֶ*)SGzmd$6I>Ps)HA p<@qȄ>@houe2b;~EcPIL  uwlf4$4=]kz|v_%d|(ed}u,į.O>_GIKlIed= \ $m>7 ]4x I'J`h]_k-$p̛wʪ;AU#HܸFTDT{89/kSk]5cSĝPq ƷtNrBmDŽŕd E̽O˫BV8,F k' /֯<"8ǩ0dRit)r#ɑ(09=5j7z#Y~^C_8$S[`e8;Pw9WT>T} JiɎ(BayS8=l)$pVtqwd@X?&`f"I->Rhkyhd: d3R/i<-nxnmFi)_W e0FӻcɫOEbΣo:Ds2Ƙľ3zU4aLM*i\0?>8l@{^kdb ll7ܞkBj/ kQm v2/ǏlfߣZ]`;lLjv+3(1IK#sh%@4x]s@ ;>T&wS#=))|b&yFآ>18\sڋY Gܮ=>pO|PXmd1aN$a@0h'tީxDc.^=(4^7P3p0=v5iMuYomZ# Yݎ A'/Mm9YX5֕Ӷ&} [ncwzx+&W0y9=Xu%M{{mfҸR_RrOAkם/רX/{KyivRw悰jU^ wA$hlB>q(ř%'q<}C }@mA;#9bpx[:23EUs*Ah 6q@S4ٍ2*>po *[ J4:Q ߿Ή es?DB]FsseXc;w`{f Gd9$~`:N cYs9pL]W! PgϿژ/|t4JHGb+z-#\[@fA,o^1`5ތԣeb75ֳFn:Ey"Iku-5fϕW#qZCM"u2]kOo*28 \_Sw,ĉ$1'V\ g`H|;SB+,@'8 \O=@(w?JOFP-ʌ}j? s@pF{˜h'Kڤ@vRIGl@&H#4h g@phM<{ $g2ۈE1P`9P&2yh #H=@[ yPn!@"8wPߜo(y "=G&cF 4rc@``ǁP$ ׵qC.]NodNH{P;N9X3 #0^2 LZ+ {hq(w1总ݻ1(7df$<%!%NO!榀۞x)F=tJl8WDZ7+yN9 $$ G hQst9L#zP@o6(7s;(~S@H ##<WnzCw'(p9T`ځPPKaF settings.xmlZs8~"KzIRZ \߄`5#lȥ`z[OL,iW߷+2'/4Gy]{'  xGSkx4iN5CS -xMdd1 ,k̔_/2&ijlyhԲU~ _f2eZwԽ㷮 Sn 9Y[Hej^Ѻ|6یUB#\UJ8\jfHy9O<4QvW<*t8?#)19`(IeT ɶ…{ a`1KN a ᮭ+[CiVYnmUEl}~x{cqyPͧ*OLj) JRh gxB,BUlHcke+K]tY`Pqizz aWч#v^-^U")4*fåT)-3l41* jHDyjKX2!e)6avkl_|QCe5 DSPM4TJѤJEiʂ1a[|@-ՆV}7=)m*]$sIFL(EꭗL֚.\2:< q4QwQQ&`\Lٌf.'fD{Ajl'Ze9*hMF٘ @)sTl œX0.`;GQ[P`fln'8L# :}c&(tdA?˕6zTJӓ.s\B E]~ru؜%=څ2G}!i #`!Jr ~^){H ?̗MǶ# 9?IĊJ e\RH~^R!a-¸:CvBod{e9$YJ@'&5_M0c Is2j1`g\3>%Ck` oSv|WR V JE<4q(nm mȕe5̆8h孨ʉ49,O)Jڦ9%M#&RKN#|8 TJ>k~f*c:im˓a#@h.k޽(UbUpFCp50tÛ*Y!c)jKAyloU<鴟PBw6y,hB"hE)()8+J6^oT5/sD^O?#cx.¤k3HW/'4q88f9Z;8><te~]!b=/x(S%ySD)~.dc@ NS@IՈ) ,H"2nI}9!ڳFg:>g"OVXma/]<1Z"? !B1bI@YJh` gE~F6E$I tlSߏtQ/t1 4'#)LD 5 v:d 5UֹC|)Ig`)a}Zvg>}VL4s}1}f 7(͒i"Br.7.h_ւ">Go5-ԵWo }/Yq6WhH.ZQ4|亠+6掾x[[N;,aޠ) p=pːv*j(tؕ[m;Ѯ񨗝Y'02źz+[1nr14vg1EYDŋ$yi~-'V>^l3W3GL=wJwF4Ϭ9)eH2g-|WvKf>js(G|3p䵭"P"~MF*VEb%YX#+ 7ִl5E0S6,hE-Oz\bF'  3Ɠv{>f99?֤W)JM4PAy(RLznqg hr׍TJX|e3vte$,5%ȑax.}yh)ʶ cy! $;|14:R%nL܋?-$ro2J}H#9 "uҤ㧏xׂ|>j/z܊W!e:51-쭫\5^E?(aGUݶinAQ,\W'v3Oeo Ù)S5FVyVT+Bd8@Z(u}ʤ ٫3Xi@feK6{$O65;~9r_x2``krɒR3lN(4Puli4m LAiRѴ \ӣӴ=( ̞\Sk\Rj愓kzrcNgM9~)Ms^eJEӂprMOoLLʔ9䚞ݘ'0-jz%HoLӹN%hN8-T=cz(S*cT]%gm,+[͡QYrkRy) e $[.-=EQu hCt*-AH;\E2 *00{^e۫wT6,4T&>W=*nP St *x`3@!r6wJ:zE w8V5y%ג]"/zʲ}#!K ^/\|JH#\e g%UFW h`ՁjH#\kTg3.X72p?W Mp5?WMpݟWMp pmLm'_xO4[޸ ~k~^'C~]\/*5~8Q59?Y c-'~?Z`th1+aiU2Dbjd:Í)A̜pـXSצZ5AN/Wo}1 {% *]3*;\&XzťDFJS~ӼЉqڑ,T?EAYd0J~{9UFXiT;ü P`j0; #/Īr?[|sd Martin Linnemann2015-03-01T17:26:12.312015-03-01T18:20:30.92Martin LinnemannPT10M3S2OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PKaFMETA-INF/manifest.xmln0 "]Rq[F U^S:71.(aεP~iUhT4.5YS_Wl0\*ϰ[6{=/N*$v oR`pt֫βlFw=y@?5se5Ihzu ;sPKʾPFPKaF^2 ''mimetypePKaFMConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/progressbar/PKaFQConfigurations2/menubar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/statusbar/PKaFConfigurations2/toolbar/PKaF-Configurations2/toolpanel/PKaF^,,eThumbnails/thumbnail.pngPKaF],Cr content.xmlPKaFi??-#Pictures/10000000000000FA000000FAD6A15225.jpgPKaFfF%+! bsettings.xmlPKaF+oǘ 8hstyles.xmlPKaFh vmanifest.rdfPKaFqwmeta.xmlPKaFʾPF{META-INF/manifest.xmlPKo}pandoc-3.1.3/test/odt/odt/imageIndex.odt0000644000000000000000000010316107346545000016272 0ustar0000000000000000PKaF^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKaFConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/progressbar/PKaFConfigurations2/menubar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/statusbar/PKaFConfigurations2/toolbar/PKaFConfigurations2/toolpanel/PKaF]6 Thumbnails/thumbnail.pngPNG  IHDRzAKIDATx tUktw6B!2 /E ʻKU_4" )?כ#.Z\%U&] ף!~LʔSdz 0x4. \kׯ&?U/^o vfKC=^H ~q/+kko]U6FKkxkɟ-'t`FW _~+#bZit?_Jm0*r-˳X,18mvhs8~( E%eYU%)H'eYwa 4M+s OTUeg,*C G&I6ZfHH/GQ}SRUMXmvP*`ݕ>MR2̦** H Mv9`Y> ޵lH oIFqxbX3s)8y0FMKJyW(]OfwAj=h0 |(#` 5A9s>˙3t}U-û0U|cuނW8Vx퍛6oU DT74T FV>M~^ o``2; K/fw0/KBQy%a0lG6 CϟqԩQf5U%8>_ !KBʏ:x <&avY QQeª}`ى[n ׯD T#39lRRRl޼yg.^ )آY؆!64/**ʌ59E ^{ΒYw˾}Bܡ`CmK_*+-}r$I4 XY/r;RzO4!e qqqe``>Eeo|BB^U i蹉5ТoAU07p㠈5k֌{bҾ}>DT|PB&1ͦ FH3 )bLibdYGxxuuզlvf40xA!ܳڵqِ :}yA$䥥{>טޔ`4.3߅WX ۳gOHCJ0~q}ͳ3bf n|?Yc߾}؊_|yvSG~ Q @8߿? ܹQCbzDE1PǨfGSYY !(gϞ+VLC@O'nwUu5uo6mŋ<>.WC;t2E JHvرnݺAF|AQg}ֻwo;Y֮];m4SIM#o0{xFF~wX7n7n| Z~_~uLԸ5kWϞ3oF g[ .̘|Jrʀ2b]tя}Fo:GZmzN<3PFFFDFFEEG~>iA}LE,PMcB.\8gΜ/:zG5s1s;>^nd3gfddu]L[,2)+kO|Վ8V lgƍ'O6|rT{1{|b|0D)?vS69!''X ts 4C! N;vĀO? 8:d։I ?ؒGȂ>9%--&~=dee;6,TJi=hÍè?L3v_\!]2E:z9X4K]gϜ9|ptdghFej堼P('$N5k6x?Yx,Eeed+\_lz)R9;b~C}jSLq_tc[hehI5jTrJԄxLo̓sN}ӧObѫnݺ_}wM鋌YQRRR7{)?œZ,d1ayϿ3e3(E? sg$ (*D}CV\U-SW^=ĊA|Gbh ;v< g8ݻvӫezO4!8j>^8:Z""",Yr˫ MMM-/+{̌;{}yhiɥ߻}aÇ*"Gll_]P AR[nݿjffg /;*p99z t%@eUz+j̸wд;gcbZԄ.--MOoo!9hР \6)СCZk!x4ӲKVٳz#訄O6,kaU.߷o7wB$Op#,DR~ܞ(Z x:w,+$ZVIImgzM־&|ٳ??ޡCE͙;X~yϞƕ^L|ʢ(]BSSӒSˡƄXcXXXr BTԌ~x؟֥K#G~snғOi(]; [n@}'|Yf/yx5-<"=rKhd.\++#KE @ Ґ{ݺ=sU{gႅO=D%KlV@=lk^jl4Q봴#Y4|0n C*iDG>îiڵkí[6otO>}ZyAxrbvv][YlqC`P?DJJ~]ZZdEoygYYV_ ` A]$4)?6+ES?da-#iӧBo&QS'?utr۶G޽; i/` c4 ^,*uhXf5!x$ z E}hY -qzEqBb,>Txf77)?ha*[m-)?g%xmC!@Ha]?\013~"r^O !~ $@?B@H !~ $@?B@H !~ $@?B@H !~ $@?B@H !~ $@?B@H !~ $@?B@H !~ $@?B@H !~ $@?B@H !~ $@?B@H !~ $@?B@H !~ $@?B@H !~ $@?B@H !~ $@?B@H !~ $@?B@H !~ $@?B@H !~ $@?B@H !~ $@?B@H !~ $@?B@H !~ $@?B@H !~ $@?B@H !~ $@?B@H !~ $@?B=2k IENDB`PKaF content.xml]͎)  $,?t/&Yfdr[-3KZRj甧ؽC+O")ɔ-Vw"X?| sAXrÑ3IBDη߼so/~-$y Xh'b{'3X̲`RZ3Szl=ӣՕuv񖕰r:VYBPM;Vy-`8EbMI̲tyj $BwS"1e+L930y`?!J41ebKHL59YޔHI@W~< !_=#f\H'~8BU g;HRG2 FVNb"&+0w$,e˓ ' w`iCf,'wfu&n) txx(os1+-!><%gy8Ix,@ b0JSZj9mF:\1XP^̶p*9P (yrd~?}ȗcU&p78cscxGƈq5T$FvY=7p }l*5g35uI^}-&b:1#&FB ru5kW=?8:Mb\98=!lq2Xt y}c?%Ej5{ױifDzU_j!RS9Z2( [Y)H(+N㻱< [r)o꼃nuR8b\W-B:&|ޞ^6NݢG33d. C嗓SlYαmt<FN)D\,aea;,5G+BLC9E`rάEY8OȐt%k)?PKBƢ4 y|PKaFi??-Pictures/10000000000000FA000000FAD6A15225.jpgJFIFxxC   %# , #&')*)-0-(0%()(C   (((((((((((((((((((((((((((((((((((((((((((((((((((>!1"AQaq2#BR3br$C&S!1A ? pOj~7u .|TF~J#{4&'a\'8h6o%&)d?S5̗Wo53I!,za[ sEvܸ'@ )lq'?Nv@ 1vx,z#f}@!( QpOx0c% |fw 獣 cކ |Q\Qr ;v4J>7|3Bh'+.|g*IǮ}{Ph h% b@YP+a($恻)|*qڀG@W>Ss4ݴIbB $F[aFIb$EnW ZnֺѭeRIFV544}*/5jqȇ˾ZD1ʚ.mo!E]{odh=>Ux j ހd{UhVi Hb(nAh-3SMQlm+^/UgMYӮm@ξSn&=Qtv}iP22IQ\O}4IIH2W'.qDc6MBv~xQ| 2GAg٠BNN=(:RK'l}4 P)9ݨ-Ė$aD N3҉OzsBԺVOa%qbp}_{K]\]Ȋ l>ѭimj[@8TƎC)a"T{ \\Gn84{hXfq@rMz*@{h8 ʂ{/ أdA} ]Y ӯKNO#n|UtaZhg=f؊۞=EPvۃP7$|9'$ǭ `zQ*zsPpq7(&na^ֳ[4<81+ށWh2d*pO| z{{d'@|IA9JNP &>Sh, :Xm±WėRpcG:ގ1X+Is(k8~2p;A(8d4̀Kg2h1~mVR3Y/cSJAv>q){Uh(\jW^wt&O'('KU H6@(7)z wwh9WːH 'JnдvXkqC"Jv>e]1;ԃ[Hua.r!S^⠄랋5Ibxz>zgA"Wu H$A9#hy47͒wsbıe40PFGހF;Pϟ'>{@X EJ@rh+6!b] 'f-j 2)U@pۆsށsbhmdp㷶>tbR뵽F@v<Ο:g0pc1q}`z8hХyh,'èk Ë;uk8zOu.\^27an‚zM\ڀ6JIb䌒#sFu[WA w0X~.}#\F8E~ZBPFkH/'BBA 8EAϡ}3=+[B,zZFǖhnNMhGҀduHZD8]%ݽjc2Vl_lP*P,QO0($~c@A4C+0h86s@ buwF{P~T#q PFZ[pw ?0`?]M(C;m5`tW'Ƴ[x敝r1X6d{t's d([сR8,|AyC.,cC:vU[zQT[ .n@S l+6/m9$~X>%;t緐IG_NeCj2K*# Oo tcy)0@Ppڠ\'$vAhAX!sZ%o*Xla3!iXdQ)fcJLz^HeԓpR@>'?,J('G!\`\g@QK%-gPI( mka/n G?>>JM޼1EՃV ŕcʣGD:zP4MzM1Rd޴^g/8&CFQV}#> H(4 <>B'挜}?Zɾ+{nz_UkFd'@_$vPhH_T\ܽb˩ dUsRO-bG_XğQz;%7P7B bG<v;*2W+pEmZaM& PEuv<>$ Q#_|f ۩1aNs\L?HF($u3S(/-,⹷%w,r+ H8# XOJmN[NU6o!##Ci-0x19}=q@Pk,Ls$rm,Ү C[qsxvH!$L14{k1 C㲽K)к}^YOR;R}p!Dq)qք* O>Z,qsE%"m9⃣b@4J8G3'n8ݤ)D9Yf Be- EOb}A|:=֍ҤWeKö{zwEץGKҺMWH$]] u7XǤkG%ܒ'(Ocϯ;YMG͉ ނnTYMKdggk]jr JѬy bA߈yuv{8£n~mAkz+amaG7W;җαwۜE&r>>%)v49ϋkqӎ6sAREH@s(igyo( -6c MX<ǦhKX7=͚1F"ϥQazOU鮣#8ǵ(ӟLҺvWҒNcB ᱵvsY}3-k*M8?޵5hLT 6K +3Y( gXVՏdѨ Jc iv)8r{@B%=@F `?h' h6_FbdB@2Q^BH`+!" ۽` !TAͬtXSρ"G%\|J.ϫ;KK:.@k 3dzCW!Q- &P鏝}ҽ/ɪMr-Fcz2׽}=]4jGTFH;d<պ9ŴRF8g(sO4:?XW*:_ *-> gjN\m='bf|[PH:dTl8e~n[-p"T]UpK;qn( < ,eoq> k!Z!f?,U;wz}"Q,(vɕFq>hzwI [bW+FVLdM &*D .[}87[imtȩ,xh['M9@Eqm⤞ ӱ ?A0p؜Z->ctkLRF 0,;~e!bXr!z7KEmM332ɴGz=+KmP9cE8 1=P18@Aj~t0%VEyVT$п-kH b +XV@IY/ԣ[o9HU"BGb>cP+ 6EG8-uRl[=oaWGkgQ+%KRcxՂ*E sy?@Ef՚F)<lD~%)-$P\?${z`@`YCcxzѡX:qgg˛kU$X>8- MK}A;f_a[fJe-܌jZ,&5;P(cAKFQAAuD3_ 3_ WsъuJ?LG3^5L7BTc5eRVHKW{KkK'*OW=Zv$S̫e<lژ=l@v0k"?'s&K%B/n1Ogu{g6(7΋4xR!" F璤F22K$E-lc28+tu亄pfE v<)m+`n'>C3$J"yA :u`lo@C!' !}dyMӮk䷱+0W{+K^i`|zUPu5̪w#;n8 z[=x Sx gZ[v]CZjӲZABp0=(1THx_"S#G}4]+y.R(W>DIvvE&%&YW <`w$*h>iPJ%*#*oJZ&mM)r?QP-˟jcȠ1`Y4 NXF)>$F`A҂?V-{-naFA#5eJ{\mr?*hu_eomLM2lʌ)L4 vqx9*0 >ƚ&d >ml K9|F\OGCnŠ"( Z[j Z[,<[\cY?ۙtid29!9g0YeΚ۪&yݜSrϬVjZIin78U_y5_%]%vFy#Ƿ^`4Bj>A$FW_,2CG2?n8a#}KPt͎pj`N>$csH=F;7>thZBdrެJ;zhA k!>zNrO˵K׃ZRӯucTwfH= +CRTz 4$o'4:tbtWx |ڃrK$m>d8MUpO,ua__aӭm41ݟAۏzgZ%ѯ$r401]jԳHGqi^&bl0`;dRكY@V`7cyػ}OowsgZqpC 3ή ƒ6RfW^:`u'43Fx`o@Tq@P@XQ3Ƀwo\[x"&vlg#Aݏ'P3u..7V[/ܿ* +ݚ1P Su-֝ʐhvDe昁\g gGQ,۵-(N_5T'ymqPc}[]SbZcx`r0X 58G{$T{tφjpF9UѧƋg=՝bmuk='p#`=Pe=A0.H#*!6>_ϧHUn0F#>ރHkTxyGGZ8Z.< #F5x@}܋O˟A-/ ńK0#kF}8?j UjgZ Tho iNj.%rqW.zc>A⦩ Gs@?h-޷r̚lEn\콎XRGkI%RE u# 2i6#FI@d05{o 7+4 Kn%)Jgx9CXi"cnLcjy-NUO.äAܱ9'8ɪ-KBxnHp#[t1^: @dU=k&iœ1A~U#PX6:Y1BIV=~=S㶸#Zc9zu{hB/$zΥQjNuD:.rnjՂcD[k%幝qXTӚu{kbKxB'ēT X֮/mKI؀HΧԓAu 2;x2N0Cφ iOfHi}{B[-[msRK.uUȅERhl9TvKa6$B "c>#4:{c.qܞV'Z=Q;A{U3su֚r;]&]$sD^) BNA$8PHt]*-e%uz\uM V6CBSi@;Ճ}_?ZtشjOp}(~Tѡl1-.dAxA)mpor0€uNC0lE,X3h&c`޼{PVTtWD'PTՃ$zr^+8QiW9C8Fl\ #*JTk!.c,B{hQ> 4[.sx8BZT9\vOTBI18`Ѧ/V:[b_w^G-&DfJǷJ0Mvei|>&ct'8V}v_ԘY\aAo..2A'Fhѱf±Λca?栖ӺWHH[R Æ{u[t 5̐<c w@\]]E{5@ӏюW GQz WTԚN۠"K2w('h/~kk:kt4 raA,N0A(+]K=;=z@ )-<*y#[7;hWU^w$LT(Fe]VܜeV_Nʂ>\_[F@.3wJu~rJ|Ŗ{igTMblF\0I$3Ko$ʲ7 ݃d ݬ7d,8cmo` 7)R}ssyh2ӎ0&]]yF{ce+hY]B.]F͢V*v1lxv, OZWP\Xp]t+z[fr`--$#JHu(ǧMas4sZ!B1=P_ 8 \P.g]EM7[lz@ Γucjj'OJNo:R+J+$ȤH;c8zI my, ]7G?CuņDVZݤ·xN9ck2}AvkĎLEok ώK8)|N(9X&<~ǗdR6PhIQ}}(WW\[iQ]w(wdާs珝1+ֵR=Goރ ?K,'{(G/ՅX%:j@b(:Ff1j|$fϹ9Q_t{^n5 .qvI7Ѻi k)DJPdck1%I?QѼ2|lI8 /NWp[lP{sRZzm vH[ҭ$H3=ꖉta[_.wy&mfPhGr>*둓*NS@,+g$G΁18y' hRkvn觅?@vx7H;T?nP/s7c& PzV]IBہSYEonbI[req=4g^[7OX- JW=Z uSteyWvKԴ ;rXn?*7duJʑPh_ a/iXд{7ޖnNj[f YM19'*Z4W7y]fy~@YZ;0|&ѓoԤǽ#09ۃ8Ak*أ^9';ՐCkoi ,Kq#`,vybN3}I>e%*kZ>Vm`Ϙ1 I a>A09g{zgPAe\)'s# -x40 ZO.3Fj,VKERTj`h$ lPGʖe᷒JZ4a$c?\Qhsi< $b-ɁvH`/θ0q'{٨5$ r2;znc1G*xP4LhO 7M[W鋙mMf gΗ?MKn/%˂rNyVP?Q4ڏ+mj 9~IcXr9>U6oR,nk$zg]Z-LV@6Y#~2){A4;f q=MJi]=kg˩KNaNJcjJ Qᛖoz5eVM{Pbuw[iŽmcxwڮ 5R7MwE%!€`=j $020@UϠ|E׵۝F.`K.4~NJg d:.S&!!vvez2cPfi[$(#ːhd`hAmb@,=hFr#tC ދ}\(5|&ֶ*)SGzmd$6I>Ps)HA p<@qȄ>@houe2b;~EcPIL  uwlf4$4=]kz|v_%d|(ed}u,į.O>_GIKlIed= \ $m>7 ]4x I'J`h]_k-$p̛wʪ;AU#HܸFTDT{89/kSk]5cSĝPq ƷtNrBmDŽŕd E̽O˫BV8,F k' /֯<"8ǩ0dRit)r#ɑ(09=5j7z#Y~^C_8$S[`e8;Pw9WT>T} JiɎ(BayS8=l)$pVtqwd@X?&`f"I->Rhkyhd: d3R/i<-nxnmFi)_W e0FӻcɫOEbΣo:Ds2Ƙľ3zU4aLM*i\0?>8l@{^kdb ll7ܞkBj/ kQm v2/ǏlfߣZ]`;lLjv+3(1IK#sh%@4x]s@ ;>T&wS#=))|b&yFآ>18\sڋY Gܮ=>pO|PXmd1aN$a@0h'tީxDc.^=(4^7P3p0=v5iMuYomZ# Yݎ A'/Mm9YX5֕Ӷ&} [ncwzx+&W0y9=Xu%M{{mfҸR_RrOAkם/רX/{KyivRw悰jU^ wA$hlB>q(ř%'q<}C }@mA;#9bpx[:23EUs*Ah 6q@S4ٍ2*>po *[ J4:Q ߿Ή es?DB]FsseXc;w`{f Gd9$~`:N cYs9pL]W! PgϿژ/|t4JHGb+z-#\[@fA,o^1`5ތԣeb75ֳFn:Ey"Iku-5fϕW#qZCM"u2]kOo*28 \_Sw,ĉ$1'V\ g`H|;SB+,@'8 \O=@(w?JOFP-ʌ}j? s@pF{˜h'Kڤ@vRIGl@&H#4h g@phM<{ $g2ۈE1P`9P&2yh #H=@[ yPn!@"8wPߜo(y "=G&cF 4rc@``ǁP$ ׵qC.]NodNH{P;N9X3 #0^2 LZ+ {hq(w1总ݻ1(7df$<%!%NO!榀۞x)F=tJl8WDZ7+yN9 $$ G hQst9L#zP@o6(7s;(~S@H ##<WnzCw'(p9T`ځPPKaF settings.xmlZs8~"wM0 CJKC$뛰Fz$9+r)뉉%Jv\}Y(w20V>{_Z]lh1HS` Mg\f>|J6iŠ&hbrvv3SY .ȘY.ŇsTEѨf*V"* djwԽ㷮 7[ۜ?ۭ]{aj5hkiM06#fkկڇ)[;MMTߧ|n^oԎ8B/DLAo)" `kq:zpC'}Ƅ>X|%fIڪ85ju{VQ^ />/?/uO|\$ZvJgBG{R$m43'bλv*{H®G[T7 DSh!U!K;RfؔicLU|9URId _C'C؄Q&eH'7#lCy-F }0}OA94PN(F+Xh+ :L| =6|SULhS"AK2`B)-:o5`m%SGcE~U%n?.nv,Pe4] i¯qbV0A~j! ˱+ƶ*}iUލbfd١`D(OP9GAvZA3K@uƅPl'(j ߌ SDaVo^].B"v @8tr^*^izenv"KpOCND'\V<$\p,D)Vď |8ef}iRڡvd!'XQil\K ~¯K 4:$61̳EXRg`1 _NhBpbllt =$K֤ f!$#s`HeHKA|a"HS_sj߽zW BZкE-(k0IĖ[mt=+<%r|`ChU 1cMᕡ\'vcMTչ0QVvXbRL遴.-L[4d{^`">* 4Ԇe`so␃lyƼ&Jㄎo_eK@ Zj@)I;f6h%᫋-89Pmڊ1Ȏ@]EPyϯOֿPK+#T$+!PKaF styles.xml]ݲ6ߧHV6g$LS53Hr'+`YI%Yl$cÁ Hr[-dqa7z;t`io6\,\?:8H$z8p<2S?%n 'F8B"#mڊSfQ:ś0Ȣy)(hVNEEVxx"ЏPzϧ*Mp^֣A/l6Rjaأ\=&%Cc` 9SԶWRsV JE âD9(![^7c7űn7ȳ Lig CL9wL8 Ȣ1 Zv/BqН\ ]{vӬِ2{)f[>1/Bƚm/-s&~ByFY|rJ,3t?=IqO5cWRGI M[.Tvd_]$$/W >@鏙: o !K:W%mb>p+և*: yלwih}ΛE1LYk((#1Y!'\kpSm#ۗ5b A@$B6qm9md~&wYai[\_c+-KCPD1P !cE^Bڍy,:l!2`O}/y>d% Hq00 QB H킝{g4YA A6n^K4Rha~f2>CK(rfA9>N!i8]g $ujdPk9ˊSV8Eu,H>KuV7lV8@59nefB0J7~ArC2 @Դ[&2KW9j1G#;Nvadr+ZsFb#7b۝eɪro0yyX4m1qbg0gx(J۰ZPRs?14\tEe5,6lp!N_97p<$=қv'FꠠH9hUE_wS}:[Yb>aE$M`yd0s1  [mo:|QZ)ƥҊ:x./mfp䡭PO$6z!23HmGcl;D/ "F]/ќ8UeRJ;ʈ,]`{6TvaUhM,7/KkD0g䁋8!rqkqUl!T=&~iFW'u"٬⊙zZѥYVFRp|ӊ8I唤w|=e{Kd>jRQnj>]{A-H)t(c9hXY_$|acR֚n#)BE$/zbFc' 3Ɠv~-Sσ5EMj!bd޺7R=*r$_k QZ"HlW*|yvF{elOq:ԔFSrJVRvO~'kG\p6i6&{̀݌zPYZ镞otgNyl6c ,fI蹎e:!=ϓs)wN_ꉯ3[\Awĥ|14ثR%fL܋NgMߴWIܧ@47z-ѥ{1=/7k(pO/9)/ƒM k{e&`)/GLLE*ԬJ=K T>[jڼ)MxjZT4 '4mN.5=y|cj̱B%hF8d2Uh4'Mi#y8)Ms5=1MSy8)5M35=1M[iZ leݘ'3KJMьprMMz4x(R*cT]%u,+| U7bmB1_}Jܓlp7Fb ZxƯ8W] hi @:e*ݠ2 SUƹj|X}tÆx;L"W;\BTs4T@QA5Cšt 5>g+ݵr-5- LN\?)ĞaR5ӗ p1΄45Z %\< rfɂ4B5ZFs,: 0Ά4e]-\Dqcח.8 ijzXJ֯2EgE\-\T9ikz`0)ђ_ikvpa=@K1r΍45^-`ȒgGFCyh_zdtOv# g=D*w)GtHլTsCuOAdȵŪ'C^,#XֹBJ{"te;, {"wk|niIG&7(wÜ } ~6V{sAnh|\',7 ?) c?. pmX,Cib~w<7#NrW :Qt.r`DW ђe.3e(fSEL K#[>1TyR-9m5@'MxNZ^ُۂs40ĩē\63)5U@2}NM:{(l@;wn `4\UUd#H yc.-ם)vSʨ޻r"w^V{Dh+27GvFMdE?րy= UE%|8@2rͅyebLIØu 9aVR"T L7pvr*:(ai&@`HPnPt ڏ俁_-72ެ]>Z:/cʝPѦ yF`H02ׅ>ЍiوxZFNAsIZ' ,IXy "zK'+Z /kő 'nO!*'O)G?-Yi58Uzɋy@PKƁ PKaF manifest.rdf͓n0 Martin Linnemann2015-03-01T17:26:12.312015-03-01T18:21:41.45Martin LinnemannPT10M3S2OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PKaFMETA-INF/manifest.xmln0 "]Rq[F U^S:71.(aεP~iUhT4.5YS_Wl0\*ϰ[6{=/N*$v oR`pt֫βlFw=y@?5se5Ihzu ;sPKʾPFPKaF^2 ''mimetypePKaFMConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/progressbar/PKaFQConfigurations2/menubar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/statusbar/PKaFConfigurations2/toolbar/PKaF-Configurations2/toolpanel/PKaF]6 eThumbnails/thumbnail.pngPKaFBƢ4 y| content.xmlPKaFi??-&Pictures/10000000000000FA000000FAD6A15225.jpgPKaF+#T$+! efsettings.xmlPKaFƁ  kstyles.xmlPKaFh zmanifest.rdfPKaFM{{meta.xmlPKaFʾPFMETA-INF/manifest.xmlPKpandoc-3.1.3/test/odt/odt/imageWithCaption.odt0000644000000000000000000010202307346545000017450 0ustar0000000000000000PKaF^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKaFConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/menubar/PKaFConfigurations2/progressbar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/toolbar/PKaFConfigurations2/statusbar/PKaFConfigurations2/toolpanel/PKaF N||Thumbnails/thumbnail.pngPNG  IHDRzACIDATx teǫt:d! eTlAQDaP!"1 *M2l#*0zDaQQAH `!Kg饺癷;9'9=w<9mwUjD X `A~,A ? X `A~,A ?a*KΞ=kXrD:oel+"p| ([VUA@v}>_(§8󊁦ixmBUUA$ f;``0h%}2xm׮+Y9^r8@=U\as!DS{"/gE#"T8&.$ l;RD`H vxX4nw>MFXpM6ǒrHP !r0i2~r(t8qYKȯoSZViVMU4 qy*4`|jw8H猒@7uj^nh]#uQlo-‚/_% ƨ)rINr8.Ԡ>MFXCD9m: F!$7?Äi#F%fJ@8#]W^t$l8ޜǏ]^cc'dA;F]3~9ha55$Ny |ҿ%aGCC}>$}"NY P!&6>XUTllD; l0*jlc)%=ݶmfx+^D7^?<18؆aF. $766Æ ;ZDE {, W$ Cw:+VRQ^ԩAh`CzwS}&3ZDT qBq )K15}Pj^O4~*JnQ4?;Vw(Cp%Wֽlj.((x饗̻3r b1{۶=4SNjFF8ueÆ 3g4 ʲ+ogTvv@-[6O8rS^GO951)auϽt;o+ ڝ+缔>xaCpnk_NE"vO>pG3'=?앓c'P0BZ$mڴ)++ s,Y` 7TYu_<}tl\Νn3fᅬm1wm"#FUQJKOCsZ]]k1vڹsg*bAw }࣏>2 $#G$,Yd^]{qɪ_("=$}YSS{'6nF3gNvvޫGb dy ƛol8}ݻV[H "8[l6m谹VZړO߿Sc0!ػw/*B]}]|NZDk_J7S3"z3q &"x9ԦQԯMIuh|ĉ㐠w1}_v _*++Ǩ %#+uEɓ'YZs&#+CӥKܵĉ! Yˠ~yBeE/YPP2@ls6rΈ#JHzJtLCD zՕ 1bpɵZ}"N>՜$Y+*i ES95:bİ PHkL >os^klrɓ=V*j˗//(=*NϞ=kk=G;>X:lڴԩSӧOs/8>ݹ0GVCUӧ{n%'ܸqCKZJLLDT_qv*cǎMKo&$Yys.<$МZTt> z?|7wO2RBr+DV~DD꼍b) _z9ٳgs2iӈ AH|uʘ36~zŘ| !M7W^Ey^M4w~6/~;/&%%}{קM1p!w_ͿW._ƈVl1˗/UWԠ!ȸ^Q9|uDyٍ=k瞑F(" .+!!z9GX7mvРA63/Z:a$M̟''5g.ƛ{<,<_Xx(>ummmDDD򬬎u#=sr9S3=6%6x [QyClwϛ7w>n+HGmDV~8]P@Fu9}tׯ__qf׼jjӦ bϟ;7/[5p6rǏWUUo$Ŀ?e^^GQT###a 68sLEE-rȑ^wLLTIb?MtGDx⋸92b־C{ڃ*"SOqfz͞3{޸qlڼfshEQFJKKCX&Zm۶$PPcqCCߡA/??+W}~_)S>|DXRPfΜbŊÇi((Xi"恵rnڸiGo~–d`vlEɐe9=#/~(^WDDs&#@Pz,K\ Y__ߵk׉'>3urUUգ ;﮻~4!>b-[T7,mu0FEn0i =v7x9tN!jOm#Y=>MFXi,Zy$'-}ξ{Wh!ٳg;w a//}21uǎ} )lۑ$RSϝR:mx-~Ō,ԏSNuiҥ,Z,~_h}Ɠ"=BzBH rP?0 LKK~:zLΝ:oIIIRbFE>|(33[nǏ^giʅ2աr; 4.'8i 9?Z&_ŐEEG746?2W\y5Qk>?eMLH8rp=^|ꪺw7dg}f׮]s8Ą=z91JBAM툨`㊎Zƛޠ?1h 4aR۶mcbb<\NW$$EEEED܁:t-y^@-ڪu]rV+3[i} ‰cCTA҇AN0aU+Ǘ!t{Zjծ]䔔o~c=6`m}҆=]߻ՕJ|bbb*gLTEuF8Pv90(^>|HDž gQQa^wOM5ݴOUյ;LW]Aogl6pҥ^z WڳeV410((A9h;as&#tl2-55ռ橭ѹ={W\p!%%%..NS:t{.@mf~)j 'M$ӹ k_ڌt9$Qx $@1R ֭[{l?+V@0{l$ 0_xY!''Q@FYh5{?ahDIF8Y ^sϨhݑ<닙EjCj-eO=9Y +V@vAo=ph.Y3u$ظv C|Ua܁x/g͕ ̅ƒSoې<"N3 9cQh,?X>oCrڧo׶]VV+%/q.cǻwbc뽪޽ah@!?*䄦gR2QlNMt|>Ail z8^g>e.>P lX4E֟Eg U8񚝳C6Oi԰C痽~s_M_CL8YUUPh"X__gOA}T6be-PL̻7󄾈nH_bl>TcqKZras|v5TmŒ%oOaa/ok~l9o C?~0 E qA ? X `A~,A ? X `A~,A ? X `A~,A ? X `A~,A ? X `A~,A ? X `A~,A ? X `A~,A ? X `A~,A ? X `A~,A ? X `A~,A ? X `A~,A ? X `A~,A ? X `A~,A ? X `A~,A ? X `A~,A ? X `A~,A ? X `A~,A ? X `A~,A ? X `A~,A ? X `A~,A ? X `A~,A ? X `A~,A ? X `A~,A ? /]<IENDB`PKaF content.xmln6) آ+ɲLn1Ei+hRW}c!)t"hx#~!/?}HsAXpopd_^8&!G,,SnȲG]8% "J8\KD'+cӻũv-OYGS-t٩19*ȣQik)+%' UqɞЄ+O eww)*V{oR}}ڗ UI~4k*UÝW~6לAѰ8Kۂv.i$ 0uuc,Mw hkL$ʶޙ|sƋ&0&К4c[)ݿemm(j5L}X{쇇WFMLUV9DQn* h,:+O]4qNZ71؍pHK4#,DZpޢ,A4pFS&) {I4aTi_%'-mlkLwY&8k"ı.^qYk޴IvW?2$C}8C LVWF8}+{*Ge@BW$k̃j Guq<W;ԍVn `1xB2qSr,RdE!wkU[Cw 'cKev@3O*8 &X'& LR>v(ҧzK#yQ {C%8+HKx~ϢSŜqJ-ՌQ`ۖ+YYc!%0O?F;;#y2%|}Cp8E"#)g󒖦h2/#*pUIR`($Ŧ-}68dDGOsW5Cpw;ӀщV,)HWrяf2̾ׯ7QhwW~Iv##R f\nz-ބI& m>2V1q.!N)9b~U~*M&3!1"AQaq2#BR3br$C&S!1A ? pOj~7u .|TF~J#{4&'a\'8h6o%&)d?S5̗Wo53I!,za[ sEvܸ'@ )lq'?Nv@ 1vx,z#f}@!( QpOx0c% |fw 獣 cކ |Q\Qr ;v4J>7|3Bh'+.|g*IǮ}{Ph h% b@YP+a($恻)|*qڀG@W>Ss4ݴIbB $F[aFIb$EnW ZnֺѭeRIFV544}*/5jqȇ˾ZD1ʚ.mo!E]{odh=>Ux j ހd{UhVi Hb(nAh-3SMQlm+^/UgMYӮm@ξSn&=Qtv}iP22IQ\O}4IIH2W'.qDc6MBv~xQ| 2GAg٠BNN=(:RK'l}4 P)9ݨ-Ė$aD N3҉OzsBԺVOa%qbp}_{K]\]Ȋ l>ѭimj[@8TƎC)a"T{ \\Gn84{hXfq@rMz*@{h8 ʂ{/ أdA} ]Y ӯKNO#n|UtaZhg=f؊۞=EPvۃP7$|9'$ǭ `zQ*zsPpq7(&na^ֳ[4<81+ށWh2d*pO| z{{d'@|IA9JNP &>Sh, :Xm±WėRpcG:ގ1X+Is(k8~2p;A(8d4̀Kg2h1~mVR3Y/cSJAv>q){Uh(\jW^wt&O'('KU H6@(7)z wwh9WːH 'JnдvXkqC"Jv>e]1;ԃ[Hua.r!S^⠄랋5Ibxz>zgA"Wu H$A9#hy47͒wsbıe40PFGހF;Pϟ'>{@X EJ@rh+6!b] 'f-j 2)U@pۆsށsbhmdp㷶>tbR뵽F@v<Ο:g0pc1q}`z8hХyh,'èk Ë;uk8zOu.\^27an‚zM\ڀ6JIb䌒#sFu[WA w0X~.}#\F8E~ZBPFkH/'BBA 8EAϡ}3=+[B,zZFǖhnNMhGҀduHZD8]%ݽjc2Vl_lP*P,QO0($~c@A4C+0h86s@ buwF{P~T#q PFZ[pw ?0`?]M(C;m5`tW'Ƴ[x敝r1X6d{t's d([сR8,|AyC.,cC:vU[zQT[ .n@S l+6/m9$~X>%;t緐IG_NeCj2K*# Oo tcy)0@Ppڠ\'$vAhAX!sZ%o*Xla3!iXdQ)fcJLz^HeԓpR@>'?,J('G!\`\g@QK%-gPI( mka/n G?>>JM޼1EՃV ŕcʣGD:zP4MzM1Rd޴^g/8&CFQV}#> H(4 <>B'挜}?Zɾ+{nz_UkFd'@_$vPhH_T\ܽb˩ dUsRO-bG_XğQz;%7P7B bG<v;*2W+pEmZaM& PEuv<>$ Q#_|f ۩1aNs\L?HF($u3S(/-,⹷%w,r+ H8# XOJmN[NU6o!##Ci-0x19}=q@Pk,Ls$rm,Ү C[qsxvH!$L14{k1 C㲽K)к}^YOR;R}p!Dq)qք* O>Z,qsE%"m9⃣b@4J8G3'n8ݤ)D9Yf Be- EOb}A|:=֍ҤWeKö{zwEץGKҺMWH$]] u7XǤkG%ܒ'(Ocϯ;YMG͉ ނnTYMKdggk]jr JѬy bA߈yuv{8£n~mAkz+amaG7W;җαwۜE&r>>%)v49ϋkqӎ6sAREH@s(igyo( -6c MX<ǦhKX7=͚1F"ϥQazOU鮣#8ǵ(ӟLҺvWҒNcB ᱵvsY}3-k*M8?޵5hLT 6K +3Y( gXVՏdѨ Jc iv)8r{@B%=@F `?h' h6_FbdB@2Q^BH`+!" ۽` !TAͬtXSρ"G%\|J.ϫ;KK:.@k 3dzCW!Q- &P鏝}ҽ/ɪMr-Fcz2׽}=]4jGTFH;d<պ9ŴRF8g(sO4:?XW*:_ *-> gjN\m='bf|[PH:dTl8e~n[-p"T]UpK;qn( < ,eoq> k!Z!f?,U;wz}"Q,(vɕFq>hzwI [bW+FVLdM &*D .[}87[imtȩ,xh['M9@Eqm⤞ ӱ ?A0p؜Z->ctkLRF 0,;~e!bXr!z7KEmM332ɴGz=+KmP9cE8 1=P18@Aj~t0%VEyVT$п-kH b +XV@IY/ԣ[o9HU"BGb>cP+ 6EG8-uRl[=oaWGkgQ+%KRcxՂ*E sy?@Ef՚F)<lD~%)-$P\?${z`@`YCcxzѡX:qgg˛kU$X>8- MK}A;f_a[fJe-܌jZ,&5;P(cAKFQAAuD3_ 3_ WsъuJ?LG3^5L7BTc5eRVHKW{KkK'*OW=Zv$S̫e<lژ=l@v0k"?'s&K%B/n1Ogu{g6(7΋4xR!" F璤F22K$E-lc28+tu亄pfE v<)m+`n'>C3$J"yA :u`lo@C!' !}dyMӮk䷱+0W{+K^i`|zUPu5̪w#;n8 z[=x Sx gZ[v]CZjӲZABp0=(1THx_"S#G}4]+y.R(W>DIvvE&%&YW <`w$*h>iPJ%*#*oJZ&mM)r?QP-˟jcȠ1`Y4 NXF)>$F`A҂?V-{-naFA#5eJ{\mr?*hu_eomLM2lʌ)L4 vqx9*0 >ƚ&d >ml K9|F\OGCnŠ"( Z[j Z[,<[\cY?ۙtid29!9g0YeΚ۪&yݜSrϬVjZIin78U_y5_%]%vFy#Ƿ^`4Bj>A$FW_,2CG2?n8a#}KPt͎pj`N>$csH=F;7>thZBdrެJ;zhA k!>zNrO˵K׃ZRӯucTwfH= +CRTz 4$o'4:tbtWx |ڃrK$m>d8MUpO,ua__aӭm41ݟAۏzgZ%ѯ$r401]jԳHGqi^&bl0`;dRكY@V`7cyػ}OowsgZqpC 3ή ƒ6RfW^:`u'43Fx`o@Tq@P@XQ3Ƀwo\[x"&vlg#Aݏ'P3u..7V[/ܿ* +ݚ1P Su-֝ʐhvDe昁\g gGQ,۵-(N_5T'ymqPc}[]SbZcx`r0X 58G{$T{tφjpF9UѧƋg=՝bmuk='p#`=Pe=A0.H#*!6>_ϧHUn0F#>ރHkTxyGGZ8Z.< #F5x@}܋O˟A-/ ńK0#kF}8?j UjgZ Tho iNj.%rqW.zc>A⦩ Gs@?h-޷r̚lEn\콎XRGkI%RE u# 2i6#FI@d05{o 7+4 Kn%)Jgx9CXi"cnLcjy-NUO.äAܱ9'8ɪ-KBxnHp#[t1^: @dU=k&iœ1A~U#PX6:Y1BIV=~=S㶸#Zc9zu{hB/$zΥQjNuD:.rnjՂcD[k%幝qXTӚu{kbKxB'ēT X֮/mKI؀HΧԓAu 2;x2N0Cφ iOfHi}{B[-[msRK.uUȅERhl9TvKa6$B "c>#4:{c.qܞV'Z=Q;A{U3su֚r;]&]$sD^) BNA$8PHt]*-e%uz\uM V6CBSi@;Ճ}_?ZtشjOp}(~Tѡl1-.dAxA)mpor0€uNC0lE,X3h&c`޼{PVTtWD'PTՃ$zr^+8QiW9C8Fl\ #*JTk!.c,B{hQ> 4[.sx8BZT9\vOTBI18`Ѧ/V:[b_w^G-&DfJǷJ0Mvei|>&ct'8V}v_ԘY\aAo..2A'Fhѱf±Λca?栖ӺWHH[R Æ{u[t 5̐<c w@\]]E{5@ӏюW GQz WTԚN۠"K2w('h/~kk:kt4 raA,N0A(+]K=;=z@ )-<*y#[7;hWU^w$LT(Fe]VܜeV_Nʂ>\_[F@.3wJu~rJ|Ŗ{igTMblF\0I$3Ko$ʲ7 ݃d ݬ7d,8cmo` 7)R}ssyh2ӎ0&]]yF{ce+hY]B.]F͢V*v1lxv, OZWP\Xp]t+z[fr`--$#JHu(ǧMas4sZ!B1=P_ 8 \P.g]EM7[lz@ Γucjj'OJNo:R+J+$ȤH;c8zI my, ]7G?CuņDVZݤ·xN9ck2}AvkĎLEok ώK8)|N(9X&<~ǗdR6PhIQ}}(WW\[iQ]w(wdާs珝1+ֵR=Goރ ?K,'{(G/ՅX%:j@b(:Ff1j|$fϹ9Q_t{^n5 .qvI7Ѻi k)DJPdck1%I?QѼ2|lI8 /NWp[lP{sRZzm vH[ҭ$H3=ꖉta[_.wy&mfPhGr>*둓*NS@,+g$G΁18y' hRkvn觅?@vx7H;T?nP/s7c& PzV]IBہSYEonbI[req=4g^[7OX- JW=Z uSteyWvKԴ ;rXn?*7duJʑPh_ a/iXд{7ޖnNj[f YM19'*Z4W7y]fy~@YZ;0|&ѓoԤǽ#09ۃ8Ak*أ^9';ՐCkoi ,Kq#`,vybN3}I>e%*kZ>Vm`Ϙ1 I a>A09g{zgPAe\)'s# -x40 ZO.3Fj,VKERTj`h$ lPGʖe᷒JZ4a$c?\Qhsi< $b-ɁvH`/θ0q'{٨5$ r2;znc1G*xP4LhO 7M[W鋙mMf gΗ?MKn/%˂rNyVP?Q4ڏ+mj 9~IcXr9>U6oR,nk$zg]Z-LV@6Y#~2){A4;f q=MJi]=kg˩KNaNJcjJ Qᛖoz5eVM{Pbuw[iŽmcxwڮ 5R7MwE%!€`=j $020@UϠ|E׵۝F.`K.4~NJg d:.S&!!vvez2cPfi[$(#ːhd`hAmb@,=hFr#tC ދ}\(5|&ֶ*)SGzmd$6I>Ps)HA p<@qȄ>@houe2b;~EcPIL  uwlf4$4=]kz|v_%d|(ed}u,į.O>_GIKlIed= \ $m>7 ]4x I'J`h]_k-$p̛wʪ;AU#HܸFTDT{89/kSk]5cSĝPq ƷtNrBmDŽŕd E̽O˫BV8,F k' /֯<"8ǩ0dRit)r#ɑ(09=5j7z#Y~^C_8$S[`e8;Pw9WT>T} JiɎ(BayS8=l)$pVtqwd@X?&`f"I->Rhkyhd: d3R/i<-nxnmFi)_W e0FӻcɫOEbΣo:Ds2Ƙľ3zU4aLM*i\0?>8l@{^kdb ll7ܞkBj/ kQm v2/ǏlfߣZ]`;lLjv+3(1IK#sh%@4x]s@ ;>T&wS#=))|b&yFآ>18\sڋY Gܮ=>pO|PXmd1aN$a@0h'tީxDc.^=(4^7P3p0=v5iMuYomZ# Yݎ A'/Mm9YX5֕Ӷ&} [ncwzx+&W0y9=Xu%M{{mfҸR_RrOAkם/רX/{KyivRw悰jU^ wA$hlB>q(ř%'q<}C }@mA;#9bpx[:23EUs*Ah 6q@S4ٍ2*>po *[ J4:Q ߿Ή es?DB]FsseXc;w`{f Gd9$~`:N cYs9pL]W! PgϿژ/|t4JHGb+z-#\[@fA,o^1`5ތԣeb75ֳFn:Ey"Iku-5fϕW#qZCM"u2]kOo*28 \_Sw,ĉ$1'V\ g`H|;SB+,@'8 \O=@(w?JOFP-ʌ}j? s@pF{˜h'Kڤ@vRIGl@&H#4h g@phM<{ $g2ۈE1P`9P&2yh #H=@[ yPn!@"8wPߜo(y "=G&cF 4rc@``ǁP$ ׵qC.]NodNH{P;N9X3 #0^2 LZ+ {hq(w1总ݻ1(7df$<%!%NO!榀۞x)F=tJl8WDZ7+yN9 $$ G hQst9L#zP@o6(7s;(~S@H ##<WnzCw'(p9T`ځPPKaF settings.xmlZs8~"wBkzIRZ \߄`5#lȥ`z[OL,iW߷+2'/4Gy㝟y'  xng3@3 Ach>R7/ULsݔ,4AeͷRp|E$z}X.>E57z6oU!" LC=;Yoi.㷮 7[ۜ?ۭxaj5hk|_`mF*.׺J8\jfHY9O<4Qv<*EH{#\ N)&Q)' 1}gLbԸ a ᮭ+[CiVYnmUEl}x{j>PydRNLhovP]Fc08~ fr8g+LMEl^K?/+\Y:ڥx#Mc>oQe'!NT1C.J.oaS1UNW?@"JCPX'ŒLq/{? L L',;^ːNnF`؆[2',a ‡4rhBP&}W*2O;Vt0 0 o6|SULhS"AK2`B)-:To5`m%SGcE~U%n?.v,P e4] iqbV0A~j1 ˱+ƶ*}iUޭbfd١`D(OP9GAV % Bh qoƆvd0p7Fi/.J|!pYN;L ts \ic9G4=27;%P8Y!'Y͉^"ݓ}]x+sWF .Y8+2q|)d~l;DPLqP%T?@% X" O30/`'Y!j81JW[6:C ĉpOkZ3d9 L0CW$bu2% X>0) v/ՂPt.pi=}J39Le`R6Vpc0iϪO|md6_>)buCngSxe(Wbk?BaL):&KLv@O=6"eiy LQMF?,4lMrp-Kakt0NUFdg&jSA`QrV ]ozȞ;}PK3gZU$+!PKaF styles.xml]͒)TrmrDRH+^ڵ^R)DB+=Yhy4)"Faw㧿FA o^ljO}c{8C O߾M߿ppmv ՒtAȈO,Cc|NQ^qHAqZ5(E;&T^mP*#=#GQR`2~"O-~۾oEUvFɸE0 to{Ⱦn#.421 ?31ek(b  cJ}O^YHYa8!wӬِ2{yb"@6l{ɻ̡=7S3 3=ޖSf_`nyI{y&+k :Npm`dRFLae`!Z!qm79md~&wY!muUf/vӕ"#:QqD5!upXccIG-B"?b-W L-I A1Bz;l*R4R#5(<0 -Ø0 q ˛:kP%iSE\0oӾ8%oӔU`5̜DuLހ.[m/"OJkb\:q.mf؊L#mz"!h0S4vd;&F9G4~Ax`1z\XʼnfI4P xAJnHA);M,Jе[V zEk?ByA]^#'<#_sCtX[[m| j$0d]u5;77\6=GmTD 2)N˖6.! yH` zz/DuVz=>_H"LbEciBzu,u^Ǚ,T6#2p;K0!Z!LYFHOUT=&~iFWQFLjs(GX5pĵ"P">&H+rPXI/Hv|acRn#)BYE'=l S{B;?=_KySТFRCynة"elOQmW\M,~G35|8コq Hŀ閽$sDVz1p;oM&"2pt((X֮Cy9G>Iyx)׃8\A p^[ UE7UŞkSgMߴWIXHvBN;yEuCxЕZc9o+ ;;CA&BL3;C\jM~JIgU#)Sd*]vI-݌ΦMD 9v0݃sF7AATĻ<$;Z1d5ʗ HC6j >B{^V2yhZУY.)Q yXI_c圝%3бF%FcaB1[H#/}9iEQ+kƒM.B ׀|@a:/)W}0y0ۚRfF(,4PUli4m tAiR4'\ӣӴ9Q( L\Sez.)5E35mݘ'B%iF8nJ@ɗCR4'\ӓӴ9/"iF87iKBMY<\RjfkoJգ>"jN8FUβRW_e|/& wϜa= wC$`\5u9_KkP.Wv8'L;L垣W"U 0Yw$W;\E 9aa*VG٠ޡP1"gkvgYqNJaeuw-\K w-(>.+""׏V@Jd,mge4xpfe\L+!p.C !C PaE[&rՐFk<(q u~9r:ՐFiuUH#\k:*2#X\"`M,"-ˡ\"pͮ1 \vm/hj F:2 ĸ+GF#{ySx{IDH-UK)L>C fݠ{9\L\[ {1:e{)kBʗ P~$B^qG^)tkrnEq#L~0A|7_2Wg3/h72p?W Mp5?WMpݟWMp pmX,Cib~w<7#Orͯ2DusE#b,',tk]cpXoV?^-0_ͤ*0"mC%Ll_g1 ڂ.[tTU-Ul_-8GCKJP 3s9hӵ5N`Q,< RReR`ށ,/A jWs6(gw L5fr{b;W~_?$ r#'6yqS6\5J\/C%.nLNO 0̜k  N"cA Martin Linnemann2015-03-01T17:26:12.312015-03-01T18:21:10.37Martin LinnemannPT10M3S2OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PKaFMETA-INF/manifest.xmln0 "]Rq[F U^S:71.(aεP~iUhT4.5YS_Wl0\*ϰ[6{=/N*$v oR`pt֫βlFw=y@?5se5Ihzu ;sPKʾPFPKaF^2 ''mimetypePKaFMConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/menubar/PKaFMConfigurations2/progressbar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/toolbar/PKaFConfigurations2/statusbar/PKaF-Configurations2/toolpanel/PKaF N||eThumbnails/thumbnail.pngPKaF\v content.xmlPKaFi??-U$Pictures/10000000000000FA000000FAD6A15225.jpgPKaF3gZU$+! .dsettings.xmlPKaFQ_mR istyles.xmlPKaFh Ixmanifest.rdfPKaFymeta.xmlPKaFʾPF}META-INF/manifest.xmlPK2pandoc-3.1.3/test/odt/odt/inlinedCode.odt0000644000000000000000000002363507346545000016444 0ustar0000000000000000PKX\I'Configurations2/accelerator/current.xmlPKPKX\IConfigurations2/floater/PKX\IConfigurations2/images/Bitmaps/PKX\IConfigurations2/menubar/PKX\IConfigurations2/popupmenu/PKX\IConfigurations2/progressbar/PKX\IConfigurations2/statusbar/PKX\IConfigurations2/toolbar/PKX\IConfigurations2/toolpanel/PKX\IMETA-INF/manifest.xmln }zP* `ID`G4ejfc0PmOGx ffm7)4-Dנ0ҚҫhD J//NlfU1B&k^ѡfbNd\vUҹF+m )''8K>P]Cc7`@ E.# |gr1F Îv@t_k<4W'w=-ylME",So^w>p@p=U+|PKY>PKX\IwwThumbnails/thumbnail.pngPNG  IHDRbPLTEwnjpqtsqq~u~zytw}x~ɶĿԻʳ߷ķ˸οѽżȽ°ѽ@ IDATxoqfQVyklҚbVLY6:+JBL!~;di>w<zKpsdCu³awU~=Zs<||i1NՓQfT}r=779UN\ o+a6$OtR2Q8<M;?z1);O$VBʷRTޝn߿5ܼݫϴw*۹n߭tBByQ+\o덭r{{\L?Y#55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555_QU$ގ}pIENDB`PKKUhI,V content.xmlX[ϓ0WLn4q1;ӵ/[ci-;{KdAyO}·Kʃ(ͤXdz0A$eGJ& #SI ,[f]ĚXtlH,3+n"V'=6p1dmq~Rdnqڦ6鉜Jh%v=ͰadqL\GcT4%r:aR\q"FsTaS0x3B|b{PNV y'#Imq0|*)(тdJXbom#uߋ{–0ړ0X`ߗ.vBoUHrzCtwubHG]΃3TٚbbQd0zĚțRv.gZ5⏘Mw*9\\ qrw.-_t/ {IՃYXïWQw1pKk$s㶍 (t沼ܤt+^?;yw?εkٍrSQy +n>tPa$t䆉"%jiVfmmFa- i>\ 7 u$=kW Mj٢d(Նе\8[0|\m{qPK|PKX\I^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKX\I settings.xmlZ[s:~?"{!m$ 7a/HrV2)5<1+oW+(Qޕ./*3!F\NJM_8i Ҝk0g])ULs],]7ao;eٕrvW|~1@5)_j~4D9CUeOUEl1NYRyWV|cj~moW sn 9[]K++j}wz 1)eBwIr[q./<2ӽT |2ݿj`DcК29a(ҽQ)ёMs 0\jބC6C'u.=GRӍ6壏(p*| 5TV^ٳI1" гrXKVbҥ^ HXHnsAc3!Z,}P!PkO;O4KZ wz5ͣ6ֈ]}UkEwAP0]`j 44uAqEѣq2ic'yhRE>@mF螴̓.h@^B)w&BPC3j f1Ea*e0FYD%Նvw*2ei!3_eYe0/DHoC+ujo}t\^!mŝοl'N䘞\kBSap(<`ݑ]}$lCqda's2 J2Z[|mG1v-` RkQt@<8|*eMG Qs[(ssksdΌ~'sy(RႡ^{v֓-kQne*8f;Çs[o zC]J 7iBI-Oғ]wUp:ZPR$}Nʯ5djyCloU!/ @`nh>4di> j И&* vmE*4L`Q@7]=RBk'[nJuMټm5\T[a7%NH >'3iˁONyD/+LSd#cG>0EAyK'ۃGoyęY{Txi\7k3qjoq"7fMjjguy.5#&G?p˳#_G|? M_h7S$hr;߼PK5wO(PKX\I styles.xml][~ϯpy+dϦIR٪JfyK&}oO/IK!> <)ݺj5.8I+)v+V J˦El4q(nm kؓew(j0Y>Ci m_*7̹eyB* ױ(-qXbw]BdR#0 5ӂ;ֶ<8"q*n@;pm E&<%+ g<WC7^|fX,k0tL1qQFG @Rx#d!L @ا$0J &Z!Pq$*} !VU~W,ik$}"qy{~Dp1`[AzۭHhB"ibX|*1i U+))8NOc]Â`|$!Qt;5bc;8D~B];6?>RQ\?6oE/dI|Ba29!zMxwYkG:?L( xẎQaQ /N}W44&_0d d6E2wkw=2H"ydohC˴J!=À, I\-_ 9=i~ssnW*Ww35 Ɏ"#(K 0YQmQ*ZwӂBS :8 6Użt=;y6 1Dڟ~؂`6YA !u&3\T-Ƃ5ˉ+\(e mp1^WBfe|x&ʀR |>붠?M*P0(ԭ_TqXV mbyh[![yl,4( 4f  }aCi'9Y:+6K|mٯl^MuAw9LQlk,g8Gide+S_vMZ1:+5qdd--0P;ֱ!O<{Cmp( P*9a{ȓX\3C=@wǯֱ0C1PYVٌŌ"iJwݖi-ƌo\0y?CA}0 d9 -9qp"g]PQ;;>=/ZХ.)g@Zc x@IG\T;,zQ$sdO:׉Z+XOiCh=`^8fvm<@E1i C8+Ҳy1g*%E}SM_ҐNmR*Ovi4Ahm|Mg5-Ea4굃s Sey2"!%Yp ͚LoKHl!ZTAV˖ Lf+Ҥ!vîݰU^~g,R(۠ss88󚅪&~~RNL^ ۹Ŀ$oC{{#&~##)ٱ-S$y5s}H͛{9kgh[GM+-Fq#O}W\`_ޏp8 y-hsSNDo}MT{%\])R5nεƗBWkkPڴs29899OH΂3h&,,gxD;)zx𥾟 ѰT˳MM5bkYnQQ1K _9212yUvBfSV`H˂\$$:}pq7b&=jf${-/Ph5:w@YzFK0N-uL'jO.qtEœ+,s߉k7cBQ> j;oJ+P& (> kM/Gp?Y q< pOȤ/H\ّ鱝:S(jUH-Gξ8 {b$|N2'Ig:Ӽ E*$#=<6Ykk\/1>WwrLۗr"k因GZLsw}]o.'rƴ}_ڦ\tS!tۘ Sg:=mǔ 6+/}t>S.tۘ/ l=rƴC=o˧`ڃʅ'Kµb 9kBR. D]6"cUMETA-INF/manifest.xmlPKX\IwwwThumbnails/thumbnail.pngPK?KUhI,V $content.xmlPKX\Ih N manifest.rdfPKX\I| meta.xmlPKX\I^2 ''mimetypePKX\I5wO( settings.xmlPKX\I [ .styles.xmlPKp#pandoc-3.1.3/test/odt/odt/italic.odt0000644000000000000000000002427207346545000015472 0ustar0000000000000000PKaF^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKaFConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/menubar/PKaFConfigurations2/progressbar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/toolbar/PKaFConfigurations2/statusbar/PKaFConfigurations2/toolpanel/PKaF64(Thumbnails/thumbnail.pngPNG  IHDRzAIDATxA DP@Qj_6J#x5,#& eY& h胢>(胢>(胢>(胢>(#}쯳?1X9MbV9\ʾ=#}l5u݂Q|RAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAyNWIENDB`PKaF content.xmln6} Cz$vc/@@o ZmtX}$˱dK VdW 99T@w ㈒5pV!|mHQ"=MLέ-#3 83g›kEs.qi8-^uVG`Y~83+leR+Zyϱ2Az#\w9CLS7MRppd{.PM݁3p P6>e l%dS8ʟ֥wӺ 5{#2>;YM^vF?{eRG K/S[g)iA(a?vszw|ǐ,c5Ҍ /inJ >mn|^0tuwj¡{60ctF @a BJ'.!e"M̪|ilz5\SȕG_< G~Qq)Im}R+Xm;2irsp{1ECk\0_6cnx`dHL=\s8gLa-ГuW}Cyq~iyA&헆ZHx=髀_n!w [q>g.`c܅E3n[A݀<;'ݸϣXsA5& e,z׃H>`~b?6:$tǓI8;2 ﭨ^F?y [8@>6PYw&᫂6,JH<נ/!*F.xfadȻŁd"$kakס5S/Cӝ]2~#]ylm84Ǚ2~oHȫ͖'桪 ,|s XuW $;j\QRW.z2G|GWDУ큈/[v߹M5"rH= r,{%᫱wL\Km`F?3t&j\bڰXFyI\j3b!97\"ڰ\uyI\jsB6q7ոab8׃%q ̴U{Ԇebr7htF#0A;`FH,F#h,4 h b4F1ASE#hb4F1A#`F@,F#h(4 hM`\?!>ϱ l]~n9F@Zµ+GXyAgaծ'Tƕ'tW*CeXy*CGa}2}XFh.?ZeV2G`E.Z ?/K?=o[H_9mY1xV`Dod?[.P R|`z6V0VhY|y4[:%qd-'W"l="|rPK0LErPKaF settings.xmlZ[s:~?"wS!!雰Fz$9ʆ4CĒv|߮X=wq^@r9''sKx4i*)K̇T&2uStML@n5_nf/Kӕ4bqxwj^h4lt35@9cU_BEvALYV{_֛|easZASbkg+T69,^[+`L͈Y%4¥Zꮄaf}䡉ɭ7>\{oMZq_ЉR0E2*b:zpC8$}Ƅ>Z|%fIjpek(-8­j(rƶrOťHwq5 (=M2et&tt0;(>$`|(.OHvENá>[aj:(XngZz-F|*-weA1 ]E |רrhx T'!OT1C.J.aS1UNW=B"JCPXGŒL {~bF8NX`wX!܌V; ɷ5dNX^@wi<DC:4MTdv`,`3S|OU*MtdD' "\JAnѡ|e5nm.Z{Q(`,.Gر@981`6#hw ĉY9 .$d W0HmU?L;kͺ(CP:8S=ia,U`;GQ0NqF@nu(MEQEB/.2 ~i.QA+m,╦']f'" ?4$9K{ϵ oeCh GBb@=WS&~/%:m 9?IĊJ e\RH~YR!a,¸:CvBd{e9$YJ@'&5_M0c I?s`ڢ!e>yTQQ6 _t2bͽCI(:}-h&$)Dm*lѐ]9J[q|sܡJ C?顺_=_PK'#((+!PKaF styles.xml]ݒSP>T-{Rcoƾe+ &g ?EyL%Ax['C<@p`%m-6 2H^-B8Y|v8LDTp'tZn?1Ib ֡>(U.Wp}5pt)۟O}d)jx/@R^ >;PEs~4>hBAu[IP!` %E4s#R6Hc]5 jz#2b ,Hן6^W_TȟPLҿ(x9~4SƘí{3o1J/&wBs>eU7l LYZMg,B"bF.t|5g1ZIU &,Lc2nH9:Z':>2OS B6V&-PJ1Ɇ$oMFh gEaB6yl: |!࿏F|?4 <1H1FHx$N]qfb0CDQe{$$%ɒ !x kL0Rۉ3o|M%G1}f~IĆJ:MXdP$4点rAAP߄Y΂Qs/КD_a֑d]hVl,,`oo& WHf wHH@XFX5]}e$*k9=v%G;Y߅)֍s_ٻUKI7x*,'ߟI+IJc$4A QR'>c3!JR fF8[s cr_ !7A4At_RkACQr0Ch ߠ7gۜ;հe5J ŀbsek$fcFlEcD)FeJE-"ʗ>sWT$h'!ԓɧbhamh|q:b%fr IC lK{S #K9;wR cүDa[E!,HVĢ@fNhRYや!bߜyQAl_h2%Rx"%IUgφv:eiJK˔=K -=옥bg~v3:ffi\R*愳[혥%biN8:ei ˡLٳ YڙCR4'ғYUiP{$=혙SKJМpvKۃNzh FPZN1>I?u,XېI=5)}K-uGg{Y,8[*goh:aKJ AH ;\fT%aa*ʾtTpvP8{$*QphjxIw(&p1&wT#k0h"kzed.YqNJc-BK"-h*"ι"|W+ %2B2 oT]\u%ekU C*H-Tjh9#u",^;< p,\#k/myjH-\7 ׃jk2PFH-\㛅kbM4p9PH-XˆEKpH-\ۅk ZT(D6RhYUWGALȼaydx<2G^-r 78.0=\+{9j饡CE㫟 QbUߋ!o,`K!%X`M. ֽR>te[l {! ktieqKƗ^0%iXadt2zf>^30{0\}EwͿ ;_; JI7 E:pmǎ,^.yFelj>A"7q FtpW]5X9ߗU.y4,0_N4*p"Z [ټ1 %Ț:ֽmsܨp6~t Ρek~Sn@WR;@ryMkNǭ#\7-;Btd -CT JQD2r;3{oxYύN!SpUY&bR}ڏF#đ``p#PuÈgҏw譓+)@="5WHi+Ϧ7y3wG #l9^54Iv)PF~Ngj3̻f&I ʡ&I C]OI>r4wQs3蹘 Rإ`Hq,q[ =); s 3g'/UxЂbA>툃]'nOj8ŤV hه Martin Linnemann2015-03-01T17:26:12.312015-03-01T17:52:32.92Martin LinnemannPT10M3S2OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PKaFMETA-INF/manifest.xmln }zP& `ID`G*ɶtZlNGx fbSh$siR@U4Qr%i;I~5XyPpFtbъ8b/ Nt5dm):TL0üʛƴ)\ŵPZ t 1a“z pT v^}HQ{/ofOIoD =ӫut0xzu~PKjҠ">PKaF^2 ''mimetypePKaFMConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/menubar/PKaFMConfigurations2/progressbar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/toolbar/PKaFConfigurations2/statusbar/PKaF-Configurations2/toolpanel/PKaF64(eThumbnails/thumbnail.pngPKaF0LEr xcontent.xmlPKaF'#((+! settings.xmlPKaF Ɇ _styles.xmlPKaFh omanifest.rdfPKaFf*meta.xmlPKaFjҠ">"META-INF/manifest.xmlPKp4$pandoc-3.1.3/test/odt/odt/listBlocks.odt0000644000000000000000000002450507346545000016335 0ustar0000000000000000PK6aF^2 ''mimetypeapplication/vnd.oasis.opendocument.textPK6aFConfigurations2/floater/PK6aF'Configurations2/accelerator/current.xmlPKPK6aFConfigurations2/images/Bitmaps/PK6aFConfigurations2/progressbar/PK6aFConfigurations2/menubar/PK6aFConfigurations2/popupmenu/PK6aFConfigurations2/statusbar/PK6aFConfigurations2/toolbar/PK6aFConfigurations2/toolpanel/PK6aFDݮThumbnails/thumbnail.pngPNG  IHDRzAuIDATxъ0@Q_v"{&]]yTGIcn~_ޚ>(胢>(胢>(胢>(胢ʒ>v[v֯V:܏q;v>[wVəN_~i-۽ݐ0gi}@C%M#)=l8k_F޵;\rjYdi}4lOO28ֱ>FY>g;L7gdf:/||2g_Linq*9Bzˈ%qGL||?׷??(S>ΪoGn :;0ݜ>X<+57g>)E}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PA |VWIENDB`PK6aF content.xmln6} Az:~v-hPJqrSzcII-m"$9C79 Ы׏ e+{l > PY߼"a| `\w̖zveh$!AْK8Zj/=쮌>﬌V$Ώ ;!Yѳ(1Wdyݏ]B7pXxj6*=܌yCwej|ҶR֐VN aS"6'Ro\8w}#'̽[1jFUG)J*ߦ.BP>*`0uz|O`5󌓨,in >2 _&pyz:7fɥ0ctA1 >dJ'tQĄ5c>r63 (5=qs{SFy"SۦHe!8IAe[bYxy@(@N|n e+%:Ef!y_ō=EkK(L^X'њ53Ew9l`,r(#.mE,lEq_ |% [|#HVOq$:xީLl@ W}?0+ 2l(HلԅDG 2رL>AMKwCnI9./{>`vwvevv 2y @D&71Xiq6l6e>3IV!aEovasq)n$7]B>QEW3pgi:A?乇3,f%gccY uh?̟vȝNqI=2cë%si ̴l·u(ư&dRd.c#y=.GcX}lcSjXd.YqM.GcX>]^J0&.h#XFJ0F#h%Zh-c4b1A+\F`4nb1A+XFZ0F#h!Zhc4rF09!Uf(LEۅ!z\nqPgupʁQVr[X q =ոPVSX_@{L{-ڰ:Em\e:EOq5^ԆU^VFm\eFOq5tԆUtVGƫ15?~XF.t?:eN2G`C-Z]?fF0e2Gp3)\F,t?EEwĚOtO3ƇW|: `(NZY=Jxq d7|bםlYWMq;5Ch]Clv5Ϯf`:OFe3yj ASwļQ5ku蒣 9ZP "f/`[1l5޻~->bf1< DY$T;8ޠ{hqQy؅ +V%C[0p848xG';6PKQpPK6aF settings.xmlZ[s:~?"wBB/$t )- fN߄`5#Yِ`zXҮەrigP./3\.izNAc0>yd@$i7"TЀ15]i,wy#I >Uv*{izaOч;/U oxH3Don6cS_q#$<5yT, )6evkl_|Q#e4 Ex3PM4RJtJEiɂ.1aF7x[ TUGn;&S&:T=H61P r[/s t5?p((tDi,Q&`\Lf.'fzD[^05UN2n[f4&l̎ BA|BO? * œX0.`;GQ[P`fbm'8Lc :}c&(tdAǕ6TJӗ.s\B E]~ru؂%}9څ2G}!i c`!Jv ~ž7{H ?̗Mƶ$bMer]( ?(X:0Oa\xbsHƀ|q { VÉQڲс,%N!NxڐֆWp@$[a9"˗!,I O}ͩ ~RM-5Iw@׷9T&uj[nu7 ӽ~\זY@fe@ ᣢ'Y7ƌ6re/VC 9L(6PUDYeIh8F b0mѐ2x")(RK:1!$yI. ߾V@B S;fh%ዋ-89Rmڊ{?]顾_?PKm(+!PK6aF styles.xml]ݒSPJra n3=[$L^o [3ri*ϒG'#ɲ/ I;H:ݏOp4 уa[#c#Az0~ޑ2O|L]G='>y}68ϼ{H+”g̲t”wO-̘ei?A۶”l*/I[44&FYPSDuvc$=χZ+<  qigж 啇NZeq#Wxk Ƽoؗe7([k0 ?dӶ/ʻg*/ ܲ'LLՙsT玪 r `69wT*7ݠ 7,L@&o twh WXz \k'_)WH/@@z?. رܽsн9_] /܈^ 8Q;3B*U.W= cؕ oE\ K'2-x =R-m_SۦZ Martin Linnemann2015-03-01T17:26:12.312015-03-01T17:41:45.06Martin LinnemannPT10M3S2OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PK6aFMETA-INF/manifest.xmln }zP& `ID`G*ɶtZlNGx fbSh$siR@U4Qr%i;I~5XyPpFtbъ8b/ Nt5dm):TL0üʛƴ)\ŵPZ t 1a“z pT v^}HQ{/ofOIoD =ӫut0xzu~PKjҠ">PK6aF^2 ''mimetypePK6aFMConfigurations2/floater/PK6aF'Configurations2/accelerator/current.xmlPK6aFConfigurations2/images/Bitmaps/PK6aFConfigurations2/progressbar/PK6aFQConfigurations2/menubar/PK6aFConfigurations2/popupmenu/PK6aFConfigurations2/statusbar/PK6aFConfigurations2/toolbar/PK6aF-Configurations2/toolpanel/PK6aFDݮeThumbnails/thumbnail.pngPK6aFQp Icontent.xmlPK6aFm(+! settings.xmlPK6aFz݋ ' 5styles.xmlPK6aFh manifest.rdfPK6aF)d7meta.xmlPK6aFjҠ">Z#META-INF/manifest.xmlPKp$pandoc-3.1.3/test/odt/odt/orderedListHeader.odt0000644000000000000000000002645507346545000017623 0ustar0000000000000000PKQ"T^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKQ"TConfigurations2/floater/PKQ"TConfigurations2/menubar/PKQ"TConfigurations2/popupmenu/PKQ"TConfigurations2/toolbar/PKQ"TConfigurations2/images/Bitmaps/PKQ"TConfigurations2/toolpanel/PKQ"TConfigurations2/progressbar/PKQ"TConfigurations2/statusbar/PKQ"T'Configurations2/accelerator/current.xmlPKPKQ"T manifest.rdf͓n0,`zU+5+9,q 62fI}dCo{͘\WVj8NB2_ߢmX|@] F5X8jiidmC>X$IQ,z'@(Y+[X -,A߱ԏ5Ƃ/RMg*/$8 Rpь=WR7vWgzS~g+4 Gkaڝ71}_,< y"󎥒V*զxfJoٱN4J*_*_궈vaj)>w >wy~qy\-aAk ̆RZa::@OEP$}ʄ[i̒S.#XBm`׫Lމ6^X͝],ث}8\lQ\]wO?Wأg:,NLZ)Me @+P*`+mKQTj[J\YYMvi*ݯ4Mnj@@h!jk@!\dˇh K< e՟o1vw߀%~R]Hv0@ L$?G~` M+o5),e580"0TJK3RYJ4[6ډ,)˕, +&g"H9L^+1*ĉ]Myf4#sǍKtc wwFjm2o.7#ٴ6]I"VK3͒y㢭tX=4Mւ6>1vy8e/<HF+?PWRq"`9 5O컚B(0Iz5]AM_#2$*8 eREFXF [Iр6$YpAa^ZĥWF0 =@0c] P!H[L (}y-{`5) Tܵ=4 U[@Yx5eH53̨%Z#)EE~L"fi/||Rw !qdc^ >@-8pTDCc[ϓԪxvCZK^{b]3bAvB(9|6?łD%X2v jl=.fvG*a H Ӛ3 ]ϛ'jl|QZz:H%Sv kA\2NSQ]7 Jh@}""-yGkɣ]9ٕ`RA10ule0NXwRz%ӫ}p; e_)jZS%hJΏ(]O\ $vdUaТ5|AwFxy̗BMz8E6/MzfG%(ه<c]ɿZwW7|=<=FȚܶʺBb& @O&Зh<y¦ѥX#q h2 ,{wYQ:J6nӝ 1'tۙI$үcxIYlsSf7ڇCvr;5OWnLLPMMT*>Qty jyw]t:I5n(\ a*b%Eᙒ2Q-yG6}颂KA[2AGD®7 c.&hʏZcLDP7ϺOsϱ1%@F0z\<6WmDy!+Ϳ;Rr$=;Jޗ- E7ܺ@l! 3^ZĮzTBeuMK2w[n@(nPK8 1PKQ"TOATThumbnails/thumbnail.pngPNG  IHDR?PLTEnnnuuu{{{/mbIDATxkO; `;8%uBTҙ !8dy;^/PC 5PC 5PC 5]KsΨ>sI=%ՃiM|)Y$~<AM65taVK6<[zG˭{n\BD+"Jztޢ{e24ʸ1y z.#jb?9ܬZu&^꜖MTg4jϮMGRo|t½ N:*֛R+V{Tfh*&J>eUO}W`I))ӵuJm5q$V  L6kͽK0vD\|գPDWu*^Y!:IVi6.ۇz+EVx/z5Y1cYZWW3*Ś޺2{|sz=r79p 5P^ U;|~q.vBtgӘcReF{~FAUFrM3\lip՗Qʌ1 {!i-atP#jH5ϵ[u ѬGgEMjqYGk^3QYOjzPƵ;=Kg~n1sT`bwT#_rXws ofHշ?'I{nػI@(Y>~wg?|K(! 5NӗwP9[Q> $ʼn(l9@uTd5ۈAPh7"NJD`]9!ʢ+@vBw o6ޟA4HujU&q8釐ocX/c W~F;!Fq%xE-rHJ[%a* dhsLްk%is`NvOΊd0Mw*? U!ضicѕ#u (C|ELA%(D8]!<6H( hÀ$,P=:b99X8H32Rgrcք㝗AX2_7 b`;8~bK)/ "z Ef_VM|9qr`-A)պ+FQvRD~_II9")ٖ3ژ;]VUsp~PSK 81 Cx>q[sZ$-D,ZUu.M #uͱ[;#;0o]fvK--Z58,X 3FQⰓ4EoK)-U[ETJ>ԡĉC1VmM$cÌ:glNF6Ρɟ1NJ؁y꾎 QEQ˜vQ9(X~( oU E7}o2K0e)[G_9`?zu %핸w -x^}AJ 7ACS?l҃P{}A`ڹKy}H]akjmaoHوk:ce2ыwg;؏! \莠&uk_\]{?Ɲ:`21̖vpL)s')Kv j$2Vpú͖&[OC%/Gamz?v%Yݾ܁R=PkgI{QRP!OlZ|`Z掿lp\kNg"X_CJ?!yG@툆ص7{bd7tY c$3b6xS6Lhf3ۓ5E-vnuŽ;OUݯ%d+\l|Z- ƿF ­\n{Yrj9`tm;?A5miP.GSew/^/47ĵ7t;oix=C/EcF!Z:Usbko|mo7f[r~ *T׮vݒNzZgvlsrc~ /Bk)r*őŋD<Rq#!lھLW|h}SE$xrv=ܵpy7(Fshʞ(5R) dCg"2A{Jս)?ɽLf46,*ilƭhڒg?tTIs[ ^oobM x#n Ԓ!xu c3QL EA^½mQC_4)xu 3ɭQY(S)LoX,(YLf&A^;q`?gU phT8=|]x֔9f9)E^,cjM9ג^,M@Khޛ`v螓4Cm0qt4ћ`iJ8v8p|4`s,KG 'G3 qG8N8}G~UV9,goeG'YdMwRw%3G޹3Geo%G&e {QfUQW5tY3c҈*W,F9Zp5']n]Fբ^9jRV5բ^ׁ*gd rz ]FeJY]/m $ UV5LjiNX6F꼑7:h7/~=Wd6%}{=Odq Dv`Oi9VY 9r|n9";ӎ !f]QGs|فt997u`loSR fF2C} ??ԅѕd: Б.1/mAw.s$Ktvi]b3~!L 3:ݡ_Zl_҂|)#]dv3 xk/2ܼ>az%Ȑ PQ(-.̬Kټ6{'UexсF]KbXwz\S&DSW GUHy!4d-RpٰOЭޞ7X%(<\t[kKFֲe>H{<5ퟍEˆ}n lٳEˆ}n O:Eprn 8w,eooU:܂~[BȊ2q)ZFD IPp.#Ih`#uÅO'"tk)gYD) kn;cڍg` O9Ph3 )ݱ~!mM?:(&%(ei\*]Rd\ *Qf(+|IMs @9t.E/(1U0dt%bO+a">{Ez=1ڄ$ D&Ln[yliHt(^PLV1P?b:I[Dأs?_nl)iA4 AMxzN#oɊ틠E5V_}( Fn.ߎяNri)EEj/B@Ha`. Z6/`Ѓj6dT<ĝLy-8?9%&>%aMXJamp`%qx7={wɢ;0)RJ4Pܤ(UsaOad̝9Hn?HibNqg{s1*4iL@;c1%Ѭٳ3=odU"ggԴ0*%Ѽ3G@Zx Lw$F rlgb>BTZ=$Xx d6v,D1,1(.TyǙ<\6X5VKgO:+DhPK< +PKQ"TMETA-INF/manifest.xmlMn09ϦYT fL,(ܾ@U% jv-KY[t(: p|Ղ=?K2:_f`1dllImE8(pg;c5F}PR ~MB'Ls1\~/xhX$骥SثFSuzz$ruHT#dU֑Wc<2/?I^fFϟu}7_"Ӹ(~FGNOOL~\sk&~69.fs6ȩxN%KTC DžV[n&䖮Kꔆ7nt٩ 5Jׯk-W=vvOK<]Bc06YgtOSRܴBfBpR-~BVPڠRHbn3)+t@U_sJ۠r|k``````````````````````````````````/_JʅIENDB`PK[NI content.xmlZmo6_j>M֋݆6XRl ZdTSsj=wTQR/@lxH z.*澿ZFgoq+JA *}L^L(l.2_`184HgʇlpF&wďD5j;)&eYtiS1-%$^-n0sp$ݴQ(b)Ǫ/@u-ܫP)KpL۪N5~_7eE>5߭ q/81a _0d!HV2/ bL/-^d3yQC;y@ K_1Ist>39Ol%T8?ǚypQ8i{NmخU;Y 2e# }/6Һ 4JdܒR% Lq :ȁư>^ Etj?+,&ȵ$B^ b[p~Mwݒ @Y#W٬ [֍j-8tS r0/2b ZS&'40ԍʠl*k1I3kw(50w⭥j5#\Y{WշrRdh|皏>Yؓ:(n1&`ɘ IvMQ˖,I~y&dYk6 k-iA@d n+Pb{.+ëi~!SPm'3mx * iHbo!b,MfrOam uJ!"BnX ,=(FFR7dD1 q;F ڇb7fmT 3C|̒: l#N&\zKM7ڔ>%g[XS=(6wXyzeOrD$}ƈ(l|Ccs/Yiz0em 6f͕6a„hTAETB nn<_^<,A{h-F 4ۈO[ 7חecwAxPqab?*N!dʋ|DCql8=ike]d񀼄R,=L$ gB* -&L8ˆ Fkӧaz NmK /37TeDӂ/C&fޓK>@ aa؇j;f⽪GCk;؞M1= pE^qPyRῺ#\H؆ ,H]I ONAMed7.1b:f586".xXo(]S7L:Ϛf$ .pQ׸5="ǂODPdv%C'["ע<0TIvR32cφo">#:ԥ')t)n7Ļ,suF]H ;|߼mrp /oߗ 覫TJ |-p` Z)޺ }j+Lĉa4fx0m93ۂV~%М~&#l6ѧ((}d{-8R1Kwc / ^c ~#.Xm !I̴IU~W|,:Υfdۤ$wnyvD넏'# fM|e瓷JǀPK~PN(PK[NImeta.xmlO0KR=z{߾o&7=]{H> Bŵh?2&9Py[<ת:~kլ UZNu jnkFr).)0vxΨ W(1;4lC:z11`aLFcY%t}ojᑟcF*i%+76 3V*Y*S*wy89C1 ɁlhR1\tI I$1Qbm#2SS9jSiT R<1]h%$d+O ޒоħۗí>'^f`*CBe|I (Wo# dEyW ;iL`~NgG40ܭ8㯂x"w{ i*!qa<ޏ-Ӷv(Ocl) w26$~#40[y#^ը\1>*6FPKv 1蝑(vqE!&%+ &`XfA`EAQQKǙQ,+JBL9wS-Z#`A$ͩ-麏fcPCBes)>XT#5y\`bZ%BFoB1ݔr*}KKxUIB*oWT:1~T6`PN)9 i\v^Atc1 CP<[ 8Fb:%A+a<)?NXs*R|˔~ |v<AV&taLy7m1/KV]Яtŵ;ÎIrL䚽n?^6bٿU)+YgUGt ~|/ ~m^6uYRXV|[ɻkTO%bU!l6IktΖ{]*b̭vupV9 ׶:Vs}R*w#i94~S  hlfIP"LD"RY-[FZ00@C|W@0m SiFW?ԣ7ҷ;R.? \O uÁah:n1^tot}w~of%*R{e53uiAg{f]_BX{QՠOS/Eq `~./ՓA iq5QcӜi\y褟w₡k$S{-*ivh$pѧ)}rυf'svs y.~KeǘAS>Q<5ؖlsf}LJshXEmMbOתY٪\6sI7Sq:jP(Vm]2pCW,fҳa,|lvqEqh,ʦKcir񠥚Ąr vdG;TZs==sx:04:u<;x\9t</:^CW?ұ԰ү}Үѯְyh쨕Pɇ$YlYQ]cy4ifXYI?vO[KwU2jn+v 48Ah0遘sCLjP#ƅΆ{CL*}KnBgClzCL*s]H:b 1YG:bbRՙ1!t67jܹ9^^5^w!:br̟-&B襐I-Ϻ|?I N%K@ b\_'p"^1bL,q]z<I+bӫE6OJ"]1b;&5/q"6Z(:斯|T*.{ҊjsͩC[2* "ZĦgٽmZ<|'.ҊyUB]1bÃa3Z?移J"/AO:i0rƴ{cXڦ/lLwKMuo1Bi0Ɣ ]6ݛ8Cԛyc/lL{~ ;\U@մRHֻ}l$xΊNe`.}\I*1x! v I$-0R/p"< T0dʱ|E=|Z &8-J ox I8 ai0f*슃t[w$&٦Feņͬ,]7G" a&YXI*>tLkTE|"gbdž(yJ{4Q&]&TeZ\CAK `-7ZqNH| `]R^+ D7G1j`DZ.TQrb 1HG:0W5K,Fcr=*PKfEP PK[NI manifest.rdf͓n0P]Cc7`@ E.# |gr1F Îv@t_k<4W'w=-ylME",So^w>p@p=U+|PKY>PK[NI^2 ''mimetypePK[NI.1MThumbnails/thumbnail.pngPK[NIc4*J& U content.xmlPK[NI~PN( settings.xmlPK[NI meta.xmlPK[NIfEP styles.xmlPK[NIh %manifest.rdfPK[NI&Configurations2/toolpanel/PK[NI&Configurations2/progressbar/PK[NI7'Configurations2/statusbar/PK[NIo'Configurations2/popupmenu/PK[NI''Configurations2/accelerator/current.xmlPK[NI'Configurations2/floater/PK[NI4(Configurations2/images/Bitmaps/PK[NIq(Configurations2/menubar/PK[NI(Configurations2/toolbar/PK[NIY>(META-INF/manifest.xmlPKp<*pandoc-3.1.3/test/odt/odt/orderedListRoman.odt0000644000000000000000000002672207346545000017504 0ustar0000000000000000PKH]NI^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKH]NIThumbnails/thumbnail.pngPNG  IHDRPLTE[^qieimlutifrkj{ndsoqxqcxnrqupq{{stizt{~~~t}zxy{|yl]falgslwqzv~~~zzu~~uxz̦àʩĬͭв˺ɽ̻ƽ˿δۼѼɹ¹ýɾѽýνǸͻȶsIDATxOeptH7U痩d st(em: mNre"l0=ݜбeMABu0aEF: >EŘ 3^+y>EGPC 5PC 5PC ߆wߓ'79ݒQݠbGd1E i3>KyӍbռ3qfzB@^O.ufU>|AmX8\^úk_:8љy\DŽ?7jn\*bqs$Re3Xg"!Y"7?q.֙MſSfB ]R_mJA\:莣J yyy[ YwF}462 Z}؍+>{ [Va :]'DV]V<}ULF=;ݜSw5_6rj8H҅E|jFMsgLwղLPcKNbiU[UUU3ҙ_Gvތڻf{)V[Tw{g6T ԭ4w!IP6!6$ߺiҫt:nfѹ9MjizŇ"sAK$כnP~FVJ6Aj7^HN!&e5ptGt9gtMQGp̋UvqsT7}*L0S*6>}(bU{'9vug$T;jm|o;(r ~#r%z㔨0}-ܵ0.yϗ?"Ą{GH5PCV{ϑBhANlkH/eStV&>;mW_S>٬,3Zqg~tHoZuV꫇Jg 7Ls*125{)l6qfYXe MfBr:dM ~c7+W(Xv`]zwm.o]īQԔ+_ w׶R!*RN}xk<nyg Z7“mW5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5ԢZOvIENDB`PKH]NI content.xmlZ[o6~߯P5`Oeqb{MnÀI[,)((Ej$'~%[]_󝛨}R I8ض0 yDXrm~Ùn~x㘄x0O1SNșH3(v.؂#I䂡˅ <ìZ܋brE:X`6~VC5oKw.MHPa N5c>TYR'4C^*-\wZVs6 _ ZpE)֛Iyn͛bڧyMXX v RhU 5Q0DDlԲ{n "m*$|̒۔7j2A s- V ="6iӀsO:L׎=[f!\nf0[{FhzO:uθPcۖ*鮩5k"̙xV%WQ]"Y7 xcW4i !."iPsU9?gXMB[4QOPY.CCLS N*! Qx0AQZBJ9Q]inomb؉pH۲7VKl v͒RSlwGpKpڡ P$Cǚbk`>j&WD][uYRordDN<ڱ]YI3#0C~Bt&HClwwZGЦIz-~[~*#3$P"P )9DHD5 %𡘒`(⏿\abN EjD596(FN s]-O<8WY ]q4>Rh3#1cHs(B EAZLK:1FTB&@D*0+)W|mŷB"0cd(i vFá{(Mz3~cMy i[3Pi|#$uj ,fd.9oRj'Ds9qv@"z|s :~ Mڦ(2鹩K+JwsJ GN>"0.Y?8wwE3yU֔56?;j?톡83 8=rd L}18)g;q/:ƢnSv߷'a_ N 7> lqA޶;Ɋyc\,]Q\Q°S<rđwOЫoFb{t:y5sMCGcGP5-3l8*=X'LZn݉}+Q.VhhڎHn PK*&Z&PKH]NI settings.xmlZ[s:~?"{JB[N$RZ ͜ {1:Z$]@SԠˮo]"g/4Gy[|sQ9be|[yϯ*ɄЈ0\1>ץno+ dd \xt)˯,ԘQ7oP못~4D9_Bč"Bvq4ݬ?@bmslv[!*o|0eJwʸrwqSq.L<2ӽ_]j <_vr҇S ֔1&+wFePNGG65|O?OXze v?;jy;RQ,ڻeyERXʼn=yj;x&IaɈDmG9 li+G[.8;YVڥBjگK 4](=_K^j4)f6IY6[K_Q%̌1KR&q: #-=.5hS>—n]cMua=1#=+Oνd%]) i)mc\ic/{8L->J(A 0f 8@k6Nfy4@F|˿kѻ ;(0]`j ZM ͠QEHS<4P$[6zuOAYY4 /K;$P錚Y@e!D G|pim(_dN?sC[fL4-">dp=iIXxvCMV+߫4‘-b==tD6+W܏cCIr#aAY!ӇA'ԝ,(ojm]2c!>m)GXl ~u `09"r Ҙ&*v$mŞ,fhQA7m=RJkg[nJMn6\T[a7%Nd҈uŴgK `X )×NU-6&N:uJ$L6dZ{9 ^jsAҳfyiys<+1fQ=/إ\Gm>$]C\{?sPK2q PKH]NI styles.xml]_ϧp*?6J6UU{W26Y({gG'IK!c cϬ^ -5na}O8#<mp0J_`̆߿;XD~IY0%$>7Y@P ZHJA~`SW`],]碫0ݑE33fY:ж0 U91NQ5xpUhnͭkl9}1P8|&Wpd6QŻUJ69:hi#+u Ƽ v e5*VLf@d|lu.ʻc ηYr*(XxT-qo[ٷYTLbZd2#0uӊ;7e8%Y!YtOP`GתXԊuqGjS w2g;~0&9O ֈHꤚ-E_M7K7 ~NqQ!Z!y*{ !QUll8T$.ʿrÏ(Y T,(~(Q`/9CH|@q4"5E4c0,c"R~hx#YiD!|FI>% ERI[U| ~n~? mb^U#sJWQ0xFA"Ȋ8zyVҘ;xh<XPM?+P0(UԜT~4QI]ry`K [!?֑P[$(64]}W# $tWGnh`:${]+rS2FQbZxSW WGYLKI2Ʋ۔}9h,P?&FiN6&+qjdxӨ;4ElV׻f'9k2f=[vp} B*SVdS0bDfmi4} G_s8c"j:B4҂ɟsaW4nɆa׬U~o?6`; s${4quK9+PK>۟t71XXjM2KTHU7n`2CR_/[{Hsfru RԐI7⊡kԴc{݃ovl$pvVUZ̽J涭dy;!hGW8LUP#}bHeǘAS>Q <#Vlf(QshXv_mKblOl ղո01U?%e`dAV͖A.!p[!mpM&n_'7#J"oF6?ai1B׍ifH0M˟B1W7ֽǔ ]7{4}t 1w4\1;>rQ@t ]TM*!΍$h`,)ߝ _Td;EwY&Ơ$0GhP`Vp$<iQAJXX>b>Jm%A}<$ 1Oi53 PNG B6N#csS࣌bqVaſZd&,` Y78$+2rxWJe09"3y-/5zHbWK08+Md5YB(@*c0`Ln7Т/P?8LH"|[b{NS^ ĹNNaˀwOJ5jwQHd#H]u79ar1_#xl󳈲ΒOK!\%?PK߹S 5PKH]NI manifest.rdf͓n0P]Cc7`@ E.# |gr1F Îv@t_k<4W'w=-ylME",So^w>p@p=U+|PKY>PKH]NI^2 ''mimetypePKH]NIMThumbnails/thumbnail.pngPKH]NI*&Z& \content.xmlPKH]NI0'Q( settings.xmlPKH]NI2q meta.xmlPKH]NI߹S 5 styles.xmlPKH]NIh $manifest.rdfPKH]NI%Configurations2/toolpanel/PKH]NI &Configurations2/progressbar/PKH]NIG&Configurations2/statusbar/PKH]NI&Configurations2/popupmenu/PKH]NI'&Configurations2/accelerator/current.xmlPKH]NI'Configurations2/floater/PKH]NID'Configurations2/images/Bitmaps/PKH]NI'Configurations2/menubar/PKH]NI'Configurations2/toolbar/PKH]NIY>'META-INF/manifest.xmlPKpL)pandoc-3.1.3/test/odt/odt/orderedListSimple.odt0000644000000000000000000002705107346545000017655 0ustar0000000000000000PKv]NI^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKv]NILAp7Thumbnails/thumbnail.pngPNG  IHDRPLTE[SUEUb^elg^^bgkjmsuigtlj{nlvnpsquppzsq~yt{z}com{h{s|~~m{zvy{yto}o}~|uxzvzΧţɪĭʳųʹ̯շκżʵԳݸнֺ۷°öǸϼĽ½õ½ķüõɼǸȹMIDATxOu@0܃tiхK0ÕB;%cC6hzN3tQ ZZVtv:DI iQH?`ab\vI7Oޟ^nq-jjjb# ,@NzN9(ݱk$wg2Q쵼.i]joQjQ7H7D/j8C7j}K]i(ʨz*X j/KS/or}^ )s|ʐw%eEQsZZ#zDSI15,2`z) úN3g;Ɓzka>tmW䛚}yэOQH?8r50GmZa/GﵨNƶ$+)fpV?O~i;,|%zHFLw+1rNAvfZ5UFҠ@uMܶRv|6Sz嘄oc.X%v̒+?#-|'<~XšÊ=9U+S&Š?u}.3t҇E3|'R>YRrژ]MQ V=ggߐhp$`)5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5PC 5P_tIENDB`PKv]NI content.xmlZo6~_i&˒#݆XZlo-Q2QHNّ[}wҺ 4JdΜP9q < x,i¢Ճa8 LZ.62B:Uhѡi-M7B 9WXSdyPDŽ֠ 5a$,ʴ^G"*YK&tC7pWGwCb𦂅W}353k3j^η4G o,Ʃz,jA|sG# (I^(oh ]uƚZc?]}b <KpȘ>}mS78ZѮ59Qs_9cB+;)$ߢ%v$1g%\)+ilҖ';h?h<7mȽә ?9R9IHb}w똋M(N S؅{ Q)N>;t]PKy@~B&PKv]NI settings.xmlZ[s:~?"{BB4at )-- &͜ {dGOA]i/~݇y"N^Airqv^9a—n]cMa=!)#=Kμd%”EpBۘW4 RQ %0syD5AqW<#n">mml " ?MXVB30(zT8;R#oLhx'4VݕyPAK(ƒX[kt ,d"ʄ~l6cKjk/}_2mhaw_-3&}2i4U5XjsB$?tl,R;ߦGpؕeEX `+tH6+7܏cCIp#aAY&A'ԝ,(ojm]2c!>-̔+q|GE6<}gP88t5m3H@\"Cm!(k4{E'C ONK6{ XW6jDICydLCmm!f**?fƞu(1D}Fl%8?KWRRo1wUiljC H:)~>M_A> d[M>5tj>09"r Ҙ*v$mɞ,/&4L붞r)%y-7k¦lzk7W.X 0ٙG 2iLa:bzSgS J4<М^&#m6ѣ&((}dh.8U1 wO# /^vG# ~#.Xm I̤AUW|6-:ѥndۤ0nyvF됏('Cn fM|u뫷jPK4/Q(PKv]NImeta.xmlOo0jlKR7Ro+NFƄ*qo=&{<ՕZm}%t!U_vу -E5XVղ;l5 PK ;h4)Ja}QMix.h!VL5RPbPC 5瑴֫рOGO ]nv CB- ^挤fxixs\ \)1NfQ/,OI}(- LR`ϜPK|; PKv]NI styles.xml]͎)^$@cVg{&AE2-Ѷ2(Ht{NyX_qάJSB 3-Y4?3gVm 3^*>'}_Ԛ+"ѤKdKJp&ba8Tp$ur8ʡkÚw)UU֫.zQj i%*zgކ׏Ǫ ѥ?5PxLI4+nU"UeUru= }S$ {4'+р;i9)Td?Au<^KJŨ5뢈c-+!ѭolen< Ljp!a4IXȴ?' N a@"a$rǭT/KCBa+ҧ:{א,!QU|W/isE؊q}["y͔{|@rNͲJך2vT3B3(MfEf-p`,7IYEtJ r >#engQ(+~(FF?Vn_KWoQm>48^U`1u*zdҢ@25m$&PDZ(iA>cXISK7h%y2y4<HNyXebHD1Xm4plםI),T/*sAd-I|!,1T[ᅄ{^ݨ)&KH(-?QIBkJ$\IIŊ| #$5-L -,:r$1[X实Md#A$/ՖLY̐1pmh[JRx?\&_K!hX,ߤa0v* }Ky+-$BeYSF5ᇟwfi_O(SJ2iO*I?2NS̡.rzZ<#Ulvu)U X_]HKucm֟F\e%gqab?cew_*ʠȃJW;VQ-ݻm%"D{7Dʄ7khd3-#a[,bl~pNҔlpl^E2T [eoWTpS{@5Y`ƣSؿ1zl<6x6n'zONaxjTo)l<1zlj-ºmY6[>]ƌ$|=Qf'єťNT=]_xZ:7pfPHECPz:)JĄ)[ѧ.ĄS6ӉwdFL 1!t2wĔ2+}3bRdM5S X%s2wIph!NXxGAl2qc;d5dxzh! B>b;ix_rpe?t b;| .{҉ňMc{t"6Z\ۛ]T C%tݓNĂ+Fl:M)bB袻'1iSb'^*B=Dlrܡ @EO:^-b#;p&޵|'.҉Xx5\ismho3B? FV7\sI36P %5 @yE-ҙ/(J=v܌7PQx# CfĤнrs.ܙB9 fĤнrz&cˌ7PNLWZ͈I{>1%D͓3{lމ7cR>9 j=uސ5Rgl5PFg} > m+?E%Ǡshѹ1\6Zt. r :WlKx P]Cc7`@ E.# |gr1F Îv@t_k<4W'w=-ylME",So^w>p@p=U+|PKY>PKv]NI^2 ''mimetypePKv]NILAp7MThumbnails/thumbnail.pngPKv]NIy@~B& content.xmlPKv]NI4/Q( settings.xmlPKv]NI|; meta.xmlPKv]NI 2styles.xmlPKv]NIh $manifest.rdfPKv]NI,&Configurations2/toolpanel/PKv]NId&Configurations2/progressbar/PKv]NI&Configurations2/statusbar/PKv]NI&Configurations2/popupmenu/PKv]NI''Configurations2/accelerator/current.xmlPKv]NIe'Configurations2/floater/PKv]NI'Configurations2/images/Bitmaps/PKv]NI'Configurations2/menubar/PKv]NI(Configurations2/toolbar/PKv]NIY>D(META-INF/manifest.xmlPKp)pandoc-3.1.3/test/odt/odt/paragraph.odt0000644000000000000000000002053207346545000016165 0ustar0000000000000000PKnaF^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKnaF'Configurations2/accelerator/current.xmlPKPKnaFConfigurations2/images/Bitmaps/PKnaFConfigurations2/floater/PKnaFConfigurations2/progressbar/PKnaFConfigurations2/menubar/PKnaFConfigurations2/popupmenu/PKnaFConfigurations2/statusbar/PKnaFConfigurations2/toolbar/PKnaFConfigurations2/toolpanel/PKnaFQ))Thumbnails/thumbnail.pngPNG  IHDRzAIDATxj@@l "lazjFcm,M}PAE}PAE}PAE}PAJcll=o\4a[(crJd7B"˺;U7Yt:k%g?M?xA|n4kxv(2ܾ"=<2q8p(fe>Q.*+>[ S>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢;IENDB`PKF岑 content.xmlVo ~_ayd/I5m4yj+00qߏC8jkfɎ(M_C\/?RE$55&C7l`]⹀Úܠ\H;Vs+hs` ٛd=XڢB%5 a^Kh?YWiehv'B`X, '< #@q4N9lo-QK |U+G+bWUPֆwǷwcn M5Г`cUgB /Sup@} |G*UU8 YXDFvN]!ak<U'0 (SekN?EP/L1~`n*ST́=e;JgzRºSc!{Iu; !-yZ<2h'V~PV@D2Le r]ty 4M 5eΒoѭ'KLw$nj_T[!*jx[>FHj>;hS7B?5bzZ]tChFf HS` M'\f1|eJ6i%&lb rvv3WV|Y.oؘYfFQGSCS>;TU1*D|Udɕ^֋&ߘk>~zqڍG*/Vv}w+`cLY4¥Zm K8#{޸:8_❛>?o>q>  DLz-2(+ 1}ҧLָ`ѶvWB-x7ت6"k8.il+w_5.>{ꢬP'*O\j) JDLeY9?1I q8cKL"Kf6/my.T(i@Qw||*W@{Z|3D Svy 0 w Qj<)es{㈀h3QB fځMNŨs²"zȒ (&()ps" mdAIda[|@-ӆO=7=m*]$3IFL)EꭗL֚_djyxtDi,J~Q&`\L锠.f:Dgӈ[^A?3UN2n4&l !FA|Bυ?vTl#TGarDE7#f;Qar~e4Eq }8- '!LWXR+MW & ?4$Kǵ o#h "b@&nW~/%ڏm% 9?MŒJ e\PH~^P!a-¸:CBo{e$YJC '"_1gp@$[_`"˗,ID }){uL;PלA&C9-ڄ3V{VE?.xkK,$2$IT˼rc+C[+!FsaL Xj2O~꾴.-L[4{^`b>k 4̆ҀNFL7q8 c^%$WV!aJ{Lܦ ݕ$|u7V ]o}U=]OthPKvU(+!PKnaF;) styles.xmlZK6W*-˻]-E$!%bCIIQeVq< `-1JhBʔgVY2(Eyh1ʕq)8Y,-_U f4&hc2NIx X4RY+"FC>nFgv3Mc1:7 axo|| &{ u 4TiZn_s޺lwml=I==ɞb"%1p i긅X :@:rUTǺYdwnb(5HtdsElInzkF4Ԝu΃BS}-D} D g`e|1hA[G[UB]0K7`>!]"BYÔ̮T"z%3Nrn;NcM@vgqkF?)0-ޅ1U{,/ /Ft Ip%u0|3#DH.s}6?B eXdǰOWM 8xP w(JKg Ylr*V`K @V{;7 _q!zo2oHcxKx1%\+C.L{w"2C8wЖpqUA}3݆O9^!ǿH8kל+ Eؾ:n1>A'(=/c Dsa!)!iA^#y23x#`jbѽit(64ZnIok{W栓]çHSPv4?ñm4Ih9\bz?8fPs*ߪ ܨw)qhkr~0HR9u`:#kdxZ?Xpo- M;.V]~ޠ3ѡpI3uwi Zk5^z SPK;)PKnaFh manifest.rdf͓n0 Martin Linnemann2015-03-01T17:26:12.312015-03-01T17:27:28.53Martin LinnemannPT1M17S1OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PKnaFjҠ">META-INF/manifest.xmln }zP& `ID`G*ɶtZlNGx fbSh$siR@U4Qr%i;I~5XyPpFtbъ8b/ Nt5dm):TL0üʛƴ)\ŵPZ t 1a“z pT v^}HQ{/ofOIoD =ӫut0xzu~PKjҠ">PKnaF^2 ''mimetypePKnaF'MConfigurations2/accelerator/current.xmlPKnaFConfigurations2/images/Bitmaps/PKnaFConfigurations2/floater/PKnaFConfigurations2/progressbar/PKnaFQConfigurations2/menubar/PKnaFConfigurations2/popupmenu/PKnaFConfigurations2/statusbar/PKnaFConfigurations2/toolbar/PKnaF-Configurations2/toolpanel/PKnaFQ))eThumbnails/thumbnail.pngPKF岑  content.xmlPKnaFvU(+! settings.xmlPKnaF;) Fstyles.xmlPKnaFh manifest.rdfPKnaF8Mmeta.xmlPKnaFjҠ">oMETA-INF/manifest.xmlPKppandoc-3.1.3/test/odt/odt/referenceAllInOne.odt0000644000000000000000000002517607346545000017551 0ustar0000000000000000PKhuF^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKhuFConfigurations2/floater/PKhuF'Configurations2/accelerator/current.xmlPKPKhuFConfigurations2/images/Bitmaps/PKhuFConfigurations2/progressbar/PKhuFConfigurations2/menubar/PKhuFConfigurations2/popupmenu/PKhuFConfigurations2/statusbar/PKhuFConfigurations2/toolbar/PKhuFConfigurations2/toolpanel/PKhuFwThumbnails/thumbnail.pngPNG  IHDRzA]IDATxj@@ 9DfmkVᜇFӀL`_NM}PAE}PAE}PAE}PAgn#jU]vu[ɲ3ǧ׉ǫåsz[3.>Sʑ>Nb:qiGXSX*$ri_Sl5~׏זan@ uaپl?}zL~ΟΫorPA=}$ǁgZKcHM;|z^ ,?!Fuu~c[O<8vfq\KV/o0; 5~ޛ_:O)胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(DOLIENDB`PKhuF content.xmlZ]6}@TSMH7ZZi]u9$Lmwl0Yҭi sfsb!sAX2}g[8 YDWgbV+im,v"ufoy2eH1MPTSİUTVȮd=e\eGZXWAPgŠq$eq$y)ө{w?p_{~ .rQQaU0l%ꚟVSJΥA*v[& ޹74TA]ATHnZ4x/`/e/k,=)UIyg*Bv@u^oe"|ωļ/CDâ,n*|ީ6-_B^f."ju[1*cC!QRV+Zw:8NEaV&/rȘwe55F(3sv?!4h\9%6>DU#8AstZag3+=77iW,PTR,[ٵcfdo[0) $&h,w'l/mpQ1~gDɒJW6g!!'B|ԔY} !*? I7[B7$J.xǟ1>k|m%{ h\y_ʓLGkҍ1zNz!%4sPi;ҷ CneF.10xY{l.bf[]TIԤ>$XX̠mO3%d5 ob=%T^Q`ٕp Eai_Oqb9F]Ngs#& _ɂ–zI+* zk(7kpwG7kxˈ5pgPn&.W)ĿV-͸XwXCw8l2r:rĚ*W-C\].#׃;Rq3]R`r\zUP9,:.?[u*DD$C S#Uuռi'dҺWM^"OIР7 ={a27ݛjq~_ whwqYv P"N?Oxt*JN^2'e^.xC8^aټ#X( 7C7cmk6Q%e<09f^k#ȦKBdVhͪ-ɬ Z;w:ѪH契0sH1_·(PfɸN&PK$l ( PKhuF settings.xml]s8~EכHsIґ &$|ɛq#K>IV6)9=X#{+V2+2PT*r/`Ma4tN/ _ni8$LJd%|Sp,Ya8$ [MIJ7sLR,&I) X*_W.gߕT-&%vV*qdw9+ܮ@֝7'zi7 Yy HƵ¶y?<yTX}QLnKM cm21l޳偸H϶.|Q`Ɠ>@='rsJ0+*h4%x"I{$S3GȜxڮ\0 ؍ omR ­%xE9VTq %Gm:E3˃P[\)~9i]f\戚xceslݜˇb89=o"gg{!Wboyޯ}^wًX`!w b'Xx, ˼\q#bHQ:o]?y],)"JvD;dvR]l$Ύ$P" +æ) ph ly[!\RE*Y S ҸBG`^*"D[ss+`X, ?qoT4S[+!ns?ҹ?*w 8t=x8i Yr%VQYC見q}\ߊ~Wz=Kjuszf^R81{~zcj;6G }#@ՖƔ{_tM&mɨ TQXr-NK~F槺ޞ2  @O\dQTO?=YRST)vc@T/)ª keh5N#i4gsom -xCA~pY?:ŖtQ]ۏfyw>׬ꕮڣ3ZG\cVmNΝ:)3Ldi:Q #0;EV tb gM83'MLO'LvuKKf. #~䱥|pXu";Gpkz,1貘!rEjXmc3YO5M@LC$=ؘ7 B*}j0{M{1j@Pun@HZ`>lf MH+]ELx>gta:L[1~3Wii.߷YT@QDZ(9K9( 1 "̋0&$ e@6T}bkiK!qHˆqOˠWCF/Pj @n' yMM 1GS7ۡBD{buY:׳ϥ4")/`wMcC> 0UQ oQAA!['ޣPEzf2&8fuQ|/@gEi2kHłsRgMvsvݏFhz.Tl Ūo0D;xv\YH!:e7DHV`ema5 _9EzbDCKNR/Mfp:̦\=%/n|V-_PK"[:G'PKhuF styles.xml]ݒSP>T€ `MR٪=8k,ثk6 [EY0.ΒշwSt|WR8nlTecx^jLP7>#9#O]td: DO/}Q=S5& !PP6\{8})%vE[XUF>k&~n*c:ifgi1E cJׁ>(U.cSpF5ptǛ֟z릴V{0/, bnh鴟(\2z9e;A1 s(TH#j>ǾBGI)\>TX}h?^ԅ~F K9=¤kCJŊ E$ꇸKR>e9Z?8?veA!-c|fCĩy@IEHHLѣ1Y!lL8}2Vwb D$B.qsEb ՞2?񹇬4zЙ+ylte3l8N&RB=L8+ ac`ӑ Еm d=L['#) @at f)s$iA#(em}q&da;q +fIudP(4点rAAPxXPW~UgA(͹hMQH`.Z4y`+67( 4 i8,a`)|ːvYӱhwY Jq+d}N羲wafT].k& ,YUXN ?nÏsP~k68M:1T:JP~82S銞hXW!Ş]xJOM'V4%S= ~͉S *F1,1`&رl>'iJ*{-;'1ċ %ǖi7b\iT"r|3G|EeX$z2_ m= KQUwT'&V9}@l$b2҅U&Ej`;ap.K@A$5Q;ۃcKT;lګn?.^4VnB([sTzk9󊇪&~\kV .܀K;KR3 :i>q_m}GWr헨I429%h_߲ Jfl OqL3~eJe˒sf‚&9rGԪnWOfidWVJco:~l)`25ϫ |Oò=Vhʚ-vޕқ T5˗5pq5Y,-\ ra^Rj|PXUWCjrnqyc6qަR w5*K\uU5O5p ,!puZ7 +-ˡB"pn1'4hiB!rݵZ@6uudԷ4 7,GF˞(SEK"RWTpGrHլTKCu/I QbUߋ!o,`K!%XӖ`M/ ֽRte[l {! k|ieIK&^C0%iXad|2~f>^30{0\}Ew ;?; II7 E:pm8ǎ,^-yF_e׉>A"7q Ftp9O5Xr*k`>=o/ZfJX 8il--l^gdM hE69iTKzS8W?oi~Sn@WR3@ryMk&#\7-;BtMZyD581].eKg{/Yҿa#B&ŲL(Ť Martin Linnemann2015-03-01T17:26:12.312015-06-09T16:43:17.49Martin LinnemannPT14M39S4OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PKhuFMETA-INF/manifest.xmln }zP& `ID`G*ɶtZlNGx fbSh$siR@U4Qr%i;I~5XyPpFtbъ8b/ Nt5dm):TL0üʛƴ)\ŵPZ t 1a“z pT v^}HQ{/ofOIoD =ӫut0xzu~PKjҠ">PKhuF^2 ''mimetypePKhuFMConfigurations2/floater/PKhuF'Configurations2/accelerator/current.xmlPKhuFConfigurations2/images/Bitmaps/PKhuFConfigurations2/progressbar/PKhuFQConfigurations2/menubar/PKhuFConfigurations2/popupmenu/PKhuFConfigurations2/statusbar/PKhuFConfigurations2/toolbar/PKhuF-Configurations2/toolpanel/PKhuFweThumbnails/thumbnail.pngPKhuF$l ( 1content.xmlPKhuF"[:G' settings.xmlPKhuF8O styles.xmlPKhuFh 1manifest.rdfPKhuFp meta.xmlPKhuFjҠ">$META-INF/manifest.xmlPKp%pandoc-3.1.3/test/odt/odt/referenceToChapter.odt0000644000000000000000000002436707346545000020002 0ustar0000000000000000PKqF^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKqFConfigurations2/floater/PKqF'Configurations2/accelerator/current.xmlPKPKqFConfigurations2/images/Bitmaps/PKqFConfigurations2/menubar/PKqFConfigurations2/progressbar/PKqFConfigurations2/popupmenu/PKqFConfigurations2/toolbar/PKqFConfigurations2/statusbar/PKqFConfigurations2/toolpanel/PKqFNcbThumbnails/thumbnail.pngPNG  IHDRzAIDATxJ0 +{/ FiNլ %5||,AE}PAE}PAE}PAE}Px68vrs~xqU 8~#}"XV/uLHуaZ߸~`}Ki渜98?1ج~ϿP.q3R}PAExϏr=^WZ?%Ne1 YdM҇BbȓI_0`B%սX _unlV{'~5/ֽxxx[ {c||_`|g3`_X_~SӺr~j:+秛oh֕(k~*E}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PA IENDB`PKqF content.xmlWn8}W*o2#'6j b,n}3h𢒔e}0tb*Dsf\xNhKaJtrGT3?|UQ0B\JPiZ,6d j2K2URٳ5c|4lKwv,ax5>rٹXBQCzƒw'[FŎ327֖Bu]Okݡ++TN3( jX}JXQ=4w]5خJC6X|||{+ 3zcuaJE4+G٢CRKuv6rWW7Ix:p9WX"@$t+ LQk`iA6TW0;N4hׄL?!MK/L1nM|x;k]ldh<<=wect认L0wEPeY]4A~ ()0IN 7Qtg,טq'E{KN{Rx_fG|ZB%k*L͌9Q3|Ld~}(%pm1p]τ~qD?$7="\*57K4vˣqe $`W*N7CV$/FRL>Q+&Ks[oWj{}җy?/v}]5ڦ4OZ?rzL;oq^)"~C!\GvO[âC8GtJy*$L:fya}*g,f̱΁iZPYAgk6ߗA{I`rGGGk PKDP PKqF settings.xmlr8}"VcJ2%pc$oYJr ۲!0VVnuK}/!Cή O aC\szQrLBT}%aTDt&B"Xc*UUyLrZ=t5#ѐ\Jb1MO_bu q6 ]IIq b2bR鬘 'EcMpr7W yw*iޜ,^]d5$ /_|0i_ĞbB`9%nH~4<} S3ǧ!Ɍڬ\0 1ߍ eR ܦx畋ǺH>W>T)9dXm6;8ŕ6;3 Vla~*̛VPM[%ZŽ0 6P< w8>21 *Y ߚϬa1Kްti8ַV ="JZdn,y; ?o}D]o9t{r3JFE3@P>"/ߕ'^StZ GF+85NG`^v^nНU~ii&Q1e5G/$m PXb/NKFdڞr` @OPԎ7sF+|imq)ݏ`*+mm{P9B)JGl*g"x}}Â= I,.+iY<5z_!e)Zuh{tHtIS#iY $}_sh*hZ6@>:ؘz 5"zwi V* yHxAEgdY7aJrN'ex@dw 2 c$u 1: γ3661SpbL ~&X%6U">'udi0gntj]n1Z?%{j^S-AX h϶]nb(D?~ Q."c_m[XM-tN]7cӆKpY'ܣ)Ǻenɋkw/PK"z'PKqF styles.xml]ݒSP>T€ `MR٪=8k,ثk6 [EY0.ΒշwSt|WR8nlTecx^jLP7>#9#O]td: DO/}Q=S5& !PP6\{8})%vE[XUF>k&~n*c:ifgi1E cJׁ>(U.cSpF5ptǛ֟z릴V{0/, bnh鴟(\2z9e;A1 s(TH#j>ǾBGI)\>TX}h?^ԅ~F K9=¤kCJŊ E$ꇸKR>e9Z?8?veA!-c|fCĩy@IEHHLѣ1Y!lL8}2Vwb D$B.qsEb ՞2?񹇬4zЙ+ylte3l8N&RB=L8+ ac`ӑ Еm d=L['#) @at f)s$iA#(em}q&da;q +fIudP(4点rAAPxXPW~UgA(͹hMQH`.Z4y`+67( 4 i8,a`)|ːvYӱhwY Jq+d}N羲wafT].k& ,YUXN ?nÏsP~k68M:1T:JP~82S銞hXW!Ş]xJOM'V4%S= ~͉S *F1,1`&رl>'iJ*{-;'1ċ %ǖi7b\iT"r|3G|EeX$z2_ m= KQUwT'&V9}@l$b2҅U&Ej`;ap.K@A$5Q;ۃcKT;lګn?.^4VnB([sTzk9󊇪&~\kV .܀K;KR3 :i>qOпey\㡜W)NuKA*ܫWa>:b%f9W~~r򧟪nWOfidWVaEo:Tr~lŹ)`; (_e{Y";9є(mQg[l*Uyu\AcnQC~bC6OZCOJhuyI$YkVxƢN@f}R[au 93[yQӓAj>+?Lɏ;^Hig夁gCK۝ZJK˔=K -=꘥bg~v3;ffk\R*愳[阥'%biN8:ei?ӡLٳ ғYڞӡLXni,iPsEz13Of:;9얶2?L3 b}lHAS/+ !kzGS(S.Օ5(IXpJYodz[R*GXNh @Ze*6. SyhU֥j|}Łt;L&uTٗ;\FTK4T@1A5C%Ö;@!r1fwJZFE w8VNr^)$r۲},b,rwR"#d(0Uxpfe \\+!pn.K \TAj,T=V/ŧG.rՐZkܟhXspp=mtM"W]krpMS \vK\u]͂eEKrH-\ۅk ZP\wm/xM#G]- bB #cѽ<8x'8.0=\R@5kP!eҳ7CXb˹4XRH ִ%XKu//]Y`^y-_{kɥA̯FI}oX+W Lm^> W_@ptA N:mR ncNpt(\gαcs5~ˡ4@st郻@^'W,u*wЅM0\GG s8翰 c؅BOߛFF%Nd6@ $7t :YS0suڼb5@'MxNՒՏn9[_)D敔Lu;P-\m^I" hNG!*DQM($)NL >^A0wod8v+, o1>Cpf8tNrnQu3[ur%G4?tcfȗ3m黦 =w$K}uYC*w0J~) {mR85#ˌYa05ILP5 "F%_go'Fb.Na!Pm1iىٜc9 Martin Linnemann2015-03-01T17:26:12.312015-06-09T16:15:06.50Martin LinnemannPT14M39S4OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PKqFMETA-INF/manifest.xmln }zP& `ID`G*ɶtZlNGx fbSh$siR@U4Qr%i;I~5XyPpFtbъ8b/ Nt5dm):TL0üʛƴ)\ŵPZ t 1a“z pT v^}HQ{/ofOIoD =ӫut0xzu~PKjҠ">PKqF^2 ''mimetypePKqFMConfigurations2/floater/PKqF'Configurations2/accelerator/current.xmlPKqFConfigurations2/images/Bitmaps/PKqFConfigurations2/menubar/PKqFMConfigurations2/progressbar/PKqFConfigurations2/popupmenu/PKqFConfigurations2/toolbar/PKqFConfigurations2/statusbar/PKqF-Configurations2/toolpanel/PKqFNcbeThumbnails/thumbnail.pngPKqFDP lcontent.xmlPKqF"z' ( settings.xmlPKqF<3 e ?styles.xmlPKqFh manifest.rdfPKqFYmeta.xmlPKqFjҠ"> #META-INF/manifest.xmlPKpq$pandoc-3.1.3/test/odt/odt/referenceToListItem.odt0000644000000000000000000002514707346545000020143 0ustar0000000000000000PKrF^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKrFConfigurations2/floater/PKrF'Configurations2/accelerator/current.xmlPKPKrFConfigurations2/images/Bitmaps/PKrFConfigurations2/progressbar/PKrFConfigurations2/menubar/PKrFConfigurations2/popupmenu/PKrFConfigurations2/statusbar/PKrFConfigurations2/toolbar/PKrFConfigurations2/toolpanel/PKrFmJ33Thumbnails/thumbnail.pngPNG  IHDRzAIDATxѪ@@тA k=Ą ] |04}PAE}PAE}PAE}PAEq>o_nO]bOs[^'nGtX֋<}n>]_TL'{yδ6cX뽕DN8csΈ{6'鄝9U>ַb~C|>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(K8:hIENDB`PKrF content.xmlZn6) M%i6hv Zl"t){=$,;-%.N G΄WB{\- =y'fa|95>,bA@<< q$ME~@;s-];D#b1ޜ8ʴEnoú(U'qmjtQ1Mu Yy{zyYX496 L4/|QZ_iۛ{oCt`DBH8f\ 7L`cʐVw%͠Pg`чg>%f$ǦO1DQUf( iP,u-wk,.Za yGJ7|U ED">g> l9\3Zb `{DɚIQ] pĞq5',l""&҃@W~#>ݣH>EC@A1ߖ`|B-1tW۽Udn 7<}Aƈ G62"huSƿ2Б0i PDBC2a! h b8Hu2'v0JrTgq?i 0`X>]fF$D|C"\C-\⾚?~Ǵhֈ?yĸh،T5Z]lc˙4v)vA@U\Tcdj{ >9t4 lrYZ'4lQZ24&lQ1]eD1Ye*St֧*^tg*it'*tt_/v=TfsS}}: >1E&IJ"lՃ( ɑJP~s>fwcf~}%܄)>9u 9h4LfuGw6-Wa5cP\@4j+P!V+wrg'#w ;%q*7'p7&">*B5r1&saf~qb'Ad׀frxޛq3ry91KJ,:XZm]ܮβ}t{PK7;/PKrF settings.xmlr8}"V#fB% &$W&y0Nd+1oˆL#Z=X%-CzF 8rg  o\4pIn%Q @Lg}łU80YQnGU>BWRbٛ9 MnTT$\|4%A$9''dI r>ΖRvŇo/=vE,o b'Xx, ˜\~#bHQ:.>y],)"JvD;dvR]l$̎$P" +æ) ph ly[1\RE*Y S WBG`^*"D[s0,p¸7*\uNJnH\돭PGEQi[@A[a0ރG QbuQ"G-@U#VY^P{tϛm4{K^tZagՏnP Y@?j_G>rZ TmiLg-PUd ~×*@Zηe w8S:e_ _Bn?7YSzA'7=Kj{j?n  ^0"ZXudml]Ʃrw5 lV5a>o(O<뇵XlIjUڵlh7/N9@U{TsF 6wwlߪV?M)b.Ÿqd&Ks>OوƧɹSRg:c>M'jaa' CjypXY IƓIz3iRp3 Ȉ_3yl)WN'8"<ܚJ ,fHkv(,k[LzVpM)%$8/b38J`&mӞ|LPj]e&HJux@Q;ހcO]@?oNRLc 1UZ,*( H-NS T%D {U{X^fuWղx ZGJKSҵ%8$aDeZƫ!OM(5 GF<󇦂 n㉍SYX!yAu{p6F1% {l"fݘ*69Y]|C)*46\p{*HLfL3O4L(MfmX}NL^di0gntj^0Z/%zjVS-AX hw}nWb0D?N~ Q.&c9\m[X,tN^wcӆKpY')eOowwPKr-L'PKrF styles.xml]ݒSP>T€ `MR٪=8k,ثk6 [EY0.ΒշwSt|WR8nlTecx^jLP7>#9#O]td: DO/}Q=S5& !PP6\{8})%vE[XUF>k&~n*c:ifgi1E cJׁ>(U.cSpF5ptǛ֟z릴V{0/, bnh鴟(\2z9e;A1 s(TH#j>ǾBGI)\>TX}h?^ԅ~F K9=¤kCJŊ E$ꇸKR>e9Z?8?veA!-c|fCĩy@IEHHLѣ1Y!lL8}2Vwb D$B.qsEb ՞2?񹇬4zЙ+ylte3l8N&RB=L8+ ac`ӑ Еm d=L['#) @at f)s$iA#(em}q&da;q +fIudP(4点rAAPxXPW~UgA(͹hMQH`.Z4y`+67( 4 i8,a`)|ːvYӱhwY Jq+d}N羲wafT].k& ,YUXN ?nÏsP~k68M:1T:JP~82S銞hXW!Ş]xJOM'V4%S= ~͉S *F1,1`&رl>'iJ*{-;'1ċ %ǖi7b\iT"r|3G|EeX$z2_ m= KQUwT'&V9}@l$b2҅U&Ej`;ap.K@A$5Q;ۃcKT;lګn?.^4VnB([sTzk9󊇪&~\kV .܀K;KR3 :i>qOпey\㡜W)NuKA*ܫWa>:b%f9W~~r򧟪nWOfidWVaEo:Tr~lŹ)`; (_e{Y";9є(mQg[l*Uyu\AcnQC~bC6OZCOJhuyI$YkVxƢN@f}R[au 93[yQӓAj>+?Lɏ;^Hig夁gCK۝ZJK˔=K -=꘥bg~v3;ffk\R*愳[阥'%biN8:ei?ӡLٳ ғYڞӡLXni,iPsEz13Of:;9얶2?L3 b}lHAS/+ !kzGS(S.Օ5(IXpJYodz[R*GXNh @Ze*6. SyhU֥j|}Łt;L&uTٗ;\FTK4T@1A5C%Ö;@!r1fwJZFE w8VNr^)$r۲},b,rwR"#d(0Uxpfe \\+!pn.K \TAj,T=V/ŧG.rՐZkܟhXspp=mtM"W]krpMS \vK\u]͂eEKrH-\ۅk ZP\wm/xM#G]- bB #cѽ<8x'8.0=\R@5kP!eҳ7CXb˹4XRH ִ%XKu//]Y`^y-_{kɥA̯FI}oX+W Lm^> W_@ptA N:mR ncNpt(\gαcs5~ˡ4@st郻@^'W,u*wЅM0\GG s8翰 c؅BOߛFF%Nd6@ $7t :YS0suڼb5@'MxNՒՏn9[_)D敔Lu;P-\m^I" hNG!*DQM($)NL >^A0wod8v+, o1>Cpf8tNrnQu3[ur%G4?tcfȗ3m黦 =w$K}uYC*w0J~) {mR85#ˌYa05ILP5 "F%_go'Fb.Na!Pm1iىٜc9 Martin Linnemann2015-03-01T17:26:12.312015-06-09T16:20:17.89Martin LinnemannPT14M39S4OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PKrFMETA-INF/manifest.xmln }zP& `ID`G*ɶtZlNGx fbSh$siR@U4Qr%i;I~5XyPpFtbъ8b/ Nt5dm):TL0üʛƴ)\ŵPZ t 1a“z pT v^}HQ{/ofOIoD =ӫut0xzu~PKjҠ">PKrF^2 ''mimetypePKrFMConfigurations2/floater/PKrF'Configurations2/accelerator/current.xmlPKrFConfigurations2/images/Bitmaps/PKrFConfigurations2/progressbar/PKrFQConfigurations2/menubar/PKrFConfigurations2/popupmenu/PKrFConfigurations2/statusbar/PKrFConfigurations2/toolbar/PKrF-Configurations2/toolpanel/PKrFmJ33eThumbnails/thumbnail.pngPKrF7;/ content.xmlPKrFr-L' settings.xmlPKrF<3 e styles.xmlPKrFh manifest.rdfPKrFWwY meta.xmlPKrFjҠ">|$META-INF/manifest.xmlPKp%pandoc-3.1.3/test/odt/odt/referenceToText.odt0000644000000000000000000002374007346545000017332 0ustar0000000000000000PK%rF'Configurations2/accelerator/current.xmlPKPK%rFConfigurations2/floater/PK%rFConfigurations2/images/Bitmaps/PK%rFConfigurations2/menubar/PK%rFConfigurations2/popupmenu/PK%rFConfigurations2/progressbar/PK%rFConfigurations2/statusbar/PK%rFConfigurations2/toolbar/PK%rFConfigurations2/toolpanel/PK%rFMETA-INF/manifest.xmln }zP& `ID`G*ɶtZlNGx fbSh$siR@U4Qr%i;I~5XyPpFtbъ8b/ Nt5dm):TL0üʛƴ)\ŵPZ t 1a“z pT v^}HQ{/ofOIoD =ӫut0xzu~PKjҠ">PK%rFڞ^Thumbnails/thumbnail.pngPNG  IHDRzAIDATxj0@|WBIh9?Ć^̇xc|n|4}PAE}PAE}PAE}PAE}PVضm=xi+}q)$rictEKZcAzy|:~Kyo>qzO#%,Χ &>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(wv"IENDB`PK*QI5CX content.xmlWM0WX[ժUJVupGj;}BL> [4k5Mƣb:j5M~~L>^MrffDRg+Ӥ4*`Hc.PYYյu{q =l;7L.,n]vn&G7K_[;+ҥ?S\mڹ"Qn͊iY+J#*g,`X_v%R.l 88U] [h5l ވ}#˕=g>`xz`p=^ܴ͈֭Ԛp {zxpgW kҴSHq[ipۼ79[+@EgL5XhZc_޶Nq#te\l]z-}xiQ4SvpWN@ԍJMshtEv37 3g͋iZKۅV.]4G&l.Ls1M@@o#Dr?Fz@5˅)bp0|aei1P~lŭ*`8\C黈;-|cxdʒ_33B@gu{Pin>i_6P:-q<^|>8ܹ٤,)QD$,. S[pcw!J 8UB_gg__ΎpJp>=T&O%@`6n!P[kK͵{*#-H8Mkol~&rs2鿉lNuunX8΅AكnhnMfBM֛߮s. Gdɰў5WPK%rF manifest.rdf͓n0meta.xml Martin Linnemann2015-03-01T17:26:12.312015-06-09T16:16:32.75Martin LinnemannPT14M39S4OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PK%rF^2 ''mimetypeapplication/vnd.oasis.opendocument.textPK%rF settings.xmlR8}v!)`JvbxSl1ȒWq2_-;aL&VVnuK}嫯!ήs/ a._2+>.x܍Cԩ$J,s u"^uHVs-isF_+ƜSYFG,I#۰O0;? qt0̈Ϋʕ8^V*h=./mwqV.uU ƔLR6iou]\Jpg`ZU)Xٜ![4-nqz4s^狃]ŖM] %"#K[y6@D=f/bD v,cItp״/sr0r&G6k_:|k8@#u ؏Wx|*عU)<뇵Xؒn<ֵkv^蝴s5rkXs Ѱ6srkP9oF#M'1b.qd&KsOYɹSR{2c>M'jaa' CjyoXY IƓIz3iP)p3 Ȉ_3yl(VN'8"<ܘK ,fHk7v+,Vk[LzVpM)%$8/b38J^g&mӞ|LPj]e*HJux@Q;ހcG@o1ťv?Ƃb4ݷYT@QDZ(K( 1 "̫0&$e@TcbkiK!q@ˆqOWF/Pj @n# xMM 1GS7ۡBDkbyXۭYC zM]XD0$:1sUls:)kcTi!=vm։(T8t̰=߭(>Q}`J 34qbA9=~m5œjѩEz1h@jmYMbY7T€ `MR٪=8k,ثk6 [EY0.ΒշwSt|WR8nlTecx^jLP7>#9#O]td: DO/}Q=S5& !PP6\{8})%vE[XUF>k&~n*c:ifgi1E cJׁ>(U.cSpF5ptǛ֟z릴V{0/, bnh鴟(\2z9e;A1 s(TH#j>ǾBGI)\>TX}h?^ԅ~F K9=¤kCJŊ E$ꇸKR>e9Z?8?veA!-c|fCĩy@IEHHLѣ1Y!lL8}2Vwb D$B.qsEb ՞2?񹇬4zЙ+ylte3l8N&RB=L8+ ac`ӑ Еm d=L['#) @at f)s$iA#(em}q&da;q +fIudP(4点rAAPxXPW~UgA(͹hMQH`.Z4y`+67( 4 i8,a`)|ːvYӱhwY Jq+d}N羲wafT].k& ,YUXN ?nÏsP~k68M:1T:JP~82S銞hXW!Ş]xJOM'V4%S= ~͉S *F1,1`&رl>'iJ*{-;'1ċ %ǖi7b\iT"r|3G|EeX$z2_ m= KQUwT'&V9}@l$b2҅U&Ej`;ap.K@A$5Q;ۃcKT;lګn?.^4VnB([sTzk9󊇪&~\kV .܀K;KR3 :i>qOпey\㡜W)NuKA*ܫWa>:b%f9W~~r򧟪nWOfidWVaEo:Tr~lŹ)`; (_e{Y";9є(mQg[l*Uyu\AcnQC~bC6OZCOJhuyI$YkVxƢN@f}R[au 93[yQӓAj>+?Lɏ;^Hig夁gCK۝ZJK˔=K -=꘥bg~v3;ffk\R*愳[阥'%biN8:ei?ӡLٳ ғYڞӡLXni,iPsEz13Of:;9얶2?L3 b}lHAS/+ !kzGS(S.Օ5(IXpJYodz[R*GXNh @Ze*6. SyhU֥j|}Łt;L&uTٗ;\FTK4T@1A5C%Ö;@!r1fwJZFE w8VNr^)$r۲},b,rwR"#d(0Uxpfe \\+!pn.K \TAj,T=V/ŧG.rՐZkܟhXspp=mtM"W]krpMS \vK\u]͂eEKrH-\ۅk ZP\wm/xM#G]- bB #cѽ<8x'8.0=\R@5kP!eҳ7CXb˹4XRH ִ%XKu//]Y`^y-_{kɥA̯FI}oX+W Lm^> W_@ptA N:mR ncNpt(\gαcs5~ˡ4@st郻@^'W,u*wЅM0\GG s8翰 c؅BOߛFF%Nd6@ $7t :YS0suڼb5@'MxNՒՏn9[_)D敔Lu;P-\m^I" hNG!*DQM($)NL >^A0wod8v+, o1>Cpf8tNrnQu3[ur%G4?tcfȗ3m黦 =w$K}uYC*w0J~) {mR85#ˌYa05ILP5 "F%_go'Fb.Na!Pm1iىٜc9META-INF/manifest.xmlPK%rFڞ^}Thumbnails/thumbnail.pngPK?*QI5CX content.xmlPK%rFh * manifest.rdfPK%rF>i meta.xmlPK%rF^2 ''mimetypePK%rFQ' settings.xmlPK%rF<3 e styles.xmlPKpZ#pandoc-3.1.3/test/odt/odt/simpleTable.odt0000644000000000000000000002472107346545000016465 0ustar0000000000000000PKaF^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKaFConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/menubar/PKaFConfigurations2/progressbar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/toolbar/PKaFConfigurations2/statusbar/PKaFConfigurations2/toolpanel/PKaF~YooThumbnails/thumbnail.pngPNG  IHDRzA6IDATxnP@ALlVHf > Ə8>^>(胢>(胢>(胢>(lp8}<_}ѦM/uy'N5_gccne.fZ~2A afCpqhս]ly!8Xɲ"X~3n]?ΎG/<>S_v|(w<m~x9燯n,7} `>3]&u /v<[™?ƀAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}P>A݊IENDB`PK@F. ˁ content.xmlo6+ a$˿)$ۀn-1JH:o+;_2RdʑIfx=19ocں\Lk;-,"b|;r\`9 $b2ƉtCHKy'bbzΒ'XLd8a)N m=2-Bic^6uֶ_4k>sfl{G:k[T}Κ: Ιz"I$mJN|Zy㱟]4BS'~~acƧm퐒e<üqjDTwqؑƵWFFoMF~\_mjMҶTX2T`hnekDbn{CD2,K |e;]eDt"9W7-Ƙ_ w/m%n|A+?A]GmѡknKaxTP"W2ƠzbozpOLnW{c>>uڟ{mL?UNWĚђz;u2\ܮHi#{P]^nv@ki9pΔEՠcš> %{},JP۩H :uܶ7sř{V=i(sLqv* ;^wǩ>jzUXZ>줅P 3S+8}(zWarj  ^{tǩ>Z(8 Jh\NvR(aqj6lѶ^l`;vl`;vŲ.`;vl`;vl/c;O_2vr>'Sdz4@2$>Fu퀮g΁U ʞ5:VzXeYcugΗUvʞ5u:Vz,XeǠYcu%T 9q+[ڣUp+V[n p+V[n p3VV[n p+V[n p+VN<,h葪#KTokRvRR`7/L5HRHtB+IyҨKTa8`}3`[}/{TMF>;8{dY8HHC.蜭*2~=ˈ.+שW%Sf[Ȑ>ܢ2%22-OuZ߽P׌Vx#T,m*յ^UyYdy=NQ6ͤX_PKaF _~$,! settings.xmlZs8~"wJa:H37a/XHrV6R0=b'&+ەrygPν3\.i s@+ Ach>Rk/ULsݒ,2A e׳[JptE$z}\[jQo\^^ֳ/U~ _f2ezw+4㷯6 7[ۜm>ۭ]{ab5hk~|_bmG:.>K8^ƁGHnCi_DnR4 DCH݈3DLzmR(/; 0CLbԸ aᾭ+[CiYlUEm4{(bdOj>PydRL`zP}8ItPOxJv,Bu SEr77J >Uv*{Y{ž%v^5 Ub94*fBT) 3l4 * GHDyj +X2ٯSl(' 21rv:F >h>ghP'F,]c& >nT>_ҏDwLLt{r /$mb0^P0.{[k}ᒩQQXDCFr[= Ts3 svHK# q|HBfrly^e@8-ʴsQlѬ1;,S =(N+sF` ¸rDEmAᛉaj0?2Q҅>_\f.-BWXS+M_nDq 5~uiIa Hk 4@(ځ {gLl."-8#3_J4Y;tJr~5ʖ)u '(@cCz:Tآ!r/.KBk+#Pvꪞ.ރ~п:PK _~$,!PKaF Ɇ styles.xml]ݒSP>T-{Rcoƾe+ &g ?EyL%Ax['C<@p`%m-6 2H^-B8Y|v8LDTp'tZn?1Ib ֡>(U.Wp}5pt)۟O}d)jx/@R^ >;PEs~4>hBAu[IP!` %E4s#R6Hc]5 jz#2b ,Hן6^W_TȟPLҿ(x9~4SƘí{3o1J/&wBs>eU7l LYZMg,B"bF.t|5g1ZIU &,Lc2nH9:Z':>2OS B6V&-PJ1Ɇ$oMFh gEaB6yl: |!࿏F|?4 <1H1FHx$N]qfb0CDQe{$$%ɒ !x kL0Rۉ3o|M%G1}f~IĆJ:MXdP$4点rAAP߄Y΂Qs/КD_a֑d]hVl,,`oo& WHf wHH@XFX5]}e$*k9=v%G;Y߅)֍s_ٻUKI7x*,'ߟI+IJc$4A QR'>c3!JR fF8[s cr_ !7A4At_RkACQr0Ch ߠ7gۜ;հe5J ŀbsek$fcFlEcD)FeJE-"ʗ>sWT$h'!ԓɧbhamh|q:b%fr IC lK{S #K9;wR cүDa[E!,HVĢ@fNhRYや!bߜyQAl_h2%Rx"%IUgφv:eiJK˔=K -=옥bg~v3:ffi\R*愳[혥%biN8:ei ˡLٳ YڙCR4'ғYUiP{$=혙SKJМpvKۃNzh FPZN1>I?u,XېI=5)}K-uGg{Y,8[*goh:aKJ AH ;\fT%aa*ʾtTpvP8{$*QphjxIw(&p1&wT#k0h"kzed.YqNJc-BK"-h*"ι"|W+ %2B2 oT]\u%ekU C*H-Tjh9#u",^;< p,\#k/myjH-\7 ׃jk2PFH-\㛅kbM4p9PH-XˆEKpH-\ۅk ZT(D6RhYUWGALȼaydx<2G^-r 78.0=\+{9j饡CE㫟 QbUߋ!o,`K!%X`M. ֽR>te[l {! ktieqKƗ^0%iXadt2zf>^30{0\}EwͿ ;_; JI7 E:pmǎ,^.yFelj>A"7q FtpW]5X9ߗU.y4,0_N4*p"Z [ټ1 %Ț:ֽmsܨp6~t Ρek~Sn@WR;@ryMkNǭ#\7-;Btd -CT JQD2r;3{oxYύN!SpUY&bR}ڏF#đ``p#PuÈgҏw譓+)@="5WHi+Ϧ7y3wG #l9^54Iv)PF~Ngj3̻f&I ʡ&I C]OI>r4wQs3蹘 Rإ`Hq,q[ =); s 3g'/UxЂbA>툃]'nOj8ŤV hه Martin Linnemann2015-03-01T17:26:12.312015-03-01T17:45:24.40Martin LinnemannPT10M3S2OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PKaFjҠ">META-INF/manifest.xmln }zP& `ID`G*ɶtZlNGx fbSh$siR@U4Qr%i;I~5XyPpFtbъ8b/ Nt5dm):TL0üʛƴ)\ŵPZ t 1a“z pT v^}HQ{/ofOIoD =ӫut0xzu~PKjҠ">PKaF^2 ''mimetypePKaFMConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/menubar/PKaFMConfigurations2/progressbar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/toolbar/PKaFConfigurations2/statusbar/PKaF-Configurations2/toolpanel/PKaF~YooeThumbnails/thumbnail.pngPK@F. ˁ  content.xmlPKaF _~$,!  settings.xmlPKaF Ɇ vstyles.xmlPKaFh manifest.rdfPKaFM<meta.xmlPKaFjҠ">#META-INF/manifest.xmlPKpK%pandoc-3.1.3/test/odt/odt/simpleTableWithCaption.odt0000644000000000000000000002423407346545000020636 0ustar0000000000000000PKXXdI^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKXXdIZThumbnails/thumbnail.pngPNG  IHDRkPLTE_ivoaxtvyxy]dfxyz}~ͽ̽ľɶƴŶºĽ½-L#IDATxO@`DEE1Edq 8ݪ :8D"*`˔7F_%#>^ܓ틎bQSSSSSSSSSSwQ]=.k.EbvRL~mVM6eFZy6ùnSQܵDVGꙛ7NΟʼKM_WNTlX¥r4 ;kBU>][#J]Z*?GvBR7f֣ϫQ|E}[_W[;#kΜ?s,yC~5_:7p969~6髭?tq7Db\vuwl2F:*L'3t6u7HoR!IENDB`PKXXdI content.xmlXo6~_!6&MEa@[AKM"5~GR)Eդ@Ǻxw<6gHE8 ODJj~~+ ?.~YF")su\N;KcU19QNbQ}tlrwl֚lPcm-طN%,7PbQ& y52ʿõEPUUj6r&jI+J,*Ma,d4A{lN4`}J̗D ũjpFlVGB>Y:xgoc>r&W 2BHZ ަCB1pjN={$T DD6&M7PG ȩJ)Y<8\iIRd&ִ9;^FdB ACEJwaNNBضxĂy`2FӔ1ȡUse mA$5*̬Yg=pY]VC;F^7BDBEYo3!Ҭ(f/AF.z%o, B Y pB$L-n\/oā{6#+&aM{)5!:m7i/q)ϸnj.%qFC7SU>{9>:dљʄ8x\9qBуuwJ->o_ZK-Id4k?[\0F&͊5Uv)*Ԕ\Ԍل0pc$ J+rHd"JHUT#n[fPe^ <4K&w])\tr0+IwM`.h|ܻ`Tա,LL;D($ Ћ`3k /h'KPfa}U$fZ. 7ߛ<2 rlE<6 Sxd]?{g,VAG~[PK=?PKXXdI settings.xmlZ[s:~?"{I$ 7a/HrV2)5<1+oW+(Qޗ./*3!F\NKm_w8i Ҝk0g})ULs],]7ao;eٕrv_|~1wjRjewwhr'ʞ~ 7 bjrUV|cjamV sn 9[]K/+j}wz 1)eBwIrWq./<2ӽjondwŤS ֔ - #DLJl*kI3kw(50wj5jqW#B$/U׵ۢR5 8}8'Om'u#6Dc0M11h2GR-15-i,z%XMɲz.mT^+h@@h j+P`{.+ëiv!UPm'3mx  iHbo!b,MrOam uB!"BnX ,=(HGFR7dH1 Q;FڇbŒ7fmT13C|J: l#N&\zKM7ڔ>%g[XS=*6wXyzerD$}ƈ(l|Ccs/YIz a!m 6f͕6ĀhDATB nn<_\<,A{h-F 4ۈO[#ZV_֊F+tE~0%xjZhE*gG|U@I "ʷ{V7ʺȢy XzߙHr a Ψ)TZLpϗ @&PeKߗT>^n~˔s_ćL|սg ~¼#I= w*r{U8%Bw8 =8cz"r@ M%ӡrÀuGv AY!ӇA'ԝ,(ojm]2c!>-Hkq|GE]6:g;8nt536H@\BGm!(k4{E&9C)LωH 6{ XOjDECydLC 팤m*,>ƞu)1D}Fl %8?KORRo3wUiljC Hv:)jr&poXTk_a> ;M|" j|`sEP@R1MTHڊ=;X^ii0壂nzʥ"϶ܬ xk0_g xoJ|N"fr > ^xW ͙24FFh}aޗO S$~0fElo&Dx oLTlwg]FfMs ~*gg8bnHʗwz+}/PKmQ(PKXXdImeta.xmlK0#C,H]t5Vj*u9q 62fH}ͳI,9_\W;Vji@|ЅTR97)Zt5(jseSiwF1[2khL7vIhRΕTwچa}G6%-5F*ZLvHP{Ik z Х)a[%7bᡟ/bF*i%06+7V*E*5W*wyrs<$4A$B 7ADhVl{2xD)!iJ /d JTtf5>[WDmг<%(0_q]8`Dn)36w8&5yɪ@lo>ֺuˏ ;ee(k^"E}n悤fxixsZ \)Vx NRI¹ܵ'imp.`8~/PKtPKXXdI styles.xml]ݲST̏ɞM%U; M# 9{gɣIBX>⽘CwKMݭV#̷|]ǃIi 8 H%ϟf̆7ߒ" SH'o1 O%yɒ'(JOEDRTBO2*Θe]),w1a])/T_¯yl,uk%_HFvkn]dˑQK7Y̸`cL'Gi*5.PW(RYq4@{/Ԙ&Xo0]xݰ;n(ˮQ`2}"/dsQSYv͒['U@L]Dzƣo{ʾ͢g{8'kр_Vi() Ȣ{8"V:ևV, ;PG7^"f94tH1yUFG @R'l)l X*kPĞvF,&' isP?Gft "rjI[X(F82˃o#J(9:*p.XzNb0PͳH1FM)X o W(\iyWez` 唂 ?kvA!`+pVl#Fagu$& M9 ppa#H 2ǾQ)Xɇޖ QtV9ǔnU(i)IXv/0'g8(ͩ;mcr҈/FAXэ7C b(DY8& 9SGx(X;\=%CJBCUf ~q_$|Su(Q9L|2a9&IQݨeZ3G.ߠ X [8R:uL޳nfqG'>;>FЕ ]SM[t`tZm^:QR=*wE/ћ|NIQg+)wڒ7b:dH[߂Wvi` i+G8+Ӳ6~df| ƪm}SMX^PN]Z*Ones-:;|}G׋xwNrezzU^J*Hɦ`8Vvh-+$qD$b)Uղuh?$$ 9g4nɆa׬U~gZ,R{ƥ(۠stz7);Zq `&/śAw0d{W+》ؐVӎc-]ߝYi}Sb;{FZ|Rki1vGnd>GO)=X^A.g&~)rjRI6↡k=[_!&>;뽒X/سc)RZZnZ?uޡ+ A>g"'isSoVvj7q+>4U_6hgmd(]  n;mLH*0j)ୖƅYV?a1g/K6>C&Cچ[&6 qL84oeC@4xZ._v ެr vdG;=XcK홍==Kx3O46mE͓+,s߉k7cB> j9ސRWl5PW} 6lO_q/@ 3}߃=x/@k+}F I_#ޡ9S_(4GvH-w#g_8+b|N2ǮC&_Bw# ItLjiBM-~kk?b|Z3#:>1iQdxcHQ?h1tԠodS?&1>>((,Vhfu:VGmNt(oF, Ep3M"CQ!y>{(yTfS#2_)XWq[xCjDiYS%B 9s0 y - %O#Ä$—QHHVG4 Bp HL ~cTv~WT1H6tqU}(cE:Ҏ6?(,"UPK PKXXdI manifest.rdf͓n0P]Cc7`@ E.# |gr1F Îv@t_k<4W'w=-ylME",So^w>p@p=U+|PKY>PKXXdI^2 ''mimetypePKXXdIZMThumbnails/thumbnail.pngPKXXdI=? Vcontent.xmlPKXXdImQ( @ settings.xmlPKXXdItmeta.xmlPKXXdI  styles.xmlPKXXdIh `manifest.rdfPKXXdI Configurations2/toolpanel/PKXXdI Configurations2/progressbar/PKXXdI!Configurations2/statusbar/PKXXdII!Configurations2/popupmenu/PKXXdI!Configurations2/menubar/PKXXdI!Configurations2/toolbar/PKXXdI!Configurations2/floater/PKXXdI'#"Configurations2/accelerator/current.xmlPKXXdIz"Configurations2/images/Bitmaps/PKXXdIY>"META-INF/manifest.xmlPKp$pandoc-3.1.3/test/odt/odt/strikeout.odt0000644000000000000000000002452607346545000016260 0ustar0000000000000000PKÆaF^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKÆaFConfigurations2/floater/PKÆaF'Configurations2/accelerator/current.xmlPKPKÆaFConfigurations2/images/Bitmaps/PKÆaFConfigurations2/menubar/PKÆaFConfigurations2/progressbar/PKÆaFConfigurations2/popupmenu/PKÆaFConfigurations2/toolbar/PKÆaFConfigurations2/statusbar/PKÆaFConfigurations2/toolpanel/PKÆaFvhThumbnails/thumbnail.pngPNG  IHDRzAIDATxj0@ _vPBc:'`<IE}]p 郢>(胢>(胢>(胢>(cY :j굷qh;8k2NyjdO8<\Ff>3}x<: ⸄}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}P>giӁIENDB`PKÆaF content.xmln6} Ck.8^P@Hn@KM E";yvE}>IEI)FI"|yGpF`qzw}f _>f8{LuFlΑ bP\zsbz/]"%˪-:+[Hj}ū:WH{Q)aFpMf{]hl{.Xu&ܑ3rSKT5>em%*I􀪸]WxU1މ_HnJWP<̅(ڗ=J0uޟsSW?w""q35(i`7rƷjf_%B8]] ߮. ,<ݗG܍K0MWIf C5DDIy[3wѓVY  {nd'Τ&ģ1,a6R2*hF#&Zhc4b1AKXFJ0F#h+hXFJ0F#h%Zh-c4b1A+\LK5OOj?fp&}l[lW+_XNP4Rom%ܸrqԀUVzBm\EzBOq52ԆU2gj*zaE6"E>NQWNS\aոQWS\+a*ո̌ae2Gp3)\F,t?E+lj?aC!XF.t?:e2GhHpKT,=(o1;|Sa΂ODHѝͷ2HH2!gOnJIV7h̭`6I{M=|e?PKŽvPKÆaF settings.xmlZ[s:~?"wm΁IRZ ɜ {jdG!Mc=1]i/߷+2g/4Gy]׼3\ίIfD.>M7hF^L8B/DLAo)" `kB1=Vp!>cB-eKwm?5ju{VQ^qAc[~yyY\,P+\$ZvNgBGӃrIh ƇR$mY4 "v:/my.]T(h@U|| +H1H3!N6eS_r#$<5yR, )6avkl_|QCf4 DxSPM4TJѤJEiʂ1 >nT>[ODwLL{v %ml0ʷ^Pc06{[k^~ls(XDEMgq9-A $\%Nu9O >$!39Ajl'Ze9(hMF٘ @)sN+sF` x/4ۉ8=oƆvd0p7Fi/.J|!pY;N;L s \ic9G4=27;%P8Y!'Y͉^"ݓ}]x+s7F .Y8+ 2q|)dal+XI"VTZ([8(B*˒IM lƅ'j Zk5%۫-H!RD85ij{u@I&+|Rl,tRל w/ՂPt.pi=} J39Le`R6Vpc0iO|md6_>)buCngSxe(Wjk?‰ØbSUu.LTӟz mD@ , -'ϣ"_,4lMrp-O˜D`lD+T0?%Ic&jSA`QrV ]Ge=]dO՝uhPKГ*,!PKÆaF styles.xml]ݒSP>T-{Rcoƾe+ &g ?EyL%Ax['C<@p`%m-6 2H^-B8Y|v8LDTp'tZn?1Ib ֡>(U.Wp}5pt)۟O}d)jx/@R^ >;PEs~4>hBAu[IP!` %E4s#R6Hc]5 jz#2b ,Hן6^W_TȟPLҿ(x9~4SƘí{3o1J/&wBs>eU7l LYZMg,B"bF.t|5g1ZIU &,Lc2nH9:Z':>2OS B6V&-PJ1Ɇ$oMFh gEaB6yl: |!࿏F|?4 <1H1FHx$N]qfb0CDQe{$$%ɒ !x kL0Rۉ3o|M%G1}f~IĆJ:MXdP$4点rAAP߄Y΂Qs/КD_a֑d]hVl,,`oo& WHf wHH@XFX5]}e$*k9=v%G;Y߅)֍s_ٻUKI7x*,'ߟI+IJc$4A QR'>c3!JR fF8[s cr_ !7A4At_RkACQr0Ch ߠ7gۜ;հe5J ŀbsek$fcFlEcD)FeJE-"ʗ>sWT$h'!ԓɧbhamh|q:b%fr IC lK{S #K9;wR cүDa[E!,HVĢ@fNhRYや!bߜyQAl_h2%Rx"%IUgφv:eiJK˔=K -=옥bg~v3:ffi\R*愳[혥%biN8:ei ˡLٳ YڙCR4'ғYUiP{$=혙SKJМpvKۃNzh FPZN1>I?u,XېI=5)}K-uGg{Y,8[*goh:aKJ AH ;\fT%aa*ʾtTpvP8{$*QphjxIw(&p1&wT#k0h"kzed.YqNJc-BK"-h*"ι"|W+ %2B2 oT]\u%ekU C*H-Tjh9#u",^;< p,\#k/myjH-\7 ׃jk2PFH-\㛅kbM4p9PH-XˆEKpH-\ۅk ZT(D6RhYUWGALȼaydx<2G^-r 78.0=\+{9j饡CE㫟 QbUߋ!o,`K!%X`M. ֽR>te[l {! ktieqKƗ^0%iXadt2zf>^30{0\}EwͿ ;_; JI7 E:pmǎ,^.yFelj>A"7q FtpW]5X9ߗU.y4,0_N4*p"Z [ټ1 %Ț:ֽmsܨp6~t Ρek~Sn@WR;@ryMkNǭ#\7-;Btd -CT JQD2r;3{oxYύN!SpUY&bR}ڏF#đ``p#PuÈgҏw譓+)@="5WHi+Ϧ7y3wG #l9^54Iv)PF~Ngj3̻f&I ʡ&I C]OI>r4wQs3蹘 Rإ`Hq,q[ =); s 3g'/UxЂbA>툃]'nOj8ŤV hه Martin Linnemann2015-03-01T17:26:12.312015-03-01T17:54:07.06Martin LinnemannPT10M3S2OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PKÆaFMETA-INF/manifest.xmln }zP& `ID`G*ɶtZlNGx fbSh$siR@U4Qr%i;I~5XyPpFtbъ8b/ Nt5dm):TL0üʛƴ)\ŵPZ t 1a“z pT v^}HQ{/ofOIoD =ӫut0xzu~PKjҠ">PKÆaF^2 ''mimetypePKÆaFMConfigurations2/floater/PKÆaF'Configurations2/accelerator/current.xmlPKÆaFConfigurations2/images/Bitmaps/PKÆaFConfigurations2/menubar/PKÆaFMConfigurations2/progressbar/PKÆaFConfigurations2/popupmenu/PKÆaFConfigurations2/toolbar/PKÆaFConfigurations2/statusbar/PKÆaF-Configurations2/toolpanel/PKÆaFvheThumbnails/thumbnail.pngPKÆaFŽv content.xmlPKÆaFГ*,! settings.xmlPKÆaF Ɇ styles.xmlPKÆaFh manifest.rdfPKÆaF-aJmeta.xmlPKÆaFjҠ">k#META-INF/manifest.xmlPKp$pandoc-3.1.3/test/odt/odt/tab.odt0000644000000000000000000002367207346545000014776 0ustar0000000000000000PKkR^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKkRConfigurations2/popupmenu/PKkRConfigurations2/floater/PKkR'Configurations2/accelerator/current.xmlPKPKkRConfigurations2/images/Bitmaps/PKkRConfigurations2/progressbar/PKkRConfigurations2/menubar/PKkRConfigurations2/toolbar/PKkRConfigurations2/statusbar/PKkRConfigurations2/toolpanel/PKkR manifest.rdf͓n0hq_~VO! ^w6U~oPp~ݞW¨u#%0 s^]6Hж,G.>.k/qi_.Ĭ|&,3GI0sE':|u[ۄ0h~%B: RD`!Y MynYM|͏bNBǕZ>Q!=A, i#%$C a(u֩C">%L(ȇɺ.w/ĵHrYMn8S^DWlړ(*eFVzԇ a<}{WIۿ ߄2HMsvq|e;37C3(tleMt?_w9 Ch#|D!'0FA9Y|2K%izl$T׏ sĄdyB92OKDEb+ *R1ϟo,蔖^MyjLe7Đp|)Kw uHa{7ng_raS,ngA0Cc&*+Эڦ9OAo䯍]`w&N#JgEY̏|Q!+$ĺ̌:Y-Pj {Y[869HdEaBj<WlsH`yk4QVA㔻]+w&ŰֈC'&<%PR>=g)q) .Øk!D-yo lwDbrT(咂ϯx$"JQ2ùy'c2 )sꊔ'I?}@#߭Sjp$*+'DAhɚtxl#V  ra'  Z-S-iP&s xZsNBJ)c;.1[,cJo q$Z7D)]@}pp!ob9fU":7p;ZR%d1C1~|z)ȇ7(,9ZD-ڥǒn[%lP6{}zF̊^,– Jk"5X9UۜîoHE L6hCG'?'NgPm{|ᔅV$Y;P'c1Li6Y*][q"J)TMAZDyKC Q8) 1E59jxsGqOAT*T-J7LG^0UOR$[L+(4 q&D4Rdl!AȟҰ4|Hl rw,G6A|LE8玪\y 9a`*^C٠ޠRP{A P 5>od +< -ܴ-bnWv[ok@F^Q|k63/+" ktpV\sPj|Pzñ9EwC*qobI8o jyѥD.+R j ,%p}JW ϊˡJ"pͮ1,P\vo/jF;2ĔGF#[{䴻8-wpn-.0ݝC5kP!Ŧ7㛿b*5C,!X޹B [#ҕ oPF5n` X`M ֭ `~3JӰXdt mݗAw4~\#,{Vpݏ+X \C -~. رܻũr ݯஐWn$I u2w+8#b<#,:M {~b43Re bĚܷ) }AV̌pـX ЉiS+Z7~]pz8x*~'mzS[jT\6{2mt6iRmih0Dț jEi M"^0 N& J0 'oD[>^@@DC6Y~.40M#k?aN6HaD~w<$K* G["=wt}uCӘt- *ڤrjAXe/z )̡ jxcm_g߿d >;L6Wl˄3qd9J s z]Ηl;o|RۈF: d&]IXuJ*&5z*% ) zwZ,Go'kxЂ,RC7!_ *2^u ߁%Yծ0⯷ Qza||"i/X0uYe>PKw yPKkRmeta.xmlMs0+ c[ɭdڙx Daչ ziE銢ڡ뺨u%fp\Bzh>Y1w쌰խ0Vx%lf)!X1ښU϶^Xx/k͟{v5gWT0T0i1(Fljet^tXB@z'66jiLbxLJ!cBCBt-X"(8xAlŊ ƢxrP&Lg7}SDɏƇ{*h3~C-;|Թo:"_u]{II\!ߠ<ސ93*%uLx,W@n60x7տ-^`{W*{6~76]J-A>nI/1'K'm9N=<%o;im#U_\{{PKr'\K%PKkR settings.xmlZs9 ~"{J~50I: -W \̮_֎ ߟ]h@LXdҧO^~**cL_UO\h$c%)hwh9ZbumkJnt E f^e/WsYZ/+>WOΪ3%rt:0= k/..biz$XX9\/0|s(7^U=K.VYN#bYe3zP+G"/ #!Q&nVǓ݄9ɧ??m'?ihL]0DT tڙuS w&#";:$>;f>Zgwrc읜n/wS|<:*{O 1G(O/v]G0ݘ HjMи-昻<իI]J uħek4EЬŖi>($MC?0<1m\*H!eX߇5?MKl\+wCn#;%kБhVSf>;0OeܦCHHnCaa'a:,&"%­%p$]a@3ӎ"w¬B>P8Uc*XB}hyCHOAMNkB2X#A%Q8%:` (8Lil0!| yguGTX{.Zz L`v{8ȖFGV ur=;F 0tݽӱ(RQPn_ur4QɝйPu ngLhjy_)grR?J5Df@Z;1 7attC`@) Mr&u؎pdT0;y T>V9:҃&jP5~3t& Zݶ pP iPm}G4/fwRbP ~<,7Np Ϡrj  V#%p >8xX4W8hljiN#pR!t | *>_vJ1L&ΣYcS9/'Ufo@mesM W*o9MjHzTPYd}bhh6HiF0Hu%{"Z; 3eOmNd1Ķ+Xn t*E1NICr0ϖ~d*E.ܦ:#'7=+x#+AҕoAdG[ JTPt?62soپ5aVǬf&_X xpQ0c5̒p)‘D9l(40~6MRXP0_`~_'O΅ gD<{'Ə%?":vA}MZO;AXRJs{MϠ*P+"QE%_u.A:& 4t |: 1u)O. |jaWLJ")~|:b6Op+|^dv;D +s=fF{] OP']i.\Yj [NcN\GSٍL;rz)! ͌|+}TRUUͪe]<>>ZB9pEiU%k,f b?ɡ#xqS;rK܀8/tM>!IS;5xȶ߈3NR evr Z]-J/ήUӯ"pԠ.e`XuegJ 熆BXDTմL:bN+?\h@YCB~Q18wXB'H졺HD@XSSgWYYLF}}_rr Z^Dy7Bx Q܁UEN{ ;Ouԃą{w<}_ m"|^x1qn/16HIank> ɪb6v0 es[=ņm|NިΨZ$zy ɥ:\ nO֨ *jJn A3J:wċ-CD!=.p -גINњjk 㜸/0 (yc::f@w z­|,:[r%-!,p}@X/C]{kl%y2"` oΤ[~d6H0(ZhG Pi0U%Qdz7n[=ճa&t'lJ_JAW(K!|K٦}ZBBUgUf5<"2[{ƩjB  _ !*l"G ZpGR=b*"#_PK$XvPKkRwggThumbnails/thumbnail.pngPNG  IHDR>PLTEddecfnligfq}vwq}{z}l~v|ıĸľ¼ǵǾľɿɾH]IDATxKSQ"Yumrlks5hfI&A")_(9‡˽Q#-(<|_oawWߩN%ѽAllA]VV<̓VYqqK5ť~zp# nβ<ۏFwzo Hj4Vw=F|<e, IENDB`PKkRMETA-INF/manifest.xmlMn 9Ŷ2Bqxp`@D틭8qU%3{jsCaCTҵ|n?7Y/VVVUylHȝ:r"O;:-`?t&^ mFnR.c+R> C0)% aPZ/K ԥ=/T6"® Z-tr0atb9*0` RRdW,OΜ1cofM0O||FC.]O}Y1 χZH)On۷o./D%]Vtb~+oPKL]A@PKkR^2 ''mimetypePKkRMConfigurations2/popupmenu/PKkRConfigurations2/floater/PKkR'Configurations2/accelerator/current.xmlPKkRConfigurations2/images/Bitmaps/PKkROConfigurations2/progressbar/PKkRConfigurations2/menubar/PKkRConfigurations2/toolbar/PKkRConfigurations2/statusbar/PKkR-Configurations2/toolpanel/PKkRh emanifest.rdfPKkRw y styles.xmlPKkRr'\K%meta.xmlPKkRS`/ settings.xmlPKkR$Xv content.xmlPKkRwggThumbnails/thumbnail.pngPKkRL]A@!META-INF/manifest.xmlPKp4#pandoc-3.1.3/test/odt/odt/table.odt0000644000000000000000000002501307346545000015306 0ustar0000000000000000PKaF^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKaFConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/menubar/PKaFConfigurations2/progressbar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/toolbar/PKaFConfigurations2/statusbar/PKaFConfigurations2/toolpanel/PKaF~YooThumbnails/thumbnail.pngPNG  IHDRzA6IDATxnP@ALlVHf > Ə8>^>(胢>(胢>(胢>(lp8}<_}ѦM/uy'N5_gccne.fZ~2A afCpqhս]ly!8Xɲ"X~3n]?ΎG/<>S_v|(w<m~x9燯n,7} `>3]&u /v<[™?ƀAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}P>A݊IENDB`PKaF content.xmln6} C P@?bvYd(Z i dmAKMU[COR~HȶdҊ989C7?w!e3t =p9>[ozM OuCn{$wGxl{g֚SbM7% iz-oqaweu{`^|fe)u"Y) "A8:𷙵6 :}/0yU?Y3+af9 8 9oX>o?U6^.~68YO_i(XR z [{݉/P?1܌d[߮oճXbxZ)ņjo~~ `v׊,3eX 7![ܢ"( srfaY8Uް&تqA0&sc"*L..(_%%+/Yv q~%{޲=XO? 2r.<̟6L^{T墍]\/Ke`mθW ˨؅sqQr$.lF6tr\bʰ۸ ^Tfƍl Jr=*q9qi0d2ݱ0qR#hb4Z1A-`FPC,F#)j hu``44j hb4ڂ1A `FPS,F#%ԕKS4O =f=,'(om%\rqVzBi\yzBKqU22gJZbE4NQWNR\aUQWR\+a*U* a/? e2Gc`Q(XFh.4VS?2GpA0\Fh ,4 ? efѪ=(^H:a;0q΂X&kQ zЕ#k) JOy`Ý7ك|OTzROIIØN9T9̦0C_"lfC;56C^}|eZ:+q iH r}CWb+{2S=ӧ2*r ;^g7r|01pzs>aWPK^SlFwPKaF settings.xmlZs8~"wJa:H37a/XHrV6R0=b'&+ەrygPν3\.i s@+ Ach>Rk/ULsݒ,2A e׳[JptE$z}\[jQo\^^ֳ/U~ _f2ezw+4㷯6 7[ۜm>ۭ]{ab5hk~|_bmG:.>K8^ƁGHnCi_DnR4 DCH݈3DLzmR(/; 0CLbԸ aᾭ+[CiYlUEm4{(bdOj>PydRL`zP}8ItPOxJv,Bu SEr77J >Uv*{Y{ž%v^5 Ub94*fBT) 3l4 * GHDyj +X2ٯSl(' 21rv:F >h>ghP'F,]c& >nT>_ҏDwLLt{r /$mb0^P0.{[k}ᒩQQXDCFr[= Ts3 svHK# q|HBfrly^e@8-ʴsQlѬ1;,S =(N+sF` ¸rDEmAᛉaj0?2Q҅>_\f.-BWXS+M_nDq 5~uiIa Hk 4@(ځ {gLl."-8#3_J4Y;tJr~5ʖ)u '(@cCz:Tآ!r/.KBk+#Pvꪞ.ރ~п:PK _~$,!PKaF styles.xml]ݒSP>T-{Rcoƾe+ &g ?EyL%Ax['C<@p`%m-6 2H^-B8Y|v8LDTp'tZn?1Ib ֡>(U.Wp}5pt)۟O}d)jx/@R^ >;PEs~4>hBAu[IP!` %E4s#R6Hc]5 jz#2b ,Hן6^W_TȟPLҿ(x9~4SƘí{3o1J/&wBs>eU7l LYZMg,B"bF.t|5g1ZIU &,Lc2nH9:Z':>2OS B6V&-PJ1Ɇ$oMFh gEaB6yl: |!࿏F|?4 <1H1FHx$N]qfb0CDQe{$$%ɒ !x kL0Rۉ3o|M%G1}f~IĆJ:MXdP$4点rAAP߄Y΂Qs/КD_a֑d]hVl,,`oo& WHf wHH@XFX5]}e$*k9=v%G;Y߅)֍s_ٻUKI7x*,'ߟI+IJc$4A QR'>c3!JR fF8[s cr_ !7A4At_RkACQr0Ch ߠ7gۜ;հe5J ŀbsek$fcFlEcD)FeJE-"ʗ>sWT$h'!ԓɧbhamh|q:b%fr IC lK{S #K9;wR cүDa[E!,HVĢ@fNhRYや!bߜyQAl_h2%Rx"%IUgφv:eiJK˔=K -=옥bg~v3:ffi\R*愳[혥%biN8:ei ˡLٳ YڙCR4'ғYUiP{$=혙SKJМpvKۃNzh FPZN1>I?u,XېI=5)}K-uGg{Y,8[*goh:aKJ AH ;\fT%aa*ʾtTpvP8{$*QphjxIw(&p1&wT#k0h"kzed.YqNJc-BK"-h*"ι"|W+ %2B2 oT]\u%ekU C*H-Tjh9#u",^;< p,\#k/myjH-\7 ׃jk2PFH-\㛅kbM4p9PH-XˆEKpH-\ۅk ZT(D6RhYUWGALȼaydx<2G^-r 78.0=\+{9j饡CE㫟 QbUߋ!o,`K!%X`M. ֽR>te[l {! ktieqKƗ^0%iXadt2zf>^30{0\}EwͿ ;_; JI7 E:pmǎ,^.yFelj>A"7q FtpW]5X9ߗU.y4,0_N4*p"Z [ټ1 %Ț:ֽmsܨp6~t Ρek~Sn@WR;@ryMkNǭ#\7-;Btd -CT JQD2r;3{oxYύN!SpUY&bR}ڏF#đ``p#PuÈgҏw譓+)@="5WHi+Ϧ7y3wG #l9^54Iv)PF~Ngj3̻f&I ʡ&I C]OI>r4wQs3蹘 Rإ`Hq,q[ =); s 3g'/UxЂbA>툃]'nOj8ŤV hه Martin Linnemann2015-03-01T17:26:12.312015-03-01T17:45:24.40Martin LinnemannPT10M3S2OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PKaFMETA-INF/manifest.xmln }zP& `ID`G*ɶtZlNGx fbSh$siR@U4Qr%i;I~5XyPpFtbъ8b/ Nt5dm):TL0üʛƴ)\ŵPZ t 1a“z pT v^}HQ{/ofOIoD =ӫut0xzu~PKjҠ">PKaF^2 ''mimetypePKaFMConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/menubar/PKaFMConfigurations2/progressbar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/toolbar/PKaFConfigurations2/statusbar/PKaF-Configurations2/toolpanel/PKaF~YooeThumbnails/thumbnail.pngPKaF^SlFw content.xmlPKaF _~$,! R settings.xmlPKaF Ɇ styles.xmlPKaFh manifest.rdfPKaFM<meta.xmlPKaFjҠ"> $META-INF/manifest.xmlPKp%pandoc-3.1.3/test/odt/odt/tableWithCaption.odt0000644000000000000000000002457707346545000017476 0ustar0000000000000000PKҊaF^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKҊaFConfigurations2/floater/PKҊaF'Configurations2/accelerator/current.xmlPKPKҊaFConfigurations2/images/Bitmaps/PKҊaFConfigurations2/progressbar/PKҊaFConfigurations2/menubar/PKҊaFConfigurations2/popupmenu/PKҊaFConfigurations2/statusbar/PKҊaFConfigurations2/toolbar/PKҊaFConfigurations2/toolpanel/PKҊaF =UȧThumbnails/thumbnail.pngPNG  IHDRzAnIDATxN@@ђ \f'-Mcy{_W郢>(胢>(胢>(胢>(#}{g{2tbOr9i}!eәgS|ű|r*f٪e71\}lgOm:ӵpKly)8ZɺËAwX9gS`yn ;O\{ozvS^8?|dOz w>N~7s?vp}Oa󥿵 s;ڀ>v|pf1W"U3ϗ?c"e!_\zZ@a؟?nYdrO)胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢;LIENDB`PKҊaF content.xmlXn6+-C m5"E,ۂ6},ˎl+n5||3䈾h p%o`G ʸ_Hnlbe&LI#& ۸2UpJI-KUrѩ+X]܎l;V,كљU`EQ37وdPx\~)!UU s2&f (&3d456Ks6%YSнȪY{WrGwmxvz/ڱ9=9"Zy߹vK*y{ݎWJ5T]@ؠx8:4[pvΨ`* q#LwB=c d{- 0?N4ʍ2%aJ Ҷfln yйβN(ҹ q%Kջp=\j X[/ ܭ WInP4,UPudɺ51̰%3 ɀ 3 Hc³q?P9bGxR!9'&…=CGDj1wd5-d*ṉ)4]$c÷ ϰ%X#Sߗg4zD_$w #-)u鳓}Yii?NSs0jfݷOI; `jp3F ,9n9\q4S7"]$ҿCQQѕ1buஓ$6eQrk0\kW[H_/zӏӫ0|нKMmڂf~8^*@T t"`fc8fydYn0 I%mAE_/5| ?xR;4D-GeG;?5j0~'Xܕ6v2se'@Ǎ<9&i#Nku=?NPK?PKҊaF settings.xml]s8~Eכq׆Iґ NHƐ&oƉ,$9[ِ`R h`j%,GDȐɧJ0! JC9Rz%LBT}%aXDt&R"Xc*UUyLrZ=t5#ѐ\Jr9MO'.E98r8o􄜙ir^ǥDsZ^a;l5kW% Y} I&RѼ ]_/U1$Sh"XAB\j'B5KOf|y+o3Dd;3~c@٨\%Ry*i S BÀ^"D%[Ks+dX!'ʨ7\tNJ^D\,׭Ó`hF @C[a0އG d#AB9j ENZj( Xqo+^g)Ent]ݡ;lfJ-z Sk針͠CyԿ 7@rZZsTkiLg͋t !@Z̷s6AY!o9gdAfk1 E v!̯#zJA%?5La?D R3JVMZ6_9ۺGkz6GqaGM?g5!'KҭVFm?=, ~n5Pr֝J4ϜVXjGӉ[y9dQs] UE0bY=!k05wKL&0QgD=P=섄(Q|XmN(}lք=}Ĥ&pmTwf{d) *\NR>3d] գC,&۫ xXÙ zRfc3P8J̇`&}Ӟ~L0Y]PVXe*Ju@QрcO@?1ŝ?ƒbhnslP1Ci!tb, Џ'6^BGgl: c;贏N*GHhDs\"3 yOC2Ĭ0O%F%2 K x; 2 c$u 1: γ=161SbL ~&D6U"'uϲôES~/7E78J]5?S%AXLmA.=Q,?+]0EŲٶZP/"f1}o*)% &r.GbfS.u˞ݒ~=+o)_PKqR'PKҊaF styles.xml]ݒSP>T€ `MR٪=8k,-a,y fcjgtqv/& >FkS$8B*=JpeM9*Mm*xdѼyϜYRm*x4~"{AlD(0`(Mvߎ$]l6b~l҈sGu 3kLQ1^uHf=ic P=qi0BicUvʀtϟJ_HMb{0ig6~dn*S6ifoℤȢyEx:2JeZVhn?x^l^7\Zeb^H c;~'hٴ(^ȱz9eF;I siT(#j>(FGIQ^!T XMCl?^HBCL?"ek’5JH qQ~s~&>B2 ݅Ԝidb&!F~ 6I(ol SGZKUVRlg aW$ PXi-# V^cҕ-6F e#$(EthC # 0(JVHv1O1MGFƶ}Ԧ=t6d ! $cdv}0M 1CwCޘ?`PoMLSp>q ,NK͹`\~$%E>|97~2h, }b &Wߪu$0jpX  (\[} Y8,a`)B˘uѲ  g[e;DZ藝y'p2ͺzz9r)^0f^{lU!gJ68') gi"d̉_ڱmshw%+v.cAwcC_!17H"e0<2 @ c:h(J~(1 U4`ֱ,F)0Yرز}N(egX{7'q7 /hK'J7L1.eU"r|3G|EgHIv B= m= ̣֗M#NL:s6Iee =^'̊S@--ژl]`g& m)&a=t͖UwIzECz/\,p}r9zslXYmr '-Gpdt?w?~rڜD͹BR-} ]0pփ1H @$vURT;lګ6@(k7!W9R:ᵜyCuhVk(D\-칁&bg3tӾ}^T#. We{9mmE$Q7D`Uxg]j:XzTVܨu,a)43θଝ4t̝Kȓ|.ܳ4,lvh5e$9S9y`[:\7o\("[8P4΋'wr"eV)> Zj' T=Z픥йZZYZNnQ,N .;y13{`R1 ^,=L .)K -})KH=KK-=阥ݩ~9T)K -=혥=}V;{gIҳy23ٹT -'3씩GX=SKKLORu9*)ֱTmJyMz 3=,!:gplf8–Vzp7l;s4T9ZGs*vjq`y9L r:sG b9a`*^K٠ޠPa9\\%\-#k|bV+}hyZ mYWYqO]~Z)Gm0Sxpfe \B+!p.TAj_-T;'ãjH-\5O qr9TCjẻZ1CmtI5Z.?ҁ%..R jr ҿ*%..R z~€!JˮI#c@Lʼaydt<2GG έ$l-MK-Lw~$p+PA5;7TrH`|!Z [1 Z[)kBʗ0~M`+X` ֭ R5i `݊ Ax? K7,@o ts/th OX: ~\g'?)WH'@@:}. رܻs0}`8_]"/݈] :Q;;R*.;8 g%9߫F%A0t :YS0seڼb5@'MxNՒՏn9;_4)E.敔MM;P#Bm^I" hNG!*EQC(&gOEܤ^ANPw7lSHL1ULq8(<tpqefJJ+0iax}S/͡3mI1{oȆ>'벆0.)0IԜ/qgqy`@j4jT ~bA7}-^b.Ii!ÉT'l1iى؞c9g Martin Linnemann2015-03-01T17:26:12.312015-03-01T18:22:37.29Martin LinnemannPT10M3S2OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PKҊaFMETA-INF/manifest.xmln }zP& `ID`G*ɶtZlNGx fbSh$siR@U4Qr%i;I~5XyPpFtbъ8b/ Nt5dm):TL0üʛƴ)\ŵPZ t 1a“z pT v^}HQ{/ofOIoD =ӫut0xzu~PKjҠ">PKҊaF^2 ''mimetypePKҊaFMConfigurations2/floater/PKҊaF'Configurations2/accelerator/current.xmlPKҊaFConfigurations2/images/Bitmaps/PKҊaFConfigurations2/progressbar/PKҊaFQConfigurations2/menubar/PKҊaFConfigurations2/popupmenu/PKҊaFConfigurations2/statusbar/PKҊaFConfigurations2/toolbar/PKҊaF-Configurations2/toolpanel/PKҊaF =UȧeThumbnails/thumbnail.pngPKҊaF? Bcontent.xmlPKҊaFqR'  settings.xmlPKҊaFa 9 styles.xmlPKҊaFh 3manifest.rdfPKҊaF!brmeta.xmlPKҊaFjҠ">#META-INF/manifest.xmlPKp$pandoc-3.1.3/test/odt/odt/tableWithContents.odt0000644000000000000000000002116107346545000017660 0ustar0000000000000000PK)II^2 ''mimetypeapplication/vnd.oasis.opendocument.textPK)IIv֯Thumbnails/thumbnail.pngPNG  IHDR߃rlPLTEyzʺ·ŸDBIIDATx[@ P(EFT|?&L9mfnU`````````````|hSlR#o*__^~:YL98vhvkad)MlR1cw ]^͟ 2^Xo%7I|Rc```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````xbc}IENDB`PK)II content.xmlXQo8~_=DHHm&vJ'ړm!&$~6!4]i![fgS:Xa.fx8r8 YDd:_ݱ8&!")ΤLD`3Y "PE À8Z6:k\mkײ6lѢl[G}jǬZP7f4GX)ɾϜyyeYɐOSOkka N5* =LZLxbS,Q_~ kSʊty NUJ:B.(g6H,EYB_!NtA47fbsGHWPFT6o*7rq[q.L<2/]֯OtvxZVPpDcК19a(ʽQ)ёM 0<&cs}c0 ZgNUmƶ\/ث\\_*Ej>P~8:d7sDF 9 liHceIo"K}YhP{^p=Ax]^*ǗA'uOfl5UH?o!j,OrRjv :P~N"BT Ĭ~i4 ӱQ!mҁ )(! I"$MKfߘQ̌1|#6I'uS.=H[+M/ڔ> T3ǭk[8,_ٓO3 [гvD`ҥn`?)͕6q 1R %07~ctp!lfy4@܅|:wW%U?@ǥ VK$kZdgEKa#e>*N Фʋ|DCl@=ie]dрR*yA pd EX(dp`w*1/`ܙ5uKHaE">jn e~A} <@Yً.\6̙tvN4Ej\0 |Ϯz%P r-:LeZlo$utnG;T}.%ψm'uI ]*X/ר6I_a&Lq扃Q<IZ |* i yXYQ $DEɳC嵖 SLJ{-n~T֔M[ok{yH@ x#w 5Dxܵm13rT~%hd?I}52nDS3|/:ffE`R᥽kdpMĉߘ5jկ:9Iԉ3_N؞x160Eb&FjޏPK̔N(PK)IImeta.xmlO0%"CO+RSioc`#,鷯[6Cͼ7)M6BɃ@2Ņ`? *X׀AzU2~%QC$mˈjA.-dKhRږ }'y\z8CP`1Z!m$j4S.M ]i{ 86A.!4xý~,0L\3qN8"ў$g1@w:)H*]>o J4Yzzg,60ҨtA2XpF އ.Kq-ؔic1??Sz'v}ƺ 捺:iݡ(Zb4<~e)sWjhfA",2Ce޽to,PK.PK)II styles.xml[o6~_a{mN-ۢ%;$E%GvRo/>la 9pH1~|JsAXv7Ybm?|ޏ{ǒDxHq&}!gbmw^5CuR,2ZghjPEw6\+?ɡJa6Gʮu~L] 5~O4Gx${vRdߏ1IZ&ZZ9Uzy֊ X &&8XK4?뺔 VU"J7(zuCw!q\FAL]z,lϥS[<[sYKE=`؆)}ͽ*PZI* [+Rd|4; ,;o:e@NX.a/Qc|e*`~JQ-ЅbpG]pSΞȝoQp)GikQ!Fb̌*X$Vk\b0ܗHcIߝu[0BJ]}4B`!S/i#yN%J AKFQ-p"v$q_!%-晞]>T(K5M^m]ү;+)}\zrR1o ZIw=l%^Fn05N`ww8SE'JRR?yE0dyb>~L djx omIh2r ۬& )"R^]Kbjt'}Rr\7lWH0\(Jt`}kphiƹ/˝:ϫ|n`w@C{v(܃`C븿0*ەLŭ nX|r빜"  {H-0)!w:.gZfN5P_ ^eAD K?=EM-b:ND兼z}ٰs6[ %oqsLu?]!dN +~IH^mZCM;L;鿆 K"Po02)i4+Rl2`H4%L*|ڟ{<Ӧ,%/Av_9J^ CEx7E ElZhicrZNbi1{9-gB\̋ yEݻ/UȡFm>4g,ǎH&cnimf0^5!XuQ' nѴC&ڀX&1IW-oݘ0J`a$x";>nqҨ}p邴Ɂo ynx0k`<c`|ۍ50yc/z0^tcƷo enx0^`xu o  |q0}c = /)rϘYBEa5aL]s5s-{ g5kcΰ깞pq9H+Dj='Ǩ~x^jҖ2E\U*ặ!Z}ȷ{yFX s^RRGK$V z]N>D)ȞK<7^,#`}Mu,J#IЊ3'I>)zf>P* 4tppO 8VJ(QO<;uꐼ)B.cxab9uTXߕGS-WNxzL\jHT}T%Cf'6ZO_PKl 4;PK)II manifest.rdf͓n0P]Cc7`@ E.# |gr1F Îv@t_k<4W'w=-ylME",So^w>p@p=U+|PKY>PK)II^2 ''mimetypePK)IIv֯MThumbnails/thumbnail.pngPK)II7 }content.xmlPK)II̔N( bsettings.xmlPK)II. meta.xmlPK)IIl 4; styles.xmlPK)IIh 5manifest.rdfPK)IItConfigurations2/popupmenu/PK)IIConfigurations2/statusbar/PK)IIConfigurations2/toolbar/PK)IIConfigurations2/menubar/PK)IIPConfigurations2/floater/PK)II'Configurations2/accelerator/current.xmlPK)IIConfigurations2/toolpanel/PK)IIConfigurations2/progressbar/PK)IIOConfigurations2/images/Bitmaps/PK)IIY>META-INF/manifest.xmlPKppandoc-3.1.3/test/odt/odt/textMixedStyles.odt0000644000000000000000000002451307346545000017402 0ustar0000000000000000PKRI^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKRI! PGGThumbnails/thumbnail.pngPNG  IHDR߃rPLTE+*0NE0FPQNPPNQZTMKSLQRPK[RNRTU[VSZZ[OXfVZe\^b\`\_goYdqXb|\ofYOoZEb[Te_]zhWelffkkjfhhhelnmiox`pyjswukcwjkxlcqsf{yjsstttytrzz|gqhzhzsw}|{}}rruws~~vz~~u}|}åȬƶö˻¼շʱհ۷ۿٷöʴ̽üʿֿ¾ȼíñʽҿb1{&IDATxOeqTt}:M 6_b6V@CR2*+Kp309H6Kכ 7',R&Y'tN6}KQmf{?ws.ɥH 0` '$ՉB&V[|sbҲ~EVgS+ߛJ/X Ո G}:N{ӭ*{]YOq:^ԘNkM_jd,)0 z۶)ًoyNءK#׸̮H .vSΚMgXvgɯIuMsS<{o*X0cjl 8S{{0F½r՛nQRAIk o$^etwEfYn%;G>E??x|S8 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 03mEj@IENDB`PKRI content.xmlZo61u(!鯰IO&I V f~6HdoS6J}ؐ>~٤Zc.˞lzb[8 YD` ~xdqLBG,\8N2 -`g7Og>C?C) }bM2-Bn`7oP¶h1|d n#dQ %oub9d/ %ǓH[u1f|zսuaWjTb5pkϭ)hh~ L)[ K$:b\e4aEo,jrS${Bx}O-BN4&1Vftɍk^p"1o^xhX+cs*Ӻ0uMw Qg?^_h& 2\݄Ι޺Zxaݚֹ%2]V%PHg҇ .~[N_жEK&Jdg|YC1[e0 ػJ&ǜ.D5oEhV=e',FL+Ǩt4 cN*`oO7©x?QBzxU}a(Gj vPn,(NC*GueUO3 e³- V+t8a~Mހ'3>д&Y"'2_#NtH7 5}Dz4Q@GgzGCR srlTi4(vPSWlͫ*GKua!U1 +f>ﰓ`L`e{UTmptRA<Iz3Ps~2%4UUU1vu)˟Ӈ`bLZ-fٻ;TRޮF(G|||[UVd?7U..JroLS j+;__*sC@*fko>T7fr.K"ۆ!fSe8ៀ'])^ޟ14&LAoh" `2A1-YW8c'}Ą>Xys.cCm澡PLފ76+]7rmQ>Yؓۛ#6]Gc0ٛ7ńGL$j3&Qf LEͤ>:dYm& {/W  27=(ߢ˾Kڽ4)f8I]&?m| oRqwrHD9]6:cDS)q`d5y;BR({H?'O!3X ,~i#4Q!MС((!i*$K'_6Q% )KZl!N\z^4)#}Ω%G[XS=*6shyzerH<}ʈ+}C#3i~"B&WǧWO .J(/CCajz=Mȧۻ79^E~6b5OCMEfP+\~QT6;R#k.Lhx'4V _ݑyPFK(ƒX[iru,`"ʄ~l6BcKpj+/}3mhaO_-3&}4z,5y!>zc6^oQG!/]^lŝξl'N䘎]ij"S?4v<{Tn6>6D{/i08}~I)̂L?ES 3QL\R`9I0^zޙ5uMiIaF".jn e~A} <@Yً.\>3h`hW_udCA?tGF440IH܆8:CmJ k@I-ґw ]wUp\PR$}-Nʯ\28!ܵM\私bo`-r&Ktj^f!iA}IQQ#iK`y%4}Ô)R_ 'rVk歷n㭽A q |#w03x5m5zU~!jd7| 6rrDR|-/Z#fA a2᥿{htM$_ԩjկZIQ׹ԊLs-=; t jGC a+oJ~ XPK*xO(PKRImeta.xmlKo0f bEEVDno`#cErBe,Ut(Y+[X -b[Ar6>)ɲ |T#%8 oVZA>"4}/tinm1r ex5|, 00IHBb<]#nQ@!4qHYlJ!@tf\~ _QcN"^A[ .AskS<ɓoQ&awORu]zLo(5J8%ϴek%FݲSם{(ʚW> YfCU349/xڈEf-u8G]چqsEGE<t,PK=2!PKRI styles.xml[s۸_MFdq:i3\u7 I) A i˧\=$~`?v .Q0yBSo_~ $˔&<,1rwA%E%)9rɓ%-p6RZdg}%--Y?dS}/`ji_Ck&tW N:Z2?[΋hɐ(^,#I5 'X&d3,+G0i樯~V)v+zC8:jO4޾!杤;Im[M/@}o|%x[P%myJQUꎣh:R-Y=#3=9˞,1ӝ 4G'ᦚI{{1\Pƍ" ]/AլNVPg2PG2y,:i9d穳q4<&l$MRe״aTC$Ie2.e9.{$hH^Un|KښrF Sd*- >1P^fڑЂAA 78IA {R(dbk`A-eTg`tGAx 1"ʩ>PMasjcr'e+~bo#arru>v׋f7)4-k'm|o=T+;6]gƳؙwʏNb_R MBm5 uޚV\$~qiSׂ_J!~eH[~1>7Zn߼-ȫ#}[Lλ;rkE/ȫ#J,ֿKgW.\rQ#3:}@NsS*(IPӌ=I#&y樵i.79\ *; MJHI8Nil3{T /0\s73erdKYȏn'ݧkck. #[|A+p{JAAZ1S%+ *0-NL$y^$EE툟 -a)T(ב]ktP@'djcqpYv c(DVCy*W BsuaketZ*G\IAĵ6a=satC'wԃԍO7o\;փk`|0y01]w܃܍  7Ƌk`<WNc5]/t|nW8cc7 Anlsq)k`֧kJ2B\UBY%֍Z&/2j-^ڊwBb5yS D \xo=aښF2EYg}!{k='IBMǺ07:y[;/.L#+Iϒf [è;wWmf8C^gYg ؜0LwB1e|ߠ1ܡ8jJ\40fxLu{܇RqByjg׵R>("+[-'H<7?F6 ViG:eMءaFEO[g˙t?rPKc)+ >PKRI manifest.rdf͓n0P]Cc7`@ E.# |gr1F Îv@t_k<4W'w=-ylME",So^w>p@p=U+|PKY>PKRI^2 ''mimetypePKRI! PGGMThumbnails/thumbnail.pngPKRIIreO content.xmlPKRI*xO( h settings.xmlPKRI=2!meta.xmlPKRIc)+ > styles.xmlPKRIh  manifest.rdfPKRIN!Configurations2/toolpanel/PKRI!Configurations2/progressbar/PKRI'!Configurations2/accelerator/current.xmlPKRI"Configurations2/floater/PKRIM"Configurations2/images/Bitmaps/PKRI"Configurations2/menubar/PKRI"Configurations2/toolbar/PKRI"Configurations2/statusbar/PKRI.#Configurations2/popupmenu/PKRIY>f#META-INF/manifest.xmlPKp$pandoc-3.1.3/test/odt/odt/trackedChanges.odt0000644000000000000000000002557707346545000017144 0ustar0000000000000000PKmaF^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKmaFConfigurations2/floater/PKmaF'Configurations2/accelerator/current.xmlPKPKmaFConfigurations2/images/Bitmaps/PKmaFConfigurations2/menubar/PKmaFConfigurations2/progressbar/PKmaFConfigurations2/popupmenu/PKmaFConfigurations2/toolbar/PKmaFConfigurations2/statusbar/PKmaFConfigurations2/toolpanel/PKmaF@b11Thumbnails/thumbnail.pngPNG  IHDRzAIDATxAj@@;y&RKDbb~E[EAM܏8_oM}PAE}PAE}PAE}PAynD";n07ODi-Hj$wc#';aL}> ITw-{T*?Aqm*r~QqUM0<`'ƶ2,89owF]v6a$ɝ4Ea SmyO_wi]7ITt&♏>N oIm>0Ar'˃`FLM{hugX<21[ݨR Գci5FS.‡b?Dk+(/Lh9-pi37+KK| Pd>~iG/z#ow> 6zO+Ĕ}[ S<0>y޾}|f`ǩl@# WW#5u+7s2qqc  ߧnuFYM4o#/\iXSpe⚚&>#qi`fq7Di_ds!Řa`"ZQZ\<ӸX?m׾˝/tiu5e$D!/"$3[soej,c, g֔ i ``lڌKrޗ<50!65wrI#Zr566ӆ%i r͸daͬk}CZb#& daq!+k1o FLɜ.hchXFI0Z#$t:Ek5bA'h\LF5~bA'hXFY0Z# t:Ek5rF0=?绨!9™L C4#- k-֕*`Zu1*a>W0X\-+aU)tƸtj]h J,5Ƹ4j]h R,WCc|#\Z, ?zK¥^Gpi_\iC_>,?zK=åGpiW#\Zɷpd5 Ń Ϩž- )0{/P4|>v&׋:h@ eՄD!]'p1"B`KFWcǝtw qRXh4zI`a3Ϋ]QzqY<"L_&R])_ G b xV uzN;H3jIw#ͬ9GbȊIv:oEI~T{.ee^{>#ɨcGwK/qOFʻd#uap |ZixIPKcerPKmaF settings.xmlZs8~"wBBۻI4$0@ {jdG!XҮ?oWe"^@iڻ<@q9&W8ZY4CS-U _{-dd [,kʕ_k/6&m|ռ~l6fjr燪*fUb3zw4㷯 7Xۜ?ۭ]{aj5lݯkiM06#fk7ڇ){q'tO&y\Fyq=1.FQ|A39`(ImTɎ…;``񵄥5.#XBkPZaE[[FQzm'߾l|j6'K>\\$ZuNBG{ӃrI;h &dB,Fu 3k闧J >WϻvР*{HG[X7F Ĉsh!S#LL) 3l41f* HDyjKX:!!Sl() 2r: >h>KhPFIߕ,& Q Bq7x{ TV'n;&3&:T=H璌66R r[/w 1l5ᒩAQꈣ"*R7;rff.4w$5+G "?3F 2c{>*FENn2PbħNA(\b; , Rh q%oƆv0p7Fi/.J|!p[;N&CZD]ףWtALq 5~uiIasXdkG 4@E(ʁ1{Lܬ/"-8#3_J4y;ێ,4+*--SrI!PeI"$!y D 5[ wVNՖd)qI*Ӛ|5Al=: xD._F'a&SлZjגօ.2oAI_s& M&nf;Y੯-ː'ESUWnȍl ~_m@8sSl ΅25`h0F b_0mѐ2y<)(2G_t2bͽCI(&)>V@B Sw*lѐ]9JW[q|sPmڊx@"zNz &KC1uIC!(s?X[q,KxYh3cm S^Щ,$mo, BWߟ4f3،$^ |>dbNeϸ\g}L;K (<0 8n=TUkx^iTQ6sޑޑ+(]k0 ?Si qж/[Q{QirnYR peõMs<KܛFM8؝FvNq|8 LTptږ'G$N,(Ў]: |{Q`]Ůdጆj`Ƴ7TOCqSv;9p'}xi??p|,?l.X_фD<{{SQRdqJ3V8ı&l$9b)j^戼~F K9\IЃ%+g ^Nh.Iqpsvp|C}y!F%<-CZ(Z{N_Q >d#K򸁧R!!1]|5rƀۧ99SX XHDȁeX sB>egt|>+D*<6^6xbD~"BbT'+(>:<ΊhDl#H:l!ߧb^bni)OF Rj@at{ j)sR4R #(e|0 ˙i Çb8!:oP%mӀE\0o\о%Eo|մXP^͂~ΊBFCwz#]0w+ޢ,tҌ7Hf 6HaH[X5'V-U@$jk)-v%G:Y߅)֍3_ٺuqРɼ;{)ʒu|, 6.HL]l0E 5c;6buOjN;ƑNt_FPrܖrQA$޴?0r%76JH]Uf~ݩu((*;[>_4{X{-;'17d /7h 'RȓZs+T?G; L>C k~%h0S6vT;&V9G,~Ex`1z\xʼneI40 DAnJA);M,*е[V zEk?B}E=^#'<#_Zs谶.ZNi4ϰd]u5;&J;`oEmA|WoLD"r)AV˖6.K@A$ vPꆭz|z=D=ŋ$yi+/SٙϫW#reFUF;;KqgÊє2$]3ǫS%3c5a#ln{AmH&I+|_IkZ")BYE'=.l [{B;?=_M|OkRB֫%צ\⠼JSlb)&Z=So7ݟqg ir׍TJX|c3vtu$,5%ȑax.}yh)ʶ cy! $;|14:R%nL܋?-$ro2{^%y> :i҇ ~[kB>gy{^=nEVdWv2̚D{J} .YBJԚxG#ǪFn۴kTx䀘M[Xjul|0 NY*g~AOD0B=(#kH&Fl@b E2зTX%}CHR;郭IJJ 7N(4Puli4m LAiRѴ \ӣӴ=( ̞\Sk\Rj愓kzrcNgM9~)Ms^eJEӂprMOoLLʔ9䚞ݘ'0-jz%HoLӹN%hN8-T=cz(S*cT]%gm,+uI͙HYrkRy e ˠ$[.-=$Pu hc֠\"uNFw=GgU;\E aa*^e۫pf7FizL:j<0͎9\;\%\=k|^Ϣ;VIwךkIe+eY>uY H7 \]l\t%eiU3C*H#T㫅j4@XV\t55L58>v9yjH#\W `YUNH#\ӫk6i#XB"`ͮ, "-ˡB"pͯ14P\vm/hjFuud44 7,GFNqKYOp%).0=H^)wj~nrѳA7CXb5`K!%X` ֽRte;$`;5>7X2H ִ#Xsu/aԯFIoX*h ٛ{a&`&`OJn+X&@@nQ6&Y[ݧUoŒX?5`I!|P.Dbh?qn \_dY>^-0_͕*p"ko@rEw}ƀ k fNl@W,n ЩkS-V7} ,/qj" hJʭ:2P-\m_5@E.Bt<M;yD5"zKb8$\z,Ftn`|-RhȘre"+e#N, WdBam%NLdEX\׀⦞ P\$86D*xj-Tb̊EIL/=]KSAPv[QuSY.,`"y#)Pi^8`:azN~ \'G Cxw HVJTJLN%*B#"`a(05 G^Շ5>v9 Oml8F\AB/Cʼn.́iN\O 0̜SKKAK$* y9[͔.V)&nt37ž=u| .9!Ր#_)Y JCe3*kł*PK֡e PKmaF manifest.rdf͓n0 Martin Linnemann2015-03-01T17:26:12.312015-03-01T18:19:27.25Martin LinnemannPT10M3S2OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PKmaFMETA-INF/manifest.xmln }zP& `ID`G*ɶtZlNGx fbSh$siR@U4Qr%i;I~5XyPpFtbъ8b/ Nt5dm):TL0üʛƴ)\ŵPZ t 1a“z pT v^}HQ{/ofOIoD =ӫut0xzu~PKjҠ">PKmaF^2 ''mimetypePKmaFMConfigurations2/floater/PKmaF'Configurations2/accelerator/current.xmlPKmaFConfigurations2/images/Bitmaps/PKmaFConfigurations2/menubar/PKmaFMConfigurations2/progressbar/PKmaFConfigurations2/popupmenu/PKmaFConfigurations2/toolbar/PKmaFConfigurations2/statusbar/PKmaF-Configurations2/toolpanel/PKmaF@b11eThumbnails/thumbnail.pngPKmaFcer content.xmlPKmaF?9%,! settings.xmlPKmaF֡e  styles.xmlPKmaFh 4 manifest.rdfPKmaFRs!meta.xmlPKmaFjҠ">%META-INF/manifest.xmlPKp&pandoc-3.1.3/test/odt/odt/underlined.odt0000644000000000000000000002442107346545000016352 0ustar0000000000000000PKaF^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKaFConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/progressbar/PKaFConfigurations2/menubar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/statusbar/PKaFConfigurations2/toolbar/PKaFConfigurations2/toolpanel/PKaFeSThumbnails/thumbnail.pngPNG  IHDRzAIDATxъ@@фMq 5(M |'}|4}PAE}PAE}PAE}PAE#}Lζ,n?9 o:xֲvxT$֣c]We7M3^v;anB7|j/}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE4T잂bIENDB`PKaF content.xmln6} CkczAI[ -6QTE9vv.X},'-ŭFqD9xzv#ln .a;x _g.wfpx31SscGCЙqkE}>q;=E=GYo7@u_{A{> ɳ(_& mv;k7xԎjӀ4rS,;؉CT6>i m%JU.=#q6((=7"c#<ޑP)`rcAe0l_(UN@TYytP 4 wmޝ4$A9i ^^n`4M'L(pڪ:5naӿ;졃19ol&B $‘N<Ĭo@kƶ =Zemb\7ٰaᙏ>?Oχ`68 r$ʉ`zg,QVi  slءbFm iqO=8bkDFv#)1?%9Md*4 d65YwYg1;"Ĺ.  2)?|'{#_ L׷[wc8'/ŗ9tO"%1Ƹ E3.Gې@3j'ϣX}A(@ e,z0=H. Ąqlp{uHN^t*oLF L/BEo@w7"p2*L+7@f1߉` 6mؔKr\59UsQs1/r126)q Lvĕ`X8rxE:n[wz|+^n)aOUr1O߫˅m)_V?Lf:`}$ DŽ)|y@yp P +r-g&qQSw50Ϥ L~tvz43 ;u55 քA082ԞJ|,Wcc'U(^ [ fhMոawqY%q ̤ȺTyԆ媋+ĥ60]&Vأ6,7]&zI\j3Fve*r=j2wq7(KdhChXFH0Z#h$4Ek 5bA#h\ڢF5vbA#hXFX0Z#h 4Ek5riF0.a~[zخVd?7lZ$ZKv@+O9,ʸ]e +Oe(=Tƕ=tW͊DeXyDGa}2,?ZK-åGpiU"\ZhWZǧK-¥Gpi5*\Zh,?EA]bݧAm3L/ U\"|L "j&@V Q^ȷ۔/F8={0X|^:Ck?x?bi'Uvy 2 w v/Qj<) `s㄀p0q f܁m/OŨ!sB"O)(&* hw" meApF7x{ TV'n;&S&T=H璌66P r[/s 1t5?]djuxuDa,Q&`\Lٌf.'fD[\ 5WN2n[d4&l BA|BϹ?Tl9#TWarDE7cv;Qa2~e4Eq },&ZD]ףWtj(,ӐD/>.9Ih, Qc_NY_DZqFfhv0,$+*--SrI!PeIB$&y D 5[ wVNՖd)qq"Ӛ|5: $ztX] )` 6?O:L`kNMPBjA^KZȴ%}͙20SrM1Wge'D2/lMU]ʺ!7f)2+}aL):&KLv@O=6"eiLQEF/|]_Ɉ 6&9˖'akt0NYFdx1 ECvw( _]l9qj+.Vԏ#@v겞.΃~п:PKV}*,!PKaF styles.xml]ݒSP>T-{Rcoƾe+ &g ?EyL%Ax['C<@p`%m-6 2H^-B8Y|v8LDTp'tZn?1Ib ֡>(U.Wp}5pt)۟O}d)jx/@R^ >;PEs~4>hBAu[IP!` %E4s#R6Hc]5 jz#2b ,Hן6^W_TȟPLҿ(x9~4SƘí{3o1J/&wBs>eU7l LYZMg,B"bF.t|5g1ZIU &,Lc2nH9:Z':>2OS B6V&-PJ1Ɇ$oMFh gEaB6yl: |!࿏F|?4 <1H1FHx$N]qfb0CDQe{$$%ɒ !x kL0Rۉ3o|M%G1}f~IĆJ:MXdP$4点rAAP߄Y΂Qs/КD_a֑d]hVl,,`oo& WHf wHH@XFX5]}e$*k9=v%G;Y߅)֍s_ٻUKI7x*,'ߟI+IJc$4A QR'>c3!JR fF8[s cr_ !7A4At_RkACQr0Ch ߠ7gۜ;հe5J ŀbsek$fcFlEcD)FeJE-"ʗ>sWT$h'!ԓɧbhamh|q:b%fr IC lK{S #K9;wR cүDa[E!,HVĢ@fNhRYや!bߜyQAl_h2%Rx"%IUgφv:eiJK˔=K -=옥bg~v3:ffi\R*愳[혥%biN8:ei ˡLٳ YڙCR4'ғYUiP{$=혙SKJМpvKۃNzh FPZN1>I?u,XېI=5)}K-uGg{Y,8[*goh:aKJ AH ;\fT%aa*ʾtTpvP8{$*QphjxIw(&p1&wT#k0h"kzed.YqNJc-BK"-h*"ι"|W+ %2B2 oT]\u%ekU C*H-Tjh9#u",^;< p,\#k/myjH-\7 ׃jk2PFH-\㛅kbM4p9PH-XˆEKpH-\ۅk ZT(D6RhYUWGALȼaydx<2G^-r 78.0=\+{9j饡CE㫟 QbUߋ!o,`K!%X`M. ֽR>te[l {! ktieqKƗ^0%iXadt2zf>^30{0\}EwͿ ;_; JI7 E:pmǎ,^.yFelj>A"7q FtpW]5X9ߗU.y4,0_N4*p"Z [ټ1 %Ț:ֽmsܨp6~t Ρek~Sn@WR;@ryMkNǭ#\7-;Btd -CT JQD2r;3{oxYύN!SpUY&bR}ڏF#đ``p#PuÈgҏw譓+)@="5WHi+Ϧ7y3wG #l9^54Iv)PF~Ngj3̻f&I ʡ&I C]OI>r4wQs3蹘 Rإ`Hq,q[ =); s 3g'/UxЂbA>툃]'nOj8ŤV hه Martin Linnemann2015-03-01T17:26:12.312015-03-01T17:52:49.65Martin LinnemannPT10M3S2OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PKaFMETA-INF/manifest.xmln }zP& `ID`G*ɶtZlNGx fbSh$siR@U4Qr%i;I~5XyPpFtbъ8b/ Nt5dm):TL0üʛƴ)\ŵPZ t 1a“z pT v^}HQ{/ofOIoD =ӫut0xzu~PKjҠ">PKaF^2 ''mimetypePKaFMConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/progressbar/PKaFQConfigurations2/menubar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/statusbar/PKaFConfigurations2/toolbar/PKaF-Configurations2/toolpanel/PKaFeSeThumbnails/thumbnail.pngPKaF6|t content.xmlPKaFV}*,! R settings.xmlPKaF Ɇ styles.xmlPKaFh manifest.rdfPKaFbk8meta.xmlPKaFjҠ">&#META-INF/manifest.xmlPKp$pandoc-3.1.3/test/odt/odt/unicode.odt0000644000000000000000000002701307346545000015647 0ustar0000000000000000PKTF^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKTFConfigurations2/floater/PKTF'Configurations2/accelerator/current.xmlPKPKTFConfigurations2/images/Bitmaps/PKTFConfigurations2/progressbar/PKTFConfigurations2/menubar/PKTFConfigurations2/popupmenu/PKTFConfigurations2/statusbar/PKTFConfigurations2/toolbar/PKTFConfigurations2/toolpanel/PKTFRʱ::Thumbnails/thumbnail.pngPNG  IHDRg?IDATx0@(WUjEst>FR$ELR$ELR$ELR$ELR$ELR$ELR$ELR$ELR$ELR$ELR$E,Kjyk_߮_8_#dIBYQXso}^kJj?W3 -lꖤ8IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII1ƜۧxI%Fu"&)b"&)b"&)b"&)b"&)b"&)b"&)b"&)b"&)b"&)b"&)b"nQCE^IENDB`PKTF content.xml[MoD+"#q~&+>RJV{ 3ff\'8H,Gĩ%{MXi.;=y6 %0:ZNj`1zq> ;a1pg^b*mQ 6@>C>E!}Yi/-"<d]e-Q})sUVXHjQ}*D`d=$ox1 f`M$t'nM^b(sq1ᶜaC,Q]S$ZIEj){#뗷uC$59r@8;]RR1<Hʏu.?#"C$m.Дf-WR!%麍>@ԋVL!0_\ 9\m\ia6d>G.'iG[-zi!1}{GsDE%@pef`kdG̅6>.rV b I> ,E+p2BM8Ml1ue*v@GYJ(m Xŧ5$- pLQ txo7~/, :m[h`5=rmĤTwZMi>E}4h.VF^iF:ecfJt@x!A^B<]Z&L9%w J;2-حA-VW X6pZVH(,ZցZ805/o,^mýpzO[( jc'G^|\90f)@#JM3J¦tA[NcQ6e@(Y͒YBr"|][o3eef-Zso ~ꇓ/*c o~y30+Ѳ꺞nn_PK4Fwv>:PKTF settings.xml]s8~EכN$M8%$_+LJܜ]$_pvS8T*r/`Ma4tNuͧ%qH:D)'0J VXpHdEVy]Ieo4`/7RQXLSr xvuuUL@]Φ+ =)!=!c&%v^*ٸpdh +9{$u"f$+IޤVț1#AGKTuqhdCxjE0w$gL>]|0Ix``ĞaF`9%n~4<= S3GȜxʷtX&ƪTLp |Mn3Xxeyo2Prt7IݧSw,ŗp?qӺ͸8,54ٺ; yS.v!Wbs^+>/CU>ݳh"XANtjBUKa}Y+3xD \=uXg[<bpA]taOtCփ FHq8! ܨ?l"jڀּaIrU[,U0]401{1 4mx.p|饪!b@T4?a.ƽQpڏV=uCJZl ?:a#t=xq@6 4J.QYCq}\ߊ~Wz=Kju2t= }6hV8A0{~1j;6G GNK y-)?>O'ۺ Q7rnT|;cNK~E槶3  n`'.(~)i@{0E;4@K0*ZYutml]Ʃrw5 lVv0^ˁOS:Oa-V7KҭZDՆm?=. af5Pt՜R<͝=,۷jga~̢`0gaϓ{B6qjtԙNaaOˉZz P(ں۟@'V {IwU$v)vɌSXT/>rV;Cv'8"<-S}.fjs6H g[XLWpM)%$/b3lf Mh+U]ELD>gta:Lk1~%3Wض"B2I^a` ücB۬ZdôޟVPreD()l4= I:%IQ#ijeJ $H-!⡩$i!B|bctv޼X]@ֺNdt2F!Kz-]ؐD0$̺1sUlTr( c BR{s!Ap"3cO[3%(>0`J3!qbA>3y-œѥEz1i@ٙ, `v|{vp!6#AݐuXo*Ͷ̂zA5!{SN1/9m(7u=0ry[YqyPK|lW'PKTF styles.xml]ݎS@/dK{Am4nZmeeQLrQ((>ZP%J&eزbC~")O{oq"ah6r\0r_Fk{F 'nx= #E{U5V:kG)[uXP2%7n36Ȱ>[s]p#ckZYi1cigYc.UЀy5|֎ǭ{p`EN:b=v ,_B_cEe P jHBB2@ӜCĂ])nG{hD >0Ҙly>0@8OPI6vS/ZEqD 5ƣ O51Ҽ) ODpo^'*{*F".1$LhjM=󀿍<>{`؏0 ogÈ#ILAJڦAjӊi쇧'^vK|KDуOFRIYk80 p"힃2L,uAQ4H5tap\28} a s+3 ш.s%v#I>h"krbo$# w%#%aBBD a:0hԑ@w#Sy:Y0ŋuHUX}'M4&-4H9|WO%f^B/i+빹;sҬI ;i拉Fیe)=v:@卟e|Ϋ]?^ǭ|ؙZ\C }5])*kz1*Tg^|`,n~V 'WL1l t(fCzDthѠǺ(9 y dABIvK¬X)*"+X,+Ɇdp. #^\n udX%b JJNAt,rk-hr';K'tZpr^G*eμBBw 9|BIS4DD"dP:2.%Yr>#wlaGjqvuVdY'T;9B"ػq7[-#z!Gzf2ޢG*f:)?*M- 箋M'Oֶ#ARL]Fe}֡VYV` #S+ˊZ3Љ(9U͗_dzT!iiݴh:ItcDeBzQJK#mz _d')pPi)B:ًzqO:N4M7 Nɿ&' |;ͰsJiY~(>%jS&Ҥ5%"ti5XTiYF:8C(*  QQm]4IJCa'My0:O"VIE+Kb* IZ= 2Uh>sQh "PR}}QYe.O{"Q|Dj){ʲ_(BMtIgkZ/!ml0_j~&[5.>@+YZ^`oppD?IGͥH]/?15`1a8C4rƒRN*H{O7_*'6H)v|[x PtS:kFPop+ >)n*pұ5B#dMxegYӪ=}wkRaK+}W^SIOTYOTEO^˞^y~ŊE㹢8_ZC5t X|v?<^X=7X=;-fwl)S|Kp.G4ptk꩎իRmuyWiLU[Ʌ9\sYn2n?xܬYMmg5Zg3mb>0&MѳFj_Xɩ;_^* ˺ZU)\0h-]F ~x廳R48 lJ7+Bc y ;R,t8iu9)U6&+X>rڴ9Zt؆J芫ͼJ=Ē fy&+^ȥ%ѻ.kGT&~`RvIjxqi;nU%K}.ӑ\l3\+Է3`Vw f4ބZ\u G[t/hqGqF>TSP;qx\ WcckT񩥩rj<N9;1* KŒV|_5a֎ײL*vdX `Ҏ kaJ;25J;:ʉ/J;:ʲz>**[^ҎkrbZ]=BƊbU]Eb+%ۿ(5luW D+|1ъpL"W D+B{1ю^_PQW7g?7뚺z? TцnP -Lnh&*7~A>ڠɭmڎ6(uctX[tᚖ&*7NPq:Ma-LnkrtXZ:wt^[676^AV`o SPCNv%cQޔR9 pqBDz'z}jd{W"ւN\q>5u et&e2tFriR)BuOzU'iӵ ^tw7MԦ86Y+lH2m~!AD$vedX Qт`o %B%UX jk4gNwǓjNq~d {@GѰ|#d4KK䏟wD&Abph_P#c2L og-ZҤGLz$6ĻRPg'Arr2ş֚ rrv8X?, Ei#f,2R2ӟ|&K$Hýp?iY6CRaIwvq#,[zi* [Jx)mI٘zЎ $Ę&+7K`MHnOPKQ`PKTF manifest.rdf͓n0 2015-06-15T01:42:41.10Martin LinnemannOpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PT4M47S1PKTFMETA-INF/manifest.xmlAn E9Ŷ2YU(Nz$,őj\5Vv lvggh%s3ͱ&Y[vL,ΐǼoؘ6,,S}Ҿy9?&]x2\O 8Ղ谽~8&(hX^cSҲ7Q~tvzաn^f ϪFw@j7PKM MPKTF^2 ''mimetypePKTFMConfigurations2/floater/PKTF'Configurations2/accelerator/current.xmlPKTFConfigurations2/images/Bitmaps/PKTFConfigurations2/progressbar/PKTFQConfigurations2/menubar/PKTFConfigurations2/popupmenu/PKTFConfigurations2/statusbar/PKTFConfigurations2/toolbar/PKTF-Configurations2/toolpanel/PKTFRʱ::eThumbnails/thumbnail.pngPKTF4Fwv>: content.xmlPKTF|lW' settings.xmlPKTFQ` styles.xmlPKTFh 3#manifest.rdfPKTF r$meta.xmlPKTFM M"(META-INF/manifest.xmlPKp)pandoc-3.1.3/test/odt/odt/unorderedList.odt0000644000000000000000000002244107346545000017044 0ustar0000000000000000PKaF^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKaFConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/menubar/PKaFConfigurations2/progressbar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/toolbar/PKaFConfigurations2/statusbar/PKaFConfigurations2/toolpanel/PKaFŊThumbnails/thumbnail.pngPNG  IHDRzAIDATxJ@@ +²%48r1b$'ޯ~,M}PAE}PAE}PAE}PAelooo_}>tk>/v˶o)fe?Gq5 9_˿}`>\هqu}c+7o>+1o=fq&YUL]XLWM<1ڨ>w8[nߝwRwA/؁˙O)Ki_hx8|vm]([s;dk/OFY\be]ǿ͘geb}fkӇ?/>[w+t帮zFx}lֻȂfϧMO'Sokz|9bqSʐ>x u|&Եܟ};ޖc1ܼr Vc>̘O ApFͧgy<"e O0RAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PA`WIENDB`PKF7_8iC? content.xml[n6+*О$Yn mQ` ho ZmeY$ˉeq``a^Hf87 *2(ؾ۱-HB!2؟> ۛlB8hƐ'Dߖ&|;edLG|L@ Xc@RzqvuoWnisp;b k묰umؙQY8=bmb/Hƞe.esF^n+\2ЃŸ绾Wbc(@I)dKx*_[wrPpXQ{zhd=Hc~ ,nn*d(iMSJT>yN: ^xpXUƻ&q'\6_78t=mk=@ۖVyL@%'E ^AniO)f<є169sHd w ]I#$B9Ö@*,}( D|;$ S\sSr,nWRANjV~Vd3,J^ G{=ɉ6>PiA6]`9tqbb <}|r9 ryA[txΙLY9QfWg"v~sF1rͮ-./iRϦPŒorE2v: 9"rZ|-aijpk(-8j(rƶr^yQ^$V5 dR[tzk@dm%Sc#JcE~Un?.nv,P 4] iIjV0AD~f!9ȱ 2c[>*FENn2PbħNA(TcOvZAX0KAu&{*7NQ)0|36LmU&P[1JxQwQ ܂p0p%*rU bKp+NCNĺ'\V<"\h,B)Vď3|8ef}iRۡVTPLqP%T?@%X" O30/na'X!j81JW[6:^@ $pOkZs @I&X+|Ql,L`kNMPBojA^KZȴ%}͙f24SrC1WgUェDB2/ClMU]ʻ!7f)0+}aL):&Ԁ&S`;H2}EC~|&@l.+. d{e˓0%QLR:}h&$)w*lѐ]9J[q|sPmڊ{?@]EPyϯO/PK9?'+!PKaFl.. styles.xmlZ[o6~_aؾѶd).L0sAKJHʎ!)JL]y` s?>l%BR^>FtMH򌖛??=_iJO낔 IgDN@KK|jQ.9T.K\TWtBK{i+FXqK+ kYa3wc5/`ꋯX'КVg(WZfnrŋbfiWՂ,FfrO-cӼIe] Vȫr4i0̇ƻ&e <>QK@ Z>9筩Z&17ogǽ;ɾTᱧ'Sq^@xlu:n=n&HŅj Y/PNҦW 6^X7"˂` R m)}wPN㿘hMV'We$e{P~>rYM sKAQi/bY@G<#ft%h@GG5 mHI;*-%(ϩ9*R-Y3[S\ɟ%J|+.ZiR566>fʌq͚inL\4oUrF( Ț/wxLD7ߥqw6Dh>I q#* )A)qsA0ӬI歶/=f3Vk@gsʑ֘I/*,Β4?µznY1r60f0tHEW~m[1 >h]nl!+h]}tZ^5qI!!R̢8Yc5RfR^J@8K{|Dt;։in-wfG۱>=04洯%[yhc?:HYrRb,-&-hkx2UUN  $QHRo].0d+Kĕ^d\Yo]E\臜 %ü䈩ecyEn+^acW\Tq5J ~H]osX%WB*\?;/BY4X̃Xμ4T  RT_+CfbPbJ74n}ŕ*{!M-Ml\9jE3*m0KgdbL"\1<4ɯ]{ڭ Kq"LV9:vBOL!1 P;={dJٶC1Ӂ?#ϵn`tM4NQa׍k-b! =O.3ƥ7c^_\ 2H1sF|@y|.wnrhj+β07"J9rXȿIi'%g'%pb<ǃs%y kקO5&{)!`&=v>刣Bsp+N=@=<).|OD=Fg -u =@~I\RLuwW@nJ}Rcit5< joG!x'{߹Y8f`d:ࡁ:HB:wA}Ҏpqo ~٬_+.􀶄#}weH? QzH[ő~wUH'MH_CҖpq p="2C8wЖpqUA}3߆O9^!ǿHx-tS lPsC\!W͉w[j/楫/co[Y};BRfCҰNF zļ0Z,w!t% ڷ 0dh>/@'M#˪ xTEzK~1Ƕy!]RT 'PSSh z *S{Nar,sx}6q_~^!:ۆ] ݵhwsDŽ=3Ɫ.#!X:ݚEcf/B著?B?PKl..PKaFh manifest.rdf͓n0 Martin Linnemann2015-03-01T17:26:12.312015-03-01T17:36:15.04Martin LinnemannPT10M3S2OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PKaFjҠ">META-INF/manifest.xmln }zP& `ID`G*ɶtZlNGx fbSh$siR@U4Qr%i;I~5XyPpFtbъ8b/ Nt5dm):TL0üʛƴ)\ŵPZ t 1a“z pT v^}HQ{/ofOIoD =ӫut0xzu~PKjҠ">PKaF^2 ''mimetypePKaFMConfigurations2/floater/PKaF'Configurations2/accelerator/current.xmlPKaFConfigurations2/images/Bitmaps/PKaFConfigurations2/menubar/PKaFMConfigurations2/progressbar/PKaFConfigurations2/popupmenu/PKaFConfigurations2/toolbar/PKaFConfigurations2/statusbar/PKaF-Configurations2/toolpanel/PKaFŊeThumbnails/thumbnail.pngPKF7_8iC?  content.xmlPKaF9?'+! settings.xmlPKaFl.. mstyles.xmlPKaFh manifest.rdfPKaFbmeta.xmlPKaFjҠ">6META-INF/manifest.xmlPKp pandoc-3.1.3/test/odt/odt/unorderedListHeader.odt0000644000000000000000000002330007346545000020150 0ustar0000000000000000PKqR"T^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKqR"TConfigurations2/floater/PKqR"TConfigurations2/menubar/PKqR"TConfigurations2/popupmenu/PKqR"TConfigurations2/toolbar/PKqR"T'Configurations2/accelerator/current.xmlPKPKqR"TConfigurations2/statusbar/PKqR"TConfigurations2/progressbar/PKqR"TConfigurations2/images/Bitmaps/PKqR"TConfigurations2/toolpanel/PKqR"T manifest.rdf͓n0-`zU+5z{xld̒:cM睙wlS]`ZU(P\ <6c%//w5(j,pRQچb}ԧ6%N8%2.8;flb5rPS R?p|ntPYbG 1JÚ㜘^1Gs fƗ1ܽGimw}n q?PKSIPKqR"T settings.xml[[w8~_{Jn6$=@JHso@Y#IS.->=coF͇yN^Xtt:Xmq<}_p 2jQv[ =m5B=@ftE*WU] ʖWJԹZ.fwwh&ruu+"e/,|qvvU^~;|U?1enen,JI~+-+W_$^V܏|kHzR;)o_lƎCtyRLg׾\?L`>cИ =a@ҝ3g:.cOJMcm YgVcpW/.+S*˃ʑJ{RS::;!Z)WbkӹGKM4ElMӲP9.0/D5!u8LD}r-F97Pߟ,/dJ;A#XG?*G; nQ {CA%{E<1>.ވYiuE h"5[PXZFXVST1#q@)A9zhw5FPuo]մZƑ+" y϶)u2GNS^N;M4pC|Ȓ~ʜSs҇ԁ5k)tf,?x LRAdd~( jV ͯM?jx$O0uLh7(l+P2M!e s DnzG>Ńq h@u͍4HxCLሊv"G"\y!;⬑-MV"fwL`2qT4!PH#3\}/bʟ$B[U[ba2UأG! Zpwv2vlXX0>I^vr2=FDX2`jb9.kfD5ۘ ]ϛ'CjBqF4svjĔ@\ SQ}7Jy@|j-גS@%r4p a,210<-a)do+,I-60o:(Jy]zg%xJ.L8=͜[n Քhra`1zAD{xyO GBG=D~/Ҝ&?6oQ~m$':9^eF 5da3?lsXL aVXsXЧucҭpcXC+!*WFAv))ql>*xPzsN 5 5m1W6S~qO115D}7/,/Ҟ0$ J0:R4_/,yL_uV@ yW7Zd7S9tL,!%v] CJU7Ls䜗sHy]CqPKXk1PKqR"TܸThumbnails/thumbnail.pngPNG  IHDRBPLTE[[[dddooo|||ImPIDATxێ8 :ktPsJr@NFTOM[.!(Orf#&9e/e׼f+3nFF!::ȘJh-q/,&_۰xJo]ut5~{~#wRn)iݱMwtTkz5RC>zMտIY. ;C=L$A^EzG'9㺂u'cA1k.WU9CdjY-Vcԯ=:GSGU'KjI[Tew޴?xhj/կ&}l_2"ٴ۳qDGű'ϣVGt\>:ˠF5jԨQF5jԨQF5jԨQF5jԨQF5jԨQF5jԨQF5jԨQF5jԨQF5jԨQF5jԨQF5jԨQF5jԨQF5jԨQF5jԨQF5jԨQF5jԨQF5jԨQ;_LrIENDB`PKqR"T styles.xml[m_a(~-^^[4m.Zmv)Q }7)[ g N1wQ:M .3rsM?}d52gY]RB(\!2r6c.l$3;s2!vB~Lbry%OȾq\1.w5Uͩf˳X.f4m$g[Av%Ce ,2[*=nKydf\`3VTHžX)+GxYv± ѬY|rsO's^`R=%C(ۙ:5d/hf^_c"0-h5D.bhH8X_8̛7 F:4h4Aœ(zڲ# f4)ǿyNC3KneX OB'`X1`B:?WRBĤeқ+/$_ڔQzqRS9e*Fo\Df;QgT|hʬ诜 [c(=TE7C;"D"2??"uvZgDɊrN_hbkIuF i3B%nG&ACx{3z(V,8ZLȔV\Ǣ2;nFgMרt GՖd㵿 * @, 2e-pDU`D6lחd͖;J-Y~)brZXZ"+C(5P=Ze|gR*IGXGֱ#rqBiwI?FdJ13V[h3V#h"N2Ǫo;/ aveܑɵRAgD5#U2^*D?tJ=,wNcrFR2ت%qG,a0/:v,TΖWw h߷b-r?V-` ʆ%} 駟N 8oW)spEg;%iU]f6UUºB8 d}@S{ɨ=*[ Yre#~aWQqHL#>AP%܄2Rǚ9W4 UTqٮFzqKr*S)h y#GKǪkSX޿0ʽUY6T3|o+Bf+}Pe/zoWLJu~ %(5Aw ݡ8Wrc3ؼ)_.*"d[K󁣷՜*k֐,ֆuچc޶*=`m'$ٞG/̡-szhP%rtO8xH^1:E=8xIvUDKw<MSo(Ǵt4G L~v<bt+N9H~״yix9QMEY-5?9=%Zzdf ׊|8hf9rxn!=9 O44H'Ӱ7{jӰ KWCo5X`E8 ۤOqT~%,S)9NK UtPgn b6)hnqf6bOb tkmE+ ChmJ-$be5phyʛ5_u\WC-]ۦQࢁ:(̇Q/i^Q)QX xo(̯@h= Cp1 {r~1AK`o0 ZJCxsQz_(̧"5 (\pP߄fCan m#0]6an׷C(ɉ[pXLS:88Kp|pJ&Sz&+5cRAW^XǚA7Qx.o>9W= QܫU22 tGZ Bj8zAaki̸[ եz 5z2I;-vnM"L=Mّ\=[ù4Imj^o׃+*2fj%GDA" |A EAn zRDy,W 'y62QByBuG2NZ |>^r3֖ăRƨ"!w̤=~n/{.'[C[?ojPvsd7B/XĉWEPVn1RoX%}^}ؼ&l^W({pR~]ljXBDfvP);Ϋ6.մY/>PKuE 7PKqR"T content.xmlZ͎6))ڃ,?k[]o` ((E$o}C}>Id^9/^?̐:#p63ݞc< l13?<&櫛/y{3e)k4^F̥Rg<,q3RTɿZzAike 4 GW_륊%tjԂ5"ZD0oP1Dnj9X<- {[^ܶ$|u_n% mFDod s /DД-mLvVn-/PyHǦ4T\F>.+F#EWjѼPUq] m5oU?ء# ŭ;VGM)#P[[Vc_׷n뻭V@x;{V0} Zy{S4K9mٯ} /*q[bQܐ' ,nKZ̫iS9e6Qױ5OO'8C^PGGQO A έHo-]lbpb16mc` qAq vF6<k)Vi! Ou嶑3 ^8( v*)3\)k1Q>^%sAo)OmI#p B16fnlQ4!h$某e~) &WjFZHbh%K+.Q8[=ϚOZGZ/ lw2{CH %pnoaϨ>^X1J,(o`ظNoa[gmU Ü>J22އcfjPߥl ' *գ V/ݗ|:Eqf_e'*IYfA-k#ٙI0BL&;,t39^IlVRҾ] P:3-w5a`?TƐz  w ٟƐMѩe"gm A3hقaK a7Ȇ7=w|b"gm Ao➊Y*q6ȮAvuqqOBl6890%٤d= 6Uop"f sߩWd2U}('y)Z<_̶PY"c6O% [y]e[JDxE?NuUCbg=o"iLkX뻧bh0("߉k#@<}i.kXh#Oy#YШ"ZZQV HA|Yd7^@%HGު'i,FHb-KY[t(:IENDB`PK؉aF content.xmln6} Ckbq@df-Q QJTEʗ]wEk(r"Ј#n!760+cd  _b΍7C\I2!!<:Ki]I. .C@dΒD0̣ee:llkhwn=#h7ۺ—/j9#uwDY0 _όEKnvbطGNEN%1N\dž=Fv@'|)Iq J7~'yqHNx'n96ȍLJC-AݱR91jOSz !E"@n4p8s{{}#㒻s)VUF60FiQb!艀-ͅ3uOvÓ ppFMRəF$fxLNk\|z kǮ[ә|gn~{t: wIM"#1E!ƋDR,.G-L8t<@|yG?)r}n1Ğ.J 0ZǨ.lC| -?T%_!3lx~aA.<>|"B))59fOۧ3k #݀3ҏ$Q&[td0?t3 Ɛ QcG {1u8~5J3nw?Fp"Oa9pVmj5i$p+57rC﫺}6zcLD?jOD1qp,I?坮 shLf%B>NJ̔72l,0p֔ i `lڌKi5m_xM)45,7}<Ʀtp!A6f\ְxͬQfǃƚ4Ee49vc-Ȑkɔ̩F0Ģ5NA'h`FA,Z#(t: Fk]墊F0Ģ5NA'h`FA,Z#(t: Fk]墊F0=ȯ]ަn(pfc$ICaŗMY­+GXUAoa'4U'W*CcXU*COa}1*ZV$êR$z qU=պzVz[XkqUi=պV[Z9LZaiC!\ZP?åe`iC)\ZP ?¥hhC_?,(K b ,(KJBҒ]OU/SWbT@VyuaM} +K$6ucqQ 4>y{3E(Mt9(t0؛$a|x4'@`^>z^RVZz?1Į"ͿwJ6 `25[K8ülIS^tt 3*K>JmPKFfH.pPK؉aF settings.xmlZs8~"wM0 CJKC$뛰Fz$9+r)뉉%Jv\}Y(w20V>{_Z]lh1HS` Mg\f>|J6iŠ&hbrvv3SY .ȘY.ŇsTEѨf*V"* djwԽ㷮 7[ۜ?ۭ]{aj5hkiM06#fkկڇ)[;MMTߧ|n^oԎ8B/DLAo)" `kq:zpC'}Ƅ>X|%fIڪ85ju{VQ^ />/?/uO|\$ZvJgBG{R$m43'bλv*{H®G[T7 DSh!U!K;RfؔicLU|9URId _C'C؄Q&eH'7#lCy-F }0}OA94PN(F+Xh+ :L| =6|SULhS"AK2`B)-:o5`m%SGcE~U%n?.nv,Pe4] i¯qbV0A~j! ˱+ƶ*}iUލbfd١`D(OP9GAvZA3K@uƅPl'(j ߌ SDaVo^].B"v @8tr^*^izenv"KpOCND'\V<$\p,D)Vď |8ef}iRڡvd!'XQil\K ~¯K 4:$61̳EXRg`1 _NhBpbllt =$K֤ f!$#s`HeHKA|a"HS_sj߽zW BZкE-(k0IĖ[mt=+<%r|`ChU 1cMᕡ\'vcMTչ0QVvXbRL遴.-L[4d{^`">* 4Ԇe`so␃lyƼ&Jㄎo_eK@ Zj@)I;f6h%᫋-89Pmڊ1Ȏ@]EPyϯOֿPK+#T$+!PK؉aF styles.xml]͒)TrmrDRHxJVO "!1I3gɣI4,Nz &KC1uIC!(s?X[q,KxYh3cm S^Щ,$mo, BWߟ4f3،$^ |>dbNeϸ\g}L;K (<0 8n=TUkx^iTQ6sޑޑ+(]k0 ?Si qж/[Q{QirnYR peõMs<KܛFM8؝FvNq|8 LTptږ'G$N,(Ў]: |{Q`]Ůdጆj`Ƴ7TOCqSv;9p'}xi??p|,?l.X_фD<{{SQRdqJ3V8ı&l$9b)j^戼~F K9\IЃ%+g ^Nh.Iqpsvp|C}y!F%<-CZ(Z{N_Q >d#K򸁧R!!1]|5rƀۧ99SX XHDȁeX sB>egt|>+D*<6^6xbD~"BbT'+(>:<ΊhDl#H:l!ߧb^bni)OF Rj@at{ j)sR4R #(e|0 ˙i Çb8!:oP%mӀE\0o\о%Eo|մXP^͂~ΊBFCwz#]0w+ޢ,tҌ7Hf 6HaH[X5'V-U@$jk)-v%G:Y߅)֍3_ٺuqРɼ;{)ʒu|, 6.HL]l0E 5c;6buOjN;ƑNt_FPrܖrQA$޴?0r%76JH]Uf~ݩu((*;[>_4{X{-;'17d /7h 'RȓZs+T?G; L>C k~%h0S6vT;&V9G,~Ex`1z\xʼneI40 DAnJA);M,*е[V zEk?B}E=^#'<#_Zs谶.ZNi4ϰd]u5;&J;`oEmA|WoLD"r)AV˖6.K@A$ vPꆭz|z=D=ŋ$yi+/SٙϫW#reFUF;;KqgÊє2$]3ǫS%3c5a#ln{AmH&I+|_IkZ")BYE'=.l [{B;?=_M|OkRB֫%צ\⠼JSlb)&Z=So7ݟqg ir׍TJX|c3vtu$,5%ȑax.}yh)ʶ cy! $;|14:R%nL܋?-$ro2{^%y> :i҇ ~[kB>gy{^=nEVdWv2̚D{J} .YBJԚxG#ǪFn۴kTx䀘M[Xjul|0 NY*g~AOD0B=(#kH&Fl@b E2зTX%}CHR;郭IJJ 7N(4Puli4m LAiRѴ \ӣӴ=( ̞\Sk\Rj愓kzrcNgM9~)Ms^eJEӂprMOoLLʔ9䚞ݘ'0-jz%HoLӹN%hN8-T=cz(S*cT]%gm,+uI͙HYrkRy e ˠ$[.-=$Pu hc֠\"uNFw=GgU;\E aa*^e۫pf7FizL:j<0͎9\;\%\=k|^Ϣ;VIwךkIe+eY>uY H7 \]l\t%eiU3C*H#T㫅j4@XV\t55L58>v9yjH#\W `YUNH#\ӫk6i#XB"`ͮ, "-ˡB"pͯ14P\vm/hjFuud44 7,GFNqKYOp%).0=H^)wj~nrѳA7CXb5`K!%X` ֽRte;$`;5>7X2H ִ#Xsu/aԯFIoX*h ٛ{a&`&`OJn+X&@@nQ6&Y[ݧUoŒX?5`I!|P.Dbh?qn \_dY>^-0_͕*p"ko@rEw}ƀ k fNl@W,n ЩkS-V7} ,/qj" hJʭ:2P-\m_5@E.Bt<M;yD5"zKb8$\z,Ftn`|-RhȘre"+e#N, WdBam%NLdEX\׀⦞ P\$86D*xj-Tb̊EIL/=]KSAPv[QuSY.,`"y#)Pi^8`:azN~ \'G Cxw HVJTJLN%*B#"`a(05 G^Շ5>v9 Oml8F\AB/Cʼn.́iN\O 0̜SKKAK$* y9[͔.V)&nt37ž=u| .9!Ր#_)Y JCe3*kł*PK֡e PK؉aF manifest.rdf͓n0 Martin Linnemann2015-03-01T17:26:12.312015-03-01T18:14:48.45Martin LinnemannPT10M3S2OpenOffice/4.0.1$Win32 OpenOffice.org_project/401m5$Build-9714PK؉aFMETA-INF/manifest.xmln }zP& `ID`G*ɶtZlNGx fbSh$siR@U4Qr%i;I~5XyPpFtbъ8b/ Nt5dm):TL0üʛƴ)\ŵPZ t 1a“z pT v^}HQ{/ofOIoD =ӫut0xzu~PKjҠ">PK؉aF^2 ''mimetypePK؉aFMConfigurations2/floater/PK؉aF'Configurations2/accelerator/current.xmlPK؉aFConfigurations2/images/Bitmaps/PK؉aFConfigurations2/menubar/PK؉aFMConfigurations2/progressbar/PK؉aFConfigurations2/popupmenu/PK؉aFConfigurations2/toolbar/PK؉aFConfigurations2/statusbar/PK؉aF-Configurations2/toolpanel/PK؉aF@}eThumbnails/thumbnail.pngPK؉aFFfH.p 3content.xmlPK؉aF+#T$+! z settings.xmlPK؉aF֡e  styles.xmlPK؉aFh manifest.rdfPK؉aFjX meta.xmlPK؉aFjҠ">x$META-INF/manifest.xmlPKp%pandoc-3.1.3/test/opml-reader.native0000644000000000000000000001045207346545000015553 0ustar0000000000000000Pandoc Meta { unMeta = fromList [ ( "author" , MetaList [ MetaInlines [ Str "Dave" , Space , Str "Winer" ] ] ) , ( "date" , MetaInlines [ Str "Thu," , Space , Str "14" , Space , Str "Jul" , Space , Str "2005" , Space , Str "23:41:05" , Space , Str "GMT" ] ) , ( "title" , MetaInlines [ Str "States" ] ) ] } [ Header 1 ( "" , [] , [] ) [ Str "United" , Space , Str "States" ] , Header 2 ( "" , [] , [] ) [ Str "Far" , Space , Str "West" ] , Header 3 ( "" , [] , [] ) [ Str "Alaska" ] , Header 3 ( "" , [] , [] ) [ Str "California" ] , Header 3 ( "" , [] , [] ) [ Str "Hawaii" ] , Header 3 ( "" , [] , [] ) [ Strong [ Str "Nevada" ] ] , Para [ Str "I" , Space , Str "lived" , Space , Str "here" , Space , Emph [ Str "once" ] , Str "." ] , Para [ Str "Loved" , Space , Str "it." ] , Header 4 ( "" , [] , [] ) [ Link ( "" , [] , [] ) [ Str "Reno" ] ( "http://www.reno.gov" , "" ) ] , Header 4 ( "" , [] , [] ) [ Str "Las" , Space , Str "Vegas" ] , Header 4 ( "" , [] , [] ) [ Str "Ely" ] , Header 4 ( "" , [] , [] ) [ Str "Gerlach" ] , Header 3 ( "" , [] , [] ) [ Str "Oregon" ] , Header 3 ( "" , [] , [] ) [ Str "Washington" ] , Header 2 ( "" , [] , [] ) [ Str "Great" , Space , Str "Plains" ] , Header 3 ( "" , [] , [] ) [ Str "Kansas" ] , Header 3 ( "" , [] , [] ) [ Str "Nebraska" ] , Header 3 ( "" , [] , [] ) [ Str "North" , Space , Str "Dakota" ] , Header 3 ( "" , [] , [] ) [ Str "Oklahoma" ] , Header 3 ( "" , [] , [] ) [ Str "South" , Space , Str "Dakota" ] , Header 2 ( "" , [] , [] ) [ Str "Mid-Atlantic" ] , Header 3 ( "" , [] , [] ) [ Str "Delaware" ] , Header 3 ( "" , [] , [] ) [ Str "Maryland" ] , Header 3 ( "" , [] , [] ) [ Str "New" , Space , Str "Jersey" ] , Header 3 ( "" , [] , [] ) [ Str "New" , Space , Str "York" ] , Header 3 ( "" , [] , [] ) [ Str "Pennsylvania" ] , Header 2 ( "" , [] , [] ) [ Str "Midwest" ] , Header 3 ( "" , [] , [] ) [ Str "Illinois" ] , Header 3 ( "" , [] , [] ) [ Str "Indiana" ] , Header 3 ( "" , [] , [] ) [ Str "Iowa" ] , Header 3 ( "" , [] , [] ) [ Str "Kentucky" ] , Header 3 ( "" , [] , [] ) [ Str "Michigan" ] , Header 3 ( "" , [] , [] ) [ Str "Minnesota" ] , Header 3 ( "" , [] , [] ) [ Str "Missouri" ] , Header 3 ( "" , [] , [] ) [ Str "Ohio" ] , Header 3 ( "" , [] , [] ) [ Str "West" , Space , Str "Virginia" ] , Header 3 ( "" , [] , [] ) [ Str "Wisconsin" ] , Header 2 ( "" , [] , [] ) [ Str "Mountains" ] , Header 3 ( "" , [] , [] ) [ Str "Colorado" ] , Header 3 ( "" , [] , [] ) [ Str "Idaho" ] , Header 3 ( "" , [] , [] ) [ Str "Montana" ] , Header 3 ( "" , [] , [] ) [ Str "Utah" ] , Header 3 ( "" , [] , [] ) [ Str "Wyoming" ] , Header 2 ( "" , [] , [] ) [ Str "New" , Space , Str "England" ] , Header 3 ( "" , [] , [] ) [ Str "Connecticut" ] , Header 3 ( "" , [] , [] ) [ Str "Maine" ] , Header 3 ( "" , [] , [] ) [ Str "Massachusetts" ] , Header 3 ( "" , [] , [] ) [ Str "New" , Space , Str "Hampshire" ] , Header 3 ( "" , [] , [] ) [ Str "Rhode" , Space , Str "Island" ] , Header 3 ( "" , [] , [] ) [ Str "Vermont" ] , Header 2 ( "" , [] , [] ) [ Str "South" ] , Header 3 ( "" , [] , [] ) [ Str "Alabama" ] , Header 3 ( "" , [] , [] ) [ Str "Arkansas" ] , Header 3 ( "" , [] , [] ) [ Str "Florida" ] , Header 3 ( "" , [] , [] ) [ Str "Georgia" ] , Header 3 ( "" , [] , [] ) [ Str "Louisiana" ] , Header 3 ( "" , [] , [] ) [ Str "Mississippi" ] , Header 3 ( "" , [] , [] ) [ Str "North" , Space , Str "Carolina" ] , Header 3 ( "" , [] , [] ) [ Str "South" , Space , Str "Carolina" ] , Header 3 ( "" , [] , [] ) [ Str "Tennessee" ] , Header 3 ( "" , [] , [] ) [ Str "Virginia" ] , Header 2 ( "" , [] , [] ) [ Str "Southwest" ] , Header 3 ( "" , [] , [] ) [ Str "Arizona" ] , Header 3 ( "" , [] , [] ) [ Str "New" , Space , Str "Mexico" ] , Header 3 ( "" , [] , [] ) [ Str "Texas" ] ] pandoc-3.1.3/test/opml-reader.opml0000644000000000000000000000553007346545000015235 0ustar0000000000000000 States Thu, 14 Jul 2005 23:41:05 GMT Dave Winer pandoc-3.1.3/test/org-select-tags.native0000644000000000000000000000360707346545000016350 0ustar0000000000000000Pandoc Meta { unMeta = fromList [] } [ Header 1 ( "will-appear-because-it-is-the-ancestor-of-something-tagged-yes" , [] , [] ) [ Str "Will" , Space , Str "appear" , Space , Str "because" , Space , Str "it" , Space , Str "is" , Space , Str "the" , Space , Str "ancestor" , Space , Str "of" , Space , Str "something" , Space , Str "tagged" , Space , Str "\"yes\"" ] , Header 2 ( "will-appear" , [] , [] ) [ Str "Will" , Space , Str "appear" , Space , Span ( "" , [ "tag" ] , [ ( "tag-name" , "yes" ) ] ) [ SmallCaps [ Str "yes" ] ] ] , Header 3 ( "will-appear-since-the-entire-subtree-of-something-selected-will-appear" , [] , [] ) [ Str "Will" , Space , Str "appear" , Space , Str "since" , Space , Str "the" , Space , Str "entire" , Space , Str "subtree" , Space , Str "of" , Space , Str "something" , Space , Str "selected" , Space , Str "will" , Space , Str "appear" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Para [ Str "Will" , Space , Str "appear" ] ] ] , Header 2 ( "will-appear-because-it-is-the-ancestor-of-something-listed-in-select-tags" , [] , [] ) [ Str "Will" , Space , Str "appear" , Space , Str "because" , Space , Str "it" , Space , Str "is" , Space , Str "the" , Space , Str "ancestor" , Space , Str "of" , Space , Str "something" , Space , Str "listed" , Space , Str "in" , Space , Str "SELECT-TAGS" ] ] pandoc-3.1.3/test/org-select-tags.org0000644000000000000000000000157407346545000015652 0ustar0000000000000000#+select_tags: yes no #+exclude_tags: no In a document containing one or more trees containing a tag listed in SELECT_TAGS, only those trees and their ancestor nodes will appear; this text and any other text preceding the first headline won't appear for such documents. * Will appear because it is the ancestor of something tagged "yes" ** Will appear :yes: *** Will appear since the entire subtree of something selected will appear **** Will appear *** Will not appear since this has tagged with something in EXCLUDE-TAGS :no: ** Will not appear since it's not an ancestor of listed in SELECT-TAGS ** Will appear because it is the ancestor of something listed in SELECT-TAGS *** Will not appear because it has an EXCLUDE-TAG, but since "no" is also listed as a SELECT-TAG, it will force its parent to appear :no: * Will not appear pandoc-3.1.3/test/pipe-tables.native0000644000000000000000000005623307346545000015560 0ustar0000000000000000[ Para [ Str "Simplest" , Space , Str "table" , Space , Str "without" , Space , Str "caption:" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Default1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Default2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Default3" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Simple" , Space , Str "table" , Space , Str "with" , Space , Str "caption:" ] , Table ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "Demonstration" , Space , Str "of" , Space , Str "simple" , Space , Str "table" , Space , Str "syntax." ] ]) [ ( AlignRight , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Right" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Left" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Default" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Center" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Simple" , Space , Str "table" , Space , Str "without" , Space , Str "caption:" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignRight , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Right" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Left" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Center" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Headerless" , Space , Str "table" , Space , Str "without" , Space , Str "caption:" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignRight , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Table" , Space , Str "without" , Space , Str "sides:" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignRight , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Fruit" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Quantity" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "apple" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "orange" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "17" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "pear" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "302" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "One-column:" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "hi" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "lo" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Header-less" , Space , Str "one-column:" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignCenter , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "hi" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Indented" , Space , Str "left" , Space , Str "column:" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignRight , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Number" , Space , Str "of" , Space , Str "siblings" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Salary" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "3" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "33" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "44" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Long" , Space , Str "pipe" , Space , Str "table" , Space , Str "with" , Space , Str "relative" , Space , Str "widths:" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidth 0.15517241379310345 ) , ( AlignDefault , ColWidth 0.1724137931034483 ) , ( AlignDefault , ColWidth 0.6724137931034483 ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Default1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Default2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Default3" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "this" , Space , Str "is" , Space , Str "a" , Space , Str "table" , Space , Str "cell" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "and" , Space , Str "this" , Space , Str "is" , Space , Str "a" , Space , Str "really" , Space , Str "long" , Space , Str "table" , Space , Str "cell" , Space , Str "that" , Space , Str "will" , Space , Str "probably" , Space , Str "need" , Space , Str "wrapping" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Pipe" , Space , Str "table" , Space , Str "with" , Space , Str "no" , Space , Str "body:" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Header" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Pipe" , Space , Str "table" , Space , Str "with" , Space , Str "tricky" , Space , Str "cell" , Space , Str "contents" , Space , Str "(see" , Space , Str "#2765):" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignLeft , ColWidthDefault ) , ( AlignRight , ColWidthDefault ) , ( AlignRight , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "IP_gene8-_1st" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "IP_gene8+_1st" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "IP_gene8-_1st" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1.0000000" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "0.4357325" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "IP_gene8+_1st" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "0.4357325" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1.0000000" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "foo" , Code ( "" , [] , [] ) "bar|baz" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "and|escaped" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "3.0000000" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] pandoc-3.1.3/test/pipe-tables.txt0000644000000000000000000000275407346545000015110 0ustar0000000000000000Simplest table without caption: | Default1 | Default2 | Default3 | |----------|----------|----------| |12|12|12| |123|123|123| |1|1|1| Simple table with caption: | Right | Left | Default | Center | | ----: | :--- | ------- | :----: | | 12 | 12 | 12 | 12 | | 123 | 123 | 123 | 123 | | 1 | 1 | 1 | 1 | : Demonstration of simple table syntax. Simple table without caption: | Right | Left | Center | |------:|:-----|:------:| |12|12|12| |123|123|123| |1|1|1| Headerless table without caption: | | | | |------:|:-----|:------:| |12|12|12| |123|123|123| |1|1|1| Table without sides: Fruit |Quantity ------|-------: apple | 5 orange| 17 pear | 302 One-column: |hi| |--| |lo| Header-less one-column: | | |:-:| |hi| Indented left column: Number of siblings | Salary ------------------:|:------ 3 | 33 4 | 44 Long pipe table with relative widths: | Default1 | Default2 | Default3 | |---------|----------|---------------------------------------| |123|this is a table cell|and this is a really long table cell that will probably need wrapping| |123|123|123| Pipe table with no body: | Header | | ------ | Pipe table with tricky cell contents (see #2765): | | IP_gene8-_1st| IP_gene8+_1st| |:--------------|-------------:|-------------:| |IP_gene8-_1st | 1.0000000| 0.4357325| |IP_gene8+_1st | 0.4357325| 1.0000000| |foo`bar|baz` | and\|escaped | 3.0000000| pandoc-3.1.3/test/pptx/background-image/0000755000000000000000000000000007346545000016324 5ustar0000000000000000pandoc-3.1.3/test/pptx/background-image/input.native0000644000000000000000000000263507346545000020701 0ustar0000000000000000[Header 1 ("section-header-with-background-image",[],[("background-image","movie.jpg")]) [Str "Section",Space,Str "Header",Space,Str "(with",Space,Str "background",Space,Str "image)"] ,Header 2 ("slide-1",[],[("background-image","lalune.jpg")]) [Str "Slide",Space,Str "1"] ,Para [Str "This",Space,Str "slide",Space,Str "has",Space,Str "a",Space,Str "moon",Space,Str "background."] ,Header 2 ("slide-2",[],[("background-image","movie.jpg")]) [Str "Slide",Space,Str "2"] ,Para [Str "This",Space,Str "slide",Space,Str "has",Space,Str "a",Space,Str "movie",Space,Str "background."] ,Header 2 ("slide-3",[],[("background-image","movie.jpg")]) [Str "Slide",Space,Str "3"] ,Div ("",["columns"],[]) [Div ("",["column"],[]) [Para [Str "Background",Space,Str "images",Space,Str "work",Space,Str "in",Space,Str "two-column",Space,Str "layout."]] ,Div ("",["column"],[]) [Para [Str "hello"]]] ,Header 2 ("slide-4",[],[("background-image","movie.jpg")]) [Str "Slide",Space,Str "4"] ,Para [Str "You",Space,Str "can",Space,Str "have",Space,Str "images",Space,Str "on",Space,Str "slides",Space,Str "that",Space,Str "have",Space,Str "background",Space,Str "images:"] ,Para [Image ("",[],[]) [Str "An",Space,Str "image"] ("lalune.jpg","fig:")] ,Header 2 ("section",[],[("background-image","lalune.jpg")]) [] ,Div ("",["notes"],[]) [Para [Str "Blank",Space,Str "slides",Space,Str "can",Space,Str "have",Space,Str "background",Space,Str "images."]]] pandoc-3.1.3/test/pptx/background-image/output.pptx0000644000000000000000000015012707346545000020607 0ustar0000000000000000PK"Tppt/slides/slide1.xmlTMo0 +Oۡ4Ia)0l]dYd[ )iGIvҵ9"QGRZD{0)&e 5şmqZKT4E1kc8E]#/$rGM ʿS\ $~DA{Iѵdqvy}r%R{!%bV4TřW~ˡPh\Ֆp?Yr^-q6oNC!8h"W7e g19\OxT8Σߝ]x |O I MI`z%ERZBTcZQ~f-}KִvA\=jdAr49gR $SQ8ƆV1_.Ȣi9b6Ţ)Ɠfw$vL{np-Pe f?($ݣ|4$70_dNw <%sfts e+νy[YPK"Teppt/slides/slide2.xmlTn!{HU:R/*YU;3֠p`wnJҗeΜsh4:=L19O~1]ƎX;B"8q^X8\046PMfbT^SA1ѱ6U 4M0f_惈@S)+ck*,jֈ{cp%]% 0 7 0[{YIAd1'31oM "1:㛻w)4^JrƓXX e,N7A>* ųd5S99jD~cصvL^}t,"T eWi&fKxҚY\OUj" ұ爬Qņ* %JS&g7NF_dzki|\XkDLtyʮ\\U-a°tVl8M_7-ZqBE09woM0 Ziʄtf2p#UD(iD,R noU֒GO'PK"T;fppt/slides/slide3.xmlTj1x%`RS;Yf-ݐ頋eme593vh]s;645L]]sn:簐0h% n$fouQ_#]#-;gM8\*88PK"Tܟ6ppt/slides/slide4.xmlU]o0+VBJi`ڳo 6 MHC_ks9q}/ڃu\*jU[W֏~>3S' P妤:cG; m%ai[,9 )x4z%:kup 4IP>Xć6]Ǎ+l6cKKQ] Mǥt#yB fx]W߹V1 ) 8mDx>w_ނ] P!ލFf3_ڊ4!-\ťw\81RO֬L< zK8""2I j#C[B2+O4&{D.}M//i%<.EQ\OUjͽtsWvf!dCydq6}$nwg|1]0p'_c'ҥb/PX).bvOZɆSy(~DO8ѩ .ݷIV>4P``.r'^X"7ibK҂CmP^l9=/~߸2_>g|q+PK"Tx'G ppt/slides/slide5.xmlV]O0}WX~'MCKE`412M{t'plvKٯ?6{ٺ`EaRLaz@@:ó٩^g*Oam dHMlR7غPsp4Hc`&`{^s^%#$ˆ hʱui)ySxS&~GFEwzv' McEKz^cEQ3zB-P)a/f(wJ_u%.BذSx8' =ڦӲtG͍ ~Q;u)#j{ӀqhBŹXPuC@Hi!IEޠ v=HCM+ Winq8`B"%CaXZʦъ\ƨY*4,~g4W53/پĭ7.T4\bEԘ9POL -@vۑ0&V@IavsQH 8 95cIhE>+G+rfAȫȚZL*U5lFɢ_*X£x)X5f~3SCK'-3(ʈ^K/6 PK"T+ ppt/slides/_rels/slide4.xml.rels 0_%ݤc/">@Hi!IEޠ ֲRI.Wm rN c2qhi8xvőF)O\0֌%9le!?F5# 3I8^@`$x9[tJKQ*N~%VDK2=R]G|[]]䥥ɵ'\EeY1?VPK"Tr(@ppt/notesSlides/notesSlide1.xmlT]o +w8Ȫ[5i2UiCxΦK<\=`nꒁ*]p0r"g1|}YSxw{##. &s!MrZb=r Ubc*C?,Hh8B%.8l%"M Bٗ(6BM^&~ӒF6,q/҆mUɍ\f{U(+4vs^CȺGuJ7Zz|[į2ɿ&\>A9߬F + KQf\*v4|dF< FkI_Rn90i,y,3xTm~ZT>&4Kۧ2݊Yu/=3[s~GL90g=V̂'6aՓ JpZݒ;A+ 2%<sYikt^Y˭/s$ĂC+CUs-HYPNg|L'`2^L$l.ox }B)^7wd~>SRB }PK"TcZ:]*ppt/notesSlides/_rels/notesSlide1.xml.rels 0D%ݤPDzmlo@zqgf[8+!05v.a]UqP1%7XZ$o 㨈;69 i J_UbeS̙Hf ~zh;}ƅ`a[O@`bH"EaVgB=zPK"T̒ppt/media/image1.jpg/7O7FFF d! $#X!DHe)d*&d&+&f)x%w|N[\mփi- oj|I[ӻSԝSkSvl=3sf\6[Z,U[Kβr_IIqW *ᮁc--g(Lc:3?qLh!s6d 䠿bS^R|Yƫ'S7:dK}JgtMwwk>G/G_`j͓n? OL|K!"qUa\^CE&"7;ztKajf:]' LTyr;’?Oo:}3Â%R|=,Yxa㋅l4qY_MV,2ݶ~J,r*pr`K)_DY`gc`nXgc)օ_2?Ur׳&qm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"Td[Content_Types].xml͘n0_%mEL{ En/Z޾B@ V}8Ȍ~w.h ~ҍ#P΄M4f\D19g̥c%ڀ#-m OA{RvԈ+I;=Rz]qe~̍)DʑY˖&Z(܊̩~u>ʬbXīT<۫yYA-sI,1IVn D 1@ A1$ ,7+- bkcw.{nTA D!Bu"qP'!BuPw!YB!9?dڔ~DoVlP2vS8+` J#KX6WB_-2eoQrP˭O^˴^smɅZK31l6~NE? QlBc[!| aͱgLPK"TEhSGdocProps/core.xmln0_%=qbD8RRͲ`65 "qm֤a%cyY%0s>[|MzҭPK"Ty%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<]ɬ*d+Yx^T=>]ϦTJ,(~K'Eh$B%yIRJAF$$hT=mmiIiښ(;7$.:Nhgc"c>w'nвQ$t.\9|wbƷx1.UpO?"`r(p*Lp*e[5ME S aw_N]7TKjk:* }ϽccӌnCa2/~9PK"T1&ppt/_rels/presentation.xml.relsN _poiNn7d&F`{[ ӽd. py~?_j=hJ3K%)F+Q3ޖmxězjlnĝ1]u0P ܮ4B PDꃶ@4-r=mmc;HhV>DkHU OL1D{)(f^E$DRF(ː\OTP'Gd&KC|=+a'ň5J^R>%1?KrIƕK :a }zp ~52vNW<LPK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"TX$,ppt/notesMasters/_rels/notesMaster1.xml.rels 0 ;mDd."*Juŭ-mvqK R7y"/ 8ˡjz8I^N"#4bo8ɔCq4>aLɟjYF<ڼ\emKYUG =%n(8Ѧ'XY̠ JZ+=`fPK"Tzìm!ppt/notesMasters/notesMaster1.xmlYn8}_`A>.\ݨ:EDm hSӤEKv(%8M% Ùјy⺢᢬EX^% Y/-!1+07D/~y3`$5p 01C{.e3pIų! Ʀ5W>s ?:FNKf|tZΗas 2[n[!A9uߑU׀z`gRn]a:'3v;XKjh.9!JbW/y3n.x› >m1\A;͜nR+8;gFă) BQ:r-Skm>{m>?1 8nt^\A.(ɼJV)Es^ aSXt,:Գ[3?ߖms6@^QI>4\ȗ,% mNr2_ ٙ6ףQxJp`m11Bl_P7G&[#5]e@JZz 5m+b\g-;yCӂŠ ̱Fޏ̦d.5#È,C!m}6̄ IP? aJv'?Y?4b?!tø $a>fc`eY-9y;D%SJ0[% z诡i 'Xc@8Ak| @ PP' (ZI2h bj  PHs(+T4@ 0>*/~'џPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlR[cir gqغ3GBI<-VDbsߴ;u K#}uL%G\z+R"fES@U E= UA\m9k M[i^Bt⪚%$ڞ rgZ2o[W>;xqGK;>,@(P2!.>[B7>NNMB! .Eۥx<&/Gq[UGU$G+C<D2d,=GNKxũ CoO$fU9*RɬTo!I8|1옆8j.\TF2qh$݃|4ϟ7,0bjNw3%sftc eysy$p,PK"Tzeppt/slides/slide2.xmlTn!{HU:R/*YU3֠p`wnJҗeΜsh4:=L1967a1]ƎX;B"8q^X8\046PMfbT^SA16U 4M0f_惈@S)+ck*,jֈ{cp%]% 0 7 0[{>YIAd1'31M "1:㛻)4^JrƓXX e,N7Aç>ާ* ųd5S99jD~cصvL^}t,"T eWi&fKxҚY\OUMF%-E\:cY URKLngc,܉]Bt, ZBC2a8p>oZ 3#R.aHs5;`Ҕ 4E+eFbqQ҈(2Yyɫ% )OPK"T)Rtfppt/slides/slide3.xmlTێ0+YZU("VV}6[l/hҗx<>sfΉè$yatO M z5ǻy\K"Tt {A?1tvkΧhw /cbXW>:;R:ᳳNާa`IDE5S>9^%¿1kHڱw*}1t,ƀhҫ4__CS5l1ΓwR 9,Th/hqdÓp4}yTްH"d+<`WۛC%d_]lWng9 ehGޙfŗ/׿ ?OPK"Tܟ6ppt/slides/slide4.xmlU]o0+VBJi`ڳo 6 MHC_ks9q}/ڃu\*jU[W֏~>3S' P妤:cG; m%ai[,9 )x4z%:kup 4IP>Xć6]Ǎ+l6cKKQ] Mǥt#yB fx]W߹V1 ) 8mDx>w_ނ] P!ލFf3_ڊ4!-\ťw\81RO֬L< zK8""2I j#C[B2+O4&{D.}M//i%<.EQ\OUjͽtsWvf!dCydq6}$nwg|1]0p'_c'ҥb/PX).bvOZɆSy(~DO8ѩ .ݷIV>4P``.r'^X"7ibK҂CmP^l9=/~߸2_>g|q+PK"TJ,G ppt/slides/slide5.xmlVn0+ʒw.@uG$I;$%[@^$.ÙyqF|k2cdp&I .EijyVLER;[Z R8 ܂F,MǸ!\&ysyUwn&]tb Ҵ5׶ &GFWufyIk.*4_$Qw&QIg̜5kV,²4//q4+o: g!lEr8MS> =>wP1~4z.64!Ri\ny!J7v @!Wio_q{p1STY;K+E[$ 4D{ݿuܝygɞC|0!|6Nh6_w>'w* @C6N%T8CM& m~/KXd Xdu䃍_*|OBQrU3R}!\OKx F ۳d;R6L} |8L#q?iEDD@ԙyVm'w8Y-PK"TT]ppt/slides/slide6.xmlRO W%F{J^SA+:ٙ^3Jf_zvKWN$@yA[mΘ-hrM?V:nc=^R5p߉G}ӵҺ^f\IFVrJIJʂ`?o-E'tuA^:h%1P1E&tH _.Bd$?xv+CӄR/fggw-?ژ z_ YGpԤN)sčGcO&χu{!+I( 1*~Ez-ڇsx65a:6 KPK"TR= ppt/slides/_rels/slide1.xml.rels 0_%ݤVc/">@Hi!bޠ f,HtehE.c,yY]UK?3`IC<9v K:#q͢_*X£-X5f~ӂ ;ZO4c[&Po_lPK"TW08 ppt/slides/_rels/slide2.xml.rels 0_%ݤVc/">@Hi!bޠ f,HtehE.c,yY]UK?3`IC<9v K:#q͢_*X£-X5f~SMK'-(ʈ_lPK"TY$ ppt/slides/_rels/slide3.xml.rels 0_%ݤADL{A$!٦$A/zqggg>v=HCM+ Winq8`B"%CaXZʦъ\ƨY*4,~g4W53/پĭ7.T4\bEԘ9POL -@@Hi!bޠ f,HtehE.c,yY]UK?3`IC<9v K:#q͢_*X£-X5f~ӂ ;ZO4c[&Po_lPK"TڱH5 ppt/slides/_rels/slide5.xml.relsM 1 RGlD\NuC[EooA\$/}$j{rwƴNzepدG3h"ELHġ9KC+]>ZK5 BFVWՔWz7j d o[#q٢o"X­s."j(}D3Z"h_[2x'Go PK"Tp;E ppt/slides/_rels/slide6.xml.relsj0_E콒@RJ\B S>ֲZI.Gm rj18Nzev9<=nyAH '.qs/%٣l:e!?Fh 3QqGLH{9ZtNKQxsQc@\LkZ*hG91+_yniZ>r ɢ2G_9X7PK"Tr(@ppt/notesSlides/notesSlide1.xmlT]o +w8Ȫ[5i2UiCxΦK<\=`nꒁ*]p0r"g1|}YSxw{##. &s!MrZb=r Ubc*C?,Hh8B%.8l%"M Bٗ(6BM^&~ӒF6,q/҆mUɍ\f{U(+4vs^CȺGuJ7Zz|[į2ɿ&\>A9߬F + KQf\*v4|dF< FkI_Rn90i,y,3xTm~ZT>&4Kۧ2݊Yu/=3[s~GL90g=V̂'6aՓ JpZݒ;A+ 2%<sYikt^Y˭/s$ĂC+CUs-HYPNg|L'`2^L$l.ox }B)^7wd~>SRB }PK"TcZ:]*ppt/notesSlides/_rels/notesSlide1.xml.rels 0D%ݤPDzmlo@zqgf[8+!05v.a]UqP1%7XZ$o 㨈;69 i J_UbeS̙Hf ~zh;}ƅ`a[O@`bH"EaVgB=zPK"T̒ppt/media/image2.jpg/7O7FFF d! $#X!DHe)d*&d&+&f)x%w|N[\mփi- oj|I[ӻSԝSkSvl=3sf\6[Z,U[Kβr_IIqW *ᮁc--g(Lc:3?qLh!s6d 䠿bS^R|Yƫ'S7:dK}JgtMwwk>G/G_`j͓n? OL|K!"qUa\^CE&"7;ztKajf:]' LTyr;’?Oo:}3Â%R|=,Yxa㋅l4qY_MV,2ݶ~J,r*pr`K)_DY`gc`nXgc)օ_2?Ur׳&qm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK"T1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\n:07"ڪ +\:] (Zk+93jF<1~-z_jsc reV rOx,=n";<Yl Qmy2[At-6LV(dsBքciL%$Pdu IE97+h]sp7.eNBI#DzgARI"T0b VYARYod sJKn.US5*`ѐފ4[jKeikrP˽#eڼq$ڒ f&X V?z OK O O O Oӷ[~"V8|PK"TW?GdocProps/core.xmlN0_%=qR$=z "7޶V i7iS*jY=:OGtO؁'QfnwOG iL2H}c/PK"Tg[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+OaLɟjYF<ڼ\emKYUG =%n(8Ѧ'XY̠ JZ+=`fPK"Tzìm!ppt/notesMasters/notesMaster1.xmlYn8}_`A>.\ݨ:EDm hSӤEKv(%8M% Ùјy⺢᢬EX^% Y/-!1+07D/~y3`$5p 01C{.e3pIų! Ʀ5W>s ?:FNKf|tZΗas 2[n[!A9uߑU׀z`gRn]a:'3v;XKjh.9!JbW/y3n.x› >m1\A;͜nR+8;gFă) BQ:r-Skm>{m>?1 8nt^\A.(ɼJV)Es^ aSXt,:Գ[3?ߖms6@^QI>4\ȗ,% mNr2_ ٙ6ףQxJp`m11Bl_P7G&[#5]e@JZz 5m+b\g-;yCӂŠ ̱Fޏ̦d.5#È,C!m}6̄ IP? aJv'?Y?4b?!tø $a>fc`eY-9y;D%SJ0[% z诡i 'Xc@8Ak| @ PP' (ZI2h bj  PHs(+T4@ 0>*/~'џPKURocB ppt/media/image1.pngUT$~`ux  sb``p b``>$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}64 LRV&F~rdǯo&ze2)%lul?-ݴCޓ<24},+˗0!V] jޫgm;UoU-FU\#?#.*6T*=^<Yv>?\铓3^+?/PK"T ppt/slides/slide2.xmlQN0wBQ^ ܠRX&?6!=zYoـw T^5rmcXXB F+tz":P$2ᡪ O5^~Zti&!EkFmB\-l0fgI<( gB<7R8#p$fT>gNXl8gTaC[|”119gEZkhaWPK"T\􈚮ppt/slides/slide3.xmlTn!{JU:RˋZo.㴮d/}af8sY-Vh5=aY.;/7_uAqZMhE#$0[zMc:=JZlh* kN2jAă1 B5hCH0JY[+^ȑ~xv+_#ɓ92ճjD~Cطv'yhq2XV0FjyoIBgq៪MFF]\#Ҳ׀M U䩥Jϻ(] Ur>?\?;#zs}e=8Kޛ1  m%+[A`n3R뢨2ZĂuee\fA3oR ܲTavl7_IfiIcy(Q\˜RKs/&vɓmaeَ){W,֓,fGY (p 3Ue*r/ R J-rwpAg(4cajZr[g G&{X0NrE fv3F*=?}blK\)O ;ShQYl>E^h 8:H%XH/+G:O\-+Zdm@&WAb}ocXK ob-_J >F |7N1z0ݏUjj?{|6tFeg8:OןN|E!a*ppt/notesSlides/_rels/notesSlide1.xml.rels 0_%ݤADЃ 6?dPB<ۻ #$Nָ^_`84@,80B*>NU)AQTES&kZ i+`G_ؾƝW.͜43P_ۨxEq>!%:_$T~7OPK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"TЄ%e3[Content_Types].xml͗n0_qMe9t9u> *ؖ=w&U@ /cdF?G{K0V(9{A@*r>_o;d<|^imv/%c6\@m4HZ)p37>v,TAb3 <Ocn>hHKwUR|u,BUk\^ -|]m)FD=qm֤a%cyY%0s>[|MzҭPK"Ty%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<8` 2eYLy=>$]gմTRqᅶU1TI^~T%T`Ȃ픪--- .y8 m~&ωψ&O-O"2#*wy%!YHENg1rzxT[<>_rElߪn |={߿ wbw+h=o<~Hbczhd*(-q45=4AGģ L=нZ7F3mhV+a1ۖapAm@1ѕ(+Wu*c-P6~-3 m g21ܔK,3  ?ކ[Q2dJɉƓO*{H5Ȥ ⌜;8CyFnvC\$)r `pH t!{  IwA )KxqO $9º9ʪEߓEt\w4d9KWl4M/Q3 "f"O|R^4c]W**I;q砺ՒȸaM.ޑUq=%0wG$ۧ#peN+:M A}<@8 PK"TYgppt/_rels/presentation.xml.relsN!_pwjc҃Y վ-4q~f~ ,߃D;NhEqUmx$!8Jxs6I|mG RO=Ѧnu +`lCVEpÈ]NR\_bIĜ{dIFzF9vk9RRbXp'o"q]N.%?$Yd% [:dc~PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"TX$,ppt/notesMasters/_rels/notesMaster1.xml.rels 0 ;mDd."*Juŭ-mvqK R7y"/ 8ˡjz8I^N"#4bo8ɔCq4>aLɟjYF<ڼ\emKYUG =%n(8Ѧ'XY̠ JZ+=`fPK"Tzìm!ppt/notesMasters/notesMaster1.xmlYn8}_`A>.\ݨ:EDm hSӤEKv(%8M% Ùјy⺢᢬EX^% Y/-!1+07D/~y3`$5p 01C{.e3pIų! Ʀ5W>s ?:FNKf|tZΗas 2[n[!A9uߑU׀z`gRn]a:'3v;XKjh.9!JbW/y3n.x› >m1\A;͜nR+8;gFă) BQ:r-Skm>{m>?1 8nt^\A.(ɼJV)Es^ aSXt,:Գ[3?ߖms6@^QI>4\ȗ,% mNr2_ ٙ6ףQxJp`m11Bl_P7G&[#5]e@JZz 5m+b\g-;yCӂŠ ̱Fޏ̦d.5#È,C!m}6̄ IP? aJv'?Y?4b?!tø $a>fc`eY-9y;D%SJ0[% z诡i 'Xc@8Ak| @ PP' (ZI2h bj  PHs(+T4@ 0>*/~'џPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlR*: ppt/notesSlides/_rels/notesSlide1.xml.relsPK"T.!= ppt/slideMasters/slideMaster1.xmlPK"Tr,Rppt/slideMasters/_rels/slideMaster1.xml.relsPK"TЄ%e3[Content_Types].xmlPK"TEhSGdocProps/core.xmlPK"Ty%docProps/custom.xmlPK"TQ _rels/.relsPK"T5v[ppt/presentation.xmlPK"TYgppt/_rels/presentation.xml.relsPK"T0K  ppt/viewProps.xmlPK"TX$,ppt/notesMasters/_rels/notesMaster1.xml.relsPK"Tzìm!ppt/notesMasters/notesMaster1.xmlPK"T%ppt/tableStyles.xmlPK"T }.r&ppt/presProps.xmlPK"T(ppt/theme/theme2.xmlPK"T mu!G.ppt/theme/theme1.xmlPK"Tђ7-4ppt/slideLayouts/_rels/slideLayout11.xml.relsPK"Tђ7-5ppt/slideLayouts/_rels/slideLayout10.xml.relsPK"Tђ7,6ppt/slideLayouts/_rels/slideLayout9.xml.relsPK"Tђ7,7ppt/slideLayouts/_rels/slideLayout8.xml.relsPK"Tђ7,8ppt/slideLayouts/_rels/slideLayout7.xml.relsPK"Tђ7,9ppt/slideLayouts/_rels/slideLayout6.xml.relsPK"Tђ7,:ppt/slideLayouts/_rels/slideLayout5.xml.relsPK"Tђ7,;ppt/slideLayouts/_rels/slideLayout4.xml.relsPK"Tђ7,<ppt/slideLayouts/_rels/slideLayout3.xml.relsPK"Tђ7,=ppt/slideLayouts/_rels/slideLayout2.xml.relsPK"Tђ7,>ppt/slideLayouts/_rels/slideLayout1.xml.relsPK"T'v!?ppt/slideLayouts/slideLayout9.xmlPK"TJI,!QDppt/slideLayouts/slideLayout8.xmlPK"TSd{g!DIppt/slideLayouts/slideLayout7.xmlPK"T}!dLppt/slideLayouts/slideLayout6.xmlPK"TE˧:!Oppt/slideLayouts/slideLayout5.xmlPK"T?N!Tppt/slideLayouts/slideLayout4.xmlPK"T6\#!Yppt/slideLayouts/slideLayout3.xmlPK"TD9Bi !]ppt/slideLayouts/slideLayout2.xmlPK"TkO ' "Sappt/slideLayouts/slideLayout11.xmlPK"TF "Oeppt/slideLayouts/slideLayout10.xmlPK"To@h)!ippt/slideLayouts/slideLayout1.xmlPK"T%1,o|mdocProps/app.xmlPK.. opandoc-3.1.3/test/pptx/blanks/just-speaker-notes/templated.pptx0000644000000000000000000013041607346545000023043 0ustar0000000000000000PK"Te=ppt/slides/slide1.xmlTn!{JQ:RҤ/kPTL/qT̜9ۻi0d=XPV8߷OnwHJmxOB`Sn1Þ% \[:sn|qe$hF}lh4 &Ll, 6Ȏ_u(ոDd%SJ؜َ5b![Ȼi'ydi2PV/aB"8[B=Uv28 UuTm5 蟝uITD%*,vk߻ͻg1"k(g$r^'Nj>+*=oD g&{}fgNXl8gTaC[|”119gEZkhaWPK"To %ppt/slides/slide3.xmlTn#!=JQ48fws|A%q^\MwS]Uv 30˥io\GՄX:Bi8Lm4ͮ?l$_4XA<( ͝<SnE[y޻[R~IP =ƈLP#aBڍ䡱}YINYvfgL!hpW~TuTdT.^5=XITYfiB\}SN,UJ,!ah L6Lp|%((!wB"͵Ѽ&&Bh(a.Qf"̚Iݥb hy>Yϑ_PK"T% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"TplI ppt/slides/_rels/slide2.xml.rels0Dٻ-pPc\ 'h6m1֋Bǝygߑ:ji*B~_!:|'D{mvǘ-ScQMm\/B]ìw ˒d4晤8J_M]+G#uX`Shck0ptL+ehw+O-釋pxPK"T% ppt/slides/_rels/slide3.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"TEKppt/notesSlides/notesSlide1.xmlTn1ڠUHT"8*6Z;^iIC^|ϙ9s칺JA6`]՘.t^՘>?;#zs}e=8Kޛ1  m%+[A`n3R뢨2ZĂuee\fA3oR ܲTavl7_IfiIcy(Q\˜RKs/&vɓmaeَ){W,֓,fGY (p 3Ue*r/ R J-rwpAg(4cajZr[g G&{X0NrE fv3F*=?}blK\)O ;ShQYl>E^h 8:H%XH/+G:O\-+Zdm@&WAb}ocXK ob-_J >F |7N1z0ݏUjj?{|6tFeg8:OןN|E!a*ppt/notesSlides/_rels/notesSlide1.xml.rels 0_%ݤADЃ 6?dPB<ۻ #$Nָ^_`84@,80B*>NU)AQTES&kZ i+`G_ؾƝW.͜43P_ۨxEq>!%:_$T~7OPK"T1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\(KapSez!7&1Gf(ۘh!u[2*Yk|EǸ0dK &kS3- /Xm#h6 X@3I)d, $ C`QwSqc:BЕW pF%?C]u#TK3>B:^R]xI#OzU~BK*/m ;[|QJ;P|ΑT)yW2[^ 5KaQމ4ل7aI{+ k !~މY/UəC-y!SW^:R[rv|r:y+㇕UB箸? za^PK"TXGdocProps/core.xmlN0_%=qR$=z "7޶V i7iS*!ip=2X0yܗE%3= 1Uy!~_ R8Zqͥݚ*mL f0c16mUxTk+6)Ø;TUsŶ%xMToZc{v-?T^67T0 SF@0" W/+W%:ܫ(n;k=i}ufO027n!q\tʻ(6ma {0jc: j'P;GWCkbHKw0J|3[}@m fo̸}CnI-W{,5{p(JK!{#ǟB; f{Js"sUʁ0.9Q8=)L(LY$Ϲ3FA猎s sF^xq {H=5!~{)n %CJ v@J;d NH!Q҇{ {CPK"T8gppt/_rels/presentation.xml.relsN _poi;ӌƘ|-%T,dd?',߃D;NhEqUmx$8(Gqケ' m@VہPڎ?X.9zMC45F۽su '`lCVEpÈ]NR\_bIĜ9luXˑjUt:w9<{|"1IJF[|(t9!veF 21W?PK"Tg[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+OaLɟjYF<ڼ\emKYUG =%n(8Ѧ'XY̠ JZ+=`fPK"Tzìm!ppt/notesMasters/notesMaster1.xmlYn8}_`A>.\ݨ:EDm hSӤEKv(%8M% Ùјy⺢᢬EX^% Y/-!1+07D/~y3`$5p 01C{.e3pIų! Ʀ5W>s ?:FNKf|tZΗas 2[n[!A9uߑU׀z`gRn]a:'3v;XKjh.9!JbW/y3n.x› >m1\A;͜nR+8;gFă) BQ:r-Skm>{m>?1 8nt^\A.(ɼJV)Es^ aSXt,:Գ[3?ߖms6@^QI>4\ȗ,% mNr2_ ٙ6ףQxJp`m11Bl_P7G&[#5]e@JZz 5m+b\g-;yCӂŠ ̱Fޏ̦d.5#È,C!m}6̄ IP? aJv'?Y?4b?!tø $a>fc`eY-9y;D%SJ0[% z诡i 'Xc@8Ak| @ PP' (ZI2h bj  PHs(+T4@ 0>*/~'џPKURocB ppt/media/image1.pngUT$~`ux  sb``p b``>$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}*: ppt/notesSlides/_rels/notesSlide1.xml.relsPK"T1G# @!= ppt/slideMasters/slideMaster1.xmlPK"TjA/ ,Xppt/slideMasters/_rels/slideMaster1.xml.relsPK"TW[Content_Types].xmlPK"TXGdocProps/core.xmlPK"Ty%-docProps/custom.xmlPK"TQ _rels/.relsPK"T)+/ ppt/presentation.xmlPK"T8gUppt/_rels/presentation.xml.relsPK"Tg[gl!ppt/viewProps.xmlPK"TX$,?ppt/notesMasters/_rels/notesMaster1.xml.relsPK"Tzìm!< ppt/notesMasters/notesMaster1.xmlPKURocB &ppt/media/image1.pngUT$~`ux PK!S)ppt/tableStyles.xmlUTux PK! 0A*ppt/presProps.xmlUTux PK"T ,ppt/theme/theme2.xmlPK!:~"T42ppt/theme/theme1.xmlUTux PK!ђ7-;8ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux PK!ђ7-T9ppt/slideLayouts/_rels/slideLayout16.xml.relsUTux PK!ђ7,m:ppt/slideLayouts/_rels/slideLayout1.xml.relsUTux PK!ђ7,;ppt/slideLayouts/_rels/slideLayout7.xml.relsUTux PK!ђ7,<ppt/slideLayouts/_rels/slideLayout6.xml.relsUTux PK!ђ7-=ppt/slideLayouts/_rels/slideLayout10.xml.relsUTux PK!ђ7->ppt/slideLayouts/_rels/slideLayout11.xml.relsUTux PK!ђ7,?ppt/slideLayouts/_rels/slideLayout9.xml.relsUTux PK!ђ7,@ppt/slideLayouts/_rels/slideLayout8.xml.relsUTux PK!ђ7,Bppt/slideLayouts/_rels/slideLayout3.xml.relsUTux PK!ђ7,/Cppt/slideLayouts/_rels/slideLayout2.xml.relsUTux PK!ђ7-GDppt/slideLayouts/_rels/slideLayout14.xml.relsUTux PK!ђ7-`Eppt/slideLayouts/_rels/slideLayout15.xml.relsUTux PK!ђ7-yFppt/slideLayouts/_rels/slideLayout13.xml.relsUTux PK!ђ7-Gppt/slideLayouts/_rels/slideLayout12.xml.relsUTux PK!ђ7,Hppt/slideLayouts/_rels/slideLayout4.xml.relsUTux PK!ђ7,Ippt/slideLayouts/_rels/slideLayout5.xml.relsUTux PK! L|!Jppt/slideLayouts/slideLayout7.xmlUTux PK!3Y "Mppt/slideLayouts/slideLayout11.xmlUTux PK!Ex"Qppt/slideLayouts/slideLayout10.xmlUTux PK!z&!Vppt/slideLayouts/slideLayout6.xmlUTux PK!=[!Yppt/slideLayouts/slideLayout4.xmlUTux PK!im "f]ppt/slideLayouts/slideLayout12.xmlUTux PK!h "cppt/slideLayouts/slideLayout13.xmlUTux PK!s@y#!gppt/slideLayouts/slideLayout5.xmlUTux PK!=t!(mppt/slideLayouts/slideLayout1.xmlUTux PK!f\$ "~rppt/slideLayouts/slideLayout17.xmlUTux PK!(D "2vppt/slideLayouts/slideLayout16.xmlUTux PK!)J.  !yppt/slideLayouts/slideLayout2.xmlUTux PK!;FdvU&"}ppt/slideLayouts/slideLayout14.xmlUTux PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux PK!!gppt/slideLayouts/slideLayout3.xmlUTux PK!K%!ppt/slideLayouts/slideLayout8.xmlUTux PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux PK!x%,docProps/app.xmlUTux PK;;pandoc-3.1.3/test/pptx/blanks/nbsp-in-body/0000755000000000000000000000000007346545000016700 5ustar0000000000000000pandoc-3.1.3/test/pptx/blanks/nbsp-in-body/input.native0000644000000000000000000000047507346545000021255 0ustar0000000000000000[Header 1 ("first-slide",[],[]) [Str "First",Space,Str "slide"] ,Para [Str "Uninteresting,",Space,Str "normal"] ,Header 1 ("section",[],[]) [] ,Para [Str "\160"] ,Header 1 ("third-slide",[],[]) [Str "Third",Space,Str "slide"] ,Para [Str "Was",Space,Str "the",Space,Str "previous",Space,Str "one",Space,Str "blank?"]] pandoc-3.1.3/test/pptx/blanks/nbsp-in-body/output.pptx0000644000000000000000000007076707346545000021176 0ustar0000000000000000PK"T>xppt/slides/slide1.xmlTn!sWU֑$}RKv>؋M@6㶩d/}9sV7d=XPV8쾧OwQK6vCJc, ΃Þ_h\,ҹ?v;%։6U'cCaJ/2Ѳ(#;~ ~סu J9Xn93ճk~Cطw.<2>KV\{b{GY\eeSUI|HGďHCQņ*XR$< Fn,;}?]K'g-tLt@>˂9="TY߳Ggaaf_V*DVrU*vkݻOͻ&$D֚ _Tr:L| T%gMe'{4f'PK"T ppt/slides/slide2.xmlQN0wBQ^ ܠRX&?6!=zYoـw T^5rmcXXB F+tz":P$2ᡪ O5^~Zti&!EkFmB\-l0fgI<( gB<7R8#p$fT>gNXl8gTaC[|”119gEZkhaWPK"Tp)Rppt/slides/slide3.xmlTMk1+BF ,Y`il Iޮ}r4C/H#̛ޢ[Z|ff4}/w TjBG{,bt! 4X&kWЊgODSidhQă1 B5hCH0m/  ߼ۺ/HdFj1FdLul7n{$=NfJ%z.^5_ޫ'mU7U;qtp+˞26*6T*=Nxr ,f0|v#gpv-򜧴[ک+KʩA=K_ dľ. 7.vBzrU,viݻͻkb"62VqhNJ>^W&E(=Ac@IQTH{dPK"T% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T)A% ppt/slides/_rels/slide2.xml.rels 0_%ݤzPP$BMI*ͱwvn?v"oxaO+ Wi;CD.4Ha9\KrD+] >Z5 BFv#klSb@%?l? F٢?*X»X VDk}c:R55mPK"T% ppt/slides/_rels/slide3.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"TuJ [Content_Types].xml͗]o0 vGD/qЕ6i#Q<`Rop)"v|1<h8CfQJO3jqDQI@zN0),\!zK.bݕqyȧJQǤ8%;5fOBĿ5ZEqe6%^/4C=K6R~dp10%=8P( r_\)KLOt%Tݣi"m֤a%cyY%0s>[|MzҭPK"Ty%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<G|A5Cn[ Zd =O1E,J1OIbu@2HQƢ;(E|"y's9.Rry!%3$IIBhgQo\/PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlRxppt/slides/slide1.xmlPK"T ppt/slides/slide2.xmlPK"Tp)Rppt/slides/slide3.xmlPK"T% ppt/slides/_rels/slide1.xml.relsPK"T)A% ppt/slides/_rels/slide2.xml.relsPK"T% ppt/slides/_rels/slide3.xml.relsPK"T.!ppt/slideMasters/slideMaster1.xmlPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsPK"TuJ [Content_Types].xmlPK"TEhSGdocProps/core.xmlPK"Ty%docProps/custom.xmlPK"TQ _rels/.relsPK"T3o3ppt/presentation.xmlPK"TLHppt/_rels/presentation.xml.relsPK"T0K 8ppt/viewProps.xmlPK"Tppt/tableStyles.xmlPK"T }.ppt/presProps.xmlPK"T|ppt/theme/theme2.xmlPK"T mu!#ppt/theme/theme1.xmlPK"Tђ7-)ppt/slideLayouts/_rels/slideLayout11.xml.relsPK"Tђ7-*ppt/slideLayouts/_rels/slideLayout10.xml.relsPK"Tђ7,+ppt/slideLayouts/_rels/slideLayout9.xml.relsPK"Tђ7,,ppt/slideLayouts/_rels/slideLayout8.xml.relsPK"Tђ7,-ppt/slideLayouts/_rels/slideLayout7.xml.relsPK"Tђ7,.ppt/slideLayouts/_rels/slideLayout6.xml.relsPK"Tђ7,/ppt/slideLayouts/_rels/slideLayout5.xml.relsPK"Tђ7,0ppt/slideLayouts/_rels/slideLayout4.xml.relsPK"Tђ7,1ppt/slideLayouts/_rels/slideLayout3.xml.relsPK"Tђ7,2ppt/slideLayouts/_rels/slideLayout2.xml.relsPK"Tђ7,3ppt/slideLayouts/_rels/slideLayout1.xml.relsPK"T'v!4ppt/slideLayouts/slideLayout9.xmlPK"TJI,!9ppt/slideLayouts/slideLayout8.xmlPK"TSd{g!>ppt/slideLayouts/slideLayout7.xmlPK"T}!Appt/slideLayouts/slideLayout6.xmlPK"TE˧:!Eppt/slideLayouts/slideLayout5.xmlPK"T?N!)Jppt/slideLayouts/slideLayout4.xmlPK"T6\#!nNppt/slideLayouts/slideLayout3.xmlPK"TD9Bi ! Sppt/slideLayouts/slideLayout2.xmlPK"TkO ' "Vppt/slideLayouts/slideLayout11.xmlPK"TF "Zppt/slideLayouts/slideLayout10.xmlPK"To@h)!r^ppt/slideLayouts/slideLayout1.xmlPK"T%1,obdocProps/app.xmlPK** 4epandoc-3.1.3/test/pptx/blanks/nbsp-in-body/templated.pptx0000644000000000000000000012244107346545000021600 0ustar0000000000000000PKDS^Tpppt/slides/slide1.xmlTn!sTU֑6yKv>rL6㦩d/}9sV75dT1izz~D9v>o>_ћu蒑K]xO1Ġ,Og>(_vX\2˵sgNXl8gTaC[|”119gEZkhaWPKDS7ppt/slides/slide3.xmlTj1FN ,Y^^BjKil $o_]V`K_f9g/G>Hkz|{3 \]l~uAqJMhE#$0zMc:JZT?\<%v*u<&>ʒrjPEasXdľ. 7.6BzrU,viݻͻGkbV2Vq_|Z5 BFv#klSb@%?l? F٢?*X»X VDk}c:R55mPKDS% ppt/slides/_rels/slide3.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PKDS1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\Lxm(}' B@ Q}Id{ϓd`䩷mC}D(#&1}jh0])0 3g֪;BL8NM \P'D&@vRXe3 4xS=.qw_e>U*e!LUQCjx.DZۘSbO%g{ YބjJ9H-!D,Ԙst c j)mlxwW3]ɹ54J{nӠgP.Bur"T$ՍT.BYUnVTN//Xe9z:G.S'縐YS] 5LݮR8;DEz/FRC}ߖ,>ل+;/dX\5KmN8H`ȋX WS G-fe%ʌ~PKDS,GdocProps/core.xml_O ſJ{ tjt݃fOXFVn^֮Mssjum>(ke`lYhUW1a=zG!Km&0hcC&5[-;!r#'`&":#۷=@ -h01`ZP|F:\m?NU(NCP뺢[֔ϗ~\J UleVSnsz2 ^YJ†ܣx|j֨.IIsJrrVFnN/@tACoPKDSy%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<Q\eNƈkb '0iM3i`+q?lxA,Ɍ[7%:ĖT-@a;x`á+Qυnb[? *̕EX3#a\(rzpzVQ yH&g$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKDSppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}ppt/slideLayouts/_rels/slideLayout4.xml.relsUTux PK!ђ7,$?ppt/slideLayouts/_rels/slideLayout5.xml.relsUTux PK! L|!<@ppt/slideLayouts/slideLayout7.xmlUTux PK!3Y "Cppt/slideLayouts/slideLayout11.xmlUTux PK!Ex"Gppt/slideLayouts/slideLayout10.xmlUTux PK!z&! Lppt/slideLayouts/slideLayout6.xmlUTux PK!=[!Oppt/slideLayouts/slideLayout4.xmlUTux PK!im "Rppt/slideLayouts/slideLayout12.xmlUTux PK!h "Xppt/slideLayouts/slideLayout13.xmlUTux PK!s@y#!]ppt/slideLayouts/slideLayout5.xmlUTux PK!=t!bppt/slideLayouts/slideLayout1.xmlUTux PK!f\$ "gppt/slideLayouts/slideLayout17.xmlUTux PK!(D "kppt/slideLayouts/slideLayout16.xmlUTux PK!)J.  !oppt/slideLayouts/slideLayout2.xmlUTux PK!;FdvU&"trppt/slideLayouts/slideLayout14.xmlUTux PK!p O;"!xppt/slideLayouts/slideLayout15.xmlUTux PK!!~ppt/slideLayouts/slideLayout3.xmlUTux PK!K%!ppt/slideLayouts/slideLayout8.xmlUTux PK!ҦB! ppt/slideLayouts/slideLayout9.xmlUTux PK!x%,docProps/app.xmlUTux PK77rpandoc-3.1.3/test/pptx/blanks/nbsp-in-heading/0000755000000000000000000000000007346545000017342 5ustar0000000000000000pandoc-3.1.3/test/pptx/blanks/nbsp-in-heading/input.native0000644000000000000000000000046407346545000021715 0ustar0000000000000000[Header 1 ("first-slide",[],[]) [Str "First",Space,Str "slide"] ,Para [Str "Uninteresting,",Space,Str "normal"] ,Header 1 ("section",[],[]) [Str "\160"] ,Header 1 ("third-slide",[],[]) [Str "Third",Space,Str "slide"] ,Para [Str "Was",Space,Str "the",Space,Str "previous",Space,Str "one",Space,Str "blank?"]] pandoc-3.1.3/test/pptx/blanks/nbsp-in-heading/output.pptx0000644000000000000000000007076707346545000021640 0ustar0000000000000000PK"T>xppt/slides/slide1.xmlTn!sWU֑$}RKv>؋M@6㶩d/}9sV7d=XPV8쾧OwQK6vCJc, ΃Þ_h\,ҹ?v;%։6U'cCaJ/2Ѳ(#;~ ~סu J9Xn93ճk~Cطw.<2>KV\{b{GY\eeSUI|HGďHCQņ*XR$< Fn,;}?]K'g-tLt@>˂9="TY߳Ggaaf_V*DVrU*vkݻOͻ&$D֚ _Tr:L| T%gMe'{4f'PK"T ppt/slides/slide2.xmlQN0wBQ^ ܠRX&?6!=zYoـw T^5rmcXXB F+tz":P$2ᡪ O5^~Zti&!EkFmB\-l0fgI<( gB<7R8#p$fT>gNXl8gTaC[|”119gEZkhaWPK"Tp)Rppt/slides/slide3.xmlTMk1+BF ,Y`il Iޮ}r4C/H#̛ޢ[Z|ff4}/w TjBG{,bt! 4X&kWЊgODSidhQă1 B5hCH0m/  ߼ۺ/HdFj1FdLul7n{$=NfJ%z.^5_ޫ'mU7U;qtp+˞26*6T*=Nxr ,f0|v#gpv-򜧴[ک+KʩA=K_ dľ. 7.vBzrU,viݻͻkb"62VqhNJ>^W&E(=Ac@IQTH{dPK"T% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T)A% ppt/slides/_rels/slide2.xml.rels 0_%ݤzPP$BMI*ͱwvn?v"oxaO+ Wi;CD.4Ha9\KrD+] >Z5 BFv#klSb@%?l? F٢?*X»X VDk}c:R55mPK"T% ppt/slides/_rels/slide3.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"TuJ [Content_Types].xml͗]o0 vGD/qЕ6i#Q<`Rop)"v|1<h8CfQJO3jqDQI@zN0),\!zK.bݕqyȧJQǤ8%;5fOBĿ5ZEqe6%^/4C=K6R~dp10%=8P( r_\)KLOt%Tݣi"m֤a%cyY%0s>[|MzҭPK"Ty%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<G|A5Cn[ Zd =O1E,J1OIbu@2HQƢ;(E|"y's9.Rry!%3$IIBhgQo\/PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlRxppt/slides/slide1.xmlPK"T ppt/slides/slide2.xmlPK"Tp)Rppt/slides/slide3.xmlPK"T% ppt/slides/_rels/slide1.xml.relsPK"T)A% ppt/slides/_rels/slide2.xml.relsPK"T% ppt/slides/_rels/slide3.xml.relsPK"T.!ppt/slideMasters/slideMaster1.xmlPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsPK"TuJ [Content_Types].xmlPK"TEhSGdocProps/core.xmlPK"Ty%docProps/custom.xmlPK"TQ _rels/.relsPK"T3o3ppt/presentation.xmlPK"TLHppt/_rels/presentation.xml.relsPK"T0K 8ppt/viewProps.xmlPK"Tppt/tableStyles.xmlPK"T }.ppt/presProps.xmlPK"T|ppt/theme/theme2.xmlPK"T mu!#ppt/theme/theme1.xmlPK"Tђ7-)ppt/slideLayouts/_rels/slideLayout11.xml.relsPK"Tђ7-*ppt/slideLayouts/_rels/slideLayout10.xml.relsPK"Tђ7,+ppt/slideLayouts/_rels/slideLayout9.xml.relsPK"Tђ7,,ppt/slideLayouts/_rels/slideLayout8.xml.relsPK"Tђ7,-ppt/slideLayouts/_rels/slideLayout7.xml.relsPK"Tђ7,.ppt/slideLayouts/_rels/slideLayout6.xml.relsPK"Tђ7,/ppt/slideLayouts/_rels/slideLayout5.xml.relsPK"Tђ7,0ppt/slideLayouts/_rels/slideLayout4.xml.relsPK"Tђ7,1ppt/slideLayouts/_rels/slideLayout3.xml.relsPK"Tђ7,2ppt/slideLayouts/_rels/slideLayout2.xml.relsPK"Tђ7,3ppt/slideLayouts/_rels/slideLayout1.xml.relsPK"T'v!4ppt/slideLayouts/slideLayout9.xmlPK"TJI,!9ppt/slideLayouts/slideLayout8.xmlPK"TSd{g!>ppt/slideLayouts/slideLayout7.xmlPK"T}!Appt/slideLayouts/slideLayout6.xmlPK"TE˧:!Eppt/slideLayouts/slideLayout5.xmlPK"T?N!)Jppt/slideLayouts/slideLayout4.xmlPK"T6\#!nNppt/slideLayouts/slideLayout3.xmlPK"TD9Bi ! Sppt/slideLayouts/slideLayout2.xmlPK"TkO ' "Vppt/slideLayouts/slideLayout11.xmlPK"TF "Zppt/slideLayouts/slideLayout10.xmlPK"To@h)!r^ppt/slideLayouts/slideLayout1.xmlPK"T%1,obdocProps/app.xmlPK** 4epandoc-3.1.3/test/pptx/blanks/nbsp-in-heading/templated.pptx0000644000000000000000000012244107346545000022242 0ustar0000000000000000PKDS^Tpppt/slides/slide1.xmlTn!sTU֑6yKv>rL6㦩d/}9sV75dT1izz~D9v>o>_ћu蒑K]xO1Ġ,Og>(_vX\2˵sgNXl8gTaC[|”119gEZkhaWPKDS7ppt/slides/slide3.xmlTj1FN ,Y^^BjKil $o_]V`K_f9g/G>Hkz|{3 \]l~uAqJMhE#$0zMc:JZT?\<%v*u<&>ʒrjPEasXdľ. 7.6BzrU,viݻͻGkbV2Vq_|Z5 BFv#klSb@%?l? F٢?*X»X VDk}c:R55mPKDS% ppt/slides/_rels/slide3.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PKDS1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\Lxm(}' B@ Q}Id{ϓd`䩷mC}D(#&1}jh0])0 3g֪;BL8NM \P'D&@vRXe3 4xS=.qw_e>U*e!LUQCjx.DZۘSbO%g{ YބjJ9H-!D,Ԙst c j)mlxwW3]ɹ54J{nӠgP.Bur"T$ՍT.BYUnVTN//Xe9z:G.S'縐YS] 5LݮR8;DEz/FRC}ߖ,>ل+;/dX\5KmN8H`ȋX WS G-fe%ʌ~PKDS,GdocProps/core.xml_O ſJ{ tjt݃fOXFVn^֮Mssjum>(ke`lYhUW1a=zG!Km&0hcC&5[-;!r#'`&":#۷=@ -h01`ZP|F:\m?NU(NCP뺢[֔ϗ~\J UleVSnsz2 ^YJ†ܣx|j֨.IIsJrrVFnN/@tACoPKDSy%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<Q\eNƈkb '0iM3i`+q?lxA,Ɍ[7%:ĖT-@a;x`á+Qυnb[? *̕EX3#a\(rzpzVQ yH&g$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKDSppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}ppt/slideLayouts/_rels/slideLayout4.xml.relsUTux PK!ђ7,$?ppt/slideLayouts/_rels/slideLayout5.xml.relsUTux PK! L|!<@ppt/slideLayouts/slideLayout7.xmlUTux PK!3Y "Cppt/slideLayouts/slideLayout11.xmlUTux PK!Ex"Gppt/slideLayouts/slideLayout10.xmlUTux PK!z&! Lppt/slideLayouts/slideLayout6.xmlUTux PK!=[!Oppt/slideLayouts/slideLayout4.xmlUTux PK!im "Rppt/slideLayouts/slideLayout12.xmlUTux PK!h "Xppt/slideLayouts/slideLayout13.xmlUTux PK!s@y#!]ppt/slideLayouts/slideLayout5.xmlUTux PK!=t!bppt/slideLayouts/slideLayout1.xmlUTux PK!f\$ "gppt/slideLayouts/slideLayout17.xmlUTux PK!(D "kppt/slideLayouts/slideLayout16.xmlUTux PK!)J.  !oppt/slideLayouts/slideLayout2.xmlUTux PK!;FdvU&"trppt/slideLayouts/slideLayout14.xmlUTux PK!p O;"!xppt/slideLayouts/slideLayout15.xmlUTux PK!!~ppt/slideLayouts/slideLayout3.xmlUTux PK!K%!ppt/slideLayouts/slideLayout8.xmlUTux PK!ҦB! ppt/slideLayouts/slideLayout9.xmlUTux PK!x%,docProps/app.xmlUTux PK77rpandoc-3.1.3/test/pptx/code-custom/0000755000000000000000000000000007346545000015347 5ustar0000000000000000pandoc-3.1.3/test/pptx/code-custom/output.pptx0000644000000000000000000007213207346545000017631 0ustar0000000000000000PK"TZ9/ppt/slides/slide1.xmlV]o }߯@~oqRi&}=T]d? :~lIv0\=\KI*Nh5O&iB@q '?7_>%w[3s2#܌͓{3J段k%iw4 !JIiLoy.8||_ ĖI=,?ŏh^|]z8kjک/Lzqig4(*Ј<4Co |KnUz]Rgg}3f? ebkQP3Kf "ֆ}t~X< _cYh$EE19(ϝu&a~!2pG#m ]^MW Q YIL^hO2"Ob.YMߣy"IС/R'C^NmrYCodAA lżAc3p8×wb뷏x:V)nWkhɄ7B=4XPK"TWZi ppt/slides/slide2.xmlWn }ďSyukIU)Cl4 4k2%{νF86L %a_p0)`iJ2yI+lΥ­-uC] wQq4L0ۯ%G?VTDS ӔL)M B'kJ}Oԟ˓z#Nh!@Jg׎E3"vq,u城h2^IXt^~ewQt6{rm?FVsf9'r1hd! CKrmROURz0VïMfm>H~;+Oи5^@ 'RN.v<[Bh@ɊuUmأ۝!ZË純P *Ha/!vg.\{.VᖝqE(&ֱ3ޮdo|h^aH`cWfoWuhr>پ$=$=&PK"T% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"Tzwft% ppt/slides/_rels/slide3.xml.rels 0_%ݤH^D(x!٦$؂;; S;7d㰧t+4g۝mN"GMHD\0.%9|匚!_B#;TՉ5L)S{ #l,MF],~+́ҵ1išm6_PK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"TuJ [Content_Types].xml͗]o0 vGD/qЕ6i#Q<`Rop)"v|1<h8CfQJO3jqDQI@zN0),\!zK.bݕqyȧJQǤ8%;5fOBĿ5ZEqe6%^/4C=K6R~dp10%=8P( r_\)KLOt%Tݣi"G|A5Cn[ Zd =O1E,J1OIbu@2HQƢ;(E|"y's9.Rry!%3$IIBhgQo\/PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlR (&gӒ6/sOhM{뵸j<"+ -VFdIe|-e:K'*$0y *r/%x"<ϩM>צЛ5hЬ3H`24o~،;A\1%h_#޼~UF lV2a Ev#PK!,@Yi ppt/slides/slide2.xmlWn }1I4T[N,R hPy6ieW[J)˹{m]2Pi4#@x&0y}_=\LٍL4r4* :+H۵P%2vri!Jq<%N8D;<P.]|U rs:uQbPY:Gj]f_W-w/PK! kppt/slides/slide3.xml[o0G~@B҉;B4Mȳ&±-R>=NvPPр_F:_^ r19WU fz^ʚccF[a\Nݒ 0Ex4zNkViǻCMQT\1|UK$N*L_V!٬Ӥ{%Ee|DRhN8{gvyTЬ9!@{KuӍÐemأe)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\Lxm(}' B@ Q}Id{ϓd`䩷mC}D(#&1}jh0])0 3g֪;BL8NM \P'D&@vRXe3 4xS=.qw_e>U*e!LUQCjx.DZۘSbO%g{ YބjJ9H-!D,Ԙst c j)mlxwW3]ɹ54J{nӠgP.Bur"T$ՍT.BYUnVTN//Xe9z:G.S'縐YS] 5LݮR8;DEz/FRC}ߖ,>ل+;/dX\5KmN8H`ȋX WS G-fe%ʌ~PK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<Q\eNƈkb '0iM3i`+q?lxA,Ɍ[7%:ĖT-@a;x`á+Qυnb[? *̕EX3#a\(rzpzVQ yH&g$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPK^PSppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}ppt/slideLayouts/_rels/slideLayout13.xml.relsUTux PK!ђ7-O?ppt/slideLayouts/_rels/slideLayout12.xml.relsUTux PK!ђ7,h@ppt/slideLayouts/_rels/slideLayout4.xml.relsUTux PK!ђ7,Appt/slideLayouts/_rels/slideLayout5.xml.relsUTux PK! L|!Bppt/slideLayouts/slideLayout7.xmlUTux PK!3Y "kEppt/slideLayouts/slideLayout11.xmlUTux PK!Ex"{Ippt/slideLayouts/slideLayout10.xmlUTux PK!z&!hNppt/slideLayouts/slideLayout6.xmlUTux PK!=[!qQppt/slideLayouts/slideLayout4.xmlUTux PK!im "#Uppt/slideLayouts/slideLayout12.xmlUTux PK!h "J[ppt/slideLayouts/slideLayout13.xmlUTux PK!s@y#!k_ppt/slideLayouts/slideLayout5.xmlUTux PK!=t!dppt/slideLayouts/slideLayout1.xmlUTux PK!f\$ ";jppt/slideLayouts/slideLayout17.xmlUTux PK!(D "mppt/slideLayouts/slideLayout16.xmlUTux PK!)J.  !oqppt/slideLayouts/slideLayout2.xmlUTux PK!;FdvU&"tppt/slideLayouts/slideLayout14.xmlUTux PK!p O;"}zppt/slideLayouts/slideLayout15.xmlUTux PK!!$ppt/slideLayouts/slideLayout3.xmlUTux PK!K%!vppt/slideLayouts/slideLayout8.xmlUTux PK!ҦB!fppt/slideLayouts/slideLayout9.xmlUTux PK!x%,cdocProps/app.xmlUTux PK77Βpandoc-3.1.3/test/pptx/code/0000755000000000000000000000000007346545000014037 5ustar0000000000000000pandoc-3.1.3/test/pptx/code/input.native0000644000000000000000000000232107346545000016404 0ustar0000000000000000[Header 1 ("header-with-inline-code",[],[]) [Str "Header",Space,Str "with",Space,Code ("",[],[]) "inline code"] ,CodeBlock ("",[],[]) "Code at level 0" ,BulletList [[Para [Str "Bullet",Space,Str "item",Space,Str "with",Space,Code ("",[],[]) "inline code"] ,CodeBlock ("",[],[]) "Code block at level 1" ,BulletList [[Para [Str "with",Space,Code ("",[],[]) "nested"] ,CodeBlock ("",[],[]) "lvl2\nlvl2\nlvl2" ,Header 2 ("second-heading-level-with-code",[],[]) [Str "Second",Space,Str "heading",Space,Str "level",Space,Str "with",Space,Code ("",[],[]) "code"]]]]] ,Header 1 ("syntax-highlighting",[],[]) [Str "Syntax",Space,Str "highlighting"] ,CodeBlock ("",["haskell"],[]) "id :: a -> a\nid x = x" ,BulletList [[Para [Str "Nested"] ,CodeBlock ("",["haskell"],[]) "g :: Int -> Int\ng x = x * 3"]] ,Header 1 ("two-column-slide",[],[]) [Str "Two",Space,Str "column",Space,Str "slide"] ,Div ("",["columns"],[]) [Div ("",["column"],[("width","50%")]) [BulletList [[Plain [Str "A",Space,Str "total",Space,Str "alternative",Space,Str "for",Space,Code ("",[],[]) "head"]]]] ,Div ("",["column"],[("width","50%")]) [CodeBlock ("",[],[]) "safeHead :: [a] -> Maybe a\nsafeHead [] = Nothing\nsafeHead (x:_) = Just x"]]] pandoc-3.1.3/test/pptx/code/output.pptx0000644000000000000000000007212707346545000016325 0ustar0000000000000000PK"Tq7(ppt/slides/slide1.xmlUn0+PFv_ 5`hjeHﻤ$NTA^J}]JRuBy2ILlV =#RvXiQYK]hO0"0׬ɟJWh,aH@t*t˃P?g6I;CodA= l鵜wf _Bގޑ!6MOox"V)Vk7軉 E/PK"T YS ppt/slides/slide2.xmlWn }1IT[N4R hy6iҥUgJV6s9\P|}S TDi*x  LyFOf|-0\'( cd R"}.$vn)Tb~Za`(z\Ҍ|٪$4 0d,M]P&Ưޡe3B9W)9S'T9$iδqMWM @C%Rm:kndh5n_< IVb'aaP50xHk paEyF{`ƁE7,ί7kga(J63||OcB)v?}D5%*ĶfL^t_øWf$Hc 8{OdViAgv"==Ҟ3ኛm08[~3}hhO9]]ݫAFz*" |^/PK"Tre!ippt/slides/slide3.xml[o0Gy@BaQ*$K646|R5*OszĆlQhrqXs{1jf' BU*cbCUl@sWZy f ,8>:ſcz^{.KVjfj۰ yx lv8{+ߝ?Ax 3)\+8z#__#d0վ{M<&Çec PK"T% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"Tzwft% ppt/slides/_rels/slide3.xml.rels 0_%ݤH^D(x!٦$؂;; S;7d㰧t+4g۝mN"GMHD\0.%9|匚!_B#;TՉ5L)S{ #l,MF],~+́ҵ1išm6_PK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"TuJ [Content_Types].xml͗]o0 vGD/qЕ6i#Q<`Rop)"v|1<h8CfQJO3jqDQI@zN0),\!zK.bݕqyȧJQǤ8%;5fOBĿ5ZEqe6%^/4C=K6R~dp10%=8P( r_\)KLOt%Tݣi"G|A5Cn[ Zd =O1E,J1OIbu@2HQƢ;(E|"y's9.Rry!%3$IIBhgQo\/PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlR/~,*GA+}lq E4Y^r)R(%. ZgRK'*$x * %x"Ԥďj2РUe!AdQ`S3yrq/!oGkHGzzb\x+{5o`DGv"O/PK! V;YS ppt/slides/slide2.xmlWn }1I4T[N4R hy6iҥUGJV6s9\P|s[ TDi*x . LyFϋqt;fPF12Pg)p;DvUB-D0GDGzeXhFl]nE2.MvAh WQrʲ9^\(B\W?˙j֜pT4lgڸϫ_!䡉zJ@FB7Hjf4ΊCYq($p'0[8ZP |/ mH#ݽeFZ0n[LM˳f%LX>'αy%RA9a=6G5B [.5Yb0W;f e }މ9=2;*_1*F}½8wp/5VB {{9s|^A#ugN%CnE+e[EQe'ۉ(\J΄+nJ!oe? |?tuuyEɪSպߋU_{O迒&PK!Ķ|ippt/slides/slide3.xml[o0Gy@B҉;B4MsNǶl7K;IAAE^|;/s~*KNG :2K>/H.&&u2rU.YRzoRƜ(XTd+];JQK6W*!(*oXը|ĢteeܐXt&F+)(sGfaH5ﭙi3P'k̒Xoj!r-lzmulYXփVβ(y>6lv6 V5T-*/N↢ITЉܸtCoJkC|Hlh+ma[UJ~Mę d#К8TN6 cT+1w͐OwZUۅJ؀OT $XjCqVy}7:\)G%x.=ZEAm61(Ct^~R" s'/a4k~G >-^@SKzOS2|\9A_m_Q6<,;&PK!% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK!% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK!zwft% ppt/slides/_rels/slide3.xml.rels 0_%ݤH^D(x!٦$؂;; S;7d㰧t+4g۝mN"GMHD\0.%9|匚!_B#;TՉ5L)S{ #l,MF],~+́ҵ1išm6_PK!1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\Lxm(}' B@ Q}Id{ϓd`䩷mC}D(#&1}jh0])0 3g֪;BL8NM \P'D&@vRXe3 4xS=.qw_e>U*e!LUQCjx.DZۘSbO%g{ YބjJ9H-!D,Ԙst c j)mlxwW3]ɹ54J{nӠgP.Bur"T$ՍT.BYUnVTN//Xe9z:G.S'縐YS] 5LݮR8;DEz/FRC}ߖ,>ل+;/dX\5KmN8H`ȋX WS G-fe%ʌ~PK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<Q\eNƈkb '0iM3i`+q?lxA,Ɍ[7%:ĖT-@a;x`á+Qυnb[? *̕EX3#a\(rzpzVQ yH&g$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPK^PSppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}ppt/slideLayouts/_rels/slideLayout13.xml.relsUTux PK!ђ7-N?ppt/slideLayouts/_rels/slideLayout12.xml.relsUTux PK!ђ7,g@ppt/slideLayouts/_rels/slideLayout4.xml.relsUTux PK!ђ7,Appt/slideLayouts/_rels/slideLayout5.xml.relsUTux PK! L|!Bppt/slideLayouts/slideLayout7.xmlUTux PK!3Y "jEppt/slideLayouts/slideLayout11.xmlUTux PK!Ex"zIppt/slideLayouts/slideLayout10.xmlUTux PK!z&!gNppt/slideLayouts/slideLayout6.xmlUTux PK!=[!pQppt/slideLayouts/slideLayout4.xmlUTux PK!im ""Uppt/slideLayouts/slideLayout12.xmlUTux PK!h "I[ppt/slideLayouts/slideLayout13.xmlUTux PK!s@y#!j_ppt/slideLayouts/slideLayout5.xmlUTux PK!=t!dppt/slideLayouts/slideLayout1.xmlUTux PK!f\$ ":jppt/slideLayouts/slideLayout17.xmlUTux PK!(D "mppt/slideLayouts/slideLayout16.xmlUTux PK!)J.  !nqppt/slideLayouts/slideLayout2.xmlUTux PK!;FdvU&"tppt/slideLayouts/slideLayout14.xmlUTux PK!p O;"|zppt/slideLayouts/slideLayout15.xmlUTux PK!!#ppt/slideLayouts/slideLayout3.xmlUTux PK!K%!uppt/slideLayouts/slideLayout8.xmlUTux PK!ҦB!eppt/slideLayouts/slideLayout9.xmlUTux PK!x%,bdocProps/app.xmlUTux PK77͒pandoc-3.1.3/test/pptx/comparison/both-columns/0000755000000000000000000000000007346545000017711 5ustar0000000000000000pandoc-3.1.3/test/pptx/comparison/both-columns/input.native0000644000000000000000000000153007346545000022257 0ustar0000000000000000[Header 1 ("a-slide",[],[]) [Str "A",Space,Str "slide"] ,Div ("",["columns"],[]) [Div ("",["column"],[]) [Para [Str "A",Space,Str "paragraph",Space,Str "here"] ,Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidth 0.125) ,(AlignDefault,ColWidth 0.125)] (TableHead ("",[],[]) []) [(TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "plus"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "a",Space,Str "table"]]]])] (TableFoot ("",[],[]) []) ,Para [Str "Then",Space,Str "some",Space,Str "more",Space,Str "text"]] ,Div ("",["column"],[]) [Para [Str "A",Space,Str "paragraph",Space,Str "here"] ,Para [Image ("",[],[]) [Str "Plus",Space,Str "an",Space,Str "image"] ("lalune.jpg","fig:")]]]] pandoc-3.1.3/test/pptx/comparison/both-columns/output.pptx0000644000000000000000000012677707346545000022212 0ustar0000000000000000PK"TGnppt/slides/slide1.xmlWr(S0wdɱ=u:3I&X`]ξB6F~A?l+6Di*,J^Ljt;G.˩fXVh)(I۽P2vV+lUT q<< y\҂\b]nj%0dR7)ڤ"ڪ=\d#>Bq)(yPb N8, ;MM= DRUn,`/tdk@QwQ⇍1삫=|UDD # 8(Ԁ eCw,yVqʢ u^ ,X)ѼXLcdԽ#gI!x_hF1q;8Ď6lqsPAJ0Q ^)zJOD .D ŭ5ն[هy<XO{HJ@=;Gm9^agd|&45ñ_uNIXNWC^#Zpn`!^R`8tR3:;A5oy*=~Efߪܒr@lSޑO%@J(<Γ ӯk Qj.}(".uIWwbkNC7[!VRЃ}̹ȥ0chޏQyK ԔT bQqnMm1EȥbUkI` Zxٰ]GXIf}Z^RIvv.}QuKh,>1-1lqxbaE`%@ NP#OPK"TA(| ppt/slides/_rels/slide1.xml.rels 0_%ݤc/">@Hi!IEޠ qm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"Tw: [Content_Types].xml͗n@_pȪmmD/z0ZwEӽ,;d2 zsІI{ "3hx*LOUwh@*3SKE/i7IaA؆4~tZq [L". }T"jqdkȜxB 031J66U9oX=bTW12j A`0E3)d01 -56s,1)>|K9hզQ pC5rVm.]rEP7.Bu]wj,ygdŵ>G.se}eV|8uK)e 'H(GHj8w̲֖3c%}BZsRS&|C,kCtS"gPK"TmȁGdocProps/core.xmlN0_%=q⪀$=z "7޶V i7iS*aa96w:q~WNI/K9E8 "_k"E%cw#Q+j$JGi~`;ԯM' ٮĴ 1|q A8r@o) o*1rW hA,jk0%wv!57m<3iJ*_ ^Y}0gnt.̖Voe5چ1#gFZUg:H Ȥ'FA}'Fap0@ O!%~\)'waap R;$C^ ҨHq4Br?cXw`X9,R{6~ 8? |,"8٣cVEr/Skz&ZHi:'' g4KQeȓ l/'q1eN( ƃ|F,mVT;z$O~PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlR\/gHSN1iN /dI-*ZLQp~ „WsrRz#uA(ʉ3uJH+ϑV*A3z>yX>+JLlUT>*wi RЙ!\tZlIX5S2.UaGpmgnҭAivci~{7JpGuЫNQs1Z2M#!)CdKRn2Ga Z4)Gx84qQIt෮^-*8dʵy2[g|QnD9cNT_} i2j)S3178 gT{òdaF*}?ɒ(RLΩ:R;5Ü40ϥ0`qe=='?T}$rJ$(0߿?`3q$x'3!bv7d"/|q9 "s",.y>f0ë6 a88Onytˁ.۰jeC,K^8{FIU_>;Kpkڿb A.gh`Nu_׊7zk.[ʁ|Ω@ZRQdO>=740}M6+,"QBdw+A7YVC>Bs"VJ45ahqwg9RSZ,(>fa}kjIs;]gPR֞ந:^dސޑVoFXb}ǚE<@vfqN<̆ iFؗ`C?)nEVa^`1q%tKZnvP}_NQr'abFG45"}XAVU(˿PKDS+I ppt/slides/_rels/slide1.xml.rels 0_%ݤc/">@Hi!bޠ f,HtehE.c,yY]UK?3`IC<9v K:#q͢_*X£-X5f~ӂ ;ZO4c[&Po_lPKDSi\??ppt/media/image2.jpgweX^.tKww# XbE钐\iNYJ@S_o}<̙w杧5:L ;'4@ a@`0cSSQQSPг3вQP01rprpS3 s sqs KKECAmO]l-A$`<_00…rL aaba@$X`a2{8Hrn] Q+Il6ߧzSb{? $eVxZ$Tni?B$! ak!$Y[ bjΘ*K6kfjOAWd|(_#˲Mj5EV꿮-\\#ψh*lqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPKDS1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\ihI$ai=4{w]SRQ$?%5fLkx-Dƌ2g[BLT,7%6,o@} H,L ^ iшES.!d,1āBIЖ*MĤDrjMuqSFi0xyV u"ԹPK'.\jl;Iu$Pn>n6+'@'{]$m35T eq>G.sHgY7cޝ5H.R8:DEz+F9DR?c\ 95Vڙ2XZڜ2f$Rx6l@i=%ɿaPKDS}5GdocProps/core.xmlOO!ſʆ.5Fv{5o-'0ڭMzx4ox7'b6n3'oeyGmP>K"HEnsI0'[ (Mj V*;\>Z К[j(XH~ZM,8LWѦ i \ɽOf2}_s:ZP:mhe^}":eh.r1>)ﳇՒ5yYnV^L3']O1ohPKDSy%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<31)7ǒxLݍ0c~DP$ARE aD3EŝrS?VFR8 V ]]٣sRG/K$s'APW#ҫ@NRkw0J|` [A |Y+n#yL/=;m gciރjyKLVў=xdͲ+Ej$m#eSn23d yqH3w<o3:(h3ċ)l!EC>!>!%a0{;i!!9BCi i?8JpqOHPr1PKDS&ppt/_rels/presentation.xml.relsAN0Eb͞8)P!TrLmCjQTU~6?a Q;+*J`hm|o`^:b}diF<{ Ѧƅ^R*C˽T{"_咇L=ٶ?ޮi'zt 1" 8jU$7`:mN 0< ,E= E"gq12'Ot48g$Βg%Im9gq>2H/PKDSg[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+O$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKDSppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}"!-$߻Axڴ͋p],ķ6%Gk4bQɜ$x.VcsB$(묠%gRR-q(9pKD)r`٪BĀ`nUH qd=x<v&ַz;WN)$'^u={͔7 UCI`?_l7Ơ:Y!ꬸ>D%:W[ҫNQ\cdFBSɖvݎUsŒhSկ[RVz6q_s(9MKIX}zO#\L,8:US;cpq7{N2ZHSoGSCiaN"KE䂪S!u ,Q^Sm۝} 3) Xtڭ]dGQ_>ؿ+$=KkpƓ0][(= tWR/̡ ])m>'s"r7ׄtEiL{׃^'Q2Lazy5\g]6a5yC,I@YGq Бm*L5;+҇}k nMG $$ɷw=~E&_UnIkg(XP,)*@sIvU0kL[eʦse]s3x.r '|%/2pЇ dVj+ys!gK:nZ;vwYuø1-Qߚ(jN@x5I YxI\},J~c͢>M}T[Rr;!>c`/T8b2ԃ/?p&-W%Y̌:H_""+U Q BlZWT)~7ͧ] PK"TjA5 ppt/slides/_rels/slide1.xml.relsőM 1 RQ;nD\NuC[Eoo .I^Hc2qi8x،j{E.ԙHYqCsX0dV$2i}"2j< l\U3_=`ICܪo߶FˋED;q\lEԘ9PDa&D3eeQG8PK"Ti\??ppt/media/image1.jpgweX^.tKww# XbE钐\iNYJ@S_o}<̙w杧5:L ;'4@ a@`0cSSQQSPг3вQP01rprpS3 s sqs KKECAmO]l-A$`<_00…rL aaba@$X`a2{8Hrn] Q+Il6ߧzSb{? $eVxZ$Tni?B$! ak!$Y[ bjΘ*K6kfjOAWd|(_#˲Mj5EV꿮-\\#ψh*lqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"Tw: [Content_Types].xml͗n@_pȪmmD/z0ZwEӽ,;d2 zsІI{ "3hx*LOUwh@*3SKE/i7IaA؆4~tZq [L". }T"jqdkȜxB 031J66U9oX=bTW12j A`0E3)d01 -56s,1)>|K9hզQ pC5rVm.]rEP7.Bu]wj,ygdŵ>G.se}eV|8uK)e 'H(GHj8w̲֖3c%}BZsRS&|C,kCtS"gPK"TEhSGdocProps/core.xmln0_%=qbD8RRͲ`65 "qm֤a%cyY%0s>[|MzҭPK"Ty%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<aa96w:q~WNI/K9E8 "_k"E%cw#Q+j$JGi~`;ԯM' ٮĴ 1|q A8r@o) o*1rW hA,jk0%wv!57m<3iJ*_ ^Y}0gnt.̖Voe5چ1#gFZUg:H Ȥ'FA}'Fap0@ O!%~\)'waap R;$C^ ҨHq4Br?cXw`X9,R{6~ 8? |,"8٣cVEr/Skz&ZHi:'' g4KQeȓ l/'q1eN( ƃ|F,mVT;z$O~PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlR_ӨQ;TtvpFu -opW^X.=@LfvZZ1rS]송տӛs[ݝmHi1`z&tAI Z{x͟xCVFzGZAOcQ0k^' 9ed}3/5Na_Q ]QNIv#: [NX.[RWr;!>m7ITBq2H5(l@bڈ%M:HDD VBoB :! <J n>`%wPKDS5 ppt/slides/_rels/slide1.xml.relsőM 1 RG;nD\NuC[Eoo .I^Hc2q :qa,؋\3!.`,HtehE.e,yY]U3_=`ICܪ1=7޾mĵ.`7 w/؊1s?MiޣM~fl9ʢ2ٯ)8PKDSi\??ppt/media/image2.jpgweX^.tKww# XbE钐\iNYJ@S_o}<̙w杧5:L ;'4@ a@`0cSSQQSPг3вQP01rprpS3 s sqs KKECAmO]l-A$`<_00…rL aaba@$X`a2{8Hrn] Q+Il6ߧzSb{? $eVxZ$Tni?B$! ak!$Y[ bjΘ*K6kfjOAWd|(_#˲Mj5EV꿮-\\#ψh*lqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPKDS1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\ihI$ai=4{w]SRQ$?%5fLkx-Dƌ2g[BLT,7%6,o@} H,L ^ iшES.!d,1āBIЖ*MĤDrjMuqSFi0xyV u"ԹPK'.\jl;Iu$Pn>n6+'@'{]$m35T eq>G.sHgY7cޝ5H.R8:DEz+F9DR?c\ 95Vڙ2XZڜ2f$Rx6l@i=%ɿaPKDSsGdocProps/core.xml_O ſJ{ tQv=ib7wY@}{Y.ٛo\ι?Q-+}Ѫczxց BL`hcC&[5;8;!r#g`&" ۷=@ -h01`ZP<{#xn6Vu'1u]-zkO[?jL@M%*Tx^T<^\U/,%aCQX<>m֨)IIsJrVF_cgNOU !oh~PKDSy%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<31)7ǒxLݍ0c~DP$ARE aD3EŝrS?VFR8 V ]]٣sRG/K$s'APW#ҫ@NRkw0J|` [A |Y+n#yL/=;m gciރjyKLVў=xdͲ+Ej$m#eSn23d yqH3w<o3:(h3ċ)l!EC>!>!%a0{;i!!9BCi i?8JpqOHPr1PKDS&ppt/_rels/presentation.xml.relsAN0Eb͞8)P!TrLmCjQTU~6?a Q;+*J`hm|o`^:b}diF<{ Ѧƅ^R*C˽T{"_咇L=ٶ?ޮi'zt 1" 8jU$7`:mN 0< ,E= E"gq12'Ot48g$Βg%Im9gq>2H/PKDSg[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+O$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKDSppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}Bq)(yPb N8, ;MM= DRUn,`/tdk@QwQ⇍1삫=|UDD # 8(Ԁ eCw,yVqʢ u^ ,X)ѼXLcdԽ#gI!x_hF1q;8Ď6lqsPAJ0Q ^)zJOD .D ŭ5ն[هy<XO{HJ@=;Gm9^agd|&45ñ_uNIXNWC^#Zpn`!^R`8tR3:;A5oy*=~Efߪܒr@lSޑO%@J(<Γ ӯk Qj.}(".uIWwbkNC7[!VRЃ}̹ȥ0chޏQyK ԔT bQqnMm1EȥbUkI` Zxٰ]GXIf}Z^RIvv.}QuKh,>1-1lqxbaE`%@ NP#OPK"TA(| ppt/slides/_rels/slide1.xml.rels 0_%ݤc/">@Hi!IEޠ qm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"Tw: [Content_Types].xml͗n@_pȪmmD/z0ZwEӽ,;d2 zsІI{ "3hx*LOUwh@*3SKE/i7IaA؆4~tZq [L". }T"jqdkȜxB 031J66U9oX=bTW12j A`0E3)d01 -56s,1)>|K9hզQ pC5rVm.]rEP7.Bu]wj,ygdŵ>G.se}eV|8uK)e 'H(GHj8w̲֖3c%}BZsRS&|C,kCtS"gPK"TEhSGdocProps/core.xmln0_%=qbD8RRͲ`65 "qm֤a%cyY%0s>[|MzҭPK"Ty%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<aa96w:q~WNI/K9E8 "_k"E%cw#Q+j$JGi~`;ԯM' ٮĴ 1|q A8r@o) o*1rW hA,jk0%wv!57m<3iJ*_ ^Y}0gnt.̖Voe5چ1#gFZUg:H Ȥ'FA}'Fap0@ O!%~\)'waap R;$C^ ҨHq4Br?cXw`X9,R{6~ 8? |,"8٣cVEr/Skz&ZHi:'' g4KQeȓ l/'q1eN( ƃ|F,mVT;z$O~PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlR\/gHSN1iN /dI-*ZLQp~ „WsrRz#uA(ʉ3uJH+ϑV*A3z>yX>+JLlUT>*wi RЙ!\tZlIX5S2.UaGpmgnҭAivci~{7JpGuЫNQs1Z2M#!)CdKRn2Ga Z4)Gx84qQIt෮^-*8dʵy2[g|QnD9cNT_} i2j)S3178 gT{òdaF*}?ɒ(RLΩ:R;5Ü40ϥ0`qe=='?T}$rJ$(0߿?`3q$x'3!bv7d"/|q9 "s",.y>f0ë6 a88Onytˁ.۰jeC,K^8{FIU_>;Kpkڿb A.gh`Nu_׊7zk.[ʁ|Ω@ZRQdO>=740}M6+,"QBdw+A7YVC>Bs"VJ45ahqwg9RSZ,(>fa}kjIs;]gPR֞ந:^dސޑVoFXb}ǚE<@vfqN<̆ iFؗ`C?)nEVa^`1q%tKZnvP}_NQr'abFG45"}XAVU(˿PKDS+I ppt/slides/_rels/slide1.xml.rels 0_%ݤc/">@Hi!bޠ f,HtehE.c,yY]UK?3`IC<9v K:#q͢_*X£-X5f~ӂ ;ZO4c[&Po_lPKDSi\??ppt/media/image2.jpgweX^.tKww# XbE钐\iNYJ@S_o}<̙w杧5:L ;'4@ a@`0cSSQQSPг3вQP01rprpS3 s sqs KKECAmO]l-A$`<_00…rL aaba@$X`a2{8Hrn] Q+Il6ߧzSb{? $eVxZ$Tni?B$! ak!$Y[ bjΘ*K6kfjOAWd|(_#˲Mj5EV꿮-\\#ψh*lqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPKDS1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\ihI$ai=4{w]SRQ$?%5fLkx-Dƌ2g[BLT,7%6,o@} H,L ^ iшES.!d,1āBIЖ*MĤDrjMuqSFi0xyV u"ԹPK'.\jl;Iu$Pn>n6+'@'{]$m35T eq>G.sHgY7cޝ5H.R8:DEz+F9DR?c\ 95Vڙ2XZڜ2f$Rx6l@i=%ɿaPKDSsGdocProps/core.xml_O ſJ{ tQv=ib7wY@}{Y.ٛo\ι?Q-+}Ѫczxց BL`hcC&[5;8;!r#g`&" ۷=@ -h01`ZP<{#xn6Vu'1u]-zkO[?jL@M%*Tx^T<^\U/,%aCQX<>m֨)IIsJrVF_cgNOU !oh~PKDSy%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<31)7ǒxLݍ0c~DP$ARE aD3EŝrS?VFR8 V ]]٣sRG/K$s'APW#ҫ@NRkw0J|` [A |Y+n#yL/=;m gciރjyKLVў=xdͲ+Ej$m#eSn23d yqH3w<o3:(h3ċ)l!EC>!>!%a0{;i!!9BCi i?8JpqOHPr1PKDS&ppt/_rels/presentation.xml.relsAN0Eb͞8)P!TrLmCjQTU~6?a Q;+*J`hm|o`^:b}diF<{ Ѧƅ^R*C˽T{"_咇L=ٶ?ޮi'zt 1" 8jU$7`:mN 0< ,E= E"gq12'Ot48g$Βg%Im9gq>2H/PKDSg[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+O$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKDSppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}3#/G݃Io'($,p=ߵ,FB #`|.:(Ԁ  ciCwyVqʒ w uڞټYNc;dԣ#7I!x~^su 48TXiy,D15'XN#+u<1TZ0L(i3ԁv>D{=Kea^\ڊ5'8!t2!&y:,+#oA`hmZX7Ti]w_#==nObeE_.|g4fj~;^M)R0(nx%Ʋ"H꘠_<:7`@Hi!IEޠ qm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"Tw: [Content_Types].xml͗n@_pȪmmD/z0ZwEӽ,;d2 zsІI{ "3hx*LOUwh@*3SKE/i7IaA؆4~tZq [L". }T"jqdkȜxB 031J66U9oX=bTW12j A`0E3)d01 -56s,1)>|K9hզQ pC5rVm.]rEP7.Bu]wj,ygdŵ>G.se}eV|8uK)e 'H(GHj8w̲֖3c%}BZsRS&|C,kCtS"gPK"TEhSGdocProps/core.xmln0_%=qbD8RRͲ`65 "qm֤a%cyY%0s>[|MzҭPK"Ty%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<aa96w:q~WNI/K9E8 "_k"E%cw#Q+j$JGi~`;ԯM' ٮĴ 1|q A8r@o) o*1rW hA,jk0%wv!57m<3iJ*_ ^Y}0gnt.̖Voe5چ1#gFZUg:H Ȥ'FA}'Fap0@ O!%~\)'waap R;$C^ ҨHq4Br?cXw`X9,R{6~ 8? |,"8٣cVEr/Skz&ZHi:'' g4KQeȓ l/'q1eN( ƃ|F,mVT;z$O~PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlRߍfO@UYFc"BLFXSM^D%pS\.p^s^m6NG8]Ǔh]߬w7j|ρ1<& NWJ pw6ըl3z~uΓS~;\ :g!tnc/[u_|ȥ^Q"q4ʦYh@Hi!bޠ f,HtehE.c,yY]UK?3`IC<9v K:#q͢_*X£-X5f~ӂ ;ZO4c[&Po_lPKDSi\??ppt/media/image2.jpgweX^.tKww# XbE钐\iNYJ@S_o}<̙w杧5:L ;'4@ a@`0cSSQQSPг3вQP01rprpS3 s sqs KKECAmO]l-A$`<_00…rL aaba@$X`a2{8Hrn] Q+Il6ߧzSb{? $eVxZ$Tni?B$! ak!$Y[ bjΘ*K6kfjOAWd|(_#˲Mj5EV꿮-\\#ψh*lqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPKDS1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\ihI$ai=4{w]SRQ$?%5fLkx-Dƌ2g[BLT,7%6,o@} H,L ^ iшES.!d,1āBIЖ*MĤDrjMuqSFi0xyV u"ԹPK'.\jl;Iu$Pn>n6+'@'{]$m35T eq>G.sHgY7cޝ5H.R8:DEz+F9DR?c\ 95Vڙ2XZڜ2f$Rx6l@i=%ɿaPKDSsGdocProps/core.xml_O ſJ{ tQv=ib7wY@}{Y.ٛo\ι?Q-+}Ѫczxց BL`hcC&[5;8;!r#g`&" ۷=@ -h01`ZP<{#xn6Vu'1u]-zkO[?jL@M%*Tx^T<^\U/,%aCQX<>m֨)IIsJrVF_cgNOU !oh~PKDSy%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<31)7ǒxLݍ0c~DP$ARE aD3EŝrS?VFR8 V ]]٣sRG/K$s'APW#ҫ@NRkw0J|` [A |Y+n#yL/=;m gciރjyKLVў=xdͲ+Ej$m#eSn23d yqH3w<o3:(h3ċ)l!EC>!>!%a0{;i!!9BCi i?8JpqOHPr1PKDS&ppt/_rels/presentation.xml.relsAN0Eb͞8)P!TrLmCjQTU~6?a Q;+*J`hm|o`^:b}diF<{ Ѧƅ^R*C˽T{"_咇L=ٶ?ޮi'zt 1" 8jU$7`:mN 0< ,E= E"gq12'Ot48g$Βg%Im9gq>2H/PKDSg[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+O$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKDSppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}:I􅐄۳P2v+fM a؁<9b6lQnJ#0dl:R9֤"ښ;!̲}U(|PEN?~ZN؂ 2JeI= DLn `:&YܬcY~wLN`ñK0F@MZG}׀ Lr#RV֘qƂ 6 jfu+ڵ>Ŭm<~'Ǟ%R}z@IpRPE_~jfx48 T)5bqkops6a(#`()L ")Bsl9QBhv,zum90wjGiwm?'?t}?k$CkԉNIzܸJnmU 412,6hj_ܔUxF6_ś/)Q)T||_($i]uZI;[amuw?F߾j98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"T! [Content_Types].xml͗n@_pm!=\`R[tS.V߾(%Q, dwgc a4Y{<}=zd<%hC܅1. 8BR͉'zC nxt1m֤a%cyY%0s>[|MzҭPK"Ty%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<aa96w:q~WNI/K9E8 "_k"E%cw#Q+j$JGi~`;ԯM' ٮĴ 1|q A8r@o) o*1rW hA,jk0%wv!57m<3iJ*_ ^Y}0gnt.̖Voe5چ1#gFZUg:H Ȥ'FA}'Fap0@ O!%~\)'waap R;$C^ ҨHq4Br?cXw`X9,R{6~ 8? |,"8٣cVEr/Skz&ZHi:'' g4KQeȓ l/'q1eN( ƃ|F,mVT;z$O~PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlR֢ R"uV ݴ%U ͘(0%<)tJs2yIF$aH0UAjS I1㴷BB* ;E}TqjF@CUW\xv+aik,Xaoaۿ:LH/8$K8ݡ& (qi%{UD/o*>SE T&ܱsH> Ԍ: NJS4v(F1I/jM2$Y~f('E0 Pt2>K$x&h& TJai.YCtnmhQ]Z;-EѹqF0YHc5v4sI15fwz1OTsj`8v ZW͑D@p!PKDStѩ% ppt/slides/_rels/slide1.xml.rels 0_%ݤ H^D(x!٦$؂;; S;7d㰧t+4g۝mN"GMHD\0.%9|匚!_B#;TՉ5L)S{ #l,MF],~+́ҵ1išm6_PKDS1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\K"HEnsI0'[ (Mj V*;\>Z К[j(XH~ZM,8LWѦ i \ɽOf2}_s:ZP:mhe^}":eh.r1>)ﳇՒ5yYnV^L3']O1ohPKDSy%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<31)7ǒxLݍ0c~DP$ARE aD3EŝrS?VFR8 V ]]٣sRG/K$s'APW#ҫ@NRkw0J|` [A |Y+n#yL/=;m gciރjyKLVў=xdͲ+Ej$m#eSn23d yqH3w<o3:(h3ċ)l!EC>!>!%a0{;i!!9BCi i?8JpqOHPr1PKDS&ppt/_rels/presentation.xml.relsAN0Eb͞8)P!TrLmCjQTU~6?a Q;+*J`hm|o`^:b}diF<{ Ѧƅ^R*C˽T{"_咇L=ٶ?ޮi'zt 1" 8jU$7`:mN 0< ,E= E"gq12'Ot48g$Βg%Im9gq>2H/PKDSg[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+O$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKDSppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}Kppt/slideLayouts/slideLayout4.xmlUTux PK!im "Nppt/slideLayouts/slideLayout12.xmlUTux PK!h "Uppt/slideLayouts/slideLayout13.xmlUTux PK!s@y#!8Yppt/slideLayouts/slideLayout5.xmlUTux PK!=t!^ppt/slideLayouts/slideLayout1.xmlUTux PK!f\$ "dppt/slideLayouts/slideLayout17.xmlUTux PK!(D "gppt/slideLayouts/slideLayout16.xmlUTux PK!)J.  !Sʉ(*Fߟ>兜hVkO9PX I-Kfpqţp^s^,YՔ։ .+;ooRQm;)9dd P>+JJUaɉ5FA5_D>j999a8=!guCfv!>\|,1_k-)1 Ub̓ae&S\FQCJ'.7$PkU|E ^jv{ځ<0&V@I.a]= rqބDʉKÆ${"QЕMQ Mhd˪ZLrTQ@1/پĽw.T4'1{."j('5-@zMA9 PK"Ti\??ppt/media/image1.jpgweX^.tKww# XbE钐\iNYJ@S_o}<̙w杧5:L ;'4@ a@`0cSSQQSPг3вQP01rprpS3 s sqs KKECAmO]l-A$`<_00…rL aaba@$X`a2{8Hrn] Q+Il6ߧzSb{? $eVxZ$Tni?B$! ak!$Y[ bjΘ*K6kfjOAWd|(_#˲Mj5EV꿮-\\#ψh*lqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"Tw: [Content_Types].xml͗n@_pȪmmD/z0ZwEӽ,;d2 zsІI{ "3hx*LOUwh@*3SKE/i7IaA؆4~tZq [L". }T"jqdkȜxB 031J66U9oX=bTW12j A`0E3)d01 -56s,1)>|K9hզQ pC5rVm.]rEP7.Bu]wj,ygdŵ>G.se}eV|8uK)e 'H(GHj8w̲֖3c%}BZsRS&|C,kCtS"gPK"TEhSGdocProps/core.xmln0_%=qbD8RRͲ`65 "qm֤a%cyY%0s>[|MzҭPK"Ty%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<aa96w:q~WNI/K9E8 "_k"E%cw#Q+j$JGi~`;ԯM' ٮĴ 1|q A8r@o) o*1rW hA,jk0%wv!57m<3iJ*_ ^Y}0gnt.̖Voe5چ1#gFZUg:H Ȥ'FA}'Fap0@ O!%~\)'waap R;$C^ ҨHq4Br?cXw`X9,R{6~ 8? |,"8٣cVEr/Skz&ZHi:'' g4KQeȓ l/'q1eN( ƃ|F,mVT;z$O~PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlR縳/ ՆI1Kzi0%ߟ> 55g*͒Z5ȜKE-.uKDsQr$ק% [;є#4SN45M8GYS%jtP?n4`đJ:K&k%xaՈhZ-uf#{o\6.1{\kTYYNA\Q4@H*PlMj `w9YҲᵰ'dOFq\'ypoI1lu#_w]4! +N7xgغЃl ȭ  Smn^nduCߞ)AޙVϠ +Q5$q79 r;Nr. 9Q76a4.PKDSA ppt/slides/_rels/slide1.xml.rels 0_%ݤ "P$!٦$}{^,xqggg>vHnÒV@IΧb m=(rqDʉKÆ$"QЕMQ UhduUX̀y&ة%#/پĝET4S."j(g5-@whƖ̠,*#zM/A8PKDSi\??ppt/media/image2.jpgweX^.tKww# XbE钐\iNYJ@S_o}<̙w杧5:L ;'4@ a@`0cSSQQSPг3вQP01rprpS3 s sqs KKECAmO]l-A$`<_00…rL aaba@$X`a2{8Hrn] Q+Il6ߧzSb{? $eVxZ$Tni?B$! ak!$Y[ bjΘ*K6kfjOAWd|(_#˲Mj5EV꿮-\\#ψh*lqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPKDS1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\ihI$ai=4{w]SRQ$?%5fLkx-Dƌ2g[BLT,7%6,o@} H,L ^ iшES.!d,1āBIЖ*MĤDrjMuqSFi0xyV u"ԹPK'.\jl;Iu$Pn>n6+'@'{]$m35T eq>G.sHgY7cޝ5H.R8:DEz+F9DR?c\ 95Vڙ2XZڜ2f$Rx6l@i=%ɿaPKDSsGdocProps/core.xml_O ſJ{ tQv=ib7wY@}{Y.ٛo\ι?Q-+}Ѫczxց BL`hcC&[5;8;!r#g`&" ۷=@ -h01`ZP<{#xn6Vu'1u]-zkO[?jL@M%*Tx^T<^\U/,%aCQX<>m֨)IIsJrVF_cgNOU !oh~PKDSy%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<31)7ǒxLݍ0c~DP$ARE aD3EŝrS?VFR8 V ]]٣sRG/K$s'APW#ҫ@NRkw0J|` [A |Y+n#yL/=;m gciރjyKLVў=xdͲ+Ej$m#eSn23d yqH3w<o3:(h3ċ)l!EC>!>!%a0{;i!!9BCi i?8JpqOHPr1PKDS&ppt/_rels/presentation.xml.relsAN0Eb͞8)P!TrLmCjQTU~6?a Q;+*J`hm|o`^:b}diF<{ Ѧƅ^R*C˽T{"_咇L=ٶ?ޮi'zt 1" 8jU$7`:mN 0< ,E= E"gq12'Ot48g$Βg%Im9gq>2H/PKDSg[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+O$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKDSppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}iZ 0$hg>ԡfR8'玪t3]I}ޑZ;J s' l0k]ԝܳ. ~& 9,f Vt lk|bqyW#<'x2lV΋APu:u\lF7.1tH^x>-㴾Uux*!!+uqd7kgK Iod?xynG+}>i8+EpZQ xVο7F.T D4{jAe /#6bXD -^vi >fؔf$͊ _%PK"T/}Nppt/slides/slide2.xmlSn0bJH]/"A?u^pToM^H[\̛%e'jFNbjԾכ\MDBr-18AR7TJIew̦{"ip?ou0x A bAPh:7kЌ`/JQۊ*)4; #վY5vcQSs0RTB1"}oA!-xy+q0NyrҌ_fR?(.3nP& X4;K$8!dJ|jFq'|c\p~ˤ#D+FUs %$Z+c|tӌ͓@dS!CPK"T V ppt/slides/_rels/slide1.xml.rels 0_%ݤAD^D(x!٦$}{^,xqggg>vۑ0&V@IavsQH 8 95cIhE>+G+rfAȫȚZL*U5lFɢ_*X£x)X5f~3SCK'-3(ʈ^K/6 PK"T% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"Ti\??ppt/media/image1.jpgweX^.tKww# XbE钐\iNYJ@S_o}<̙w杧5:L ;'4@ a@`0cSSQQSPг3вQP01rprpS3 s sqs KKECAmO]l-A$`<_00…rL aaba@$X`a2{8Hrn] Q+Il6ߧzSb{? $eVxZ$Tni?B$! ak!$Y[ bjΘ*K6kfjOAWd|(_#˲Mj5EV꿮-\\#ψh*lqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"T> [Content_Types].xml͗n@_pȪmm<\pՃIlaĵ!շ1Uҽ,;ϷKx ІI[A@2b"Fza0}j#ĄSRԜZ\(~HP 6lz0zK|t߻R}*Z&.ٙ!1 m5hff1fʔ(1SVӳYvOr GZ*C&>F9Pc1%&PeU\)KLJέ)/Z'( Y8OߡNR9٫P.B]u"TE.B; 5-DyQ̵BYt&_Od)y>dڠeՅS*C+1 J C4P)97VOcʽڜ2f໖>l P=(z\Z@PK"TEhSGdocProps/core.xmln0_%=qbD8RRͲ`65 "qm֤a%cyY%0s>[|MzҭPK"Ty%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<]Ŭ-u,Z(u2;AI3nVDAEZoxmrQ檅E U-]O lYPcRqdW5V\TDX; /Pb纑S>7o#Z9y[^DPfDl$<$+~YIuf"E Ak x38ޫQ/3qb7+ߥhu8C^" JkF]+*( cQńtEZN-+ ѶBtDkqa?mn 5 C-EA{%w\<~ڀ4ɢse hwf!ӿm쏾PߜeAA0*s%_W4f~ ٫2.J2@7d5\L[I-C(Ĝ~bt> f,X漢j8ǵԟϦPK"TWD>Ippt/_rels/presentation.xml.relsN0 _%-0Z B xmDDI6Ti8Dɶ\ yi4(c}j{i=%3Cwz}a,7CQ;ensOiMS-۴xoǀ:z%u*z($uN'gbGQJR\夰 (%)y>;Qe7&'Wo _^?1IJk';{o;&PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlRppt/slides/_rels/slide2.xml.relsPK"Ti\??%ppt/media/image1.jpgPK"T.!Eppt/slideMasters/slideMaster1.xmlPK"Tr,Lppt/slideMasters/_rels/slideMaster1.xml.relsPK"T> N[Content_Types].xmlPK"TEhSGOdocProps/core.xmlPK"Ty%=QdocProps/custom.xmlPK"TQ Q_rels/.relsPK"T;R{Sppt/presentation.xmlPK"TWD>IVppt/_rels/presentation.xml.relsPK"T0K MWppt/viewProps.xmlPK"TYppt/tableStyles.xmlPK"T }.Yppt/presProps.xmlPK"T[ppt/theme/theme2.xmlPK"T mu!appt/theme/theme1.xmlPK"Tђ7- hppt/slideLayouts/_rels/slideLayout11.xml.relsPK"Tђ7-ippt/slideLayouts/_rels/slideLayout10.xml.relsPK"Tђ7,jppt/slideLayouts/_rels/slideLayout9.xml.relsPK"Tђ7,kppt/slideLayouts/_rels/slideLayout8.xml.relsPK"Tђ7,lppt/slideLayouts/_rels/slideLayout7.xml.relsPK"Tђ7,mppt/slideLayouts/_rels/slideLayout6.xml.relsPK"Tђ7,nppt/slideLayouts/_rels/slideLayout5.xml.relsPK"Tђ7,oppt/slideLayouts/_rels/slideLayout4.xml.relsPK"Tђ7,pppt/slideLayouts/_rels/slideLayout3.xml.relsPK"Tђ7,qppt/slideLayouts/_rels/slideLayout2.xml.relsPK"Tђ7,rppt/slideLayouts/_rels/slideLayout1.xml.relsPK"T'v!sppt/slideLayouts/slideLayout9.xmlPK"TJI,!wppt/slideLayouts/slideLayout8.xmlPK"TSd{g!|ppt/slideLayouts/slideLayout7.xmlPK"T}!ppt/slideLayouts/slideLayout6.xmlPK"TE˧:!&ppt/slideLayouts/slideLayout5.xmlPK"T?N!>ppt/slideLayouts/slideLayout4.xmlPK"T6\#!ppt/slideLayouts/slideLayout3.xmlPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlPK"TkO ' "Ɣppt/slideLayouts/slideLayout11.xmlPK"TF "˜ppt/slideLayouts/slideLayout10.xmlPK"To@h)!ppt/slideLayouts/slideLayout1.xmlPK"T%1,odocProps/app.xmlPK))^ Ipandoc-3.1.3/test/pptx/content-with-caption/image-text/templated.pptx0000644000000000000000000016133707346545000024156 0ustar0000000000000000PKDS% ^ppt/slides/slide1.xmlTr }W07Hv亚8^Lg$Ӹh0ﻀ]C_в圳 ц['Z+}7WvA\MԄ8smVہzڎ4@AIQ@c}Kn[W>\R0]/[@ سl"CKmy6O6?l, _`x2ƥ$UImkzh k\IpG,yفYs*&䠱`#Dy51H+LRVp$\dזr|CC{~94pN*=U g>,#vޕVH*ٚ+`f2Rwr`w'T-4[| ki\LyQ$y9+LmU=w\(fts2JTe?T 67IO7$dE.fLy >-߂7hT;}˲|?EfUY%bYL&*XI%NSkIM@-iggr#P <Ѥy1Z "_-{ӴX3lʋH3BEOoPKDS;P}Nppt/slides/slide2.xmlSn0bJH]/"A?u^pToM^H[\̛%e'jFNbjԾכ\MDBr-18AR7TJIew̦{"ip?ou0x A bAPh:7kЌ`/JQۊ*)4; #վY5vcQSs0RTB1"}oA!-xy+q0NyrҌ_fR?(.3nP& X4;K$8!dJ|jFq'|c\p~ˤ#D+bI*&Z+c|tӌ͓@dS!CPKDSY$ ppt/slides/_rels/slide1.xml.rels 0_%ݤADL{A$!٦$A/zqggg>v=HCM+ Winq8`B"%CaXZʦъ\ƨY*4,~g4W53/پĭ7.T4\bEԘ9POL -@qm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPKDS1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\>b5Pm_(Gh2dCZr4bƔKK qPeqSp,1)n>хZS]M4yV u"ԹPK'.\jl;Iu$Pn>n6+'@'{]$m35oE=*wBY(<#9$gYK] Κ~f)"w"p1.wY+љ2XZڜ2f૖?b)_Z6zZA>JF}PKDSsGdocProps/core.xml_O ſJ{ tQv=ib7wY@}{Y.ٛo\ι?Q-+}Ѫczxց BL`hcC&[5;8;!r#g`&" ۷=@ -h01`ZP<{#xn6Vu'1u]-zkO[?jL@M%*Tx^T<^\U/,%aCQX<>m֨)IIsJrVF_cgNOU !oh~PKDSy%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<KC !ژ*^400S14껪MJj`^?ؤ^0'^I yɯ-3j)XSDqL5g"C9_hs<Á `v#o>ȿ\⤓k=aǾkzGW8\ ;f8!1qg)+9Ca?ڰoh#̚Ϩ][.yTHP)\^W1b/Bw @Zӿ Gq؝8] h^F2Mȳ%U 7PFNo\u}8u%Ml+О9ܶkxr$ SNoN 7 $/'%3 ZFaN}-wF~ E-H$ dR; xR?4 n-$;$Kh7i!M}]!PKDS5ˏIppt/_rels/presentation.xml.relsN _{K[u3c D plixAvy~sr3(C ZF֫+*b$hϠ>PEIkC,]G-CZ傺=ɦa6M doӶR_p l0ra`p(Ԫn@y QI֡q&?Rʞ3I"Gq֑~\(| {|&bd$NPt9!vOeF :VPKDSg[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+O$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKDSppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}s=s&5m@Z'`2E^? ϑ3& \Y2B \*uIrM.D8I.HCk>_EdmhԺ2MU+ESDS ߔ;cKՋBr$-dr~2M$2? >l\ծnMWegB#g.e:NU4yy<9Ge Vwy캱Lj#Nҋ,b8Mfw $v n-0O{ɹBV{DjE%_x}I]PK"TY5 ppt/slides/_rels/slide1.xml.rels 0_%ݤ "^Dv{ځ<0&V@I.a]= rqބDʉKÆ${"QЕMQ Mhd˪ZLrTQ@1/پĽw.T4'1{."j('5-@zMA9 PK"Ti\??ppt/media/image1.jpgweX^.tKww# XbE钐\iNYJ@S_o}<̙w杧5:L ;'4@ a@`0cSSQQSPг3вQP01rprpS3 s sqs KKECAmO]l-A$`<_00…rL aaba@$X`a2{8Hrn] Q+Il6ߧzSb{? $eVxZ$Tni?B$! ak!$Y[ bjΘ*K6kfjOAWd|(_#˲Mj5EV꿮-\\#ψh*lqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"Tw: [Content_Types].xml͗n@_pȪmmD/z0ZwEӽ,;d2 zsІI{ "3hx*LOUwh@*3SKE/i7IaA؆4~tZq [L". }T"jqdkȜxB 031J66U9oX=bTW12j A`0E3)d01 -56s,1)>|K9hզQ pC5rVm.]rEP7.Bu]wj,ygdŵ>G.se}eV|8uK)e 'H(GHj8w̲֖3c%}BZsRS&|C,kCtS"gPK"TEhSGdocProps/core.xmln0_%=qbD8RRͲ`65 "qm֤a%cyY%0s>[|MzҭPK"Ty%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<aa96w:q~WNI/K9E8 "_k"E%cw#Q+j$JGi~`;ԯM' ٮĴ 1|q A8r@o) o*1rW hA,jk0%wv!57m<3iJ*_ ^Y}0gnt.̖Voe5چ1#gFZUg:H Ȥ'FA}'Fap0@ O!%~\)'waap R;$C^ ҨHq4Br?cXw`X9,R{6~ 8? |,"8٣cVEr/Skz&ZHi:'' g4KQeȓ l/'q1eN( ƃ|F,mVT;z$O~PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlR;¿@ ;\V澒22o y ^A\OL nX?T|] _yM}]!ehgݡg:&A][ekJg``DJŝ*x%Ӂ44/S_[!سmǶ7>`8/qp4e@A (>[K:ۣ7^K7Ppb9jQ}kPKDSA ppt/slides/_rels/slide1.xml.rels 0_%ݤ "P$!٦$}{^,xqggg>vHnÒV@IΧb m=(rqDʉKÆ$"QЕMQ UhduUX̀y&ة%#/پĝET4S."j(g5-@whƖ̠,*#zM/A8PKDSi\??ppt/media/image2.jpgweX^.tKww# XbE钐\iNYJ@S_o}<̙w杧5:L ;'4@ a@`0cSSQQSPг3вQP01rprpS3 s sqs KKECAmO]l-A$`<_00…rL aaba@$X`a2{8Hrn] Q+Il6ߧzSb{? $eVxZ$Tni?B$! ak!$Y[ bjΘ*K6kfjOAWd|(_#˲Mj5EV꿮-\\#ψh*lqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPKDS1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\ihI$ai=4{w]SRQ$?%5fLkx-Dƌ2g[BLT,7%6,o@} H,L ^ iшES.!d,1āBIЖ*MĤDrjMuqSFi0xyV u"ԹPK'.\jl;Iu$Pn>n6+'@'{]$m35T eq>G.sHgY7cޝ5H.R8:DEz+F9DR?c\ 95Vڙ2XZڜ2f$Rx6l@i=%ɿaPKDSsGdocProps/core.xml_O ſJ{ tQv=ib7wY@}{Y.ٛo\ι?Q-+}Ѫczxց BL`hcC&[5;8;!r#g`&" ۷=@ -h01`ZP<{#xn6Vu'1u]-zkO[?jL@M%*Tx^T<^\U/,%aCQX<>m֨)IIsJrVF_cgNOU !oh~PKDSy%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<31)7ǒxLݍ0c~DP$ARE aD3EŝrS?VFR8 V ]]٣sRG/K$s'APW#ҫ@NRkw0J|` [A |Y+n#yL/=;m gciރjyKLVў=xdͲ+Ej$m#eSn23d yqH3w<o3:(h3ċ)l!EC>!>!%a0{;i!!9BCi i?8JpqOHPr1PKDS&ppt/_rels/presentation.xml.relsAN0Eb͞8)P!TrLmCjQTU~6?a Q;+*J`hm|o`^:b}diF<{ Ѧƅ^R*C˽T{"_咇L=ٶ?ޮi'zt 1" 8jU$7`:mN 0< ,E= E"gq12'Ot48g$Βg%Im9gq>2H/PKDSg[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+O$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKDSppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}",Str "description",RawInline (Format "html") "
                ",Space,Str "&."]),("keywords",MetaList [MetaInlines [Str "keyword",Space,Str "1"],MetaInlines [Str "keyword",Space,Str "2"]]),("subject",MetaInlines [Str "This",Space,Str "is",Space,Str "the",Space,Str "subject"]),("title",MetaInlines [Str "Testing",Space,Str "custom",Space,Str "properties"])]}) [Para [Str "Testing",Space,Str "document",Space,Str "properties"]] pandoc-3.1.3/test/pptx/document-properties-short-desc/output.pptx0000644000000000000000000006765107346545000023502 0ustar0000000000000000PK"TYppt/slides/slide1.xmlTێ {ėXZݮLb"\i6V 0sfΜH8` c ~}~W̓(UTYWZ)Z(OA{DQh1=p0@ D֦LvB4qD33P$!/Rlŋ]c) ȿx?wf1u9$wCL4>͗d[|qoq? IE♜-$u' ~%V 0nH68gG}E I0Ńu'Y뼈W֣;AX#NsaeTWp՛*ƌ]A `J2360 Ȗ0 KiX!5ÙZΙ"S^}Zn6e3n豱$";aLLU:pl/&q&W'lfu]"H7~R)kd"JRwxSp!_/tWlLL7P_3){ibZ(oO4x=fܴ@LLOK`!Tj"ES|HPK"TP*% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LCM+ Wiv8C6E.4Ha9\KrB+]>Z5 BFv[왤Wbj G#b,F]~+́ҭ3մTamv{/PK"T% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"TIa [Content_Types].xml͗n0_q$mE!9t9u\3$Vl'M޾$UQ&l1O3op)bFɄI쿏k8菗 ZuKaSȩ '9( (&a[h=tYaUYL*(T3j񘔧dclɜ^B 11Sٺ+vBGFZ*CP9NLS5f9P' %A[ۋ+ep.̚s4`^Y;T$u"ԅP.B\rEzƢh.N(.!%,TS#7 X{"{_Srf̏~J{Uo);iZkj3zBhǥ|PK"Tf= fdocProps/core.xmlQO0JܺfIf4*tmڋo7؀7>|t6IjKY&{1 )˅Ʉfm˄(u]ڋKmG+jX4%GN[ ѲMgP PPI`)g7pŁ99MDͨC .vkK :ԊӁiia)"Jc InIMszNfnYQIG ȱYz˖sE- <9cЇ!$>g|_Y8M8 Hl]Ŭ-u,Z(u2;AI3nVDAEZoxmrQ檅E U-]O lYPcRqdW5V\TDX; /Pb纑S>7o#Z9y[^DPfDl$<$+~YIuf"E Ak x38ޫQ/3qb7+ߥhu8C^" JkF]+*( cQńtEZN-+ ѶBtDkqa?mn 5 C-EA{%w\<~ڀ4ɢse hwf!ӿm쏾PߜeAA0*s%_W4f~ ٫2.J2@7d5\L[I-C(Ĝ~bt> f,X漢j8ǵԟϦPK"TWD>Ippt/_rels/presentation.xml.relsN0 _%-0Z B xmDDI6Ti8Dɶ\ yi4(c}j{i=%3Cwz}a,7CQ;ensOiMS-۴xoǀ:z%u*z($uN'gbGQJR\夰 (%)y>;Qe7&'Wo _^?1IJk';{o;&PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlRI?ppt/_rels/presentation.xml.relsPK"T0K {ppt/viewProps.xmlPK"T=ppt/tableStyles.xmlPK"T }.ppt/presProps.xmlPK"Tppt/theme/theme2.xmlPK"T mu!!ppt/theme/theme1.xmlPK"Tђ7-;(ppt/slideLayouts/_rels/slideLayout11.xml.relsPK"Tђ7-<)ppt/slideLayouts/_rels/slideLayout10.xml.relsPK"Tђ7,=*ppt/slideLayouts/_rels/slideLayout9.xml.relsPK"Tђ7,=+ppt/slideLayouts/_rels/slideLayout8.xml.relsPK"Tђ7,=,ppt/slideLayouts/_rels/slideLayout7.xml.relsPK"Tђ7,=-ppt/slideLayouts/_rels/slideLayout6.xml.relsPK"Tђ7,=.ppt/slideLayouts/_rels/slideLayout5.xml.relsPK"Tђ7,=/ppt/slideLayouts/_rels/slideLayout4.xml.relsPK"Tђ7,=0ppt/slideLayouts/_rels/slideLayout3.xml.relsPK"Tђ7,=1ppt/slideLayouts/_rels/slideLayout2.xml.relsPK"Tђ7,=2ppt/slideLayouts/_rels/slideLayout1.xml.relsPK"T'v!=3ppt/slideLayouts/slideLayout9.xmlPK"TJI,!7ppt/slideLayouts/slideLayout8.xmlPK"TSd{g!<ppt/slideLayouts/slideLayout7.xmlPK"T}!@ppt/slideLayouts/slideLayout6.xmlPK"TE˧:!TCppt/slideLayouts/slideLayout5.xmlPK"T?N!lHppt/slideLayouts/slideLayout4.xmlPK"T6\#!Lppt/slideLayouts/slideLayout3.xmlPK"TD9Bi !LQppt/slideLayouts/slideLayout2.xmlPK"TkO ' "Tppt/slideLayouts/slideLayout11.xmlPK"TF "Xppt/slideLayouts/slideLayout10.xmlPK"To@h)!\ppt/slideLayouts/slideLayout1.xmlPK"T%1,oadocProps/app.xmlPK(( wcpandoc-3.1.3/test/pptx/document-properties-short-desc/templated.pptx0000644000000000000000000012130707346545000024106 0ustar0000000000000000PKDS,IYppt/slides/slide1.xmlTێ {8[Zݮ&1 }l6"C_f̙ Ti&xYDԌ+sodPK\Y"IC;gBRnBuح:ZkQ$Kaᔯn# }G 6uäh40>UKٶg(wRᛒ[p รM7S\!x]\9k遱v'"wHGH8%gǤq-4_ţXvBoYeՎ\lZA~i%H>`(y L,)I<)I.k WnPKDSoVppt/slides/slide2.xmlSN#1jAb nMet~v7吋]Uh c],8ݮ6.24hF.6]J"'>֣;AX#NsaeTWp՛*ƌ]A `J2360 Ȗ0 KiX!5ÙZΙ"S^}Zn6e3n豱$";aLLU:pl/&q&W'lfu]"H7~R)kd"JRwxSp!_/tWlLL7P_3)bN,oO4x=fܴ@LLOK`!Tj"ES|HPKDSP*% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LCM+ Wiv8C6E.4Ha9\KrB+]>Z5 BFv[왤Wbj G#b,F]~+́ҭ3մTamv{/PKDS% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PKDS1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\U*eLUQCjj<" h!z6fƔ DloKC !ژ*^400S14껪MJj`^?ؤ^0'^I yɯ-3j)XSDqL5g"C9_hs<Á `v#o>ȿ\⤓k=aǾkzGW8\ ;f8!1qg)+9Ca?ڰoh#̚Ϩ][.yTHP)\^W1b/Bw @Zӿ Gq؝8] h^F2Mȳ%U 7PFNo\u}8u%Ml+О9ܶkxr$ SNoN 7 $/'%3 ZFaN}-wF~ E-H$ dR; xR?4 n-$;$Kh7i!M}]!PKDS5ˏIppt/_rels/presentation.xml.relsN _{K[u3c D plixAvy~sr3(C ZF֫+*b$hϠ>PEIkC,]G-CZ傺=ɦa6M doӶR_p l0ra`p(Ԫn@y QI֡q&?Rʞ3I"Gq֑~\(| {|&bd$NPt9!vOeF :VPKDSg[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+O$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKDSppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}ppt/slideLayouts/slideLayout7.xmlUTux PK!3Y "FAppt/slideLayouts/slideLayout11.xmlUTux PK!Ex"VEppt/slideLayouts/slideLayout10.xmlUTux PK!z&!CJppt/slideLayouts/slideLayout6.xmlUTux PK!=[!LMppt/slideLayouts/slideLayout4.xmlUTux PK!im "Pppt/slideLayouts/slideLayout12.xmlUTux PK!h "%Wppt/slideLayouts/slideLayout13.xmlUTux PK!s@y#!F[ppt/slideLayouts/slideLayout5.xmlUTux PK!=t!`ppt/slideLayouts/slideLayout1.xmlUTux PK!f\$ "fppt/slideLayouts/slideLayout17.xmlUTux PK!(D "ippt/slideLayouts/slideLayout16.xmlUTux PK!)J.  !Jmppt/slideLayouts/slideLayout2.xmlUTux PK!;FdvU&"pppt/slideLayouts/slideLayout14.xmlUTux PK!p O;"Xvppt/slideLayouts/slideLayout15.xmlUTux PK!!|ppt/slideLayouts/slideLayout3.xmlUTux PK!K%!Qppt/slideLayouts/slideLayout8.xmlUTux PK!ҦB!Appt/slideLayouts/slideLayout9.xmlUTux PK!x%,>docProps/app.xmlUTux PK55pandoc-3.1.3/test/pptx/document-properties/0000755000000000000000000000000007346545000017135 5ustar0000000000000000pandoc-3.1.3/test/pptx/document-properties/input.native0000644000000000000000000000424207346545000021506 0ustar0000000000000000Pandoc (Meta {unMeta = fromList [("Company",MetaInlines [Str "My",Space,Str "Company"]),("Second Custom Property",MetaInlines [Str "Second",Space,Str "custom",Space,Str "property",Space,Str "value"]),("abstract",MetaBlocks [Plain [Str "Quite",Space,Str "a",Space,Str "long",Space,Str "description",SoftBreak,Str "spanning",Space,Str "several",Space,Str "lines"]]),("author",MetaList [MetaInlines [Str "A.",Space,Str "M."]]),("category",MetaInlines [Str "My",Space,Str "Category"]),("custom1",MetaInlines [Str "First",Space,Str "custom",Space,Str "property",Space,Str "value"]),("custom3",MetaInlines [Str "Escaping",Space,Str "amp",Space,Str "&",Space,Str "."]),("custom4",MetaInlines [Str "Escaping",Space,Str "LT,GT",Space,Str "<",Space,Str "asdf",Space,Str ">",Space,Str "<"]),("custom5",MetaInlines [Str "Escaping",Space,Str "html",Space,RawInline (Format "html") "",Str "asdf",RawInline (Format "html") ""]),("custom6",MetaInlines [Str "Escaping",Space,Emph [Str "MD"],Space,Str "\225",Space,Str "a"]),("custom9",MetaInlines [Str "Extended",Space,Str "chars:",Space,Str "\8364",Space,Str "\225",Space,Str "\233",Space,Str "\237",Space,Str "\243",Space,Str "\250",Space,Str "$"]),("description",MetaBlocks [Para [Str "Long",Space,Str "description",Space,Str "spanning",SoftBreak,Str "several",Space,Str "lines."],Plain [Str "This",Space,Str "is",Space,Str "\225",Space,Str "second",Space,RawInline (Format "html") "",Str "line",RawInline (Format "html") "",Str "."]]),("keywords",MetaList [MetaInlines [Str "keyword",Space,Str "1"],MetaInlines [Str "keyword",Space,Str "2"]]),("lang",MetaInlines [Str "en-US"]),("nested-custom",MetaList [MetaMap (fromList [("custom 7",MetaInlines [Str "Nested",Space,Str "Custom",Space,Str "value",Space,Str "7"])]),MetaMap (fromList [("custom 8",MetaInlines [Str "Nested",Space,Str "Custom",Space,Str "value",Space,Str "8"])])]),("subject",MetaInlines [Str "This",Space,Str "is",Space,Str "the",Space,Str "subject"]),("subtitle",MetaInlines [Str "This",Space,Str "is",Space,Str "a",Space,Str "subtitle"]),("title",MetaInlines [Str "Testing",Space,Str "custom",Space,Str "properties"])]}) [Para [Str "Testing",Space,Str "document",Space,Str "properties"]] pandoc-3.1.3/test/pptx/document-properties/output.pptx0000644000000000000000000007047407346545000021426 0ustar0000000000000000PK"T\ppt/slides/slide1.xmlTێ {ĹiU^^ەIj.:_%ͦR}X 39sFՆI( "+&+iwji 8Waxkk!CjʱIEKͱu[}@oPeS10[~*I˩D[2 M݂45GJi`F6MtDCz{ҀU8 BM { ] ^au@G?pJΎI7]Gt@.dUXmm(_ȥzB:R %PVU{TX :O\t^γ@5/y(l6+&Y$YQFs&>b/:;}1vc)?k|\xc0}ƗbaJvƺ5VrFm5C:4Sz()oIM^R>A2S|<˧QbOeKO`f|2)߶iV3ҾˁD״^|F/ J?/PK"TZuVppt/slides/slide2.xmlSN#1jAb nMet~v7吋]Uh c],8ݮ6.24hF.6]J"'>֣;AX#NsaeTWp՛*ƌ]A `J2360 Ȗ0 KiX!5ÙZΙ"S^}Zn6e3n豱$";aLLU:pl/&q&W'lfu]"H7~R)kd"JRwxSp!_/tWlLL7P_3){ibZ(oO4x=fܴ@LLOK`!Tj"ES|HPK"TP*% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LCM+ Wiv8C6E.4Ha9\KrB+]>Z5 BFv[왤Wbj G#b,F]~+́ҭ3մTamv{/PK"T% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"TIa [Content_Types].xml͗n0_q$mE!9t9u\3$Vl'M޾$UQ&l1O3op)bFɄI쿏k8菗 ZuKaSȩ '9( (&a[h=tYaUYL*(T3j񘔧dclɜ^B 11Sٺ+vBGFZ*CP9NLS5f9P' %A[ۋ+ep.̚s4`^Y;T$u"ԅP.B\rEzƢh.N(.!%,TS#7 X{"{_Srf̏~J{Uo);iZkj3zBhǥ|PK"TRg3docProps/core.xmlRn0++QdEb @U%`ȍF|\G[chIvڙ> YgUQfR:_k [Lh[g;DP4Ed>Y9_gZ'(E1$X$I@ =h0hUTE:Y Vxt&u!8 C15jL@ndA=h59҅3ֳ 3㬟8X/R}$sX1Ⱥ $~2\ Ax0"Aƌē=镁P<ʲf#AX#~΅#l?͑LqrS Izsь\|n3VuU^]]7WWWgAICq`'ǯ.PK"TO,7docProps/custom.xmlOo0򄦜FRJvw M8i;+ddf ,eMLBOd`GI9-oZ@9ezmu.H(㙌R)tKR#9Lf𢠘5a]wV*^:[ߦ9uC:*:&CQ+֧4H4p_ލK]'-`&Z vjYR5=#y6rX{6~G0g9$ޛcȡp*CUKF] 8t" ۖ**ζ*Q uK d2"Gnh#l Zb$ZD`:T\W^`R+@2/`_p4MRym @<$&A}K%|S}tOb7)U$:7N+{EUEYI%'ZPK"TQ _rels/.relsN!_̽˶5Ƙ^Lތ@`vX`LM}{Ԛ#7?);97-(L.z6 T@jKb=jnhɄtD+uYzMֽmuj ^.8|1Ʌ#~5ٖh*ȵ8MM/-7{ZQbgTjw-{eIm$]Ŭ-u,Z(u2;AI3nVDAEZoxmrQ檅E U-]O lYPcRqdW5V\TDX; /Pb纑S>7o#Z9y[^DPfDl$<$+~YIuf"E Ak x38ޫQ/3qb7+ߥhu8C^" JkF]+*( cQńtEZN-+ ѶBtDkqa?mn 5 C-EA{%w\<~ڀ4ɢse hwf!ӿm쏾PߜeAA0*s%_W4f~ ٫2.J2@7d5\L[I-C(Ĝ~bt> f,X漢j8ǵԟϦPK"TWD>Ippt/_rels/presentation.xml.relsN0 _%-0Z B xmDDI6Ti8Dɶ\ yi4(c}j{i=%3Cwz}a,7CQ;ensOiMS-۴xoǀ:z%u*z($uN'gbGQJR\夰 (%)y>;Qe7&'Wo _^?1IJk';{o;&PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlRIppt/_rels/presentation.xml.relsPK"T0K ppt/viewProps.xmlPK"Tppt/tableStyles.xmlPK"T }.ppt/presProps.xmlPK"TRppt/theme/theme2.xmlPK"T mu!{#ppt/theme/theme1.xmlPK"Tђ7-)ppt/slideLayouts/_rels/slideLayout11.xml.relsPK"Tђ7-*ppt/slideLayouts/_rels/slideLayout10.xml.relsPK"Tђ7,+ppt/slideLayouts/_rels/slideLayout9.xml.relsPK"Tђ7,,ppt/slideLayouts/_rels/slideLayout8.xml.relsPK"Tђ7,-ppt/slideLayouts/_rels/slideLayout7.xml.relsPK"Tђ7,.ppt/slideLayouts/_rels/slideLayout6.xml.relsPK"Tђ7,/ppt/slideLayouts/_rels/slideLayout5.xml.relsPK"Tђ7,0ppt/slideLayouts/_rels/slideLayout4.xml.relsPK"Tђ7,1ppt/slideLayouts/_rels/slideLayout3.xml.relsPK"Tђ7,2ppt/slideLayouts/_rels/slideLayout2.xml.relsPK"Tђ7,3ppt/slideLayouts/_rels/slideLayout1.xml.relsPK"T'v!4ppt/slideLayouts/slideLayout9.xmlPK"TJI,!9ppt/slideLayouts/slideLayout8.xmlPK"TSd{g!x>ppt/slideLayouts/slideLayout7.xmlPK"T}!Appt/slideLayouts/slideLayout6.xmlPK"TE˧:!Dppt/slideLayouts/slideLayout5.xmlPK"T?N!Ippt/slideLayouts/slideLayout4.xmlPK"T6\#!DNppt/slideLayouts/slideLayout3.xmlPK"TD9Bi !Rppt/slideLayouts/slideLayout2.xmlPK"TkO ' "Vppt/slideLayouts/slideLayout11.xmlPK"TF "Zppt/slideLayouts/slideLayout10.xmlPK"To@h)!H^ppt/slideLayouts/slideLayout1.xmlPK"T%1,obdocProps/app.xmlPK(( epandoc-3.1.3/test/pptx/document-properties/templated.pptx0000644000000000000000000012213107346545000022031 0ustar0000000000000000PKDS6qppt/slides/slide1.xmlTێ {8[Zݮ&1 }l6"K%̜3qw?v-L ʉ?V5R5\1DHvXτ갱[uD¿-Dע,IÌ)^/FgAr@meI-hRQma|3mkP7%IIV@qG+n&C1s f! ᔜ5o|btؑ eEV;fZ rh-oC U6#Fy<K{eIN<_IOyLe[zbO>]@lٚwOZo0^wL? NLSaf؇HT9*èv1Gˌ(߅Gxjtf͗E>_-jaU]?5L;0Sg_ieA&׸^|ﳛE/ ?PKDSoVppt/slides/slide2.xmlSN#1jAb nMet~v7吋]Uh c],8ݮ6.24hF.6]J"'>֣;AX#NsaeTWp՛*ƌ]A `J2360 Ȗ0 KiX!5ÙZΙ"S^}Zn6e3n豱$";aLLU:pl/&q&W'lfu]"H7~R)kd"JRwxSp!_/tWlLL7P_3)bN,oO4x=fܴ@LLOK`!Tj"ES|HPKDSP*% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LCM+ Wiv8C6E.4Ha9\KrB+]>Z5 BFv[왤Wbj G#b,F]~+́ҭ3մTamv{/PKDS% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PKDS1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\U*eLUQCjj<" h!z6fƔ DlokP oQcqtDڞk҃@͙q֯pWO)/V =gba$vnL$=#WA^;w6:=K1$DG:m O{Ƙz4 st.acfh;Ef6ʼd9ܖ_լz_}S(PKDSO,7docProps/custom.xmlOo0򄦜FRJvw M8i;+ddf ,eMLBOd`GI9-oZ@9ezmu.H(㙌R)tKR#9Lf𢠘5a]wV*^:[ߦ9uC:*:&CQ+֧4H4p_ލK]'-`&Z vjYR5=#y6rX{6~G0g9$ޛcȡp*CUKF] 8t" ۖ**ζ*Q uK d2"Gnh#l Zb$ZD`:T\W^`R+@2/`_p4MRym @<$&A}K%|S}tOb7)U$:7N+{EUEYI%'ZPKDSQ _rels/.relsN!_̽˶5Ƙ^Lތ@`vX`LM}{Ԛ#7?);97-(L.z6 T@jKb=jnhɄtD+uYzMֽmuj ^.8|1Ʌ#~5ٖh*ȵ8MM/-7{ZQbgTjw-{eIm$KC !ژ*^400S14껪MJj`^?ؤ^0'^I yɯ-3j)XSDqL5g"C9_hs<Á `v#o>ȿ\⤓k=aǾkzGW8\ ;f8!1qg)+9Ca?ڰoh#̚Ϩ][.yTHP)\^W1b/Bw @Zӿ Gq؝8] h^F2Mȳ%U 7PFNo\u}8u%Ml+О9ܶkxr$ SNoN 7 $/'%3 ZFaN}-wF~ E-H$ dR; xR?4 n-$;$Kh7i!M}]!PKDS5ˏIppt/_rels/presentation.xml.relsN _{K[u3c D plixAvy~sr3(C ZF֫+*b$hϠ>PEIkC,]G-CZ傺=ɦa6M doӶR_p l0ra`p(Ԫn@y QI֡q&?Rʞ3I"Gq֑~\(| {|&bd$NPt9!vOeF :VPKDSg[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+O$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKDSppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}ppt/slideLayouts/_rels/slideLayout5.xml.relsUTux PK! L|!@ppt/slideLayouts/slideLayout7.xmlUTux PK!3Y "Bppt/slideLayouts/slideLayout11.xmlUTux PK!Ex"Fppt/slideLayouts/slideLayout10.xmlUTux PK!z&!Kppt/slideLayouts/slideLayout6.xmlUTux PK!=[!Nppt/slideLayouts/slideLayout4.xmlUTux PK!im "Rppt/slideLayouts/slideLayout12.xmlUTux PK!h "Xppt/slideLayouts/slideLayout13.xmlUTux PK!s@y#!\ppt/slideLayouts/slideLayout5.xmlUTux PK!=t!Rbppt/slideLayouts/slideLayout1.xmlUTux PK!f\$ "gppt/slideLayouts/slideLayout17.xmlUTux PK!(D "\kppt/slideLayouts/slideLayout16.xmlUTux PK!)J.  !nppt/slideLayouts/slideLayout2.xmlUTux PK!;FdvU&"=rppt/slideLayouts/slideLayout14.xmlUTux PK!p O;"wppt/slideLayouts/slideLayout15.xmlUTux PK!!~ppt/slideLayouts/slideLayout3.xmlUTux PK!K%!ppt/slideLayouts/slideLayout8.xmlUTux PK!ҦB!ӈppt/slideLayouts/slideLayout9.xmlUTux PK!x%,ЍdocProps/app.xmlUTux PK55;pandoc-3.1.3/test/pptx/endnotes-toc/0000755000000000000000000000000007346545000015527 5ustar0000000000000000pandoc-3.1.3/test/pptx/endnotes-toc/output.pptx0000644000000000000000000007127507346545000020020 0ustar0000000000000000PK"T+ xCppt/slides/slide1.xmlSn0bʡ"R H0Czm;-.oޛ8e$jOqL%ğG\meT xpEX!WhH7@(IfQTh<[M] _ ;*Cq\4}#-hq0meڝyGoV׾Zv)(:0<Μ{[ O ;&%f-3\Y:9[%6"4OH3vǩM5 brRV&6Z!_u(:%J,7RJظ35bUM!om0yFydh)},#I5+ҢZt^³ ;kUZNnMhYk.sZB IBwN#%SgH5"Ͼns"پ4|p[<\1mQC]2uQD%4(k::ofV*7Wfyڠ%RZ>F2Du`0~~Ϥbl1cWNkN h&GzBEsAsӏ(%ebeV EŻ[^֞(PbM͡D ¾w~H3#cGcYڄ1Qvٶ]K6agEUUQ?g ƢlCy*)zb'7R'xk1sq'\0: UF}p.~e L6LPqre#ʗLRaկ]{[]`MD*dj ,C%dzþ)]|D{@e 7pۣ/~ᩳY-PK"T% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T0 Ȼ# ppt/slides/_rels/slide2.xml.rels 0_%ݤ "^D<>@Hi!ooqvge{`L;SZA'2Ns869#&$RN\%٣l:EF͂'U5c5ƙd8ĭ9~H\{yKQ7%VD󑩦VڳC6lPK"T% ppt/slides/_rels/slide3.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"TuJ [Content_Types].xml͗]o0 vGD/qЕ6i#Q<`Rop)"v|1<h8CfQJO3jqDQI@zN0),\!zK.bݕqyȧJQǤ8%;5fOBĿ5ZEqe6%^/4C=K6R~dp10%=8P( r_\)KLOt%Tݣi"G|A5Cn[ Zd =O1E,J1OIbu@2HQƢ;(E|"y's9.Rry!%3$IIBhgQo\/PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlRyGoV׾Zv)(:0<Μ{[ O ;&%f-3\Y:9[%6"4OH3vǩM5 brRV&6Z!_u(:%J,7RJظ35bUM!om0yFydh)},#I5+ҢZt^³ ;kUZNnMhYk.sZB IBwN#%SgH5"Ͼns"پ4|p[<\1mQC]2uQlx+T8; #:Lu+ * .,cS9qhrҠV+'6o"w},H|=?O7*[ϑ#yoe!h\O,rqѓk` cb'ĦWPK!Hppt/slides/slide3.xmlTێ {MJUd4R0Q1 `S_L6J+U39`|s;eMG͌0JejIoW7 Z,5ct-cA0Xs{qLz!6pet޿V`byDW.T44! L>Ll ?{u%J )3Օ9=B8ԐiFyd(}#K0F"ʮkբx&qW>Uv*j qtpwVXm("%Ez]O!XL`FʲZYyJ}\vyC+BrċMaF_[ 2TܸZ!c6ӫTXy^W[h.Z'P/BJYjސ/@b,Bs~ѐF}{O=@Hi!ooqvge{`L;SZA'2Ns869#&$RN\%٣l:EF͂'U5c5ƙd8ĭ9~H\{yKQ7%VD󑩦VڳC6lPK!% ppt/slides/_rels/slide3.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK!1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\Lxm(}' B@ Q}Id{ϓd`䩷mC}D(#&1}jh0])0 3g֪;BL8NM \P'D&@vRXe3 4xS=.qw_e>U*e!LUQCjx.DZۘSbO%g{ YބjJ9H-!D,Ԙst c j)mlxwW3]ɹ54J{nӠgP.Bur"T$ՍT.BYUnVTN//Xe9z:G.S'縐YS] 5LݮR8;DEz/FRC}ߖ,>ل+;/dX\5KmN8H`ȋX WS G-fe%ʌ~PK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<Q\eNƈkb '0iM3i`+q?lxA,Ɍ[7%:ĖT-@a;x`á+Qυnb[? *̕EX3#a\(rzpzVQ yH&g$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKv&Sppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}ppt/slideLayouts/_rels/slideLayout4.xml.relsUTux PK!ђ7,?ppt/slideLayouts/_rels/slideLayout5.xml.relsUTux PK! L|!@ppt/slideLayouts/slideLayout7.xmlUTux PK!3Y "Cppt/slideLayouts/slideLayout11.xmlUTux PK!Ex"Gppt/slideLayouts/slideLayout10.xmlUTux PK!z&!Lppt/slideLayouts/slideLayout6.xmlUTux PK!=[!Oppt/slideLayouts/slideLayout4.xmlUTux PK!im "Sppt/slideLayouts/slideLayout12.xmlUTux PK!h "Yppt/slideLayouts/slideLayout13.xmlUTux PK!s@y#!]ppt/slideLayouts/slideLayout5.xmlUTux PK!=t!Kcppt/slideLayouts/slideLayout1.xmlUTux PK!f\$ "hppt/slideLayouts/slideLayout17.xmlUTux PK!(D "Ulppt/slideLayouts/slideLayout16.xmlUTux PK!)J.  !oppt/slideLayouts/slideLayout2.xmlUTux PK!;FdvU&"6sppt/slideLayouts/slideLayout14.xmlUTux PK!p O;"xppt/slideLayouts/slideLayout15.xmlUTux PK!!ppt/slideLayouts/slideLayout3.xmlUTux PK!K%!܄ppt/slideLayouts/slideLayout8.xmlUTux PK!ҦB!̉ppt/slideLayouts/slideLayout9.xmlUTux PK!x%,ɎdocProps/app.xmlUTux PK774pandoc-3.1.3/test/pptx/endnotes/0000755000000000000000000000000007346545000014744 5ustar0000000000000000pandoc-3.1.3/test/pptx/endnotes/input.native0000644000000000000000000000046507346545000017320 0ustar0000000000000000Pandoc (Meta {unMeta = fromList []}) [Para [Str "Here",Space,Str "is",Space,Str "one",Space,Str "note.",Note [Para [Str "Here",Space,Str "is",Space,Str "the",Space,Str "note."]],Space,Str "And",Space,Str "one",Space,Str "more",Space,Str "note.",Note [Para [Str "And",Space,Str "another",Space,Str "note."]]]] pandoc-3.1.3/test/pptx/endnotes/output.pptx0000644000000000000000000006761207346545000017235 0ustar0000000000000000PK"Tfppt/slides/slide1.xmlTn!{cKU:jӫ|ovcMT`3_ FBTζj6pR]K>yGoV׾Zv)(:0<Μ{[ O ;&%f-3\Y:9[%6"4OH3vǩM5 brRV&6Z!_u(:%J,7RJظ35bUM!om0yFydh)},#I5+ҢZt^³ ;kUZNnMhYk.sZB IBwN#%SgH5"Ͼns"پ4|p[<\1mQC]2uQD%4(k::ofV*7Wfyڠ%RZ>F2Du`0~~Ϥbl1cWNkN h&GzBEsAsӏ(%ebeV EŻ[^֞(PbM͡D ¾w~H3#cGcYڄ1Qvٶ]K6agEUUQ?g ƢlCy*)zb'7R'xk1sq'\0: UF}p.~e L6LPqre#ʗLRaկ]{[]`MD*dj ,C%dzþ)]|D{@e 7pۣ/~ᩳY-PK"T# ppt/slides/_rels/slide1.xml.rels 0D%ݤVOR? $4&!I-x;;o`7{גh0)c5Ku`ݜ);bc|$FMJ~X v"RMB'RA3/UhdeQ,Yg4pTs lWFɾC Xl“\rJ󉩤VګS~/gooPK"T% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"TIa [Content_Types].xml͗n0_q$mE!9t9u\3$Vl'M޾$UQ&l1O3op)bFɄI쿏k8菗 ZuKaSȩ '9( (&a[h=tYaUYL*(T3j񘔧dclɜ^B 11Sٺ+vBGFZ*CP9NLS5f9P' %A[ۋ+ep.̚s4`^Y;T$u"ԅP.B\rEzƢh.N(.!%,TS#7 X{"{_Srf̏~J{Uo);iZkj3zBhǥ|PK"TmȁGdocProps/core.xmlN0_%=q⪀$=z "7޶V i7iS*]Ŭ-u,Z(u2;AI3nVDAEZoxmrQ檅E U-]O lYPcRqdW5V\TDX; /Pb纑S>7o#Z9y[^DPfDl$<$+~YIuf"E Ak x38ޫQ/3qb7+ߥhu8C^" JkF]+*( cQńtEZN-+ ѶBtDkqa?mn 5 C-EA{%w\<~ڀ4ɢse hwf!ӿm쏾PߜeAA0*s%_W4f~ ٫2.J2@7d5\L[I-C(Ĝ~bt> f,X漢j8ǵԟϦPK"TWD>Ippt/_rels/presentation.xml.relsN0 _%-0Z B xmDDI6Ti8Dɶ\ yi4(c}j{i=%3Cwz}a,7CQ;ensOiMS-۴xoǀ:z%u*z($uN'gbGQJR\夰 (%)y>;Qe7&'Wo _^?1IJk';{o;&PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlRI ppt/_rels/presentation.xml.relsPK"T0K \ppt/viewProps.xmlPK"Tppt/tableStyles.xmlPK"T }.ppt/presProps.xmlPK"Tppt/theme/theme2.xmlPK"T mu!!ppt/theme/theme1.xmlPK"Tђ7-(ppt/slideLayouts/_rels/slideLayout11.xml.relsPK"Tђ7-)ppt/slideLayouts/_rels/slideLayout10.xml.relsPK"Tђ7,*ppt/slideLayouts/_rels/slideLayout9.xml.relsPK"Tђ7,+ppt/slideLayouts/_rels/slideLayout8.xml.relsPK"Tђ7,,ppt/slideLayouts/_rels/slideLayout7.xml.relsPK"Tђ7,-ppt/slideLayouts/_rels/slideLayout6.xml.relsPK"Tђ7,.ppt/slideLayouts/_rels/slideLayout5.xml.relsPK"Tђ7,/ppt/slideLayouts/_rels/slideLayout4.xml.relsPK"Tђ7,0ppt/slideLayouts/_rels/slideLayout3.xml.relsPK"Tђ7,1ppt/slideLayouts/_rels/slideLayout2.xml.relsPK"Tђ7,2ppt/slideLayouts/_rels/slideLayout1.xml.relsPK"T'v!3ppt/slideLayouts/slideLayout9.xmlPK"TJI,!7ppt/slideLayouts/slideLayout8.xmlPK"TSd{g!<ppt/slideLayouts/slideLayout7.xmlPK"T}!?ppt/slideLayouts/slideLayout6.xmlPK"TE˧:!5Cppt/slideLayouts/slideLayout5.xmlPK"T?N!MHppt/slideLayouts/slideLayout4.xmlPK"T6\#!Lppt/slideLayouts/slideLayout3.xmlPK"TD9Bi !-Qppt/slideLayouts/slideLayout2.xmlPK"TkO ' "Tppt/slideLayouts/slideLayout11.xmlPK"TF "Xppt/slideLayouts/slideLayout10.xmlPK"To@h)!\ppt/slideLayouts/slideLayout1.xmlPK"T%1,o`docProps/app.xmlPK(( Xcpandoc-3.1.3/test/pptx/endnotes/templated.pptx0000644000000000000000000012125507346545000017646 0ustar0000000000000000PK!I}fppt/slides/slide1.xmlTn!{cKU:jӫ|ovcMT`3_ FBTζj6pR]K>yGoV׾Zv)(:0<Μ{[ O ;&%f-3\Y:9[%6"4OH3vǩM5 brRV&6Z!_u(:%J,7RJظ35bUM!om0yFydh)},#I5+ҢZt^³ ;kUZNnMhYk.sZB IBwN#%SgH5"Ͼns"پ4|p[<\1mQC]2uQlx+T8; #:Lu+ * .,cS9qhrҠV+'6o"w},H|=?O7*[ϑ#yoe!h\O,rqѓk` cb'ĦWPK!Hppt/slides/slide2.xmlTێ {MJUd4R0Q1 `S_L6J+U39`|s;eMG͌0JejIoW7 Z,5ct-cA0Xs{qLz!6pet޿V`byDW.T44! L>Ll ?{u%J )3Օ9=B8ԐiFyd(}#K0F"ʮkբx&qW>Uv*j qtpwVXm("%Ez]O!XL`FʲZYyJ}\vyC+BrċMaF_[ 2TܸZ!c6ӫTXy^W[h.Z'P/BJYjސ/@b,Bs~ѐF}{O=e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\U*eLUQCjj<" h!z6fƔ DloVO͖Ú,a?`7ԿPK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<KC !ژ*^400S14껪MJj`^?ؤ^0'^I yɯ-3j)XSDqL5g"C9_hs<Á `v#o>ȿ\⤓k=aǾkzGW8\ ;f8!1qg)+9Ca?ڰoh#̚Ϩ][.yTHP)\^W1b/Bw @Zӿ Gq؝8] h^F2Mȳ%U 7PFNo\u}8u%Ml+О9ܶkxr$ SNoN 7 $/'%3 ZFaN}-wF~ E-H$ dR; xR?4 n-$;$Kh7i!M}]!PK!5ˏIppt/_rels/presentation.xml.relsN _{K[u3c D plixAvy~sr3(C ZF֫+*b$hϠ>PEIkC,]G-CZ傺=ɦa6M doӶR_p l0ra`p(Ԫn@y QI֡q&?Rʞ3I"Gq֑~\(| {|&bd$NPt9!vOeF :VPK!g[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+O$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKv&Sppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}ppt/slideLayouts/slideLayout7.xmlUTux PK!3Y ",Appt/slideLayouts/slideLayout11.xmlUTux PK!Ex"vppt/slideLayouts/slideLayout15.xmlUTux PK!!|ppt/slideLayouts/slideLayout3.xmlUTux PK!K%!7ppt/slideLayouts/slideLayout8.xmlUTux PK!ҦB!'ppt/slideLayouts/slideLayout9.xmlUTux PK!x%,$docProps/app.xmlUTux PK55pandoc-3.1.3/test/pptx/footer/basic/0000755000000000000000000000000007346545000015504 5ustar0000000000000000pandoc-3.1.3/test/pptx/footer/basic/output.pptx0000644000000000000000000014676707346545000020006 0ustar0000000000000000PKDSFA" ppt/slides/slide1.xmlVN0}+hQ!dXC%Nf]لkmÓqⶔ1Q4dU`I/j:2#dB:-ȸ87C^@R>##BȓT r/Y2MJh# ϳHHT'P9aB[o #\Q"Kfe6WvDY3kLm_. $Wdd;]7nw4b?K7iDWg@(k!eٖ?DV'f2'2'oHpVmjCsp4˷ FvSt&QdL!/D&\NU^7 ^rPKDS) ppt/slides/slide2.xml͖n0obDMmEK{.flf;YRok^Ɏ'ԩ4)c9pɺbhE*; Sz\^$nLbPFdZ#UZЊ#QSkp)q&HQ1xWNw|"˔"]V6hV6[l 4wߓd 5 IY/lWs 8nk퐌ֹ؛$]ktZ|y*:-fOc ؘk>vYWf;sV?B\CkrZ7@zSC2m9[fﯶTdY2bJ/4Wus5bъ͠ siSl^=Y2&B7qnZ1{[r;\4g$`(x-2[W?RC 1&#; Ap~B ,wG3ӇŚCg4^~`gDaύ<`,N(٪úXKi+}(]O{C.h<IBۄ @}[D e/Qxm/,\ÖI>a1(uQ*?xQ8h!eus0'1:lF/ $;4(|׋A27씀Zll*swþ xn}&PKDSoBppt/slides/slide3.xmlVn0}&UR4ꢥ}LA3NlO2$mSR)sv Xaƫ,ıYWnd\vd!'9*h5'M+V#! }.j= a*j[7EQe8ie0Lij־[0n'))dقa{0V#E;gzj5g%9#9]u#Ý`%<YnZkn5[χrv p/eթAu] ge}65頫-شY&gm Qp?~(~;^}AK"&ߨ㷲ACBl$Z=ku#Ȋhk.6j=,H}]c%4KvIduU|Js2\6$ W*$!k5_B~2"N3;Ng;J=M.b{i,$`Qص oL#+1v}Ѝ`{Z^C_b+Û8,P`JFHY%#Im`);L=-JQVȟ(1(4'W  R\-g4ǡ;H|dw*04CwOĎ"ǵ IN8e"Su2><>>n%͋ PKDSYp ppt/slides/slide4.xmlW[6 ~+zxe ,T)i0@.'+)I~6N#RKRoo7M ֈuἱ HN Ľۛ LI7cYVW""J+{ \bb kӲ9JijjE]N{k_en샔$|Q a=~E{\r @`ƆadɺYGu6%kd+d?%? y5WYX{%>STFy4B(ECrkCm[ g\:3lQk?~wK8V8 :Q%zQ m[|3ųm _gT!u(l :bȮ򰺣 o5.WvVId,eE"} sTѺ@ x?*.6JQ6.A.I?G՜usD@ q|v)ZSY։ c|9p.gn~꓁)U1:%0 YMĉ$?Ey]\;%E1D*(WIQfee/VJZ3^HZY`QX^JJu?rQΥX% N :pw#;u ?Uߤo6`oMu'(׽Qw}y:ΦOc>ZX#|ʷ.s(j٠򳈿U e0"&t.3%8SڙG՞ڌE\û%}VBͦI>âQ,<*(5Jm7|jŪ~ fIp[%F? {]3"7 E^w6f#"byzwr} +/PKDS!tppt/slides/slide6.xmlXi6 V(jdxS h RA\+=NNR.w7I[`äEW늂{ºGzXizؑe;hh *8oviA*ܽhZRauV<{&˔̚tUk%P̅]Q>E[H'Ԩ{.Idf a{5k S7 5Ȳwz9}]#ڏOTBh_8(v[X S^yN/z;X7;KQ*hKdqJ*|c3՟PKDS{_ppt/slides/slide7.xmlUn0}M 5IS-` 1fɦJ}q$8!G*!u}=szj8Z2VqpcD̋٩i^ zDǸ2FyZj#?$!ih-fz,뜥m~0az85Pj|TLL,|VٞX~Vr![\ #A6&e#\Vjl jAu&v |o:^Ϋk%!{-—B*99Z^0OW_F~"=mHmeP]u_%Ff-!UaV(MK[Ajk~6 I*pZ.'09$^F^/KNa,~VMݰ[ SτeE73*v "~B$XM'wi'9U2![sGvt5y۠cgPֶlٷ(02 7+ba'C//~?&i6î/:[g|zz{/.bf~PKDSP*% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LCM+ Wiv8C6E.4Ha9\KrB+]>Z5 BFv[왤Wbj G#b,F]~+́ҭ3մTamv{/PKDS% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PKDSҋ6% ppt/slides/_rels/slide3.xml.rels 0_%ݤ*H^D(x!٦$؂;; S;7d㰧t+4g۝mN"GMHD\0.%9|匚!_B#;TՉ5L)S{ #l,MF],~+́ҵ1išm6_PKDS6У% ppt/slides/_rels/slide4.xml.rels 0_%ݤz"M{IdTۛc <7L}LÑV@IPC6E.4Ha9\KrB+]>Z5 BFv3[왤Wb@5?l?FŢ?*X»X VD[}giچ_PKDSzwft% ppt/slides/_rels/slide5.xml.rels 0_%ݤH^D(x!٦$؂;; S;7d㰧t+4g۝mN"GMHD\0.%9|匚!_B#;TՉ5L)S{ #l,MF],~+́ҵ1išm6_PKDStѩ% ppt/slides/_rels/slide6.xml.rels 0_%ݤ H^D(x!٦$؂;; S;7d㰧t+4g۝mN"GMHD\0.%9|匚!_B#;TՉ5L)S{ #l,MF],~+́ҵ1išm6_PKDSplI ppt/slides/_rels/slide7.xml.rels0Dٻ-pPc\ 'h6m1֋Bǝygߑ:ji*B~_!:|'D{mvǘ-ScQMm\/B]ìw ˒d4晤8J_M]+G#uX`Shck0ptL+ehw+O-釋pxPKDS3Cppt/notesSlides/notesSlide1.xmlTmo0+SҨѩRP?Mձ=da{q t*E~=ws&UQɴɥU#&bb;ϛOw*20Zb\IR ja$tkR\&^_/4 &ьS ,W&KДf`w%9n'n6jٖ_ZrQ< Zƈ4ߋү۰Q@U# r8#,5>1ٷslq< IIbGW7n`yCA 8Y&y4F= !F>I۬[6559{ܬ2d r<[|PϹiFT>& =ҽ}C?jVfҹPo7vm,~He[JV7$pxG %-hJHOѴǬi/-w h}{st[#}G5T>f+7rzGZ=ZEti}*1v"(}QyQ,DfoN}[]8!h0 f& LL)YtP0|P&F<PKDSi?!ppt/slideMasters/slideMaster1.xml[n6AJԗec"v^Pit)EY-g䆔hɎv[%'AFCrf~RλnX^f9{48ct?+%?Rn㉙ Q-RyAKr.Š9-v`-q NJ0.%%ydȣtUJ8JifEiE3{Of4Ԉlbmx.t₀L-d1YI<1T?]- UIȞG?H^(7#IBe%giI5'DG^ yVi}ō,5^¼M@ݩkZ֎nm—j*ܩjEVQ]QK҃X_Wu J+#4PEB2nJ@ej H q',bsc\nn>r3!G~`׫Gm<.x)~$Ґ .\x㠑Q*I۳x]\ ¡ BكS׿F87lI*#oQ̇0ѥ8 -{IdEk™ mz0y?J;7yC _8ޘ507f"%FTEJ9cFVs0%a?Q6y:^ulq(x?Neh`_bzjlKQmj.?}~9 ͈0p&ĬfG=t{| ;:nl9JnFZu? dK]|%>*$z@  ptk[}NK'춄}^K8'췄pOxvF>鶡>Y}N ڦF1{%ב[a=ԩ>.Hc)W"Ri;sxg)Kvoͦ@A[\X$T|U YULt\%6ݷ%H+ۤd׊ Wxw 8)w U ;72=bf;Z}+wG}maGnO!ڭŏH}t)tݪ6oH}mhzFk]. ^qUdw)/7hZ?PKDSjA/ ,ppt/slideMasters/_rels/slideMaster1.xml.relsAk0r1Zj{NA$XBwQh:Eˏ?5I6t<xB\{=y_1}N_0* L|Z7o]'&UDp|9SSpvVP$~ ?)O\ymkxe`9ir n.*͹M}E"iEѶ$/[ NÅ$8FS eېt$ .R\h%U2LLmCiMѨDJχ&XPKDSbR[Content_Types].xml͘r0_J4Hګ2CaN0 aW<:[q΋a.M%|?>|\7ڂh|h?3( cA8%nά(9F#h`OFw0/Oݥ<5ƹ@f({"Wz7xF+(w{RX=Afmm?s^8!M`)Lq;l&K  %Ip(a˻+|M,dw;]EO.Rz"ԇ>u"ԧRNJyΓtu$}'i;wᑪ~#1t.}ʄ<}KlP[{7‡W-~0u gI^쇰js+p{b}krѨWɄ{Hn JŸ(qq0!NU BS!)nT2Aqʖӎc;Γb/2'PKDSp۴"OdocProps/core.xml]o J} lŋ-^d.[vGB Uhu&>Q-~т lo#ZJ:&[ouࣆ6t5AP$¦pz#b*;!b$d DDn2RI}3ЀW67nÐ!'w1cu]4Ou=56Da% ^)ɢ u O }$=z!VpZMu9ٙy1=l9%9y'VF_67WIO0ķPKDScDXdocProps/custom.xmlKo  N4n;9na `4KG\M6xxF wd׭|I!dT>+| YȾ(SHn d>;r>g?539}kXx_ u5 ߊT [17ۉ'FfLМ%Cj%eVBԒޯƕ PKDSQ _rels/.relsN!_̽˶5Ƙ^Lތ@`vX`LM}{Ԛ#7?);97-(L.z6 T@jKb=jnhɄtD+uYzMֽmuj ^.8|1Ʌ#~5ٖh*ȵ8MM/-7{ZQbgTjw-{eIm$,0uOwj^]̉[D׺[ E|Xưgk"" [ k5k 2oee2Ն%J:%Li$֑IǙagga7@zH"'C &8Q`N)s8R49$MO)s85vg2Q$*]:kځ&uS/}WW.MS09TWPE&u񲫊PQ-UW8$sxYPKDSGKr)ppt/_rels/presentation.xml.relsn W!ܯU[,KXlX{ڒ@#nQj zA/~9@\ =ځLgIJԌ%~>-z|;CwLjdp]@:Nn4B ءj'miZhSXm^-EӰ E57^Atjj0OVÈ\VL")rbI1*fSyH«XDR̽ . g G3w7 zy {')7EN8qEAƮuNa^Qmώ٦cg!R>c#_PKDS8|^f$ppt/viewProps.xml]O0{ f 7\0onY?v0Cwz]W^ɞ['*|+Pu>׻%ڬW& ~x t+5ޛcG.i*m%3K"[H K":ϛ[+OaLɟjYF<ڼ\emKYUG =%n(8Ѧ'XY̠ JZ+=`fPK!~!ppt/notesMasters/notesMaster1.xmlXn8}_`A>.\B]l)l'nmP@K-"&- v?_C- -k43<q[RgED]psg`fJ]rFzg2.Iג{\ʪnٜ~+`lE%Y;x/i;]₹f8d>NlY&'P,j:[%H n- 1s2k~ߑS䷀`3R0Ϟ人(^j\] ›յu.a@3VZhMYwoTOǁ=ީ߶ґ[d2hlm@{kQufs"8\S9Jic٢v),-Գ;\3??X͔N MPI3'GQq|Ix( IecjM>իNYN (A9]^v|`i_P"G&;#9]r,( dT 1XnNe,yCAa5XMXZffOgO8#Bˈs,c!fB(ß|\$w8jEkhp:# ?beQQ1[ v#HԥRv૽HJ%"'eg MOqi6EuT85/˙ᯎoF@QGJcdIziI,6FE(DYނ/@ .P:p&VX&j &jk1[:SN_5 +5)@!kPO k@,_b߈ͮǝo{^s _}îժSHq=4 lD@VwCO'| (pᄏ6a',*h 4HBo 4V}@PPS^bJ7)tNIzP%$F'U/צt7PK!ocB ppt/media/image1.pngPNG  IHDRLDgAMA abKGD1 IDATxAC2 `vG~?y>O3Ϸ 0000f0S VPPPPpVs 0|     YYA@       q@ VPPPP0 0k 0|     q@@@GXPPP0 `  8     0 07`(`(`CP   VPPp ހ `@     )`x +h(`(`(`8 >CP0 #,(`(`(`(`*`8g +h(`(`(`(`(`(`8+hXA@@@@@@@@@@@ ` +h(`(`(`(`(`(`8+hXA@@@@@@@@@47`(`(`(`(`s > 8  #,(`(`(`CP    VUpN@000 `XA@@@@@!(`x +h(`(`8 o0 `    Y 0@@@4000 a@@@@@@@@@@@!(`0000f040000004      `@` )`      040000 `XA@!(`x +h8 oPP0 `  Y 0@@@@@@@407`(`CP  VPPUpN@0 `XA@@@@@@@@@!(`x +h(`(`(`(`8+hXA@@@@@@@@@@@`V9 >CP0 #,(`(`(`(`(`p VPPPPP?`XA@      0f      `@!(`    0 07`(`(`(`(`CP   VPPp ހ   `@   )`x +h(`(`(`8 oP0 `    8  `@GXPPPPUpN@0 `XA@@@@@@@@@!XA@       q@ VPPPPP?`XA@       q@ VPPPP0 ` 8      0f    `@  q@@@0000 `XA@@@!(`x +h(`(`*`8   ?$++%tEXtdate:create2021-05-29T17:44:55+00:00o%tEXtdate:modify2021-05-29T17:44:55+00:008IENDB`PK!ppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ{}MSY a¤LrC PK!{C] ppt/theme/theme2.xmlY͋7? sw5'c;d7YkPa0J{}SYנdzZ2at oްY[3T9]|"b-Fw@;I8r14\(9%a7C 0\U:|?OGyrHl )>q2*husϞ=ߟ?z˹vP^??|ۏkNjYǝ?NЌgOLhtܑ\]2ˌ G"JaQHJbhq֚j(vӳ;O&x$ F.f*|޼3ؿ}q_wf8WW/__x@X ICJ)pb_{o/7Ek"U ",YnG܍4f%y9bhv|`05#Z =Oza0sYa $ B{.//LIUEA$XUB5h4!; RS2ar /08c ] 1\A-SLGZaJ,%!扭_I7~ v0kMmpʴڌ0qk=$PZw޴x{"6-f'f΢&܏M:-Q}z q%yI!!1C>N޴y ,ڢݬ:>8(+NaXFvhЋ Dm%jh1ԛg[3#a4r6װTRb_$Sl 0)-OHsDRXi"*P mX²,J8(,醬Ώ&yn(NIiӨֲ&Nqu0t;O0龜ﲡjMVG.W_eAR_"Jք^h =,Jy9`׀s{b|Z6`MJ ɠ$?pa7QsiuUۛ'6Cdo<lu' v;p؟^ ٘A9 [V5Rپ8xap~Jcz1sMݵZkY{ KXsnT~ ()o]2#ͪؒ~|*/1[Op]ݮ$I(O|'Uo_d΀)6|o_>ηM}4:. "Tj^كej\wB FsPK!m#3G/ "ppt/slideLayouts/slideLayout16.xmlVn0?i`e PRIAMƪc{aiR_k{>ɎtR;w,chJA!#S~!m019Ic,>s110n▗#AdXI8KʰOu 0[WIB#$# 0lNM*^dax!g0Rz4b1815 }cadfcEG%GrP![,~,'N1,QmA4ky}v H(VQz6JOXSUNq8"\2g"Ո džcL)0jatXf: &fd挸i_ 'ܿvHL :Xb1NBx< C1U恄1.~WPqАሤ@eN Km@!ؒ},RMٲ잟 +˅^KF.^F$tiqJ2ΈiJRtVNVr ÆYRpu/{FGۯG?vzaRJi[-Wjgqv'F*>|Lt 8ʥUZ[&Z$f ]`S*鵩Isux(=[IF𘔠ą*V;b4&b]o[݇p j /Fͯݪ_~6mmϚ6#w>k&YGZα:3wܐB(.?PK!IHK;"ppt/slideLayouts/slideLayout15.xml[n6w ku6[욖hK+uEɆ}q$#lŮcZɏA~3MК"sxkA\{v:4Te)=ni=Y+riqFεHl8,&x4-2!orrAb'lu&$Nj>?f~Xd*(A8eDH(΋-?-紐00m|cC3$Dq VqVI [Nj<Z_s ap13}Y7͂'*n5[@AlzAtg^`4nSy FѸU\WY@i&R5#J5%PPոChl dGӱ lba;j0m;]KL<[5}.r 1M\Oh:x7+Wc c^BP3$ZWBp c.y`~ kFe,.rɕTONaXlș}!#auʙ:I"ieLLJdX1Y%_ƈPj$?00 wiy=hI8vqU[6cњ0(~YX\ e p +@9b{>\8E ,0nv&:ЬrXoi.Q9%3@U7,1*Tkj\u,l* ނ6<VaUcρ=VaUkGglª` <>e{`Vo:Va-F2=uzQ| UhTsbMq$ "8qPW.3˲o[ʌa+Fodx!^,Aqlody>W -&Ò^XU BU(,M, ?9[7DFa߆ZV;–.x&~E4\E|9ofv)C =IYo^ }O_^x +;gysۏ`Y<TQ9 Cdp'nT"55][_7<8#.K쒸6;^뀵ZxV j_ǻ8Jl}a6{9z9z?P]Ǖ9jzYfC2Ve^e^e1dR8]Dzd]fe^eoLG0N9\O >s`C:Gs:Gs:u^f:Ǧ:Gs:Gs|::.=ٍR9:݆oR{9z[9&D|B+CPꑿZC:x .s93\r0]jQU'|oEKio"ƌI0ܡMfh4iw^=OSsQ\ '"Wʍ7cqHѫU2Nzoyzp&O=Xs{`&$~cOtg:LGo7PҺ}iXeǿ~N|Tq)Dye%_! 8]V! Q`/PK!FI 7%"ppt/slideLayouts/slideLayout14.xmlZn6?`@h]=hR$v<H`IX(uI{q}q$#$_;ZADSwΑorLȬ,-ʱ+2͊CYH*Z;fLZo~uu yzFgD!Qzhl[&cSXJS?[;s8N`4+ff9e $gATi8dVmV &5 ^U [G䊧pQ䓼yY] ̨*R@Yj7,,܍Dnptwẖ;z2Y&wk&5V$XU+:S!<7UXVgeAk+j͵#542Pͺ& ڬuEF:``N,0b~޷I}.Օq*Z:,TX)tNbei#Wt@aEzIJ3Sz 14a㒧ZE{,-8xa ID d8ؿ$(a@Pz!Z$Rsȍe&xQxʱC9gp."t`<М ld"%?j=S7[Aa9TU4qe@BR35V.oG6ʓL9N@=m=L{Frrr`6 , .yV 8M8 .$qy60l gJy@55$68zjTom +Wa V/F$ k`KHdr `C:b` V-` ![kx 6DXU ʕ3T/RR r7hL-QX #QqFujȿV&U9|ffen,^V:kZ뀪V'o([}BVd(cN IOб+747jÕ<4,fKCn0UK"57WWgb 5iƦ{k, Lz75JֹfVh>Cz~T*I+?pkv'(s}2:x (` kb1Orfs;^1#_/?k[ُq\!|ʷ\7+=T&dPK!G "ppt/slideLayouts/slideLayout12.xmlZn6?`@h]Kn6[7#іP2v ۃl'9-n$nc."?E'7d ,-m1Qec^dZ",ıu+j?=j\r`?R~SQY֦ʹW5'_v.mgW/,2D 5_YUh.h5uhE-@b:aLXsu^j3p+Q%3UMKE_..j~АkAc򣛩 *`7XqNhx5-~P08n+ΛLKT-uuQjV o[RYLV34X1U㒌w\])Á톾kuCwh{"Hߜ-'ʋ8-5c DJAt1} cVKw6V)$96QNd$%I ^k# &XBErG`,ɔX"Y[I/Xy)y,R&`G%[˩g= n.vy|?\Lo|aďӹ.63r.eE= Xxsh讠<d4x! O^!HA;]@Di`F VHv@Di` v 4 v7 4`4 l_rxY;ǩh=!j ÔcC\)7 yBw:C:* UcD7TQYPO+*F*:u3UBB#RAh3/읎qq䝟iL:vSH ^, Oo%soYa5 539WpBkv%iV3ѩ`S;a؉^ R{zkV %Uc=Ng~;{==F n}_>~y[=7Bl[3g7YK!nU=ejL9Dl0%rq C}byQ7؇^V\h9*)lvkgbڌ.cMMg|jp) YkXvBH0q^Yb0xIɂ?&A25S6 "ȨTr(3MiDӃ4U,TĦ7<ԃbNF"(D/ 78cNڝX/|%f6:ۢGTӼLhT -K[SƖ\~):fchPH?UR1Atx`7Jc5 +HV5p'%y_ҔuZ71i4` 3 KێVN/ZVogPp;kP VQ衻GAet=/q|:wPxxq0v2 R:`n@th|/"{ O)0 0)H9ݦ߷-܇kɃuIC 44$ҟې29mYA?t(*~мsS3_<@**/"G[QK8e'6:I5&}} ?75Kh:7/U IrFZtG}`e1r>We /d@h3םIh40̄W Q9՝A1#_/hK~q\ xKwkJ7k}8]&1MPK!B"ppt/slideLayouts/slideLayout10.xml6W;Xo6 eV ,UYTf㤶aU}qI$000t%s\sXY2aqdl10>?Lz,`d`l0>\JoDi8%90l^K/̄㯊Sӱqƌz>?e~1g12'LVN(Jfhh)0zvW%Ŷqg4A j`Yqhr p --NW^)אՔ,h 3A-{M_CDMqDR~O+\'*3]FPK!!ppt/slideLayouts/slideLayout9.xmln6;oW]4`$:J]FҮa@_k{>x(ʖR'q\@s9߾ )yU[c!Z&Uǻ(L Jznm]LlDQ3rneRg-DjZ/TrY fKˬǬ<*Y SF_dy-ZZ} T(^WInkem'w i1VغP' j6OS9HZFwR_yo^z(Oem0bcvH6K^Sym--an$Jd?d&vj5."WWUIRy;fx֙qkԃ2={(~}=V:Zܐ3TV߫IVDoLȅ2kB)]şj=}'u\-bN-Gbi.5r}Pj2%]Js.;᭵#nsfK:Vi<. &qA?B ~ya#LOf*ҧ*/SUe`UJE=ʤQ<7bxޞ7ƾ4$w<a/u$bA1q( v(u#w(@;>(= P pAtbPrjʓEMAuu"8" є[YaKSt{Uq|tb "s:}* \G$]@#0%Ie{$鱸J*33E5a2nhwA=@+*jvP>M c )x%IC*$"!ꋡQnu pArC8@{h}J`wH^*/5NAfD/ t8vw}fڕK Vh꾟f؟&8M p2/2UGҷSFI W{:l3*z74"YJj66poB[+םqkM Q= iùgF+2,IQx :E3+ O)- frjWnJwm,:ڽqBv+Fd³3Q%aI% [SCV$TP#I&TO #m#ĠVmn51KKhw%dԾv8 =:C@(tb;v\8pu;Ւܟs,sEB8[1>J=MI31>KǡDo1[_מu <2RF#PVձ{pc][l-;HN֏HMҗ;ůMfؖR RR[&7pAVT/tv_I`x9EnG3#:7:س=^5G=:ВȘrƹmVM)ôm[Hs;jo|yvC\RÀ]&J{ȉÀ@iAt!@4 =XJ: ІJ( P_޸m=RvփD=vG:o0_stlhy,ix<7YCUe9נ{\ g Nдʱ߲P0,sIKyje4D?݀6s%\-{ ~Dz%O4zo̢q03N#}#kj !B{O"߿oЕ%>09v쪲IygǛPK!)Ŧ!ppt/slideLayouts/slideLayout7.xmlUn0w4?B &u-Du6 6Mkm'g'1LbwαuЊJU|#:+&N҄g՜*|1~\ ˮȦ^j9.CUiA+NjA9|kY Kf|s)9n[͠J_2Jj= |ðȰAF}MϜ$0|Nj~2m29twHE~}x~}ԝo5<.LFLr=pviM~6-;yPK!5ׅR!ppt/slideLayouts/slideLayout6.xmlVn0?i`e\BՐ0Mi:g&!@NBs|nwΉ9;_-TgC'8DX= ۉsҘrFΊ(|ݙ(_k>Sj-XpA\Xë|rzwWY2l^'P!UVBk I/S+hu)at * f4G 5ZȪ%n%!f׋DUn o}Vla7ޞCŃe!kh9td+,5afݬLh{mo'A$7lP*qɳG<~o`6(w_5vMfM^<_ Z!PgzE}aӐ/Ŧ sf z4U4G$4Jl|h|bі녰|% ; qoO[ Rr AhaL`Z848nۋA8;vrګ6 GGÜ,- pnZc4(MeSs,!B[_B%A:;UNߣ7:pM :t0]7]$'~wrL.~g3 gݡ TׇG|4qf-9QV٩ 4vlqB yi5E|>:ɢAeDieWEUJ URV}෫w bغ'Szbċ\VPjFWQM,oSlA n% w퐜0W :4i6stPRO&${gm]YmPcU渭9bU{J1W6k7Pͺ! 6D 80n8XAz&ՙZ>W1Q!'11Ci-U]XG# &RQ2TU PhA~Ci.T l1a$g} {,-8a0b ckB68)]oA>!R&yeVCxɰކ "eSw+sÈo4I'9c0RTq YR $LUkn#@E\NZ&aoY = :, .Y^"‘LɄ0 q0ah΅9~A6CAꃊQ ToPam`a6j`lƠé 73|:j`l{kxk0S`5lD`Njdzx2 *S -@#^*mV |z 27έV 7p'*~[5 ߙ])R4e]R|6EPYoDb> Z`+>M+fB4QQ7?ڗyA'eS';ݚ}{Uʦ$.k!}2z؈CtZ<_ꗻ˅\պ4s?Aw~ T}LDPʆǪ,ԴUrvRʏB>Fm0[>EMU]:'u= 籝[O/z9|0 |<^EQ3z+Sm jOPJ[\ mq-{L87֥&z jJk7M=cG]eDOe[NYRfQv ,{=w $y x8c'\'0X4Z}l90_||_Q_xMKyeSU^5.,1V.PK!(}d!ppt/slideLayouts/slideLayout4.xmlWn8}/@hU,E6b/i`$*RKZv]o/鐒uwaRyf<*)Z! ҵa O v׷nS;TrF֚HUOB!`VTs%w%V(T{.n䔸`V^gY1O%ab˼dVV "ƬuI+Vw2FZJ3lq sFBaξCVf$,E, =ш8+w%<¶X20>wMPzM70b,/FC;vF0v8 GI0'C{J!TUDx=K5M1w]8V3Za{(;kE|痏O0ǙF7ZKP_PK!/m0!ppt/slideLayouts/slideLayout3.xmlXn6?`@h?Ւ,)8mPoZ,e$:%q$ΆEQ߹պdńf/<&kYnhS6l0:݉iF#O)NE۱[~ϋ5ǮYEI-k(" e{Z'\o[ɲbSs g301c^N TvczԬ~ݬZ* v36+ n-_Cz.D ;;slHf&lV= R1;qJqFWj4-7m$ڕ6fEsl9dzQ~\R? =Gw6݉Z^=+xIPVpmUhΖ-*e K5S7x}'/8.Yo`\-c>dwZh!h>8'6&V\rVR2] (2ҵr .Aw(f_֯%6ln!wAw.B eYi‹ H*^bQΰ_WUv7`}F-P"2D|)Q4Հy%d$ HW#*ztuۉ5wBm9>4]Idm]8w{jl _\,)Lں5zV>ָf6b>WL! yBj QX_SAu?P~MĎf˹<Kܰ(YoHd:MQ{aGوR%[1fïԏ^ /M 733m[]ñ)17. }zD$*)͹W9#oVxu9}08 M`z#7ݗ=ke8ӈp5ޮ05NuU!ߊhӿPK!`r) !ppt/slideLayouts/slideLayout2.xmlVn0?i`e 4BE LzA>8MVl`Ӥ8}; :I_r}rz)2κNwa3vun#7pҘŘrFΒ(ͩ(_%iLupISQJr %\XPy_;^[^3>yd y4 $k_PMHƮ I/巟d5 9LL3M uЀ3 H@$1v|,QrJ3;dsU]Y$27-]r4# b2ZF(*UtN!GmŪW +81 z+iEZ* TiW|u0Xzqqr D/)al6aͤ@4ęFXi"(Fme(c,-0gR?P؈J?x\XS©L,^M 0tUH.)Sڐnۋy/q؆ <4ވ=d'i*kQVXmNnL"փma-pփ~Ʊ;ÓAݯ%UĜ[0xs=fнډ6i߯ff=M&ѲJOJ]B)A*U ;YL,ݒyy1;gՁ7@+GA6臡~C5ꇣn62D+?<>xoQetDhzn52S^kQX{PK!'q0!ppt/slideLayouts/slideLayout1.xmlXn6?`@h?Ւ,)ܸmPoZ,e$:%qɊADR߹Ŧd̈́f<&kYgnhS6l\38ݙ%nWF#)Y۱XrA?vEVcoشV5kS˲d=L >4I]w୪gA19ϳ9ICkXx%ȜW9W{/ӣfݕoWTF;}apڬq0}٦~B f@^cE2V٬|uDz+)^n@[z{ewf%iZGoJ+m3%͊8s4Aॉg (00Q- vw6/Z^$(8@86YB*G 4PRjJ0CR5g8^s K5[sV%;iec‚Z *I UTTL&K̀t;@y]. kW67kI[q->Q6`[@\Uˣѻ>" p&|؀񪁤%v qU;* X8@LYxG TT03(FT\y7kTPs}eʻ(ڹjq5gjl _],)Lں5z?r%1|q?m/x}$%,yM%BSL QX_QAu?P=MĎ=GW =x )Pm94EFi8GU تg0TM%Pp>p7Ahi8Gm'n#dwLfH~~$t "8 veb,[{ O6Y4оDl5w0>[obk@=N1ր;aA'5Ŏp5Nvry-vR>)[qLNb .lyDOq\ilD7O6s68I#F$q="t LI<1Id6gx9 E?{kG1lUKK1wieb>1ձ)RS@cn~[Q˕$?U2RߨP7zq#"hui ,I#7^p2p7d:xhR{ހus`Pcu/翟a~B:e{4hR7^ݗ/;ӛR=8/D$"3#MM:\ >a?Е3\ Jh?8}V@%5VrJ0t`f%_%(Z`(_Eɪ]zh U<Ku2~>Ѽ>|4ϔ;s ѵ^en>Ѕ铘.S%m]h!]g\c9WPKj6V\:dxY0xc-P>ICКƃqa:}JlRxڵ}$AOA#SO?g 7iUM['׌u9[yv7޴\SSZ)' c$>7ZWS8иeoR?MͬZㄞ& w @ӂP]s72_mZb/PKDSFA" ppt/slides/slide1.xmlPKDS) &ppt/slides/slide2.xmlPKDSoBppt/slides/slide3.xmlPKDSYp  ppt/slides/slide4.xmlPKDS39  ppt/slides/slide5.xmlPKDS!tppt/slides/slide6.xmlPKDS{_-ppt/slides/slide7.xmlPKDSP*% ppt/slides/_rels/slide1.xml.relsPKDS% ppt/slides/_rels/slide2.xml.relsPKDSҋ6% ppt/slides/_rels/slide3.xml.relsPKDS6У% tppt/slides/_rels/slide4.xml.relsPKDSzwft% [ppt/slides/_rels/slide5.xml.relsPKDStѩ% Bppt/slides/_rels/slide6.xml.relsPKDSplI )ppt/slides/_rels/slide7.xml.relsPKDS3C'ppt/notesSlides/notesSlide1.xmlPKDS|*ppt/notesSlides/_rels/notesSlide1.xml.relsPKDSi?! ppt/slideMasters/slideMaster1.xmlPKDSjA/ ,(ppt/slideMasters/_rels/slideMaster1.xml.relsPKDSbR?*[Content_Types].xmlPKDSp۴"Om,docProps/core.xmlPKDScDX-docProps/custom.xmlPKDSQ ._rels/.relsPKDSw X/ppt/presentation.xmlPKDSGKr)2ppt/_rels/presentation.xml.relsPKDS8|^f$4ppt/viewProps.xmlPK-!X$,5ppt/notesMasters/_rels/notesMaster1.xml.relsPK-!~!6ppt/notesMasters/notesMaster1.xmlPK-!ocB <ppt/media/image1.pngPK-!Fppt/tableStyles.xmlPK-! 0}Gppt/presProps.xmlPK-!{C] 6Ippt/theme/theme2.xmlPK-!:~"T,Pppt/theme/theme1.xmlPK-!ђ7,CVppt/slideLayouts/_rels/slideLayout7.xml.relsPK-!ђ7,IWppt/slideLayouts/_rels/slideLayout6.xml.relsPK-!ђ7,OXppt/slideLayouts/_rels/slideLayout5.xml.relsPK-!ђ7,UYppt/slideLayouts/_rels/slideLayout4.xml.relsPK-!ђ7,[Zppt/slideLayouts/_rels/slideLayout3.xml.relsPK-!ђ7,a[ppt/slideLayouts/_rels/slideLayout2.xml.relsPK-!ђ7,g\ppt/slideLayouts/_rels/slideLayout1.xml.relsPK-!ђ7,m]ppt/slideLayouts/_rels/slideLayout8.xml.relsPK-!ђ7,s^ppt/slideLayouts/_rels/slideLayout9.xml.relsPK-!ђ7-y_ppt/slideLayouts/_rels/slideLayout14.xml.relsPK-!ђ7-`ppt/slideLayouts/_rels/slideLayout13.xml.relsPK-!ђ7-appt/slideLayouts/_rels/slideLayout15.xml.relsPK-!ђ7-bppt/slideLayouts/_rels/slideLayout10.xml.relsPK-!ђ7-cppt/slideLayouts/_rels/slideLayout12.xml.relsPK-!ђ7-dppt/slideLayouts/_rels/slideLayout11.xml.relsPK-!ђ7-eppt/slideLayouts/_rels/slideLayout17.xml.relsPK-!ђ7-fppt/slideLayouts/_rels/slideLayout16.xml.relsPK-!! Eu~ "gppt/slideLayouts/slideLayout17.xmlPK-!m#3G/ "okppt/slideLayouts/slideLayout16.xmlPK-!IHK;"nppt/slideLayouts/slideLayout15.xmlPK-!FI 7%"uppt/slideLayouts/slideLayout14.xmlPK-!/IZ "{ppt/slideLayouts/slideLayout13.xmlPK-!G "ppt/slideLayouts/slideLayout12.xmlPK-!!x "ppt/slideLayouts/slideLayout11.xmlPK-!B"&ppt/slideLayouts/slideLayout10.xmlPK-!!8ppt/slideLayouts/slideLayout9.xmlPK-!3!Wppt/slideLayouts/slideLayout8.xmlPK-!)Ŧ!eppt/slideLayouts/slideLayout7.xmlPK-!5ׅR!Jppt/slideLayouts/slideLayout6.xmlPK-!/F_!Vppt/slideLayouts/slideLayout5.xmlPK-!(}d!ppt/slideLayouts/slideLayout4.xmlPK-!/m0!ppt/slideLayouts/slideLayout3.xmlPK-!`r) !ppt/slideLayouts/slideLayout2.xmlPK-!'q0!ppt/slideLayouts/slideLayout1.xmlPK-!xm:KdocProps/app.xmlPKCC^pandoc-3.1.3/test/pptx/footer/basic/reference.pptx0000644000000000000000000013764707346545000020401 0ustar0000000000000000PK!`[Content_Types].xml (̘QO0ߑ"Nk tC`ʒM`+c ީq[Rw+ybPK!ht _rels/.rels (J1!}7*"loDc2HҾaa-?$Yon ^AX+xn 278O a\^hD.Cy1BYz |t!9rL߰'~20(H[s=D[:b4(uHL'ebK9U!ZW{h^MhwuV};G缦oYDS7t}N!3yCaFr3PK!c\#7 ppt/slides/_rels/slide1.xml.relsϽj0=wW;,e)C>!mQ[:o1tx_?],(AC+lt>~n_'\08c 1\ۡҌ0JhA1Q!K-_I}4QgӐ{ׂm^0xKѮ O;-G*|ZY#@N5PK!  ppt/slides/slide1.xmlV(RbGTbUێ6`l<_I/`;vҬF{޾;bnc+׶xEoϷ5J;|]RݸfrX;ΘWeU?N͕hT).qZVwl/cߗew-DIXøxm|Tn!]+d)t;sa;3q#P*-3Og7'ևRUجV?Gi0?է'UjgyF5e-xB;zGßVLu;T<U.6/MϜ/ySdf[ylLb a38_<9 _cݝ4Kwwll~$no .,ߞYa w(bQ  V4|][C7gI+ yt>:ؗ*/z&DZ耿~@ R$ @dȅqD$s:TKkPLE;7[H_֔KCw"J[ ZyxU#}'ġOh[MCTLκlkrP؃:MSJ-~UB>P80T<{9J94e (.(s!i+H węEsCVhUڝ9c^1$M]p㮽7x.ISʋA! bG)2H3/PS9{:殻dhm P \%4Ji$Y.i{xk(E4co4I]w୪gA19ϳ9ICkXx%ȜW9W{/ӣfݕoWTF;}apڬq0}٦~B f@^cE2V٬|uDz+)^n@[z{ewf%iZGoJ+m3%͊8s4Aॉg (00Q- vw6/Z^$(8@86YB*G 4PRjJ0CR5g8^s K5[sV%;iec‚Z *I UTTL&K̀t;@y]. kW67kI[q->Q6`[@\Uˣѻ>" p&|؀񪁤%v qU;* X8@LYxG TT03(FT\y7kTPs}eʻ(ڹjq5gjl _],)Lں5z?r%1|q?m/x}$%,yM%BSL QX_QAu?P=MĎ=GW =x )Pm94EFi8GU تg0TM%Pp>p7Ahi8Gm'n#dwLfH~~$t "8 veb,[{ O6Y4оDl5w0>[obk@=N1ր;aA'5Ŏp5Nvry-vR>)[qLNb .lyDOq\ilD7O6s68I#F$q="t LI<1Id6gx9 E?{kG1lUKK1wieb>1ձ)RS@cn~[Q˕$?U2RߨP7zq#"hui ,I#7^p2p7d:xhR{ހus`Pcu/翟a~8MVl`Ӥ8}; :I_r}rz)2κNwa3vun#7pҘŘrFΒ(ͩ(_%iLupISQJr %\XPy_;^[^3>yd y4 $k_PMHƮ I/巟d5 9LL3M uЀ3 H@$1v|,QrJ3;dsU]Y$27-]r4# b2ZF(*UtN!GmŪW +81 z+iEZ* TiW|u0Xzqqr D/)al6aͤ@4ęFXi"(Fme(c,-0gR?P؈J?x\XS©L,^M 0tUH.)Sڐnۋy/q؆ <4ވ=d'i*kQVXmNnL"փma-pփ~Ʊ;ÓAݯ%UĜ[0xs=fнډ6i߯ff=M&ѲJOJ]B)A*U ;YL,ݒyy1;gՁ7@+GA6臡~C5ꇣn62D+?<>xoQetDhzn52S^kQX{PK!/m0!ppt/slideLayouts/slideLayout3.xmlXn6?`@h?Ւ,)8mPoZ,e$:%q$ΆEQ߹պdńf/<&kYnhS6l0:݉iF#O)NE۱[~ϋ5ǮYEI-k(" e{Z'\o[ɲbSs g301c^N TvczԬ~ݬZ* v36+ n-_Cz.D ;;slHf&lV= R1;qJqFWj4-7m$ڕ6fEsl9dzQ~\R? =Gw6݉Z^=+xIPVpmUhΖ-*e K5S7x}'/8.Yo`\-c>dwZh!h>8'6&V\rVR2] (2ҵr .Aw(f_֯%6ln!wAw.B eYi‹ H*^bQΰ_WUv7`}F-P"2D|)Q4Հy%d$ HW#*ztuۉ5wBm9>4]Idm]8w{jl _\,)Lں5zV>ָf6b>WL! yBj QX_SAu?P~MĎf˹<Kܰ(YoHd:MQ{aGوR%[1fïԏ^ /M 733m[]ñ)17. }zD$*)͹W9#oVxu9}08 M`z#7ݗ=ke8ӈp5ޮ05NuU!ߊhӿPK!(}d!ppt/slideLayouts/slideLayout4.xmlWn8}/@hU,E6b/i`$*RKZv]o/鐒uwaRyf<*)Z! ҵa O v׷nS;TrF֚HUOB!`VTs%w%V(T{.n䔸`V^gY1O%ab˼dVV "ƬuI+Vw2FZJ3lq sFBaξCVf$,E, =ш8+w%<¶X20>wMPzM70b,/FC;vF0v8 GI0'C{J!TUDx=K5M1w]8V3Za{(;kE|痏O0ǙF7ZKP_PK!/F_!ppt/slideLayouts/slideLayout5.xmlYn6w kW6%:JIN}q$#Iڮ E<*ZR!s^[c!Z&<˻sd[H*R[TZ/.~yu&YzMB!Q3rneJUg-D>-9QV٩ 4vlqB yi5E|>:ɢAeDieWEUJ URV}෫w bغ'Szbċ\VPjFWQM,oSlA n% w퐜0W :4i6stPRO&${gm]YmPcU渭9bU{J1W6k7Pͺ! 6D 80n8XAz&ՙZ>W1Q!'11Ci-U]XG# &RQ2TU PhA~Ci.T l1a$g} {,-8a0b ckB68)]oA>!R&yeVCxɰކ "eSw+sÈo4I'9c0RTq YR $LUkn#@E\NZ&aoY = :, .Y^"‘LɄ0 q0ah΅9~A6CAꃊQ ToPam`a6j`lƠé 73|:j`l{kxk0S`5lD`Njdzx2 *S -@#^*mV |z 27έV 7p'*~[5 ߙ])R4e]R|6EPYoDb> Z`+>M+fB4QQ7?ڗyA'eS';ݚ}{Uʦ$.k!}2z؈CtZ<_ꗻ˅\պ4s?Aw~ T}LDPʆǪ,ԴUrvRʏB>Fm0[>EMU]:'u= 籝[O/z9|0 |<^EQ3z+Sm jOPJ[\ mq-{L87֥&z jJk7M=cG]eDOe[NYRfQv ,{=w $y x8c'\'0X4Z}l90_||_Q_xMKyeSU^5.,1V.PK!5ׅR!ppt/slideLayouts/slideLayout6.xmlVn0?i`e\BՐ0Mi:g&!@NBs|nwΉ9;_-TgC'8DX= ۉsҘrFΊ(|ݙ(_k>Sj-XpA\Xë|rzwWY2l^'P!UVBk I/S+hu)at * f4G 5ZȪ%n%!f׋DUn o}Vla7ޞCŃe!kh9td+,5afݬLh{mo'A$7lP*qɳG<~o`6(w_5vMfM^<_ Z!PgzE}aӐ/Ŧ sf z4U4G$4Jl|h|bі녰|% ; qoO[ Rr AhaL`Z848nۋA8;vrګ6 GGÜ,- pnZc4(MeSs,!B[_B%A:;UNߣ7:pM :t0]7]$'~wrL.~g3 gݡ TׇG|4qf͠J_2Jj= |ðȰAF}MϜ$0|Nj~2m29twHE~}x~}ԝo5<.LFLr=pviM~6-;yPK!3!ppt/slideLayouts/slideLayout8.xmlkn6ǿWMlPgHt.(I{- II8l M?ɡ:dńذYaE\&Yqwl|"HE`ƆI?$O.\*6poB[+םqkM Q= iùgF+2,IQx :E3+ O)- frjWnJwm,:ڽqBv+Fd³3Q%aI% [SCV$TP#I&TO #m#ĠVmn51KKhw%dԾv8 =:C@(tb;v\8pu;Ւܟs,sEB8[1>J=MI31>KǡDo1[_מu <2RF#PVձ{pc][l-;HN֏HMҗ;ůMfؖR RR[&7pAVT/tv_I`x9EnG3#:7:س=^5G=:ВȘrƹmVM)ôm[Hs;jo|yvC\RÀ]&J{ȉÀ@iAt!@4 =XJ: ІJ( P_޸m=RvփD=vG:o0_stlhy,ix<7YCUe9נ{\ g Nдʱ߲P0,sIKyje4D?݀6s%\-{ ~Dz%O4zo̢q03N#}#kj !B{O"߿oЕ%>09v쪲IygǛPK!!ppt/slideLayouts/slideLayout9.xmln6;oW]4`$:J]FҮa@_k{>x(ʖR'q\@s9߾ )yU[c!Z&Uǻ(L Jznm]LlDQ3rneRg-DjZ/TrY fKˬǬ<*Y SF_dy-ZZ} T(^WInkem'w i1VغP' j6OS9HZFwR_yo^z(Oem0bcvH6K^Sym--an$Jd?d&vj5."WWUIRy;fx֙qkԃ2={(~}=V:Zܐ3TV߫IVDoLȅ2kB)]şj=}'u\-bN-Gbi.5r}Pj2%]Js.;᭵#nsfK:Vi<. &qA?B ~ya#LOf*ҧ*/SUe`UJE=ʤQ<7bxޞ7ƾ4$w<a/u$bA1q( v(u#w(@;>(= P pAtbPrjʓEMAuu"8" є[YaKSt{Uq|tb "s:}* \G$]@#0%Ie{$鱸J*33E5a2nhwA=@+*jvP>M c )x%IC*$"!ꋡQnu pArC8@{h}J`wH^*/5NAfD/ t8vw}fڕK Vh꾟f؟&8M p2/2UGҷSFI W{:l3*z74"YJj6?Lz,`d`l0>\JoDi8%90l^K/̄㯊Sӱqƌz>?e~1g12'LVN(Jfhh)0zvW%Ŷqg4A j`Yqhr p --NW^)אՔ,h 3A-{M_CDMqDR~O+\'*3]FPK!!x "ppt/slideLayouts/slideLayout11.xmlm6/#v^"RIڵSȵ$$[0,Zywf8_T%Y3! m:+07cHEyF˚ex3H-+E刎\fdY2YE嫺a-kQQ?ţ rm;*ZpeY*U  /=9&5(v MeF8CJF $6 d _,Es/^"CNoX݃Lk=!m+Dl$jcEfNئ kL=rp8;Uzes[$5AEMNԶBTg>ԃbNF"(D/ 78cNڝX/|%f6:ۢGTӼLhT -K[SƖ\~):fchPH?UR1Atx`7Jc5 +HV5p'%y_ҔuZ71i4` 3 KێVN/ZVogPp;kP VQ衻GAet=/q|:wPxxq0v2 R:`n@th|/"{ O)0 0)H9ݦ߷-܇kɃuIC 44$ҟې29mYA?t(*~мsS3_<@**/"G[QK8e'6:I5&}} ?75Kh:7/U IrFZtG}`e1r>We /d@h3םIh40̄W Q9՝A1#_/hK~q\ xKwkJ7k}8]&1MPK!G "ppt/slideLayouts/slideLayout12.xmlZn6?`@h]Kn6[7#іP2v ۃl'9-n$nc."?E'7d ,-m1Qec^dZ",ıu+j?=j\r`?R~SQY֦ʹW5'_v.mgW/,2D 5_YUh.h5uhE-@b:aLXsu^j3p+Q%3UMKE_..j~АkAc򣛩 *`7XqNhx5-~P08n+ΛLKT-uuQjV o[RYLV34X1U㒌w\])Á톾kuCwh{"Hߜ-'ʋ8-5c DJAt1} cVKw6V)$96QNd$%I ^k# &XBErG`,ɔX"Y[I/Xy)y,R&`G%[˩g= n.vy|?\Lo|aďӹ.63r.eE= Xxsh讠<d4x! O^!HA;]@Di`F VHv@Di` v 4 v7 4`4 l_rxY;ǩh=!j ÔcC\)7 yBw:C:* UcD7TQYPO+*F*:u3UBB#RAh3/읎qq䝟iL:vSH ^, Oo%soYa5 539WpBkv%iV3ѩ`S;a؉^ R{zkV %Uc=Ng~;{==F n}_>~y[=7Bl[3g7YK!nU=ejL9Dl0%rq C}byQ7؇^V\h9*)lvkgbڌ.cMMg|jp) YkXvBH0q^Yb0xIɂ?&A25S6 "ȨTr(3MiDӃ4U,TĦ7<+747jÕ<4,fKCn0UK"57WWgb 5iƦ{k, Lz75JֹfVh>Cz~T*I+?pkv'(s}2:x (` kb1Orfs;^1#_/?k[ُq\!|ʷ\7+=T&dPK!FI 7%"ppt/slideLayouts/slideLayout14.xmlZn6?`@h]=hR$v<H`IX(uI{q}q$#$_;ZADSwΑorLȬ,-ʱ+2͊CYH*Z;fLZo~uu yzFgD!Qzhl[&cSXJS?[;s8N`4+ff9e $gATi8dVmV &5 ^U [G䊧pQ䓼yY] ̨*R@Yj7,,܍Dnptwẖ;z2Y&wk&5V$XU+:S!<7UXVgeAk+j͵#542Pͺ& ڬuEF:``N,0b~޷I}.Օq*Z:,TX)tNbei#Wt@aEzIJ3Sz 14a㒧ZE{,-8xa ID d8ؿ$(a@Pz!Z$Rsȍe&xQxʱC9gp."t`<М ld"%?j=S7[Aa9TU4qe@BR35V.oG6ʓL9N@=m=L{Frrr`6 , .yV 8M8 .$qy60l gJy@55$68zjTom +Wa V/F$ k`KHdr `C:b` V-` ![kx 6DXU ʕ3T/RR r7hL-QX #QqFujȿV&U9|ffen,^V:kZ뀪V'o([}BVd(cN IOб?f~Xd*(A8eDH(΋-?-紐00m|cC3$Dq VqVI [Nj<Z_s ap13}Y7͂'*n5[@AlzAtg^`4nSy FѸU\WY@i&R5#J5%PPոChl dGӱ lba;j0m;]KL<[5}.r 1M\Oh:x7+Wc c^BP3$ZWBp c.y`~ kFe,.rɕTONaXlș}!#auʙ:I"ieLLJdX1Y%_ƈPj$?00 wiy=hI8vqU[6cњ0(~YX\ e p +@9b{>\8E ,0nv&:ЬrXoi.Q9%3@U7,1*Tkj\u,l* ނ6<VaUcρ=VaUkGglª` <>e{`Vo:Va-F2=uzQ| UhTsbMq$ "8qPW.3˲o[ʌa+Fodx!^,Aqlody>W -&Ò^XU BU(,M, ?9[7DFa߆ZV;–.x&~E4\E|9ofv)C =IYo^ }O_^x +;gysۏ`Y<TQ9 Cdp'nT"55][_7<8#.K쒸6;^뀵ZxV j_ǻ8Jl}a6{9z9z?P]Ǖ9jzYfC2Ve^e^e1dR8]Dzd]fe^eoLG0N9\O >s`C:Gs:Gs:u^f:Ǧ:Gs:Gs|::.=ٍR9:݆oR{9z[9&D|B+CPꑿZC:x .s93\r0]jQU'|oEKio"ƌI0ܡMfh4iw^=OSsQ\ '"Wʍ7cqHѫU2Nzoyzp&O=Xs{`&$~cOtg:LGo7PҺ}iXeǿ~N|Tq)Dye%_! 8]V! Q`/PK!m#3G/ "ppt/slideLayouts/slideLayout16.xmlVn0?i`e PRIAMƪc{aiR_k{>ɎtR;w,chJA!#S~!m019Ic,>s110n▗#AdXI8KʰOu 0[WIB#$# 0lNM*^dax!g0Rz4b1815 }cadfcEG%GrP![,~,'N1,QmA4ky}v H(VQz6JOXSUNq8"\2g"Ո džcL)0jatXf: &fd挸i_ 'ܿvHL :Xb1NBx< C1U恄1.~WPqАሤ@eN Km@!ؒ},RMٲ잟 +˅^KF.^F$tiqJ2ΈiJRtVNVr ÆYRpu/{FGۯG?vzaRJi[-Wjgqv'F*>|Lt 8ʥUZ[&Z$f ]`S*鵩Isux(=[IF𘔠ą*V;b4&b]o[݇p j /Fͯݪ_~6mmϚ6#w>k&YGZα:3wܐB(.?PK!! Eu~ "ppt/slideLayouts/slideLayout17.xmlV8ҾNW*BZiڎ 7q&Qk Z}>ICJ)pb_{o/7Ek"U ",YnG܍4f%y9bhv|`05#Z =Oza0sYa $ B{.//LIUEA$XUB5h4!; RS2ar /08c ] 1\A-SLGZaJ,%!扭_I7~ v0kMmpʴڌ0qk=$PZw޴x{"6-f'f΢&܏M:-Q}z q%yI!!1C>N޴y ,ڢݬ:>8(+NaXFvhЋ Dm%jh1ԛg[3#a4r6װTRb_$Sl 0)-OHsDRXi"*P mX²,J8(,醬Ώ&yn(NIiӨֲ&Nqu0t;O0龜ﲡjMVG.W_eAR_"Jք^h =,Jy9`׀s{b|Z6`MJ ɠ$?pa7QsiuUۛ'6Cdo<lu' v;p؟^ ٘A9 [V5Rپ8xap~Jcz1sMݵZkY{ KXsnT~ ()o]2#ͪؒ~|*/1[Op]ݮ$I(O|'Uo_d΀)6|o_>ηM}4:. "Tj^كej\wB FsPK!ђ7-ppt/slideLayouts/_rels/slideLayout11.xml.relsϽ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ5?lX2ꭁMپ۽BB<;=$_.Q_u0(&4 *ĩkŨwՂ42P8l4'[0J {]Ë)XZ>۴M.Pj ,̨+QbPCkJ5zwP6RmF ZQ6R4TVjmEBI-%eKQ-_3juGƱT TɶݑJ?^~PK!*G?!ppt/slideMasters/slideMaster1.xml[n/wlsmp^e%d,}qI:3lٱ{Hr5Ù>hݏw+arYeE>5,yTY\iT1EΧ=O~wGV). #&ljJᰊRbEsxr00J  +/ҿH,E^\ՃH.4+f)W0 1EŲ{%OޱBd,ˆljdtc!'|Ԕb{Lr^ O kT2GjHm%Rl&0[tGxeEj@Zr'YK| t{%,FSfsh5o1llr^!$Z2ZmQQ`ؚWUp9NL n\ 1䧽Yac{U^Me ]Q/uQej{a^[z%tC*ZǶ|Pn٤+MsJ&vCU!jKʉ;+{JG?-gjjmσx|n?Y?cVN^? E,syl~F\:>uɧHq|Y*}F̒~?tz :/ezr3VP|f"(H@<ۭ>-A%ojIA<;H,*bfjPX.ne9!:~.`u LSwu(>q-KFU{Ѓ.DNQ12$0a`fvr{u'bTVMD5uDv+ :ggu>x]\ ‘ B߶p4Y4pdU{w({0sg 1掽KG0~C0M1ĈJ1 @50{xR3m{Z-LSLfXҬ2WH"$h8b.oeJ0! "z^MQxEIO$pY8uSLBXV0;ZcST`vhv^4|?|_*K}pĠ #!?ҀCucw Z2eʠŢ 4t8d6xk$~#IHS /&0S-hZ5]b>Ĕ ;F^`7A >轣#4`SnN]N]Sk-#AKNzZAۿ6嶃G"- ]vHGmǢXvҘ~41XjR@6 :/05[?i?2?7tGYZj64˨NH}m3nt'dkE";nď^7Q#~/ l͋v ]1hL\u :ރvwӽ*A;oÞ YV;'J]\җ-W_ƪPK!ђ7,ppt/slideLayouts/_rels/slideLayout8.xml.relsϽ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQaLɟjYF<ڼ\emKYUG =%n(8Ѧ'XY̠ JZ+=`fPK!~!ppt/notesMasters/notesMaster1.xmlXn8}_`A>.\B]l)l'nmP@K-"&- v?_C- -k43<q[RgED]psg`fJ]rFzg2.Iג{\ʪnٜ~+`lE%Y;x/i;]₹f8d>NlY&'P,j:[%H n- 1s2k~ߑS䷀`3R0Ϟ人(^j\] ›յu.a@3VZhMYwoTOǁ=ީ߶ґ[d2hlm@{kQufs"8\S9Jic٢v),-Գ;\3??X͔N MPI3'GQq|Ix( IecjM>իNYN (A9]^v|`i_P"G&;#9]r,( dT 1XnNe,yCAa5XMXZffOgO8#Bˈs,c!fB(ß|\$w8jEkhp:# ?beQQ1[ v#HԥRv૽HJ%"'eg MOqi6EuT85/˙ᯎoF@QGJcdIziI,6FE(DYނ/@ .P:p&VX&j &jk1[:SN_5 +5)@!kPO k@,_b߈ͮǝo{^s _}îժSHq=4 lD@VwCO'| (pᄏ6a',*h 4HBo 4V}@PPS^bJ7)tNIzP%$F'U/צt7PK ! 2 docProps/thumbnail.jpegJFIF``ExifMM*>F(iN``8Photoshop 3.08BIM8BIM%ُ B~" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzC  C  ?yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yys>ee^}}ꏙG@zee^}}ꏙG@zee^}}ꏙG@zee^}}ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zgg^==ꏙG@zgg^==ꏙG@zgg^==ꏙG@zgg^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@ aee^h}ޛڕ1h5G8x֠ 65ZKyqCP0QP0QP0QP0QP0un-c+ִUs"Ȫ"4 z pcGZ+aK>cR`1YW珕B=% aee_ aee_ aee_ aee_ aee_ 'T|ʕH6fsyZ aeePK !ocB ppt/media/image1.pngPNG  IHDRLDgAMA abKGD1 IDATxAC2 `vG~?y>O3Ϸ 0000f0S VPPPPpVs 0|     YYA@       q@ VPPPP0 0k 0|     q@@@GXPPP0 `  8     0 07`(`(`CP   VPPp ހ `@     )`x +h(`(`(`8 >CP0 #,(`(`(`(`*`8g +h(`(`(`(`(`(`8+hXA@@@@@@@@@@@ ` +h(`(`(`(`(`(`8+hXA@@@@@@@@@47`(`(`(`(`s > 8  #,(`(`(`CP    VUpN@000 `XA@@@@@!(`x +h(`(`8 o0 `    Y 0@@@4000 a@@@@@@@@@@@!(`0000f040000004      `@` )`      040000 `XA@!(`x +h8 oPP0 `  Y 0@@@@@@@407`(`CP  VPPUpN@0 `XA@@@@@@@@@!(`x +h(`(`(`(`8+hXA@@@@@@@@@@@`V9 >CP0 #,(`(`(`(`(`p VPPPPP?`XA@      0f      `@!(`    0 07`(`(`(`(`CP   VPPp ހ   `@   )`x +h(`(`(`8 oP0 `    8  `@GXPPPPUpN@0 `XA@@@@@@@@@!XA@       q@ VPPPPP?`XA@       q@ VPPPP0 ` 8      0f    `@  q@@@0000 `XA@@@!(`x +h(`(`*`8   ?$++%tEXtdate:create2021-05-29T17:44:55+00:00o%tEXtdate:modify2021-05-29T17:44:55+00:008IENDB`PK!:~"Tppt/theme/theme1.xmlYAo6tw-Vlu Y4iiP@IvNeC.KwaN52 EI6i(@"=~|=J}" oۂYL&('F϶`̾'.O` -!]зfb[$7%4\t9\Mq8;̶2 CޫFXe1DžNŅ-Xup'^p€qqo;g7n7BoUFWUӖRy#]7q~g؍:K}X,th0 ltw#ixE{QT6;7j|$lzQg /Aesg\7`na*2%x TPKcBG-("S XHbAF;-gxN[\[N/&(bP6 )y\h/rW>f*|޼3ؿ}q_wf8WW/__x@X kPa0J{}SYנdzZ2at oްY[3T9]|"b-Fw@;I8r14\(9%a7C 0\U:|?OGyrHl )>q2*husϞ=ߟ?z˹vP^??|ۏkNjYǝ?NЌgOLhtܑ\]2ˌ G"JaQHJbhq֚j(vӳ;O&x$ F.{}MSY a¤LrC PK!`/J-ppt/viewProps.xmlRN0#4i DM+ M%׳)ړYl5%rHJx 0J@ɷ|6b30XBpE\A#p`-oD27 7u6qmxRKxr݀ IC-ǕvWsQsd"Ҕ™X+wO K+hD$pWribZc(yγSº|c+;a G9Uop clȢ5Y:vDزrGtDq(JPm7Z7 }`516. 'NRr=v|^+]NHzLn7>PK!ppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥB:e{4hR7^ݗ/;ӛR=8/D$"3#MM:\ >a?Е3\ Jh?8}V@%5VrJ0t`f%_%(Z`(_Eɪ]zh U<Ku2~>Ѽ>|4ϔ;s ѵ^en>Ѕ铘.S%m]h!]g\c9WPKj6V\:dxY0xc-P>ICКƃqa:}JlRxڵ}$AOA#SO?g 7iUM['׌u9[yv7޴\SSZ)' c$>7ZWS8иeoR?MͬZㄞ& w @ӂP]s72_mZb/PK-!`[Content_Types].xmlPK-!ht _rels/.relsPK-!c\#7 Rppt/slides/_rels/slide1.xml.relsPK-!  Pppt/slides/slide1.xmlPK-!?-g3 ppt/_rels/presentation.xml.relsPK-!Rx= ppt/presentation.xmlPK-!ђ7-bppt/slideLayouts/_rels/slideLayout16.xml.relsPK-!ђ7-ippt/slideLayouts/_rels/slideLayout17.xml.relsPK-!'q0!pppt/slideLayouts/slideLayout1.xmlPK-!`r) !ppt/slideLayouts/slideLayout2.xmlPK-!/m0!Gppt/slideLayouts/slideLayout3.xmlPK-!(}d!!ppt/slideLayouts/slideLayout4.xmlPK-!/F_!r%ppt/slideLayouts/slideLayout5.xmlPK-!5ׅR!+ppt/slideLayouts/slideLayout6.xmlPK-!)Ŧ!.ppt/slideLayouts/slideLayout7.xmlPK-!3!1ppt/slideLayouts/slideLayout8.xmlPK-!!6ppt/slideLayouts/slideLayout9.xmlPK-!B".;ppt/slideLayouts/slideLayout10.xmlPK-!!x "@@ppt/slideLayouts/slideLayout11.xmlPK-!G "eDppt/slideLayouts/slideLayout12.xmlPK-!/IZ "Jppt/slideLayouts/slideLayout13.xmlPK-!FI 7%"Nppt/slideLayouts/slideLayout14.xmlPK-!IHK;"Tppt/slideLayouts/slideLayout15.xmlPK-!m#3G/ "p[ppt/slideLayouts/slideLayout16.xmlPK-!! Eu~ "^ppt/slideLayouts/slideLayout17.xmlPK-!ђ7-bppt/slideLayouts/_rels/slideLayout11.xml.relsPK-!ђ7-cppt/slideLayouts/_rels/slideLayout12.xml.relsPK-!ђ7-dppt/slideLayouts/_rels/slideLayout10.xml.relsPK-!ђ7-eppt/slideLayouts/_rels/slideLayout15.xml.relsPK-!ђ7-fppt/slideLayouts/_rels/slideLayout13.xml.relsPK-!ђ7-gppt/slideLayouts/_rels/slideLayout14.xml.relsPK-!ђ7,hppt/slideLayouts/_rels/slideLayout9.xml.relsPK-!E ,ippt/slideMasters/_rels/slideMaster1.xml.relsPK-!*G?!tkppt/slideMasters/slideMaster1.xmlPK-!ђ7,sppt/slideLayouts/_rels/slideLayout8.xml.relsPK-!ђ7,tppt/slideLayouts/_rels/slideLayout1.xml.relsPK-!ђ7,uppt/slideLayouts/_rels/slideLayout2.xml.relsPK-!ђ7,vppt/slideLayouts/_rels/slideLayout3.xml.relsPK-!ђ7,wppt/slideLayouts/_rels/slideLayout4.xml.relsPK-!ђ7,xppt/slideLayouts/_rels/slideLayout5.xml.relsPK-!ђ7,yppt/slideLayouts/_rels/slideLayout6.xml.relsPK-!ђ7,zppt/slideLayouts/_rels/slideLayout7.xml.relsPK-!X$,{ppt/notesMasters/_rels/notesMaster1.xml.relsPK-!~!|ppt/notesMasters/notesMaster1.xmlPK- ! 2 docProps/thumbnail.jpegPK- !ocB ppt/media/image1.pngPK-!:~"Tppt/theme/theme1.xmlPK-!{C] ppt/theme/theme2.xmlPK-! 0ppt/presProps.xmlPK-!`/J-mppt/viewProps.xmlPK-!ppt/tableStyles.xmlPK-!xMBnSky+,+_TVd^feJu:6 'Kզ(Flk5~ҒVNhf67=c󷼙4cncLxJgV;7E+=*y`1yB,$HtsZ|+7 kqꦔ-5-:$(\Xzl JJny+ :n v3 j (DA'V~<.*rqQgK}FkS!'r䚷<SñLJ 뚑R۽}tBˌ M' t~ʱse2JcL1e01 1aP/IAQ2Uv?6zObI5aٞAu<>X[Ğ- 4wӟPKDS;sppt/slides/slide2.xml͖n0_Ҫ]6РNͱ=0T=Ndg;ڵRi}?mNV5GKM%8i b"7j>i #52"0fDIialHRBW`WpQsI>I%f~zYU2/j&lp'4eL^Mif_ %,qf̵V35~r9ը'Al$73]ehGnbV] j/d+0 ǧ){N\wUj^YP{+.&mԅ?$$ȍIjU"V:gɆŻ͆]Ivqdč5{0Ǘ JPXRC}(_{<z;}1=0r{+ДSQ+ڱgKdK٫!v#ČX~B ‹4/ NܝDya8p{ S'XG+mxH{DJ wv~Y " @ڲ2~+WpI.#̽`<b_hF0i>= ǶϡӜ3w?TF큆1~PKDSr" ppt/slides/slide4.xmlWn6}BRߖ:cE" hJFю@_k{>HJlɲ?"E^{9zSW`Mx[2:w.0c}3n+ )mhbB4c۬ 5j߱P93^#!_#=Iu=lj`Jjsֳ^Pg2đ;taf M[W{nҀC^Kv޳S 7voò|bdrPszdbhՋP5@'n<qY%5`ea? 1!pT#25&E)R~_Z ?+ Hߊ!6ܭ읥Yee: ڷ(yC۹ `v;N4󩓄wHTbt̳R?~ϝLy_,]#/PKDSܔ2 ppt/slides/slide5.xml͖n0_)0@UiRա>;$c{aR_k{>N kNr|wߏsG'ˊӦb1IZ(N 3$V 16Y*bbr+bagj\T'q)E//X*yńhƉ4MQ*xSpw?H)˦zJ3zb^h|hTR!A*6"ƮEÏM&_@.᜞NǛc]9AM9C}x PKDSܳx&ppt/slides/slide6.xmlXn6~BRwKF±@uHEB(qVku'/me@äs./_K VE],cR5.vf֫ͰѪs !lӜ}Q7{YJ%{s<{:ˊLtYk%Pąm^4jԟأ+8,{&EEȩҰ+YF/J 䘖VNg H7$)& x=5Jks#ټcɋtq+ GI]q[p:PIM 퇧u݁J~^踉:bw:U!ؙNG`Ɋoh-D-h7]}¿@VsW #*o ۃ/ r:IfSw?=kV` }Nli@n+:cپunOV;i{ݣu{+'bp(n}'"ܣ?M{|WߴG/ۣnoۍǁY 6:Cchf#mF)\YI$lQA p~hx?7cC鬮-G\PKDSY,^ppt/slides/slide7.xmln0o~NR@ U4ih/Mͱ=04]NdQR(:>}GhŴ,ƈ\X4^ fHGV 1yjΤbJjah8IGZ ݯ__eLˆ &ьS 2MU+dSHw%9խfVs5~f5Ө.F6l1"ەm\;GdX.Kݸ7l~0WEx\_WipQЌӜULd37̿$$DZkUA]w8%KFA(MPսCnn8kGʽ6 ϖ'H2t L3gWڶw恧`>< Ji!4P%P!p-~k[,jCww9 n w!<-WgG/KiЋ:U7L,$7dI<+sz;LJ_~tW+NnS?PKDSP*% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LCM+ Wiv8C6E.4Ha9\KrB+]>Z5 BFv[왤Wbj G#b,F]~+́ҭ3մTamv{/PKDS% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PKDSҋ6% ppt/slides/_rels/slide3.xml.rels 0_%ݤ*H^D(x!٦$؂;; S;7d㰧t+4g۝mN"GMHD\0.%9|匚!_B#;TՉ5L)S{ #l,MF],~+́ҵ1išm6_PKDS6У% ppt/slides/_rels/slide4.xml.rels 0_%ݤz"M{IdTۛc <7L}LÑV@IPC6E.4Ha9\KrB+]>Z5 BFv3[왤Wb@5?l?FŢ?*X»X VD[}giچ_PKDSzwft% ppt/slides/_rels/slide5.xml.rels 0_%ݤH^D(x!٦$؂;; S;7d㰧t+4g۝mN"GMHD\0.%9|匚!_B#;TՉ5L)S{ #l,MF],~+́ҵ1išm6_PKDStѩ% ppt/slides/_rels/slide6.xml.rels 0_%ݤ H^D(x!٦$؂;; S;7d㰧t+4g۝mN"GMHD\0.%9|匚!_B#;TՉ5L)S{ #l,MF],~+́ҵ1išm6_PKDSplI ppt/slides/_rels/slide7.xml.rels0Dٻ-pPc\ 'h6m1֋Bǝygߑ:ji*B~_!:|'D{mvǘ-ScQMm\/B]ìw ˒d4晤8J_M]+G#uX`Shck0ptL+ehw+O-釋pxPKDSǠBppt/notesSlides/notesSlide1.xmlTmo0+S(PAJC8/c{`{qt*E~=ws'iK1#&""CO*20!ZbH jaSk@ N:A'52Ie+D3N-j\M]43SE+qK[dTljkrJYe6<~,R|TϹyFT>&m-K{Ns WCԬBAKBص=pwK^5Z"n)[]CkǛ,7>Wd\kCK#(%_"A =q8Bє|orWlAsݻ;; !qEWЛ/֬7phMA5|ڽXPaQ&Z/kfp;q"^QM/|rzHPKDS|*ppt/notesSlides/_rels/notesSlide1.xml.rels 0_%ݤ"tQ (bwfanvH; %/Ӿ1p>f+7rzGZ=ZEti}*1v"(}QyQ,DfoN}[]8!h0 f& LL)YtP0|P&F<PKDSɚH?!ppt/slideMasters/slideMaster1.xml[n~AI/:ds.7-QR)ڗlQ`o>>IhɎ*i b əRλoW^f948c˩$4<}WLJĥ ܀X9S3XVd0|\s(ZQ˱Zጙ! ,`r]J!J$"rG誔pB2͊Ҕ4eÓ͊YF\-<sZZxj1~^;=%~!p!8Q* oX;V3)F.JNғ.kNlϼ.Y,k0yRSUlS= Kēۄ'ոUSՊȭ07juG_.yKbfxU^u&(1(HB5 (<) IoE*3"5ĝtͭej7s)!Z̄l] +C6 TpፎFFM'%nN'|0 n?r`x.d\>5L}VaȓLOSsqQkW0PDdN~׶i"7H jQ0JGjj s h3.0k(݆W;,U2UtISBb.:~^:]۳v}ظ~Un9]BA1EJ]|\7ڂh|h?3( cA8%nά(9F#h`OFw0/Oݥ<5ƹ@f({"Wz7xF+(w{RX=Afmm?s^8!M`)Lq;l&K  %Ip(a˻+|M,dw;]EO.Rz"ԇ>u"ԧRNJyΓtu$}'i;wᑪ~#1t.}ʄ<}KlP[{7‡W-~0u gI^쇰js+p{b}krѨWɄ{Hn JŸ(qq0!NU BS!)nT2Aqʖӎc;Γb/2'PKDSp۴"OdocProps/core.xml]o J} lŋ-^d.[vGB Uhu&>Q-~т lo#ZJ:&[ouࣆ6t5AP$¦pz#b*;!b$d DDn2RI}3ЀW67nÐ!'w1cu]4Ou=56Da% ^)ɢ u O }$=z!VpZMu9ٙy1=l9%9y'VF_67WIO0ķPKDScDXdocProps/custom.xmlKo  N4n;9na `4KG\M6xxF wd׭|I!dT>+| YȾ(SHn d>;r>g?539}kXx_ u5 ߊT [17ۉ'FfLМ%Cj%eVBԒޯƕ PKDSQ _rels/.relsN!_̽˶5Ƙ^Lތ@`vX`LM}{Ԛ#7?);97-(L.z6 T@jKb=jnhɄtD+uYzMֽmuj ^.8|1Ʌ#~5ٖh*ȵ8MM/-7{ZQbgTjw-{eIm$,0uOwj^]̉[D׺[ E|Xưgk"" [ k5k 2oee2Ն%J:%Li$֑IǙagga7@zH"'C &8Q`N)s8R49$MO)s85vg2Q$*]:kځ&uS/}WW.MS09TWPE&u񲫊PQ-UW8$sxYPKDSGKr)ppt/_rels/presentation.xml.relsn W!ܯU[,KXlX{ڒ@#nQj zA/~9@\ =ځLgIJԌ%~>-z|;CwLjdp]@:Nn4B ءj'miZhSXm^-EӰ E57^Atjj0OVÈ\VL")rbI1*fSyH«XDR̽ . g G3w7 zy {')7EN8qEAƮuNa^Qmώ٦cg!R>c#_PKDS8|^f$ppt/viewProps.xml]O0{ f 7\0onY?v0Cwz]W^ɞ['*|+Pu>׻%ڬW& ~x t+5ޛcG.i*m%3K"[H K":ϛ[+OaLɟjYF<ڼ\emKYUG =%n(8Ѧ'XY̠ JZ+=`fPK!!ppt/notesMasters/notesMaster1.xmlXێ6}/Bb#`m6"|-Ѷ`T)M ~NCmg k43<q[kyS2ڳgmafdD D=7z^w)y^hE={.Du& 5X)MW>s >%nJjl:-sm>x5 [SF䚠H7ENbўum w5gD(vJlpNg>ygiukވUz6ǹPL@FD]>+̟3Ѷ%mzvǏ"XZ(Nx#AO@1w+yE|XBdAM <}*,קҖVq$$YәS>Έ0bCp >ֱL,JG*P7{{0;Q:0Nҏ_ģQ2Dls1pݢ-9~l{J Ft}qq |v4ؼ /Ǥ,uY.=ïwLhi0M*݆LWE77bQGq%!qe'TZ$Ra5n7GtݲLUhXgB}16,W/Bڋ riX1hCH48~FEw 7,!$d')<4 epQ KWBH&A]`gu29E <4Ǜyw[r1?أW<; #ma|0rB 1}1oq'Iod01|pg\mËp:Ӂ9?0~+FZ~/_>yBV=L'n.GK֒p~hDN꜏a $~9V}tL^Ϥ*s6rV[׬TMUqԉ aov+BUr_ښ|~ųX4RH] u >OS?9dP[eA'$*dPd쓜Rh-(<5*lD甤רh:[%qzJkTr[ymIgPK!ocB ppt/media/image1.pngPNG  IHDRLDgAMA abKGD1 IDATxAC2 `vG~?y>O3Ϸ 0000f0S VPPPPpVs 0|     YYA@       q@ VPPPP0 0k 0|     q@@@GXPPP0 `  8     0 07`(`(`CP   VPPp ހ `@     )`x +h(`(`(`8 >CP0 #,(`(`(`(`*`8g +h(`(`(`(`(`(`8+hXA@@@@@@@@@@@ ` +h(`(`(`(`(`(`8+hXA@@@@@@@@@47`(`(`(`(`s > 8  #,(`(`(`CP    VUpN@000 `XA@@@@@!(`x +h(`(`8 o0 `    Y 0@@@4000 a@@@@@@@@@@@!(`0000f040000004      `@` )`      040000 `XA@!(`x +h8 oPP0 `  Y 0@@@@@@@407`(`CP  VPPUpN@0 `XA@@@@@@@@@!(`x +h(`(`(`(`8+hXA@@@@@@@@@@@`V9 >CP0 #,(`(`(`(`(`p VPPPPP?`XA@      0f      `@!(`    0 07`(`(`(`(`CP   VPPp ހ   `@   )`x +h(`(`(`8 oP0 `    8  `@GXPPPPUpN@0 `XA@@@@@@@@@!XA@       q@ VPPPPP?`XA@       q@ VPPPP0 ` 8      0f    `@  q@@@0000 `XA@@@!(`x +h(`(`*`8   ?$++%tEXtdate:create2021-05-29T17:44:55+00:00o%tEXtdate:modify2021-05-29T17:44:55+00:008IENDB`PK!ppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ{}MSY a¤LrC PK!{C] ppt/theme/theme2.xmlY͋7? sw5'c;d7YkPa0J{}SYנdzZ2at oްY[3T9]|"b-Fw@;I8r14\(9%a7C 0\U:|?OGyrHl )>q2*husϞ=ߟ?z˹vP^??|ۏkNjYǝ?NЌgOLhtܑ\]2ˌ G"JaQHJbhq֚j(vӳ;O&x$ F.f*|޼3ؿ}q_wf8WW/__x@X AZ"tG7C"۳ݮ4'ٵPRT@bǹ>>\)*{xs5B)Y)g̉r{?FTwTkq]$j ]e5<7` <8cbf>O,"}Mrt" 4D۠ I٫\@ g#gr o|D##sY)Cc26L$#1vt(Q.^,#ڎ[~Svqgܴu0qn(*h^5nhQUAi:ANE!gV(|fM嗩L!tJPbS|'a[#]L늼vU^8Z: 'p2Ij`[wܬ5Zz~{Qp䵛˳23`Ο#w>]jmqd˩<;$|b0swPK!II  "ppt/slideLayouts/slideLayout16.xmln0'&P@iR?Рw؞m24=NdN\ eP8sr 4Է^p>:3I/?~ؕ]͒c<S@.1:HûTxTaY؈vcʃjdHS9QaJ&jR 2nrHf.![c&9;UL=C%&&04 M83-'{NjJHէH!XJ%{䅻 W_[ܝ*#PA^śkh b6;9Y=L)jy,+|lezwevYUc*YS2̭ $2mfΈ{P/ö Kh|@$`mB?|bũ_WPBP}xo۞RC1K k$/l!B  vvO/jQb^x˘>]F 6PtWdTm.*m@k߮ؐNv^ t p_<˝Q;qlyC!p+KIF(Osg&d.w`nj&N G&^Km-C8ÉMg{h ;;Z3:h՚AӉh~:f!uYl+r{͟EyK d9"L`yV88tSΑ_PK!!gT:"ppt/slideLayouts/slideLayout15.xml[n6?`@hSn)hRqS H۠nߴD[Z(M: km'͊]NfkE~< O7HkI3h{ zzTO0ZTtns9^],9#F"̂I3XZƢ\79@IUٕbfk(<˃-1LCw Uje:k^s Yx9ǼSy! }ңrVyzaa,+ZH& 6y%Ύ(, oo0r-;9YN7 R4`QCp#W*>̤"|p 2u٦?vtH4ӷuݩr]EIie@&3MuRfXKb{ # 14^PM^CC6W*>zfB"e!ɳL-͐9dE9<׊_e* >Rƥ9-uЭ&mTحXyyonLe k3 SA(ga8t`aNM팑)N9BZT߰1&Pհr^hمUXp_XU-iz.쾰 mkmUX*SVaU XU ˌ =uxQ|U蔝ggE_㠮2X]fLʾc(3{8BdYBTD2 ߂dy>wa>bxWV*$z2Xgi&QRuG}j|Uw/.FD&e4\Eb1kGz)ͱxwkS|p~XHq׮jë@s~l;s~7A**aHl[ټn5 y%E[_]7<8l#>KYI\me臸ymuz`^끳:xU]ǒ 𾢩R4:l|Kttc9c9?P]Ǖ9̸d231Ccq ]^96;1ߙsw6CrL_hql,Bxaxnj`vj*65ܤQWf5 ?  mejEeS$^W݄AFWN6:mo)Z؞;wm#x[$K}rĄ%oW`D>*䌥'$ DTK"$,SHh ͓k/wPrىN j6(XG;⚑N (]>Bc(AvmC/$~Uȼ}Pz!BqГyq:$jM703PF4O!Ϯ灂 HJGWԸYtIr2cq!d5@e!ij=c Sh  Py]I5۪i6;(d,',(,lR;9ӄ}څDL" u2yayzN"ǭFuZH>Q; Vjv: jXP :M [X{6j6qڠ\i!jP=|ib%>)Z*SM=#kQ5ܯQvxu[xa8ᣋ2ur̆>9~,@ckx=^ĵc@Ukxr/G:#\)_T1,zaEC.ޫSbx곁\@>kwH!SߔoNJn;Ʒqƪ䱍4 T̂h=%\WG9?k #ll Zn+dD+|gȳ۲ &U^>u,x\%9[o"JSТln혲䙘"j 0ѹi-f⌕T=p/dI5\;;#'KsWilQq]C$+,ShB2=ܒ#7kAH%L\\PJHp7Xki6ג 7~h%ߘ}~l9-H6α&q=wqm7(74qǛ>ZÕ<4< 4"=`EÀHia(D'=) 0H;=) R M `ܿiShz4mG ٠(4#Ȭz2}\|߿~J7=~˪4*jYKךJXU_ Qg"# 7 ;i]yպ=7§8*}N;\x2#yb9 '\/4 "簻c?|K,S:Bh^ta?i$L9 PK!ͥs|. "ppt/slideLayouts/slideLayout12.xmlY]nF~/;,gG$ER9O7J,\R9H{89IgfIRD2k;,X^4c.\ g'?NIQƅʸG5Ċv&;mU]8EM3k䯒rR `{]$ZQ3رN@h(c &~ZT'윗JUV |BFٍbi@5թj2zg4lO!?U`6Xkh5%F-ԝfNkS:nTKVUyUD+o[RL^34X 㒎w\(|(n6U6属G Qj`adDy}(5`Dݝ(5`:Q/ea>IZgTHTT )PxmZ4P<3yʁ<ժo0ꐪ꾩oRD;UQ[T;*c;3Nֺ]zk}1]:Ni(GmKౖC%S> vh~kQ'iƤw2l1P`hüTkJ_.^Bgwzqq9/ZK@5G>}O]6귛b26C(4mZ=  ХOOnQ7' Qd Kܚ쪪˽L(v˼?jV;)|Ku39Mi>/+h~?PK! Ӯ' "ppt/slideLayouts/slideLayout11.xmlFwXѿ~c.縪tl`}]vJyq$Y`:v2 |v;<JfR5Z3"uVǩa>-4-kΦ֖)?=Uft[4W:rĶUg`-kYQ $Ui{-SH٬NW㺁HVR Wy!TGЄd 0{I\CĮu2#Vp%# =1R,Ľ4~w{I 9e7Z3sf`?vC:,eGPl$j6^cMb_M7GlkLQ5{ׅ֫m~P߄hbƣȉ @iDvM3sTOqlB}M\'tiC?0-&zζ*i^CeZ6Rޖ̌ץۮ)c˷`>PF-gっ?'[4s諛H?]J3I<@mxvO% a$+dXXM`dT)2#ߨe4i` q' k* 7ZlgPph;kP .VAףpet/Z+`؄q0< RZ`=/ RZxfkDJ { NO)-0p|fRrM! vϏoo[MR{m뜆v iF5kH_ڐ2H_Gfæ'W:o:s{8kPIT%tK#+*aNQ/DO,M?Hq',2FVy͓RyG(w^ hy8F2׳;rfN4ͯ$ڭ "簺c3߿|OC::.Rh^tc. i%M}\}PK!ڄFgX"ppt/slideLayouts/slideLayout10.xmln8`e3!P uʰZnbH4 Zi^kqII i*!bs,X-yɆo!’2|h}b IYiZi}B˅BZR¶ew%'LJs;fv.pάz8d}9 ɢ LUA(VZ\64~ "5Ƭdވر.ɔBOL0+.MD-Arkc%-|'@5̲ɖf`?Z>ob5<;jh騭ۆ9R(&l}!dvHvkSR9nc}(AƪF_oDyfx 5(Zzi[evz"Q}/S~a6v^<6B XkXT̒iP1TSČԩ5JO-,-OgTM×Y'"2P4O"U" b@9`j a a(ͅjŗK χkB$d%M:ףL+D$':,xXzw)0#5aޗ "f*1*g104ŝ.f bHs6 5  5ۡ~GR-uĎF-`J @(5pAtdPrlʓAixU0ިNV']st%8qV.N[''|ZV)]?698" ssqNR%ܲ5h.F߹l/gemVspXbfnQvg*̏j>̣29pxSb.rMXN5?;8u/Lm6S(m:Ӯ7?nM[v7)x,Ww֝BR܍Wz/UoX4>ÓF~ (cb*8IA5Ǿq9{ܐى\5SO)ҼVaR!grMn/k'e,:ڽ 8Q 'TϳfyvA 5"Y!pQGSA(5VSH`a} .{eC{5rZZ9r-Nf_uoM|q^8 {$Y;A RT,U*գ(u(yI; y`1=N {K@1z^@`Ɓ@`P@tUu9 gbMx<l*~Q[ZӹIN:=+9.hTb cszu* =G%$uCNII,C=ٴTťMZ(bE\P̸jTd^좼NFuEwmݣlk!"?ǏwQ4@Ѽg@TOʯ0Ԛ:7].VTFKPK!n5Q!ppt/slideLayouts/slideLayout8.xmln6=oWַ4)Ҹ$iPHtIvrz%9,9q%^ M>y_~ٯ߬ NVLȼ*-"L4/o׳QlhR^0i99TKE4Gʔl[&+|Uլ-*QP?[;fv.h^ZҾZ,MdYR58Uz2k!Z01zwHjSl?0u3O<%%-tYU*M s3Z cd}-R]J`Օ y (l Ï mV-mmckE2j${'n;{BV\3lj+*$IY| &mD3<ȯe/ f7SH{7\׋\p<6r}otoSgJ$Di\pẁR[G@װ7l't#NarqNx|"",R1AP45 HaezEa$ͅ[cm{휿4aYS=0t݅ :pb1^Ow]C'rڏ#/l"xc0~@juŷ7c\c^P{*SيDtqu@iZ ?%b/Mp(_X͊@"Gw:UwD/ ܱ^$q~^$z{)8#/S3@[-/[Ds[AY9TMԕQbθ +'Z7@hA=,. Q&e"Vmݣ~;<=2K qhKdB9Vuex¢jaޚbx^Ǜ8>D 1<9^SjSP 0c7_ucp/0b P 0@n(8 z)@Ig΃=TCσT; Fu5tkخ_?\ [gUڡJ.hkIUajvQe$2FO6j}s&k C2¹1r:iIûLxT0U+.Y؍^X6^&^dYX$r$Q뼐g&ՐE?o.w97UǠ܎fOD^W93I7ȷ.6׌PK!Cw!ppt/slideLayouts/slideLayout6.xmlN0O;XUhQ!tĥZLlk&Z$;vbZX'! Es|߱ãUђiSH1#&RI q;W#cKFb?~8TC"!̐pnFIsV'I] 6|%:q܏JR,+RtQ2ak'qb!o5ޔfx)JA] ^aUm<9HWN y5bԕfVs5b9ӨAcfQb' 0%UK7 ahYޑEi-L4ܢ[ ꪪN(~*kԙL q=i5QzO4X ɐ;gCOCC}Dz^3^wJha91i/X&h3D m7*qH/ Mq?PLehIr)PjÙ <ޮs}#_Nӆ8vǩ$wA2FmA4D4oWcs2_;s^P. ][\o%ngvE'tpou^;I`[qd:z?u`\֟g]G~}z|n^ǹ#D].=NHU _8PK!%*Q!ppt/slideLayouts/slideLayout5.xmlYn6w T,M4IiHÀ8}GR,iwEQwϏ%C *U!_x<YoNAJ&8=qr^X܉FcrZWǮҜDLȒhs+oL[]2-If_fEJG"DRF_EZZ%20{]%}Wk^^ߊLc؟NX8)Ĺ(+" %8=gEihVhtIe& A:P]I~{Bs*PU4?+FR ]p1,&GC!+E8]}<Osaʴlf*_̤;;`WFg#9t.$X](]P%1&f6s&т0s7a*Ks1V[5/mltN zn{ʁum]\YD HO0 !anW69\@5P jBRT|jp VZ6&~: kx=ZvЁAomX l]b5l rŪǝe 1 e&`RjLS¶ k55R6k*P[@~EAװV8 #b4|g< 2btAYDy7u^M8sވabbV }V̆s"AinrqI/ (L Iv5 $. }2]{ٹxB׺4s횿A׷~޿4z[>MiwUYiUjvRs}.A #Z$OQh3]׆Nk]FH7-Crߡ* U1 XF| {gQxyl4>_ue-FMY#z{Ccqb͕KR_%ԁs ~PZb1 PK!]@!ppt/slideLayouts/slideLayout4.xmlWN0?i`eܚhP:MRL l&Z$R/(;)⢠= д ]l_tFӆ U)&޵޻{[hji0J}'^fL}8oZ,T ܪE7Q z[|U汘V%$7`Z71Z }$s]Z? xt!dJ^@L8@詮/*W?zV+t:W,O&{] rE鋦֩* `I.a8cl}1,Zugظs)WקU|YY?uo3:s"jSgg0Fp0^0׏B?ڢ~_%8{W` [c x8:Z*͍Hj33RP{%}3.$MMDz]0.B]ӇP<9ɥd7&lq & ԧ+=Ki b+.!*}1lBoCw狻pԍEH݃{b;rV KH*Mb:R~%ɥnaMF$QY|asTa4#0ɵ`5bPUvbҦ usYgvFQMAtwVTΒ\cXⷎ4a nm{k*WP’'癋+f*&ܰ\)̐Nh (Lιa*O5mf{Ҏ}XFD͖sz*sRȺ,G~4 P!J0xX55@\ eG$5Ek< "[ ~n! #u\۵}??" z=YDeT8wj 6:*m7Гh<[t^?6l:`= Fh~l:vԲ`D~l:p= FcZ6l:x /tDzS2lN)7;* ְK(hisbZ[=2i'9b'ƿ|hb<>|^)&'U܎$F2P Vh/ EXd+6ڼ<lYo^~ wFؾ}HSSF 8N{?Gihzr&`ݮ0f׿6= 8C"\O+yA"vL]u^.\!h~?:PK!b !ppt/slideLayouts/slideLayout2.xmln0wiDQjK&i:g :Mkm'ىKacVb9ãYPA^ cP~ 'Z'@``&8swYrbjhpŽ 3FvPɱpx c6L9 QsLyPWiJc24'ܔ"0l ~QDM*A^%d+nA,A00tЩE⣒c9Rne1R&VՋ=u•鷾Th `123(.h]5֡w>sj*3OQǫ幈4=Y9Vfyc*,`ىH nw6c3g=H{sa(a[؄׮%?e4CF P.6D!*T,8“VJ2J/NqSJ I&X4cJd8M`Oxm:z o nՋe/c )@|YqQbLbsE|"m"`C*O ma, -c}]әgy6pǖ8~IߖdjT+ipx2MF5d.7`nj&]N]H%춖Na4A֌NZ`Ptz-D`x~Csn,+ïm5r[Ehps8uCoPK! !ppt/slideLayouts/slideLayout1.xmlXmo6>`>-YNP m8>ei^FҎa@sKvw,'qEQ;>զl-.j/UREz.O{ië˺SZh?lLu2 0*}ħ^nLs$%/FT,U ܪe?U K_zuɪ JHn ~nњǠ5Jh7C2 dk #La!d.SV&.тe zK%/7V|X+VVz}mAe;GLx"fAsbcXb'n6?M{Sw7MojY|֬!Lߦ9QLst%#d` (~;i[l^5^ҽR`xWI^C *hX0ImZ %5EKS]0D7 a,6U_ sac>XS7 0]F*rUS;7f5 X }H؅4=z\}_g{9<& 7qNa R\5W9jWl!W@16P0pw>#FrZ n(m:%O>4Mdu:kojV2z8 ۘ4t}k;uDz掱7H>3S3Bap%Q\q`Hi=i>QV櫅Q;b0G{o(xG,h+~*w(_ϏH"OV]15Ν^N69am7Г}|B#;h8~*6.b#`O ;갃`B'a;jA'6S-o`#ÎwZ"3=19n7KkB8s񈴜ˬ=2mfuQL7pmq||''-uerLfДD+Cfױ&/4(Dl}ßê\ܢ~^'S˰}x3RRF 8Q/“٬Atz2;=ģ?$4f^Ats`p|_2C E_9GDJ7}IbZ:;hD:PK!xm:KdocProps/app.xmlTQo0~`M(ڐqUƆDh>B:e{4hR7^ݗ/;ӛR=8/D$"3#MM:\ >a?Е3\ Jh?8}V@%5VrJ0t`f%_%(Z`(_Eɪ]zh U<Ku2~>Ѽ>|4ϔ;s ѵ^en>Ѕ铘.S%m]h!]g\c9WPKj6V\:dxY0xc-P>ICКƃqa:}JlRxڵ}$AOA#SO?g 7iUM['׌u9[yv7޴\SSZ)' c$>7ZWS8иeoR?MͬZㄞ& w @ӂP]s72_mZb/PKDS&g ppt/slides/slide1.xmlPKDS;sppt/slides/slide2.xmlPKDSN)ppt/slides/slide3.xmlPKDSr" fppt/slides/slide4.xmlPKDSܔ2 8 ppt/slides/slide5.xmlPKDSܳx&ppt/slides/slide6.xmlPKDSY,^ppt/slides/slide7.xmlPKDSP*% Tppt/slides/_rels/slide1.xml.relsPKDS% ;ppt/slides/_rels/slide2.xml.relsPKDSҋ6% "ppt/slides/_rels/slide3.xml.relsPKDS6У% ppt/slides/_rels/slide4.xml.relsPKDSzwft% ppt/slides/_rels/slide5.xml.relsPKDStѩ% ppt/slides/_rels/slide6.xml.relsPKDSplI ppt/slides/_rels/slide7.xml.relsPKDSǠBppt/notesSlides/notesSlide1.xmlPKDS|*;ppt/notesSlides/_rels/notesSlide1.xml.relsPKDSɚH?!?ppt/slideMasters/slideMaster1.xmlPKDSjA/ ,$'ppt/slideMasters/_rels/slideMaster1.xml.relsPKDSbR([Content_Types].xmlPKDSp۴"O*docProps/core.xmlPKDScDX,docProps/custom.xmlPKDSQ )-_rels/.relsPKDSw X;.ppt/presentation.xmlPKDSGKr)1ppt/_rels/presentation.xml.relsPKDS8|^f$w2ppt/viewProps.xmlPK-!X$, 4ppt/notesMasters/_rels/notesMaster1.xml.relsPK-!!5ppt/notesMasters/notesMaster1.xmlPK-!ocB ;ppt/media/image1.pngPK-!Dppt/tableStyles.xmlPK-! 0Eppt/presProps.xmlPK-!{C] Gppt/theme/theme2.xmlPK-!:~"TNppt/theme/theme1.xmlPK-!ђ7,Tppt/slideLayouts/_rels/slideLayout7.xml.relsPK-!ђ7,Uppt/slideLayouts/_rels/slideLayout6.xml.relsPK-!ђ7,Vppt/slideLayouts/_rels/slideLayout5.xml.relsPK-!ђ7,Wppt/slideLayouts/_rels/slideLayout4.xml.relsPK-!ђ7,Xppt/slideLayouts/_rels/slideLayout3.xml.relsPK-!ђ7,Yppt/slideLayouts/_rels/slideLayout2.xml.relsPK-!ђ7,Zppt/slideLayouts/_rels/slideLayout1.xml.relsPK-!ђ7,[ppt/slideLayouts/_rels/slideLayout8.xml.relsPK-!ђ7,\ppt/slideLayouts/_rels/slideLayout9.xml.relsPK-!ђ7-]ppt/slideLayouts/_rels/slideLayout14.xml.relsPK-!ђ7-^ppt/slideLayouts/_rels/slideLayout13.xml.relsPK-!ђ7-_ppt/slideLayouts/_rels/slideLayout15.xml.relsPK-!ђ7-`ppt/slideLayouts/_rels/slideLayout10.xml.relsPK-!ђ7-appt/slideLayouts/_rels/slideLayout12.xml.relsPK-!ђ7-bppt/slideLayouts/_rels/slideLayout11.xml.relsPK-!ђ7-dppt/slideLayouts/_rels/slideLayout17.xml.relsPK-!ђ7-eppt/slideLayouts/_rels/slideLayout16.xml.relsPK-!OD "fppt/slideLayouts/slideLayout17.xmlPK-!II  "ippt/slideLayouts/slideLayout16.xmlPK-!!gT:"lppt/slideLayouts/slideLayout15.xmlPK-!B#M%"ssppt/slideLayouts/slideLayout14.xmlPK-!_6 "yppt/slideLayouts/slideLayout13.xmlPK-!ͥs|. "|ppt/slideLayouts/slideLayout12.xmlPK-! Ӯ' "ppt/slideLayouts/slideLayout11.xmlPK-!ڄFgX"ppt/slideLayouts/slideLayout10.xmlPK-![!؋ppt/slideLayouts/slideLayout9.xmlPK-!n5Q!ppt/slideLayouts/slideLayout8.xmlPK-!m!ppt/slideLayouts/slideLayout7.xmlPK-!Cw!Bppt/slideLayouts/slideLayout6.xmlPK-!%*Q!ppt/slideLayouts/slideLayout5.xmlPK-!]@!}ppt/slideLayouts/slideLayout4.xmlPK-!OS!ppt/slideLayouts/slideLayout3.xmlPK-!b !1ppt/slideLayouts/slideLayout2.xmlPK-! !appt/slideLayouts/slideLayout1.xmlPK-!xm:KdocProps/app.xmlPKCCpandoc-3.1.3/test/pptx/footer/fixed-date/reference.pptx0000644000000000000000000013557407346545000021327 0ustar0000000000000000PK!`[Content_Types].xml (̘QO0ߑ"Nk tC`ʒM`+c ީq[Rw+ybPK!ht _rels/.rels (J1!}7*"loDc2HҾaa-?$Yon ^AX+xn 278O a\^hD.Cy1BYz |t!9rL߰'~20(H[s=D[:b4(uHL'ebK9U!ZW{h^MhwuV};G缦oYDS7t}N!3yCaFr3PK!c\#7 ppt/slides/_rels/slide1.xml.relsϽj0=wW;,e)C>!mQ[:o1tx_?],(AC+lt>~n_'\08c 1\ۡҌ0JhA1Q!K-_I}4QgӐ{ׂm^0xKѮ O;-G*|ZY#@N5PK! p ppt/slides/slide1.xmlVn8˨SH(muDEkow!%n).57q7o}g)8M6 :ck-FiIt@ �a+UhbEf#%[Y(q52:Y=HX{3X;˵I;>XmItN;"!rѴL,s1N_t mWQ[N ?8۲?oV/Hi1`a'7˔5،ڄտAYweSx6`fA}a|;QV ®n7>(m'\;+ےbU9E_\Mǟ K$) = #p;N8>逘QvOԷ$OE%~WLW]^'Oi¨Z./$XQ-.)R~!\8@Q{) ێl? %8ώpHBi2u ٴ€lQO Ok+j|w&xpaQDlp^\N 7^z r$ueSMsqlOű ;C8<% g^n:JӻdI]qs6[*g3, M1$B)7YB)?l>GlL9[uJ{ҩ M|9GH0?3ˎIǽ& 8oS$D" ;PK!?-gppt/_rels/presentation.xml.rels (J0nӮl mm0MBWUk,Cg?!g/Z1(JB ^@R+d0uy~zF}r0tޛ;J]a] phsJRë7"]ʉ' 즾 [7^W=* GȝGlm3IGnRby"qdIQ¡Qg(C/)'XˤK Q6[eNɰd(A\0(BP~PK!Rx= ppt/presentation.xmln0w@w BӤN`>-YNP m8>ei^FҎa@sKvw,'qEQ;>զl-.j/UREz.O{ië˺SZh?lLu2 0*}ħ^nLs$%/FT,U ܪe?U K_zuɪ JHn ~nњǠ5Jh7C2 dk #La!d.SV&.тe zK%/7V|X+VVz}mAe;GLx"fAsbcXb'n6?M{Sw7MojY|֬!Lߦ9QLst%#d` (~;i[l^5^ҽR`xWI^C *hX0ImZ %5EKS]0D7 a,6U_ sac>XS7 0]F*rUS;7f5 X }H؅4=z\}_g{9<& 7qNa R\5W9jWl!W@16P0pw>#FrZ n(m:%O>4Mdu:kojV2z8 ۘ4t}k;uDz掱7H>3S3Bap%Q\q`Hi=i>QV櫅Q;b0G{o(xG,h+~*w(_ϏH"OV]15Ν^N69am7Г}|B#;h8~*6.b#`O ;갃`B'a;jA'6S-o`#ÎwZ"3=19n7KkB8s񈴜ˬ=2mfuQL7pmq||''-uerLfДD+Cfױ&/4(Dl}ßê\ܢ~^'S˰}x3RRF 8Q/“٬Atz2;=ģ?$4f^Ats`p|_2C E_9GDJ7}IbZ:;hD:PK!b !ppt/slideLayouts/slideLayout2.xmln0wiDQjK&i:g :Mkm'ىKacVb9ãYPA^ cP~ 'Z'@``&8swYrbjhpŽ 3FvPɱpx c6L9 QsLyPWiJc24'ܔ"0l ~QDM*A^%d+nA,A00tЩE⣒c9Rne1R&VՋ=u•鷾Th `123(.h]5֡w>sj*3OQǫ幈4=Y9Vfyc*,`ىH nw6c3g=H{sa(a[؄׮%?e4CF P.6D!*T,8“VJ2J/NqSJ I&X4cJd8M`Oxm:z o nՋe/c )@|YqQbLbsE|"m"`C*O ma, -c}]әgy6pǖ8~IߖdjT+ipx2MF5d.7`nj&]N]H%춖Na4A֌NZ`Ptz-D`x~Csn,+ïm5r[Ehps8uCoPK!OS!ppt/slideLayouts/slideLayout3.xml̘n6rpmɲlu4ni)vMKIΆ}q$;琲ɒ8E?/u!J(W<&ʸJr1>_tFӆ U)&޵޻{[hji0J}'^fL}8oZ,T ܪE7Q z[|U汘V%$7`Z71Z }$s]Z? xt!dJ^@L8@詮/*W?zV+t:W,O&{] rE鋦֩* `I.a8cl}1,Zugظs)WקU|YY?uo3:s"jSgg0Fp0^0׏B?ڢ~_%8{W` [c x8:Z*͍Hj33RP{%}3.$MMDz]0.B]ӇP<9ɥd7&lq & ԧ+=Ki b+.!*}1lBoCw狻pԍEH݃{b;rV KH*Mb:R~%ɥnaMF$QY|asTa4#0ɵ`5bPUvbҦ usYgvFQMAtwVTΒ\cXⷎ4a nm{k*WP’'癋+f*&ܰ\)̐Nh (Lιa*O5mf{Ҏ}XFD͖sz*sRȺ,G~4 P!J0xX55@\ eG$5Ek< "[ ~n! #u\۵}??" z=YDeT8wj 6:*m7Гh<[t^?6l:`= Fh~l:vԲ`D~l:p= FcZ6l:x /tDzS2lN)7;* ְK(hisbZ[=2i'9b'ƿ|hb<>|^)&'U܎$F2P Vh/ EXd+6ڼ<lYo^~ wFؾ}HSSF 8N{?Gihzr&`ݮ0f׿6= 8C"\O+yA"vL]u^.\!h~?:PK!]@!ppt/slideLayouts/slideLayout4.xmlWN0?i`eܚhP:MRL l&Z$R/(;)⢠= д ]l=gEihVhtIe& A:P]I~{Bs*PU4?+FR ]p1,&GC!+E8]}<Osaʴlf*_̤;;`WFg#9t.$X](]P%1&f6s&т0s7a*Ks1V[5/mltN zn{ʁum]\YD HO0 !anW69\@5P jBRT|jp VZ6&~: kx=ZvЁAomX l]b5l rŪǝe 1 e&`RjLS¶ k55R6k*P[@~EAװV8 #b4|g< 2btAYDy7u^M8sވabbV }V̆s"AinrqI/ (L Iv5 $. }2]{ٹxB׺4s횿A׷~޿4z[>MiwUYiUjvRs}.A #Z$OQh3]׆Nk]FH7-Crߡ* U1 XF| {gQxyl4>_ue-FMY#z{Ccqb͕KR_%ԁs ~PZb1 PK!Cw!ppt/slideLayouts/slideLayout6.xmlN0O;XUhQ!tĥZLlk&Z$;vbZX'! Es|߱ãUђiSH1#&RI q;W#cKFb?~8TC"!̐pnFIsV'I] 6|%:q܏JR,+RtQ2ak'qb!o5ޔfx)JA] ^aUm<9HWN y5bԕfVs5b9ӨAcfQb' 0%UK7 ahYޑEi-L4ܢ[ ꪪN(~*kԙL q=i5QzO4X ɐ;gCOCC}Dz^3^wJha91i/X&h3D m7*qH/ Mq?PLehIr)PjÙ <ޮs}#_Nӆ8vǩ$wA2FmA4D4oWcs2_;s^P. ][\o%ngvE'tpou^;I`[qd:z?u`\֟g]G~}z|n^ǹ#D].=NHU _8PK!m!ppt/slideLayouts/slideLayout7.xmlj0vBIې&%1ڰrl*KxqǠ]NdGդ]ec}7%CU|;GF'"-joofA#mO pM5>}s&k C2¹1r:iIûLxT0U+.Y؍^X6^&^dYX$r$Q뼐g&ՐE?o.w97UǠ܎fOD^W93I7ȷ.6׌PK!n5Q!ppt/slideLayouts/slideLayout8.xmln6=oWַ4)Ҹ$iPHtIvrz%9,9q%^ M>y_~ٯ߬ NVLȼ*-"L4/o׳QlhR^0i99TKE4Gʔl[&+|Uլ-*QP?[;fv.h^ZҾZ,MdYR58Uz2k!Z01zwHjSl?0u3O<%%-tYU*M s3Z cd}-R]J`Օ y (l Ï mV-mmckE2j${'n;{BV\3lj+*$IY| &mD3<ȯe/ f7SH{7\׋\p<6r}otoSgJ$Di\pẁR[G@װ7l't#NarqNx|"",R1AP45 HaezEa$ͅ[cm{휿4aYS=0t݅ :pb1^Ow]C'rڏ#/l"xc0~@juŷ7c\c^P{*SيDtqu@iZ ?%b/Mp(_X͊@"Gw:UwD/ ܱ^$q~^$z{)8#/S3@[-/[Ds[AY9TMԕQbθ +'Z7@hA=,. Q&e"Vmݣ~;<=2K qhKdB9Vuex¢jaޚbx^Ǜ8>D 1<9^SjSP 0c7_ucp/0b P 0@n(8 z)@Ig΃=TCσT; Fu5tkخ_?\ [gUڡJ.hkIUajvQe$2FO6j(m:Ӯ7?nM[v7)x,Ww֝BR܍Wz/UoX4>ÓF~ (cb*8IA5Ǿq9{ܐى\5SO)ҼVaR!grMn/k'e,:ڽ 8Q 'TϳfyvA 5"Y!pQGSA(5VSH`a} .{eC{5rZZ9r-Nf_uoM|q^8 {$Y;A RT,U*գ(u(yI; y`1=N {K@1z^@`Ɓ@`P@tUu9 gbMx<l*~Q[ZӹIN:=+9.hTb cszu* =G%$uCNII,C=ٴTťMZ(bE\P̸jTd^좼NFuEwmݣlk!"?ǏwQ4@Ѽg@TOʯ0Ԛ:7].VTFKPK!ڄFgX"ppt/slideLayouts/slideLayout10.xmln8`e3!P uʰZnbH4 Zi^kqII i*!bs,X-yɆo!’2|h}b IYiZi}B˅BZR¶ew%'LJs;fv.pάz8d}9 ɢ LUA(VZ\64~ "5Ƭdވر.ɔBOL0+.MD-Arkc%-|'@5̲ɖf`?Z>ob5<;jh騭ۆ9R(&l}!dvHvkSR9nc}(AƪF_oDyfx 5(Zzi[evz"Q}/S~a6v^<6B XkXT̒iP1TSČԩ5JO-,-OgTM×Y'"2P4O"U" b@9`j a a(ͅjŗK χkB$d%M:ףL+D$':,xXzw)0#5aޗ "f*1*g104ŝ.f bHs6 5  5ۡ~GR-uĎF-`J @(5pAtdPrlʓAixU0ިNV']st%8qV.N[''|ZV)]?698" ssqNR%ܲ5h.F߹l/gemVspXbfnQvg*̏j>̣29pxSb.rMXN5?;8u/Lm6S-4-kΦ֖)?=Uft[4W:rĶUg`-kYQ $Ui{-SH٬NW㺁HVR Wy!TGЄd 0{I\CĮu2#Vp%# =1R,Ľ4~w{I 9e7Z3sf`?vC:,eGPl$j6^cMb_M7GlkLQ5{ׅ֫m~P߄hbƣȉ @iDvM3sTOqlB}M\'tiC?0-&zζ*i^CeZ6Rޖ̌ץۮ)c˷`>PF-gっ?'[4s諛H?]J3I<@mxvO% a$+dXXM`dT)2#ߨe4i` q' k* 7ZlgPph;kP .VAףpet/Z+`؄q0< RZ`=/ RZxfkDJ { NO)-0p|fRrM! vϏoo[MR{m뜆v iF5kH_ڐ2H_Gfæ'W:o:s{8kPIT%tK#+*aNQ/DO,M?Hq',2FVy͓RyG(w^ hy8F2׳;rfN4ͯ$ڭ "簺c3߿|OC::.Rh^tc. i%M}\}PK!ͥs|. "ppt/slideLayouts/slideLayout12.xmlY]nF~/;,gG$ER9O7J,\R9H{89IgfIRD2k;,X^4c.\ g'?NIQƅʸG5Ċv&;mU]8EM3k䯒rR `{]$ZQ3رN@h(c &~ZT'윗JUV |BFٍbi@5թj2zg4lO!?U`6Xkh5%F-ԝfNkS:nTKVUyUD+o[RL^34X 㒎w\(|(n6U6属G Qj`adDy}(5`Dݝ(5`:Q/ea>IZgTHTT )PxmZ4P<3yʁ<ժo0ꐪ꾩oRD;UQ[T;*c;3Nֺ]zk}1]:Ni(GmKౖC%S> vh~kQ'iƤw2l1P`hüTkJ_.^Bgwzqq9/ZK@5G>}O]6귛b26C(4mZ=  ХOOnQ7' Qd Kܚ쪪˽L(v˼?jV;)|Ku39Mi>/+h~?PK!_6 "ppt/slideLayouts/slideLayout13.xml8t`q5[m7MUi]5YPl'Mz:u8}mvW)cf>|gȳ۲ &U^>u,x\%9[o"JSТln혲䙘"j 0ѹi-f⌕T=p/dI5\;;#'KsWilQq]C$+,ShB2=ܒ#7kAH%L\\PJHp7Xki6ג 7~h%ߘ}~l9-H6α&q=wqm7(74qǛ>ZÕ<4< 4"=`EÀHia(D'=) 0H;=) R M `ܿiShz4mG ٠(4#Ȭz2}\|߿~J7=~˪4*jYKךJXU_ Qg"# 7 ;i]yպ=7§8*}N;\x2#yb9 '\/4 "簻c?|K,S:Bh^ta?i$L9 PK!B#M%"ppt/slideLayouts/slideLayout14.xmlZn6?`@h]+hRq3H`NX(uI{v}q$#$KNqdk M߹;ǖ_Yd )ie EǛAh !IVXRa9`Y3F.ȱ1<2MOiFī7)xFö́vL۲|3#in.$鰈ge)#R/i)rS``Jpϕ8Q#djAge9̋SGg^k˯^o3F >sw6CrL_hql,Bxaxnj`vj*65ܤQWf5 ?  mejEeS$^W݄AFWN6:mo)Z؞;wm#x[$K}rĄ%oW`D>*䌥'$ DTK"$,SHh ͓k/wPrىN j6(XG;⚑N (]>Bc(AvmC/$~Uȼ}Pz!BqГyq:$jM703PF4O!Ϯ灂 HJGWԸYtIr2cq!d5@e!ij=c Sh  Py]I5۪i6;(d,',(,lR;9ӄ}څDL" u2yayzN"ǭFuZH>Q; Vjv: jXP :M [X{6j6qڠ\i!jP=|ib%>)Z*SM=#kQ5ܯQvxu[xa8ᣋ2ur̆>9~,@ckx=^ĵc@Ukxr/G:#\)_T1,zaEC.ޫSbx곁\@>kwH!SߔoNJn;Ʒqƪ䱍4 T̂h=%\WG9?k #ll Zn+dD+ O7HkI3h{ zzTO0ZTtns9^],9#F"̂I3XZƢ\79@IUٕbfk(<˃-1LCw Uje:k^s Yx9ǼSy! }ңrVyzaa,+ZH& 6y%Ύ(, oo0r-;9YN7 R4`QCp#W*>̤"|p 2u٦?vtH4ӷuݩr]EIie@&3MuRfXKb{ # 14^PM^CC6W*>zfB"e!ɳL-͐9dE9<׊_e* >Rƥ9-uЭ&mTحXyyonLe k3 SA(ga8t`aNM팑)N9BZT߰1&Pհr^hمUXp_XU-iz.쾰 mkmUX*SVaU XU ˌ =uxQ|U蔝ggE_㠮2X]fLʾc(3{8BdYBTD2 ߂dy>wa>bxWV*$z2Xgi&QRuG}j|Uw/.FD&e4\Eb1kGz)ͱxwkS|p~XHq׮jë@s~l;s~7A**aHl[ټn5 y%E[_]7<8l#>KYI\me臸ymuz`^끳:xU]ǒ 𾢩R4:l|Kttc9c9?P]Ǖ9̸d231Ccq ]^96;1ߙ:3I/?~ؕ]͒c<S@.1:HûTxTaY؈vcʃjdHS9QaJ&jR 2nrHf.![c&9;UL=C%&&04 M83-'{NjJHէH!XJ%{䅻 W_[ܝ*#PA^śkh b6;9Y=L)jy,+|lezwevYUc*YS2̭ $2mfΈ{P/ö Kh|@$`mB?|bũ_WPBP}xo۞RC1K k$/l!B  vvO/jQb^x˘>]F 6PtWdTm.*m@k߮ؐNv^ t p_<˝Q;qlyC!p+KIF(Osg&d.w`nj&N G&^Km-C8ÉMg{h ;;Z3:h՚AӉh~:f!uYl+r{͟EyK d9"L`yV88tSΑ_PK!OD "ppt/slideLayouts/slideLayout17.xmlVN0?i`eK>AZ"tG7C"۳ݮ4'ٵPRT@bǹ>>\)*{xs5B)Y)g̉r{?FTwTkq]$j ]e5<7` <8cbf>O,"}Mrt" 4D۠ I٫\@ g#gr o|D##sY)Cc26L$#1vt(Q.^,#ڎ[~Svqgܴu0qn(*h^5nhQUAi:ANE!gV(|fM嗩L!tJPbS|'a[#]L늼vU^8Z: 'p2Ij`[wܬ5Zz~{Qp䵛˳23`Ο#w>]jmqd˩<;$|b0swPK!ђ7-ppt/slideLayouts/_rels/slideLayout11.xml.relsϽ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ5?lX2ꭁMپ۽BB<;=$_.Q_u0(&4 *ĩkŨwՂ42P8l4'[0J {]Ë)XZ>۴M.Pj ,̨+QbPCkJ5zwP6RmF ZQ6R4TVjmEBI-%eKQ-_3juGƱT TɶݑJ?^~PK!6>!ppt/slideMasters/slideMaster1.xml[n^ u|] 93-QZR):M(roq}}ΌH[v,;i$'$ѐn)[.']߶xq/&ӓmU1E'=OwGV).-#lbJ^RdwEsxrE/0R~?-Yۺ|L"I_jsU"` ҬhcF+%`e)/EJci&wB-S,e%DZ%|9ĖbgDrZNjT2GGm%Rl&0tGxeEjBjUy-9V~,g%>U}VVΖ`t_&%rWuGǿ~FiunGg&5&U=\ks)+""t+4WeTV^RZ*V1lW녁q w<7Bokl\Jȋ &9%աߨM%Xݝ=#\Ksmy5G܊n`b>7̷(&G0Ď$[rJI-L N릤'Cϳ-ȢK3ei~! (8hWLvLF&dɄj% a<92J3taR74I{/?G%FyΘY(RgcK[.1"L>~@NTG1bۡ7`jEg IDQJ_?ԃ) F7[+}ZA%ojIA<;H,*bfbPX/nXeC$> +u10M=Xĵl䡲.:-{/b,eH"?bYzd{&D0!.NV1Ũf1 0MD5uDv#- 'zEd"2BN90fR{ +}oH^-㯷H bwD bAYeJZ# GDs ͷ\D C# "?HoSE"bB םG?N/bz }D&_6|.9>1J /7}-5_(sQ Z,x@C75g$FI`$FBTox_ji,vS2lI6C/G1JA-ysV]Zu݆ZufV] #aCfúaӿ妃# ;GB6]]\s$xᰩ|,z[·?RYEm*D>+:"7y&lĒY?z훯|F7_||m/t2vbytvp?vDsV%Ur%8ݭxl#x9P&>{1-rΙX]ϡLj~`(3S R&+ރ_jiVuZg(6aLɟjYF<ڼ\emKYUG =%n(8Ѧ'XY̠ JZ+=`fPK!!ppt/notesMasters/notesMaster1.xmlXێ6}/Bb#`m6"|-Ѷ`T)M ~NCmg k43<q[kyS2ڳgmafdD D=7z^w)y^hE={.Du& 5X)MW>s >%nJjl:-sm>x5 [SF䚠H7ENbўum w5gD(vJlpNg>ygiukވUz6ǹPL@FD]>+̟3Ѷ%mzvǏ"XZ(Nx#AO@1w+yE|XBdAM <}*,קҖVq$$YәS>Έ0bCp >ֱL,JG*P7{{0;Q:0Nҏ_ģQ2Dls1pݢ-9~l{J Ft}qq |v4ؼ /Ǥ,uY.=ïwLhi0M*݆LWE77bQGq%!qe'TZ$Ra5n7GtݲLUhXgB}16,W/Bڋ riX1hCH48~FEw 7,!$d')<4 epQ KWBH&A]`gu29E <4Ǜyw[r1?أW<; #ma|0rB 1}1oq'Iod01|pg\mËp:Ӂ9?0~+FZ~/_>yBV=L'n.GK֒p~hDN꜏a $~9V}tL^Ϥ*s6rV[׬TMUqԉ aov+BUr_ښ|~ųX4RH] u >OS?9dP[eA'$*dPd쓜Rh-(<5*lD甤רh:[%qzJkTr[ymIgPK !UMb docProps/thumbnail.jpegJFIF``ExifMM*>F(iN``8Photoshop 3.08BIM8BIM%ُ B~" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzC  C  ?yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yys>ee^}}ꏙG@zee^}}ꏙG@zee^}}ꏙG@zee^}}ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zgg^==ꏙG@zgg^==ꏙG@zgg^==ꏙG@zgg^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@ aee^hjKfNX~%1}39[ȟf̆QT{@022/022/022/022/022/0+>cqh\^O3Ϸ 0000f0S VPPPPpVs 0|     YYA@       q@ VPPPP0 0k 0|     q@@@GXPPP0 `  8     0 07`(`(`CP   VPPp ހ `@     )`x +h(`(`(`8 >CP0 #,(`(`(`(`*`8g +h(`(`(`(`(`(`8+hXA@@@@@@@@@@@ ` +h(`(`(`(`(`(`8+hXA@@@@@@@@@47`(`(`(`(`s > 8  #,(`(`(`CP    VUpN@000 `XA@@@@@!(`x +h(`(`8 o0 `    Y 0@@@4000 a@@@@@@@@@@@!(`0000f040000004      `@` )`      040000 `XA@!(`x +h8 oPP0 `  Y 0@@@@@@@407`(`CP  VPPUpN@0 `XA@@@@@@@@@!(`x +h(`(`(`(`8+hXA@@@@@@@@@@@`V9 >CP0 #,(`(`(`(`(`p VPPPPP?`XA@      0f      `@!(`    0 07`(`(`(`(`CP   VPPp ހ   `@   )`x +h(`(`(`8 oP0 `    8  `@GXPPPPUpN@0 `XA@@@@@@@@@!XA@       q@ VPPPPP?`XA@       q@ VPPPP0 ` 8      0f    `@  q@@@0000 `XA@@@!(`x +h(`(`*`8   ?$++%tEXtdate:create2021-05-29T17:44:55+00:00o%tEXtdate:modify2021-05-29T17:44:55+00:008IENDB`PK!:~"Tppt/theme/theme1.xmlYAo6tw-Vlu Y4iiP@IvNeC.KwaN52 EI6i(@"=~|=J}" oۂYL&('F϶`̾'.O` -!]зfb[$7%4\t9\Mq8;̶2 CޫFXe1DžNŅ-Xup'^p€qqo;g7n7BoUFWUӖRy#]7q~g؍:K}X,th0 ltw#ixE{QT6;7j|$lzQg /Aesg\7`na*2%x TPKcBG-("S XHbAF;-gxN[\[N/&(bP6 )y\h/rW>f*|޼3ؿ}q_wf8WW/__x@X kPa0J{}SYנdzZ2at oްY[3T9]|"b-Fw@;I8r14\(9%a7C 0\U:|?OGyrHl )>q2*husϞ=ߟ?z˹vP^??|ۏkNjYǝ?NЌgOLhtܑ\]2ˌ G"JaQHJbhq֚j(vӳ;O&x$ F.{}MSY a¤LrC PK!`/J-ppt/viewProps.xmlRN0#4i DM+ M%׳)ړYl5%rHJx 0J@ɷ|6b30XBpE\A#p`-oD27 7u6qmxRKxr݀ IC-ǕvWsQsd"Ҕ™X+wO K+hD$pWribZc(yγSº|c+;a G9Uop clȢ5Y:vDزrGtDq(JPm7Z7 }`516. 'NRr=v|^+]NHzLn7>PK!ppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ4 zc֐X=i`+eqCXEz(|u_ bqDadƄ4 φ11 AHSҥq Ǔk_3 PK!xm:KdocProps/app.xml (TQo0~`M(ڐqUƆDh>B:e{4hR7^ݗ/;ӛR=8/D$"3#MM:\ >a?Е3\ Jh?8}V@%5VrJ0t`f%_%(Z`(_Eɪ]zh U<Ku2~>Ѽ>|4ϔ;s ѵ^en>Ѕ铘.S%m]h!]g\c9WPKj6V\:dxY0xc-P>ICКƃqa:}JlRxڵ}$AOA#SO?g 7iUM['׌u9[yv7޴\SSZ)' c$>7ZWS8иeoR?MͬZㄞ& w @ӂP]s72_mZb/PK-!`[Content_Types].xmlPK-!ht _rels/.relsPK-!c\#7 Rppt/slides/_rels/slide1.xml.relsPK-! p Pppt/slides/slide1.xmlPK-!?-g ppt/_rels/presentation.xml.relsPK-!Rx= fppt/presentation.xmlPK-!ђ7-6ppt/slideLayouts/_rels/slideLayout16.xml.relsPK-!ђ7-=ppt/slideLayouts/_rels/slideLayout17.xml.relsPK-! !Dppt/slideLayouts/slideLayout1.xmlPK-!b !|ppt/slideLayouts/slideLayout2.xmlPK-!OS!ppt/slideLayouts/slideLayout3.xmlPK-!]@! ppt/slideLayouts/slideLayout4.xmlPK-!%*Q!`$ppt/slideLayouts/slideLayout5.xmlPK-!Cw!)ppt/slideLayouts/slideLayout6.xmlPK-!m!,ppt/slideLayouts/slideLayout7.xmlPK-!n5Q!G/ppt/slideLayouts/slideLayout8.xmlPK-![!4ppt/slideLayouts/slideLayout9.xmlPK-!ڄFgX"9ppt/slideLayouts/slideLayout10.xmlPK-! Ӯ' "=ppt/slideLayouts/slideLayout11.xmlPK-!ͥs|. "Appt/slideLayouts/slideLayout12.xmlPK-!_6 "Gppt/slideLayouts/slideLayout13.xmlPK-!B#M%"Kppt/slideLayouts/slideLayout14.xmlPK-!!gT:"jQppt/slideLayouts/slideLayout15.xmlPK-!II  "Wppt/slideLayouts/slideLayout16.xmlPK-!OD "J[ppt/slideLayouts/slideLayout17.xmlPK-!ђ7-^ppt/slideLayouts/_rels/slideLayout11.xml.relsPK-!ђ7-_ppt/slideLayouts/_rels/slideLayout12.xml.relsPK-!ђ7-`ppt/slideLayouts/_rels/slideLayout10.xml.relsPK-!ђ7-appt/slideLayouts/_rels/slideLayout15.xml.relsPK-!ђ7-bppt/slideLayouts/_rels/slideLayout13.xml.relsPK-!ђ7-cppt/slideLayouts/_rels/slideLayout14.xml.relsPK-!ђ7,dppt/slideLayouts/_rels/slideLayout9.xml.relsPK-!E ,eppt/slideMasters/_rels/slideMaster1.xml.relsPK-!6>!gppt/slideMasters/slideMaster1.xmlPK-!ђ7,oppt/slideLayouts/_rels/slideLayout8.xml.relsPK-!ђ7,pppt/slideLayouts/_rels/slideLayout1.xml.relsPK-!ђ7,qppt/slideLayouts/_rels/slideLayout2.xml.relsPK-!ђ7,rppt/slideLayouts/_rels/slideLayout3.xml.relsPK-!ђ7,sppt/slideLayouts/_rels/slideLayout4.xml.relsPK-!ђ7,tppt/slideLayouts/_rels/slideLayout5.xml.relsPK-!ђ7,uppt/slideLayouts/_rels/slideLayout6.xml.relsPK-!ђ7,vppt/slideLayouts/_rels/slideLayout7.xml.relsPK-!X$,wppt/notesMasters/_rels/notesMaster1.xml.relsPK-!!xppt/notesMasters/notesMaster1.xmlPK- !UMb ~docProps/thumbnail.jpegPK- !ocB ppt/media/image1.pngPK-!:~"T|ppt/theme/theme1.xmlPK-!{C] ppt/theme/theme2.xmlPK-! 0ppt/presProps.xmlPK-!`/J-Bppt/viewProps.xmlPK-!ppt/tableStyles.xmlPK-!GvͤdocProps/core.xmlPK-!xm:KzdocProps/app.xmlPK55|pandoc-3.1.3/test/pptx/footer/higher-slide-number/0000755000000000000000000000000007346545000020255 5ustar0000000000000000pandoc-3.1.3/test/pptx/footer/higher-slide-number/output.pptx0000644000000000000000000014700407346545000022540 0ustar0000000000000000PKDS= ppt/slides/slide1.xmlVn0}BTӤ0 ,T=NdI[u}=_0eEM}fN r34b30.F̀) 9o$bguXjZ!.}.: 쯳HpT' P\".dy0yb&Rj%2+q#w73*/W3 Tc*<4 NJEuFzh7 I Qt:fcP{[p*Ǩ%N5 $ DAo&|g ҟ%5)8꺞k9?ա=vY'ui/DB9rȏX+WB$J˚.Rh|4/րK3eN:xZVe\p)Rat-m@lx@~Jz^Bgy^VJ.SLwP]9TfZE8fX~lQdƾ8msq`2nYmhVK701OE[bDvElZ!ð=k 8>$!> 7iA*i[s}Y@ 5KF"[Iu8=L--*iIԑ(LȒh78(x^KRp_~eEBc,KuDRF4TyQ)zMJRiH2ΒKkեԌ꣬\˳\"8⤤A]ikjFQ;$u&Ks{h=p>b3I%l7_Nsn66O]B39+ZU"`И܆4͹ʑTLdΖY-5>s f =UU`Xm$<šaa9Z+Ri"t'Z-[nc5h@sF R:oX뽘 'ʘ@:b`!DC"˜Laf_$G;:c? '0,Ʒ[`X%r)w?O@tnj{a?;]:x:'|4i!u 5s@S!4eDaJ7%$v|2-[&sŠy55O5jwZM_-Gy3|awz!¸ә f̸پ^8(3Eqv:vV>pgxy{"{cZZ]M!봘6 DufQ-JI wlҢӯZ24 &-t7F9K%7-! s QxE zy^ڏ/.\OlߪsQhͬ1ڣ+jh02e񰼮"uɷ+GWxS/$eVUAVKfiF88_L+t⇪Ls,Q fJsX~&$8ȍ`FS4q{ 3Y~,ˊb-"4UIWv G>^~=E. f/MVrٖ^(%u-,H}[b"X~rɏ+sGRȂ }rߑ?ȸyی*”#46 ΛmZoh) f = u `JbkR{~͢*3 \iUR:SD~P ZeG)RC rKju5 -(9x P^*+޾'LL{?rLRE ?\T4>%NWUoGTaN`Y:^x. h)%Aq^jC,T g7_71,0=s;ˋȿKi]^KvΫ Ԫv͆l/.YԫwӶŇ_KbEI0ܙ9Ll7'35mGGayY~ 77L3tͧFdmɃV 8dOMV2]*v?/taOLSʅ,$}9LI%/,1)+e 5%~U/hCsfw BǙGXwMČ"6 d>beOD.Z:5I \jaD 0s%`$sV<,ˊ,Y&  )΋6٪d8e=IY vX]qUn>jQ͹9(R xhY3m\sO7M>Ȱ2]4fTWil-Tx+@Ҍ&GI$>"haeQؕg\]`u%j@414&!uur vL&T2kOC=5`Nf H-b'J7rl6Z"Yw ªΰdZMcт):7Z 繝nF%8g$xX[S7"ٻDcBqy N\1RW  |͋lTt 5?,r׋N {x:ڮ{1Ma?t7{Ұ(JZ.AOi*EbB0mT\:t(8p/A4#4iE^/̎ Mf Yݔ<+>ݖ?bQ(E^`1ȴ{v.0`,OKr7 f(}"qN섳q<;QpsP"SyΪ2w?K4-PKDSG: Etppt/slides/slide6.xmlXn6~BRͲQ+PdA>-Q02vZIƋ軷ls "9w.ͺ`EXW6B :m[fvdzݎ:!Zw#< ]Z wb-oXxd0cA(t'.kϞ2%I.+Rsp+ʶ3hk{%,L!l!rT޲v2|e9qEƖ`zG@ý:g x`=ُ $Ystg:-~:%ק1w KpcTAuWrJڂ3Nw&u#@)4ȍ.mc+qڰ!W4!7Drj tzs pwQ_юZuktEfՠ33r4,ozWsZfR+9Shq>$&$-))2[+%I˟ILH(m/#d(ę2Mͅo{$9K!8xAu *Eaa` #EVY`g`suMp35FZPnQy.L]7=m];vȎ8g z'Ԅԛ|L*iC!Agn@a+wޣSپunWs坼1Csگ]18tEu_/K8a=nc!]ݡuD~x=n^=L =d`|4:?9f1L ǟ&ql\jǓA`b%iˊX^ImNW|J G'H>t ;9UYN3AJj_LfM#^0{!\&D+,abGZ5 BFv[왤Wbj G#b,F]~+́ҭ3մTamv{/PKDS% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PKDSҋ6% ppt/slides/_rels/slide3.xml.rels 0_%ݤ*H^D(x!٦$؂;; S;7d㰧t+4g۝mN"GMHD\0.%9|匚!_B#;TՉ5L)S{ #l,MF],~+́ҵ1išm6_PKDS6У% ppt/slides/_rels/slide4.xml.rels 0_%ݤz"M{IdTۛc <7L}LÑV@IPC6E.4Ha9\KrB+]>Z5 BFv3[왤Wb@5?l?FŢ?*X»X VD[}giچ_PKDSzwft% ppt/slides/_rels/slide5.xml.rels 0_%ݤH^D(x!٦$؂;; S;7d㰧t+4g۝mN"GMHD\0.%9|匚!_B#;TՉ5L)S{ #l,MF],~+́ҵ1išm6_PKDStѩ% ppt/slides/_rels/slide6.xml.rels 0_%ݤ H^D(x!٦$؂;; S;7d㰧t+4g۝mN"GMHD\0.%9|匚!_B#;TՉ5L)S{ #l,MF],~+́ҵ1išm6_PKDSplI ppt/slides/_rels/slide7.xml.rels0Dٻ-pPc\ 'h6m1֋Bǝygߑ:ji*B~_!:|'D{mvǘ-ScQMm\/B]ìw ˒d4晤8J_M]+G#uX`Shck0ptL+ehw+O-釋pxPKDS Cppt/notesSlides/notesSlide1.xmlTmo0+S5 Tb`Eul6 6'ntC/wyd_qcڔR*DcNEBZf&1.U!&)XE͕TL/:'HEKx}I̲2asl+&ьS TES) oJrܒOlZ3V}jv/vKHЊ#xs~/v~E@% > 3E&sR|=w:)Ν'mI foYx2Xќ% +$OF'- dj@ #mVMb7yM^)7ك܆U97kQ[O}BТ]*KڍLr;QB\:4Ʈ3S>u3+E)RnY#lR ?v.JhéxEƵ6B=J c$'hc4ڒ/<|{jZwu|pK##߶TCmCӚp>a7 fmzpػMMx;emo'3/%L{ 犴/ioPKDS|*ppt/notesSlides/_rels/notesSlide1.xml.rels 0_%ݤ"tQ (bwfanvH; %/Ӿ1p>f+7rzGZ=ZEti}*1v"(}QyQ,DfoN}[]8!h0 f& LL)YtP0|P&F<PKDS۴v?!ppt/slideMasters/slideMaster1.xml[n6~AJ/:E{A%҅t&[g{}R%;m\ D53}3~]Q2DۦAX[N_f]1.ip^`OTblYe. Yp˗VhE-Ƕk3f_pR&u)(ɓ$4+U)*e)i,e͊YF\#<sZcZxb1~^;=%~&p#8Q* X'V3)F.JNғ.+Nly1/SX٧Knd mJI-WݳehX&&|%`TVYNU+"ˆި]j ,WLPb\R41*jPyt],*T ވTf"5ĝt͍ej7s)!Zw̄l] +C6 TpVYOJܞO0 n?t`xnFdozS~&>0ZITPPǨ+~SX a_m9͢kCA[9F)HB_bmqEFz-5pXjGW*oL]T<ت t㺡/>^x_#JR vSVn2ΜD9 Jn=@sΫ4㇫tQ9\ҙ%*4XpOBDC7)+.=:qLIZjP$C%ԙTM7& iUfoq* rFe kF,ЮubSn`EUUY[Z^-˶N}n5~Y9p$d.7\PDzZV3|~0%qCm"UjǨsY;jH#oN3 ~pvj0V`He-&`AewPC7p|M8<M9^/V506O"Gidz0&xy 9fu"Ҭ4)1ާ*Rs^-v9N(i #%@5-o:cSSǙ`g;Nah=t{-4tiy8TE_绯_ob5VsQ"uì{W=u{dA5-G@wӟP-H=Dl# |ŇXVOu„ZY} {-aIgᎱQK'촄}nK'쵄}~KxO8h -mgdnaО5ĠmjϋA{h-׏[{C"M4r%A(+U[>37'bΝ`gZl EBu/)~^%Z(QUDUk}[$MZ<^?AvȳN %xM8SJ2EwrvkׇzsFi]6=0x[zPso\VR}#'*f ׹ryF}vHy6x4Z@B'ܭZH}me׆HGn"%w_Ev{S+P/OPKDSjA/ ,ppt/slideMasters/_rels/slideMaster1.xml.relsAk0r1Zj{NA$XBwQh:Eˏ?5I6t<xB\{=y_1}N_0* L|Z7o]'&UDp|9SSpvVP$~ ?)O\ymkxe`9ir n.*͹M}E"iEѶ$/[ NÅ$8FS eېt$ .R\h%U2LLmCiMѨDJχ&XPKDSbR[Content_Types].xml͘r0_J4Hګ2CaN0 aW<:[q΋a.M%|?>|\7ڂh|h?3( cA8%nά(9F#h`OFw0/Oݥ<5ƹ@f({"Wz7xF+(w{RX=Afmm?s^8!M`)Lq;l&K  %Ip(a˻+|M,dw;]EO.Rz"ԇ>u"ԧRNJyΓtu$}'i;wᑪ~#1t.}ʄ<}KlP[{7‡W-~0u gI^쇰js+p{b}krѨWɄ{Hn JŸ(qq0!NU BS!)nT2Aqʖӎc;Γb/2'PKDSp۴"OdocProps/core.xml]o J} lŋ-^d.[vGB Uhu&>Q-~т lo#ZJ:&[ouࣆ6t5AP$¦pz#b*;!b$d DDn2RI}3ЀW67nÐ!'w1cu]4Ou=56Da% ^)ɢ u O }$=z!VpZMu9ٙy1=l9%9y'VF_67WIO0ķPKDScDXdocProps/custom.xmlKo  N4n;9na `4KG\M6xxF wd׭|I!dT>+| YȾ(SHn d>;r>g?539}kXx_ u5 ߊT [17ۉ'FfLМ%Cj%eVBԒޯƕ PKDSQ _rels/.relsN!_̽˶5Ƙ^Lތ@`vX`LM}{Ԛ#7?);97-(L.z6 T@jKb=jnhɄtD+uYzMֽmuj ^.8|1Ʌ#~5ٖh*ȵ8MM/-7{ZQbgTjw-{eIm$-z|;CwLjdp]@:Nn4B ءj'miZhSXm^-EӰ E57^Atjj0OVÈ\VL")rbI1*fSyH«XDR̽ . g G3w7 zy {')7EN8qEAƮuNa^Qmώ٦cg!R>c#_PKDS8|^f$ppt/viewProps.xml]O0{ f 7\0onY?v0Cwz]W^ɞ['*|+Pu>׻%ڬW& ~x t+5ޛcG.i*m%3K"[H K":ϛ[+OaLɟjYF<ڼ\emKYUG =%n(8Ѧ'XY̠ JZ+=`fPK!:պ!ppt/notesMasters/notesMaster1.xmlXێ6}/Bэ؈7dM7@K-TvvSo/"}ٺE Ch<_ܖZ3϶˪`f䤶rL+Fzig?J5nxaMuulNJ[In- 1s2kߑU䷀`3Rn0ٓog]m%9o8!Rb\fu'-K@X:PLܽ3#픗 XC;JV*6}6_<`ܭE?N`rMqFH7U-Up8E{ֵE |sKws`Ǟs)a :z(J49>ּ/IUZRٜdB1њv+nU~'-' `m^gw|`i^P·G&;#+>mXQaY 5U$b>\J[ZḵF9zfNgN8#BÈs,c!ofB(|\~? Ñ_ . $ls1pݢ(ɨ-9yl{R )l}qq |v4ؼDcZĺ,l һJhi8M~SnCr(PQ起!q^~1|G-ϘAR( `.[Vi L/Ɔ_H{Y. #Iv?-kJ#ЋGi{j-dd!٭- ;I!-%*䅰t+$,tlT8vVQ7*cU,(YzG&x3/aw8\AǎDᨪmat0rB1}1oq'Iod01|pg\- tNNC?O0"9_W$;_|zN.\%/ A'hNGq䌢 ËOnƉ{\c{=xTS,J|quU&N-jk6+BU2_ښ|~)_4RH] u ,#L&0Mh4 AFMd4bN ,ö}*f󫖿:Y<ԌoYLbPd W" 6^oC˶{)~ *bO!_KP X7ѾF 4*OhP4>  mďOT4@@i (i,$'*d FEn蜒 Pg 8JNIzJGn^4m;/PK!ocB ppt/media/image1.pngPNG  IHDRLDgAMA abKGD1 IDATxAC2 `vG~?y>O3Ϸ 0000f0S VPPPPpVs 0|     YYA@       q@ VPPPP0 0k 0|     q@@@GXPPP0 `  8     0 07`(`(`CP   VPPp ހ `@     )`x +h(`(`(`8 >CP0 #,(`(`(`(`*`8g +h(`(`(`(`(`(`8+hXA@@@@@@@@@@@ ` +h(`(`(`(`(`(`8+hXA@@@@@@@@@47`(`(`(`(`s > 8  #,(`(`(`CP    VUpN@000 `XA@@@@@!(`x +h(`(`8 o0 `    Y 0@@@4000 a@@@@@@@@@@@!(`0000f040000004      `@` )`      040000 `XA@!(`x +h8 oPP0 `  Y 0@@@@@@@407`(`CP  VPPUpN@0 `XA@@@@@@@@@!(`x +h(`(`(`(`8+hXA@@@@@@@@@@@`V9 >CP0 #,(`(`(`(`(`p VPPPPP?`XA@      0f      `@!(`    0 07`(`(`(`(`CP   VPPp ހ   `@   )`x +h(`(`(`8 oP0 `    8  `@GXPPPPUpN@0 `XA@@@@@@@@@!XA@       q@ VPPPPP?`XA@       q@ VPPPP0 ` 8      0f    `@  q@@@0000 `XA@@@!(`x +h(`(`*`8   ?$++%tEXtdate:create2021-05-29T17:44:55+00:00o%tEXtdate:modify2021-05-29T17:44:55+00:008IENDB`PK!ppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ{}MSY a¤LrC PK!{C] ppt/theme/theme2.xmlY͋7? sw5'c;d7YkPa0J{}SYנdzZ2at oްY[3T9]|"b-Fw@;I8r14\(9%a7C 0\U:|?OGyrHl )>q2*husϞ=ߟ?z˹vP^??|ۏkNjYǝ?NЌgOLhtܑ\]2ˌ G"JaQHJbhq֚j(vӳ;O&x$ F.f*|޼3ؿ}q_wf8WW/__x@X 3?yDMݛdՒ6K'JO#TqH湏h7vh .kph7 /'a|巩GiɱVaf ɂ -5/f-a4r6ɷTRb?yXR)6FaG9"E[4f (\, a *j9(,鎬[<7RSiT o`kg\ 8zNW`Mp Uk:r?, s؉(Yz5<Ⲫя|%uu1b|b]|ZZaMJ )$paZvrnuY;˶CdO6"? '\$,n:M'l, U]7Ĝ=+~{ |=}1q0+8d` $1sMݷƮZSjz KC9uU+tK*mӊO;a.zjn{O*l'.t*uc:qlfO/e2g?GG|/>?ʷM{4:. "Tj؃ej\wB FwPK!F/ "ppt/slideLayouts/slideLayout16.xmlVn0w4JQPIAMƪc{aiR_k{>Ɏt7OsOs&Di*x˫"< 7-j3I˛߿;M͒3<c&ny1:HÿT Q`,a=1|fHS9QaJ]mФ"`ՐLB@M=f*^R,A01/`LcЈL3r=>P[}1(D6Gko.nNSXAӖ7sx9gltuP:8Y=NZSRYdUƫ噈o5-,m+B튟 fNdf\C&qi343F@ڏ CA 'ܿvHB :b 1Bx2 ^C UE\ŕBc @P]0kyPv@Q.?n{ 6KKՄ-bX"zEu/. I,`22!l Dӈ ce-iJ:*K YdGk+9,-ku'gF G=ݰGQ7?lB_9ua/ltwG{cIM+AxP|0Rv=UkI*: GI*R# 5 $PPKh4 k2qA1t۰5@ykضtv"n/NM+䄜\p0P0 MfŪl"=)A$5<Iu(4 n'o b#;YO Raħai "W*>\IEu׆Y:dI,]˜#;`!)C$T\SIz"bfVfC1W1$z% B*]hj^ ZrL#Ơ_h,)Àq&L>_: >T {p7AwΗۀQBb趽Q?g=ZlB%VK0%PFf'4qVf2Ie),9D5Tϰ 6*Q0GpA0 JX{.XXU: ,Ʈ{,*aG#<8c`V 6 UX%H~XU7 ʌZDeG)TUvSPp]ϑ5Eơ4ae&@]tX}Sf [1z8$s1RS$x#͇$ujh3yԇ vKr } ,Dgigaي!26nU'w4SK$YHTJyM0', IY6M1ڵ5pa!ŷO"_V~K|U~*[x]19w3|~?⑟&I ۯրԭ8w֠G@#s{k1c{yd%q]WS!.cju@[-Xi: ?Qp뎣~[./ia)v\9Lv/s2G/s2G/s2>^M/ʌO(3ߵa=Q(G2ȱ ctz9z9집9uˇ9!{9z9zˋ:GQ/3^)3ߵ1zFC)PZn/-m">>LQb (X-X^M 20\18[a9?(骈bZ۷"7cFIR'H &rx4MU; y %@= 1d0ќ"RRU^v",;#ף63xz/u> $};\zDZ+?|O>?*3(_bٍ+ef¨{PK!bګb%"ppt/slideLayouts/slideLayout14.xmlZn6?`@h]=hR$v<H`IX(uI{I}q$#$_;ZhΕ9mь š_9bERYqsh" IE`֛z]Hѻr(=&JU- ˩|UVƥȩ_ō ιM'sV_l dB qrUEAvwL[#mlrST\O_i^cfT~Uu)`R,5ۛmhbvHn"7Wm8=t|̧mحBI=,fɻ5kv+^j[cs)*,2 QQj}ZM42Pͺ& ڬuEF:``N,0b~޷Iޙ#}.Օ TZ:,TX)tNbei#Wt@aEzIJ3Sz 14aZE{,-8xa ID d8ؿ$(a@Pz!Z$Rs2Eydk` V/kA2Bڽ|b%WS S0AU0M(% zkq5!(~V~nsRM*SؤZ-ds- 20ӛn|g̋aC8@M/,y'xgxcs۷?g|gXm{F$v\` 5@ߎоB%ZYZ}+ow -G b U;i#C-c#D~x'ǽ4q~x*MUYgHvb8/e60ò4A|XۣݻVLCjLF/_Y4so'zγ Fq=M `x<;??X^hg&"_>˗wp(2~299]i\Xb0WPK!;ĴP "ppt/slideLayouts/slideLayout13.xmlݎ6+,z~MVdSU53C&*kOs $M̴7`s>?]-uVA_Y"*Lnlz 8_'.1ĤSMMd_6L]z:H*[YM9Q)'vz]`ysr)ODxg#/Uz#Z#g\XZj\ͭ==`ݹ >E+_ߚ~p;V ~xڐE@PK!R "ppt/slideLayouts/slideLayout12.xmlZn6w kג,KrФ(Yb״D[BQtd{>9lu['qۋ9E~<~y]= FJ Pfkuc~R[<=`OmYfJ?Eppj)6//iH\-P|Wu9U,+Ӎ-GeuUqh(f*lɛmy&OWKIlȜ]ò@ZT:O 4 *ė,ⰡBF-L2M&rE߯͜/M&,nfFX61 $fSP70q7ShsZ [IRt%nk16"c+v譥ncks\|6>ߪ U~P>4V|h"[% C?ܦ`%^3f-4kHiWP;oFm1;fcv6EyDHJѮ@^}gjͭvM [ gʨ pL:_5__6T ]z:WHϷ*[YM)#k%:.8ܶayt>ס[97tw5*簺s9 0f?~W|ui1+$5iab^f7S*ӆ7AFiPK!]"ppt/slideLayouts/slideLayout10.xml6W;Xo6 eV UYTf㤶aU}qI$002t`9|.9?sV`~gH2'@Bb`Z0206D}y%hr7R"` T4EwEIz7/xz 3bt,+0s1O_YLE _Y)Zy D(UI+em\+cMùbVpg1f\rd2E#\FK=r5a5(KZ ~QGso*wPQ cd-Q\ ƻ8x@6NoHfkQR9Ncc&)A֪F_QgX+Ж)R$j9QM =ؖoU[}M\f?VYj>UL*Ln(k2] ?vTM @5=Iù#iV!G4?#Y dc! G9`*j as a(ɸlŷԖ6j_ۄSc4Q8\FR EIby(PC޲Q9:6 c~UcHW6:; uω<:n=MЛzMv4߄V8F2Uf9/=v̶vhZ};:4}khWcZ +_vL3)Asmcg4KzXO{wWDzY ;$=Ϻ{pxndP6Bmw9igra4A!v.RN'B&k2aā3!rcã3!Hb?j%^ L %TUURW(zmQ&yI󷼱{PrC[x:} R 0/A;"-"0t"-ieD{( R-WEZWXh-?NN_c4%8 h6+8cy)U; M-A*D33&\%PWWP Y]Wui5i頛{{=O.BlVZaNjw#R(݅xoGmˣ!a`A}9Y1!867AXIVg R",رaxw/o#ɓs)hF!豑*USSX["Jf"ιXV`4+f2\,MxB8UfliZ%T:ALtm9OHAs1) KR2FVׂ1hE5\] %jИb ۶I Sg ->MckE3z8=cmI!ڹ8m8יۨZeu^Ɵ%)J_cg6Wj97;CPkw:ֱځe5krudoSGJ8-B\pW=[G@7' Nabi^ϡN&!ppt/slideLayouts/slideLayout7.xmlUIn0uh ˊibhP$KҮݢ@'''%NY{妢hM*99 Raܾ,Ô32rD9.PoJ#Bk1< _e5,僗I rW }UdN/LIUEHBUQ fo&$QFlIo]Rd 3f 0F%$!fX7Defbk~4nvv hxeeFmF(5_F6{kZM#^[;(jP 'l$X48%(l[W⚧ 1 5ҝG ߌh4l "ݠnu} zlk.aFPEX-,tZafkPZ|]a Zyc[{/0PR%A (ڸEleFͪZs z^Gt0]7s7$'~w6Ifp; g1}^ly~Iw0a3k9\Ԛ<6 {}PK!/R!ppt/slideLayouts/slideLayout6.xmlVn0w5PIԤJJ2MO)l'K6Mkm'ٱ$2n9>w*D;g%{8wS 10 5Q3W4k|0Z=OapsYa $+{.C hRFҮb@_k{>_O]IƢ(/VCK*dK ?s,D˄yywib IEʔ0^KJ?=.$K=_(1JyA.L¶eтg~6 Jߊ;;.:Nh$/f貟yBo{u'q?09c' Ɠ ?;6|/_>'.ǩAW&^|^@aTw7K F?PK!yd!ppt/slideLayouts/slideLayout4.xmlW[0GbV&}u@H3eęn!-X+vvZLa _ĉ{ν$`,;L=OݎB4EQwX:==Isf 4=wrxdɧc2&JRn4vIcDu,ˊY(1U) .4~ Xjz%:Zu.9K=PT #FC._>®xH BzK-n^QoҴ ;ZyzHdۛ&l12j9 g^(D+9KK@DŽ_QlZ7z^5h_dKȕnm'fjMa_LVc꾝U{i+$iQ !bQ0M/@o@ZuBn=n~bذX$(9#v'x.D2G[Zm'). J 8v-(qF0aO h͸axI6笄rGJ}+ph ^brny^l!T~4b";*uW%XNV Vߪ8NJn\PWJx@%DM%;e`}&*秭$nOH&OiFn (jd4q!<M'PUQbsړD[nA `,&n2f 4Pi2%*m>,yٺOu&Ry!* !o7HbzQ^^}qgKA0tcEnk8]x:ѦjCQOv̷Mu1< nxr^ڍedՔov8PK!J0!ppt/slideLayouts/slideLayout3.xmlXn6w A$N6 mŮiRlO?)7KlX."珔_ZלUیdm^5M"mrۆ&W~;<7Rh ;R` Th;5U0A.' xPӪq~mQTٲf2 q~YVѺuI&,!((V;{69ih 3D 2oe^0Gͺkެr b7;ŠY`pkғu!jh؁֊df1ۮfYyy@z+(^gx+6(Iӂ?}F]iC)hVԼ֞H0eơqay_?ptkݝysxh&+[(ZhlڢRЯT3uWpB֜`Iڲ9CvqӊsRjchϕ*g%!ӥ J*3 ]+0bt' .Ȋr0|mveZ:ƃ8r |q0L, ."h0=[Qv@&|؀񪁤v qU;hwg(`%21+OdΗ04`^I ;t52GWʻX'چ#.Sޕ,U+A8۳U3g-W T}_re1La֭sa (acaf#vz#Q-ayk*'р a55T.۴oO)*)js\ Kv˓jqV J=z?j*&#5_ B[wKsHˏi{{D <'t ħ!=LIWcǰߣI(¹Skp `3Z,nM=Ow50~,޴ր;NTp;R<(ր;NBGak@n5r-h;s鈔9_aJNbl9|֐sr0h%Eb[zd'9b` &^> t'܍/s7ga(>UUD{)hWu'oM 7P嘛_T>=pyLzkUVQ%#U|*gͲ /޷'F\gILQyg z/Mg(4Ԟ7`ݡXg?g||Ltg\ƼFVj6[ u7PK!n* !ppt/slideLayouts/slideLayout2.xmlVn0?i`e BELzA>I&c{aiR_k{>Ɏ cSı}}rv(ZR:Nwa!Rvqn# 10tQy3V4+>0j㎓h-ڞ„dXpA\fXCWy_;^/)s<Ӑ x89$k_%P%8MHƮIOFr݊F :ϙ$kTb1vb,QbvߕefZ-;le#K|0܌0JUt%\ʚU6 Rl 0vk}HsDT+4#X¢1RH(lex^ߟU<-U,J )IiT_i-7&GS .הUWmɛ F 9lCJh|qpӿ\`iVkUVHmNnLc<֣m a9l kAj߭4j}wѬiL@Tust֛Aw+ omRl_3121#{[I/MMes,C#*ϕNRf鄠RONht=f;֏!/<z: ܚQwkm6`z~0gݾl l2ϣVmGqb <K xaoL FbPK!:~/!ppt/slideLayouts/slideLayout1.xmlXn6w $:uI-vMK:{À8}I8Ydn,珔_YU,eSVMVä;D*Zg759k&7=2pU3^~{+G1ZoUzQMKieb.1ձ%RCcn~[P˕<(%1 FrtU|wrfw‹ߏϾ( F\g^±O$A+iܱNƓ37n@jkP~ jnu_?|v>̟':SO.hnR[s:PK!xm:KdocProps/app.xmlTQo0~`M(ڐqUƆDh>B:e{4hR7^ݗ/;ӛR=8/D$"3#MM:\ >a?Е3\ Jh?8}V@%5VrJ0t`f%_%(Z`(_Eɪ]zh U<Ku2~>Ѽ>|4ϔ;s ѵ^en>Ѕ铘.S%m]h!]g\c9WPKj6V\:dxY0xc-P>ICКƃqa:}JlRxڵ}$AOA#SO?g 7iUM['׌u9[yv7޴\SSZ)' c$>7ZWS8иeoR?MͬZㄞ& w @ӂP]s72_mZb/PKDS= ppt/slides/slide1.xmlPKDS)G) 'ppt/slides/slide2.xmlPKDSBppt/slides/slide3.xmlPKDS[p  ppt/slides/slide4.xmlPKDSj  ppt/slides/slide5.xmlPKDSG: Etppt/slides/slide6.xmlPKDS6_/ppt/slides/slide7.xmlPKDSP*% ppt/slides/_rels/slide1.xml.relsPKDS% ppt/slides/_rels/slide2.xml.relsPKDSҋ6% ppt/slides/_rels/slide3.xml.relsPKDS6У% vppt/slides/_rels/slide4.xml.relsPKDSzwft% ]ppt/slides/_rels/slide5.xml.relsPKDStѩ% Dppt/slides/_rels/slide6.xml.relsPKDSplI +ppt/slides/_rels/slide7.xml.relsPKDS C)ppt/notesSlides/notesSlide1.xmlPKDS|*ppt/notesSlides/_rels/notesSlide1.xml.relsPKDS۴v?! ppt/slideMasters/slideMaster1.xmlPKDSjA/ ,(ppt/slideMasters/_rels/slideMaster1.xml.relsPKDSbRC*[Content_Types].xmlPKDSp۴"Oq,docProps/core.xmlPKDScDX-docProps/custom.xmlPKDSQ ._rels/.relsPKDSUòj/ppt/presentation.xmlPKDSGKr)2ppt/_rels/presentation.xml.relsPKDS8|^f$+4ppt/viewProps.xmlPK-!X$,5ppt/notesMasters/_rels/notesMaster1.xml.relsPK-!:պ!6ppt/notesMasters/notesMaster1.xmlPK-!ocB <ppt/media/image1.pngPK-!Fppt/tableStyles.xmlPK-! 0Gppt/presProps.xmlPK-!{C] HIppt/theme/theme2.xmlPK-!:~"T>Pppt/theme/theme1.xmlPK-!ђ7,UVppt/slideLayouts/_rels/slideLayout7.xml.relsPK-!ђ7,[Wppt/slideLayouts/_rels/slideLayout6.xml.relsPK-!ђ7,aXppt/slideLayouts/_rels/slideLayout5.xml.relsPK-!ђ7,gYppt/slideLayouts/_rels/slideLayout4.xml.relsPK-!ђ7,mZppt/slideLayouts/_rels/slideLayout3.xml.relsPK-!ђ7,s[ppt/slideLayouts/_rels/slideLayout2.xml.relsPK-!ђ7,y\ppt/slideLayouts/_rels/slideLayout1.xml.relsPK-!ђ7,]ppt/slideLayouts/_rels/slideLayout8.xml.relsPK-!ђ7,^ppt/slideLayouts/_rels/slideLayout9.xml.relsPK-!ђ7-_ppt/slideLayouts/_rels/slideLayout14.xml.relsPK-!ђ7-`ppt/slideLayouts/_rels/slideLayout13.xml.relsPK-!ђ7-appt/slideLayouts/_rels/slideLayout15.xml.relsPK-!ђ7-bppt/slideLayouts/_rels/slideLayout10.xml.relsPK-!ђ7-cppt/slideLayouts/_rels/slideLayout12.xml.relsPK-!ђ7-dppt/slideLayouts/_rels/slideLayout11.xml.relsPK-!ђ7-eppt/slideLayouts/_rels/slideLayout17.xml.relsPK-!ђ7-fppt/slideLayouts/_rels/slideLayout16.xml.relsPK-!-P| "gppt/slideLayouts/slideLayout17.xmlPK-!F/ "kppt/slideLayouts/slideLayout16.xmlPK-!|PK;"oppt/slideLayouts/slideLayout15.xmlPK-!bګb%"uppt/slideLayouts/slideLayout14.xmlPK-!;ĴP "{ppt/slideLayouts/slideLayout13.xmlPK-!R "ppt/slideLayouts/slideLayout12.xmlPK-! Ux "ppt/slideLayouts/slideLayout11.xmlPK-!]"8ppt/slideLayouts/slideLayout10.xmlPK-!!Jppt/slideLayouts/slideLayout9.xmlPK-!+ΐ!hppt/slideLayouts/slideLayout8.xmlPK-!g>!vppt/slideLayouts/slideLayout7.xmlPK-!/R!Zppt/slideLayouts/slideLayout6.xmlPK-!rm_!gppt/slideLayouts/slideLayout5.xmlPK-!yd!ppt/slideLayouts/slideLayout4.xmlPK-!J0!ppt/slideLayouts/slideLayout3.xmlPK-!n* !,ppt/slideLayouts/slideLayout2.xmlPK-!:~/!ppt/slideLayouts/slideLayout1.xmlPK-!xm:KdocProps/app.xmlPKCCkpandoc-3.1.3/test/pptx/footer/higher-slide-number/reference.pptx0000644000000000000000000013767207346545000023150 0ustar0000000000000000PK!`[Content_Types].xml (̘QO0ߑ"Nk tC`ʒM`+c ީq[Rw+ybPK!ht _rels/.rels (J1!}7*"loDc2HҾaa-?$Yon ^AX+xn 278O a\^hD.Cy1BYz |t!9rL߰'~20(H[s=D[:b4(uHL'ebK9U!ZW{h^MhwuV};G缦oYDS7t}N!3yCaFr3PK!c\#7 ppt/slides/_rels/slide1.xml.relsϽj0=wW;,e)C>!mQ[:o1tx_?],(AC+lt>~n_'\08c 1\ۡҌ0JhA1Q!K-_I}4QgӐ{ׂm^0xKѮ O;-G*|ZY#@N5PK!F% ppt/slides/slide1.xml̖n8wtψQqQhՁKҮ"$%iYƤ)p#{;@ham+h[tƺD%$jҍ]T[ Vdmd+ՎD\Y3H95'_׾s\'`%cӴjANN8T]⍽T(7jzSg6솛ǟ7jk/Hb;y;nձ6븶UQZմXWgVrPj wsʎZjWcQ'yf=%rUIn[frgΗAϞp 6LE!wԒ;j5vgfkZt?qQnCuS#'Q] Aܢ,L$BύPS9{p r-8NDD0(L`Z%TtρcM1i꼋6,3,{Kl(,Ju .$e0(ɼBs~ʑZ|GlJ9[}ҁt@s&^j֪`QgfiH-ZPK!?-gppt/_rels/presentation.xml.rels (J0nӮl mm0MBWUk,Cg?!g/Z1(JB ^@R+d0uy~zF}r0tޛ;J]a] phsJRë7"]ʉ' 즾 [7^W=* GȝGlm3IGnRby"qdIQ¡Qg(C/)'XˤK Q6[eNɰd(A\0(BP~PK!=Ak@ ppt/presentation.xmln0',NTM;I5x4FiM{hZM}b|/sW =SJS]L0<ESp9 FJ^&8M*|iQkIhE9INz*ъ QS0n! O&[c/?/27"o*ؾK")ku]Yc#نOZҶJoXYПM#hq-*ex@CQŭg+,R{4L8rnVawp BS>I`_;-Q<"(CQ @eI{cݎkɫ[0}Oz.ĬҎ1b*raӪgSykx#ZFsO~m~8]jֺPrW cdj)v6 yҼ&+SNIL`73vW5<~Η;LO2@Igՙ!W=;=h@|OW#|`## (JU?2T,I~F@4xFX@I h6G>Qi;׷-f=eaY*[AL sB9 |Md&WM?E@I /zs\ %"xe{=Bؠ۪s__PK!ђ7-ppt/slideLayouts/_rels/slideLayout16.xml.relsϽ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ2pU3^~{+G1ZoUzQMKieb.1ձ%RCcn~[P˕<(%1 FrtU|wrfw‹ߏϾ( F\g^±O$A+iܱNƓ37n@jkP~ jnu_?|v>̟':SO.hnR[s:PK!n* !ppt/slideLayouts/slideLayout2.xmlVn0?i`e BELzA>I&c{aiR_k{>Ɏ cSı}}rv(ZR:Nwa!Rvqn# 10tQy3V4+>0j㎓h-ڞ„dXpA\fXCWy_;^/)s<Ӑ x89$k_%P%8MHƮIOFr݊F :ϙ$kTb1vb,QbvߕefZ-;le#K|0܌0JUt%\ʚU6 Rl 0vk}HsDT+4#X¢1RH(lex^ߟU<-U,J )IiT_i-7&GS .הUWmɛ F 9lCJh|qpӿ\`iVkUVHmNnLc<֣m a9l kAj߭4j}wѬiL@Tust֛Aw+ omRl_3121#{[I/MMes,C#*ϕNRf鄠RONht=f;֏!/<z: ܚQwkm6`z~0gݾl l2ϣVmGqb <K xaoL FbPK!J0!ppt/slideLayouts/slideLayout3.xmlXn6w A$N6 mŮiRlO?)7KlX."珔_ZלUیdm^5M"mrۆ&W~;<7Rh ;R` Th;5U0A.' xPӪq~mQTٲf2 q~YVѺuI&,!((V;{69ih 3D 2oe^0Gͺkެr b7;ŠY`pkғu!jh؁֊df1ۮfYyy@z+(^gx+6(Iӂ?}F]iC)hVԼ֞H0eơqay_?ptkݝysxh&+[(ZhlڢRЯT3uWpB֜`Iڲ9CvqӊsRjchϕ*g%!ӥ J*3 ]+0bt' .Ȋr0|mveZ:ƃ8r |q0L, ."h0=[Qv@&|؀񪁤v qU;hwg(`%21+OdΗ04`^I ;t52GWʻX'چ#.Sޕ,U+A8۳U3g-W T}_re1La֭sa (acaf#vz#Q-ayk*'р a55T.۴oO)*)js\ Kv˓jqV J=z?j*&#5_ B[wKsHˏi{{D <'t ħ!=LIWcǰߣI(¹Skp `3Z,nM=Ow50~,޴ր;NTp;R<(ր;NBGak@n5r-h;s鈔9_aJNbl9|֐sr0h%Eb[zd'9b` &^> t'܍/s7ga(>UUD{)hWu'oM 7P嘛_T>=pyLzkUVQ%#U|*gͲ /޷'F\gILQyg z/Mg(4Ԟ7`ݡXg?g||Ltg\ƼFVj6[ u7PK!yd!ppt/slideLayouts/slideLayout4.xmlW[0GbV&}u@H3eęn!-X+vvZLa _ĉ{ν$`,;L=OݎB4EQwX:==Isf 4=wrxdɧc2&JRn4vIcDu,ˊY(1U) .4~ Xjz%:Zu.9K=PT #FC._>®xH BzK-n^QoҴ ;ZyzHdۛ&l12j9 g^(D+9KK@DŽ_QlZ7z^5h_dKȕnm'fjMa_LVc꾝U{i+$iQ !bQ0M/@o@ZuBn=n~bذX$(9#v'x.D2G[Zm'). J 8v-(qF0aO h͸axI6笄rGJ}+ph ^brny^l!T~4b";*uW%XNV Vߪ8NJn\PWJx@%DM%;e`}&*秭$nOH&OiFn (jd4q!<M'PUQbsړD[nA `,&n2f 4Pi2%*m>,yٺOu&Ry!* !o7HbzQ^^}qgKA0tcEnk8]x:ѦjCQOv̷Mu1< nxr^ڍedՔov8PK!rm_!ppt/slideLayouts/slideLayout5.xmlYn6w kW>C hRFҮb@_k{>_O]IƢ(/VCK*dK ?s,D˄yywib IEʔ0^KJ?=.$K=_(1JyA.L¶eтg~6 Jߊ;;.:Nh$/f貟yBo{u'q?09c' Ɠ ?;6|/_>'.ǩAW&^|^@aTw7K F?PK!/R!ppt/slideLayouts/slideLayout6.xmlVn0w5PIԤJJ2MO)l'K6Mkm'ٱ$2n9>w*D;g%{8wS 10 5Q3W4k|0Z=OapsYa $+{.!ppt/slideLayouts/slideLayout7.xmlUIn0uh ˊibhP$KҮݢ@'''%NY{妢hM*99 Raܾ,Ô32rD9.PoJ#Bk1< _e5,僗I rW }UdN/LIUEHBUQ fo&$QFlIo]Rd 3f 0F%$!fX7Defbk~4nvv hxeeFmF(5_F6{kZM#^[;(jP 'l$X48%(l[W⚧ 1 5ҝG ߌh4l "ݠnu} zlk.aFPEX-,tZafkPZ|]a Zyc[{/0PR%A (ڸEleFͪZs z^Gt0]7s7$'~w6Ifp; g1}^ly~Iw0a3k9\Ԛ<6 {}PK!+ΐ!ppt/slideLayouts/slideLayout8.xmlr6;w ybgtv<0 lCHL^}`A}9Y1!867AXIVg R",رaxw/o#ɓs)hF!豑*USSX["Jf"ιXV`4+f2\,MxB8UfliZ%T:ALtm9OHAs1) KR2FVׂ1hE5\] %jИb ۶I Sg ->MckE3z8=cmI!ڹ8m8יۨZeu^Ɵ%)J_cg6Wj97;CPkw:ֱځe5krudoSGJ8-B\pW=[G@7' Nabi^ϡN&xndP6Bmw9igra4A!v.RN'B&k2aā3!rcã3!Hb?j%^ L %TUURW(zmQ&yI󷼱{PrC[x:} R 0/A;"-"0t"-ieD{( R-WEZWXh-?NN_c4%8 h6+8cy)U; M-A*D33&\%PWWP Y]Wui5i頛{{=O.BlVZaNjw#R(݅xoGmˣ!aUL*Ln(k2] ?vTM @5=Iù#iV!G4?#Y dc! G9`*j as a(ɸlŷԖ6j_ۄSc4Q8\FR EIby(PC޲Q9:6 c~UcHW6:; uω<:n=MЛzMv4߄V8F2Uf9/=v̶vhZ};:4}khWcZ +_vL3)Asmcg4KzXO{wWDzY ;$=Ϻ{p6EyDHJѮ@^}gjͭvM [ gʨ pL:_5__6T ]z:WHϷ*[YM)#k%:.8ܶayt>ס[97tw5*簺s9 0f?~W|ui1+$5iab^f7S*ӆ7AFiPK!R "ppt/slideLayouts/slideLayout12.xmlZn6w kג,KrФ(Yb״D[BQtd{>9lu['qۋ9E~<~y]= FJ Pfkuc~R[<=`OmYfJ?Eppj)6//iH\-P|Wu9U,+Ӎ-GeuUqh(f*lɛmy&OWKIlȜ]ò@ZT:O 4 *ė,ⰡBF-L2M&rE߯͜/M&,nfFX61 $fSP70q7ShsZ [IRt%nk16"c+v譥ncks\|6>ߪ U~P>4V|h"[% C?ܦ`%^3f-4kHiWP;oFm1;fcv?]-uVA_Y"*Lnlz 8_'.1ĤSMMd_6L]z:H*[YM9Q)'vz]`ysr)ODxg#/Uz#Z#g\XZj\ͭ==`ݹ >E+_ߚ~p;V ~xڐE@PK!bګb%"ppt/slideLayouts/slideLayout14.xmlZn6?`@h]=hR$v<H`IX(uI{I}q$#$_;ZhΕ9mь š_9bERYqsh" IE`֛z]Hѻr(=&JU- ˩|UVƥȩ_ō ιM'sV_l dB qrUEAvwL[#mlrST\O_i^cfT~Uu)`R,5ۛmhbvHn"7Wm8=t|̧mحBI=,fɻ5kv+^j[cs)*,2 QQj}ZM42Pͺ& ڬuEF:``N,0b~޷Iޙ#}.Օ TZ:,TX)tNbei#Wt@aEzIJ3Sz 14aZE{,-8xa ID d8ؿ$(a@Pz!Z$Rs2Eydk` V/kA2Bڽ|b%WS S0AU0M(% zkq5!(~V~nsRM*SؤZ-ds- 20ӛn|g̋aC8@M/,y'xgxcs۷?g|gXm{F$v\` 5@ߎоB%ZYZ}+ow -G b U;i#C-c#D~x'ǽ4q~x*MUYgHvb8/e60ò4A|XۣݻVLCjLF/_Y4so'zγ Fq=M `x<;??X^hg&"_>˗wp(2~299]i\Xb0WPK!|PK;"ppt/slideLayouts/slideLayout15.xml[n6w ku4);.$mP5-іV0v ZIF:Yةln,&?1Ck(MN5㙮!i%SP.H&Tg'9 ]Hb$ 9B!0CYD~HyLa!ug(bt&!(+\I _K L:XDXq)[ |go9_lpj}Q(r6,(me$'  =dP[oz~xcZ`0nSy FQUgW>GI*R# 5 $PPKh4 k2qA1t۰5@ykضtv"n/NM+䄜\p0P0 MfŪl"=)A$5<Iu(4 n'o b#;YO Raħai "W*>\IEu׆Y:dI,]˜#;`!)C$T\SIz"bfVfC1W1$z% B*]hj^ ZrL#Ơ_h,)Àq&L>_: >T {p7AwΗۀQBb趽Q?g=ZlB%VK0%PFf'4qVf2Ie),9D5Tϰ 6*Q0GpA0 JX{.XXU: ,Ʈ{,*aG#<8c`V 6 UX%H~XU7 ʌZDeG)TUvSPp]ϑ5Eơ4ae&@]tX}Sf [1z8$s1RS$x#͇$ujh3yԇ vKr } ,Dgigaي!26nU'w4SK$YHTJyM0', IY6M1ڵ5pa!ŷO"_V~K|U~*[x]19w3|~?⑟&I ۯրԭ8w֠G@#s{k1c{yd%q]WS!.cju@[-Xi: ?Qp뎣~[./ia)v\9Lv/s2G/s2G/s2>^M/ʌO(3ߵa=Q(G2ȱ ctz9z9집9uˇ9!{9z9zˋ:GQ/3^)3ߵ1zFC)PZn/-m">>LQb (X-X^M 20\18[a9?(骈bZ۷"7cFIR'H &rx4MU; y %@= 1d0ќ"RRU^v",;#ף63xz/u> $};\zDZ+?|O>?*3(_bٍ+ef¨{PK!F/ "ppt/slideLayouts/slideLayout16.xmlVn0w4JQPIAMƪc{aiR_k{>Ɏt7OsOs&Di*x˫"< 7-j3I˛߿;M͒3<c&ny1:HÿT Q`,a=1|fHS9QaJ]mФ"`ՐLB@M=f*^R,A01/`LcЈL3r=>P[}1(D6Gko.nNSXAӖ7sx9gltuP:8Y=NZSRYdUƫ噈o5-,m+B튟 fNdf\C&qi343F@ڏ CA 'ܿvHB :b 1Bx2 ^C UE\ŕBc @P]0kyPv@Q.?n{ 6KKՄ-bX"zEu/. I,`22!l Dӈ ce-iJ:*K YdGk+9,-ku'gF G=ݰGQ7?lB_9ua/ltwG{cIM+AxP|0Rv=UkI*: 3?yDMݛdՒ6K'JO#TqH湏h7vh .kph7 /'a|巩GiɱVaf ɂ -5/f-a4r6ɷTRb?yXR)6FaG9"E[4f (\, a *j9(,鎬[<7RSiT o`kg\ 8zNW`Mp Uk:r?, s؉(Yz5<Ⲫя|%uu1b|b]|ZZaMJ )$paZvrnuY;˶CdO6"? '\$,n:M'l, U]7Ĝ=+~{ |=}1q0+8d` $1sMݷƮZSjz KC9uU+tK*mӊO;a.zjn{O*l'.t*uc:qlfO/e2g?GG|/>?ʷM{4:. "Tj؃ej\wB FwPK!ђ7-ppt/slideLayouts/_rels/slideLayout11.xml.relsϽ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ5?lX2ꭁMپ۽BB<;=$_.Q_u0(&4 *ĩkŨwՂ42P8l4'[0J {]Ë)XZ>۴M.Pj ,̨+QbPCkJ5zwP6RmF ZQ6R4TVjmEBI-%eKQ-_3juGƱT TɶݑJ?^~PK!/׬*?!ppt/slideMasters/slideMaster1.xml[n^  uI.(K -&[g[Oҙiˎe'" DhHg־~%;^ViML뇁i,̣4[N_nf4*ɲ<Wgݻb\#$/ #lb&R~ by3xI-dWo~T˧8 4+z &*IJVee`3 x:t*RR slew?żOwץFhlF5{ݗq+ĸ'W<_Z FX í4L|@7L IqUqcܤRpZ' ? Uq6tEԍF~!0UzCjl ; hYkY p˱=wvEYɟx21dbw*[CR3+RW uoogC xQI;aa0ZR1N--KQ C1313(,Q VZ7"ŠE:X󨖍TV%VeSUA }'c!kXo?Dj& ynɨB&U,&S!hnD8"v8= z}|0%;u\YxJ\KYq<jsK#O,qhR 1RL !PmJAL]=f܁P3eZ-.A;yLsIZ nȄ1T#"i /LA@VDC" "$58Jo(RS۞#.{>``Ӂ?;Π@6EIff)HQ//UwH 2GV(n-0ZBBkQfFXLjh%GK-qOK<-80b?ݪ9X=k!dؑwTPG#%xlJ: D6/º: C7.x!lĒY%7_;%n6bNCq;1kOHU9_ua<{AU_ noi{6dqO ^4dtL6s^ .XWp;Pp`(R&3J VV\nX_*;.\ x);'j[G^dd6d' 22Rx:<33o3vyf4 `05^gސpaL= Pff<}-g/3U.M0 C!8! k뻐cUȃmFw!!8! [ 9ƹ*b˄~q]'Z'?Jew$LJ雙?g} Zu!tj{; ;69Fz9mHX{Îw+fqI[ϫꏱx_PK!ђ7,ppt/slideLayouts/_rels/slideLayout8.xml.relsϽ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQaLɟjYF<ڼ\emKYUG =%n(8Ѧ'XY̠ JZ+=`fPK!:պ!ppt/notesMasters/notesMaster1.xmlXێ6}/Bэ؈7dM7@K-TvvSo/"}ٺE Ch<_ܖZ3϶˪`f䤶rL+Fzig?J5nxaMuulNJ[In- 1s2kߑU䷀`3Rn0ٓog]m%9o8!Rb\fu'-K@X:PLܽ3#픗 XC;JV*6}6_<`ܭE?N`rMqFH7U-Up8E{ֵE |sKws`Ǟs)a :z(J49>ּ/IUZRٜdB1њv+nU~'-' `m^gw|`i^P·G&;#+>mXQaY 5U$b>\J[ZḵF9zfNgN8#BÈs,c!ofB(|\~? Ñ_ . $ls1pݢ(ɨ-9yl{R )l}qq |v4ؼDcZĺ,l һJhi8M~SnCr(PQ起!q^~1|G-ϘAR( `.[Vi L/Ɔ_H{Y. #Iv?-kJ#ЋGi{j-dd!٭- ;I!-%*䅰t+$,tlT8vVQ7*cU,(YzG&x3/aw8\AǎDᨪmat0rB1}1oq'Iod01|pg\- tNNC?O0"9_W$;_|zN.\%/ A'hNGq䌢 ËOnƉ{\c{=xTS,J|quU&N-jk6+BU2_ښ|~)_4RH] u ,#L&0Mh4 AFMd4bN ,ö}*f󫖿:Y<ԌoYLbPd W" 6^oC˶{)~ *bO!_KP X7ѾF 4*OhP4>  mďOT4@@i (i,$'*d FEn蜒 Pg 8JNIzJGn^4m;/PK ! ; docProps/thumbnail.jpegJFIF``ExifMM*>F(iN``8Photoshop 3.08BIM8BIM%ُ B~" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzC  C  ?yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yys>ee^}}ꏙG@zee^}}ꏙG@zee^}}ꏙG@zee^}}ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zgg^==ꏙG@zgg^==ꏙG@zgg^==ꏙG@zgg^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@ aee^h}ޛڕ1h5G8x֠ 65ZKyqCP0QP0QP0QP0QP0yIcZ>"lr3(Ք(YvpDh'9'C=}+A|U&[R`pRQMv@QB`;4yyy4yyy4yyy4yyy4yyy4mQ*vfKb٘|`O3Ϸ 0000f0S VPPPPpVs 0|     YYA@       q@ VPPPP0 0k 0|     q@@@GXPPP0 `  8     0 07`(`(`CP   VPPp ހ `@     )`x +h(`(`(`8 >CP0 #,(`(`(`(`*`8g +h(`(`(`(`(`(`8+hXA@@@@@@@@@@@ ` +h(`(`(`(`(`(`8+hXA@@@@@@@@@47`(`(`(`(`s > 8  #,(`(`(`CP    VUpN@000 `XA@@@@@!(`x +h(`(`8 o0 `    Y 0@@@4000 a@@@@@@@@@@@!(`0000f040000004      `@` )`      040000 `XA@!(`x +h8 oPP0 `  Y 0@@@@@@@407`(`CP  VPPUpN@0 `XA@@@@@@@@@!(`x +h(`(`(`(`8+hXA@@@@@@@@@@@`V9 >CP0 #,(`(`(`(`(`p VPPPPP?`XA@      0f      `@!(`    0 07`(`(`(`(`CP   VPPp ހ   `@   )`x +h(`(`(`8 oP0 `    8  `@GXPPPPUpN@0 `XA@@@@@@@@@!XA@       q@ VPPPPP?`XA@       q@ VPPPP0 ` 8      0f    `@  q@@@0000 `XA@@@!(`x +h(`(`*`8   ?$++%tEXtdate:create2021-05-29T17:44:55+00:00o%tEXtdate:modify2021-05-29T17:44:55+00:008IENDB`PK!:~"Tppt/theme/theme1.xmlYAo6tw-Vlu Y4iiP@IvNeC.KwaN52 EI6i(@"=~|=J}" oۂYL&('F϶`̾'.O` -!]зfb[$7%4\t9\Mq8;̶2 CޫFXe1DžNŅ-Xup'^p€qqo;g7n7BoUFWUӖRy#]7q~g؍:K}X,th0 ltw#ixE{QT6;7j|$lzQg /Aesg\7`na*2%x TPKcBG-("S XHbAF;-gxN[\[N/&(bP6 )y\h/rW>f*|޼3ؿ}q_wf8WW/__x@X kPa0J{}SYנdzZ2at oްY[3T9]|"b-Fw@;I8r14\(9%a7C 0\U:|?OGyrHl )>q2*husϞ=ߟ?z˹vP^??|ۏkNjYǝ?NЌgOLhtܑ\]2ˌ G"JaQHJbhq֚j(vӳ;O&x$ F.{}MSY a¤LrC PK!`/J-ppt/viewProps.xmlRN0#4i DM+ M%׳)ړYl5%rHJx 0J@ɷ|6b30XBpE\A#p`-oD27 7u6qmxRKxr݀ IC-ǕvWsQsd"Ҕ™X+wO K+hD$pWribZc(yγSº|c+;a G9Uop clȢ5Y:vDزrGtDq(JPm7Z7 }`516. 'NRr=v|^+]NHzLn7>PK!ppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ?ߓYsP+%NTW`Z*L X;_v[faoY6q:M%dАcϒ6YAb_ .CUc 龐}~ILjQ~zߧQNx12,uIC.{wx4`Mo~PK!xm:KdocProps/app.xml (TQo0~`M(ڐqUƆDh>B:e{4hR7^ݗ/;ӛR=8/D$"3#MM:\ >a?Е3\ Jh?8}V@%5VrJ0t`f%_%(Z`(_Eɪ]zh U<Ku2~>Ѽ>|4ϔ;s ѵ^en>Ѕ铘.S%m]h!]g\c9WPKj6V\:dxY0xc-P>ICКƃqa:}JlRxڵ}$AOA#SO?g 7iUM['׌u9[yv7޴\SSZ)' c$>7ZWS8иeoR?MͬZㄞ& w @ӂP]s72_mZb/PK-!`[Content_Types].xmlPK-!ht _rels/.relsPK-!c\#7 Rppt/slides/_rels/slide1.xml.relsPK-!F% Pppt/slides/slide1.xmlPK-!?-g2 ppt/_rels/presentation.xml.relsPK-!=Ak@ ppt/presentation.xmlPK-!ђ7-mppt/slideLayouts/_rels/slideLayout16.xml.relsPK-!ђ7-tppt/slideLayouts/_rels/slideLayout17.xml.relsPK-!:~/!{ppt/slideLayouts/slideLayout1.xmlPK-!n* !ppt/slideLayouts/slideLayout2.xmlPK-!J0!Rppt/slideLayouts/slideLayout3.xmlPK-!yd!!ppt/slideLayouts/slideLayout4.xmlPK-!rm_!y%ppt/slideLayouts/slideLayout5.xmlPK-!/R!+ppt/slideLayouts/slideLayout6.xmlPK-!g>!$.ppt/slideLayouts/slideLayout7.xmlPK-!+ΐ!1ppt/slideLayouts/slideLayout8.xmlPK-!!6ppt/slideLayouts/slideLayout9.xmlPK-!]"4;ppt/slideLayouts/slideLayout10.xmlPK-! Ux "F@ppt/slideLayouts/slideLayout11.xmlPK-!R "lDppt/slideLayouts/slideLayout12.xmlPK-!;ĴP "Jppt/slideLayouts/slideLayout13.xmlPK-!bګb%"Nppt/slideLayouts/slideLayout14.xmlPK-!|PK;"Tppt/slideLayouts/slideLayout15.xmlPK-!F/ "y[ppt/slideLayouts/slideLayout16.xmlPK-!-P| "^ppt/slideLayouts/slideLayout17.xmlPK-!ђ7-bppt/slideLayouts/_rels/slideLayout11.xml.relsPK-!ђ7-cppt/slideLayouts/_rels/slideLayout12.xml.relsPK-!ђ7-dppt/slideLayouts/_rels/slideLayout10.xml.relsPK-!ђ7-eppt/slideLayouts/_rels/slideLayout15.xml.relsPK-!ђ7-fppt/slideLayouts/_rels/slideLayout13.xml.relsPK-!ђ7-gppt/slideLayouts/_rels/slideLayout14.xml.relsPK-!ђ7,hppt/slideLayouts/_rels/slideLayout9.xml.relsPK-!E ,ippt/slideMasters/_rels/slideMaster1.xml.relsPK-!/׬*?!zkppt/slideMasters/slideMaster1.xmlPK-!ђ7,sppt/slideLayouts/_rels/slideLayout8.xml.relsPK-!ђ7,tppt/slideLayouts/_rels/slideLayout1.xml.relsPK-!ђ7,uppt/slideLayouts/_rels/slideLayout2.xml.relsPK-!ђ7,vppt/slideLayouts/_rels/slideLayout3.xml.relsPK-!ђ7,wppt/slideLayouts/_rels/slideLayout4.xml.relsPK-!ђ7,xppt/slideLayouts/_rels/slideLayout5.xml.relsPK-!ђ7,yppt/slideLayouts/_rels/slideLayout6.xml.relsPK-!ђ7,zppt/slideLayouts/_rels/slideLayout7.xml.relsPK-!X$,{ppt/notesMasters/_rels/notesMaster1.xml.relsPK-!:պ!|ppt/notesMasters/notesMaster1.xmlPK- ! ; docProps/thumbnail.jpegPK- !ocB ppt/media/image1.pngPK-!:~"Tppt/theme/theme1.xmlPK-!{C] Нppt/theme/theme2.xmlPK-! 0Ƥppt/presProps.xmlPK-!`/J-ppt/viewProps.xmlPK-!-ppt/tableStyles.xmlPK-!Ʊw docProps/core.xmlPK-!xm:KdocProps/app.xmlPK55|(pandoc-3.1.3/test/pptx/footer/0000755000000000000000000000000007346545000014423 5ustar0000000000000000pandoc-3.1.3/test/pptx/footer/input.native0000644000000000000000000000455207346545000017000 0ustar0000000000000000Pandoc (Meta {unMeta = fromList [("author",MetaInlines [Str "Me"]),("date",MetaInlines [Str "14/09/1995"]),("title",MetaInlines [Str "Slides"])]}) [Header 2 ("slide-1",[],[]) [Str "Slide",Space,Str "1"] ,Para [Str "Hello",Space,Str "there"] ,Header 1 ("layouts",[],[]) [Str "Layouts"] ,Header 2 ("slide-3",[],[]) [Str "Slide",Space,Str "3"] ,Para [Str "Does",Space,Str "it",Space,Str "work",Space,Str "on",Space,Str "other",Space,Str "layouts?"] ,Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidth 5.555555555555555e-2) ,(AlignDefault,ColWidth 5.555555555555555e-2)] (TableHead ("",[],[]) []) [(TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "2"]]]])] (TableFoot ("",[],[]) []) ,Header 2 ("slide-4",[],[]) [Str "Slide",Space,Str "4"] ,Div ("",["columns"],[]) [Div ("",["column"],[]) [Para [Str "hello",Space,Str "hello"]] ,Div ("",["column"],[]) [Para [Str "goood",Space,Str "bye"]]] ,Header 2 ("slide-5",[],[]) [Str "Slide",Space,Str "5"] ,Div ("",["columns"],[]) [Div ("",["column"],[]) [Para [Str "Hello",Space,Str "there"] ,Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidth 5.555555555555555e-2) ,(AlignDefault,ColWidth 5.555555555555555e-2)] (TableHead ("",[],[]) []) [(TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "2"]]]])] (TableFoot ("",[],[]) [])] ,Div ("",["column"],[]) [Para [Str "oh",Space,Str "wait"] ,Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidth 5.555555555555555e-2) ,(AlignDefault,ColWidth 5.555555555555555e-2)] (TableHead ("",[],[]) []) [(TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "2"]]]])] (TableFoot ("",[],[]) [])]] ,Header 2 ("section",[],[]) [] ,Div ("",["notes"],[]) [Para [Str "This",Space,Str "is",Space,Str "a",Space,Str "blank",Space,Str "slide:",Space,Str "does",Space,Str "it",Space,Str "have",Space,Str "a",Space,Str "footer?"]]] pandoc-3.1.3/test/pptx/footer/no-title-slide/0000755000000000000000000000000007346545000017254 5ustar0000000000000000pandoc-3.1.3/test/pptx/footer/no-title-slide/output.pptx0000644000000000000000000014613207346545000021540 0ustar0000000000000000PKDSlJCppt/slides/slide1.xmlTˎ ľ8[TNGJ:_f&ͤUYt8{=`0)ePAdġ?_>^ՆAq;kU! w-r=GE-P}}}3B?Ir쩰DS+tLĦnaSGnQWF6 VS#1|ju8~5`kdŵb.)׽<065F7hlt߯I$,+|Hr Wqh%iNThC:`Oʑ|iEV,eV.See|QeVlO \sc7䆕 ;}~ {7> ')i>׮7x 0T J~ݕYres`L^cX;L4w0hYU٢*g ZΝnbL_M^/_qPKDSb&! ppt/slides/slide2.xml͖n0_bSCJ~IMhiSЌ͌%*lp:5`3g盂5U.O<Q$7C2r{T,A`ʫ:R*hAQRkQp+op"pQ0.HΝyE1 E*(WIQfeeVJZ􃔴x_\H<_/$ N :tƮzyC2ؤW6C`oIQ(g8u͞6>>Uճ.s(lUy!oD ȝI-]_ m ΔvhU|QSH:5\Y2`Z-cJs5fFhA< N MU%-I&-ZnS4,J1O66O1TF%}3B  (~B ,ubM3j-N{6>Miwu/܉ߙh6'] Xr)w? BM%|`~' "WpR`ji[?m  ,% S".I/s֕qcC?/PKDSe}:ppt/slides/slide3.xmlVn0}('#P)ӤE}7qJ4l`S8}81ЖjF{97l]pgŤK1p:L$e{s=z+:`*T܅U!,XAIY1{Y) a*P*wpQp8Dͅ۞o9_fYLq"TR[od ܘOR%sյd'Yͫ4ۗtqA 6p];]3fyC_g{.1-Z;I-'C=A^\KT-\s;p6iU]W@[zW Go*phi[Bj:I/ Ac=' 'K 2oo}\oU=Ƃ 3E צR6R|XzxA7RB;Xl2*ĪS͜ [\+V=ȾPKDSAh ppt/slides/slide4.xmlW(~~%qRUfc\L2V#,`{۴pCu dh8l Ѽ"Čۛ͠9Qr ,JTmse5=Z9OE-׶C1%iQTJi0"ͶV{k^anꃔ$lsy`Yaͼgjnu@ r @`~ɪYGue+doӒhA֍f{YuVN[:X2T5! + kީNEredWyXQH}C7s\x҂+;Yt2"V  gũR[ ą% ȿӔT`Ζ j@-WJpm]6?d4fa^>1]:W*'c9Y %4ȜL)52Qhm0jՏCysC|;I|$kHe'$N]H~ ݥb\K۞3J‘39DNxiTTDrFqGס=K*!Q!D80Qql;lFv<2Esg̏u+}DXRN7PKDSMsx ppt/slides/slide5.xml͖n0_bTIIIU-`qdS8}SS|0wuЊ*|G(E]txR+ 0U Lqg Ց()TȂ(hN$. ki^iH˂rU;aVY^V[o1_?I+,1 +IgY˙4DypIAp3mk:~<8{cJ;Z98/L =h`<4?V9/˧4Ot]PKDSYppt/slides/slide7.xmlUn0}M !jZIS-` ؞fɦJ}q$8!Gu}=svjdJׂqpcx.ߍu @qeT 8BPݑBџ6$iifz~QuR߷D(SWMM*_IYhV_~Vr![\ #N[6&e#\Vjm jAu&v |o:^Ϋk%!{-—B*yCsV` ;~-F\N6Wx./p6%Ff-!UaV(MK[A*潅FY7I*pZ.~β ,yQ4$ ğN'dö lb(o={_fPtk |'9"$+.x1~V7d xpȎF5ot ʄ0`˾Ea, z~S>QIy#wҪ6r.`}&a _nTHA lONhplf?>yU9y[gOOLܝL?PKDSP*% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LCM+ Wiv8C6E.4Ha9\KrB+]>Z5 BFv[왤Wbj G#b,F]~+́ҭ3մTamv{/PKDS% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PKDSҋ6% ppt/slides/_rels/slide3.xml.rels 0_%ݤ*H^D(x!٦$؂;; S;7d㰧t+4g۝mN"GMHD\0.%9|匚!_B#;TՉ5L)S{ #l,MF],~+́ҵ1išm6_PKDS6У% ppt/slides/_rels/slide4.xml.rels 0_%ݤz"M{IdTۛc <7L}LÑV@IPC6E.4Ha9\KrB+]>Z5 BFv3[왤Wb@5?l?FŢ?*X»X VD[}giچ_PKDSzwft% ppt/slides/_rels/slide5.xml.rels 0_%ݤH^D(x!٦$؂;; S;7d㰧t+4g۝mN"GMHD\0.%9|匚!_B#;TՉ5L)S{ #l,MF],~+́ҵ1išm6_PKDStѩ% ppt/slides/_rels/slide6.xml.rels 0_%ݤ H^D(x!٦$؂;; S;7d㰧t+4g۝mN"GMHD\0.%9|匚!_B#;TՉ5L)S{ #l,MF],~+́ҵ1išm6_PKDSplI ppt/slides/_rels/slide7.xml.rels0Dٻ-pPc\ 'h6m1֋Bǝygߑ:ji*B~_!:|'D{mvǘ-ScQMm\/B]ìw ˒d4晤8J_M]+G#uX`Shck0ptL+ehw+O-釋pxPKDS6Cppt/notesSlides/notesSlide1.xmlTmo0+SEMcT1T0:g6'ntC/wy*93m )"ܿ 0b"I!?o ݪPH „4¹*$9+ RVg$ ח4-bv/]Ʉ qjPʴh4:MI[扛hjZJ~Q< ZcDOsޯYa@UHUwq8rܤ[QGm= [Bv .j29`Uuf3t.[iȍ]g~||fT?֋B$pyݲF-`M~hq&/ -%(,鞁/ :[iYhK@ܕ[кct[o|lR~g8{Š׿ zI/&>/¶ >L׸I=<ߋdE5}:^;" FgPKDS|*ppt/notesSlides/_rels/notesSlide1.xml.rels 0_%ݤ"tQ (bwfanvH; %/Ӿ1p>f+7rzGZ=ZEti}*1v"(}QyQ,DfoN}[]8!h0 f& LL)YtP0|P&F<PKDS?!ppt/slideMasters/slideMaster1.xml[n6AJԗec"v^Pit)EY-g䆔hɎv[%'6E~3~]RcMxlbm ,-&/Ahp4KAr'f*D12Jap/ +WPcہ3C/8) X五CIE"VKU)*e)h,󊟼9͊iF\#,sZcxb1~Z;=%~&p!8Q* oX;V3)F.JNғ.kNl.Y,k0yRSUl] ۄ/7ոUSjEVQ]QK҃X_Wu J+#4PEB2nJ@ej H q',bsc\nn>r3!G~`׫Gm<.x)~$Ґ .\x㠑Q*I۳DLO/4#7'|ΝMdgFl ՊEBu7(_%Z(QUDWUk}[$MZܞ>AvȳNs%xC8SJ2EwrvkׇzsFi]6=0x[~z{PsyO\UR}#+*f ׹ryF}vH?y6x4Z@B'ܭZH}mf׆HGn"%w_Ev{S+P/OPKDSjA/ ,ppt/slideMasters/_rels/slideMaster1.xml.relsAk0r1Zj{NA$XBwQh:Eˏ?5I6t<xB\{=y_1}N_0* L|Z7o]'&UDp|9SSpvVP$~ ?)O\ymkxe`9ir n.*͹M}E"iEѶ$/[ NÅ$8FS eېt$ .R\h%U2LLmCiMѨDJχ&XPKDSbR[Content_Types].xml͘r0_J4Hګ2CaN0 aW<:[q΋a.M%|?>|\7ڂh|h?3( cA8%nά(9F#h`OFw0/Oݥ<5ƹ@f({"Wz7xF+(w{RX=Afmm?s^8!M`)Lq;l&K  %Ip(a˻+|M,dw;]EO.Rz"ԇ>u"ԧRNJyΓtu$}'i;wᑪ~#1t.}ʄ<}KlP[{7‡W-~0u gI^쇰js+p{b}krѨWɄ{Hn JŸ(qq0!NU BS!)nT2Aqʖӎc;Γb/2'PKDSp۴"OdocProps/core.xml]o J} lŋ-^d.[vGB Uhu&>Q-~т lo#ZJ:&[ouࣆ6t5AP$¦pz#b*;!b$d DDn2RI}3ЀW67nÐ!'w1cu]4Ou=56Da% ^)ɢ u O }$=z!VpZMu9ٙy1=l9%9y'VF_67WIO0ķPKDScDXdocProps/custom.xmlKo  N4n;9na `4KG\M6xxF wd׭|I!dT>+| YȾ(SHn d>;r>g?539}kXx_ u5 ߊT [17ۉ'FfLМ%Cj%eVBԒޯƕ PKDSQ _rels/.relsN!_̽˶5Ƙ^Lތ@`vX`LM}{Ԛ#7?);97-(L.z6 T@jKb=jnhɄtD+uYzMֽmuj ^.8|1Ʌ#~5ٖh*ȵ8MM/-7{ZQbgTjw-{eIm$-z|;CwLjdp]@:Nn4B ءj'miZhSXm^-EӰ E57^Atjj0OVÈ\VL")rbI1*fSyH«XDR̽ . g G3w7 zy {')7EN8qEAƮuNa^Qmώ٦cg!R>c#_PKDS8|^f$ppt/viewProps.xml]O0{ f 7\0onY?v0Cwz]W^ɞ['*|+Pu>׻%ڬW& ~x t+5ޛcG.i*m%3K"[H K":ϛ[+OaLɟjYF<ڼ\emKYUG =%n(8Ѧ'XY̠ JZ+=`fPK!ñԷ!ppt/notesMasters/notesMaster1.xmlXmo6>`A>_l)b%nmP?h[Ej&-om?dG[ͼaE:GNg>q[ky[1:gmaZzd DKDz)}Z^hG{.DwݶX)MW>sK>%n*j|l: |ƊEpLyմ[ܨ[[:1)s2~U`3 ̷ݓ6֒6c)Kތ+Vx\E5 ,m^R Qvkx,!u Z[>`[vƢ2ns L80* WxΈFlm.YqZAp.֕E|6sK5w^r`ǁq)a zy:(, ފՖ6DžPL@VtD[!+$̟3ѶmvϏ"XZ(Nx#ArFVVJ^ARO߁J"uTڲ7<4 Z^!4d=y?3J8#BÈ3$CofBeQ? S0%:OixY~;^oQtd0qm~mIyQ4U6|,V~ziIGY^~|G!ϨAR( 0QvqLoViJ  B/ƚ_({.m+:Dݓm;)>FǏ(񼨳e9bPlCSrR7`.+aWHXZ]pv lNUƸ`^bGU&x=aw8b .{{TjCgabpĘ<4SӎvY xB[A2>oF*;S~͢&9a9O0ɒQgQf~Ľxe|ѶoF?~4antpd-x $ȳ3Rt((fy9~(͍ݻ3MųmVӗ8eacaov+B߫F5gq RydH] uԁSZ0hV6фFMd4F |-椢7|֔WH] PW`HY#~X5 y&㏚͕ Fto_yE+ ɿ]-h?![7{;)w.7Z=7Chg#}K p;Q~G HP4>?LAEoh5@A%BEnFFPek$:"BE(c^kwtPK!ocB ppt/media/image1.pngPNG  IHDRLDgAMA abKGD1 IDATxAC2 `vG~?y>O3Ϸ 0000f0S VPPPPpVs 0|     YYA@       q@ VPPPP0 0k 0|     q@@@GXPPP0 `  8     0 07`(`(`CP   VPPp ހ `@     )`x +h(`(`(`8 >CP0 #,(`(`(`(`*`8g +h(`(`(`(`(`(`8+hXA@@@@@@@@@@@ ` +h(`(`(`(`(`(`8+hXA@@@@@@@@@47`(`(`(`(`s > 8  #,(`(`(`CP    VUpN@000 `XA@@@@@!(`x +h(`(`8 o0 `    Y 0@@@4000 a@@@@@@@@@@@!(`0000f040000004      `@` )`      040000 `XA@!(`x +h8 oPP0 `  Y 0@@@@@@@407`(`CP  VPPUpN@0 `XA@@@@@@@@@!(`x +h(`(`(`(`8+hXA@@@@@@@@@@@`V9 >CP0 #,(`(`(`(`(`p VPPPPP?`XA@      0f      `@!(`    0 07`(`(`(`(`CP   VPPp ހ   `@   )`x +h(`(`(`8 oP0 `    8  `@GXPPPPUpN@0 `XA@@@@@@@@@!XA@       q@ VPPPPP?`XA@       q@ VPPPP0 ` 8      0f    `@  q@@@0000 `XA@@@!(`x +h(`(`*`8   ?$++%tEXtdate:create2021-05-29T17:44:55+00:00o%tEXtdate:modify2021-05-29T17:44:55+00:008IENDB`PK!ppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ{}MSY a¤LrC PK!{C] ppt/theme/theme2.xmlY͋7? sw5'c;d7YkPa0J{}SYנdzZ2at oްY[3T9]|"b-Fw@;I8r14\(9%a7C 0\U:|?OGyrHl )>q2*husϞ=ߟ?z˹vP^??|ۏkNjYǝ?NЌgOLhtܑ\]2ˌ G"JaQHJbhq֚j(vӳ;O&x$ F.f*|޼3ؿ}q_wf8WW/__x@X }B.5 xZ穴 VϹ \VXí2vEc%s1y)t^kI(_P 8MHƮޥWaԔX6[:< !HNi`)#P R0%fsKiW]\JTfmx0{k-n.qʌZ0qe=3$PZOٴx'6-D{MVRSUMr¦(<PѡsQoFQ=A\\mzUj/ įK jab I$D -zyʳYFP08kXT(7YR)6F{5c'9"Y4V (\, a%} eԷtC?lbO<4RCiTk w\:Q1]ƃݴ]6Tjڿv+,SrxQ DkaYQ;шez%jze5i+}[$P_@4oYۛ/6CT-<gqQn|w2NzQL{s6fP.+bN–ρo(l z<0Әnc̄s`;Z|c {=z7Niv^}lj_-z?$9?h5:9V@^&?Gn t.cjFed!l.Z2r782&!KɌO#NTxo!JX1]Iʒ&klxm%GP;le \gİٛ(~4+ݠ_;r[= A:͈916Rfz@ fŠ#o!T2121C{[IMMeS,C1/cnp*Q :iD4ސY[{Ԟ Tf~ݭm6~c =U_23`-/kp{oetDhϳ1UJ/D6ͮv{$ L]fxп}Q\  7V:v#IPT`zO`yu5Uat,HrFzZyvs0!5b~ub-J*] k³<rtN1tp\@ְLqs.3y< oU\1&r*o9ÛLC3SOX{7-F#L #I^\2ApfE+qtDaIxM}s[

                X[_]7<8QMR-$Mfhym5Z`^ kxY]{ۊ B4:l|pHtt:9:9:?]Ǖ9"͸d4]cq"\ޒ9vߘK[MǩB+/iz>FXEɢt¨~zPK!%"ppt/slideLayouts/slideLayout14.xmlZn6?`@h]=hR$v<H`IX(uI{q}q$#$_;ZGDQwαorLȬ,-ʱ+2͊CYH*Z;fLZo~uu yzFgD!Qzhl[&cSXJSoŭ ιM'sV_l dB qrUEAvOT[#mlrST\O_I^cfTLUu)`R,5ۛm36sNLݚtj`/ 5Vʭ1ogjY|(AھhsH* T~6k]>&Sc?0 %muwR3F_!&KufMeBSs>X{UKUG}%*K3ΩTL L b*(H/Ci&Rt*PU4~<@<>&l\TBq1! G^A2? HJo1Dd\jdQOT9T^TO9p( EV'@LGgr]t+h:8<8N H@Suߵ Pyi=i͡iPZN^RZ&A%q<  ޅdB9"n>M24yAy!V"o]؃DGQ T-Pb༭`a*j`%؈DSa V,` L?`5l[Glj`>dk` V/kA2Bڽ|b%WS S0AU0)% zkq5!(~V~nsRM*Sؤ9'N_ ݺ8D~N3.DƏWQ_8ջ)<TK FJ?PK!_f "ppt/slideLayouts/slideLayout13.xmlk6ˈx(,"Q*EvV{3dK:mCșH~fWdDW|YL0WIΟڇj'8j{hof4ErKF`fBZ&e=1&XIWU8(Gd$ 0l\%U1[Vd\ *&릧՗j(IjElcKH%L,HBS?pķ?z] %$OPӌnS|ƉS?]*Jd7 A{8vd|gdil^}ݻ˂UooSVdž A[x3"5$:vQ ƜDDA*m#?2=[۳N}nDndp_) JQIE3*e hphZ MX3`ߦ}8(xQz qúuIE$",%yGQq JUƓ{*(Z0$rZŠ]w(4fYU$`QT2ZlÊ{Fegz{\imeX0]+C3'%nlp|O}bVUIFT67l/UvZl?x>"O۔'a_"M賑U/m{F7ΗKPr57#P zsy3ӟ?|׋V5^w~U1/U[t!? 4PK!5w "ppt/slideLayouts/slideLayout12.xmlZn6w kג?M 'NI-vH-E;N}ACɖ]usQE&\*-cyb[LqzYdR8-ݠ1EQۦⱦC`&> Nh݃y~>BG2M{9n6Jjd[5 {DdzO7;x}p1^ 쾿t %ρmvYS0Z~vtZ,uEKm3B575dc YKmUvj!rQ4 C]bE^e؇^FjܬhyVPR_^]׎OŸ]ǚyنR2g섐XVf"Ώ9<M e"[8lEIi }-gRn&&bYvU$f.K{i.)7P,St4e7r^#;n0I7ShZ [)VK&7KpC-]1a34^Co-}uk|]8((U/LXZ~7FIoy7}o( 2YDxΘ6Ӭ)#!ѿ]CͼWGn^ٱ\{4ImGؓS+^XFhLIݴHPK!!wp "ppt/slideLayouts/slideLayout11.xml]6 HԿ؁^6E9#k!Pk'kI2CIuS׻,J8R^oR 6IfahAjDRzWՠ-WC64JU˪%/XwRL|Rv[mV2ar>-Uj L2VC$Mo<MyJ+}rN $d*uu/9ǑX&yu'N,ENoXVLߊXGݐ 6 Y"@6C "I0?MoO&V7՛j{ӹӄ쭫2XQ?~NՒm(Vy{cNF"r0nS? }v뻞y.7j6WeEpWH%Tfdk5Wۜ:M)_3Lew8)V$( y3M,HTIx)ՊK T)\wL2#i&U/ÕQ${$c4re`:fK/ r(vqx6u M#'x 7zAe"CXBZXG!yot(p@/ġ7fĴ+jұ3f|5sbwx9`o&9gb 5epq>0S]bfeIFoOMگͧ0CN^O[otg)'QX԰!'#ELgŁW鍧S>5؎]N 9cHk.߰ZǼMnUeӆ|/KiPK!"ppt/slideLayouts/slideLayout10.xmlr6wq|wfLeJ[gK%B;jg: 6%t#ӹC+EZ} DH|7>={$yBXӾpO+;))F.HXHY^4#]Q\}7+xFfΘi[of$͍z=?e}112 2"bJN]7|,Ƶ26$Sdi&i,/\!)E)Qr5a5(MZ {͐\gf)XU)11"WwEYPy[fx $7BI@r՗zS'B' P:~=`Þoֆ8rt2w"h~ZPK!o!ppt/slideLayouts/slideLayout9.xmln6;oWI\4`$:J]FҮa@_k{>Ρ$[JqGDӇύP~n Reeqj7ExiV;3sa9 Y/Y_Y'eyki_-JZ%YWIo*ʒE\d&RR&nD/%'3 BQ՝GWYͪ[iެn%RD5nhbe퐝2'xO-8ך$dM&{v)ZU+9nk]'tkU"E y[f|VQ\GqlLb7\׋j[i8D\Enp=<{ɄqnτF.dG^XK*@r&̩ʊ  `yԬz!Qݡt>]B㍩C-! :tHiA1q) 0]7Q R`F@4xDA`DG)ǖ,) Y,MIUTm'ƒ-RM Ͽe`b'S^U(E_םu9^>T'/4Rv`u$sL3VWJR 48/ZRHb* vD3 L9pCt{@<loXV1 hn@k'=̮lrh_cO#JhtqGA4&?k ,}s})8+g41tplaiYbл1 \:6,*9'O8&B n_\zƈ|/_;hƛGqDx yͪ+K3UeC2_PK!0Y!ppt/slideLayouts/slideLayout8.xmln6 ګ& ǎI6Ht.u(E{- kORΈIg\D4=șȡ&dDa H4"T EN-g?Z Pºr`q['\-Y0&O2cq'5=2i|KzAۥ;@nc^{Axd,)_@^#l[;drձ{pc][lW-9HF%֏4OMV9ůM)خ.+Y7HYT70P٘ *9䦎 vpHTʠ,btʁ +;* xlYiN0@IRŔ3on6'l:V[-oh{`ՏW>y^˳ShFN-q"Hc@ =XF-hEE`G×7/~S&Tz ]r, xWF0N7D/F2kݼ%Uf ^E L9N yf5T/V\:hޕof!E͟+* <__"S(OM?|&3&\{a ~DX+(>s:*La0s&:5h2YCxe/oۿ?4QqQ=5wΉ9;_TgC';{:w3 1K1 (|ݙ(^/5L ɵSINJ>rAe\Xë|Rzy%.,+dYk'P!Bk I/SҕД0Z9ȪgM%njD[Iٱ')b.j.Q5}e+-3Y@%32(V7t‶vTurpj 6_%.ym4jf.^}h7dz *%EMCB&̽[є# +M$!D[Z9˞3RP(lmz^߿Y,X48!9)993i@@(zPz3ԟtw{Ƚ©;c7uÉDI4َW PuQ3Q{|zJ fգ#N- ~„maf-Mɴku%Dhھqg -R1h \dNԑw:~sCr8v}?plG'W9"O>jۥ V*YYK)Z;|b|FPK!^\!ppt/slideLayouts/slideLayout5.xmlYn6wkW,M ǎIkH]ŀ8}G-8v¢(;?9GWZK"dٹ^EXʳݟƽض,Ô3rn?i噤5~ ei &=Wm F?bC^X3x";A寢6Y + @v2eK8;!>[Da֤=_̑j2̦{֦=Fj1.WXhmU,y^Zk{yZz]ez"~~"/ rCFnm,0]+L.y`O(gTznJj ͙!nRIUC--ʺRaePi#Wt@!,feP-rJPQ4>Ώ89ʹ.sPeckAf !} #(F"dYzJwa,sWdCmV52 ot]FGt,8X^KU KmLhDTXKLude{C?T^7<"pZeբ0gfiYN_(uvHaIpOsfAfJȷׄ9 0 oA PӍF7 kTUTNr`հa 6bTXUFXϋM kj~ kjxk0S`հI 6 O`UVjdC2e0T)UN)@AS)mV |z 2c:+P[O@^nkت@~n14|gvvK̢dIhDpqĻy.U/wF : 泽߯ bbHBJ}*&1"QG2? Lpd[E_3YD7PumKL(:pzZ-gnP|JJoG?AihOltBM{ZN)NN) m+(?  m9 #If U< chV|JƗ0W`d^.GA\E0|̴*/>C+o`> 7q`4.F@,߯*rpJ}S%ġ?GVB~T3*VB59(sL;_ 9ts!(Nh&yot^wYY8li/\ˊk֑JO)lW z\o70q+̜sS`JkYk K};Q Ok ]2#=5'}(O'A0NM*I:wċWtwL ;FOӇx.DžA7X\-=PvHW\C~h ǟPK!sF*!ppt/slideLayouts/slideLayout3.xmlXn6w $K)8^$mP5-Qg$8OfIEQHUɒ Y6^aude=9>NzCuFySsˤ^GgY(<#P=eZWMjx7 nż z+Z֎]/2e&]TVD0N/ZV0 0z$uۂob Ss SV01e^N TczT/J2 vӷK,wCzE 9[slHj&lZ#{R1;Νxk:{e{Ѥג 7%6fEsl8 ^A~ ׵zQ= t{VMvW  uZ4P5B5y Yq3/9ǥ?e3̇lӑ MJI˵ QTL& ̀9_iНθ KYe8ƃ86^>`08x޿l" 5Mxe Iދ""S+⪒WüJdbZd7d J RAFAQcOʽX+ڄ)o j&h㪕 ۱U3g-TXbġ[3ުVa (acuF5Q aY%` QRh@ aLJmSmڵ'vw5]̌v%XJ.f@jYl5A4 `!Ԋ>:=**.:-ۤ5[ B[KsH h{;D1DBy$O>؉%}z4~EAOa'M ^)jÍhxz6 dh/ކx:@{S5vڄð5Ŏ6ؾFq-a`8 l h ~V.w5Npxx.5 mۧ.t*Fk n)VPw;[&j!qdڋ?gIpI 8I/=GQgوvR9[1zͯ^}o_&&3i]۩áɡ17- ]zD<y?P*=Zy1nQYy{#k1/['q4'qv&'ɉ—ۗ|_>Dq%m/1Ne=!߈hC?PK! " !ppt/slideLayouts/slideLayout2.xmlVYn0/;"#vME,FH E$- Zqr)N\7u0 ̼y\NϖE9*Ԏ|(e=z)Y)g笈roߜ9^FTDk<&$ [e5 I3}e8eN^q1ab $B IOC+OF2aCF &橦;hę$k\bz,/LL]wO%J#SwCif,okme,3hsf+9(,&l\ kr=rj*=NNAGmUBŢMPJBa#*qb)%48$ SiܘNaZHNeW= nۋy/3r؆h|qr|!u7bc4 z"mT"cM(]imɍi씪-b=lc8M߂Vs28Q{v~#pza4`^]ӌ&oG` _k{ &ڦ,5 Ӭ pn6X%4Em>/Uyx<'8OJoUhtnhmVxDNfu`z9i҇M1Nǯoq0Ok+9v "?=v%Ekˇoɖ\0 E٪}Z+ڽon[]j] |<Ϧ"wjVJ8SQ^JrzlV)sD;ݾ}ahZhп} ɺ>!zBZ;Y̶ltSQ^nt@:{U{dS7oH.l3- ͊4s0Aॉg (d?0 ~azmݞ&3x%jhauh`5R7E فS}-8Wp99/>в%D `R_J. Յf഍ݥ<`s!`m$EaFfs zp6  iy@=.[(wi (kH*p^b79*cS.3.#T\E"R~`Fiy4d$ gHʠ{+fbTzjOD`f1Zio ٞȚ5\2PckOha nx[GU.׽SsQf87mbw {̓bG[ Hx6Zx; < -vFGr-v TA-ɸ;&Ls.|ш̵̉KA[0QtG3< ӄb\'zGg7B:zQ|'A$i2U]VD{) [=zïԏ^ _M /t4 VnjHMUNm$h/Wcs_  oTBλe5Vn|Q}0`Q/^{x܃Sć>xrM+e/֧_/?kh""<|+}ExNKmYm"uPK!aO6KdocProps/app.xmlTQo0~$mȸ@McC"UL|!V۲=VwqHV4/˗ǝK%X'AGrͅOmG3ř \|K߿#k X/E(4.7$qy s,+Vch. \+P>Nq/~e:QrhP *#қt4t=z|,tƗOO$$ӞLT@SLwyЖ:rg9h]j X.׮صƈ$}.:; ">.$d,[f@/"YJ$9!U{ԩ鳘V3)L(lr&aтI(%X=k&,2~rk9cG;v}L5A8oB+N.`↎_V#oA;eKp;|[`ᡇ;ԗ:4cR쬸\v_ r{ڣ=0uu\YsD$-|mM&tC`ʒM`+c ީq[Rw+ybPK!ht _rels/.rels (J1!}7*"loDc2HҾaa-?$Yon ^AX+xn 278O a\^hD.Cy1BYz |t!9rL߰'~20(H[s=D[:b4(uHL'ebK9U!ZW{h^MhwuV};G缦oYDS7t}N!3yCaFr3PK!c\#7 ppt/slides/_rels/slide1.xml.relsϽj0=wW;,e)C>!mQ[:o1tx_?],(AC+lt>~n_'\08c 1\ۡҌ0JhA1Q!K-_I}4QgӐ{ׂm^0xKѮ O;-G*|ZY#@N5PK!W/ppt/slides/slide1.xmlĔ_o '; $nU4[%u4Nä3u[ pc+%3 GqTQC#,Pg-zRVMiKtJe%*%합9'Z 2f߼_㷊k.]pATnJ>~K4m0mD[ù_6K6*_IZC[0,leCi7 COKNZV>bʻWISuŽ8 g^fT;gK]"w9E<,~6Wف J 6$xY_hA5r:#̓ysܹ=!I{v/A7սuq<_y>ȓj0]|ܬfd:]d2|/QVݐ:N.0( ОQA, jew;%3M3q * K1g~?PK!?-gppt/_rels/presentation.xml.rels (J0nӮl mm0MBWUk,Cg?!g/Z1(JB ^@R+d0uy~zF}r0tޛ;J]a] phsJRë7"]ʉ' 즾 [7^W=* GȝGlm3IGnRby"qdIQ¡Qg(C/)'XˤK Q6[eNɰd(A\0(BP~PK!|¯ ppt/presentation.xmln0'o'J B]I5x4Vl&;'д\a}`g9OD**xrEAC7K7EҘ N2t ]ο~UJE: ghu5ېN<+SVLY"C Z\V+00D,n>q(~40țϼsX'ZvK 'C~C4NM;cݎkGɫ [\3!{F3lV+i[w+0lp~DwaO̯}!|6%CQ<Rƅ[>rLp\\<ދBG"ͷa4] F%e"L:OV-y5:Psex)g[C pމEth>v|ڴP,c?X@qPM CJ:@A&_`dX@qgv >Q&=@I<r}_bVShZZN-i^/ Q.(Xn ?=wr GWM=ǦQӂnn%ͥPb/rQkWg"+AwƆX&:jPK!ђ7-ppt/slideLayouts/_rels/slideLayout16.xml.relsϽ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQv%Ekˇoɖ\0 E٪}Z+ڽon[]j] |<Ϧ"wjVJ8SQ^JrzlV)sD;ݾ}ahZhп} ɺ>!zBZ;Y̶ltSQ^nt@:{U{dS7oH.l3- ͊4s0Aॉg (d?0 ~azmݞ&3x%jhauh`5R7E فS}-8Wp99/>в%D `R_J. Յf഍ݥ<`s!`m$EaFfs zp6  iy@=.[(wi (kH*p^b79*cS.3.#T\E"R~`Fiy4d$ gHʠ{+fbTzjOD`f1Zio ٞȚ5\2PckOha nx[GU.׽SsQf87mbw {̓bG[ Hx6Zx; < -vFGr-v TA-ɸ;&Ls.|ш̵̉KA[0QtG3< ӄb\'zGg7B:zQ|'A$i2U]VD{) [=zïԏ^ _M /t4 VnjHMUNm$h/Wcs_  oTBλe5Vn|Q}0`Q/^{x܃Sć>xrM+e/֧_/?kh""<|+}ExNKmYm"uPK! " !ppt/slideLayouts/slideLayout2.xmlVYn0/;"#vME,FH E$- Zqr)N\7u0 ̼y\NϖE9*Ԏ|(e=z)Y)g笈roߜ9^FTDk<&$ [e5 I3}e8eN^q1ab $B IOC+OF2aCF &橦;hę$k\bz,/LL]wO%J#SwCif,okme,3hsf+9(,&l\ kr=rj*=NNAGmUBŢMPJBa#*qb)%48$ SiܘNaZHNeW= nۋy/3r؆h|qr|!u7bc4 z"mT"cM(]imɍi씪-b=lc8M߂Vs28Q{v~#pza4`^]ӌ&oG` _k{ &ڦ,5 Ӭ pn6X%4Em>/Uyx<'8OJoUhtnhmVxDNfu`z9i҇M1Nǯoq0Ok+9v "?=NzCuFySsˤ^GgY(<#P=eZWMjx7 nż z+Z֎]/2e&]TVD0N/ZV0 0z$uۂob Ss SV01e^N TczT/J2 vӷK,wCzE 9[slHj&lZ#{R1;Νxk:{e{Ѥג 7%6fEsl8 ^A~ ׵zQ= t{VMvW  uZ4P5B5y Yq3/9ǥ?e3̇lӑ MJI˵ QTL& ̀9_iНθ KYe8ƃ86^>`08x޿l" 5Mxe Iދ""S+⪒WüJdbZd7d J RAFAQcOʽX+ڄ)o j&h㪕 ۱U3g-TXbġ[3ުVa (acuF5Q aY%` QRh@ aLJmSmڵ'vw5]̌v%XJ.f@jYl5A4 `!Ԋ>:=**.:-ۤ5[ B[KsH h{;D1DBy$O>؉%}z4~EAOa'M ^)jÍhxz6 dh/ކx:@{S5vڄð5Ŏ6ؾFq-a`8 l h ~V.w5Npxx.5 mۧ.t*Fk n)VPw;[&j!qdڋ?gIpI 8I/=GQgوvR9[1zͯ^}o_&&3i]۩áɡ17- ]zD<y?P*=Zy1nQYy{#k1/['q4'qv&'ɉ—ۗ|_>Dq%m/1Ne=!߈hC?PK!1Cv\!ppt/slideLayouts/slideLayout4.xmlWێ6}/ gGW֖]HDP$K^EV9 )^;ήu?93"զhM*99 A<+ywR SK1T4{|`05#Z ]Wza0sYa ]yfvEb%s<˔$<]UD5RM&$Qcwur #3 ,9rN)'UvDefL4l{}M.+h3r@whփ~4-OMىnk}`DU;e8AβԔ Uy^!!~nEiEnu};Ӑ7m[h RzKgݐ/& [{9"Y4ڇCX²,G`(+~@-_g1lYlR P ǩ JK{"| ë8[ i]? Tc0 .[]C㜕PhXslŒI9%kB@=,Jy>`4.F@,߯*rpJ}S%ġ?GVB~T3*VB59(sL;_ 9ts!(Nh&yot^wYY8li/\ˊk֑JO)lW z\o70q+̜sS`JkYk K};Q Ok ]2#=5'}(O'A0NM*I:wċWtwL ;FOӇx.DžA7X\-=PvHW\C~h ǟPK!^\!ppt/slideLayouts/slideLayout5.xmlYn6wkW,M ǎIkH]ŀ8}G-8v¢(;?9GWZK"dٹ^EXʳݟƽض,Ô3rn?i噤5~ ei &=Wm F?bC^X3x";A寢6Y + @v2eK8;!>[Da֤=_̑j2̦{֦=Fj1.WXhmU,y^Zk{yZz]ez"~~"/ rCFnm,0]+L.y`O(gTznJj ͙!nRIUC--ʺRaePi#Wt@!,feP-rJPQ4>Ώ89ʹ.sPeckAf !} #(F"dYzJwa,sWdCmV52 ot]FGt,8X^KU KmLhDTXKLude{C?T^7<"pZeբ0gfiYN_(uvHaIpOsfAfJȷׄ9 0 oA PӍF7 kTUTNr`հa 6bTXUFXϋM kj~ kjxk0S`հI 6 O`UVjdC2e0T)UN)@AS)mV |z 2c:+P[O@^nkت@~n14|gvvK̢dIhDpqĻy.U/wF : 泽߯ bbHBJ}*&1"QG2? Lpd[E_3YD7PumKL(:pzZ-gnP|JJoG?AihOltBM{ZN)NN) m+(?  m9 #If U< chV|JƗ0W`d^.GA\E0|̴*/>C+o`> 7qwΉ9;_TgC';{:w3 1K1 (|ݙ(^/5L ɵSINJ>rAe\Xë|Rzy%.,+dYk'P!Bk I/SҕД0Z9ȪgM%njD[Iٱ')b.j.Q5}e+-3Y@%32(V7t‶vTurpj 6_%.ym4jf.^}h7dz *%EMCB&̽[є# +M$!D[Z9˞3RP(lmz^߿Y,X48!9)993i@@(zPz3ԟtw{Ƚ©;c7uÉDI4َW PuQ3Q{|zJ fգ#N- ~„maf-Mɴku%Dhھqg -R1h \dNԑw:~sCr8v}?plG'W9"O>jۥ V*YYK)Z;|b|FPK!m1k,!ppt/slideLayouts/slideLayout7.xmlUn0w4?M)BE&u-Dul6 6Mkm'ٱ El度hE89 2WaݦnAJcc9wbh~7|`jGNzJRcua%kꅾj\1oEQe$ٲ&L7I$XC겉d(Hc_7Sd 3ق 0F%n%!fVX׫DUnbk_nVv x.dmVG(1OZ1f;kVo+5vp SӜHlv+qųGh֣oVQ;i@Ah7hfgˣ^<ߘZ#RzC=(@AGߏYn3Z Pºr`q['\-Y0&O2cq'5=2i|KzAۥ;@nc^{Axd,)_@^#l[;drձ{pc][lW-9HF%֏4OMV9ůM)خ.+Y7HYT70P٘ *9䦎 vpHTʠ,btʁ +;* xlYiN0@IRŔ3on6'l:V[-oh{`ՏW>y^˳ShFN-q"Hc@ =XF-hEE`G×7/~S&Tz ]r, xWF0N7D/F2kݼ%Uf ^E L9N yf5T/V\:hޕof!E͟+* <__"S(OM?|&3&\{a ~DX+(>s:*La0s&:5h2YCxe/oۿ?4QqQ=5Ρ$[JqGDӇύP~n Reeqj7ExiV;3sa9 Y/Y_Y'eyki_-JZ%YWIo*ʒE\d&RR&nD/%'3 BQ՝GWYͪ[iެn%RD5nhbe퐝2'xO-8ך$dM&{v)ZU+9nk]'tkU"E y[f|VQ\GqlLb7\׋j[i8D\Enp=<{ɄqnτF.dG^XK*@r&̩ʊ  `yԬz!Qݡt>]B㍩C-! :tHiA1q) 0]7Q R`F@4xDA`DG)ǖ,) Y,MIUTm'ƒ-RM Ͽe`b'S^U(E_םu9^>T'/4Rv`u$sL3VWJR 48/ZRHb* vD3 L9pCt{@<loXV1 hn@k'=̮lrh_cO#JhtqGA4&?k ,}s})8+g41tplaiYbл1 \:6,*9'O8&B n_\zƈ|/_;hƛGqDx yͪ+K3UeC2_PK!"ppt/slideLayouts/slideLayout10.xmlr6wq|wfLeJ[gK%B;jg: 6%t#ӹC+EZ} DH|7>={$yBXӾpO+;))F.HXHY^4#]Q\}7+xFfΘi[of$͍z=?e}112 2"bJN]7|,Ƶ26$Sdi&i,/\!)E)Qr5a5(MZ {͐\gf)XU)11"WwEYPy[fx $7BI@r՗zS'B' P:~=`Þoֆ8rt2w"h~ZPK!!wp "ppt/slideLayouts/slideLayout11.xml]6 HԿ؁^6E9#k!Pk'kI2CIuS׻,J8R^oR 6IfahAjDRzWՠ-WC64JU˪%/XwRL|Rv[mV2ar>-Uj L2VC$Mo<MyJ+}rN $d*uu/9ǑX&yu'N,ENoXVLߊXGݐ 6 Y"@6C "I0?MoO&V7՛j{ӹӄ쭫2XQ?~NՒm(Vy{cNF"r0nS? }v뻞y.7j6WeEpWH%Tfdk5Wۜ:M)_3Lew8)V$( y3M,HTIx)ՊK T)\wL2#i&U/ÕQ${$c4re`:fK/ r(vqx6u M#'x 7zAe"CXBZXG!yot(p@/ġ7fĴ+jұ3f|5sbwx9`o&9gb 5epq>0S]bfeIFoOMگͧ0CN^O[otg)'QX԰!'#ELgŁW鍧S>5؎]N 9cHk.߰ZǼMnUeӆ|/KiPK!5w "ppt/slideLayouts/slideLayout12.xmlZn6w kג?M 'NI-vH-E;N}ACɖ]usQE&\*-cyb[LqzYdR8-ݠ1EQۦⱦC`&> Nh݃y~>BG2M{9n6Jjd[5 {DdzO7;x}p1^ 쾿t %ρmvYS0Z~vtZ,uEKm3B575dc YKmUvj!rQ4 C]bE^e؇^FjܬhyVPR_^]׎OŸ]ǚyنR2g섐XVf"Ώ9<M e"[8lEIi }-gRn&&bYvU$f.K{i.)7P,St4e7r^#;n0I7ShZ [)VK&7KpC-]1a34^Co-}uk|]8((U/LXZ~7FIoy7}o( 2YDxΘ6Ӭ)#!ѿ]CͼWGn^ٱ\{4ImGؓS+^XFhLIݴHPK!_f "ppt/slideLayouts/slideLayout13.xmlk6ˈx(,"Q*EvV{3dK:mCșH~fWdDW|YL0WIΟڇj'8j{hof4ErKF`fBZ&e=1&XIWU8(Gd$ 0l\%U1[Vd\ *&릧՗j(IjElcKH%L,HBS?pķ?z] %$OPӌnS|ƉS?]*Jd7 A{8vd|gdil^}ݻ˂UooSVdž A[x3"5$:vQ ƜDDA*m#?2=[۳N}nDndp_) JQIE3*e hphZ MX3`ߦ}8(xQz qúuIE$",%yGQq JUƓ{*(Z0$rZŠ]w(4fYU$`QT2ZlÊ{Fegz{\imeX0]+C3'%nlp|O}bVUIFT67l/UvZl?x>"O۔'a_"M賑U/m{F7ΗKPr57#P zsy3ӟ?|׋V5^w~U1/U[t!? 4PK!%"ppt/slideLayouts/slideLayout14.xmlZn6?`@h]=hR$v<H`IX(uI{q}q$#$_;ZGDQwαorLȬ,-ʱ+2͊CYH*Z;fLZo~uu yzFgD!Qzhl[&cSXJSoŭ ιM'sV_l dB qrUEAvOT[#mlrST\O_I^cfTLUu)`R,5ۛm36sNLݚtj`/ 5Vʭ1ogjY|(AھhsH* T~6k]>&Sc?0 %muwR3F_!&KufMeBSs>X{UKUG}%*K3ΩTL L b*(H/Ci&Rt*PU4~<@<>&l\TBq1! G^A2? HJo1Dd\jdQOT9T^TO9p( EV'@LGgr]t+h:8<8N H@Suߵ Pyi=i͡iPZN^RZ&A%q<  ޅdB9"n>M24yAy!V"o]؃DGQ T-Pb༭`a*j`%؈DSa V,` L?`5l[Glj`>dk` V/kA2Bڽ|b%WS S0AU0)% zkq5!(~V~nsRM*Sؤ9'N_ ݺ8D~N3.DƏWQ_8ջ)<TK FJ?PK!`pC;"ppt/slideLayouts/slideLayout15.xml[n6w k4)\;.mP5-ѶVg&V:v5[\DE~<< ~&dDɹf<5’ dq{;y%MBӄk,מ],MWFsm)ev4f,gTT­XCA?vFVO(`4X,`J?_FY^eǠe&L6$4 \G\ FF)_ >ϳ1UJ/D6ͮv{$ L]fxп}Q\  7V:v#IPT`zO`yu5Uat,HrFzZyvs0!5b~ub-J*] k³<rtN1tp\@ְLqs.3y< oU\1&r*o9ÛLC3SOX{7-F#L #I^\2ApfE+qtDaIxM}s[

                pQ,/6_( 3%܂fWY% (Qߔi\yD5J^SA73$ۤ2s9 չn,?mwC4Qh؛Píp7_G j_>z L`RǥY}m4ABjGa.x~{\0fy{q`+teD\YdpɡKmLhL`؀۳a)k t684%4nܡ?)*"υ@{ݸ  3TOG*7V UH_T8FiHO0ΞPY+Eꑄqx|q8mq"݊z8F*,}Ȳ'Y+01UfX)9S]ɐzqACX /7`^ǻC~CYڍJꉥW늴5N*^<4}PK"Tǵ;BiSppt/slides/slide2.xmlVm'+O_ktb1`/:8[wŻ{UNEɗ]`fy/wBp^=FB3åᗗ/+@U)*;%ijJ_+44mwFOIMƭ;ެגmkCqBaJZ_)h 0zŘ-Oڥ"t ;wI|HZ0Fzy"6eICI)cڬ:Os~դdA 4+A{{mحG@RA%߶Bao,D0|`#JI߿?v G?+xS:U>,I; SJJ>Ӳ:.hF7\.M/ok ej fqaEDsE¡ɹ|J|~*1?ʩƾ2[IB%]'YI+}C"K[| (ZjVaF꠨ywjXb򰨤˂bFs㄀.~f q.'G\v.4Z#>EŶ ȋ}6DAz3T/7ONw3t0J#9{H˛7z?+G*ϓ OLIv{^ |U3i{! 1U&\ |ɹľ мHk  Tj*KGE#\I%>!BA09M7? 'nGRG|I[ ?߿NSް^t53w38 h) 啖[4O=+A 9]sC:trI6; G)D:} P0~f Z!xEb<~7lizc<",j KɐzqA'CG[}l&ɺXIfىސcyarunPK"Tppt/slides/slide4.xmlXn"7~kڋaB-Ymvjތ ccOlF_O/dEE caY!ДiÕ&͋FrM~:xAJ!$`l\I.`ɟ`8m4ڸ \&qeyƾ*fX4rkfk!̲>rs#9U7k) I M$ꅹް03=!=4&bfea5[Y߶ig6}\;+]r!YuVCnCeruЦ|P٣ARARB%ecKh8)^oٝsgϰJ:؁C<~VrI< $0Om O`gkPp^F/Hr%((ONg+:e+i,ʪ^Uij%xg+|a fh~Uٜd]YFv7{{춻߃senyȏ䃱X$x(N+hL1B킞a%W Cq+)eCȹڪaO(S2:)&de҅NFP|\txucѨ PDq=j=74^o*AEۯ_۹۴NqXI woeu@|q ݧ!AIqsh6NȊfdEMDZ-AyѼ<_bNH4#}#捺:1ڇ%% ъhcFiHgK4=!1"1ވyڝ;=oH/AtSdy$Ѓ)"tݬ~˚Y.H,>.]BJ_SG&e}zvr}зPK"T&Yppt/slides/slide5.xmlX[s8+?m!iʔtzIw22> KƚȒ# H1P!B /#˧Iq T2m}֊\Nߣoo/WTize=M3U0 TX <\պ92m֫4 iΤ J4Ă&ㅩh+43Ư^qE #͘kO] rN$Y?$ռЗeh5 IzT Y? Ydi84;ɮ7ǵd<5jĭ`W;m[$aA.ݻȐ:e '5;;0vh2Q (7so]k)**ãkSG(iA7U:֮Q(V@eJPQ+F&9D6cH6`0ޤlz۹[.w~XVki-7WU@xq ɧw!^IhIn"+ cZ9^bt_13@ĸ/1/1.Bz1qkĈGK8~EbJ;ww|a7TJ=/f.SrْUA`ay0\{LJmX\ ڴ|,S~=+HUt/5$nvbտPK"Ta;{ٕppt/slides/slide6.xmlVS6~BB p 32$b+,$%$wˉCr}%Z9ZP$;HDE. &Q/fy`C2J*c!:hMlL<Dq/MqMHyy9~xE91`X#ZZwc,yLv$U3n.b Aj:J$s#P!.gp-G r_lҠܯyۮyuk?Jb뜷WՄNQv.?h$$8hN[TȬ3,iٰR_,VV~ 6c{ܬqw2Q@<ݰ&V hO5gc OG.0YY)*b37,!g{ zgS&4 \u8"oS-eEDIuCseɼvuYq1RCZO)^H#m5ye3{JoBMxCF&;2;KY?et;{A4 N63P|FvfqNYhfcׅF qmQEIq%0Tt˧&؅\n!>PmVG'a?=9>ya?=GR Rj^Bɍڻ\@&%ݳ6T?*'9$/o=V,UB?"|vWҹϾEmiWu5 LG+!XiWW3&}I&(amYЉo@7bQ5r)R.=mC=DSlPVa_ce-! kYX`M̓UWSֿS_MrgHKN%KԿҎ=^#סW^i0vբcqb:~CtZ 'AD_~T~gR#ƨ[Aqzup`MgfeIkgH+e4pw ?ɧ(oZ?lQdw,TEUl75e޴.0߱0z0zxF REQ N;%tD/*ǽ.}>DTKe&]I2gWˆu:Qx賿PK"Tq bppt/slides/slide7.xmlW[o6~ ](bǨS$iZ2#NKŅ"^$ˎҢ^, ߽_Ti&(j")Q/byC22c!:hN,\تNYv0~~9~2x!rbLBWҊH+ qd=K&N:N1' $OBcCҵyhqB o GyVeH˜DQ,G%6+y weG8ͨx*XbP>,ihJu}7oN0'|)ɟ"rW;ꚍ&H"V~ yMڂ[8+>2 FjHcMkI2{P`))*lL42:Zg8C'&;8zled'*sd`5tVWVVw칐P|FY݋I%HC[F uJfWflE Aw: q^+u+{ 71|)+1Uz!P;xZx;`cX[ p1q*ך)f3ƙXvVTQIN]@+qHOmbEqE+UU*1ejj]?jatcatBat Q%@'H6$Ѓس{bD; S-;b/Ag<ݮu&5eɮ l bGQQEbq;PK"Tl[D#ppt/slides/slide8.xmlY[S6~_S8$ ;32]X][2B;=رC„e-3`];/,uD{CXcfQr9iRVMQB2\0ra ]1C "KQya\_첟O4"su2tMEVVc0lFΊDʂFJF')/i@}M#BQHAdށ{Te?y KnH9~nwmöw9yaku;%~$ ?.y:8Is=clWvnT5wH܇9$V;yжg >3kxcewN{bľ_+^qA] 8meY?X9@d)7l=Uo3S/Fj zaJ+aփZK_ :\~)vb6h~]ŧ ѨsԆstGbػoJUU8D!OTA"),*eP͐#/4cG޷O:w굆V8I38v\†cVjAܔ2*OC 7edؼa;Υy#&4ǥԂ<8g\*5^g-UTTG=yؠcrTSlW51)~jjBcKjڻ^/~˫ S\|bna+[WF)SS?`ЭϓE򎍢6|OLl>IMMafS5C8,Q1 Z M|Rz@rZu jZQxtrRtJ޻%DV+/W-o_b"1K'*<1:%%F ?wb^AQJm#Fpgwww~a^ޛQJ< ,֣@g0B҄DdEfQ~\ۢWKCa$'ijVEy,s:Z렶'mZD_;v?PK"T;Y ppt/slides/slide9.xmlVms!+ %Vk:tjD 9P g]ԉƗqr{VKGhp#y~yTBCBf.}R-1ݬNJVS@]r%ho/ HH*ѐܨV(-7lD)7k xΦTRRsϴ2Z4G %@у7FyuCp.Z"|\lXQ&*pP>%_mz*.B };Zp̉85:0pH7xH7az!e7e% sen)&:Tb۱dL㮒O 7͖Υ3+6^kdEqǭȡ]RuC9Նh80}Osd7G?(}T‡y# Lr4YDA0?tQȔd`w:|]5ȟx|?$! ] ~@y/9,ȇt'B!m3DGCpW0WۀavH/gRɰFfg BះB PERG|I[ ӳ?g)Mq<]qvADsD=O=@dAͳ>l D?xه͇xo*iYbe%-WIWARPK"TF[Ϗppt/slides/slide10.xmlWo6W= mM3NP Ȍ;MTHZY 4}d}$jBI1<+PI_.wWo뱕 VedRc--yE왮R8f ģWD"7ǜ˥+A Ah1h`^H>3:,dX ~?L=&oA9Rⓢ@8YҾ8WM=Ufi*fR"8D*,Ciy}h?NpDZO.FmV\8ѰM.mM,R 4$w[bYmksر᭸Xsm<*Kfn Y~&}aE̍V<ѐ?]ͤ`~ GL<bqLg "JBy%N%TMg%>Ē+A19<1O (/ ԁBTk%{ܝ)O8QAg #uc]%+br`khsJB J䈁U-f|R}VT {DkcB=7:),wEօu3~^PK!S_auP,hbІ}O4[ͫ uBw>䃿IL4[/bA7?RHw%wX|_6/-OP+w-m吭%^-r:qNgR#Ι[hy)<Ϝ5Šm;ř)p:iP%7DũN3SOo~(.U>[Q OaR*_rqb8zT] ϟ0^=0FIد?H+7WO($00fxi5S^IzqAG}X[0[/=1L>鮒:bYMMҟ`'Eo/w(A_}PK"TttتEppt/slides/slide11.xmlVn=}WI"ROTZ[YfF nv33;3~bU*T #?a$43\}8^ T.8VS %i[ JE))Ը؛\2ưe)O V(!LWe 0ѺRȌMVS+DX[Mzl@Fb1"KߺN+r at2!=a {$lG,mVߧ͊}$;![Cr)ݬ9J~\U]; $iHInTR]ȯ+ oRmXW.*'~ į*>@jyeIeXDѢ>=2?(!>PeMl2H&n e D4V(.,K-ߊiufKwZ)ydVj=!}kc]@+8h4DSE}&mAn""iW9hRS_ 0Zz0=p(Z bwc!fT'n3-f"̭lx`EqǭȡΥCCC6D)ˮ<>Mџ`/!ݛHZxs# Lڼ5YuA0RȔd`w|UԝOS] \*r_IR}X #kB'HS A4i+Q&y;3_pcgDL!^li#]BsOg?(ТxE ⴩Uq{}qS?08k o/; } Gҥ{ Ii6rzFoabs#)ޮƛ?iXbUQ˳%pO/Mb_PK"T/0sppt/slides/slide12.xmlVߏ'WOCIԊ/ʏktb7 wŻ{EN%/ |WZF8/#RofO^W/+U)*;%ijJ_+44mwoFIM~w~^K& E+i}AY'<݃belx.q?]عKf@Fb1"s)C:ݭ]P0OO. WYoUf1R^X\Ӫ& JqW\Ikn=J4". { `!J{c>Y;ҩaOjT*Tj癆5uq7F6(r$2'觷F@9:)ג)=LBa2QŅCs |$X (1R3':qk&tHyH׌}!]RnķKRr6]h-nbX0&~WIŗՋ;Čf[璢bFͰCNBĆwGb䲖 I>rx pġ~.̳ÌW%H˓z?+K* =OLIv{^ Ob7U3y{! 1MRtsCa|B`v ޼ThjP^.J*q؟,t)P=t_@ZȐR/iyOӯ(^|UQ͊b@Hi!IEޠ vHnÒV@IΧb m=(rqDʉKÆ$"QЕMQ UhduUX̀y&ة%#/پĝET4S."j(g5-@whƖ̠,*#zM/A8PK"T+I ppt/slides/_rels/slide8.xml.rels 0_%ݤc/">@Hi!bޠ f,HtehE.c,yY]UK?3`IC<9v K:#q͢_*X£-X5f~ӂ ;ZO4c[&Po_lPK"T% ppt/slides/_rels/slide9.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T%!ppt/slides/_rels/slide10.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T%!ppt/slides/_rels/slide11.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T%!ppt/slides/_rels/slide12.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"Ti\??ppt/media/image1.jpgweX^.tKww# XbE钐\iNYJ@S_o}<̙w杧5:L ;'4@ a@`0cSSQQSPг3вQP01rprpS3 s sqs KKECAmO]l-A$`<_00…rL aaba@$X`a2{8Hrn] Q+Il6ߧzSb{? $eVxZ$Tni?B$! ak!$Y[ bjΘ*K6kfjOAWd|(_#˲Mj5EV꿮-\\#ψh*lqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK"Ti\??ppt/media/image2.jpgweX^.tKww# XbE钐\iNYJ@S_o}<̙w杧5:L ;'4@ a@`0cSSQQSPг3вQP01rprpS3 s sqs KKECAmO]l-A$`<_00…rL aaba@$X`a2{8Hrn] Q+Il6ߧzSb{? $eVxZ$Tni?B$! ak!$Y[ bjΘ*K6kfjOAWd|(_#˲Mj5EV꿮-\\#ψh*lqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"T[Content_Types].xml͘n0_%ʵ"zr&> m6}' !ٞ~]"6L~Iq"y?~޷7)0 ӏ֪+BL:NM"<IͩťΉ'́$‚-[jă-褰7ne1=n긲T?J,IuJ&j(̩̆VZs33fm( wPW9=2^Ocd2iͷ[(G#jL8$PdJ +e)pĚ梳7` E;T;H {u"IP!Bu"EP.3m֤a%cyY%0s>[|MzҭPK"Ty%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<<\/_JP! ^e_yȡUWE|ɸՂJZ)!7}rQ䪁FUl$Us^)ȁ mG+--5@[sQb K%){]Ag-ϛbLP-j4VTT\Iu 8L49b{@d}{%-w߸K:t;}ء-=Ǟ:C-=Kv衍0la`c!)'d qz#P /굦WTqGcck0@wj^[,Dۺ_%i5x\Gh۰k0"lۘ!|P%D]5fOn!lESt]:ؖDܙPL?a託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlR'ppt/slides/slide10.xmlPK"TttتE+ppt/slides/slide11.xmlPK"T/0s.ppt/slides/slide12.xmlPK"T% 2ppt/slides/_rels/slide1.xml.relsPK"T% t3ppt/slides/_rels/slide2.xml.relsPK"T% [4ppt/slides/_rels/slide3.xml.relsPK"T% B5ppt/slides/_rels/slide4.xml.relsPK"Tzwft% )6ppt/slides/_rels/slide5.xml.relsPK"T+ 7ppt/slides/_rels/slide6.xml.relsPK"TA 8ppt/slides/_rels/slide7.xml.relsPK"T+I 9ppt/slides/_rels/slide8.xml.relsPK"T% :ppt/slides/_rels/slide9.xml.relsPK"T%!:ppt/slides/_rels/slide10.xml.relsPK"T%!;ppt/slides/_rels/slide11.xml.relsPK"T%!<ppt/slides/_rels/slide12.xml.relsPK"Ti\??=ppt/media/image1.jpgPK"Ti\??7}ppt/media/image2.jpgPK"T.!żppt/slideMasters/slideMaster1.xmlPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsPK"T$[Content_Types].xmlPK"TEhSG2docProps/core.xmlPK"Ty%}docProps/custom.xmlPK"TQ 6_rels/.relsPK"Ti Hppt/presentation.xmlPK"TE; ppt/_rels/presentation.xml.relsPK"T0K ppt/viewProps.xmlPK"Tppt/tableStyles.xmlPK"T }.ppt/presProps.xmlPK"TBppt/theme/theme2.xmlPK"T mu!kppt/theme/theme1.xmlPK"Tђ7-ppt/slideLayouts/_rels/slideLayout11.xml.relsPK"Tђ7-ppt/slideLayouts/_rels/slideLayout10.xml.relsPK"Tђ7,ppt/slideLayouts/_rels/slideLayout9.xml.relsPK"Tђ7,ppt/slideLayouts/_rels/slideLayout8.xml.relsPK"Tђ7,ppt/slideLayouts/_rels/slideLayout7.xml.relsPK"Tђ7,ppt/slideLayouts/_rels/slideLayout6.xml.relsPK"Tђ7,ppt/slideLayouts/_rels/slideLayout5.xml.relsPK"Tђ7,ppt/slideLayouts/_rels/slideLayout4.xml.relsPK"Tђ7,ppt/slideLayouts/_rels/slideLayout3.xml.relsPK"Tђ7,ppt/slideLayouts/_rels/slideLayout2.xml.relsPK"Tђ7,ppt/slideLayouts/_rels/slideLayout1.xml.relsPK"T'v!ppt/slideLayouts/slideLayout9.xmlPK"TJI,!uppt/slideLayouts/slideLayout8.xmlPK"TSd{g!hppt/slideLayouts/slideLayout7.xmlPK"T}!ppt/slideLayouts/slideLayout6.xmlPK"TE˧:!ppt/slideLayouts/slideLayout5.xmlPK"T?N!ppt/slideLayouts/slideLayout4.xmlPK"T6\#!4ppt/slideLayouts/slideLayout3.xmlPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlPK"TkO ' "w ppt/slideLayouts/slideLayout11.xmlPK"TF "sppt/slideLayouts/slideLayout10.xmlPK"To@h)!8ppt/slideLayouts/slideLayout1.xmlPK"T%1,odocProps/app.xmlPK>>Ppandoc-3.1.3/test/pptx/incremental-lists/with-flag/templated.pptx0000644000000000000000000026024507346545000023351 0ustar0000000000000000PK!6 ppt/slides/slide1.xmlXQo6+QX۴(FiE*$GR$yI,/#xwRiÕ$(ALr$H]FP[IRX[16yJbNT$ؖJT0o(Fs\.>Z.y>.D3A,i ^VVifƟ2g f̍dYWjj) IJ6I[K/eFxad^=!=$@ba5-}j~c\.bVsnCi\ T*5H*Hn gU :dˆeͮ+q~ d, ghOK %n%YKC}r&84ok PcX8rw?MYee麷翧#i^`sE-SZcB8&~.s\!]]GGX$\ƖBkh\r ^e 2ԖlDU~SʆUpAհ;+Z{YN|nl΅3vNPK.BW~P PDaoB݌~U~I 3IIf"  rr{|//A-=Еkpe%,շ22I{anφG7ۀҸtp\pqdg?{u6:<$4R8S=~Q\<(<[Q'TEڪ"}QKYك"=}8{Bad0aVԫG  0v+#=0 #˞Pg0¸ V͚[` PLIw%C }q8a7{܀zzab e!h7n+'_+_;Ix{8>`PK!LZ8iSppt/slides/slide2.xmlVߏ'WOCIӫ_*jn1`/:8[w⋜i%/|313/^j4z#fKῖ?/^ةWS:UvJg0VhiQ+2J[{wY%o B ™SЬ` [(2K'D\gv;$9aH+i^7yE lʒNwkW7v3 dӓC S;f՟ǴYu}L'8˒R%иKawiI%rz| (%}Zؽ6|OT{'lzL5*%*5L˚H[EKC}~pP 4A?1:Q7$ R%,R{e2 &)SIDVN5*~@]Oҵ-:9fOZ4_RV[DR 3"PECS2sޘE%_T/3mK't+6^;w99sB r(T@^o!8 S<;(m"-o( -*p4w S l|r% ht78 4  rO(ݘ -TO?MqEo)ƣ+?G3㜶Oh_~+6ƤmADD=dH=@ 6>D6x ?j~^lv;ö^1'6IA_PK!g ppt/slides/slide3.xmlVێ6O .}Iӭo$n`5b4IYR;$EKx FDrgf\BN=FB3å?\W7/Sv3:ǥJQQwejAV[Q[%ҏQ)2^J($o UBbt]FApo\ 1zm+fUQ|,-HJ1Fzi"yIgV ه$P=bY)mV.Nl FuZKwe]}kؽC@PQ%u0 %}Ț߿6lNL9'jT Tjˊ۰;EKC}zd\R 4E߽1ȳ EW[$s4`2QŅEK|WQhF/3@>p!#_B!W p2A3\߈ .Kͬ㇪jt3tc a\[cVis`*LRKS i3b:zoO3vƄqͱMNNLѸ'l<* ( ՝&6x}ZJv@pP YI F8]wχZkG]`d,W2}ts8(߶W@8 ~UE<[Ɉg}ɏ@-; Qpi/'me͹A֕n?mw󊟱n=غ=)^qЋHE.s-.h@_2qE0R64 :2%Jkncnb{HV][\.]4`[|lDg@W7 E|S&?rM -~A ςMI]/ Q`]c-+K3ev_ͧk_Sl ;L,2e8Pރ6A&T&ްT#tP=15\L#.M dg U!M?H{+˶pZUO>]%%EqBV4#+lr/8}hLʋ%FH#1WblިqyXb\/1OHV$F7q6JyH~%:kwz|_Sy_Fb\߉M7OM:% JG=*8lNͺkxg8>H娿I+dݬ$5uTnR֧Wo/}/PK!&Yppt/slides/slide5.xmlX[s8+?m!iʔtzIw22> KƚȒ# H1P!B /#˧Iq T2m}֊\Nߣoo/WTize=M3U0 TX <\պ92m֫4 iΤ J4Ă&ㅩh+43Ư^qE #͘kO] rN$Y?$ռЗeh5 IzT Y? Ydi84;ɮ7ǵd<5jĭ`W;m[$aA.ݻȐ:e '5;;0vh2Q (7so]k)**ãkSG(iA7U:֮Q(V@eJPQ+F&9D6cH6`0ޤlz۹[.w~XVki-7WU@xq ɧw!^IhIn"+ cZ9^bt_13@ĸ/1/1.Bz1qkĈGK8~EbJ;ww|a7TJ=/f.SrْUA`ay0\{LJmX\ ڴ|,S~=+HUt/5$nvbտPK!"塓ppt/slides/slide6.xmlVS6~B$p 7q7Pʐ*d$%$wˉCr}%Z}9ZP$;HDE. &Q/'PVdT4Cu^њPT510U%.y^pMHyy9~xE91`X#ZZwc,yLv$_T3nn,nb Aj:J$s#P!.gp-G r_lҠܯyۮyuk?Jb뜷WՄNQv.kk$$8hN[TȬ3,iٰR_,VV~ 6c{ܬqw2Q@<ݰ&F hO5c ɣDRBwqgGpFGqdaylT3V߽=)GsiCf:Db"gd^:8w!QWE/6%V7B規!s#I36;Y'4n;`Ci 9edqq]2HQ'ۢR!#a萱!ϗO{)LsDB6}1n[ڬ]$f i6G)0 9lyvE/F]D VYG(F*-'9$/ڎ˯=V,]BC"|vwҙϾDiWu5 LG+!Xj.XW3&I&(9G 0x>cU-9gloW yX>Q^v.CKsz4H7}_^ܕHˏbo_puwT0(NOL)̬V9iTxݡfv._Ru'tɛ(;VE"* zoZ[G߱0z0zxF REQ N[%tD/*ǽ.}>DTKxʋͤbeC:(ibq~ncg_PK!p cppt/slides/slide7.xmlV[o6~ ](u$MYfiPBҷ^$ˎҢ^$ ϻ뜣%UI1gqHd|>K/zh"* ̘bN2}& *6*'jSEV "&ᗳK,r*('+t)8FZ1{$Y2(JJ,?b\#/G  9FXޓ0/d=F}=kԎC}\*59osWf8EsѺɣFBSduŻnE̦a *4,ÀZnl8۬)tOqQT,=֡ !}XRєzoޜaNBг?y7.w;MD:#bN/uAʕ;:rV|d;@`ԀS ƨ۴FQdv9$VQp]THW7dadtu>'߲nY+;o;8jSoed'*sd`5t.,s!Zv2J< \`ܕt%Yaۋ^vg{ðj@4f b;& 0f%F]Չc N60]lj(.x3&f&C/(̇S:{ Sx:)j)RsdiJ[v:ӧ:,te 66XBgd)wߩ9?^Mr#@kNF*Ƌ{LzV&%7O *[X Qlv]M貓A"a.*ڋ/Jqu*Tn/-%l83T#8|wRctx_R4|~jQآh߱**W#8,WF-XPza@(%@'H6$Ѓ)س{bD{ S-;bO QMSnW*jŲ`7낄cè(WPK!zC2%$ppt/slides/slide8.xmlY[S6~_S8f̖2@J-Y ]عad /Xs"K9lǞ~:iRVH TD pqs`nE%t?,EuP)s~~>Ј\h&AR,"yQJw Ra,Kca~/Q-6,Fph ]glnZhE´lDd 9 `?H t"3ՆMdi=*b圱pݫʔ8ҹ"£88a0NVK'|AT 5̀ZnluB?W;oai]X%rq' _|N>?0S!e1̰Z3b5Y͟R|8F)NgO]: l3 ՘1>L0"'lmqJK::v Wq`( 2JTskoA= ?c$w77ZYM B{wCdoթLx iex(,רqƕ 2qCS 6ԮZ@USүS/V:@2n+F}۱ ngD@ ^bt E$Ή94]=R!_=pfXH"IKa7*m@|e,jΙ}V '4pr9z,;r& eSnzZUo׎i&o*wz*7-Yj ,3;O($[c۶E*>'AnuGQνv_ u>mz@i*? h<䩺*(P\$U8N72P}yӛ#{,PT.Zq(iNܡKذEAü7㽔z~fF:n`] = 3v)VE5L}X.HT?.xٺYftȱͭAmOTv"PK!nY ppt/slides/slide9.xmlVms!+ %Vk:tjD 9P g]ԉƗqr{VKGhp#y~yTBCBf.}R-1ݬJVS@]r%ho/ HH*ѐܨV(-7lD)7k xΦTRRsϴ2Z4G %@у7FyuCp.Z"|\lXQ&*pP>%_mz*.B };Zp̉85:0pH7xH7az!e7e% sen)&:Tb۱dL㮒O 7͖Υ3+6^kdEqǭȡ]RuC9Նh80}Osd7G?(}T‡y# Lr4YDA0?tQȔd`w:|]5ȟx|?$! ] ~@y/9,ȇt'B!m3DGCpW0WۀavH/gRɰFfg BះB PERG|I[ ӳ?g)Mq<]qvADsD=O=@dAͳ>l D?xه͇xo*iYbe%-WIWARPK!0Ֆppt/slides/slide10.xmlWo6W= mM3NP Ȍ;MTHZY 4}d}$jBI1<+PI_.wWo뱕 VedRc--yE왮R8f ģWD"7ǜ˥+A Ah1h`^H>3:,dX ~?L=&oA9Rⓢ@8YҾ8WM=Ufi*fR"8D*,Ciy}h?NpDZO.FmV9pa\7Y4$hI.} 4yi^n5Ńo~baJAﮗKNlz_[BWZ![K"Z+dc+uƥ G3R@yze}9k !C;cw3StL|6r(Ko:'4S)fQ\>(~}PäOU:Np?_azBa0F?_Q0.Wo0.PIwa<`-j >.8NS/`^zc}*.$kG]%uIJכ?5N:^>P PK!SکګEppt/slides/slide11.xmlVQo9+pmآz* ;굷$z:mShqxzf3㗯VBN]#R/ izG݈X)*NL-4Vç]n9 HEƭ=璉-+}BQaR.ՇV8ֽBflx̰Z!J7l=6oE9iZcDZIuV"/h5UxCzhU` {$lG,mV~اʫ}$;![Cr)ݬ.rVS@. uHH*Ґܨû._ްdۿ۰W _?3x]:RO_u|L5*&*5ˊ밈EKC}zd\9QCCPeMl2H&a e [D4V(.,:=PW[:).%-!jYʖn@#su 0~tMzUkGHvq rnPnvyY+}|4uË/asK-=tgZ8-Mp1MhO㱔O3w͖ 3_N[tEqǽȡΥCCC6D)˾?y~Qo#i㍢yk :Ń`q)nslz8<Wp-ܓmI2ONF=K6xwLn5I[ŲWt]-u>lN6A_~PK!Y;ҩaOjT*Tj癆5u7qF6(j$2'F@1:)ג)=NBa2QŅCs |$X (1R3':ik&tHyH׌}!]RnķKRr6]h-nbX2&~WIŗՋ{Čf[璢bFͰCNBĆGb<䲖 I>rx pġU}=OJ!'~IWUnA>GV; z,0NfCbp/& o!熔-ܯ=@ڽy-62]4˕T2㦃?9Y(&~C}i#CBK 癿O?;x݊b@Hi!bޠ f,HtehE.c,yY]UK?3`IC<9v K:#q͢_*X£-X5f~ӂ ;ZO4c[&Po_lPK!O ppt/slides/_rels/slide7.xml.rels 0_%ݤ*ыOR $4bޠ qm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK!i\??ppt/media/image3.jpgweX^.tKww# XbE钐\iNYJ@S_o}<̙w杧5:L ;'4@ a@`0cSSQQSPг3вQP01rprpS3 s sqs KKECAmO]l-A$`<_00…rL aaba@$X`a2{8Hrn] Q+Il6ߧzSb{? $eVxZ$Tni?B$! ak!$Y[ bjΘ*K6kfjOAWd|(_#˲Mj5EV꿮-\\#ψh*lqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK!1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\םx4쏗 LGSk9!&& LΉ ́w$‚[j%L輰.n<.sAL*XJ-nj4P5 }|%hY1S3xLAmu4DŽkA@LZ*C0d}BV%'j9$PduJ b\\)KL7t)ִvQ ~Wy u"AP Cw$IT!BY|UaVnTA/X~2Uko8P@;G%rҳ2AUשn7GM x%wRs+r\΍|k+~)i ^GSztN~2'? OCpBsɭ4ikƳTwPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<4-Z4&Jw+'>jRk}zwA}!3!fSGSkuPZ ͳKV"RQ\Hu72( qB fD+o>S>)l8zأG=z:ѓ=pG=#c]1QB"DzQezO4NmfFQy}(Ɩ(l%ݐ=SkzT+ubt>#flRFi|:/C6'A5za'.!,}{^(;`v3[ uFlH?eêbvqOL ꈮki:@AsL)S((S y1H&$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKdPSppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}ppt/slideLayouts/slideLayout9.xmlUTux PK!x%,CdocProps/app.xmlUTux PKKK<SFpandoc-3.1.3/test/pptx/incremental-lists/without-flag/0000755000000000000000000000000007346545000021174 5ustar0000000000000000pandoc-3.1.3/test/pptx/incremental-lists/without-flag/input.native0000644000000000000000000001157707346545000023556 0ustar0000000000000000[Header 1 ("slide-1-content",[],[]) [Str "Slide",Space,Str "1",Space,Str "(Content)"] ,Div ("",["incremental"],[]) [BulletList [[Plain [Str "These"]] ,[Plain [Str "bullets"]] ,[Plain [Str "should"]] ,[Plain [Str "be"]] ,[Plain [Str "incremental"]]]] ,Header 1 ("slide-2-content",[],[]) [Str "Slide",Space,Str "2",Space,Str "(Content)"] ,BulletList [[Plain [Str "These"]] ,[Plain [Str "are"]] ,[Plain [Str "not"]]] ,Header 1 ("slide-3-content",[],[]) [Str "Slide",Space,Str "3",Space,Str "(Content)"] ,Para [Str "Even",Space,Str "with",Space,Str "some",Space,Str "text",Space,Str "first,",Space,Str "these",Space,Str "should:"] ,Div ("",["incremental"],[]) [BulletList [[Plain [Str "also"]] ,[Plain [Str "be"]] ,[Plain [Str "incremental"]]]] ,Header 1 ("slide-4-content",[],[]) [Str "Slide",Space,Str "4",Space,Str "(Content)"] ,Div ("",["incremental"],[]) [OrderedList (1,Decimal,Period) [[Plain [Str "These"]] ,[Plain [Str "are"]] ,[Plain [Str "incremental"]]]] ,Para [Str "But",Space,Str "this",Space,Str "text",Space,Str "isn\8217t"] ,Header 1 ("slide-5-two-content",[],[]) [Str "Slide",Space,Str "5",Space,Str "(Two",Space,Str "Content)"] ,Div ("",["columns"],[]) [Div ("",["column"],[]) [Para [Str "Incremental",Space,Str "on",Space,Str "the",Space,Str "left:"] ,Div ("",["incremental"],[]) [BulletList [[Plain [Str "one"]] ,[Plain [Str "by"]] ,[Plain [Str "one"]]]] ,Para [Str "With",Space,Str "something",Space,Str "below"]] ,Div ("",["column"],[]) [Para [Str "Incremental",Space,Str "on",Space,Str "the",Space,Str "right:"] ,Div ("",["incremental"],[]) [BulletList [[Plain [Str "one"]] ,[Plain [Str "by"]] ,[Plain [Str "one"]]]] ,BulletList [[Plain [Str "already"]] ,[Plain [Str "here"]] ,[Plain [Str "though"]]]]] ,Header 1 ("slide-6-two-content-right",[],[]) [Str "Slide",Space,Str "6",Space,Str "(Two",Space,Str "Content",Space,Str "Right)"] ,Div ("",["columns"],[]) [Div ("",["column"],[]) [Para [Image ("",[],[]) [Str "an",Space,Str "image"] ("lalune.jpg","fig:")]] ,Div ("",["column"],[]) [Div ("",["incremental"],[]) [BulletList [[Plain [Str "An"]] ,[Plain [Str "Incremental"]] ,[Plain [Str "List"]]]]]] ,Header 1 ("slide-7-content-with-caption",[],[]) [Str "Slide",Space,Str "7",Space,Str "(Content",Space,Str "with",Space,Str "Caption)"] ,Para [Str "First,",Space,Str "we",Space,Str "have",Space,Str "some",Space,Str "incremental",Space,Str "bullets:"] ,Div ("",["incremental"],[]) [BulletList [[Plain [Str "one"]] ,[Plain [Str "two"]] ,[Plain [Str "three"]]]] ,Para [Str "Then,",Space,Str "a",Space,Str "picture:"] ,Para [Image ("",[],[]) [Str "An",Space,Str "image"] ("./lalune.jpg","fig:")] ,Header 1 ("slide-8-comparison",[],[]) [Str "Slide",Space,Str "8",Space,Str "(Comparison)"] ,Div ("",["columns"],[]) [Div ("",["column"],[]) [Div ("",["incremental"],[]) [BulletList [[Plain [Str "one"]] ,[Plain [Str "two"]] ,[Plain [Str "three"]]]] ,Para [Image ("",[],[]) [Str "An",Space,Str "image"] ("./lalune.jpg","fig:")]] ,Div ("",["column"],[]) [Div ("",["incremental"],[]) [OrderedList (1,Decimal,Period) [[Plain [Str "one"]] ,[Plain [Str "two"]] ,[Plain [Str "three"]]]] ,Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidth 5.555555555555555e-2)] (TableHead ("",[],[]) [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1"]]]]) [(TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "2"]]]])] (TableFoot ("",[],[]) [])]] ,Header 1 ("slide-10-content",[],[]) [Str "Slide",Space,Str "10",Space,Str "(Content)"] ,Div ("",["incremental","nonincremental"],[]) [BulletList [[Plain [Str "these"]] ,[Plain [Str "are"]] ,[Plain [Str "incremental"]] ,[Plain [Str "(the",Space,Str "incremental",Space,Str "class",Space,Str "wins)"]]]] ,Header 1 ("slide-11-content",[],[]) [Str "Slide",Space,Str "11",Space,Str "(Content)"] ,Para [Str "These",Space,Str "bullets",Space,Str "are",Space,Str "incremental:"] ,BlockQuote [BulletList [[Plain [Str "one"]] ,[Plain [Str "two"]] ,[Plain [Str "three"]]]] ,Para [Str "These",Space,Str "are",Space,Str "not:"] ,Div ("",["incremental"],[]) [BlockQuote [BulletList [[Plain [Str "one"]] ,[Plain [Str "two"]] ,[Plain [Str "three"]]]]] ,Para [Str "These",Space,Str "are:"] ,BlockQuote [Div ("",["incremental"],[]) [BulletList [[Plain [Str "one"]] ,[Plain [Str "two"]] ,[Plain [Str "three"]]]]] ,Header 1 ("slide-12-content",[],[]) [Str "Slide",Space,Str "12",Space,Str "(Content)"] ,Div ("",["nonincremental"],[]) [Div ("",["incremental"],[]) [BulletList [[Plain [Str "these"]] ,[Plain [Str "are"]] ,[Plain [Str "incremental"]]]]] ,Div ("",["incremental"],[]) [Div ("",["nonincremental"],[]) [BulletList [[Plain [Str "these"]] ,[Plain [Str "are"]] ,[Plain [Str "not"]]]]]] pandoc-3.1.3/test/pptx/incremental-lists/without-flag/output.pptx0000644000000000000000000022321207346545000023453 0ustar0000000000000000PK"Tv󭁰 ppt/slides/slide1.xmlXQo6+QX۴(FiE*$GR$yI,/#xwRiÕ$(ALr$H]FP[IRX[16yJbNT$ؖJT0o(Fs\.>Z.y>.D3A,i ^VVifƟ2g f̍dYWjj) IJ6I[K/eFxad^=!=$@ba5-}j~c\笲՜[P%6յo 4$[BYn*,ٲᬸlYn<* cgvY&}aIxFIF~" N!M%-ZBs>idEDSArV(AFٱ|rH =z~Q 9\3y8

                pQ,/6_( 3%܂fWY% (Qߔi\yD5J^SA73$ۤ2s9 չn,?mwC4Qh؛Píp7_G j_>z L`RǥY}m4ABjGa.x~{\0fy{q`+teD\YdpɡKmLhL`؀۳a)k t684%4nܡ?)*"υ@{ݸ  3TOG*7V UH_T8FiHO0ΞPY+Eꑄqx|q8mq"݊z8F*,}Ȳ'Y+01UfX)9S]ɐzqACX /7`^ǻC~CYڍJꉥW늴5N*^<4}PK"TY`*ppt/slides/slide2.xmlTn!SRU^Ԓ0r;8+YJ_``fΜsVd4!DlOoN*헷wQK6vCJc, ΃Þ!lXg+KpI픀ON<:*צj_hݿ|ZsYO%o%;gvsƘKyxMu颏ž-k_7PK"T?\ppt/slides/slide3.xmlVێ6BO-,}IԈ7-,F&)X䒴b}hIoHҠ}H̙徖 jT fBmşߞް^t53w38 h) 啖[4O=+A 9]sC:trI6; G)D:} P0~f Z!xEb<~7lizc<",j KɐzqA'CG[}l&ɺXIfىސcyarunPK"T6mppt/slides/slide4.xmlVr'!F4DĉɌGDj -c[~/#gh4ӾH{sWBa4zgfK<{__NqڍWcB+DIݙؒz5 "9)ԸooV+;Rh@PCh1h`^J26WqVJ<㰤& "B=5Z444٧/Jr.ocqMb9-{`f2QŅES|y:*_^6ڛi]6gK-]J6V?O kA! Ql_B:C[N/U'm+$mw~Gx9iBkh!҃zj-.AREFu1Ymm=t]( `'-ن~.ĸ9x%P4ݝ-GJ~.aG "iiVQ&yi^/AZq)nW+ CxUlz?oNqx?$"תy*rjR}X#%4&MKzo雄҅zN.~6>L7L0 G  *f>uDIEp U1lT1_G)TWPF00ՊSp{$} ']IڞaQ`(=1L쿈&uRmE޺v|zy;i?ILPK"TdT ppt/slides/slide5.xmlX[s6+?uIYfNw7d&2 > KƚȒ# {$X!u!Ë۹}:t쏟@%ӆ+9g1(t1ǢoET>DEcd,'LL\tN,tSM@E.p\pUzyb7%a4YN߷Nmqmv*s+6NN%IAyB%!t.2d(NYDUfVtLFI_; 9Q (7s\k+**ãkGS.O'(iA;z)dky{5F4$aiŔӹ_cl'"O{+[@J"1$Xj[boS 6[HO0?͐Q9h„zj/eb_2QiOŭDhFhmM70n.fso;c}&cYtu˙Kn+ $7@ E8M7l3.j#JLfZs>\ʿ$0lLbr9qiBݳXH%3绛^E|eozB "@RC$5*ԏ6&'7ia?g.vჽFS{#jrj)&S0ߦȄbadPXXƝg%7| '\,!*)Yki6Wu@xq ȧ!^IhI!++ -^y/1ߐ163@ĸ/1/1BS:b|8 1^wq8R#>gwx?|yo'Ʃzyf5+7wC-YTxAău3VaZYSq|ʼnMk,W27TEdjQQZ_9M7&q@PK"Ta;{ٕppt/slides/slide6.xmlVS6~BB p 32$b+,$%$wˉCr}%Z9ZP$;HDE. &Q/fy`C2J*c!:hMlL<Dq/MqMHyy9~xE91`X#ZZwc,yLv$U3n.b Aj:J$s#P!.gp-G r_lҠܯyۮyuk?Jb뜷WՄNQv.?h$$8hN[TȬ3,iٰR_,VV~ 6c{ܬqw2Q@<ݰ&V hO5gc OG.0YY)*b37,!g{ zgS&4 \u8"oS-eEDIuCseɼvuYq1RCZO)^H#m5ye3{JoBMxCF&;2;KY?et;{A4 N63P|FvfqNYhfcׅF qmQEIq%0Tt˧&؅\n!>PmVG'a?=9>ya?=GR Rj^Bɍڻ\@&%ݳ6T?*'9$/o=V,UB?"|vWҹϾEmiWu5 LG+!XiWW3&}I&(amYЉo@7bQ5r)R.=mC=DSlPVa_ce-! kYX`M̓UWSֿS_MrgHKN%KԿҎ=^#סW^i0vբcqb:~CtZ 'AD_~T~gR#ƨ[Aqzup`MgfeIkgH+e4pw ?ɧ(oZ?lQdw,TEUl75e޴.0߱0z0zxF REQ N;%tD/*ǽ.}>DTKe&]I2gWˆu:Qx賿PK"Tq bppt/slides/slide7.xmlW[o6~ ](bǨS$iZ2#NKŅ"^$ˎҢ^, ߽_Ti&(j")Q/byC22c!:hN,\تNYv0~~9~2x!rbLBWҊH+ qd=K&N:N1' $OBcCҵyhqB o GyVeH˜DQ,G%6+y weG8ͨx*XbP>,ihJu}7oN0'|)ɟ"rW;ꚍ&H"V~ yMڂ[8+>2 FjHcMkI2{P`))*lL42:Zg8C'&;8zled'*sd`5tVWVVw칐P|FY݋I%HC[F uJfWflE Aw: q^+u+{ 71|)+1Uz!P;xZx;`cX[ p1q*ך)f3ƙXvVTQIN]@+qHOmbEqE+UU*1ejj]?jatcatBat Q%@'H6$Ѓس{bD; S-;b/Ag<ݮu&5eɮ l bGQQEbq;PK"Tl[D#ppt/slides/slide8.xmlY[S6~_S8$ ;32]X][2B;=رC„e-3`];/,uD{CXcfQr9iRVMQB2\0ra ]1C "KQya\_첟O4"su2tMEVVc0lFΊDʂFJF')/i@}M#BQHAdށ{Te?y KnH9~nwmöw9yaku;%~$ ?.y:8Is=clWvnT5wH܇9$V;yжg >3kxcewN{bľ_+^qA] 8meY?X9@d)7l=Uo3S/Fj zaJ+aփZK_ :\~)vb6h~]ŧ ѨsԆstGbػoJUU8D!OTA"),*eP͐#/4cG޷O:w굆V8I38v\†cVjAܔ2*OC 7edؼa;Υy#&4ǥԂ<8g\*5^g-UTTG=yؠcrTSlW51)~jjBcKjڻ^/~˫ S\|bna+[WF)SS?`ЭϓE򎍢6|OLl>IMMafS5C8,Q1 Z M|Rz@rZu jZQxtrRtJ޻%DV+/W-o_b"1K'*<1:%%F ?wb^AQJm#Fpgwww~a^ޛQJ< ,֣@g0B҄DdEfQ~\ۢWKCa$'ijVEy,s:Z렶'mZD_;v?PK"TF[Ϗppt/slides/slide9.xmlWo6W= mM3NP Ȍ;MTHZY 4}d}$jBI1<+PI_.wWo뱕 VedRc--yE왮R8f ģWD"7ǜ˥+A Ah1h`^H>3:,dX ~?L=&oA9Rⓢ@8YҾ8WM=Ufi*fR"8D*,Ciy}h?NpDZO.FmV\8ѰM.mM,R 4$w[bYmksر᭸Xsm<*Kfn Y~&}aE̍V<ѐ?]ͤ`~ GL<bqLg "JBy%N%TMg%>Ē+A19<1O (/ ԁBTk%{ܝ)O8QAg #uc]%+br`khsJB J䈁U-f|R}VT {DkcB=7:),wEօu3~^PK!S_auP,hbІ}O4[ͫ uBw>䃿IL4[/bA7?RHw%wX|_6/-OP+w-m吭%^-r:qNgR#Ι[hy)<Ϝ5Šm;ř)p:iP%7DũN3SOo~(.U>[Q OaR*_rqb8zT] ϟ0^=0FIد?H+7WO($00fxi5S^IzqAG}X[0[/=1L>鮒:bYMMҟ`'Eo/w(A_}PK"TLppt/slides/slide10.xmlX]o6+ևҦQXl(dFiE*$$E[x"{yxE}8/1ms&\Q.'^'o?T]#(tI/)`%1bJBUO0@gizKeR׻W1OK&mL nW&UU[.>js%9CW}ì@N$)Y/I{q.g&H.C^d/F6(y9/6:/nv7bTCnCUpiSݫ (OCr9$U0%7%kvIх3wh%]a._L@X} a$ikoS~7nSt}~H^F kD$giK(ƘtFS!5h`fNDt< m}fp 6oeR3U;Q"pƥil1a8/n7 JRx,/!7֟$PCBuk0[8!#ZaA$lR6Ƃ :=\|_J!gc4m12r=m9c.Fw!K E> mKl73ow7<'-T> bL/&ulLG!{-Է(c۾S1ky~Ubg?~G;tbD5TaC =շ 2aw1I/ ስRpP.f.ܤeg3R`US'}L vqpMnVد{c?Q\T7'+NzDUd**֓O,>dEt¸qyzJ¸:0ޟ0(Z7ga福FTYdeǼ`񆑞^杝;;{y߾^ff@}JV&}dh`{tJ #AWr/52w?pFS%U\8^b?PK"T/0sppt/slides/slide11.xmlVߏ'WOCIԊ/ʏktb7 wŻ{EN%/ |WZF8/#RofO^W/+U)*;%ijJ_+44mwoFIM~w~^K& E+i}AY'<݃belx.q?]عKf@Fb1"s)C:ݭ]P0OO. WYoUf1R^X\Ӫ& JqW\Ikn=J4". { `!J{c>Y;ҩaOjT*Tj癆5uq7F6(r$2'觷F@9:)ג)=LBa2QŅCs |$X (1R3':qk&tHyH׌}!]RnķKRr6]h-nbX0&~WIŗՋ;Čf[璢bFͰCNBĆwGb䲖 I>rx pġ~.̳ÌW%H˓z?+K* =OLIv{^ Ob7U3y{! 1MRtsCa|B`v ޼ThjP^.J*q؟,t)P=t_@ZȐR/iyOӯ(^|UQ͊b@Hi!IEޠ vHnÒV@IΧb m=(rqDʉKÆ$"QЕMQ UhduUX̀y&ة%#/پĝET4S."j(g5-@whƖ̠,*#zM/A8PK"T+I ppt/slides/_rels/slide8.xml.rels 0_%ݤc/">@Hi!bޠ f,HtehE.c,yY]UK?3`IC<9v K:#q͢_*X£-X5f~ӂ ;ZO4c[&Po_lPK"T% ppt/slides/_rels/slide9.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T%!ppt/slides/_rels/slide10.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T%!ppt/slides/_rels/slide11.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"Ti\??ppt/media/image1.jpgweX^.tKww# XbE钐\iNYJ@S_o}<̙w杧5:L ;'4@ a@`0cSSQQSPг3вQP01rprpS3 s sqs KKECAmO]l-A$`<_00…rL aaba@$X`a2{8Hrn] Q+Il6ߧzSb{? $eVxZ$Tni?B$! ak!$Y[ bjΘ*K6kfjOAWd|(_#˲Mj5EV꿮-\\#ψh*lqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK"Ti\??ppt/media/image2.jpgweX^.tKww# XbE钐\iNYJ@S_o}<̙w杧5:L ;'4@ a@`0cSSQQSPг3вQP01rprpS3 s sqs KKECAmO]l-A$`<_00…rL aaba@$X`a2{8Hrn] Q+Il6ߧzSb{? $eVxZ$Tni?B$! ak!$Y[ bjΘ*K6kfjOAWd|(_#˲Mj5EV꿮-\\#ψh*lqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"TxZ[Content_Types].xml͘n0_%ʵ"t > 4^d oIҨBZ%?hCjɋh0)aҍ#̘s_ a0xj$ĤS$RԜZ\(H=%R#o`B煍n]8R*UZ<&)٘0- |%YŘ)S栥L?*0^m r{ecd:R4I60Ʉs) 0d-oMŕyOWrnMsq7` E=T7H { (DNB: ,D.36LlY0x"wCqBҜx2'? rB㮜x)'? OrM~~1xhPK"TEhSGdocProps/core.xmln0_%=qbD8RRͲ`65 "qm֤a%cyY%0s>[|MzҭPK"Ty%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<o/τƄeNnYVko 5b[6h,託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlRZ.y>.D3A,i ^VVifƟ2g f̍dYWjj) IJ6I[K/eFxad^=!=$@ba5-}j~c\.bVsnCi\ T*5H*Hn gU :dˆeͮ+q~ d, ghOK %n%YKC}r&84ok PcX8rw?MYee麷翧#i^`sE-SZcB8&~.s\!]]GGX$\ƖBkh\r ^e 2ԖlDU~SʆUpAհ;+Z{YN|nl΅3vNPK.BW~P PDaoB݌~U~I 3IIf"  rr{|//A-=Еkpe%,շ22I{anφG7ۀҸtp\pqdg?{u6:<$4R8S=~Q\<(<[Q'TEڪ"}QKYك"=}8{Bad0aVԫG  0v+#=0 #˞Pg0¸ V͚[` PLIw%C }q8a7{܀zzab e!h7n+'_+_;Ix{8>`PK!Bppt/slides/slide2.xmlTn!SRKZ^n]}Xu%K ̙sΊ&#Ie=ޯ|$Xjc{:;Ƣxgm;Um*i 7/x:Ul"%Uz@#X`FβZ>8ys~^oycڤ)'_QJ%4<< p!#_B!W p2A3\߈ .Kͬ㇪jt3tc a\[cVis`*LRKS i3b:zoO3vƄqͱMNNLѸ'l<* ( ՝&6x}ZJOG@vX}[{3lKfJ^ <7d!5"3\#_H|h+uɾ}w~Gx9iBkh!҃zj-.AREFu1Ymm=t](-`'-:\q/sJ*:xRQ݊b8#Y GOWPV00Պ)3z&?>ܓ.$mOA(S0}il&v_K&uRME޺v|zy;n?PK!dT ppt/slides/slide5.xmlX[s6+?uIYfNw7d&2 > KƚȒ# {$X!u!Ë۹}:t쏟@%ӆ+9g1(t1ǢoET>DEcd,'LL\tN,tSM@E.p\pUzyb7%a4YN߷Nmqmv*s+6NN%IAyB%!t.2d(NYDUfVtLFI_; 9Q (7s\k+**ãkGS.O'(iA;z)dky{5F4$aiŔӹ_cl'"O{+[@J"1$Xj[boS 6[HO0?͐Q9h„zj/eb_2QiOŭDhFhmM70n.fso;c}&cYtu˙Kn+ $7@ E8M7l3.j#JLfZs>\ʿ$0lLbr9qiBݳXH%3绛^E|eozB "@RC$5*ԏ6&'7ia?g.vჽFS{#jrj)&S0ߦȄbadPXXƝg%7| '\,!*)Yki6Wu@xq ȧ!^IhI!++ -^y/1ߐ163@ĸ/1/1BS:b|8 1^wq8R#>gwx?|yo'Ʃzyf5+7wC-YTxAău3VaZYSq|ʼnMk,W27TEdjQQZ_9M7&q@PK!"塓ppt/slides/slide6.xmlVS6~B$p 7q7Pʐ*d$%$wˉCr}%Z}9ZP$;HDE. &Q/'PVdT4Cu^њPT510U%.y^pMHyy9~xE91`X#ZZwc,yLv$_T3nn,nb Aj:J$s#P!.gp-G r_lҠܯyۮyuk?Jb뜷WՄNQv.kk$$8hN[TȬ3,iٰR_,VV~ 6c{ܬqw2Q@<ݰ&F hO5c ɣDRBwqgGpFGqdaylT3V߽=)GsiCf:Db"gd^:8w!QWE/6%V7B規!s#I36;Y'4n;`Ci 9edqq]2HQ'ۢR!#a萱!ϗO{)LsDB6}1n[ڬ]$f i6G)0 9lyvE/F]D VYG(F*-'9$/ڎ˯=V,]BC"|vwҙϾDiWu5 LG+!Xj.XW3&I&(9G 0x>cU-9gloW yX>Q^v.CKsz4H7}_^ܕHˏbo_puwT0(NOL)̬V9iTxݡfv._Ru'tɛ(;VE"* zoZ[G߱0z0zxF REQ N[%tD/*ǽ.}>DTKxʋͤbeC:(ibq~ncg_PK!p cppt/slides/slide7.xmlV[o6~ ](u$MYfiPBҷ^$ˎҢ^$ ϻ뜣%UI1gqHd|>K/zh"* ̘bN2}& *6*'jSEV "&ᗳK,r*('+t)8FZ1{$Y2(JJ,?b\#/G  9FXޓ0/d=F}=kԎC}\*59osWf8EsѺɣFBSduŻnE̦a *4,ÀZnl8۬)tOqQT,=֡ !}XRєzoޜaNBг?y7.w;MD:#bN/uAʕ;:rV|d;@`ԀS ƨ۴FQdv9$VQp]THW7dadtu>'߲nY+;o;8jSoed'*sd`5t.,s!Zv2J< \`ܕt%Yaۋ^vg{ðj@4f b;& 0f%F]Չc N60]lj(.x3&f&C/(̇S:{ Sx:)j)RsdiJ[v:ӧ:,te 66XBgd)wߩ9?^Mr#@kNF*Ƌ{LzV&%7O *[X Qlv]M貓A"a.*ڋ/Jqu*Tn/-%l83T#8|wRctx_R4|~jQآh߱**W#8,WF-XPza@(%@'H6$Ѓ)س{bD{ S-;bO QMSnW*jŲ`7낄cè(WPK!zC2%$ppt/slides/slide8.xmlY[S6~_S8f̖2@J-Y ]عad /Xs"K9lǞ~:iRVH TD pqs`nE%t?,EuP)s~~>Ј\h&AR,"yQJw Ra,Kca~/Q-6,Fph ]glnZhE´lDd 9 `?H t"3ՆMdi=*b圱pݫʔ8ҹ"£88a0NVK'|AT 5̀ZnluB?W;oai]X%rq' _|N>?0S!e1̰Z3b5Y͟R|8F)NgO]: l3 ՘1>L0"'lmqJK::v Wq`( 2JTskoA= ?c$w77ZYM B{wCdoթLx iex(,רqƕ 2qCS 6ԮZ@USүS/V:@2n+F}۱ ngD@ ^bt E$Ή94]=R!_=pfXH"IKa7*m@|e,jΙ}V '4pr9z,;r& eSnzZUo׎i&o*wz*7-Yj ,3;O($[c۶E*>'AnuGQνv_ u>mz@i*? h<䩺*(P\$U8N72P}yӛ#{,PT.Zq(iNܡKذEAü7㽔z~fF:n`] = 3v)VE5L}X.HT?.xٺYftȱͭAmOTv"PK!0Ֆppt/slides/slide9.xmlWo6W= mM3NP Ȍ;MTHZY 4}d}$jBI1<+PI_.wWo뱕 VedRc--yE왮R8f ģWD"7ǜ˥+A Ah1h`^H>3:,dX ~?L=&oA9Rⓢ@8YҾ8WM=Ufi*fR"8D*,Ciy}h?NpDZO.FmV9pa\7Y4$hI.} 4yi^n5Ńo~baJAﮗKNlz_[BWZ![K"Z+dc+uƥ G3R@yze}9k !C;cw3StL|6r(Ko:'4S)fQ\>(~}PäOU:Np?_azBa0F?_Q0.Wo0.PIwa<`-j >.8NS/`^zc}*.$kG]%uIJכ?5N:^>P PK!1ppt/slides/slide10.xmlX]o6+ևҦQXl(dFiE*$$E۲x"{yxE}82myҹHd({bcs8YG\0ÍC6(|ۖQofn&yw  OZ|Ę<&ulO!{-Է.),/F#V۾S9my~լbg?~G;tlD5aC =12aw1IW2_)kơX5.]LC.IHU!L1= uMh7[auDq}PQܜ(:U5ΪXOr?ȢT# Y;+ x¸>0naܜn^GYzPadFFzzwv؛wvWw~z5yJ+Y.J|*8LF۰3VVZǧ]X` ,{iE.~7Ig8Y;ҩaOjT*Tj癆5u7qF6(j$2'F@1:)ג)=NBa2QŅCs |$X (1R3':ik&tHyH׌}!]RnķKRr6]h-nbX2&~WIŗՋ{Čf[璢bFͰCNBĆGb<䲖 I>rx pġU}=OJ!'~IWUnA>GV; z,0NfCbp/& o!熔-ܯ=@ڽy-62]4˕T2㦃?9Y(&~C}i#CBK 癿O?;x݊b@Hi!bޠ f,HtehE.c,yY]UK?3`IC<9v K:#q͢_*X£-X5f~ӂ ;ZO4c[&Po_lPK!O ppt/slides/_rels/slide7.xml.rels 0_%ݤ*ыOR $4bޠ qm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK!i\??ppt/media/image3.jpgweX^.tKww# XbE钐\iNYJ@S_o}<̙w杧5:L ;'4@ a@`0cSSQQSPг3вQP01rprpS3 s sqs KKECAmO]l-A$`<_00…rL aaba@$X`a2{8Hrn] Q+Il6ߧzSb{? $eVxZ$Tni?B$! ak!$Y[ bjΘ*K6kfjOAWd|(_#˲Mj5EV꿮-\\#ψh*lqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK!1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\6Ll2".w+C_OqB}8!i˜;N~Zf'? ='䧭uc\Iu;PK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<#flRFa|:/C6A5za%Dɂozt>6=/0_tX؆P:xq)u<euٰ|sZ@t:olvZNP~)k%SJJ.J!B:H^ ϵ3`pF}ppF(HP<Ha)RtR<8$ ) 1I)!4; eCd wf!y}ߡ_PK!B{d5 ppt/_rels/presentation.xml.relsQk0}Fmka0dz0MBu_hh)}$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKdPSppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}"] pandoc-3.1.3/test/pptx/inline-formatting/output.pptx0000644000000000000000000006614207346545000021041 0ustar0000000000000000PK"T@f5ppt/slides/slide1.xmlUۊ0R: ò]Ȗ>+$%S頋8MJ}4Ҍ9K7m-, 4(K6E]v6s% *̜R ڀ򾵶5s~i7쇇%[Z3^75(@,H|X =X@O,#Chv_YKDɈb5YFhZE lz۵鑶ȼ8Ұ #<6>ͫO> $RY}yȃd*-KdvS@sҞb%Q>$!l*$\^b%ɝ*}Ѭ FDhN4nq ?hYm$ k]98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"T! [Content_Types].xml͗n@_pm!=\`R[tS.V߾(%Q, dwgc a4Y{<}=zd<%hC܅1. 8BR͉'zC nxt1m֤a%cyY%0s>[|MzҭPK"Ty%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<aa96w:q~WNI/K9E8 "_k"E%cw#Q+j$JGi~`;ԯM' ٮĴ 1|q A8r@o) o*1rW hA,jk0%wv!57m<3iJ*_ ^Y}0gnt.̖Voe5چ1#gFZUg:H Ȥ'FA}'Fap0@ O!%~\)'waap R;$C^ ҨHq4Br?cXw`X9,R{6~ 8? |,"8٣cVEr/Skz&ZHi:'' g4KQeȓ l/'q1eN( ƃ|F,mVT;z$O~PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlRRppt/slideLayouts/slideLayout11.xmlPK"TF ":Vppt/slideLayouts/slideLayout10.xmlPK"To@h)!Yppt/slideLayouts/slideLayout1.xmlPK"T%1,og^docProps/app.xmlPK&& `pandoc-3.1.3/test/pptx/inline-formatting/templated.pptx0000644000000000000000000011760707346545000021463 0ustar0000000000000000PK!71!5ppt/slides/slide1.xmlUۊ0R: ò]Ȗ>+$%S頋8MJ}4Ҍ9K7m-, 4(K6E]v6s% *̜R ڀ򾵶5s~i7쇇%[Z3^75(@,H|X =X@O,#Chv_YKDɈb5YFhZE lz۵鑶ȼ8Ұ #<6>ͫO> $RY}yȃd*-KdvS@sҞb%Q>$!l*$\^b%ɝkf!TfDhN4nq ?hYm$ k]e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\VO͖Ú,a?`7ԿPK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<31)7ǒxLݍ0c~DP$ARE aD3EŝrS?VFR8 V ]]٣sRG/K$s'APW#ҫ@NRkw0J|` [A |Y+n#yL/=;m gciރjyKLVў=xdͲ+Ej$m#eSn23d yqH3w<o3:(h3ċ)l!EC>!>!%a0{;i!!9BCi i?8JpqOHPr1PK!&ppt/_rels/presentation.xml.relsAN0Eb͞8)P!TrLmCjQTU~6?a Q;+*J`hm|o`^:b}diF<{ Ѧƅ^R*C˽T{"_咇L=ٶ?ޮi'zt 1" 8jU$7`:mN 0< ,E= E"gq12'Ot48g$Βg%Im9gq>2H/PK!g[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+O$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKv&Sppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}ppt/slideLayouts/slideLayout11.xmlUTux PK!Ex"Bppt/slideLayouts/slideLayout10.xmlUTux PK!z&!Gppt/slideLayouts/slideLayout6.xmlUTux PK!=[!Jppt/slideLayouts/slideLayout4.xmlUTux PK!im "ONppt/slideLayouts/slideLayout12.xmlUTux PK!h "vTppt/slideLayouts/slideLayout13.xmlUTux PK!s@y#!Xppt/slideLayouts/slideLayout5.xmlUTux PK!=t!^ppt/slideLayouts/slideLayout1.xmlUTux PK!f\$ "gcppt/slideLayouts/slideLayout17.xmlUTux PK!(D "gppt/slideLayouts/slideLayout16.xmlUTux PK!)J.  !jppt/slideLayouts/slideLayout2.xmlUTux PK!;FdvU&"mppt/slideLayouts/slideLayout14.xmlUTux PK!p O;"sppt/slideLayouts/slideLayout15.xmlUTux PK!!Pzppt/slideLayouts/slideLayout3.xmlUTux PK!K%!ppt/slideLayouts/slideLayout8.xmlUTux PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux PK!x%,docProps/app.xmlUTux PK33wpandoc-3.1.3/test/pptx/layouts/0000755000000000000000000000000007346545000014625 5ustar0000000000000000pandoc-3.1.3/test/pptx/layouts/deleted.pptx0000644000000000000000000015461307346545000017162 0ustar0000000000000000PK"T+ppt/slides/slide1.xmlTn ~8[u*UDJ|$F?G N EZ|^˩zoFg0gzPPK"T {ppt/slides/slide2.xmlTn!#GU֑rKZl,TZ3 3ڽQł e=}ܬ}ر )iXp^Z\0,2'RMgjd>9v;FTI,8(?MRv7Z~̕P:ˌ :wf\]۱Vþv PF7唀]~͇oK\UesUIK|3DGKTKiXxEax}vV1xj@ .TtЖsj9P 5rpZMQ_T| s1{V탣7PK"T&mppt/slides/slide3.xmlTKn0 ( !r RvE?"w`=IM"o8 ;/0p]/l%վ%B-ƞ\n,ױHK̑H$nX|ޝr;u($KL?+=:#M>䌮%q*=~tvmW.ƕb84QCܙqeR?$;hŰyiOh٥Gtz >8+ vTW$sU~M4c(&b=v,$2tH#uZn ۧ{ĹV'lbO2KEm*2h>0/C ˵C!\AgU ;˚[C+I(dA27r3_=ɱy9Cx 5r4-~xp}p~PK"T0ppt/slides/slide4.xmlV]o }@~_q\QjjRUK&1$qIb_r=p/چՆI1NS*XӻeruyFW 3㤶V 4 6RQR7غ^J p8@ 6$9#$ˆ єc45S45.LؽSGF& TS-jtX~\=i*GNn8I+ѯUgģvv@;N $m- ,ٚ&Cޤ=$p+UՠG5eS6A@:gY,ٰWv~sa^ Ppа(=j2,:eY )l{-g{ޝ4xčg4Tx5A&*wP`a(bݣk/'Ud?yb`/ۂ 7xOZK^Q ?ՆUmr]~^H_cȓVT|`][7Rhv]v?=m/۞R\dY~V!*ΊW$)ʇ=9*\C Vݽ[jM7ߎPK"Tא  ppt/slides/slide5.xml͖Qo ++뤝մZuՒĬIƮR/qwESs0)&0=J Ȓ|<g0NUO`e*256GRQRغ^RGg(K110ׇ엋#$ єc4S45Lؽ咏Ly"T3MVza~+BJkbJh²q,t.A}pϣʺfr ҧ:B6^ ݿUF9c= 盞m.eݻ7vj7Ο0R@(]>Xc}`au/kϧ^=j;gPGen=7 $/k :-J]Up:+Y+-dR.!Y,زcZ€?Mv.n]B^UX,g(۩ߪ~vΙa>N:g2eiT^\8ݟH_ACS1tpOH<'mH([]#Gi^RY/8s03;iREqy-x/0qxoc_.tXVijX{ 棓,2̓3yr|:-ޮRK&V\WRXgobߤw¯T.hdM`0uPK"T /ppt/slides/slide6.xmlSN0 (c+!!./ m|@H"7%Y\Z^'q 8NF j:߬A>TڊָuNWXւRi޷SFPfOC?<Ȳx7W]NNiN MM&f oB5b1k|s0T@1"gKg'BO&aPcc\I!n5kE\N6~T)Y#"H>-[m C-Lt1ܤmDқ#(VPK"T ppt/slides/slide7.xmlQN0wBQ^ ܠRX&?6!=zYoـw T^5rmcXXB F+tz":P$2ᡪ O5^~Zti&!EkFmB\-l0fgI<( gB<7R8#p$fT>gNXl8gTaC[|”119gEZkhaWPK"TP*% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LCM+ Wiv8C6E.4Ha9\KrB+]>Z5 BFv[왤Wbj G#b,F]~+́ҭ3մTamv{/PK"T% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"Tzwft% ppt/slides/_rels/slide3.xml.rels 0_%ݤH^D(x!٦$؂;; S;7d㰧t+4g۝mN"GMHD\0.%9|匚!_B#;TՉ5L)S{ #l,MF],~+́ҵ1išm6_PK"TA ppt/slides/_rels/slide4.xml.rels 0_%ݤ "P$!٦$}{^,xqggg>vHnÒV@IΧb m=(rqDʉKÆ$"QЕMQ UhduUX̀y&ة%#/پĝET4S."j(g5-@whƖ̠,*#zM/A8PK"T+I ppt/slides/_rels/slide5.xml.rels 0_%ݤc/">@Hi!bޠ f,HtehE.c,yY]UK?3`IC<9v K:#q͢_*X£-X5f~ӂ ;ZO4c[&Po_lPK"Tҋ6% ppt/slides/_rels/slide6.xml.rels 0_%ݤ*H^D(x!٦$؂;; S;7d㰧t+4g۝mN"GMHD\0.%9|匚!_B#;TՉ5L)S{ #l,MF],~+́ҵ1išm6_PK"TplI ppt/slides/_rels/slide7.xml.rels0Dٻ-pPc\ 'h6m1֋Bǝygߑ:ji*B~_!:|'D{mvǘ-ScQMm\/B]ìw ˒d4晤8J_M]+G#uX`Shck0ptL+ehw+O-釋pxPK"Tv2ppt/notesSlides/notesSlide1.xmlTn0~Ss@QCU(L* }8ձ=۰i>_bH7Rd55"UY7=KyV"/e4w[3Ƙ'Z$5V7\fr.kQ( RS4>W UJx >$kS*+B4qM4!2a,tC3+8/RlZa-Az `& 7? emw4 4t݊4^viuZ..٣u[p¿Q  2k\8%%`(W70=1V^ z(> [.={*qCy0ZGۅ2McEq鬫*GJIuͬXfެk,"W-z-+̇b mKz_Wn( bGo_j_ ]~ïy &8GD{wN3g2{X.h2p1Fxgr ~f* ͼ$,zЃl%~^;y,0P;PK"T|*ppt/notesSlides/_rels/notesSlide1.xml.rels 0_%ݤ"tQ (bwfanvH; %/Ӿ1p>f+7rzGZ=ZEti}*1v"(}QyQ,DfoN}[]8!h0 f& LL)YtP0|P&F<PK"Ti\??ppt/media/image2.jpgweX^.tKww# XbE钐\iNYJ@S_o}<̙w杧5:L ;'4@ a@`0cSSQQSPг3вQP01rprpS3 s sqs KKECAmO]l-A$`<_00…rL aaba@$X`a2{8Hrn] Q+Il6ߧzSb{? $eVxZ$Tni?B$! ak!$Y[ bjΘ*K6kfjOAWd|(_#˲Mj5EV꿮-\\#ψh*lqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK"T_?>!ppt/slideMasters/slideMaster1.xml[n6~AJ/:E۠NqeBK:%{(ҷhgCRdGٸ`|w7+jl"[4Hq/'WAh~wW4+N/O̔rlYU-Jó`+-r~<s\v"ILh[#TҬL1hNcq],Kv4+gF\f| ej%jAǮʰNYJAH*D".pQ* X'V3F.*i1W#D)LY,Fkx6SF= K㛄|jHʿrFF-qإҷt'Vc195»r2NqIqD҂Ɛ@U^ueLPDMx ej[e. [NoRu;'tC59g7 >=r]q*=)Vh@rAVUߜLOp&4jbzЁ! syAehx  $N׼H2=$էDA#.a D ~׾'4 ^$k5#sه4C3X3U۵dVK'inJīUͪ,:*|r!Ug ?H/uC^#}f0 ~VϜDEl=sͫ4ct19+֌%&e(n֪@ =Ѱm-Ǵ(i"B.̤r1ID 6%ñ,(|&f^䤻ZV0W0FvmCւ2cazC+ȕY[Z_-N]n-J(y)#Q'zzx#@8Sg;ʾR=쵔Çݖ!ehB?|Џ5muM9״q{֡Џ a-s HKh}=(O ~K7.U3 Nn:Wt=N7G}uC_:vRU1:mW u;Ipȝ֡\vR_qovjeGPK"Tb.Ɋ,ppt/slideMasters/_rels/slideMaster1.xml.relsj [ϧIڞBaG1_,w?Y`$ЄtD}[ >(kIa+e$ßK<Q.ݖ <zczI_\-lM}?3ѩb؟Fg%D *ũ)"'txsHk%͊wb5'陎QG>pVUoCtT/{oL&sҊIfNr椕圴~PK"T>R([Content_Types].xml͘r0_ Ism2CaNP@Mu~#<~U2V8 \Bw^O . )ʘ˧ ˴E+m%Gڒ%~Z!(a0 WnRxܴTÔS#-f P sU|뽣eqSaц/AȺbZS5܊Gn:8Fd,=Hc&)$gH, Xո.1\EBu{ :Տ*^%Fb:"F;w\GwlB!h?hd|REnP2 ƸJ#Cv7B-_-C|:zW׷J9sޕ2>۫Gr-P[i~w,wo0B(z!^aLBa?XePK"T,&VdocProps/core.xmln0E%>qbJUY!,ZRj՝e`?d }MP$v]N|oBHU$+v=#""󦖞K-85,ȥ F#b• F`*Úz!b #5B (h$gB7ЁVEE,B0nÐ!ƃ%}#}O4_ѯjmDa%V"˖vk:&GFB3|t[8.iK9y~ia%cyY%k)| M+Epq4PK"Ty%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<,0uOwj^]̉[D׺[ E|Xưgk"" [ k5k 2oee2Ն%J:%Li$֑IǙagga7@zH"'C &8Q`N)s8R49$MO)s85vg2Q$*]:kځ&uS/}WW.MS09TWPE&u񲫊PQ-UW8$sxYPK"T0X,ppt/_rels/presentation.xml.relsN _poifn.L%@{{4. py~?_΁z5J3K%)F+Q3ޖupzjlnĝ1]u0P ܮ4B PDꝶ@4-r=]c?JhV>DkHU ħWL1D{)(f^E$DR,#Q^U$6$##N2o7KCII ;FQcoyyqq׻%ڬW& ~x t+5ޛcG.i*m%3K"[H K":ϛ[+OW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"TJI,!ppt/slideLayouts/slideLayout8.xmlXn8_i)@iG mV+ujyqdV#k><BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:KaLɟjYF<ڼ\emKYUG =%n(8Ѧ'XY̠ JZ+=`fPK"Tzìm!ppt/notesMasters/notesMaster1.xmlYn8}_`A>.\ݨ:EDm hSӤEKv(%8M% Ùјy⺢᢬EX^% Y/-!1+07D/~y3`$5p 01C{.e3pIų! Ʀ5W>s ?:FNKf|tZΗas 2[n[!A9uߑU׀z`gRn]a:'3v;XKjh.9!JbW/y3n.x› >m1\A;͜nR+8;gFă) BQ:r-Skm>{m>?1 8nt^\A.(ɼJV)Es^ aSXt,:Գ[3?ߖms6@^QI>4\ȗ,% mNr2_ ٙ6ףQxJp`m11Bl_P7G&[#5]e@JZz 5m+b\g-;yCӂŠ ̱Fޏ̦d.5#È,C!m}6̄ IP? aJv'?Y?4b?!tø $a>fc`eY-9y;D%SJ0[% z诡i 'Xc@8Ak| @ PP' (ZI2h bj  PHs(+T4@ 0>*/~'џPK!ocB ppt/media/image1.pngPNG  IHDRLDgAMA abKGD1 IDATxAC2 `vG~?y>O3Ϸ 0000f0S VPPPPpVs 0|     YYA@       q@ VPPPP0 0k 0|     q@@@GXPPP0 `  8     0 07`(`(`CP   VPPp ހ `@     )`x +h(`(`(`8 >CP0 #,(`(`(`(`*`8g +h(`(`(`(`(`(`8+hXA@@@@@@@@@@@ ` +h(`(`(`(`(`(`8+hXA@@@@@@@@@47`(`(`(`(`s > 8  #,(`(`(`CP    VUpN@000 `XA@@@@@!(`x +h(`(`8 o0 `    Y 0@@@4000 a@@@@@@@@@@@!(`0000f040000004      `@` )`      040000 `XA@!(`x +h8 oPP0 `  Y 0@@@@@@@407`(`CP  VPPUpN@0 `XA@@@@@@@@@!(`x +h(`(`(`(`8+hXA@@@@@@@@@@@`V9 >CP0 #,(`(`(`(`(`p VPPPPP?`XA@      0f      `@!(`    0 07`(`(`(`(`CP   VPPp ހ   `@   )`x +h(`(`(`8 oP0 `    8  `@GXPPPPUpN@0 `XA@@@@@@@@@!XA@       q@ VPPPPP?`XA@       q@ VPPPP0 ` 8      0f    `@  q@@@0000 `XA@@@!(`x +h(`(`*`8   ?$++%tEXtdate:create2021-05-29T17:44:55+00:00o%tEXtdate:modify2021-05-29T17:44:55+00:008IENDB`PK!ppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ{}MSY a¤LrC PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLf*|޼3ؿ}q_wf8WW/__x@X O.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^ƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK!&!ppt/slideLayouts/slideLayout1.xmlXn6wAcY N\&mŮiR?#i0=NdR8Yܤn,:G/_m*ᬹTeS\Eux5yY/FS/qY3|^s:nVZԺ=TS/hd4L増Kvؕ~ܫXYv|(ʌOlUZ`ZǠ+7M-xK-되\ÂLN*XL9W 9QERҎK9"؝nϾb44ھdS g3r!_5Nfj|w@6[> WƸ;&֫^^4' g|KLKB= v FӤo܌8~Qȏ;nDoΚw ^Il@jj(J7E ف3}-8p9/Ò hٜlz!,B|Z ܚ k%ØaaP Q#7 ]v?Y3o4YKR6liP狻oiԃ>" p&z؀%v2&85,R< 2BUnq-+g.V=(NSK!#Q`gP>FRakoһP }e&%3qsJxkn؊YS,U?WyB[ S4uk{U>^{g6b>9qx^j S`C g &XBu~$~P=jM}Žf<M(GW4% 4 jتc0TPYp>p櫷Ad!X{k6 G6VV;Y>R CG ]E!ΝZ{F'b,t6 t4-4YhCcq-`; < -vNa#a#OF@ry-vO%><&19a;pF`Ne] ڒ;2fxΆ&>Ћ?^Otzxx|E~ ~ }u>L^vx9ˊOJw+s\$=?.1{&R3m #99eKп\jIMGvUoE>|9@ NI/~e:QrhP *#q:}=<jGtid&*CLwז;)r8N>Z\(]mOI\tve8\nI.ɆY̔^Dk oC5NULdKaBd3 sL:@.AV0ay^ȉ_88zbjgYZ,..9$},:he82;}Q&A+}CM;/uh\.Xy?oߞ2L]*yS"\?HA v&Ӌz%OSx$ےYݔv B?=P]sd ^L7PK"T+ppt/slides/slide1.xmlPK"T { ppt/slides/slide2.xmlPK"T&mppt/slides/slide3.xmlPK"T0ppt/slides/slide4.xmlPK"Tא   ppt/slides/slide5.xmlPK"T /" ppt/slides/slide6.xmlPK"T  ppt/slides/slide7.xmlPK"TP*% ppt/slides/_rels/slide1.xml.relsPK"T% ppt/slides/_rels/slide2.xml.relsPK"Tzwft% ppt/slides/_rels/slide3.xml.relsPK"TA ppt/slides/_rels/slide4.xml.relsPK"T+I ppt/slides/_rels/slide5.xml.relsPK"Tҋ6% ppt/slides/_rels/slide6.xml.relsPK"TplI ppt/slides/_rels/slide7.xml.relsPK"Tv2ppt/notesSlides/notesSlide1.xmlPK"T|*ppt/notesSlides/_rels/notesSlide1.xml.relsPK"Ti\??#ppt/media/image2.jpgPK"T_?>!Xppt/slideMasters/slideMaster1.xmlPK"Tb.Ɋ,`ppt/slideMasters/_rels/slideMaster1.xml.relsPK"T>R(a[Content_Types].xmlPK"T,&VcdocProps/core.xmlPK"Ty%>edocProps/custom.xmlPK"TQ e_rels/.relsPK"Tw X gppt/presentation.xmlPK"T0X,ippt/_rels/presentation.xml.relsPK"T8|^f$Hkppt/viewProps.xmlPK"T6\#!lppt/slideLayouts/slideLayout3.xmlPK"TD9Bi !xqppt/slideLayouts/slideLayout2.xmlPK"T?N! uppt/slideLayouts/slideLayout4.xmlPK"TE˧:!eyppt/slideLayouts/slideLayout5.xmlPK"TJI,!}~ppt/slideLayouts/slideLayout8.xmlPK"TSd{g!pppt/slideLayouts/slideLayout7.xmlPK"TX$,ppt/notesMasters/_rels/notesMaster1.xml.relsPK"Tzìm!ppt/notesMasters/notesMaster1.xmlPK-!ocB _ppt/media/image1.pngPK-!Wppt/tableStyles.xmlPK-! 04ppt/presProps.xmlPK"Tppt/theme/theme2.xmlPK-!:~"Tppt/theme/theme1.xmlPK"Tђ7--ppt/slideLayouts/_rels/slideLayout11.xml.relsPK"Tђ7-.ppt/slideLayouts/_rels/slideLayout10.xml.relsPK"Tђ7,/ppt/slideLayouts/_rels/slideLayout9.xml.relsPK"Tђ7,/ppt/slideLayouts/_rels/slideLayout8.xml.relsPK"Tђ7,/ppt/slideLayouts/_rels/slideLayout7.xml.relsPK"Tђ7,/ppt/slideLayouts/_rels/slideLayout6.xml.relsPK"Tђ7,/ppt/slideLayouts/_rels/slideLayout5.xml.relsPK"Tђ7,/ppt/slideLayouts/_rels/slideLayout4.xml.relsPK"Tђ7,/ppt/slideLayouts/_rels/slideLayout3.xml.relsPK"Tђ7,/ppt/slideLayouts/_rels/slideLayout2.xml.relsPK-!ђ7,/ppt/slideLayouts/_rels/slideLayout1.xml.relsPK"T'v!5ppt/slideLayouts/slideLayout9.xmlPK"T}!ppt/slideLayouts/slideLayout6.xmlPK"TkO ' "9ppt/slideLayouts/slideLayout11.xmlPK"TF "5ppt/slideLayouts/slideLayout10.xmlPK-!&!ppt/slideLayouts/slideLayout1.xmlPK-!g0/TdocProps/app.xmlPK88pandoc-3.1.3/test/pptx/layouts/input.native0000644000000000000000000000253407346545000017200 0ustar0000000000000000Pandoc (Meta {unMeta = fromList [("title",MetaInlines [Str "Testing",Space,Str "Layouts"])]}) [Header 2 ("slide-1",[],[]) [Str "Slide",Space,Str "1"] ,Para [Str "This",Space,Str "is",Space,Str "a",Space,Str "title",Space,Str "and",Space,Str "content",Space,Str "slide"] ,Header 2 ("slide-2",[],[]) [Str "Slide",Space,Str "2"] ,Div ("",["columns"],[]) [Div ("",["column"],[]) [Para [Str "This"]] ,Div ("",["column"],[]) [Para [Str "\8230is",Space,Str "a",Space,Str "two-column",Space,Str "slide"]]] ,Header 2 ("slide-3",[],[]) [Str "Slide",Space,Str "3"] ,Para [Str "This",Space,Str "slide",Space,Str "is",Space,Str "a",Space,Str "Content",Space,Str "with",Space,Str "Caption",Space,Str "slide"] ,Para [Image ("",[],[]) [Str "Content"] ("lalune.jpg","fig:")] ,Header 2 ("slide-4",[],[]) [Str "Slide",Space,Str "4"] ,Div ("",["columns"],[]) [Div ("",["column"],[]) [Para [Str "This",Space,Str "slide",Space,Str "is",Space,Str "a",Space,Str "Comparison",Space,Str "slide:"] ,Para [Image ("",[],[]) [Str "Content"] ("lalune.jpg","fig:")]] ,Div ("",["column"],[]) [Para [Str "Here",Space,Str "is",Space,Str "some",Space,Str "other",Space,Str "text"]]] ,Header 1 ("section-header",[],[]) [Str "Section",Space,Str "header"] ,Header 2 ("section",[],[]) [] ,Div ("",["notes"],[]) [Para [Str "This",Space,Str "is",Space,Str "a",Space,Str "blank",Space,Str "slide"]]] pandoc-3.1.3/test/pptx/layouts/moved.pptx0000644000000000000000000020157207346545000016663 0ustar0000000000000000PK"T+ppt/slides/slide1.xmlTn ~8[u*UDJ|$F?G N EZ|^˩zoFg0gzPPK"TVl ppt/slides/slide2.xmlT]k0+J;()]R@IJ,/$s$+{)Jcheٞ-H˝Pvד/Wfy ƎdHwF>Hboa aGE`hzX\RÔ%py*.1ҦJf eA)l>Ȉ4_3֢8 e=_~WpXfdOй3ڎovdݴ &h`2Ҽ)m>͇oi]U]]5WWsMt?GMZϳ =LFi.=?RKӭ|/.tLG=eˀ==bTYﳔ\'gì7-Z BEM m;-;gf\N STb:|7Y| pO~p}fPK"T&mppt/slides/slide3.xmlTKn0 ( !r RvE?"w`=IM"o8 ;/0p]/l%վ%B-ƞ\n,ױHK̑H$nX|ޝr;u($KL?+=:#M>䌮%q*=~tvmW.ƕb84QCܙqeR?$;hŰyiOh٥Gtz >8+ vTW$sU~M4c(&b=v,$2tH#uZn ۧ{ĹV'lbO2KEm*2h>0/C ˵C!\AgU ;˚[C+I(dA27r3_=ɱy9Cx 5r4-~xp}p~PK"Txppt/slides/slide4.xmlVr }W0zo%'NILg4Sh0/wAȑg^^=HWJ53+9I:ir9I> =@*L9=ҒUĞ+$-Y Ҵ+eSłSIUŤ&2mɵmSi, JTƼ%FO ˏ'x$HM\>lL2.Lm' OCiZ~=McI[=רՌ;P\SH*hA\jK5s>Xcïv~{a> g7GypK9Z~޵6d,g@F:<`MENJ0+b"d1S~4qT{gjPTS nx[NIJ% fPbmX$Q.O;jՙ7[d`tXh]n]H4riY 7ӂ/ggd?2 "ɭ^8G>B%h5n_]kc7;\q!Q`#3f՜A1sŶ0GKo.$tVp;TTr @CVN%Gf4^a7;iwvvƺ{* j 6U6>~^*_c=_U-\Qb(>~?NunETڜ9cli*bft3e*`i0\T⸏+eԜ7W죢IW;1LiڒkzӇxӆYpNoѱ(B=1yI.o{w{xDHFk%aފ$_LF_7!ZҍmZ~gM˫} 7{puOQZTC#6ioiT*PLjK9,Z'd À3gI/ۡ&$ $eY?}6ABk~ 8$֍ЉrYU bḘŝ$_Zl,xбp!6]I<{A(+(AV`SWBxI-NT&[%@5 n\0Ka<N臞Gwy$r>Xͨ.EkHtS5"229 1^h~ oj 8} @CNE{z0$Hi2fƺ*H ֶi6~_*ds$zE'dEs/S͎Z?Vf[]J jSW$~Cb,)a!""ܵJ:p=;dAQkAc cЪ!J1ь5};PK"T"-ppt/slides/slide6.xmlSN0wpRB)QS$RRgD% GBK運l]/8V F [bs]Z^#n%!5 Tmْ/O!8dٔJ<ԛԫͦeNt˴MȦæ XOI ؊ѡ^~31ҽ~8I*!3Yv)"' 1e1"+쇽+ ;-;f94k؄5¿nFWq@(bIM1$?d=An=s&េ9`dv]\_Mբdv2ۼ(l0OkM\}({>֭޻'cle_K 5D݋0tħeuP.M*FM$}rxzd|$poPK"T ppt/slides/slide7.xmlQN0wBQ^ ܠRX&?6!=zYoـw T^5rmcXXB F+tz":P$2ᡪ O5^~Zti&!EkFmB\-l0fgI<( gB<7R8#p$fT>gNXl8gTaC[|”119gEZkhaWPK"Ttѩ% ppt/slides/_rels/slide1.xml.rels 0_%ݤ H^D(x!٦$؂;; S;7d㰧t+4g۝mN"GMHD\0.%9|匚!_B#;TՉ5L)S{ #l,MF],~+́ҵ1išm6_PK"T'Q% ppt/slides/_rels/slide2.xml.rels 0_%ݤz("M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| TU5[왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T6У% ppt/slides/_rels/slide3.xml.rels 0_%ݤz"M{IdTۛc <7L}LÑV@IPC6E.4Ha9\KrB+]>Z5 BFv3[왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"TQ, ppt/slides/_rels/slide4.xml.rels 0_%ݤc/">@Hi!bޠ f,HtehE.c,yY]UK?3`IC<9v K:#q͢_*X£-X5f~ӂ ;ZO4c[&Po_lPK"T ppt/slides/_rels/slide5.xml.rels 0_%ݤAD^D(x!٦$}{^,xqggg>vۑ0&V@IavsQH 8 95cIhE>+G+rfAȫȚZL*U5lFɢ_*X£x)X5f~3SMK'-3(ʈK/6 PK"T)A% ppt/slides/_rels/slide6.xml.rels 0_%ݤzPP$BMI*ͱwvn?v"oxaO+ Wi;CD.4Ha9\KrD+] >Z5 BFv#klSb@%?l? F٢?*X»X VDk}c:R55mPK"T^l ppt/slides/_rels/slide7.xml.rels 0D%ݤ "^D(x!ݶ6 I*mwvvgߑ:ji*B~_!:|'D{mvǘ-ScQMm\/B]ìw ˒d4晤8J_M]+G#uX`Shck0ptLk+ehw+O-釋pxPK"Tv2ppt/notesSlides/notesSlide1.xmlTn0~Ss@QCU(L* }8ձ=۰i>_bH7Rd55"UY7=KyV"/e4w[3Ƙ'Z$5V7\fr.kQ( RS4>W UJx >$kS*+B4qM4!2a,tC3+8/RlZa-Az `& 7? emw4 4t݊4^viuZ..٣u[p¿Q  2k\8%%`(W70=1V^ z(> [.={*qCy0ZGۅ2McEq鬫*GJIuͬXfެk,"W-z-+̇b mKz_Wn( bGo_j_ ]~ïy &8GD{wN3g2{X.h2p1Fxgr ~f* ͼ$,zЃl%~^;y,0P;PK"T|*ppt/notesSlides/_rels/notesSlide1.xml.rels 0_%ݤ"tQ (bwfanvH; %/Ӿ1p>f+7rzGZ=ZEti}*1v"(}QyQ,DfoN}[]8!h0 f& LL)YtP0|P&F<PK"Ti\??ppt/media/image2.jpgweX^.tKww# XbE钐\iNYJ@S_o}<̙w杧5:L ;'4@ a@`0cSSQQSPг3вQP01rprpS3 s sqs KKECAmO]l-A$`<_00…rL aaba@$X`a2{8Hrn] Q+Il6ߧzSb{? $eVxZ$Tni?B$! ak!$Y[ bjΘ*K6kfjOAWd|(_#˲Mj5EV꿮-\\#ψh*lqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK"T,"L?!ppt/slideMasters/slideMaster1.xml[r6~ {$qLg Mә{E8$] dC%idn&eYv7_߬!HtL]#iI?^ɛ|\.8acݔ#cOR &b+qj7"\ZPR9oo 5јX,,S]R8!*PYp]hi &)e) y[f.[TFu)ڍ>\r̄LYٖz 8gd+M dpፊGUTJ, WN8mZLtZ0=7#8"wn8=Ϩt o q2)tͳ(Q*sJ|o1r@%E!ye~rNZFBVrt.bH^biaxFr 9QPuX۰jF_* o$O]T<ت 뵄e۾ /v>\x%R:vV섘ؙ2ϜYjl=@u̫8a9֌tD"2`XpOBHA7*x6$|wzZCǶl㘊B"T9P$B%THfd8WDOw]Z<-,߬dfSm0oeaI2yVwˢ)UbyW+.ZIgBy;ӵMUIw.a5To$SO(i41V- ˤPb7t9sӳӁ{Yѹ7߷dEfr2g31,Bu‰DO)U)ge4Kұˤ3@(h1mlqrgyt%CP?IHkbN+ Œy/ÛZyoa'zF}>Pr4ѫ^Q,EV[QEqUWQRD}8 a+ljA\JW.9@}}ٯcynj/@+9@#Y/@赃{rj2ݡ W=5G@EFO[`o=Gph^I~Xxێ5zI'zv\ދrl4H(#æ)f_V9OIzHGkY咟/ݦ4jթ)Ӻ9s8LQ6@e7De ad3NGRqbJUY!,ZRj՝e`?d }MP$v]N|oBHU$+v=#""󦖞K-85,ȥ F#b• F`*Úz!b #5B (h$gB7ЁVEE,B0nÐ!ƃ%}#}O4_ѯjmDa%V"˖vk:&GFB3|t[8.iK9y~ia%cyY%k)| M+Epq4PK"Ty%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<,0uOwj^]̉[D׺[ E|Xưgk"" [ k5k 2oee2Ն%J:%Li$֑IǙagga7@zH"'C &8Q`N)s8R49$MO)s85vg2Q$*]:kځ&uS/}WW.MS09TWPE&u񲫊PQ-UW8$sxYPK"T0X,ppt/_rels/presentation.xml.relsN _poifn.L%@{{4. py~?_΁z5J3K%)F+Q3ޖupzjlnĝ1]u0P ܮ4B PDꝶ@4-r=]c?JhV>DkHU ħWL1D{)(f^E$DR,#Q^U$6$##N2o7KCII ;FQcoyyqq׻%ڬW& ~x t+5ޛcG.i*m%3K"[H K":ϛ[+OaLɟjYF<ڼ\emKYUG =%n(8Ѧ'XY̠ JZ+=`fPK"Tzìm!ppt/notesMasters/notesMaster1.xmlYn8}_`A>.\ݨ:EDm hSӤEKv(%8M% Ùјy⺢᢬EX^% Y/-!1+07D/~y3`$5p 01C{.e3pIų! Ʀ5W>s ?:FNKf|tZΗas 2[n[!A9uߑU׀z`gRn]a:'3v;XKjh.9!JbW/y3n.x› >m1\A;͜nR+8;gFă) BQ:r-Skm>{m>?1 8nt^\A.(ɼJV)Es^ aSXt,:Գ[3?ߖms6@^QI>4\ȗ,% mNr2_ ٙ6ףQxJp`m11Bl_P7G&[#5]e@JZz 5m+b\g-;yCӂŠ ̱Fޏ̦d.5#È,C!m}6̄ IP? aJv'?Y?4b?!tø $a>fc`eY-9y;D%SJ0[% z诡i 'Xc@8Ak| @ PP' (ZI2h bj  PHs(+T4@ 0>*/~'џPK!ocB ppt/media/image1.pngPNG  IHDRLDgAMA abKGD1 IDATxAC2 `vG~?y>O3Ϸ 0000f0S VPPPPpVs 0|     YYA@       q@ VPPPP0 0k 0|     q@@@GXPPP0 `  8     0 07`(`(`CP   VPPp ހ `@     )`x +h(`(`(`8 >CP0 #,(`(`(`(`*`8g +h(`(`(`(`(`(`8+hXA@@@@@@@@@@@ ` +h(`(`(`(`(`(`8+hXA@@@@@@@@@47`(`(`(`(`s > 8  #,(`(`(`CP    VUpN@000 `XA@@@@@!(`x +h(`(`8 o0 `    Y 0@@@4000 a@@@@@@@@@@@!(`0000f040000004      `@` )`      040000 `XA@!(`x +h8 oPP0 `  Y 0@@@@@@@407`(`CP  VPPUpN@0 `XA@@@@@@@@@!(`x +h(`(`(`(`8+hXA@@@@@@@@@@@`V9 >CP0 #,(`(`(`(`(`p VPPPPP?`XA@      0f      `@!(`    0 07`(`(`(`(`CP   VPPp ހ   `@   )`x +h(`(`(`8 oP0 `    8  `@GXPPPPUpN@0 `XA@@@@@@@@@!XA@       q@ VPPPPP?`XA@       q@ VPPPP0 ` 8      0f    `@  q@@@0000 `XA@@@!(`x +h(`(`*`8   ?$++%tEXtdate:create2021-05-29T17:44:55+00:00o%tEXtdate:modify2021-05-29T17:44:55+00:008IENDB`PK!ppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ{}MSY a¤LrC PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLf*|޼3ؿ}q_wf8WW/__x@X , ?6W Nޖhŋ?^ɑf+{1rIK! P 6𪮃JaAi`ʽzuz\Ғ\5D 5CIE4ՇVB YPȄW\ZL]UPZb\<Ђl r=[ɹRnBh;/M+_Npfۂ:h3ĭ}v H,e}y":t6Ywݤ(?i$fuhhw !(8Z[ՆΞIAm4P837o5H(zٱ-TT[#e4ɷL2^}8R Faƚ'd"5-ֆ(䲆J8. + UT[JG#obﮉV+KR V) o`k/qu0{骴M9=eKՙ\n; t.sR 1& Dg{,JltyjJ 9('cK_BlGv=>Ŀ8Kl_gEXl04|It8̾uwcڐ^\٫%Z/ 8?5IgM!-渳XsF|^a;tKfhEлUH!}B'Er'>iE6L~8M$, #?ô$&7X9;ߟ?5qne-kyn|b1PK!w2 "ppt/slideLayouts/slideLayout16.xmlr0;hܳ&zSH-&JB;k'JIIC.-ەӳyЌHEyr#A$yBI˹ݺyIY圵?~8MŒ S@#WMrRET #.H\fXãxA;c^5/4w>xLcx\"0!~RJ5D]^AN`&pڐzJXCw _KWʖ&l\|eaoG;=TI7r;zmZPۑ@fO'SI$hM-^za. xT97[qql/8c-|b )LދMd3d4!jnHNH9pע05wnEn~'wFudCt{5Oڼv( ǡQK,gyfvJhPK!rt;"ppt/slideLayouts/slideLayout15.xml[r6}L>+]'vF8'J lKAHL~|IˋDK%ۄ/"],x8z&dDgf<5 ty7x)$MCʳkО]VFZs-2? b -d9K" p+P;CSaBTcgEID0N%_Dq^h1h``IDaƆv f<$)M"q Wˌ;*"^_  U3MX龬f!us t~H6iD/ U*۝yKΈL6ȯCA &_ίiQNZ]ڕf+<˃-1LCw U l t׺;:?7ϳVucBx!g3!}Y9qȌ0-$g PԸGGTзwH ͬC)O\s(!cv+ FR>9de`l9:Fd4ӷuݩb\E ie@&sMUx%E,eby # W14^PE^CCP*~mu4U!ɳ&-!K.ȚrX7_U* :RK{x,AΗQbbvQ?g3؞*ύaY#[_]7<8QKR-$Mf膸ym:`^뀳ZxY]w R4:l|tHttz9z9z?]Ǖ92͸d4]cq"\ޒ9vߘqƎ5l~3]}O.]׵:6> z$yBXccFޖG%dVL$R8"X4E<oٰꖏ̄vL۲|3#inypƴ_ē ZT(ؽhp[I',?"Y ]!)G`:@ E˕ PhN~]CIRtJPQ4~:@<>7t\Dbw*C 9bq;!d8 [Kd;ryot!BqȽ't"a*՚xʰCp.)]S͢' e BjBbY2 !z821l$7@IvY$՜Jnvևf\B hRk-lR;9ӄ}څDL">u2ya/V"jYF؅DjǨFu 0p^+XX jXo 6Ca_XU Xuj` 6pjp1ۇlƪa%X_s`5V5^6(WZZ0?T/MPJڧ0[ Tn јaS'رFy~Pl/eWF\d]xRe T ]rڂһah[뀿V: kZpTn9 J%AOuҎoxNzJOb>pa ~d20MZtƿn|g̋aM8I@M,z߃XռqUڟCshw{vd9ޓ w-~;>BV ٯ Ϣ-ZC+thVi8O$5j"3T夭 R[~8pQ {LΜZYdyAda4J)SeA:pz=i=+oCۦ.W_ ۄfP:xK^7gܲ4jݯyF^DAotR>v~߶aTz=)=oԊy myk_/upxՕKR^O09Li>]X1W PK!SL "ppt/slideLayouts/slideLayout13.xmlQ8SwP+=yLœh@SAػUqr`:ɋR'M߼pYm."I07Tecc+oޔ*KnخX+ QX)U,W;U\r;x}o_y՗@"\3w\wk=U¿&dPK!ED "ppt/slideLayouts/slideLayout12.xmlYr6waϊH[37Jg$NlәO>Ή[3f٫-~A)jeTUM`RV޺(w5+J7-)fLU34X 㒎w\(vC5ʺqƶY!5Fh3.'$@ځp="pߋ wh ' s]N2m gB\]IˊR  z)؉gK]Ay> <i+ءx w^!HA;]@Di`F VH@Di` v 4 vw 4q0:Q/ea>I^gTwHTT4(Pې4P<3yʁ6Uӎ鳙vL'k.)'pB-~G0q/Þ ^~)FXPrqMJ^jk*Z9;nuV&ݿe9/Kt{9txs&;͹Z{pзMf,TzBTkZH_`pyNGpgtt~j2kԼv ޏ-Yy芳6C(4~p vFARZu-SƦUzZeppl)uӚ$_pB?49-&.' 5Sݕ-%- LLUق]^L6`8 .%! vNU"+pk]L3)bW'$_a H,K 2]Ocp25sߔPE4=XMsY͸BKlz)bp^dz]˹z⸑ʤȆN-d\N _KpPlZQIKkTo4o ~7F'ox]3S2/3}t5e42[nh7j#]QmoFvuxxW&کLT71I)%^-,o^Cb\W$/PK!XP= "ppt/slideLayouts/slideLayout11.xml]FS;LgZw0Z(À"%*_+9O*]h7nݶ*Ɇ\ޘa<#6Ү@l,3i ,kڠ2h,{n7rzofo8rt] G5H \c[In1Wm|60&pO؃.^p޶-5AE&'rJ"nx(C%=cbf/qc:ۡ'A*i^CeRtزK+oJ?SVy;le88686nyu]g"k²BLx@xvOLa$+dQZJ''y_ҔuY7XS1i`-3 uȉUVh/ZF=PϠT!ַ5פ@,ƣQS{D^etϝY.Z;(`iGVGjq'ԅ !P'z&xa^/Om8HEŒq-ZgcCò Cw?&kL49䬠|YS; |_ A?*6eYdܮOGRF}2HVض0u|"uhnƦ,daF޾[Ttg﷯-^5t%a,mT+ձRS&\PK! n"ppt/slideLayouts/slideLayout10.xmlr8̾LI'raJ-SНk>N: 6w`!}:7#xa2\$y60;@48øHHń*,!|)bd ŅihAS"ԻYS"W>7cN*vL۲|3%IfT),()d 58Vp*FnhbTMLHs&$\r&rFO^L אՄ$h3E%f+=0!Xx O*j4a%h7-Fz)XU*6!"W7yE,Wy[fx $7BI@UrK=)sP:~=`ÞoUֆx޾%)am`8**Vƍ|u\-bzrȒ 9q"-rPj,N@& Bm!vI?a$J倫pW<-$2dB? \[X"8Ng< (%F$U,T!ի^H=w( @$6yxΎǮ{2$ ('ZHUoU)ի^H=t('ܸy<bxԉ@ -``@`xn@`F@`|t@1a љAʹ*KjISTSAo)Z0IW'u'v 2ǫէuTAɋ1T);:SY%'4cLŵUPR -:fmSq[{D "Zu~SV5 =7vrd'Xd͎heO{,+Nzn`޵` tKVr4͇֦yj13{߄3.$FWc^ @G_wY,ohPjtdȅj `!Gryaa_ uV#b*~ 80U+M4D350\ޣY Tg(8STTRŏ!d~eʧMx Dr4دU}\f4I_k2סr ]{ s95cS@.j?HαU4R:e;vkjoM_vMveWkch'57-?-^3PjUgj/rA{g }%P;{#ha^܌Cϳq臣;^t{7gMvpo$k hhj(J7y GB鹾kab MԌKhقtЁeR'_J] !҄BipFARp's!5`MdtTЃ.0Z ucRw4x:,v`! Jte IK$GLpگեaX*<~Ir^dWB{0JCFADXcsNJB-Xh f:xMAtwVTΚ\RXמЖa nM{[*P‚ǹ(Onyh j% > CmmOڱKTI|0ϡRj0*lvSVx4=j5Z U'PTPYgpDRs_ Ad~X:Nmo ׏e- Ac#в;:(c#в{ah4(6-;ٱ\`#вG{8K>s<%2͝KxE#k3x2.`"NLcWLZftΆn(9|'C/f,EY8 z?Mb$p2=?Kџw \egr%y\$}?.1LMԥf4XɡwcCSv~[1 +t w$[&޾܉2U!zi:eOd>$NUO`^Ep2B{~ϛzl2MQb`݃~g-^=0s$U7}W$mՖ҆|7ݯJPK!S0 !ppt/slideLayouts/slideLayout6.xmlVr0}LA>;670 /0|b FTIPh3s%]6BS:!/ūg.g˜*N|$cs;,3uVD9gNEG\#`NxScuaoe5 K$9x9ΘSi0]HBU UCЄ$ `J@\ xLpLSt$kDbzlIIz1(K Nx;gUwS@ˮ5[gR7qz6N{ʁĩɪy:aNAGmU9l'qIX$u_TYsʦ ux5yY/FS/qY3|^s:nVZԺ=TS/hd4L増Kvؕ腾*V֮/)2&[UDr4دe:1h `hMu R :$&װy6S >3ej?HqTR:ev۳/M5 z/!;'ٌ\5pol-͖H:=1;a DWMI9uƽF=ӒЬyO=~(#?Ln& Gt8 Jm9kk='{%8PCe]+6`fJ4^&kxK3esJjaR_K- Յf഍ݥ<`s!5`M$EaVf zp  iyH=>;(i (kH*p^b79*cS.3.#T\E2rb%34ET2v3j$ePʿX+ޅZ-3.Y㝫V[hvVd͚z`b¤[3ޫ%8;=eэR;oST8S5 K&>JTKmڵ'u8jsДZ Mnqt5LS~FB$(j- U1yA,Mw^kag\$2۩ZE ^ڿgj.5ӦO9S@Sv~_1 ˥}ؤ~;oWV#ɷ= ;Vq< i^ hNGAjI`ƖƇ_y_McI3zd逵N`&=tiݹ$gyծ.KMR7,Y-u%]bF"ra*Mc]qW;,m!W'rL0N=HJԻk9[ΰ^P( XjX1+ǡDo1]{>g$GƒE;¶UC+W_;%ȶ}3T\`ȊT Q+uiQ#\|4fce UY++`Bf.Ț䐛&*`O Ů2m R*^m(zdF6@4eCGg%IPʲ_t":L[o  v0^yvCLa.~9Qt(t@lj E0bq(u@ e ) P_޸m=d{kA*T ңgx_00?Ǝ; >ȋ<ѹ$t'=*WeiX v(}J-D92mt.j,A+ʹ,A8x{8s)uZQfhz*6aRFVݽ?#B5O`A8hV[NFM1 @`zg4Z3vbQi{iT.}ѺX yt)uVmFں'q6(oΚ/^͗xyVԡjNIehiΖL `׺Q23HHh>y4ݪ-)/1vov}<>.sV?QuÍ y?FK@_PK!4/_̷!ppt/slideLayouts/slideLayout2.xmlUKn0u#v`GU7IlP$KҮݢ@''鐒b'u,I g{34/%Ct!ЋNBQ Rл`&8z;r;60ࡷ2F@+Zb}"$p>2 qvܫ[bQ4T 2l~*n[Ф`\˒N[SF<\7q [녜=VQjw|Eɹ)p)T PzA}POqUvJh;e;XW|oW#I$7t*gVMZ^A#._{8UCSeAv6=ΈL1>qe(a;הwJ3dE@]cmB.? >XAšPNfXᯯ)9PFxڨbCьᜮ#PK܆=w QUk+/2X?^7c?wN$N2& qod^Y\+:]X^Hk{8}c {&iZ a9m4gaT՝ok CӠ&6F9+E7BI [GErף)qϺ~N:0iaii6:S-sսixzzzts+SXN7N]:|b1}PK!SIg!ppt/slideLayouts/slideLayout1.xmlYn6w kW,MĮÜ>-ѶVJHڵ[ km'y$ٲk`ˍEQw~sC *ds q,D'i>=>< ;"yB鹵zwOo3ɒks4F.ȹ5S8mhF^\?poN3fIs/IU "(#J/gi!k Z!0{[%*X>|w?,BOcBXr> "Rsx"A_E1*l] &hՃj ;ۧ-'"3W <4i+k9T(.'l<۳6߳ڮ ƪRqksR(kj}eq\c/[(m6bV@Uʇ0(Fvm`'ATb 5.'+}@ 9cRԊQ)!'1gR4G4I!RQ2}4@:<'T9Y[cqHLg%Z92 G3>uCHa\,paIYz= Ja RT}j*T. Vn 6hFn: k*p뺑a Vmv}5c` Vm` f{ ׀ (3X帑ڠ,!zP=L UJnS _>ϕ6tA?ṰV 7p5lU /@Ok^])RF4y]P|aU?8sfd/˵bV }V?D@NE>TEѾ ?://:쳅oJ~''9Fgsrw9W|RRot}ݠJՇʴIe4U6C%z~uRFPU/N9 px9^:`XkZ﷯?p)?? 2qC<Ї"ͧ7K FſPK!)!1/docProps/app.xmlT]o0}`uېqUƆDh> ؖ_?!YXѤny{''ܼT:,\ k.~9gR+%Gp }l6`rL1vy sסBжb>vuQ:^x /~e:Qrh%TF24[t44=<jG;ɴg2!^[hJpȭ1RZV;]xfP^m"i ^ppP_( lo)cleW: W!@VsPjHdKabd3 -tYgcÄ ̃ "'~$9]%fS>ihM4[;s },t head ڃ7hGP&A1sW|+7  =4v7}oCsmr)F!}u$>וaH?R9YߝG["ԳۙL/;WRbmL@Gcno\GC\"-xws~/|2؁ā!BZ_4Gm H_ڍ~413֕KD^ jHa4Gyhhq4G6a]vķj&>OՓz88+ Uv2(@gqH(*PDK4[Fٍ%ka`)3e6ʇm8E>yesWY2e= s^b,'b=A ݓLdGAUt3Od_WuGwzPK"Tfppt/slides/slide2.xmlUn Ī]$$LTTKhH8?<4i=mvu/smS P3cG0Ir߫)Tig8sz%+*ͤm)SEh2]s j}S*t 0i mOAӆYwQ RШP ca$F/unbxQṕ@eFڼ4uGngƔ@Ao.(,V2)~e{_>ꊠA\bTդSN00~בN{ I>%I.iܻ谾ݻ/B* nęZD\R>. "BP6SRpB,r# kWk_t &P2&o ˱[u1RO}v~ZTe{t|5'93\Q<j&N2}e]sY*>R=8}en T&=H,w83.BqyGb=p?|%&]~PK"T% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"TIa [Content_Types].xml͗n0_q$mE!9t9u\3$Vl'M޾$UQ&l1O3op)bFɄI쿏k8菗 ZuKaSȩ '9( (&a[h=tYaUYL*(T3j񘔧dclɜ^B 11Sٺ+vBGFZ*CP9NLS5f9P' %A[ۋ+ep.̚s4`^Y;T$u"ԅP.B\rEzƢh.N(.!%,TS#7 X{"{_Srf̏~J{Uo);iZkj3zBhǥ|PK"TGdocProps/core.xmln0_%=qb8RRͲ`65 "qm֤a%cyY%0s>[|MzҭPK"Ty%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<]Ŭ-u,Z(u2;AI3nVDAEZoxmrQ檅E U-]O lYPcRqdW5V\TDX; /Pb纑S>7o#Z9y[^DPfDl$<$+~YIuf"E Ak x38ޫQ/3qb7+ߥhu8C^" JkF]+*( cQńtEZN-+ ѶBtDkqa?mn 5 C-EA{%w\<~ڀ4ɢse hwf!ӿm쏾PߜeAA0*s%_W4f~ ٫2.J2@7d5\L[I-C(Ĝ~bt> f,X漢j8ǵԟϦPK"TWD>Ippt/_rels/presentation.xml.relsN0 _%-0Z B xmDDI6Ti8Dɶ\ yi4(c}j{i=%3Cwz}a,7CQ;ensOiMS-۴xoǀ:z%u*z($uN'gbGQJR\夰 (%)y>;Qe7&'Wo _^?1IJk';{o;&PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlRIyppt/_rels/presentation.xml.relsPK"T0K ppt/viewProps.xmlPK"Twppt/tableStyles.xmlPK"T }.Mppt/presProps.xmlPK"Tppt/theme/theme2.xmlPK"T mu!""ppt/theme/theme1.xmlPK"Tђ7-u(ppt/slideLayouts/_rels/slideLayout11.xml.relsPK"Tђ7-v)ppt/slideLayouts/_rels/slideLayout10.xml.relsPK"Tђ7,w*ppt/slideLayouts/_rels/slideLayout9.xml.relsPK"Tђ7,w+ppt/slideLayouts/_rels/slideLayout8.xml.relsPK"Tђ7,w,ppt/slideLayouts/_rels/slideLayout7.xml.relsPK"Tђ7,w-ppt/slideLayouts/_rels/slideLayout6.xml.relsPK"Tђ7,w.ppt/slideLayouts/_rels/slideLayout5.xml.relsPK"Tђ7,w/ppt/slideLayouts/_rels/slideLayout4.xml.relsPK"Tђ7,w0ppt/slideLayouts/_rels/slideLayout3.xml.relsPK"Tђ7,w1ppt/slideLayouts/_rels/slideLayout2.xml.relsPK"Tђ7,w2ppt/slideLayouts/_rels/slideLayout1.xml.relsPK"T'v!w3ppt/slideLayouts/slideLayout9.xmlPK"TJI,!,8ppt/slideLayouts/slideLayout8.xmlPK"TSd{g!=ppt/slideLayouts/slideLayout7.xmlPK"T}!?@ppt/slideLayouts/slideLayout6.xmlPK"TE˧:!Cppt/slideLayouts/slideLayout5.xmlPK"T?N!Hppt/slideLayouts/slideLayout4.xmlPK"T6\#!Lppt/slideLayouts/slideLayout3.xmlPK"TD9Bi !Qppt/slideLayouts/slideLayout2.xmlPK"TkO ' ".Uppt/slideLayouts/slideLayout11.xmlPK"TF "*Yppt/slideLayouts/slideLayout10.xmlPK"To@h)!\ppt/slideLayouts/slideLayout1.xmlPK"T%1,oWadocProps/app.xmlPK(( cpandoc-3.1.3/test/pptx/list-level/templated.pptx0000644000000000000000000012140707346545000020106 0ustar0000000000000000PK!eʐrSE4bӫ?PK!9'N|}V4X$r+x3+(N B¶4>VOQxJ`UK7W5'"uŤK Mf=L}@)(# AB4l~ЅyS7+6.她l=B!kSzEaJIX6)G+%OU]eUKqշ[ mH"w)Izu V{0΍E5~Qt|VDXp['tl|L4" 6a깒cf ) qLʍ2kk_t (&T2Fov/+u?3zw vTsԼ 8), 0q,^5u#/UOpN2:"+9paΈ38+LS+Yo =u(_(PK!% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK!% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK!1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\U*eLUQCjj<" h!z6fƔ DloVO͖Ú,a?`7ԿPK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<KC !ژ*^400S14껪MJj`^?ؤ^0'^I yɯ-3j)XSDqL5g"C9_hs<Á `v#o>ȿ\⤓k=aǾkzGW8\ ;f8!1qg)+9Ca?ڰoh#̚Ϩ][.yTHP)\^W1b/Bw @Zӿ Gq؝8] h^F2Mȳ%U 7PFNo\u}8u%Ml+О9ܶkxr$ SNoN 7 $/'%3 ZFaN}-wF~ E-H$ dR; xR?4 n-$;$Kh7i!M}]!PK!5ˏIppt/_rels/presentation.xml.relsN _{K[u3c D plixAvy~sr3(C ZF֫+*b$hϠ>PEIkC,]G-CZ傺=ɦa6M doӶR_p l0ra`p(Ԫn@y QI֡q&?Rʞ3I"Gq֑~\(| {|&bd$NPt9!vOeF :VPK!g[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+O$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKdPSppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}ppt/slideLayouts/slideLayout7.xmlUTux PK!3Y "Appt/slideLayouts/slideLayout11.xmlUTux PK!Ex"Eppt/slideLayouts/slideLayout10.xmlUTux PK!z&!Jppt/slideLayouts/slideLayout6.xmlUTux PK!=[!Mppt/slideLayouts/slideLayout4.xmlUTux PK!im ">Qppt/slideLayouts/slideLayout12.xmlUTux PK!h "eWppt/slideLayouts/slideLayout13.xmlUTux PK!s@y#![ppt/slideLayouts/slideLayout5.xmlUTux PK!=t!appt/slideLayouts/slideLayout1.xmlUTux PK!f\$ "Vfppt/slideLayouts/slideLayout17.xmlUTux PK!(D " jppt/slideLayouts/slideLayout16.xmlUTux PK!)J.  !mppt/slideLayouts/slideLayout2.xmlUTux PK!;FdvU&"pppt/slideLayouts/slideLayout14.xmlUTux PK!p O;"vppt/slideLayouts/slideLayout15.xmlUTux PK!!?}ppt/slideLayouts/slideLayout3.xmlUTux PK!K%!ppt/slideLayouts/slideLayout8.xmlUTux PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux PK!x%,~docProps/app.xmlUTux PK55pandoc-3.1.3/test/pptx/lists/0000755000000000000000000000000007346545000014263 5ustar0000000000000000pandoc-3.1.3/test/pptx/lists/input.native0000644000000000000000000000157707346545000016644 0ustar0000000000000000[Header 1 ("lists",[],[]) [Str "Lists"] ,BulletList [[Para [Str "Bulleted",Space,Str "bulleted",Space,Str "lists."]] ,[Para [Str "And",Space,Str "go",Space,Str "to",Space,Str "arbitrary",Space,Str "depth."] ,BulletList [[Para [Str "Like",Space,Str "this"] ,BulletList [[Plain [Str "Or",Space,Str "this"]]]] ,[Para [Str "Back",Space,Str "to",Space,Str "here."]]]]] ,Header 1 ("lists-continued",[],[]) [Str "Lists",Space,Str "(continued)"] ,Para [Str "Lists",Space,Str "can",Space,Str "also",Space,Str "be",Space,Str "numbered:"] ,OrderedList (1,Decimal,Period) [[Para [Str "Tomatoes"]] ,[Para [Str "Potatoes",Space,Str "of",Space,Str "various",Space,Str "sorts"] ,OrderedList (1,LowerAlpha,Period) [[Para [Str "sweet",Space,Str "potatoes"]] ,[Para [Str "russet",Space,Str "potates"]]]] ,[Para [Str "Tornadoes,",Space,Str "for",Space,Str "the",Space,Str "rhyme."]]]] pandoc-3.1.3/test/pptx/lists/output.pptx0000644000000000000000000006775107346545000016560 0ustar0000000000000000PK"T$!ppt/slides/slide1.xmlTێ"!f{{13&PD/3mbEUqF|Pd4R>\$Մh*ƂadXYpGg?l:a W{N nű=1 r{Мa(%ebeV6 Eڭ|.?+OPbx3J ;W}ٴ} Kȫn直Gyh),%C"Je[?Y®'q=EF2yWHQTyi饧O.a7R]װ[XyJsqﳼx|%tPed9l_ # gRpqTCc}oWm>׾Y Yi.Z'PcC,Z$dh{!${K ='"a}R`>[ /- .IX Լʫ: PK"Tppt/slides/slide2.xmlUn1Z@ڈQ/(A~֪oz!f9g/i5 `H B\}ٽ+RM(ؔ1K, Cb5iTx j& %vZ^i4XL4C)]%hcH0J2T"+t+جLû[~H0L]knW/mdnu3'yd>9]ޞc^>SoB7ZV2*ыtps066")fv%ĽK`#7(=g+MuSVqCZe҈LqSdȅgx |BO*zDrkb˽ErFPK"T% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"TIa [Content_Types].xml͗n0_q$mE!9t9u\3$Vl'M޾$UQ&l1O3op)bFɄI쿏k8菗 ZuKaSȩ '9( (&a[h=tYaUYL*(T3j񘔧dclɜ^B 11Sٺ+vBGFZ*CP9NLS5f9P' %A[ۋ+ep.̚s4`^Y;T$u"ԅP.B\rEzƢh.N(.!%,TS#7 X{"{_Srf̏~J{Uo);iZkj3zBhǥ|PK"TGdocProps/core.xmln0_%=qb8RRͲ`65 "qm֤a%cyY%0s>[|MzҭPK"Ty%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<]Ŭ-u,Z(u2;AI3nVDAEZoxmrQ檅E U-]O lYPcRqdW5V\TDX; /Pb纑S>7o#Z9y[^DPfDl$<$+~YIuf"E Ak x38ޫQ/3qb7+ߥhu8C^" JkF]+*( cQńtEZN-+ ѶBtDkqa?mn 5 C-EA{%w\<~ڀ4ɢse hwf!ӿm쏾PߜeAA0*s%_W4f~ ٫2.J2@7d5\L[I-C(Ĝ~bt> f,X漢j8ǵԟϦPK"TWD>Ippt/_rels/presentation.xml.relsN0 _%-0Z B xmDDI6Ti8Dɶ\ yi4(c}j{i=%3Cwz}a,7CQ;ensOiMS-۴xoǀ:z%u*z($uN'gbGQJR\夰 (%)y>;Qe7&'Wo _^?1IJk';{o;&PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlRIppt/_rels/presentation.xml.relsPK"T0K ppt/viewProps.xmlPK"T}ppt/tableStyles.xmlPK"T }.Sppt/presProps.xmlPK"Tppt/theme/theme2.xmlPK"T mu!("ppt/theme/theme1.xmlPK"Tђ7-{(ppt/slideLayouts/_rels/slideLayout11.xml.relsPK"Tђ7-|)ppt/slideLayouts/_rels/slideLayout10.xml.relsPK"Tђ7,}*ppt/slideLayouts/_rels/slideLayout9.xml.relsPK"Tђ7,}+ppt/slideLayouts/_rels/slideLayout8.xml.relsPK"Tђ7,},ppt/slideLayouts/_rels/slideLayout7.xml.relsPK"Tђ7,}-ppt/slideLayouts/_rels/slideLayout6.xml.relsPK"Tђ7,}.ppt/slideLayouts/_rels/slideLayout5.xml.relsPK"Tђ7,}/ppt/slideLayouts/_rels/slideLayout4.xml.relsPK"Tђ7,}0ppt/slideLayouts/_rels/slideLayout3.xml.relsPK"Tђ7,}1ppt/slideLayouts/_rels/slideLayout2.xml.relsPK"Tђ7,}2ppt/slideLayouts/_rels/slideLayout1.xml.relsPK"T'v!}3ppt/slideLayouts/slideLayout9.xmlPK"TJI,!28ppt/slideLayouts/slideLayout8.xmlPK"TSd{g!%=ppt/slideLayouts/slideLayout7.xmlPK"T}!E@ppt/slideLayouts/slideLayout6.xmlPK"TE˧:!Cppt/slideLayouts/slideLayout5.xmlPK"T?N!Hppt/slideLayouts/slideLayout4.xmlPK"T6\#!Lppt/slideLayouts/slideLayout3.xmlPK"TD9Bi !Qppt/slideLayouts/slideLayout2.xmlPK"TkO ' "4Uppt/slideLayouts/slideLayout11.xmlPK"TF "0Yppt/slideLayouts/slideLayout10.xmlPK"To@h)!\ppt/slideLayouts/slideLayout1.xmlPK"T%1,o]adocProps/app.xmlPK(( cpandoc-3.1.3/test/pptx/lists/templated.pptx0000644000000000000000000012141607346545000017164 0ustar0000000000000000PK!W^ppt/slides/slide1.xmlTێ"!fbF'^̌ 68LtEUqZ3hL a29>-,hIb 3>1D5#c<f 2ܷ݊S [c*BAsCМa722+t["sƭ}.?מ(͡Ulm!JgiH3K^YJBDYqK_~2 NZU=U[U\!ʊc FQنV䵥vW ^HUv;?\]fi%ŽKO./: UFÚU 2lطKJ ˷^Š_]\\f F*dj LC%o3fy$ٕ@'F=^ j$9XpS蹿 !;+u1w0^P{,\ <;'WuPK!w ppt/slides/slide2.xmlUێ0ZaKmH0@:e;l:NVH}ŷ9sM`K'd4@͍z;!?Wo^ lBlA%VEc*mp)BTiŤ&}l6W u@*"M_J3:&UAUƗJ$vەpvi.绅)94pB>u{V/m^ٸe)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\U*eLUQCjj<" h!z6fƔ DloVO͖Ú,a?`7ԿPK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<KC !ژ*^400S14껪MJj`^?ؤ^0'^I yɯ-3j)XSDqL5g"C9_hs<Á `v#o>ȿ\⤓k=aǾkzGW8\ ;f8!1qg)+9Ca?ڰoh#̚Ϩ][.yTHP)\^W1b/Bw @Zӿ Gq؝8] h^F2Mȳ%U 7PFNo\u}8u%Ml+О9ܶkxr$ SNoN 7 $/'%3 ZFaN}-wF~ E-H$ dR; xR?4 n-$;$Kh7i!M}]!PK!5ˏIppt/_rels/presentation.xml.relsN _{K[u3c D plixAvy~sr3(C ZF֫+*b$hϠ>PEIkC,]G-CZ傺=ɦa6M doӶR_p l0ra`p(Ԫn@y QI֡q&?Rʞ3I"Gq֑~\(| {|&bd$NPt9!vOeF :VPK!g[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+O$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKdPSppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}ppt/slideLayouts/slideLayout7.xmlUTux PK!3Y "Appt/slideLayouts/slideLayout11.xmlUTux PK!Ex"Eppt/slideLayouts/slideLayout10.xmlUTux PK!z&!Jppt/slideLayouts/slideLayout6.xmlUTux PK!=[!Mppt/slideLayouts/slideLayout4.xmlUTux PK!im "EQppt/slideLayouts/slideLayout12.xmlUTux PK!h "lWppt/slideLayouts/slideLayout13.xmlUTux PK!s@y#![ppt/slideLayouts/slideLayout5.xmlUTux PK!=t!appt/slideLayouts/slideLayout1.xmlUTux PK!f\$ "]fppt/slideLayouts/slideLayout17.xmlUTux PK!(D "jppt/slideLayouts/slideLayout16.xmlUTux PK!)J.  !mppt/slideLayouts/slideLayout2.xmlUTux PK!;FdvU&"pppt/slideLayouts/slideLayout14.xmlUTux PK!p O;"vppt/slideLayouts/slideLayout15.xmlUTux PK!!F}ppt/slideLayouts/slideLayout3.xmlUTux PK!K%!ppt/slideLayouts/slideLayout8.xmlUTux PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux PK!x%,docProps/app.xmlUTux PK55pandoc-3.1.3/test/pptx/pauses/without-incremental/0000755000000000000000000000000007346545000020427 5ustar0000000000000000pandoc-3.1.3/test/pptx/pauses/without-incremental/output.pptx0000644000000000000000000014164307346545000022715 0ustar0000000000000000PK!55 ppt/slides/slide1.xmlVn1IAEM@5wvVk;Ka| c{ ) /IN֕D5Nh5.GqE5j9.>޽|[ Ar#2.JcGK^w W[h[[̒QI|<hCBP~'%P+qf,wOJ ѩdC3[35w")RqQ xWuZe^zaz\ٛd3-?싦xN\ǮsW3%Gö\3>844iHMnCRmJ7|+l/w[BM3wt~7POܙel"6.bpaVwZ񆆦ȸt*c DZ@ܶ3O*~DK-w غ_ di YrˏЬۗ{(˙q'[+u|$,l]%<|EX(]q],}4ս>R)$eTՊM%8qPtSI٦7{rTH3ÝYeM4TA3, ~o"iis)s4]͓n z P-T pXp_0Ƌ%y'te3șO1Ktq:ps62ށ5 qT 'B f[gԦD #JspC(7x-wo@Vp(wxJڇ YYzCJ\v5NR[Y!W;.L|cѧPK!{[ppt/slides/slide2.xmlXr6~ 5DeML̸&RsHhb[&' (JQʓ `./_ * Wr1)b>Ae94"PfHFInm9d9+P% +] ST`]p!|3Ve˂Ih&0MKX+53` eMS͘]NʱjN$)(I%^*Ej jkn,jZig>}c\1)t\ ڔ*{4H*HlTB]ȮK0fAIqۿiP[E a xJD K AIVPGѮN[W}Eߒc ޤ#_FLj%-dƂd,W2]πUKkTM@9l]iM][>!!Y?1Kn0:yƊKk*-xӮY^@#yo/$-.;t\r 5z% PePċJ$s.4Z5 eJfK!u6J cIeˍ ׅ'iȡ`ι\B6DC zS۪uH_E컷0y#1qi>ۊAGGLn>g0y?Ŵ>[ ];Q_2ZR^+)o\ N{R4GYƸvvkܮݦF؞4qF inr+Z zc И/nÈ`Gnc򄄸 q quW5!!!ϕiԌ?#oq"u*M.R,Gq}20"ՔH{ϐiz蟒i$Ez8U*O1͡l}FYS ^@ol8>DSi&f4nZnU8͖`vvc}7PK!(]8:rppt/slides/slide3.xmlWr6~Nr!+2d@ڥBA\+ TgZ&ܐ5ɪNbH*N)Xi9Ypts qx[ju KUJXICP::|p 9'6%rp&&Z5ޚ]h) m >'㼴 rl?RW<`UÃYK)J=$ xpUx?i igB&ƪx᫸4#5R78D}.;>"G֕bG/-n XRkc4 I/c)ШM/y~[$ \ɹd֎#D4Kr`#_ o.Ҕp|/ͪm\|OÇzCp!%[| Ӓ]\%=Vh7,5Fz^L'qvZa@:i~g2|ۆC0ɗ??FG !ξaC ~ (b^mWWVSE]I6GS=#HtӬrz0q=[ȤMNR\ VS%GESf;.TꃞPK!Ÿlppt/slides/slide4.xmlVm'+h?]dRE:]w ؋`z}֩Qeᙙ6D Nh5)A t]yiN2ʍɤ7cxMܥ6\lmMD-p0DoOٯKA;M5W>X.7]%h4cR$@X!om&_#V2>Ӧ1}=!Ө9𒣲 .;̝) AER;z 0Ak~FmZ%co832hM]`0"- qL ƃG:O䣞Gq |?UfV"@SI(dܢg fO_EwPH ]?apf5hqNΕ29nHCWkGǀf':5GO$\./ګ'@qJ 5OZg+!<:Vtmm̠\qP1ٙ|8jn)$,;Zm!w̶o)Q_̌N73rt"fûHZĹILڼ4[/R+Ap)|`qJAnKNjyX1CWV7#g?%B *en!(voZp{{͹u(Oo\舗pb!۰i'ܟx´xl=t7dP-uOhpI>gŋ(aQ\EqQq_pTE9eQm]oX0FxF R˛S PDEw$} =Æ3VAW`#0{/$F]&Zn Q鵼X0vܽqtwPK!f|ppt/slides/slide5.xmlWR6ߧIXvJ׊*$$9$k$=ce7st~󣓏늣ՆI1MGidD1M~,8&XiRZ&1GRQ5y4=a"!r2IfuE B4Ăd4!Ҕ=gٌC5הX}j'߯4b9 A*:M#%XޑP4K2Y/uZO{;kpu}Yy7JpGs.XwWsf9EsF !)Cpe *(fEQqW.44= Fdذt6Q]_|/bC&ؙ݀~{+R-^ 5EO#מ8˩[ϵA&󸍧큓T{C$F;"Ģ(0 .Tb_WA EjCтJ%34490e1$,=&dNx-ѯH|BMB%[^G9I!K" zil?9Zמ.8S-X#=Ղ16ƚ6VSnGP1m)+*&72BF㓳CFg4!A:>Ncl7phcPY!6Lce΅t6te|?]RII~IBnuznCzu~%׻\D6p|o_o7xg/u}PeeP~%2HȂhr K&'FK48-(us:or( 3Ox>o2)ZkK-e6M OIWpʭ 7T;Cw&nykrjlbrXIj/𓥽A kN&nf"im-grnxUvqQ% -M"P dBvQwޓpԈ#{hsѠf{n\a ƙݸK-il 2&LJ^vZu 8B6 ߄ TMWQ+N %ېQm8\Jb]HUKO$vfRVjvV$ТD5kmPK!eppt/slides/slide6.xmlWQo6+r60k̨"eH{~GR$zI/;~wGXX4IOF b2S4kXAJ;!ӤpNO0YJbOfd2%q05+L RhˤoٯgʪIA āڶh4m{, " Øs=3A|S I$%& ыsYAXC2Y_ /CY\zY>ڧ[#g=|ոj`(kZeIAb[0-^5Y7n6O2QhIupI!~%YCC}iq\pʼ:?o'G,ՑJTh8mO6J:Xe= ʔ<d+a\ E "Hʲ=vKů֚4GhY4_ޞ$^8z/PK!% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK!% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK!% ppt/slides/_rels/slide3.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK!% ppt/slides/_rels/slide4.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK!Y5 ppt/slides/_rels/slide5.xml.rels 0_%ݤ "^Dv{ځ<0&V@I.a]= rqބDʉKÆ${"QЕMQ Mhd˪ZLrTQ@1/پĽw.T4'1{."j('5-@zMA9 PK!zwft% ppt/slides/_rels/slide6.xml.rels 0_%ݤH^D(x!٦$؂;; S;7d㰧t+4g۝mN"GMHD\0.%9|匚!_B#;TՉ5L)S{ #l,MF],~+́ҵ1išm6_PK!i\??ppt/media/image1.jpgweX^.tKww# XbE钐\iNYJ@S_o}<̙w杧5:L ;'4@ a@`0cSSQQSPг3вQP01rprpS3 s sqs KKECAmO]l-A$`<_00…rL aaba@$X`a2{8Hrn] Q+Il6ߧzSb{? $eVxZ$Tni?B$! ak!$Y[ bjΘ*K6kfjOAWd|(_#˲Mj5EV꿮-\\#ψh*lqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK!z/!ppt/slideMasters/slideMaster1.xmlZn6Asp%ԇE[ dВF^ҡ@aoO#%ZfNQ鎼7Kf)/,34heq·۫I/0_x  A  !eт.Yf_^܊yZ2 ٶg-$5C9-h*Bk31fIDOh[N2Z,0Kt^LgF@Hlp\1:dCs:wLzܪU~)t/ \Y_p0 6M# th* +uٲv,u3R>av`UaD4jOmMNc9r Y]%Qゅ]d,8D< #`*$7*e3_6B67Vs,E{pj'v jCm ?li4Q*1QJ)~n5@"@2VBi8oxWX4$奅C|`!R_Χo)BQn4>eP&qCݧL>eS>eߧ4AioAYO>倸QPmy܀ruN/;#~T$_H(WL@gE#yMZQU6뒹鞮diu5iUUXƛjj\`/1p mo6Wܝlj9IC K흸/C~%܋8[d>IȪxLWEȍ~E Xz'b靈{SM *(p}.T|@}$T<*(8bTP xwu[޺װGE(CG aq<,v}8FŭQ!ޱ԰cūa`_|yX7X԰ mʰ9qXP9g%x [jJ[F@;|xQWNN%;{1A P{AXѾ]URW  u-wV wW y5vmPK!r,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK!yV[Content_Types].xml͗R0_)TR/<\yQ –$ioCm$'σhäè 2mo^G/K&Papj $SDRԜZ( Ƞ?%B#aB n>q*apU*Z\&*Y!7- ",c̔)sRb_/z)ʜG=RcIe2i0Ʉ%s)0)=-uŕ8yGrnMsp3`^VO͖Ú,a?`7ԿPK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<0@%8A)elCJ,XM*VX+_[9/0pI-׶CEןO [ܲ)ko զbS)濰<1V=k:w ^QO3Qoy,ߌl k8|ID ]I"ڼC;谜pCɥ|d:om~ n&OCԩ!5| =[ rHUs`.*C팪!N7ٛ3ӖXE5 9ݜ߅a5΀߷2ԡxLBpdDDɽBbxt_{d hϿ<#ENx#`xH)8B qh_)R{pnGGHK8# {!YZFËҹyz/fnS/ ̱gT)r&]J8l%2VՋUkVqUu,1^@!fB-݆fTO3X1~Ajk%/PK!~cppt/_rels/presentation.xml.relsn W!OԶ[j{4ŒeQn}vq4dwߡ#hå(q`)~{ě:jre"L[k#!SH=un6@4-ӞhWXIz˺ $; W \C%>inۊY$EU#)f^"bU >*B*^tr W P̕b,託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK;~*S mu!ppt/theme/theme1.xmlYMo6 toeVuرۭM$niP@I|úa0l+t&[2eӉf[|q!m9k"}me!pccҶ&DZ6?*P!Xn*lض`N0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJ9ОU7^^_Wgz{|׫BBOs9m;G@H8ղu=wCʼBl*LVdCsq'v9UMji/a*庬K#T/ Kv17N-93Ƨ;sJ}yggMTM3} \P)D.T 0Qw.ܯ<' ]Uy H:tKپ 0B2Y&«/VS)+SYT7AN8}6CaחV`gxN"G!9>FZC@vz= $g<{h0G%|U_0| 3pi+z+/Z JC\fxED WCVC= kb 'pb 'pb'pzHt0o]~r#';c蒈[<!Bd)ޯ 8H]Enȱ|#q]؆ŖƗ?ڝlR*β%nBlpPBav˃eVU2ðSe!X?ׄA]hgL]TY~ E׼|{5E3#p0fN:[ ОP^tȆ/usц] =勼(zV?nJ 6g)+bOW,71mOXGȍb?@a#}k*Ťpu?7IR*/'M!PK;~*Svi!ppt/slideLayouts/slideLayout7.xmlUKn0uP?;d(&FXE$-Zqr)q݈hf8l[QgC*9:ex?@DL rm2. wXKľ(@Ag {^2CoLBOR;HYoCPuYyyr]K#]/J`\cԁ gmن r,_`Q+",j(Q+ʜs RCBZk,VxedI˜8/1xaߤ&]vf0Mft#^~(w2Tf}zzERJ7;g-K$n/ C<ɼ(Ӥ?IكA<$K ~52\Bdj $=fo01l^#֮ZT{"T~rcSkp5=PK;~*S1W!ppt/slideLayouts/slideLayout6.xmlVێ0}Gu.j!MtLn#niAH|~ c'vECyx|Ιq&omk6TJexHKcoGrYyAvbmzD9X+Z}&$尶&^=. k Tkc*TrQ&&~ $5aڀ1΁}`%íBͮhy(3yB(jsPUF n6 ~vj;h; e;Fx|opӉ':{V^-/DY#.{4(W{ v;6 Fg$#u/> xuMM({AyΪ32Ѳ2hCr`@Hq7D"7*JC; -d 9%F )4- PׂBt/>Xߣ$ei>8$I6 ˃0f@T5WkE;6U N†ǔ'%2aZSeiT/k.5RsZENJg$ ~Q?TmQCt8G4A4iV[[?y |/igh* e^2? C2ɼ4N<Lx60f7PB9+D6`,W\knXҏQq&֍-n+.޸"6w& ? m<&! #-7q?/y3xBK\ئAI|i~ :ip4'pկ+Sa!g+fEbgضge8r=kIDnh4H. XH$)xVA+FTI, ix>F蓧? WVY1X\D4+VDa$/*̑ZZ;PK;~*SX<j!ppt/slideLayouts/slideLayout4.xmlXݒ6LA^{ 6 t:Z[7Jv2j'OI1 {c>on ֘Cþ ˄yS34L%[̍pޡ-] 9J>@Cc)D5'K\ ~C+\we-`Г.t,+KYYO,O&&a !˼-[u[04zJb[Ikr6nɌD?QRHWsY5^~@*f ֋>[hhX`34d ԓI7,`PeUKs֜y.ΪV_^%(kvfuѺAy,hUB]Ob&J]LKj\g2 ʝCmL43{@R*#M1sJ+j[~ߑn&A ^RJ%s+[D2CJtHy~On>v`Yj|p冁$;~?poD0jz&vF3^Zm9Nu`}aX@~ Na;u6SwS}Mv'w "g8e ^crs!| ٧tlzR<;~Wku-Z^ kama#wT/۬}gFYٓȏZ=3y9FiEq8M??D4U+s^T<+߅DjpmPma 1) ͉oKBs]ZHb~U<>Kp pJ꣮9q,q]v45Cד Lr ﺻRjwn~o_w\y$qьҐ(NFfdKqgoN}(, aX*H&hsy(IhK`E0h[&49H &LRuCaPuIR.SU^. pGt PK;~*S&a[!ppt/slideLayouts/slideLayout3.xmlXn6wkkN)V M:}Fmko(OCJl7 r#Qz.Bc[x^T~2mK*R zU$˯Ɇ/:*9"c{T=BHf ZykZ%Q((#.ŽݮǬYK-KZF(/E-;m1jA%1!M l%~$-#(V0=ܪH S¼Tկw,Y ȵvj:X>dRzl6]++k&~6[>"-FhgSͪ5ѹ/e5>HGom%^/Z+̠_㖈0\P}':FNKBD!en 7z܁*(UN&Tm5sk-Fs9)`q mەxGc/%|T)ںQ>X[4/HEeL ve0*iAhn {9i{[k31g >E$h۰ѺC'`Ǎ$dWQC`ySt&XgE>)3ES&a}kȨRL8N[׃ q" ׍.z=ܡG { v8_$ޠx1CE {Ox{|='޸;̷5_mqg]@~]$yu>WÂYWo|XYޫhk5?^%A: . u@TUQI1_ zTQ ;N :L8u ̔hءsͿž5HYd Gep`vT?j?Dm\MA t셃Ti|x6jf^c~*ms-U;"I2 q'0\L`0 6G7w]חE&3uAj]`N0 [7nТ7![R߮L據m"h?PK;~*S/\ i !ppt/slideLayouts/slideLayout2.xmlV]n8~_w gulNab R"]qzRcYA|7ow5C[*Uś_xMy9VAJ&'7tr^퍘*_=hSj-5Q\\Dë|$f8I8~y~^UF<Դ-h_P=8MH> Id?:-䝭YR]EJy(q')5fkq+[t}pNLwd́5(kլy6+X>rjj19?dǫ5>)pǤߦwhs6(;流rzG|\d]qr]$SZ/-&|5UFQij0?fo 臦2/E뮻ĂR6׵[bNyޤ֏6XV!L#fk5R{.KN"&PK;~*S+cK "ppt/slideLayouts/slideLayout11.xmlW]8}_J37HJh}w3Dum(ԿsKI`h% ƗW7%Ck*d8UzZS;T Z[*׷/~{U$ȖJZ*U0ْDVnEI8` {E1V%T"(# eQ>T}HImkQB1:B&^kٌ݂"% "# x9(&빠T?UE=v Pk6 7>=f!J}ufh[}z H̞Fl99ޢ:t<(.xQCbZ&]D,E5Y::s"8M^/P+ { C7c%d$< hFC-32`RԖQCJ@0#heA*eT;?mʊ#RѼP d$HMIbV#zmxw|q}z`$Kr]R-ܑia_il_h,jK.9k΀./ q>!Z \ _,N_ĂDуQY9T G!a>p,x;I´oӳQ٣dN:Q?Ǔkw搪*J:-Wޯ!y+vOvL9eoKp [J4"V%\WSdƊÑ.5tOJ]M:]?Gvx~8ݮ: ؝Yo\a;'$$KN\!{h4 MQOV #:e7x+E& umq?QQݮvkφ0akp-neExC$9R3Tv>Ϣ_fУ.Q9$ ‹.{;m &q0O޵LП&%io0JgKwa]wk{ F!J B[a/¨&. ]hϱBh.ȠSdYNu.K-@?+M6aA tQ 0^ a8G>kv&뷯 *>lJզ}Ck$ tI>ijѵ?] q i4b[ g~$^bZ*U۔b)>S%s}ik; wz4lԺёMO2wDm\TKݔM%PK;~*S³](!ppt/slideLayouts/slideLayout1.xmlX]n8~_` hJcI)b4 DB)QKҮqz)r~.8o!gΚIU c*qF띷EÊR;L:6 @-=3-",VDcKlD'b? $|Xt%;Gދ8=1;^s:76˺C<*Xigls,sKgM9 Lz;۠ _PIϜ ^< c xɀw = N0I&hIp9A{I {0>Ѥ7x8uf=9[ ^7꿠Ħ|_9Ɗ10G%4qv\}^ش\$[iP %=)S!LLW)yJMgt/&:6* \&x 9kvǪ_k._]Gb4 JLKVG %V)yKWuͅVNNFuG֠7QR2dx`p I|9 ~ۼ戁}W?wM&Hh|j;]3av r[<Իp__ޛ=PK!55 ppt/slides/slide1.xmlPK!{[hppt/slides/slide2.xmlPK!(]8:r~ppt/slides/slide3.xmlPK!Ÿl ppt/slides/slide4.xmlPK!f|ppt/slides/slide5.xmlPK!ewppt/slides/slide6.xmlPK!% [ppt/slides/_rels/slide1.xml.relsPK!% Bppt/slides/_rels/slide2.xml.relsPK!% )ppt/slides/_rels/slide3.xml.relsPK!% ppt/slides/_rels/slide4.xml.relsPK!Y5 ppt/slides/_rels/slide5.xml.relsPK!zwft% ppt/slides/_rels/slide6.xml.relsPK!i\??ppt/media/image1.jpgPK!z/!j]ppt/slideMasters/slideMaster1.xmlPK!r,dppt/slideMasters/_rels/slideMaster1.xml.relsPK!yVe[Content_Types].xmlPK! ) ,GgdocProps/core.xmlPK!y%$idocProps/custom.xmlPK!Q i_rels/.relsPK!jppt/presentation.xmlPK!~cnppt/_rels/presentation.xml.relsPK!< Uoppt/viewProps.xmlPK;~*Sqppt/tableStyles.xmlPK;~*S }.qppt/presProps.xmlPK;~*S mu!sppt/theme/theme1.xmlPK;~*Sђ7-yppt/slideLayouts/_rels/slideLayout11.xml.relsPK;~*Sђ7-zppt/slideLayouts/_rels/slideLayout10.xml.relsPK;~*Sђ7,{ppt/slideLayouts/_rels/slideLayout9.xml.relsPK;~*Sђ7,|ppt/slideLayouts/_rels/slideLayout8.xml.relsPK;~*Sђ7,}ppt/slideLayouts/_rels/slideLayout7.xml.relsPK;~*Sђ7,~ppt/slideLayouts/_rels/slideLayout6.xml.relsPK;~*Sђ7,ppt/slideLayouts/_rels/slideLayout5.xml.relsPK;~*Sђ7,ppt/slideLayouts/_rels/slideLayout4.xml.relsPK;~*Sђ7,ppt/slideLayouts/_rels/slideLayout3.xml.relsPK;~*Sђ7,ppt/slideLayouts/_rels/slideLayout2.xml.relsPK;~*Sђ7,ppt/slideLayouts/_rels/slideLayout1.xml.relsPK;~*Sрu3!ppt/slideLayouts/slideLayout9.xmlPK;~*S讹!ppt/slideLayouts/slideLayout8.xmlPK;~*Svi!ppt/slideLayouts/slideLayout7.xmlPK;~*S1W!ppt/slideLayouts/slideLayout6.xmlPK;~*S9!ppt/slideLayouts/slideLayout5.xmlPK;~*SX<j!ppt/slideLayouts/slideLayout4.xmlPK;~*S&a[!cppt/slideLayouts/slideLayout3.xmlPK;~*S/\ i !ppt/slideLayouts/slideLayout2.xmlPK;~*S+cK "ppt/slideLayouts/slideLayout11.xmlPK;~*S  "ppt/slideLayouts/slideLayout10.xmlPK;~*S³](!qppt/slideLayouts/slideLayout1.xmlPK;~*SJ6_'kزdocProps/app.xmlPK00`-pandoc-3.1.3/test/pptx/pauses/without-incremental/templated.pptx0000644000000000000000000017326507346545000023341 0ustar0000000000000000PK!c5 ppt/slides/slide1.xmlVn1IAV*U%"wvVk;Ka| c{ ) /INוD5Nh5.GqE5j9.>޾<)NI Tf%;҆+-]bfg$> U4!b!(tUqx(ӕ¸fA3;{%TءYJ﬙zb`@N(n[6w-k~}&;YH:?'L|O26Z{B1ذ{xCCS}zd\61jo X n[YYCh" 奖[t;l݉@X,GhVr=J{ȸAW[ybxQŕs>OET  . "O,8.́f|>>R)$eTՊM%qPtSI٦7{rTH3ÝYeM4TA3, ~o#iis%s4]͓n z P[-T pXp_0˲%y'tod3șO1ȥu$l2e8⽽%k 3N̅~mͶLשM?G$:'4Q'nZ^:&*+SP=2>'܃O`#0djη7kCv\|{8nǢϾPK!amppt/slides/slide2.xmlXr6~ 5DeML̸&RsHhb[&' (JQʓ `./_ * Wr1)b>Ae94"PfHFInm9d9+P% +] ST`]p!|3Ve˂Ih&0MKX+53` eMS͘]NʱjN$)(I%^*Ej jkn,jZig>}c\1)t\ ڔ*{4H*HlTB]ȮK0fAIqۿiP[E a xJD K AIVPGѮN[W}Eߒc ޤ#_FLj%-dƂd,W2]πUKkTM@9l]iM][>!!Y?1Kn0:yƊKk*-xӮY^@#yo/$-.;t\r 5z% PePċJ$s.4Z5 eJfK!u6J cIeˍ ׅ'iȡ`ι\B6DC zS۪uH_E컷0y#1qi>ۊAGGLn>g0y?Ŵ>[ ];Q_2ZR^+)o\ N{R4GYƸvvkܮݦF؞4qF inr+Z zc И/nÈ`Gnc򄄸 q quW5!!!ϕiԌ?#oq"u*M.R,Gq}20"ՔH{ϐiz蟒i$Ez8U*O1͡l}FYS ^@ol8>DSi&f4nZnU8͖`vvc}7PK! $:rppt/slides/slide3.xmlWr6~Nr!+㪑2dD-p0DoOٯKA;M5W>X.7]%h4cR$@X!om&_#V2>Ӧ1}=!ӨsTs%Ge\vڙ;MR4 w*)7[`>;6w;f`gJ߂?qfd1Кػ8aDXk[Z'ZGuПG=9.~[.qMO<cloG$~RWKiU$CP޴sP޸/BHaN?):i#"{DnȠ[p/nS<|zW-mQ\âj88ΩrUˢ,ۺ(߰0Fma7N)Hpi{2ڇ g܃ZFOab ^H֍L+kyIa{mPK! Bppt/slides/slide5.xmlWR6ߧI 32$VlVe!!U_'я;ĒΏN> VTiVi;#DERLdO죜h"`zBQn`D -KU[TgQp܏\&p_r\.YB?IUPaE91`ΙԵ4y41v$Y2Pv%V_{w{X DHN@ |~/V~w$dLKU/޸_lڠğ&$ew_ǵRl_{5gS:Wm ΁·~.`\u Qഠ02NܿCY?䌧ZO()ER)಩H1jQUa}ڣcrHV[ص*E'Rs|K'din>9 Y/eܱv:taYx\ry^]\\{;.C3sz<3HKŗȇ i]T3p1\0ޞi[G+قqf6RClo;kLT!໓V-.8!Un +=mHЃ^S{]_r#tM[to2U+^KRhQi$bgPK!eppt/slides/slide6.xmlWQo6+r60k̨"eH{~GR$zI/;~wGXX4IOF b2S4kXAJ;!ӤpNO0YJbOfd2%q05+L RhˤoٯgʪIA āڶh4m{, " Øs=3A|S I$%& ыsYAXC2Y_ /CY\zY>ڧ[#g=|ոj`(kZeIAb[0-^5Y7n6O2QhIupI!~%YCC}iq\pʼ:?o'G,ՑJTh8mO6J:Xe= ʔ<d+a\ E "Hʲ=vKů֚4GhY4_ޞ$^8z/PK!% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK!% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK!% ppt/slides/_rels/slide3.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK!% ppt/slides/_rels/slide4.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK!A ppt/slides/_rels/slide5.xml.rels 0_%ݤ "P$!٦$}{^,xqggg>vHnÒV@IΧb m=(rqDʉKÆ$"QЕMQ UhduUX̀y&ة%#/پĝET4S."j(g5-@whƖ̠,*#zM/A8PK!zwft% ppt/slides/_rels/slide6.xml.rels 0_%ݤH^D(x!٦$؂;; S;7d㰧t+4g۝mN"GMHD\0.%9|匚!_B#;TՉ5L)S{ #l,MF],~+́ҵ1išm6_PK!i\??ppt/media/image2.jpgweX^.tKww# XbE钐\iNYJ@S_o}<̙w杧5:L ;'4@ a@`0cSSQQSPг3вQP01rprpS3 s sqs KKECAmO]l-A$`<_00…rL aaba@$X`a2{8Hrn] Q+Il6ߧzSb{? $eVxZ$Tni?B$! ak!$Y[ bjΘ*K6kfjOAWd|(_#˲Mj5EV꿮-\\#ψh*lqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK!1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\@lmwb8VȘ$~nW sІI1;Q; @2a"/yx5쏗 L ©OSIO&RsjqShNS vGb),۲F82.p ap]!U*c1xLSQCfxE Bг1Sіo*<7O>Jl) /\r4 GZ*C0hlHKN&,Ԙqt gI i)ms\)KLt)g{(  sE5?Cu#TK>Buz^RyI#'ZgUh{IeY@οpsSN(s2;CE}+Y 2CԤbTG,54rN3c%;RɼS+~);i >+ՄU5pS!i!!=!_!iv*R~PK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+< 0 0HNL7z^\)m8zpGw虣G;:qĹ{;*0J>ɀ'8iڍfaV5qbGfSjb<^qj&ԐDcҊ^8ߜ\|o0F[\DmL8[S9 txc|{jxU>WۍE%Spr*ZtY)ԍR(ɋA}09{sQ;ӜyFA( RAi:HQ)xR?$ n'wH)!<ܙ]!PK!sPcppt/_rels/presentation.xml.relsj WͺQۛR`l8sȌn}I;BR"ѓjJtVgI(Kj?%ެWo +\#Car7ޛgBoe.TRi2J[iZ=Ѿ=uU [Ϳ[P/А%ހzaJ {{\^@D\.dZPK!g[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+O$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPK!:~"Tppt/theme/theme1.xmlUTux YOo6wtw?:,d CD[)Q $FK;`aۥ0`~lCXS {tySH"yWn$(w'VGy0aWA`0.)ŮaXtv0c#B3E37Æm;FPk9Ȅ>,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}Here are examples of italics, bold"] ,HorizontalRule ,RawBlock (Format "openxml") "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Bulleted bulleted lists.\n \n \n \n \n \n \n And go to arbitrary depth.\n \n \n \n \n \n \n Like this\n \n \n \n \n \n \n Or this\n \n \n \n \n \n \n Back to here.\n \n \n \n "] pandoc-3.1.3/test/pptx/raw-ooxml/output.pptx0000644000000000000000000006756607346545000017353 0ustar0000000000000000PK"T ppt/slides/slide1.xmlSn0 B]u0M Pt}"ӱ0 $q%Ccf4 Q9f/W J*{X}b7kD؈5S QhDt-:Ht HF#7BY6ՇԻS:`Ц PDc^8`J23mab#߆TK01Sdʫg;T@8̦h.=׌>g' dʅ[^˖܄/gruY}Y}q6HBbtNTg :'uDR)?T!{0.rj/OkŞiɗbzЅ-\L#m6 Ý81 ^7m~b@P3ĿǠi"2L*`}8 5Fp5 * dYlO?Y"/񓶼~|~_PK"T/Cppt/slides/slide2.xmlUn0+'t(A%h 8\) UZAZWݝ]>twAY3'gp+ɏWUA H&TlNd4p5 ֡I5iwTx3QԚfh͔!}MnϖhbGQd\k؜ǐhJHR(gGڭ|1oVH!`XsBޯ n:SyIji;\>9:$Gsqw?Ej1 ۡO8XiQZ-Ms9K8KY-064pIφ$=O31oiBYc(K+#6Vm4,qO H7TkNJiQfhK'tB_>; =袼V|GGR Ȼ{yORAJKt|3]ti -~PK"T% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"TIa [Content_Types].xml͗n0_q$mE!9t9u\3$Vl'M޾$UQ&l1O3op)bFɄI쿏k8菗 ZuKaSȩ '9( (&a[h=tYaUYL*(T3j񘔧dclɜ^B 11Sٺ+vBGFZ*CP9NLS5f9P' %A[ۋ+ep.̚s4`^Y;T$u"ԅP.B\rEzƢh.N(.!%,TS#7 X{"{_Srf̏~J{Uo);iZkj3zBhǥ|PK"TmȁGdocProps/core.xmlN0_%=q⪀$=z "7޶V i7iS*]Ŭ-u,Z(u2;AI3nVDAEZoxmrQ檅E U-]O lYPcRqdW5V\TDX; /Pb纑S>7o#Z9y[^DPfDl$<$+~YIuf"E Ak x38ޫQ/3qb7+ߥhu8C^" JkF]+*( cQńtEZN-+ ѶBtDkqa?mn 5 C-EA{%w\<~ڀ4ɢse hwf!ӿm쏾PߜeAA0*s%_W4f~ ٫2.J2@7d5\L[I-C(Ĝ~bt> f,X漢j8ǵԟϦPK"TWD>Ippt/_rels/presentation.xml.relsN0 _%-0Z B xmDDI6Ti8Dɶ\ yi4(c}j{i=%3Cwz}a,7CQ;ensOiMS-۴xoǀ:z%u*z($uN'gbGQJR\夰 (%)y>;Qe7&'Wo _^?1IJk';{o;&PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlRI ppt/_rels/presentation.xml.relsPK"T0K Hppt/viewProps.xmlPK"T ppt/tableStyles.xmlPK"T }.ppt/presProps.xmlPK"Tppt/theme/theme2.xmlPK"T mu!!ppt/theme/theme1.xmlPK"Tђ7-(ppt/slideLayouts/_rels/slideLayout11.xml.relsPK"Tђ7- )ppt/slideLayouts/_rels/slideLayout10.xml.relsPK"Tђ7, *ppt/slideLayouts/_rels/slideLayout9.xml.relsPK"Tђ7, +ppt/slideLayouts/_rels/slideLayout8.xml.relsPK"Tђ7, ,ppt/slideLayouts/_rels/slideLayout7.xml.relsPK"Tђ7, -ppt/slideLayouts/_rels/slideLayout6.xml.relsPK"Tђ7, .ppt/slideLayouts/_rels/slideLayout5.xml.relsPK"Tђ7, /ppt/slideLayouts/_rels/slideLayout4.xml.relsPK"Tђ7, 0ppt/slideLayouts/_rels/slideLayout3.xml.relsPK"Tђ7, 1ppt/slideLayouts/_rels/slideLayout2.xml.relsPK"Tђ7, 2ppt/slideLayouts/_rels/slideLayout1.xml.relsPK"T'v! 3ppt/slideLayouts/slideLayout9.xmlPK"TJI,!7ppt/slideLayouts/slideLayout8.xmlPK"TSd{g!<ppt/slideLayouts/slideLayout7.xmlPK"T}!?ppt/slideLayouts/slideLayout6.xmlPK"TE˧:!!Cppt/slideLayouts/slideLayout5.xmlPK"T?N!9Hppt/slideLayouts/slideLayout4.xmlPK"T6\#!~Lppt/slideLayouts/slideLayout3.xmlPK"TD9Bi !Qppt/slideLayouts/slideLayout2.xmlPK"TkO ' "Tppt/slideLayouts/slideLayout11.xmlPK"TF "Xppt/slideLayouts/slideLayout10.xmlPK"To@h)!\ppt/slideLayouts/slideLayout1.xmlPK"T%1,o`docProps/app.xmlPK(( Dcpandoc-3.1.3/test/pptx/raw-ooxml/templated.pptx0000644000000000000000000012123207346545000017747 0ustar0000000000000000PK!*̟ppt/slides/slide1.xmlSn0 B]u0M Pt}"ӱ0 $q%Ccf4 Q9f/W J*{X}b7kD؈5S QhDt-:Ht HF#7BY6ՇԻS:`Ц PDc^8`J23mab#߆TK01Sdʫg;T@8̦h.=׌>g' dʅ[^˖܄/gruY}Y}q6HBbtNTg :'uDR)?T!{0.rj/OkŞiɗbzЅʶ4|6 Ý81 ^7m~b@P3ĿǠi"2L*`}8 5Fp5 * dYlO?Y"/񓶼~|~_PK!/Cppt/slides/slide2.xmlUn0+'t(A%h 8\) UZAZWݝ]>twAY3'gp+ɏWUA H&TlNd4p5 ֡I5iwTx3QԚfh͔!}MnϖhbGQd\k؜ǐhJHR(gGڭ|1oVH!`XsBޯ n:SyIji;\>9:$Gsqw?Ej1 ۡO8XiQZ-Ms9K8KY-064pIφ$=O31oiBYc(K+#6Vm4,qO H7TkNJiQfhK'tB_>; =袼V|GGR Ȼ{yORAJKt|3]ti -~PK!% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK!% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK!1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\U*eLUQCjj<" h!z6fƔ DloVO͖Ú,a?`7ԿPK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<KC !ژ*^400S14껪MJj`^?ؤ^0'^I yɯ-3j)XSDqL5g"C9_hs<Á `v#o>ȿ\⤓k=aǾkzGW8\ ;f8!1qg)+9Ca?ڰoh#̚Ϩ][.yTHP)\^W1b/Bw @Zӿ Gq؝8] h^F2Mȳ%U 7PFNo\u}8u%Ml+О9ܶkxr$ SNoN 7 $/'%3 ZFaN}-wF~ E-H$ dR; xR?4 n-$;$Kh7i!M}]!PK!5ˏIppt/_rels/presentation.xml.relsN _{K[u3c D plixAvy~sr3(C ZF֫+*b$hϠ>PEIkC,]G-CZ傺=ɦa6M doӶR_p l0ra`p(Ԫn@y QI֡q&?Rʞ3I"Gq֑~\(| {|&bd$NPt9!vOeF :VPK!g[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+O$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKv&Sppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}ppt/slideLayouts/slideLayout7.xmlUTux PK!3Y "Appt/slideLayouts/slideLayout11.xmlUTux PK!Ex")Eppt/slideLayouts/slideLayout10.xmlUTux PK!z&!Jppt/slideLayouts/slideLayout6.xmlUTux PK!=[!Mppt/slideLayouts/slideLayout4.xmlUTux PK!im "Pppt/slideLayouts/slideLayout12.xmlUTux PK!h "Vppt/slideLayouts/slideLayout13.xmlUTux PK!s@y#![ppt/slideLayouts/slideLayout5.xmlUTux PK!=t!`ppt/slideLayouts/slideLayout1.xmlUTux PK!f\$ "eppt/slideLayouts/slideLayout17.xmlUTux PK!(D "ippt/slideLayouts/slideLayout16.xmlUTux PK!)J.  !mppt/slideLayouts/slideLayout2.xmlUTux PK!;FdvU&"~pppt/slideLayouts/slideLayout14.xmlUTux PK!p O;"+vppt/slideLayouts/slideLayout15.xmlUTux PK!!|ppt/slideLayouts/slideLayout3.xmlUTux PK!K%!$ppt/slideLayouts/slideLayout8.xmlUTux PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux PK!x%,docProps/app.xmlUTux PK55|pandoc-3.1.3/test/pptx/0000755000000000000000000000000007346545000013125 5ustar0000000000000000pandoc-3.1.3/test/pptx/reference-deleted-layouts.pptx0000644000000000000000000004336007346545000021110 0ustar0000000000000000PK!ר[Content_Types].xml (Un0W?DV ~L[o %(*%,͛d2`*&h@PNc1{ oIi(f iKmZmƿPK!ht _rels/.rels (J1!}7*"loDc2HҾaa-?$Yon ^AX+xn 278O a\^hD.Cy1BYz |t!9rL߰'~20(H[s=D[:b4(uHL'ebK9U!ZW{h^MhwuV};G缦oYDS7t}N!3yCaFr3PK!c\#7 ppt/slides/_rels/slide1.xml.relsϽj0=wW;,e)C>!mQ[:o1tx_?],(AC+lt>~n_'\08c 1\ۡҌ0JhA1Q!K-_I}4QgӐ{ׂm^0xKѮ O;-G*|ZY#@N5PK!W/ppt/slides/slide1.xmlĔ_o '; $nU4[%u4Nä3u[ pc+%3 GqTQC#,Pg-zRVMiKtJe%*%합9'Z 2f߼_㷊k.]pATnJ>~K4m0mD[ù_6K6*_IZC[0,leCi7 COKNZV>bʻWISuŽ8 g^fT;gK]"w9E<,~6Wف J 6$xY_hA5r:#̓ysܹ=!I{v/A7սuq<_y>ȓj0]|ܬfd:]d2|/QVݐ:N.0( ОQA, jew;%3M3q * K1g~?PK!.5 ppt/_rels/presentation.xml.rels (AN0EH=qRBN7 $&$myL!j$UuyWN-zRȒV4ފǫ;`H//V/eE*G,І9NRbxR[ol/t0Q&TVɶuJ|g&hGz66c +iOC, *_7fxэIXAk|  vܛøa?>PK![9 ppt/presentation.xmln ',n'_q8UӤLM,miテMb7դ> ?Ï#|X\*PJS&ȡ<EɟR r& Lp#Uzˢג*507\IZsSVD]r턬| I^}<23nWNMwN$emj_.އD-nEejS溁F&h {WEgVb)8IPX0 ?߷;'Q<훓|<c$JL3".4UVv2ó;0@z.Čm6Ҷ7a$㶍f(a/ נ\PaOT 9y o) oVJ|%!|# =,yix}O81~4yk|,cN2XM:vUGk~.FI\( 0qopxgߣ9A(OrA|ž8X@P'm# C{@_`dX@iw >Sf@q4/3rXbshZZN#d+?Idn"7;˂,« WƸ;&֫^^4' g|KLKB= v FӤo܌8~Qȏ;nDoΚw ^Il@jj(J7E ف3}-8p9/Ò hٜlz!,B|Z ܚ k%ØaaP Q#7 ]v?Y3o4YKR6liP狻oiԃ>" p&z؀%v2&85,R< 2BUnq-+g.V=(NSK!#Q`gP>FRakoһP }e&%3qsJxkn؊YS,U?WyB[ S4uk{U>^{g6b>9qx^j S`C g &XBu~$~P=jM}Žf<M(GW4% 4 jتc0TPYp>p櫷Ad!X{k6 G6VV;Y>R CG ]E!ΝZ{F'b,t6 t4-4YhCcq-`; < -vNa#a#OF@ry-vO%><&19a;pF`Ne] ڒ;2fxΆ&>Ћ?^Otzxx|E~ ~ }u>L^vx9ˊOJw+s\$=?.1{&R3m #99eKп\jIMGvUoE>|9@ t:ycZf 6slU7?^ǛsZTl&CamuCmm.x8;M{I0]Kco;F΢+mv;9,E-2HOoCk{ۜuT5 ]צpVZ3NwRcmN$AIE Mxȋb?`clV녃 H&9%1_!%De#\Kr_U;u0݄t\m(qR R3uS%ɖ 0uTu^PwӾ)I, dx5BE2vTTr=hA݊V -Ιd?m)sRN&5 #%% a<9<2䔗Q|? HlRAO'QQ$|z^(ڍ EU.xZW# HˢWHYx|Cghy&ӓ$5A)E%8R8 hbthxEO۱0qC))،~t'eTAPL UԼ` QX'v4ug@δ nvTx59DXʐ8F:~:{X(ط]DY9(ԓ6ekQb|]aڈЍ5MDui\d_"d3f < :Ӄx6NNu-\Y9_JR6lPrJ2 &(&3k|TtI8kI&,dV0DM8  1MyxLcОk,<c QfMV@.<уxE?Ke,98G$y(ΎFѪh>Z߿?haA}`S!?ƁCtٷ ZWse>|A)0 +d5&JB+ $Jb+, dN^kmi;cwR(6$ an>yz;L*#fʸK Rs8c!M2X^'W|YR.T}z*Ny=tU#]Gd5x̏v؊_"aAgcT!ʅ?Bg1v[ikIs^/<5!Vru|vcVW#Y2aUC5J[-ԁjO@BoZBe/v+'_SO>o/gd }b1&' -[ 9Y>o&*\Ìsfw[ajf%I^wWY'shwоx/wО76z~c?fmI9=IoV>_WϴGPK!bE,ppt/slideMasters/_rels/slideMaster1.xml.relsJ1di =I}!7HR龽4PC/7d;}Q6x =WA[o$|VrAq$,a7<>liRdcfⳄ"DV9e8S$p4u4HQE@`6OTe=)2ƵF#TMPiN=iPTt C[D#TMPjVUQR(BV3`RBr1@ЫR*Ր؁iإ5d U!iiijʹiii{(RmN¹IIJJ;idFSb+la+P+j&Z͚"ZaDP "PS*E,u*B%jE<-hNXE#6ƪԘ*H؆*i=ccBӀ*xw" O R:v&AijQjMvѶ}|j,.bMgɤ}9ijɆRU+LemFشʌ-\h&E"-DV*6L£eMDYD*6e:TɕjEZUZV#&ƪTZV"OX"Z3ljOTTZFNDkJԋhOXeOjzU܈Dt/ڦX] Ӽ#؞bK՟,RuV'y5s4YS1aگϥ4J(4uCW?jjEڣhGPu :̕ Y4m1Qf*|޼3ؿ}q_wf8WW/__x@X O3Ϸ 0000f0S VPPPPpVs 0|     YYA@       q@ VPPPP0 0k 0|     q@@@GXPPP0 `  8     0 07`(`(`CP   VPPp ހ `@     )`x +h(`(`(`8 >CP0 #,(`(`(`(`*`8g +h(`(`(`(`(`(`8+hXA@@@@@@@@@@@ ` +h(`(`(`(`(`(`8+hXA@@@@@@@@@47`(`(`(`(`s > 8  #,(`(`(`CP    VUpN@000 `XA@@@@@!(`x +h(`(`8 o0 `    Y 0@@@4000 a@@@@@@@@@@@!(`0000f040000004      `@` )`      040000 `XA@!(`x +h8 oPP0 `  Y 0@@@@@@@407`(`CP  VPPUpN@0 `XA@@@@@@@@@!(`x +h(`(`(`(`8+hXA@@@@@@@@@@@`V9 >CP0 #,(`(`(`(`(`p VPPPPP?`XA@      0f      `@!(`    0 07`(`(`(`(`CP   VPPp ހ   `@   )`x +h(`(`(`8 oP0 `    8  `@GXPPPPUpN@0 `XA@@@@@@@@@!XA@       q@ VPPPPP?`XA@       q@ VPPPP0 ` 8      0f    `@  q@@@0000 `XA@@@!(`x +h(`(`*`8   ?$++%tEXtdate:create2021-05-29T17:44:55+00:00o%tEXtdate:modify2021-05-29T17:44:55+00:008IENDB`PK!`/J-ppt/viewProps.xmlRN0#4i DM+ M%׳)ړYl5%rHJx 0J@ɷ|6b30XBpE\A#p`-oD27 7u6qmxRKxr݀ IC-ǕvWsQsd"Ҕ™X+wO K+hD$pWribZc(yγSº|c+;a G9Uop clȢ5Y:vDزrGtDq(JPm7Z7 }`516. 'NRr=v|^+]NHzLn7>PK! 0ppt/presProps.xml͊0{`tWcىME(P-'d$ewKWuKFBiwOӘ=h + 2m;{l܀,De{5:Mp{n;׳AۨbJTȆZ5\#TXYt68?zӈ(%ߒtZ<%" '3j[KM1*;{Ӏr]e8,q0 J$_cL0 {::jٛ(TT8M.!:7]D{~vfi{=-FKprZA ۖo Ũub{}MSY a¤LrC PK!ppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ?ߓYsP+%NTW`Z*L X;_v[faoY6q:M%dАcϒ6YAb_u]&@+}!G# 8$4&OObdX0ꅤB#9 X_PK!g0/docProps/app.xml (TQo0~$6d\U !ڇn|!V۲=VwqHV4[^˝K%X'AGrͅ]G3ř f\|C?~  X/E(,.7$qy s,+Vch. B?*P>NI/~e:QrhP *#q:}=<jGtid&*CLwז;)r8N>Z\(]mOI\tve8\nI.ɆY̔^Dk oC5NULdKaBd3 sL:@.AV0ay^ȉ_88zbjgYZ,..9$},:he82;}Q&A+}CM;/uh\.Xy?oߞ2L]*yS"\?HA v&Ӌz%OSx$ےYݔv B?=P]sd ^L7PK-!ר[Content_Types].xmlPK-!ht _rels/.relsPK-!c\#7 ppt/slides/_rels/slide1.xml.relsPK-!W/ppt/slides/slide1.xmlPK-!.5 = ppt/_rels/presentation.xml.relsPK-![9  ppt/presentation.xmlPK-!ђ7,Qppt/slideLayouts/_rels/slideLayout1.xml.relsPK-!&!Wppt/slideLayouts/slideLayout1.xmlPK-!<!ppt/slideMasters/slideMaster1.xmlPK-!bE,uppt/slideMasters/_rels/slideMaster1.xml.relsPK- !w< docProps/thumbnail.jpegPK-!:~"T'ppt/theme/theme1.xmlPK- !ocB -ppt/media/image1.pngPK-!`/J-7ppt/viewProps.xmlPK-! 0?9ppt/presProps.xmlPK-!:ppt/tableStyles.xmlPK-!E5w;docProps/core.xmlPK-!g0/>docProps/app.xmlPKApandoc-3.1.3/test/pptx/reference-depth.pptx0000644000000000000000000012533707346545000017115 0ustar0000000000000000PK!6X[Content_Types].xmlUT ux ͗N0HC+j\EM9X*Q$ؖ홤 (m*|d{>=2uBM"P΄%qp:!\e\j #ݝ`nEV.!c.C] (\jsC;/|tT+ʷ|AzK $FHt+R%D䅾gr^cAOn)N*r1*7a K=D}n1㩱PWƛjPp(Rt:QWra\'q;:`MVӒf;Moq8Ҹ`*u++&=,?Ҧ1#|/ݾ>廙ąOd:0@:2t iL"TXYXY՜Xs^S-|E,-F`\eD_o3&7-PK UR_rels/UT }`6~`ux PK!ht _rels/.relsUT ux J1!}7*"loDc2HҾaa-?$Yon ^AX+xn 278O a\^hD.Cy1BYz |t!9rL߰'~20(H[s=D[:b4(uHL'ebK9U!ZW{h^MhwuV};G缦oYDS7t}N!3yCaFr3PK UR docProps/UT }`6~`ux PK!x%,docProps/app.xmlUT ux TMo1Wxh"(!T%9D98Y֊׶lxviP\x3x?fL_*`j .5j7Msg3L~@V^CABiRzo&PVRh[1Bú(Ds@yihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}@  0lxxXDx`d0 V3FƋˣ(N|J6U2mꆊGh I5k3V69\6vT&W(-SVVԨC=O~ޠQz~㜩b{Ń];wGS0_XWC\!?r\aQ!.lP9UU~ ]:ݷS6HV#RsfҞޒw`_d7 /ٌyrV+3I T35r>_YDi.eEDvNޑ٭۠lǃ=EGߝ~z\_q_דt4&g:ʹ/=D'=MH|֮8]i2,Yhs;(3Tv3ȥ,S'!#Uʕ'XIwJ%D̙s& ;~Rc8oD*x܎țk91?JV!hK޸~9Ů}M+)]|-yUXuh$\uI/?ӵ9u+;F rimOQLy #q P/_w`S(tϲT]a#EJkt:>_)q8g*>y[cւ IƤ>u&!) VezRqh'g /ڵ~%|ǎ~#^_3 Yv=?5P¶7p08#*~ƵM鱅GQYnlrZds$qɄi뷥Y_ e'tUܫb}_%w˷fꤓ ,[td|+^<=ʒ`|@(#ܻ|@tA(y9L(a]Bضt{~%D=#$~˧y0PN[/3/p?L;{䛲,4|2qWSPK!O5VdocProps/core.xmlUT ux ]k0%mʆ6  Qڤ$ڪ̛]&7ɦ `*G$Qk!:G,:+)xrm`at I7):Gc7P1yBpMŜ_5fkI 1 z0RAY DXWtYI*ڇrQ -R]q@4^"#*& zKQnc]c)LTd\Wb*e&jezm5ߙ-K.ҕfe]JkXY?WNִ]rQ']brl=nvLdדQ]rmikHq/ CVn Ӑ콎p>IF#Nz1(tTv78ٺ.#l>{/>PK URppt/slideLayouts/UT }`6~`ux PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUT ux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YO+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK URppt/slideLayouts/_rels/UT }`6~`ux PK!ђ7,ppt/slideLayouts/_rels/slideLayout5.xml.relsUT ux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQdCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* //>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUT ux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUT ux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!(D "ppt/slideLayouts/slideLayout16.xmlUT ux Vr0}gЈg#uCi$u .l [BRB ×\J:@⋼{v]K@s UG/CXɜW=|7mUNX//?P]#t)gFe kUToSKjUߓ\/] aWx)X*Y*[h&Mi!hJ30{7%TP-c' J/l,rT& yFfFM4cjn~7ՈmʌN{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!f\$ "ppt/slideLayouts/slideLayout17.xmlUT ux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'ԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUT ux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!h "ppt/slideLayouts/slideLayout13.xmlUT ux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!im "ppt/slideLayouts/slideLayout12.xmlUT ux Zَ6}/ gG6'$ LK-ZJ;E|H!KzIJ28C=6nuG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!=[!ppt/slideLayouts/slideLayout4.xmlUT ux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!Ex"ppt/slideLayouts/slideLayout10.xmlUT ux n6ڥuĮwIh[(Ei$铌$KNDqX4uI?ls 6`c -@XR[Qd!1K1-[;"<4»b-b0qJ BHŻ$L[.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!3Y "ppt/slideLayouts/slideLayout11.xmlUT ux ێ6 ZioXuo6xDTvZI:$K:87Mq3ӯmy] e V%uW3 $$RZ{&7?EzGF"`TΌLcdUݰ ޭk^R _3N9eqI9z',M*B8+,oDOkΡ5 hmMVE*ZS. @ DSjoV#vGTq:{w/e5|dnKnf@9(i'a6NM_Oƽ4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D% 7ѵR8'{]f.;h7.%1ܭóȰ=USs8*9) ؝͝ǫ\yx4Q0:>e,>(O 'i Z*д(lRPexR4 ouᑾR{i:L圤LHj}pIy+IƂr-18d\׊Mkh"G'^*V[E*U^ζ>hٜ%5p^_!?d|)AQUk!JbQI܎1&j{O/X7'$/i +Ժu+amR-(=+X[5uH*CTQp> Q‘ao,+^H | ߷XNux(Gp+_l~d ¡'|2x"eI0K@NW0JYjLb3HZ zE26mYf).)lɝ%Jd9 DʉN$,-9-0ªRVqtL,Ymf`yXT6Lб<j ^=0ca"}vtPUt=3ȤTA6DGN9#IR{B_ ;Rm^K>-W\/+vJ;xWXl 5 X@Y sȇnYoyWh77cZ)Q*eSIKsʼh SՐeMlmlQJU "K àx@]T mK!nQBw / V"H#e ݫd yɪLI|WGM25l=ڌ OT!"(RhF2"Ft_ȊbIb/&3EȜ9h>fL̴,e1Li& )`}9ЦT~=ksnjls`ihj9{`i w=8,O~h_ѕMQ4܋p_] EʍWsw{ZB^R4f?X8iӝK&•>0F'iy#$ hiʚ_SM 4%ԔPS"MWb[YInz@b\ JsaQ0؍,kzx ox7:y#Ӿ=l\dj.2M.2ׇ8/MC`>侍0) j*dy:|uME.dPVcy.wlAٗp6R#];A@~Ha2U7+](UIӷ$7h+M m| UC\qG8;;0|eYn6ʲ|YWe A;ۀ[n?[sg JOb5kjQ<Є QwفiɄas^`к¬ hPQB$/ *v $95kW@Qmyjy;=^\{Oju0N0'=dN2^ BrO#19}f3јA}kLhlgp1cff3L]bh7Q[usyܹQ;QǝG87'>7q)rGMok71 I|o6}~MgY6Bo=:Q {b/{=cSe7Qfo=POQ8fi6*gPK URppt/slideMasters/_rels/UT }`6~`ux PK!? ,ppt/slideMasters/_rels/slideMaster1.xml.relsUT ux Ŗj {4mڎ&®F$Dڱd@wؠpnO/?>5?lX2ꭁMپ۽BB<;=$_.Q_u0(&4 *ĩkŨwՂ42P8l4'[0J {]Ë)XZ>۴M.Pj ,̨+QbPCkJ5zwP6RmF ZQ6R4TVjmEBI-%eKQ-_3juGƱT TɶݑJ?^~PK UR ppt/slides/UT }`6~`ux PK!W/ ppt/slides/slide1.xmlUT ux Ŕ_o0';X~&@D UC4[Ѡ8Dsl64hwى [;w꺩:pc+%3\1⒩ ? FQYP$[|=JVMiKtJe%PK8*SS[#OdIM+;V*tmuP-+mc4hp ao%̀Dkù_gWziҠ~a$i m;H]\ҴٚK`CMG%^Xd'-+ްe$& gI=U[kAYWNpPzWERo^,Zf/uQC(Lc'99oc\l@%Mu+w!mQ[:o1tx_?],(AC+lt>~n_'\08c 1\ۡҌ0JhA1Q!K-_I}4QgӐ{ׂm^0xKѮ O;-G*|ZY#@N5PK UR ppt/theme/UT }`6~`ux PK!:~"Tppt/theme/theme1.xmlUT ux YOo6wtw?:,d CD[)Q $FK;`aۥ0`~lCXS {tySH"yWn$(w'VGy0aWA`0.)ŮaXtv0c#B3E37Æm;FPk9Ȅ>,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK UR ppt/_rels/UT }`6~`ux PK!.5ppt/_rels/presentation.xml.relsUT ux AN0EH=qRBN7 $&$myL!j$UuyWN-zRȒV4ފǫ;`H//V/eE*G,І9NRbxR[ol/t0Q&TVɶuJ|g&hGz66c +iOC, *_7fxэIXAk|  vܛøa?>PK! 0ppt/presProps.xmlUT ux n Is[q*4S]8A3vvsӴK7UB7dw&Do\,&5vjiTOD3&אͅXRj>OfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPK!ppt/tableStyles.xmlUT ux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!6X[Content_Types].xmlUTux PK URA_rels/UT}`ux PK!ht N_rels/.relsUTux PK UR AdocProps/UT}`ux PK!x%,docProps/app.xmlUTux PK!w< AdocProps/thumbnail.jpegUTux PK!O5VgdocProps/core.xmlUTux PK URAppt/UT}`ux PK!'Q}*Fppt/viewProps.xmlUTux PK URAppt/slideLayouts/UT}`ux PK!ҦB!Yppt/slideLayouts/slideLayout9.xmlUTux PK!K%!Zppt/slideLayouts/slideLayout8.xmlUTux PK URANppt/slideLayouts/_rels/UT}`ux PK!ђ7,ppt/slideLayouts/_rels/slideLayout5.xml.relsUTux PK!ђ7,ppt/slideLayouts/_rels/slideLayout4.xml.relsUTux PK!ђ7-ppt/slideLayouts/_rels/slideLayout12.xml.relsUTux PK!ђ7-ppt/slideLayouts/_rels/slideLayout13.xml.relsUTux PK!ђ7-!ppt/slideLayouts/_rels/slideLayout15.xml.relsUTux PK!ђ7-."ppt/slideLayouts/_rels/slideLayout14.xml.relsUTux PK!ђ7,K#ppt/slideLayouts/_rels/slideLayout2.xml.relsUTux PK!ђ7,g$ppt/slideLayouts/_rels/slideLayout3.xml.relsUTux PK!ђ7,%ppt/slideLayouts/_rels/slideLayout8.xml.relsUTux PK!ђ7,&ppt/slideLayouts/_rels/slideLayout9.xml.relsUTux PK!ђ7-'ppt/slideLayouts/_rels/slideLayout11.xml.relsUTux PK!ђ7-(ppt/slideLayouts/_rels/slideLayout10.xml.relsUTux PK!ђ7,)ppt/slideLayouts/_rels/slideLayout6.xml.relsUTux PK!ђ7,+ppt/slideLayouts/_rels/slideLayout7.xml.relsUTux PK!ђ7,-,ppt/slideLayouts/_rels/slideLayout1.xml.relsUTux PK!ђ7-I-ppt/slideLayouts/_rels/slideLayout16.xml.relsUTux PK!ђ7-f.ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux PK!!/ppt/slideLayouts/slideLayout3.xmlUTux PK!p O;"4ppt/slideLayouts/slideLayout15.xmlUTux PK!;FdvU&";ppt/slideLayouts/slideLayout14.xmlUTux PK!)J.  !5Appt/slideLayouts/slideLayout2.xmlUTux PK!(D "Dppt/slideLayouts/slideLayout16.xmlUTux PK!f\$ "Hppt/slideLayouts/slideLayout17.xmlUTux PK!=t!Kppt/slideLayouts/slideLayout1.xmlUTux PK!s@y#!0Qppt/slideLayouts/slideLayout5.xmlUTux PK!h "Vppt/slideLayouts/slideLayout13.xmlUTux PK!im "Zppt/slideLayouts/slideLayout12.xmlUTux PK!=[!`ppt/slideLayouts/slideLayout4.xmlUTux PK!z&!dppt/slideLayouts/slideLayout6.xmlUTux PK!Ex"gppt/slideLayouts/slideLayout10.xmlUTux PK!3Y "lppt/slideLayouts/slideLayout11.xmlUTux PK! L|!pppt/slideLayouts/slideLayout7.xmlUTux PK!w$ sppt/presentation.xmlUTux PK URAvppt/slideMasters/UT}`ux PK!Mػ5?!Zvppt/slideMasters/slideMaster1.xmlUTux PK URAp~ppt/slideMasters/_rels/UT}`ux PK!? ,~ppt/slideMasters/_rels/slideMaster1.xml.relsUTux PK UR Afppt/slides/UT}`ux PK!W/ ppt/slides/slide1.xmlUTux PK URAppt/slides/_rels/UT}`ux PK!c\#7 Rppt/slides/_rels/slide1.xml.relsUTux PK UR Aeppt/theme/UT}`ux PK!:~"Tppt/theme/theme1.xmlUTux PK UR Appt/_rels/UT}`ux PK!.5ppt/_rels/presentation.xml.relsUTux PK! 0Vppt/presProps.xmlUTux PK!$ppt/tableStyles.xmlUTux PK UR Appt/media/UT}`ux PKURocB Zppt/media/image1.pngUT$~`ux PK>>&pandoc-3.1.3/test/pptx/reference-moved-layouts.pptx0000644000000000000000000012631507346545000020616 0ustar0000000000000000PK!Mr[Content_Types].xml (̗N0HC+j\r`9Id۲Ҿ=Tei/l73{g\FNhI*ՙPÄ<=^$rK !3p䬿{pK{sJKGsk W+o;4ʃ-_x~|,}t9DU`+!"/ ڨ1YR7+,H HrtZZu1*7a 7 {n-1㩱PWƫP` Rt:Qϛ0ιPE,q'oxXldsbiñ[m64^G0Ouz߄fmF,$l9ok>c_jXyi?@d:  qLNdbB,VB,fB,v;>eoEC kMW{PK!ht _rels/.rels (J1!}7*"loDc2HҾaa-?$Yon ^AX+xn 278O a\^hD.Cy1BYz |t!9rL߰'~20(H[s=D[:b4(uHL'ebK9U!ZW{h^MhwuV};G缦oYDS7t}N!3yCaFr3PK!<%7 ppt/slides/_rels/slide1.xml.relsϽj0wW-XR L%}C:"$tr߾m~;?/Š  &Z& ?ׯw\0X1SMK=%U a.%}(fYDNƘ,̓Jhn8:5͛{)!qǎ }F.t-'*KF;uxPK!W/ppt/slides/slide1.xmlĔ_o '; $nU4[%u4Nä3u[ pc+%3 GqTQC#,Pg-zRVMiKtJe%*%합9'Z 2f߼_㷊k.]pATnJ>~K4m0mD[ù_6K6*_IZC[0,leCi7 COKNZV>bʻWISuŽ8 g^fT;gK]"w9E<,~6Wف J 6$xY_hA5r:#̓ysܹ=!I{v/A7սuq<_y>ȓj0]|ܬfd:]d2|/QVݐ:N.0( ОQA, jew;%3M3q * K1g~?PK!.5 ppt/_rels/presentation.xml.rels (AN0EH=qRBN7 $&$myL!j$UuyWN-zRȒV4ފǫ;`H//V/eE*G,І9NRbxR[ol/t0Q&TVɶuJ|g&hGz66c +iOC, *_7fxэIXAk|  vܛøa?>PK![9 ppt/presentation.xmln ',n'_q8UӤLM,miテMb7դ> ?Ï#|X\*PJS&ȡ<EɟR r& Lp#Uzˢג*507\IZsSVD]r턬| I^}<23nWNMwN$emj_.އD-nEejS溁F&h {WEgVb)8IPX0 ?߷;'Q<훓|<c$JL3".4UVv2ó;0@z.Čm6Ҷ7a$㶍f(a/ נ\PaOT 9y o) oVJ|%!|# =,yix}O81~4yk|,cN2XM:vUGk~.FI\( 0qopxgߣ9A(OrA|ž8X@P'm# C{@_`dX@iw >Sf@q4/3rXbshZZN#d+?Idn"7;˂,«-ѶVJHڵ[ km'y$ٲk`ˍEQw~sC *ds q,D'i>=>< ;"yB鹵zwOo3ɒks4F.ȹ5S8mhF^\?poN3fIs/IU "(#J/gi!k Z!0{[%*X>|w?,BOcBXr> "Rsx"A_E1*l] &hՃj ;ۧ-'"3W <4i+k9T(.'l<۳6߳ڮ ƪRqksR(kj}eq\c/[(m6bV@Uʇ0(Fvm`'ATb 5.'+}@ 9cRԊQ)!'1gR4G4I!RQ2}4@:<'T9Y[cqHLg%Z92 G3>uCHa\,paIYz= Ja RT}j*T. Vn 6hFn: k*p뺑a Vmv}5c` Vm` f{ ׀ (3X帑ڠ,!zP=L UJnS _>ϕ6tA?ṰV 7p5lU /@Ok^])RF4y]P|aU?8sfd/˵bV }V?D@NE>TEѾ ?://:쳅oJ~''9Fgsrw9W|RRot}ݠJՇʴIe4U6C%z~uRFPU/N9 px9^:`XkZ﷯?p)?? 2qC<Ї"ͧ7K FſPK!4/_̷!ppt/slideLayouts/slideLayout2.xmlUKn0u#v`GU7IlP$KҮݢ@''鐒b'u,I g{34/%Ct!ЋNBQ Rл`&8z;r;60ࡷ2F@+Zb}"$p>2 qvܫ[bQ4T 2l~*n[Ф`\˒N[SF<\7q [녜=VQjw|Eɹ)p)T PzA}POqUvJh;e;XW|oW#I$7t*gVMZ^A#._{8UCSeAv6=ΈL1>qe(a;הwJ3dE@]cmB.? >XAšPNfXᯯ)9PFxڨbCьᜮ#PK܆=w QUk+/2X?^7c?wN$N2& qod^Y\+:]X^Hk{8}c {&iZ a9m4gaT՝ok CӠ&6F9+E7BI [GErף)qϺ~N:0iaii6:S-sսixzzzts+SXN7N]:|b1}PK!MO7!ppt/slideLayouts/slideLayout3.xmlUN0w$V%d7 $N؞v-$^k{dNBcMlNMњiSI1A,*,H02r)oNn"!̐Z5$KVSs 𮔺zA MB8 m~K,*gW5I7J.zK64>V[NFM1 @`zg4Z3vbQi{iT.}ѺX yt)uVmFں'q6(oΚ/^͗xyVԡjNIehiΖL `׺Q23HHh>y4ݪ-)/1vov}<>.sV?QuÍ y?FK@_PK!Nڃ!ppt/slideLayouts/slideLayout4.xmlr6;w ybg1OS9<)ɓEʖmZoD\|Bzasf԰YaERY85>NGAjI`ƖƇ_y_McI3zd逵N`&=tiݹ$gyծ.KMR7,Y-u%]bF"ra*Mc]qW;,m!W'rL0N=HJԻk9[ΰ^P( XjX1+ǡDo1]{>g$GƒE;¶UC+W_;%ȶ}3T\`ȊT Q+uiQ#\|4fce UY++`Bf.Ț䐛&*`O Ů2m R*^m(zdF6@4eCGg%IPʲ_t":L[o  v0^yvCLa.~9Qt(t@lj E0bq(u@ e ) P_޸m=d{kA*T ңgx_00?Ǝ; >ȋ<ѹ$t'=*WeiX v(}J-D92mt.j,A+ʹ,A8x{8s)uZQfhz*6aRFVݽ?#B5O`A8h9l'qIX$u_TYsʦ ux5yY/FS/qY3|^s:nVZԺ=TS/hd4L増Kvؕ腾*V֮/)2&[UDr4دe:1h `hMu R :$&װy6S >3ej?HqTR:ev۳/M5 z/!;'ٌ\5pol-͖H:=1;a DWMI9uƽF=ӒЬyO=~(#?Ln& Gt8 Jm9kk='{%8PCe]+6`fJ4^&kxK3esJjaR_K- Յf഍ݥ<`s!5`M$EaVf zp  iyH=>;(i (kH*p^b79*cS.3.#T\E2rb%34ET2v3j$ePʿX+ޅZ-3.Y㝫V[hvVd͚z`b¤[3ޫ%8;=eэR;oST8S5 K&>JTKmڵ'u8jsДZ Mnqt5LS~FB$(j- U1yA,Mw^kag\$2۩ZE ^ڿgj.5ӦO9S@Sv~_1 ˥}ؤ~;oWV#ɷ= ;Vq< i^ h;670 /0|b FTIPh3s%]6BS:!/ūg.g˜*N|$cs;,3uVD9gNEG\#`NxScuaoe5 K$9x9ΘSi0]HBU UCЄ$ `J@\ xLpLSt$kDbzlIIz1(K Nx;gUwS@ˮ5[gR7qz6N{ʁĩɪy:aNAGmUd~eʧMx Dr4دU}\f4I_k2סr ]{ s95cS@.j?HαU4R:e;vkjoM_vMveWkch'57-?-^3PjUgj/rA{g }%P;{#ha^܌Cϳq臣;^t{7gMvpo$k hhj(J7y GB鹾kab MԌKhقtЁeR'_J] !҄BipFARp's!5`MdtTЃ.0Z ucRw4x:,v`! Jte IK$GLpگեaX*<~Ir^dWB{0JCFADXcsNJB-Xh f:xMAtwVTΚ\RXמЖa nM{[*P‚ǹ(Onyh j% > CmmOڱKTI|0ϡRj0*lvSVx4=j5Z U'PTPYgpDRs_ Ad~X:Nmo ׏e- Ac#в;:(c#в{ah4(6-;ٱ\`#вG{8K>s<%2͝KxE#k3x2.`"NLcWLZftΆn(9|'C/f,EY8 z?Mb$p2=?Kџw \egr%y\$}?.1LMԥf4XɡwcCSv~[1 +t w$[&޾܉2U!zi:eOd>$NUO`^Ep2B{~ϛzl2MQb`݃~g-^=0s$U7}W$mՖ҆|7ݯJPK!46c)!ppt/slideLayouts/slideLayout8.xmlWR0wqƯ8q   lȒ*)!i3V9|I%&$vl,Ys=^;%]q-HJ\v- $$Ĕ@:iuΎN%PDt`ʥdiJ(v(CDM(/T8V%v|׍ĪmɤHQBi@8P*E^0ѠmGBݫ.Sk:nԈg_SУD*3%ؘ#{d;f쌃"N˩'eLY~tag>n`޵` tKVr4͇֦yj13{߄3.$FWc^ @G_wY,ohPjtdȅj `!Gryaa_ uV#b*~ 80U+M4D350\ޣY Tg(8STTRŏ! ('ZHUoU)ի^H=t('ܸy<bxԉ@ -``@`xn@`F@`|t@1a љAʹ*KjISTSAo)Z0IW'u'v 2ǫէuTAɋ1T);:SY%'4cLŵUPR -:fmSq[{D "Zu~SV5 =7vrd'Xd͎heO{,+NzN: 6w`!}:7#xa2\$y60;@48øHHń*,!|)bd ŅihAS"ԻYS"W>7cN*vL۲|3%IfT),()d 58Vp*FnhbTMLHs&$\r&rFO^L אՄ$h3E%f+=0!Xx O*j4a%h7-Fz)XU*6!"W7yE,Wy[fx $7BI@UrK=)sP:~=`ÞoUֆx޾%)am`8**Vƍ|u\-bzrȒ 9q"-rPj,N@& Bm!vI?a$J倫pW<-$2dB? \[X"8Ng< (%F$U,T!ի^H=w( @$6yxΎǮ{2$<#6Ү@l,3i ,kڠ2h,{n7rzofo8rt] G5H \c[In1Wm|60&pO؃.^p޶-5AE&'rJ"nx(C%=cbf/qc:ۡ'A*i^CeRtزK+oJ?SVy;le88686nyu]g"k²BLx@xvOLa$+dQZJ''y_ҔuY7XS1i`-3 uȉUVh/ZF=PϠT!ַ5פ@,ƣQS{D^etϝY.Z;(`iGVGjq'ԅ !P'z&xa^/Om8HEŒq-ZgcCò Cw?&kL49䬠|YS; |_ A?*6eYdܮOGRF}2HVض0u|"uhnƦ,daF޾[Ttg﷯-^5t%a,mT+ձRS&\PK!ED "ppt/slideLayouts/slideLayout12.xmlYr6waϊH[37Jg$NlәO>Ή[3f٫-~A)jeTUM`RV޺(w5+J7-)fLU34X 㒎w\(vC5ʺqƶY!5Fh3.'$@ځp="pߋ wh ' s]N2m gB\]IˊR  z)؉gK]Ay> <i+ءx w^!HA;]@Di`F VH@Di` v 4 vw 4q0:Q/ea>I^gTwHTT4(Pې4P<3yʁ6Uӎ鳙vL'k.)'pB-~G0q/Þ ^~)FXPrqMJ^jk*Z9;nuV&ݿe9/Kt{9txs&;͹Z{pзMf,TzBTkZH_`pyNGpgtt~j2kԼv ޏ-Yy芳6C(4~p vFARZu-SƦUzZeppl)uӚ$_pB?49-&.' 5Sݕ-%- LLUق]^L6`8 .%! vNU"+pk]L3)bW'$_a H,K 2]Ocp25sߔPE4=XMsY͸BKlz)bp^dz]˹z⸑ʤȆN-d\N _KpPlZQIKkTo4o ~7F'ox]3S2/3}t5e42[nh7j#]QmoFvuxxW&کLT71I)%^-,o^Cb\W$/PK!SL "ppt/slideLayouts/slideLayout13.xmlQ8SwP+=yLœh@SAػUqr`:ɋR'M߼pYm."I07Tecc+oޔ*KnخX+ QX)U,W;U\r;x}o_y՗@"\3w\wk=U¿&dPK!l%"ppt/slideLayouts/slideLayout14.xmlZn6?`@h]+hR$q= KDBHڋ[ km'y$;eZ(Ε9CДrXy\$i>:6> z$yBXccFޖG%dVL$R8"X4E<oٰꖏ̄vL۲|3#inypƴ_ē ZT(ؽhp[I',?"Y ]!)G`:@ E˕ PhN~]CIRtJPQ4~:@<>7t\Dbw*C 9bq;!d8 [Kd;ryot!BqȽ't"a*՚xʰCp.)]S͢' e BjBbY2 !z821l$7@IvY$՜Jnvևf\B hRk-lR;9ӄ}څDL">u2ya/V"jYF؅DjǨFu 0p^+XX jXo 6Ca_XU Xuj` 6pjp1ۇlƪa%X_s`5V5^6(WZZ0?T/MPJڧ0[ Tn јaS'رFy~Pl/eWF\d]xRe T ]rڂһah[뀿V: kZpTn9 J%AOuҎoxNzJOb>pa ~d20MZtƿn|g̋aM8I@M,z߃XռqUڟCshw{vd9ޓ w-~;>BV ٯ Ϣ-ZC+thVi8O$5j"3T夭 R[~8pQ {LΜZYdyAda4J)SeA:pz=i=+oCۦ.W_ ۄfP:xK^7gܲ4jݯyF^DAotR>v~߶aTz=)=oԊy myk_/upxՕKR^O09Li>]X1W PK!rt;"ppt/slideLayouts/slideLayout15.xml[r6}L>+]'vF8'J lKAHL~|IˋDK%ۄ/"],x8z&dDgf<5 ty7x)$MCʳkО]VFZs-2? b -d9K" p+P;CSaBTcgEID0N%_Dq^h1h``IDaƆv f<$)M"q Wˌ;*"^_  U3MX龬f!us t~H6iD/ U*۝yKΈL6ȯCA &_ίiQNZ]ڕf+<˃-1LCw U l t׺;:?7ϳVucBx!g3!}Y9qȌ0-$g PԸGGTзwH ͬC)O\s(!cv+ FR>9de`l9:Fd4ӷuݩb\E ie@&sMUx%E,eby # W14^PE^CCP*~mu4U!ɳ&-!K.ȚrX7_U* :RK{x,AΗQbbvQ?g3؞*ύaY#[_]7<8QKR-$Mf膸ym:`^뀳ZxY]w R4:l|tHttz9z9z?]Ǖ92͸d4]cq"\ޒ9vߘqƎ5l~3]}O.]׵xLcx\"0!~RJ5D]^AN`&pڐzJXCw _KWʖ&l\|eaoG;=TI7r;zmZPۑ@fO'SI$hM-^za. xT97[qql/8c-|b )LދMd3d4!jnHNH9pע05wnEn~'wFudCt{5Oڼv( ǡQK,gyfvJhPK!|h "ppt/slideLayouts/slideLayout17.xmlVr8ߙ{l Sޛ-bMeI t8}~qdX|ahMe!KQQ~=>, ?6W Nޖhŋ?^ɑf+{1rIK! P 6𪮃JaAi`ʽzuz\Ғ\5D 5CIE4ՇVB YPȄW\ZL]UPZb\<Ђl r=[ɹRnBh;/M+_Npfۂ:h3ĭ}v H,e}y":t6Ywݤ(?i$fuhhw !(8Z[ՆΞIAm4P837o5H(zٱ-TT[#e4ɷL2^}8R Faƚ'd"5-ֆ(䲆J8. + UT[JG#obﮉV+KR V) o`k/qu0{骴M9=eKՙ\n; t.sR 1& Dg{,JltyjJ 9('cK_BlGv=>Ŀ8Kl_gEXl04|It8̾uwcڐ^\٫%Z/ 8?5IgM!-渳XsF|^a;tKfhEлUH!}B'Er'>iE6L~8M$, #?ô$&7X9;ߟ?5qne-kyn|b1PK!ђ7-ppt/slideLayouts/_rels/slideLayout14.xml.relsϽ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ5?lX2ꭁMپ۽BB<;=$_.Q_u0(&4 *ĩkŨwՂ42P8l4'[0J {]Ë)XZ>۴M.Pj ,̨+QbPCkJ5zwP6RmF ZQ6R4TVjmEBI-%eKQ-_3juGƱT TɶݑJ?^~PK!D\>!ppt/slideMasters/slideMaster1.xml[nF~xpmɒ,I|nn:E?Of,F\Y-')Iز?ITX Q䏤w-uevϣ"j mR,(r>ye{+G?Jqi*U*JU%YRSp+X躽^],|EdrsU \0WiVVFZi*z=^ʓwlt-r ae6\P?g*8a/y<],ݓwݚ ~XI ,=G.$sQѐpU^Iq~'YOaWo/ŨlwF- [fFw\\bݑ)/)+њ?EqWr\eJpR!>UyQD774EGѳ j! ֊J!hw\>NwpN}6*eDjׯYHZrΊ`%9O ɶC`mE7?p1O7(q^r#3#%I@uTEi%)+5SӾ),A!0Ӭ6:9Ytcq,_@ VIy|$qKgR5"$SLf,F,ulX#!8Q:A *;pqToi.Wh1 j#^tz63=k+y>AP3hh>1 Fץ}ڎA%ozIAut}vsv σ 6Ȫl|):SFv:`s|)7)fZX*Ir&DIXA'{Jz:}so Lc6׼\\0 g"q o`'|-+]x\"pz;"4wwɤ=ӛdz΢BG4)_>/S ԧo9b$VZnPFBz"E4(=0PV<}Cg(J`(S /`Fu,vzS0lP38x!Dgfoz ^}owAWlxaWgr1out\sw : ;G<4-q]G|4q^6yoa`&V]ᩒ+ttN'(U4Cͽ+v= g],Ig|#׷4d,_.HR'Y}Kt)]pƓmUYX=^~JQ@&#=n_^{Yvey`/,FY6{2L@;#)6փz,^R L^u6ˡCw @CUk@ǴU:2cu۞;ރTN"ش!JI((D_>6PًcׂuO>< 5f'/ 2d2o2 2{Z<3d3o3,yf5 `17^gzpbL- P4ff|{-g/3U!3w C+zV ߞ}E..G?k.CMu[t9'rTQ?̸Cn{Zf]Yx/}MgY1Bk=:nHڷFe5Qfk=on΁?hfl.3LyUVN~PK!ђ7,ppt/slideLayouts/_rels/slideLayout1.xml.relsϽ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQF(iN``8Photoshop 3.08BIM8BIM%ُ B~" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzC  C  ?yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yys>ee^}}ꏙG@zee^}}ꏙG@zee^}}ꏙG@zee^}}ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zgg^==ꏙG@zgg^==ꏙG@zgg^==ꏙG@zgg^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@ aee_ aee_ aee_ aee_ aee_ aee_ aee_ aee_ aee_ aee_ aee_ aee_ aee_ aee_ aee_ aeePK!:~"Tppt/theme/theme1.xmlYAo6tw-Vlu Y4iiP@IvNeC.KwaN52 EI6i(@"=~|=J}" oۂYL&('F϶`̾'.O` -!]зfb[$7%4\t9\Mq8;̶2 CޫFXe1DžNŅ-Xup'^p€qqo;g7n7BoUFWUӖRy#]7q~g؍:K}X,th0 ltw#ixE{QT6;7j|$lzQg /Aesg\7`na*2%x TPKcBG-("S XHbAF;-gxN[\[N/&(bP6 )y\h/rW>f*|޼3ؿ}q_wf8WW/__x@X O3Ϸ 0000f0S VPPPPpVs 0|     YYA@       q@ VPPPP0 0k 0|     q@@@GXPPP0 `  8     0 07`(`(`CP   VPPp ހ `@     )`x +h(`(`(`8 >CP0 #,(`(`(`(`*`8g +h(`(`(`(`(`(`8+hXA@@@@@@@@@@@ ` +h(`(`(`(`(`(`8+hXA@@@@@@@@@47`(`(`(`(`s > 8  #,(`(`(`CP    VUpN@000 `XA@@@@@!(`x +h(`(`8 o0 `    Y 0@@@4000 a@@@@@@@@@@@!(`0000f040000004      `@` )`      040000 `XA@!(`x +h8 oPP0 `  Y 0@@@@@@@407`(`CP  VPPUpN@0 `XA@@@@@@@@@!(`x +h(`(`(`(`8+hXA@@@@@@@@@@@`V9 >CP0 #,(`(`(`(`(`p VPPPPP?`XA@      0f      `@!(`    0 07`(`(`(`(`CP   VPPp ހ   `@   )`x +h(`(`(`8 oP0 `    8  `@GXPPPPUpN@0 `XA@@@@@@@@@!XA@       q@ VPPPPP?`XA@       q@ VPPPP0 ` 8      0f    `@  q@@@0000 `XA@@@!(`x +h(`(`*`8   ?$++%tEXtdate:create2021-05-29T17:44:55+00:00o%tEXtdate:modify2021-05-29T17:44:55+00:008IENDB`PK! 0ppt/presProps.xml͊0{`tWcىME(P-'d$ewKWuKFBiwOӘ=h + 2m;{l܀,De{5:Mp{n;׳AۨbJTȆZ5\#TXYt68?zӈ(%ߒtZ<%" '3j[KM1*;{Ӏr]e8,q0 J$_cL0 {::jٛ(TT8M.!:7]D{~vfi{=-FKprZA ۖo Ũub{}MSY a¤LrC PK!`/J-ppt/viewProps.xmlRN0#4i DM+ M%׳)ړYl5%rHJx 0J@ɷ|6b30XBpE\A#p`-oD27 7u6qmxRKxr݀ IC-ǕvWsQsd"Ҕ™X+wO K+hD$pWribZc(yγSº|c+;a G9Uop clȢ5Y:vDزrGtDq(JPm7Z7 }`516. 'NRr=v|^+]NHzLn7>PK!ppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ4 zc֐X=i`+eqCXEz(|u_ bqDadƄ> h^͟ ccF)^v{'$fPK!)!1/docProps/app.xml (T]o0}`uېqUƆDh> ؖ_?!YXѤny{''ܼT:,\ k.~9gR+%Gp }l6`rL1vy sסBжb>vuQ:^x /~e:Qrh%TF24[t44=<jG;ɴg2!^[hJpȭ1RZV;]xfP^m"i ^ppP_( lo)cleW: W!@VsPjHdKabd3 -tYgcÄ ̃ "'~$9]%fS>ihM4[;s },t head ڃ7hGP&A1sW|+7  =4v7}oCsmr)F!}u$>וaH?R9YߝG["ԳۙL/!fppt/slideMasters/slideMaster1.xmlPK-!ђ7,9nppt/slideLayouts/_rels/slideLayout1.xml.relsPK-!ђ7,?oppt/slideLayouts/_rels/slideLayout2.xml.relsPK-!ђ7,Epppt/slideLayouts/_rels/slideLayout3.xml.relsPK-!ђ7,Kqppt/slideLayouts/_rels/slideLayout4.xml.relsPK-!ђ7,Qrppt/slideLayouts/_rels/slideLayout5.xml.relsPK-!ђ7,Wsppt/slideLayouts/_rels/slideLayout6.xml.relsPK-!ђ7,]tppt/slideLayouts/_rels/slideLayout7.xml.relsPK-!ђ7,cuppt/slideLayouts/_rels/slideLayout8.xml.relsPK-!ђ7,ivppt/slideLayouts/_rels/slideLayout9.xml.relsPK-!ђ7-owppt/slideLayouts/_rels/slideLayout10.xml.relsPK- !ܝ"  vxdocProps/thumbnail.jpegPK-!:~"Tppt/theme/theme1.xmlPK- !ocB ֈppt/media/image1.pngPK-! 0Βppt/presProps.xmlPK-!`/J-ppt/viewProps.xmlPK-!5ppt/tableStyles.xmlPK-!:9vdocProps/core.xmlPK-!)!1/docProps/app.xmlPK22&pandoc-3.1.3/test/pptx/remove-empty-slides/0000755000000000000000000000000007346545000017037 5ustar0000000000000000pandoc-3.1.3/test/pptx/remove-empty-slides/input.native0000644000000000000000000000027007346545000021405 0ustar0000000000000000[Para [Str "Content"] ,Para [Image ("",[],[]) [] ("lalune.jpg",""),Space,RawInline (Format "html") ""] ,HorizontalRule ,HorizontalRule ,Para [Str "More",Space,Str "content"]] pandoc-3.1.3/test/pptx/remove-empty-slides/output.pptx0000644000000000000000000012765007346545000021327 0ustar0000000000000000PK"TDMAppt/slides/slide1.xmlTn!{ڎĊiUrSv?ػ- _߁eח!/90P++'+(-fB-?҇{% B -CcƼ(g,h<[WKa=GVJӜޓoJW#5qx@oTv{ځ<0&V@I.a]= rqބDʉKÆ${"QЕMQ Mhd˪ZLrTQ@1/پĽw.T4'1{."j('5-@zMA9 PK"T% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"Ti\??ppt/media/image1.jpgweX^.tKww# XbE钐\iNYJ@S_o}<̙w杧5:L ;'4@ a@`0cSSQQSPг3вQP01rprpS3 s sqs KKECAmO]l-A$`<_00…rL aaba@$X`a2{8Hrn] Q+Il6ߧzSb{? $eVxZ$Tni?B$! ak!$Y[ bjΘ*K6kfjOAWd|(_#˲Mj5EV꿮-\\#ψh*lqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"T> [Content_Types].xml͗n@_pȪmm<\pՃIlaĵ!շ1Uҽ,;ϷKx ІI[A@2b"Fza0}j#ĄSRԜZ\(~HP 6lz0zK|t߻R}*Z&.ٙ!1 m5hff1fʔ(1SVӳYvOr GZ*C&>F9Pc1%&PeU\)KLJέ)/Z'( Y8OߡNR9٫P.B]u"TE.B; 5-DyQ̵BYt&_Od)y>dڠeՅS*C+1 J C4P)97VOcʽڜ2f໖>l P=(z\Z@PK"TmȁGdocProps/core.xmlN0_%=q⪀$=z "7޶V i7iS*]Ŭ-u,Z(u2;AI3nVDAEZoxmrQ檅E U-]O lYPcRqdW5V\TDX; /Pb纑S>7o#Z9y[^DPfDl$<$+~YIuf"E Ak x38ޫQ/3qb7+ߥhu8C^" JkF]+*( cQńtEZN-+ ѶBtDkqa?mn 5 C-EA{%w\<~ڀ4ɢse hwf!ӿm쏾PߜeAA0*s%_W4f~ ٫2.J2@7d5\L[I-C(Ĝ~bt> f,X漢j8ǵԟϦPK"TWD>Ippt/_rels/presentation.xml.relsN0 _%-0Z B xmDDI6Ti8Dɶ\ yi4(c}j{i=%3Cwz}a,7CQ;ensOiMS-۴xoǀ:z%u*z($uN'gbGQJR\夰 (%)y>;Qe7&'Wo _^?1IJk';{o;&PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlR M[Content_Types].xmlPK"TmȁGOdocProps/core.xmlPK"Ty%(QdocProps/custom.xmlPK"TQ Q_rels/.relsPK"T;R{Rppt/presentation.xmlPK"TWD>IUppt/_rels/presentation.xml.relsPK"T0K 8Wppt/viewProps.xmlPK"TXppt/tableStyles.xmlPK"T }.Yppt/presProps.xmlPK"T|[ppt/theme/theme2.xmlPK"T mu!appt/theme/theme1.xmlPK"Tђ7-gppt/slideLayouts/_rels/slideLayout11.xml.relsPK"Tђ7-hppt/slideLayouts/_rels/slideLayout10.xml.relsPK"Tђ7,ippt/slideLayouts/_rels/slideLayout9.xml.relsPK"Tђ7,jppt/slideLayouts/_rels/slideLayout8.xml.relsPK"Tђ7,kppt/slideLayouts/_rels/slideLayout7.xml.relsPK"Tђ7,lppt/slideLayouts/_rels/slideLayout6.xml.relsPK"Tђ7,mppt/slideLayouts/_rels/slideLayout5.xml.relsPK"Tђ7,nppt/slideLayouts/_rels/slideLayout4.xml.relsPK"Tђ7,oppt/slideLayouts/_rels/slideLayout3.xml.relsPK"Tђ7,pppt/slideLayouts/_rels/slideLayout2.xml.relsPK"Tђ7,qppt/slideLayouts/_rels/slideLayout1.xml.relsPK"T'v!rppt/slideLayouts/slideLayout9.xmlPK"TJI,!wppt/slideLayouts/slideLayout8.xmlPK"TSd{g!|ppt/slideLayouts/slideLayout7.xmlPK"T}!ppt/slideLayouts/slideLayout6.xmlPK"TE˧:!ppt/slideLayouts/slideLayout5.xmlPK"T?N!)ppt/slideLayouts/slideLayout4.xmlPK"T6\#!nppt/slideLayouts/slideLayout3.xmlPK"TD9Bi ! ppt/slideLayouts/slideLayout2.xmlPK"TkO ' "ppt/slideLayouts/slideLayout11.xmlPK"TF "ppt/slideLayouts/slideLayout10.xmlPK"To@h)!rppt/slideLayouts/slideLayout1.xmlPK"T%1,oڠdocProps/app.xmlPK))^ 4pandoc-3.1.3/test/pptx/remove-empty-slides/templated.pptx0000644000000000000000000016130507346545000021741 0ustar0000000000000000PK!LAppt/slides/slide1.xmlTn!{ډcŎ4*Uaݖ֯Kv9Y";p4zB{.%L}۱W T1";f̋*;Ƃƽq8u&cJ~{*^jϻ7u) t8P< M_7GYӤ2P2)K#{qva.m掔͡D &w2] &UaBcY\C ^gˢx{-) Gq5U UX( |>l{;3'ڠH.į-0=S%q$-VZySιpX8WXG̦N%*f)(Kaʰ}5EYN=4yG""$щ`C5nRd8wU䊫onc4xy6-piz[Օ*sTҏ1qcVdwύ䃃 dv*_jHT÷wz{8V]A0|xS kj7,L\&rmKCzUOZkOm.^<,PK![xGppt/slides/slide2.xmlSN0wR$x^J4~vC=bwgggV| :0Uד)F Z//s]X^!%n!5 ( jeui2SNf-x7n<*v ]"12mj%lڀ4my^ꍉu1r0T@1"CeRD0sH6"K}' Ib)FiּC!d48K ɮt~Ih)F X^)iTb\J|E[7~B?¤ ^U0)K n9GǂU ZYy! 0cbt6%̊HFHlH3PK!A ppt/slides/_rels/slide1.xml.rels 0_%ݤ "P$!٦$}{^,xqggg>vHnÒV@IΧb m=(rqDʉKÆ$"QЕMQ UhduUX̀y&ة%#/پĝET4S."j(g5-@whƖ̠,*#zM/A8PK!% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK!i\??ppt/media/image2.jpgweX^.tKww# XbE钐\iNYJ@S_o}<̙w杧5:L ;'4@ a@`0cSSQQSPг3вQP01rprpS3 s sqs KKECAmO]l-A$`<_00…rL aaba@$X`a2{8Hrn] Q+Il6ߧzSb{? $eVxZ$Tni?B$! ak!$Y[ bjΘ*K6kfjOAWd|(_#˲Mj5EV꿮-\\#ψh*lqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK!1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\>b5Pm_(Gh2dCZr4bƔKK qPeqSp,1)n>хZS]M4yV u"ԹPK'.\jl;Iu$Pn>n6+'@'{]$m35oE=*wBY(<#9$gYK] Κ~f)"w"p1.wY+љ2XZڜ2f૖?b)_Z6zZA>JF}PK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<KC !ژ*^400S14껪MJj`^?ؤ^0'^I yɯ-3j)XSDqL5g"C9_hs<Á `v#o>ȿ\⤓k=aǾkzGW8\ ;f8!1qg)+9Ca?ڰoh#̚Ϩ][.yTHP)\^W1b/Bw @Zӿ Gq؝8] h^F2Mȳ%U 7PFNo\u}8u%Ml+О9ܶkxr$ SNoN 7 $/'%3 ZFaN}-wF~ E-H$ dR; xR?4 n-$;$Kh7i!M}]!PK!5ˏIppt/_rels/presentation.xml.relsN _{K[u3c D plixAvy~sr3(C ZF֫+*b$hϠ>PEIkC,]G-CZ傺=ɦa6M doӶR_p l0ra`p(Ԫn@y QI֡q&?Rʞ3I"Gq֑~\(| {|&bd$NPt9!vOeF :VPK!g[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+O$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKv&Sppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}t6G3 ._2URh6 FfmV6ʢ `cDLWϪCZ[+䡶SZI#o5㟷UO!jpWثzJP\ ,_YhwH 1%Kq7ЎIM~wNi08T,D4{u#L~B))k%Bq)7gvr_9"C@kBNn\~3m |h\(Dyi|'ۼR5oTO!$ndYQA!\Ӄ6QTay(ٶ6Fn,==\ ҈}:!.+aC̩^eRx9옻KAFx7'&Ppb#OBa*ULŽ?{x]|U蒑K]xOUΡc, 0wxb2a {X.?3˵S|O?/\n  H3)Ҍރ"$Q*Ȫ0"@=}ŚHDs(qBO)aSfkg7pCލhˎS4RWV.aD[qw-ԏV=E\cOg2Dv PH&uƋDGՔ&ZҌ({P8ai vO$]㓗2w&}hP̙TI\C&?&mqt"qBh Ґk[l͕̍5'PK"T% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T% ppt/slides/_rels/slide3.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"TuJ [Content_Types].xml͗]o0 vGD/qЕ6i#Q<`Rop)"v|1<h8CfQJO3jqDQI@zN0),\!zK.bݕqyȧJQǤ8%;5fOBĿ5ZEqe6%^/4C=K6R~dp10%=8P( r_\)KLOt%Tݣi"m֤a%cyY%0s>[|MzҭPK"Ty%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<G|A5Cn[ Zd =O1E,J1OIbu@2HQƢ;(E|"y's9.Rry!%3$IIBhgQo\/PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlRt6G3 ._2URh6 FfmV6ʢ `cDLWϪCZ[+䡶SZI#o5㟷UO!jpWثzJP\ ,_YhwH 1%Kq7>+SB;s Œ`4N6LǡفGÅUǍl!F{xJ1QI3[fVCbuUڱ?+޴ J w;Z`ϯLg=z"h5h?PKDS~䳄Qppt/slides/slide3.xmlSێ {Cʊ}HI?$& NvV``fΜsW5dw=XRNxݩ?>|U蒑K]xOUΡc, 0wxb2a {X.?3˵S|O?/\n  H3)Ҍރ"$Q*Ȫ0"@=}ŚHDs(qBO)aSfkg7pCލhˎS4RWV.aD[qw-ԏV=E\cOg2Dv PH&uƋDGՔ&ZҌ({P8ai vO$]㓗2w&}hP̙TŖM H&?&mqt"qBh Ґk[l͕̍5'PKDS% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PKDS% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PKDS% ppt/slides/_rels/slide3.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PKDS1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\Lxm(}' B@ Q}Id{ϓd`䩷mC}D(#&1}jh0])0 3g֪;BL8NM \P'D&@vRXe3 4xS=.qw_e>U*e!LUQCjx.DZۘSbO%g{ YބjJ9H-!D,Ԙst c j)mlxwW3]ɹ54J{nӠgP.Bur"T$ՍT.BYUnVTN//Xe9z:G.S'縐YS] 5LݮR8;DEz/FRC}ߖ,>ل+;/dX\5KmN8H`ȋX WS G-fe%ʌ~PKDSfQGdocProps/core.xmlOO!ſʆ.5Fv{5o-'0ڭMzx4ox7'b6n3'oeyGmP>K"HEnsI0'[ (Mj V*;\>Z К[j(XH~ZM,8LWѦ i \ɽOf2}_s:ZP:mhe^}":eh.r1>)ﳇՒ5yYnV^L0y< I`L|PKDSy%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<Q\eNƈkb '0iM3i`+q?lxA,Ɍ[7%:ĖT-@a;x`á+Qυnb[? *̕EX3#a\(rzpzVQ yH&g$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKDSppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}ppt/slideLayouts/_rels/slideLayout4.xml.relsUTux PK!ђ7,?ppt/slideLayouts/_rels/slideLayout5.xml.relsUTux PK! L|!@ppt/slideLayouts/slideLayout7.xmlUTux PK!3Y "Cppt/slideLayouts/slideLayout11.xmlUTux PK!Ex"Gppt/slideLayouts/slideLayout10.xmlUTux PK!z&!Lppt/slideLayouts/slideLayout6.xmlUTux PK!=[!Oppt/slideLayouts/slideLayout4.xmlUTux PK!im "\Sppt/slideLayouts/slideLayout12.xmlUTux PK!h "Yppt/slideLayouts/slideLayout13.xmlUTux PK!s@y#!]ppt/slideLayouts/slideLayout5.xmlUTux PK!=t!cppt/slideLayouts/slideLayout1.xmlUTux PK!f\$ "thppt/slideLayouts/slideLayout17.xmlUTux PK!(D "(lppt/slideLayouts/slideLayout16.xmlUTux PK!)J.  !oppt/slideLayouts/slideLayout2.xmlUTux PK!;FdvU&" sppt/slideLayouts/slideLayout14.xmlUTux PK!p O;"xppt/slideLayouts/slideLayout15.xmlUTux PK!!]ppt/slideLayouts/slideLayout3.xmlUTux PK!K%!ppt/slideLayouts/slideLayout8.xmlUTux PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux PK!x%,docProps/app.xmlUTux PK77pandoc-3.1.3/test/pptx/slide-breaks-toc/0000755000000000000000000000000007346545000016255 5ustar0000000000000000pandoc-3.1.3/test/pptx/slide-breaks-toc/output.pptx0000644000000000000000000007457107346545000020550 0ustar0000000000000000PK"T:58ppt/slides/slide1.xmlTn!|ۑs$mU)J-}{>j\Wuf콾:zNhU #PLs5z,M$GTָT8BGݥ6BѶ>pKD'b6D:*9i{(A,HM 9Xp&uIX5k)د,<#2fƺ|V}m i54{i%Xek8U/IyL2EFx h"vACJQɆ,XݴL ݈Y2}]íS-k|ɤ%d/Px)}AB?j #\Чt .as_Zhݟ*h%)VK-OI[I&ŭB`;d~Ae>crq2 _Δ◷ 3r/$ O8LBWNh*?:y F7PK"Tp`ppt/slides/slide2.xmlSn!»bm4W{{1De#ߗˮ_``fΜsY+jZ? Gbծ_3M'pBT{o B j*JHe1@HAƣVfAĂ>t6G3 ._2URh6 FfmV6ʢ `cDLWϪCZ[+䡶SZI#o5㟷UO!jpWثzJP\ ,_YhwH 1%Kq7 ZP'ƶ^'q 8NF j:߬A>TڊָuNWXւRi޷UFPfGC<Ȳx7WmNO%:OӶ6`=LC)(ckDzc%GDsjP`$cDFβO9BM&aPc}\I!n5k_E\H>-[W_ sv]1)30w4$~7PK"T1*Gppt/slides/slide4.xmlTn0O!E!DW.Aj"B(ߗQ0K/rw9;3zNFrE57BCK~]|$x% j߰!؆R{4uu ,ģ;Ps]V&}w}ußԡ8T,DW4{u#L !Hwøu E4f+s_9D¡:7=ʃ%c^iJ,_yn}!t18+ T2(q?z&6"=p,$0rr#Ur?OFӜq/Y(vKQeR|U蒑K]xOUΡc, 0wxb2a {X.?3˵S|O?/\n  H3)Ҍރ"$Q*Ȫ0"@=}ŚHDs(qBO)aSfkg7pCލhˎS4RWV.aD[qw-ԏV=E\cOg2Dv PH&uƋDGՔ&ZҌ({P8ai vO$]㓗2w&}hP̙TI\C&?&mqt"qBh Ґk[l͕̍5'PK"T[# ppt/slides/_rels/slide1.xml.rels 0D%ݤV xn`$j=켁͊[ג+:0 ҔJΧl E!:|'D{MvØ vScQMe\'BfVȋIb=ƙd_rpr4X&T5P * Ӈ+\)MWK^U!O<};PK"T% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"Tҋ6% ppt/slides/_rels/slide3.xml.rels 0_%ݤ*H^D(x!٦$؂;; S;7d㰧t+4g۝mN"GMHD\0.%9|匚!_B#;TՉ5L)S{ #l,MF],~+́ҵ1išm6_PK"T% ppt/slides/_rels/slide4.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T% ppt/slides/_rels/slide5.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"T@;[Content_Types].xml͗]o0 vGD/qЕ6i#Q<`Rop)"v|1<h8CfQJO3jqDQI@zN0),\!zK.bݕqyȧJQǤ8%;5fOBĿ5ZEqe6%^/4C=K6R~dp10%=8P( r_\)KLOt%Tݣi"3gxےY*d+Yx^T=>]OTJqiᥞ"S lyTR0*9" Z+Ul[fkZykZ$ ny%] >J~wLWLrYdgM ^;A1뢖H,Cw~'ɌU r1Hπ<$xtפףѻ3ag.ެl!}ǁ5A@ߨך&Hf a[61xp1a9]U dL|.\XJbn 0\Ca+ Y =[ ru%Jx6u ^ M)3}[qgB1}, '21(KΊ<-37z& 5 3e %0eBɈV䉒{>0ig~sF;>##wF؋px#H)8B {q\)R{ގ!iB⎏C ^C>wG0n0Q$t\8|w b x6n!pOο"`ospG)Lpɗ*e۞5Pksv+mi Y5=YFRq ~mb~bt>oP洢j'~MPK"Tppt/_rels/presentation.xml.relsN W![ivcLvabt>ӖHNvY~ (.#P\WB5oVxYd>p0%Qzo qLPaֶc>!)|IDbJGZpxlA6)>inD2OEb9bUR*OQTqRa, EEEyb΃s8EٻW08A%Tÿ PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlR䕤KbMYT5>'2y8+ ߫6"H@Wq<&6ǒ"=C`#XH`FʒZ ?w^ni#}XCO6/1'{*s 46ad46RqrC#iу!Tr+}jEww:8" :#98t~ >LjdjR:)A CIWUP򈰶D+`WFi^\|!y鷄g{B?PyP uN< ?PK!a`ppt/slides/slide2.xmlSn!»bm4W{{1De#ߗˮ_``fΜsY+jZ? Gbծ_3M'pBT{o B j*JHe1@HAƣVfAĂ>t6G3 ._2URh6 FfmV6ʢ `cDLWϪCZ[+䡶SZI#o5㟷UO!jpWثzJP\ ,_YhwH 1%Kq71'XSBs 6hmٗyz .R_ݮ4+%Z}{{ l%bZ)tݓ =0Kkt~{ PK!~䳄Qppt/slides/slide5.xmlSێ {Cʊ}HI?$& NvV``fΜsW5dw=XRNxݩ?>|U蒑K]xOUΡc, 0wxb2a {X.?3˵S|O?/\n  H3)Ҍރ"$Q*Ȫ0"@=}ŚHDs(qBO)aSfkg7pCލhˎS4RWV.aD[qw-ԏV=E\cOg2Dv PH&uƋDGՔ&ZҌ({P8ai vO$]㓗2w&}hP̙TŖM H&?&mqt"qBh Ґk[l͕̍5'PK![# ppt/slides/_rels/slide1.xml.rels 0D%ݤV xn`$j=켁͊[ג+:0 ҔJΧl E!:|'D{MvØ vScQMe\'BfVȋIb=ƙd_rpr4X&T5P * Ӈ+\)MWK^U!O<};PK!% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK!ҋ6% ppt/slides/_rels/slide3.xml.rels 0_%ݤ*H^D(x!٦$؂;; S;7d㰧t+4g۝mN"GMHD\0.%9|匚!_B#;TՉ5L)S{ #l,MF],~+́ҵ1išm6_PK!% ppt/slides/_rels/slide4.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK!% ppt/slides/_rels/slide5.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK!1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\ӕ[S]ܞL4yT wEεTW.Ru]qE(7@7Oͪvɲ]|uL P(>Oe<2KP;ե[*CTbN(5ԇ2cMȹ|BΈUU~)i #ǕujBhL[V vB3-s@wSPK! ) ,GdocProps/core.xmlMk0 J=B6z`݌~n$+6Aduʚ# a2mEޛm&ë<*I,3"{DWP4Yt(c[8cTrɑ30u3\RH 4 4rx7 S+<9i} j6}0jL@n@%] $N2D*L4zA&b{R>VO͖Ú,a?`7ԿPK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<T~qFA(iοtV(n78B\ pRk1Jky$vǞhWQlwUho]ׂÓ( ⤨ 2ۀTE0")fQQD(b"yb9"JqXpVUIz)JQ$9"8oMS»?J4(IIʳc bZz ozPK!g[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+O$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPK^PSppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}ppt/slideLayouts/_rels/slideLayout2.xml.relsUTux PK!ђ7-@ppt/slideLayouts/_rels/slideLayout14.xml.relsUTux PK!ђ7-Appt/slideLayouts/_rels/slideLayout15.xml.relsUTux PK!ђ7-6Bppt/slideLayouts/_rels/slideLayout13.xml.relsUTux PK!ђ7-OCppt/slideLayouts/_rels/slideLayout12.xml.relsUTux PK!ђ7,hDppt/slideLayouts/_rels/slideLayout4.xml.relsUTux PK!ђ7,Eppt/slideLayouts/_rels/slideLayout5.xml.relsUTux PK! L|!Fppt/slideLayouts/slideLayout7.xmlUTux PK!3Y "kIppt/slideLayouts/slideLayout11.xmlUTux PK!Ex"{Mppt/slideLayouts/slideLayout10.xmlUTux PK!z&!hRppt/slideLayouts/slideLayout6.xmlUTux PK!=[!qUppt/slideLayouts/slideLayout4.xmlUTux PK!im "#Yppt/slideLayouts/slideLayout12.xmlUTux PK!h "J_ppt/slideLayouts/slideLayout13.xmlUTux PK!s@y#!kcppt/slideLayouts/slideLayout5.xmlUTux PK!=t!hppt/slideLayouts/slideLayout1.xmlUTux PK!f\$ ";nppt/slideLayouts/slideLayout17.xmlUTux PK!(D "qppt/slideLayouts/slideLayout16.xmlUTux PK!)J.  !ouppt/slideLayouts/slideLayout2.xmlUTux PK!;FdvU&"xppt/slideLayouts/slideLayout14.xmlUTux PK!p O;"}~ppt/slideLayouts/slideLayout15.xmlUTux PK!!$ppt/slideLayouts/slideLayout3.xmlUTux PK!K%!vppt/slideLayouts/slideLayout8.xmlUTux PK!ҦB!fppt/slideLayouts/slideLayout9.xmlUTux PK!x%,cdocProps/app.xmlUTux PK;;Ζpandoc-3.1.3/test/pptx/slide-breaks/0000755000000000000000000000000007346545000015472 5ustar0000000000000000pandoc-3.1.3/test/pptx/slide-breaks/input.native0000644000000000000000000000076507346545000020051 0ustar0000000000000000Pandoc (Meta {unMeta = fromList []}) [Para [Str "Break",Space,Str "with",Space,Str "a",Space,Str "new",Space,Str "section-level",Space,Str "header"] ,Header 1 ("below-section-level",[],[]) [Str "Below",Space,Str "section-level"] ,Header 2 ("section-level",[],[]) [Str "Section-level"] ,Para [Str "Third",Space,Str "slide",Space,Str "(with",Space,Str "a",Space,Str "section-level",Space,Str "of",Space,Str "2)"] ,HorizontalRule ,Para [Str "This",Space,Str "is",Space,Str "another",Space,Str "slide."]] pandoc-3.1.3/test/pptx/slide-breaks/output.pptx0000644000000000000000000007270507346545000017762 0ustar0000000000000000PK"Tp`ppt/slides/slide1.xmlSn!»bm4W{{1De#ߗˮ_``fΜsY+jZ? Gbծ_3M'pBT{o B j*JHe1@HAƣVfAĂ>t6G3 ._2URh6 FfmV6ʢ `cDLWϪCZ[+䡶SZI#o5㟷UO!jpWثzJP\ ,_YhwH 1%Kq7 ZP'ƶ^'q 8NF j:߬A>TڊָuNWXւRi޷UFPfGC<Ȳx7WmNO%:OӶ6`=LC)(ckDzc%GDsjP`$cDFβO9BM&aPc}\I!n5k_E\H>-[W_ sv]1)30w4$~7PK"T1*Gppt/slides/slide3.xmlTn0O!E!DW.Aj"B(ߗQ0K/rw9;3zNFrE57BCK~]|$x% j߰!؆R{4uu ,ģ;Ps]V&}w}ußԡ8T,DW4{u#L !Hwøu E4f+s_9D¡:7=ʃ%c^iJ,_yn}!t18+ T2(q?z&6"=p,$0rr#Ur?OFӜq/Y(vKQeR|U蒑K]xOUΡc, 0wxb2a {X.?3˵S|O?/\n  H3)Ҍރ"$Q*Ȫ0"@=}ŚHDs(qBO)aSfkg7pCލhˎS4RWV.aD[qw-ԏV=E\cOg2Dv PH&uƋDGՔ&ZҌ({P8ai vO$]㓗2w&}hP̙TI\C&?&mqt"qBh Ґk[l͕̍5'PK"T% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"Tҋ6% ppt/slides/_rels/slide2.xml.rels 0_%ݤ*H^D(x!٦$؂;; S;7d㰧t+4g۝mN"GMHD\0.%9|匚!_B#;TՉ5L)S{ #l,MF],~+́ҵ1išm6_PK"T% ppt/slides/_rels/slide3.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T% ppt/slides/_rels/slide4.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"T]o[Content_Types].xml͗]o0 vGD/qЕ6i#Q<`Rop)"v|1<h8CfQJO3jqDQI@zN0),\!zK.bݕqyȧJQǤ8%;5fOBĿ5ZEqe6%^/4C=K6R~dp10%=8P( r_\)KLOt%Tݣi"m֤a%cyY%0s>[|MzҭPK"Ty%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<A) k8}Z`ށad5H47pB/, S/ l"@ߜ4ENA,2%_ma٫2. R@wd\\ I=Sz)Č }O^1yE?Hհ`&PK"T ~ Uppt/_rels/presentation.xml.relsQO ǿ vsN3c D po/Lm`$ڃuB+,וP ﻧ%ެW ơPŭ[˴Njm;Chbd 2=m+*1 \Zpx/\ACf?ȂF2l"2J1bbKIbuXžƂ;(E|"ygs9Oه70@,Ó2׿PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlR qhpandoc-3.1.3/test/pptx/slide-breaks/templated.pptx0000644000000000000000000012435407346545000020377 0ustar0000000000000000PKDSa`ppt/slides/slide1.xmlSn!»bm4W{{1De#ߗˮ_``fΜsY+jZ? Gbծ_3M'pBT{o B j*JHe1@HAƣVfAĂ>t6G3 ._2URh6 FfmV6ʢ `cDLWϪCZ[+䡶SZI#o5㟷UO!jpWثzJP\ ,_YhwH 1%Kq71'XSBs 6hmٗyz .R_ݮ4+%Z}{{ l%bZ)tݓ =0Kkt~{ PKDS~䳄Qppt/slides/slide4.xmlSێ {Cʊ}HI?$& NvV``fΜsW5dw=XRNxݩ?>|U蒑K]xOUΡc, 0wxb2a {X.?3˵S|O?/\n  H3)Ҍރ"$Q*Ȫ0"@=}ŚHDs(qBO)aSfkg7pCލhˎS4RWV.aD[qw-ԏV=E\cOg2Dv PH&uƋDGՔ&ZҌ({P8ai vO$]㓗2w&}hP̙TŖM H&?&mqt"qBh Ґk[l͕̍5'PKDS% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PKDSҋ6% ppt/slides/_rels/slide2.xml.rels 0_%ݤ*H^D(x!٦$؂;; S;7d㰧t+4g۝mN"GMHD\0.%9|匚!_B#;TՉ5L)S{ #l,MF],~+́ҵ1išm6_PKDS% ppt/slides/_rels/slide3.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PKDS% ppt/slides/_rels/slide4.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PKDS1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\ӕ[S]ܞL4yT wEεTW.Ru]qE(7@7Oͪvɲ]|uL P(>Oe<2KP;ե[*CTbN(5ԇ2cMȹ|BΈUU~)i #ǕujBhL[V vD PKDSfQGdocProps/core.xmlOO!ſʆ.5Fv{5o-'0ڭMzx4ox7'b6n3'oeyGmP>K"HEnsI0'[ (Mj V*;\>Z К[j(XH~ZM,8LWѦ i \ɽOf2}_s:ZP:mhe^}":eh.r1>)ﳇՒ5yYnV^L0y< I`L|PKDSy%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<QԦ|Mw¬,QٔbΫBIr<5{7DS`Ҋ]8\To0F[Z$3.`ߤ<[Q5w eƕgއrEYT~sFA(iο=eS? RBJz$RBJFDzd &-HI$wwfPKDSEe Uppt/_rels/presentation.xml.rels_k ſ֍ھBc>37̨o?iGHJ=Hzq8t:EcJn+HÆkq(\Q{H-teڀ 'a 1HKbxv_NZpxo$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKDSppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}vf.@]jr@QGA`q<&nW1@_h&Vtɻ.CvpsTG :EKȊPAYȽnF^:2=fv˄ #3A>8& <8DYm rgv/AC"Փiۏ^#biŚ ư?2Lm{L3z kK@/r{9 9A)*S[+ "\ɨZk$ bݷ/=nCQ@{0sK2eTi@Gd8:\O.Ht<%Y?a{8Z5 BFv3[왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"T! [Content_Types].xml͗n@_pm!=\`R[tS.V߾(%Q, dwgc a4Y{<}=zd<%hC܅1. 8BR͉'zC nxt1aa96w:q~WNI/K9E8 "_k"E%cw#Q+j$JGi~`;ԯM' ٮĴ 1|q A8r@o) o*1rW hA,jk0%wv!57m<3iJ*_ ^Y}0gnt.̖Voe5چ1#gFZUg:H Ȥ'FA}'Fap0@ O!%~\)'waap R;$C^ ҨHq4Br?cXw`X9,R{6~ 8? |,"8٣cVEr/Skz&ZHi:'' g4KQeȓ l/'q1eN( ƃ|F,mVT;z$O~PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlRPIxy^T t({qcOde$R`l,}/~.(sMN(8wj?7[gon-*3jx`74{fjZΊO?I`+*>|0p$_ JGrÀ^႑ 4ezoiYXh2KF%Ϧx][ %ixm_Xwjev/4ݾ훕S]^J8%@GyޔZ5 BFv3[왤Wb@5?l?FŢ?*X»X VD[}giچ_PK!1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\VO͖Ú,a?`7ԿPK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<31)7ǒxLݍ0c~DP$ARE aD3EŝrS?VFR8 V ]]٣sRG/K$s'APW#ҫ@NRkw0J|` [A |Y+n#yL/=;m gciރjyKLVў=xdͲ+Ej$m#eSn23d yqH3w<o3:(h3ċ)l!EC>!>!%a0{;i!!9BCi i?8JpqOHPr1PK!&ppt/_rels/presentation.xml.relsAN0Eb͞8)P!TrLmCjQTU~6?a Q;+*J`hm|o`^:b}diF<{ Ѧƅ^R*C˽T{"_咇L=ٶ?ޮi'zt 1" 8jU$7`:mN 0< ,E= E"gq12'Ot48g$Βg%Im9gq>2H/PK!g[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+O$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKv&Sppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}IvY:yH'mzM\IkXw˶Y5kٓl ߣ*33uHii@&g>8=AK㻞5&ę҉to x2q\T Ŗ D'x!e-ٯƥAlcz92%tmVqǠ|$\*~8ZdB_J<8Ù幏c\ s/섷sUy=k_$1kȶT]Ay{s0~.Gr\.۽ |XnQ mH.G6^d^x<,x_pZݩ*՞ $JNjAn u+v lx9<+./q8*ypXHaOM# QHG&y^ '/uPK"T V ppt/slides/_rels/slide1.xml.rels 0_%ݤAD^D(x!٦$}{^,xqggg>vۑ0&V@IavsQH 8 95cIhE>+G+rfAȫȚZL*U5lFɢ_*X£x)X5f~3SCK'-3(ʈ^K/6 PK"Ti\??ppt/media/image1.jpgweX^.tKww# XbE钐\iNYJ@S_o}<̙w杧5:L ;'4@ a@`0cSSQQSPг3вQP01rprpS3 s sqs KKECAmO]l-A$`<_00…rL aaba@$X`a2{8Hrn] Q+Il6ߧzSb{? $eVxZ$Tni?B$! ak!$Y[ bjΘ*K6kfjOAWd|(_#˲Mj5EV꿮-\\#ψh*lqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"Tw: [Content_Types].xml͗n@_pȪmmD/z0ZwEӽ,;d2 zsІI{ "3hx*LOUwh@*3SKE/i7IaA؆4~tZq [L". }T"jqdkȜxB 031J66U9oX=bTW12j A`0E3)d01 -56s,1)>|K9hզQ pC5rVm.]rEP7.Bu]wj,ygdŵ>G.se}eV|8uK)e 'H(GHj8w̲֖3c%}BZsRS&|C,kCtS"gPK"TmȁGdocProps/core.xmlN0_%=q⪀$=z "7޶V i7iS*aa96w:q~WNI/K9E8 "_k"E%cw#Q+j$JGi~`;ԯM' ٮĴ 1|q A8r@o) o*1rW hA,jk0%wv!57m<3iJ*_ ^Y}0gnt.̖Voe5چ1#gFZUg:H Ȥ'FA}'Fap0@ O!%~\)'waap R;$C^ ҨHq4Br?cXw`X9,R{6~ 8? |,"8٣cVEr/Skz&ZHi:'' g4KQeȓ l/'q1eN( ƃ|F,mVT;z$O~PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlR"-vEZT&gTY1Q/9Pp”xkU! m9 [Kb떺F/he3b&`TfB"𲀟I] խb1q8(_:b7to<4""/ވgɴH*Y{8~`^? y-kqMOG?PKDSY$ ppt/slides/_rels/slide1.xml.rels 0_%ݤADL{A$!٦$A/zqggg>v=HCM+ Winq8`B"%CaXZʦъ\ƨY*4,~g4W53/پĭ7.T4\bEԘ9POL -@qm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPKDS1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\ihI$ai=4{w]SRQ$?%5fLkx-Dƌ2g[BLT,7%6,o@} H,L ^ iшES.!d,1āBIЖ*MĤDrjMuqSFi0xyV u"ԹPK'.\jl;Iu$Pn>n6+'@'{]$m35T eq>G.sHgY7cޝ5H.R8:DEz+F9DR?c\ 95Vڙ2XZڜ2f$Rx6l@i=%ɿaPKDS}5GdocProps/core.xmlOO!ſʆ.5Fv{5o-'0ڭMzx4ox7'b6n3'oeyGmP>K"HEnsI0'[ (Mj V*;\>Z К[j(XH~ZM,8LWѦ i \ɽOf2}_s:ZP:mhe^}":eh.r1>)ﳇՒ5yYnV^L3']O1ohPKDSy%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<31)7ǒxLݍ0c~DP$ARE aD3EŝrS?VFR8 V ]]٣sRG/K$s'APW#ҫ@NRkw0J|` [A |Y+n#yL/=;m gciރjyKLVў=xdͲ+Ej$m#eSn23d yqH3w<o3:(h3ċ)l!EC>!>!%a0{;i!!9BCi i?8JpqOHPr1PKDS&ppt/_rels/presentation.xml.relsAN0Eb͞8)P!TrLmCjQTU~6?a Q;+*J`hm|o`^:b}diF<{ Ѧƅ^R*C˽T{"_咇L=ٶ?ޮi'zt 1" 8jU$7`:mN 0< ,E= E"gq12'Ot48g$Βg%Im9gq>2H/PKDSg[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+O$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKDSppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}s^l"sQ4PDSTXM~TD2jͰG(!%r|iRbKN8j$l#m^}E]4U[--Ŭ{K =SAQQ< &TuT98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"T! [Content_Types].xml͗n@_pm!=\`R[tS.V߾(%Q, dwgc a4Y{<}=zd<%hC܅1. 8BR͉'zC nxt1aa96w:q~WNI/K9E8 "_k"E%cw#Q+j$JGi~`;ԯM' ٮĴ 1|q A8r@o) o*1rW hA,jk0%wv!57m<3iJ*_ ^Y}0gnt.̖Voe5چ1#gFZUg:H Ȥ'FA}'Fap0@ O!%~\)'waap R;$C^ ҨHq4Br?cXw`X9,R{6~ 8? |,"8٣cVEr/Skz&ZHi:'' g4KQeȓ l/'q1eN( ƃ|F,mVT;z$O~PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlR.I'U1E.>a`OO"ُ}o]ϮD3 +4jcB]դABHVT;z)<Qu3bY!܄$0d,L]Sc6lRmwjŰg(׊g+TiTb+N8j4N:` hIU-=N3+mր*VvU?]wX&8ZS("h-ES.,)/C YMf\M w M5 |pu6vh´YW' ʱXg /ON}b^3Jx/|=Fv ɚV s(*9XT`PEj0Q`6]j}^:Q6N?:(.Gyb\,ükA:xQH2(υA=6[.^o. - ~ e9 nzww\n7._ż7A7\䃢8x.xM=z؈ [0`&9tݽ!'$/'?PK!% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK!1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\VO͖Ú,a?`7ԿPK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<31)7ǒxLݍ0c~DP$ARE aD3EŝrS?VFR8 V ]]٣sRG/K$s'APW#ҫ@NRkw0J|` [A |Y+n#yL/=;m gciރjyKLVў=xdͲ+Ej$m#eSn23d yqH3w<o3:(h3ċ)l!EC>!>!%a0{;i!!9BCi i?8JpqOHPr1PK!&ppt/_rels/presentation.xml.relsAN0Eb͞8)P!TrLmCjQTU~6?a Q;+*J`hm|o`^:b}diF<{ Ѧƅ^R*C˽T{"_咇L=ٶ?ޮi'zt 1" 8jU$7`:mN 0< ,E= E"gq12'Ot48g$Βg%Im9gq>2H/PK!g[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+O$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKv&Sppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}ppt/slideLayouts/slideLayout11.xmlUTux PK!Ex"Bppt/slideLayouts/slideLayout10.xmlUTux PK!z&!Gppt/slideLayouts/slideLayout6.xmlUTux PK!=[!Jppt/slideLayouts/slideLayout4.xmlUTux PK!im "yNppt/slideLayouts/slideLayout12.xmlUTux PK!h "Tppt/slideLayouts/slideLayout13.xmlUTux PK!s@y#!Xppt/slideLayouts/slideLayout5.xmlUTux PK!=t!;^ppt/slideLayouts/slideLayout1.xmlUTux PK!f\$ "cppt/slideLayouts/slideLayout17.xmlUTux PK!(D "Egppt/slideLayouts/slideLayout16.xmlUTux PK!)J.  !jppt/slideLayouts/slideLayout2.xmlUTux PK!;FdvU&"&nppt/slideLayouts/slideLayout14.xmlUTux PK!p O;"sppt/slideLayouts/slideLayout15.xmlUTux PK!!zzppt/slideLayouts/slideLayout3.xmlUTux PK!K%!ppt/slideLayouts/slideLayout8.xmlUTux PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux PK!x%,docProps/app.xmlUTux PK33w$pandoc-3.1.3/test/pptx/slide-level-0/h2-with-image/0000755000000000000000000000000007346545000020031 5ustar0000000000000000pandoc-3.1.3/test/pptx/slide-level-0/h2-with-image/input.native0000644000000000000000000000016507346545000022402 0ustar0000000000000000[Header 2 ("hello",[],[]) [Str "Hello"] ,Para [Image ("",[],[]) [Str "An",Space,Str "image"] ("lalune.jpg","fig:")]] pandoc-3.1.3/test/pptx/slide-level-0/h2-with-image/output.pptx0000644000000000000000000012626407346545000022321 0ustar0000000000000000PK"T+ppt/slides/slide1.xmlUQS!~`x\NIh3:5#w0@bpp&1Ƀ/~]^[V:N b߳#|}ui&NVL)n7BkxK݉6\nmK=mM*K_E+IY礥B^/-[|rI=a\ff,w&I) c/r$z<ۨ~Z=[$* #E[>IvY:yH'mzM\IkXw˶Y5kٓl ߣ*33uHii@&g>8=AK㻞5&ę҉to x2q\T Ŗ D'x!e-ٯƥAlcz92%tmVqǠ|$\*~8ZdB_J<8Ù幏c\ s/섷sUy=k_$1kȶT]Ay{s0~.Gr\.۽ |XnQ mH.G6^d^x<,x_pZݩ*՞ $JNjAn u+v lx9<+./q8*ypXHaOM# QHG&y^ '/uPK"T V ppt/slides/_rels/slide1.xml.rels 0_%ݤAD^D(x!٦$}{^,xqggg>vۑ0&V@IavsQH 8 95cIhE>+G+rfAȫȚZL*U5lFɢ_*X£x)X5f~3SCK'-3(ʈ^K/6 PK"Ti\??ppt/media/image1.jpgweX^.tKww# XbE钐\iNYJ@S_o}<̙w杧5:L ;'4@ a@`0cSSQQSPг3вQP01rprpS3 s sqs KKECAmO]l-A$`<_00…rL aaba@$X`a2{8Hrn] Q+Il6ߧzSb{? $eVxZ$Tni?B$! ak!$Y[ bjΘ*K6kfjOAWd|(_#˲Mj5EV꿮-\\#ψh*lqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"Tw: [Content_Types].xml͗n@_pȪmmD/z0ZwEӽ,;d2 zsІI{ "3hx*LOUwh@*3SKE/i7IaA؆4~tZq [L". }T"jqdkȜxB 031J66U9oX=bTW12j A`0E3)d01 -56s,1)>|K9hզQ pC5rVm.]rEP7.Bu]wj,ygdŵ>G.se}eV|8uK)e 'H(GHj8w̲֖3c%}BZsRS&|C,kCtS"gPK"TmȁGdocProps/core.xmlN0_%=q⪀$=z "7޶V i7iS*aa96w:q~WNI/K9E8 "_k"E%cw#Q+j$JGi~`;ԯM' ٮĴ 1|q A8r@o) o*1rW hA,jk0%wv!57m<3iJ*_ ^Y}0gnt.̖Voe5چ1#gFZUg:H Ȥ'FA}'Fap0@ O!%~\)'waap R;$C^ ҨHq4Br?cXw`X9,R{6~ 8? |,"8٣cVEr/Skz&ZHi:'' g4KQeȓ l/'q1eN( ƃ|F,mVT;z$O~PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlR"-vEZT&gTY1Q/9Pp”xkU! m9 [Kb떺F/he3b&`TfB"𲀟I] խb1q8(_:b7to<4""/ވgɴH*Y{8~`^? y-kqMOG?PKDSY$ ppt/slides/_rels/slide1.xml.rels 0_%ݤADL{A$!٦$A/zqggg>v=HCM+ Winq8`B"%CaXZʦъ\ƨY*4,~g4W53/پĭ7.T4\bEԘ9POL -@qm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPKDS1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\ihI$ai=4{w]SRQ$?%5fLkx-Dƌ2g[BLT,7%6,o@} H,L ^ iшES.!d,1āBIЖ*MĤDrjMuqSFi0xyV u"ԹPK'.\jl;Iu$Pn>n6+'@'{]$m35T eq>G.sHgY7cޝ5H.R8:DEz+F9DR?c\ 95Vڙ2XZڜ2f$Rx6l@i=%ɿaPKDS}5GdocProps/core.xmlOO!ſʆ.5Fv{5o-'0ڭMzx4ox7'b6n3'oeyGmP>K"HEnsI0'[ (Mj V*;\>Z К[j(XH~ZM,8LWѦ i \ɽOf2}_s:ZP:mhe^}":eh.r1>)ﳇՒ5yYnV^L3']O1ohPKDSy%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<31)7ǒxLݍ0c~DP$ARE aD3EŝrS?VFR8 V ]]٣sRG/K$s'APW#ҫ@NRkw0J|` [A |Y+n#yL/=;m gciރjyKLVў=xdͲ+Ej$m#eSn23d yqH3w<o3:(h3ċ)l!EC>!>!%a0{;i!!9BCi i?8JpqOHPr1PKDS&ppt/_rels/presentation.xml.relsAN0Eb͞8)P!TrLmCjQTU~6?a Q;+*J`hm|o`^:b}diF<{ Ѧƅ^R*C˽T{"_咇L=ٶ?ޮi'zt 1" 8jU$7`:mN 0< ,E= E"gq12'Ot48g$Βg%Im9gq>2H/PKDSg[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+O$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKDSppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}wwf& am54i?_ãx :؉ VEU0 qh-VoCyn-0GiɈQ}'"_$Aj/EhOYHkzrX@íГ>&t'C45 ФzbZ=% j@5%~/9ZJQdA%lcH43U8t;+3~n6ƍ)R8 t̸6c_ Vn{deym>| ͇]B.] \ܽLZϳ ]"]z~8V=?\wYBcSV FUJ#,f>cס'  WxQo}&&5Q`U"[cb:_  >APR$[YPK"Tl4 ppt/slides/_rels/slide1.xml.rels0Dٻ-p0POДmb' μd{ WFsHi4-GuT7E)I<ўC=2eXq7G2+SȲ$3̀u&)kS dl4Jq@6*UW11XZ (]+SJcM^2sPK"T% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T{N,ppt/notesSlides/notesSlide1.xmlTn0~ EMBaT1Դ&Aiaa}>$nt7}Q#J70A@x.W)|~ZE3xs}%. :s!ׄa}!$V ŰGUB6 h<}F 7vxQMNDeDmT׍}6yN6i|<۵|Rx/Jfry(8f$3 Ebn@BKޯ)Ik@@_Oy?ꋠAa.t7q*MA=sR Z#"Հ 3#EyEn$yPN)5-Y93}@?!9P(jY&W΅-N6SN/Fw_f fȰzpϰ] N@k3W ]l| ׾3X}&-{N>\lr~be},%-PK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"TG+߹[Content_Types].xml͗n0 _DlclpHZ$J r&eP-7mĿXv$`P7 U$뿏jm댖GKSD}ǘ p( f$4y'zJ"Ha:0 auiϵEȑY6v:Ϲ~VhyfkTh{F0"o XQ2Rcir e ii/ mhL Xzg˓8(h$ju"ԕP.B\q"Cpjg} ˀy:G&sLKti.ܩ5aQ>!]‚qCX.3.mC,2\Uq$7  \W%c#\6b5(jZrsslD,}PK"T-]docProps/core.xmlN0_%=q⪀=z@ !qmk5mH8iR7vv65 T%+,{ВQa=xG!Km&PhCĵT v\0)!r#ǽa&Gtbt߾ Ђ ^ *\EGqAM`uE74?ކ2!r#Z Ul5bZ]^x=Bڐly;PxzX/S# 2KcQ?4+HIH^VyIB|Ng_5gCz8'#PK"Ty%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<$]gմTRqᅶU1TI^~T%T`Ȃ픪--- ny8 m~~DgDfuZAH,Egv'Չʳ9 Yb-|f/NkU?w{mV{x ;}=7ꭢ1~0=6AGģ L=нZ7F3mhV+a1%-GCpAma+3daLɟjYF<ڼ\emKYUG =%n(8Ѧ'XY̠ JZ+=`fPK"Tzìm!ppt/notesMasters/notesMaster1.xmlYn8}_`A>.\ݨ:EDm hSӤEKv(%8M% Ùјy⺢᢬EX^% Y/-!1+07D/~y3`$5p 01C{.e3pIų! Ʀ5W>s ?:FNKf|tZΗas 2[n[!A9uߑU׀z`gRn]a:'3v;XKjh.9!JbW/y3n.x› >m1\A;͜nR+8;gFă) BQ:r-Skm>{m>?1 8nt^\A.(ɼJV)Es^ aSXt,:Գ[3?ߖms6@^QI>4\ȗ,% mNr2_ ٙ6ףQxJp`m11Bl_P7G&[#5]e@JZz 5m+b\g-;yCӂŠ ̱Fޏ̦d.5#È,C!m}6̄ IP? aJv'?Y?4b?!tø $a>fc`eY-9y;D%SJ0[% z诡i 'Xc@8Ak| @ PP' (ZI2h bj  PHs(+T4@ 0>*/~'џPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlRlթ4m4U]?`[ÀxοMӴԇ=sfҭL('nOo xf5PK\Y"IC;ܞm갱KC,EP$31_]/ۖ;M QacM+udIEٯJrȊ^\+J];%WQQ́V4} .s f& am94i~ãx :؉ UEU0 qh-VoC ,`Ғ<|ndYR,5gy-NSy$tyVo1wQ\ \2mV`=c=}lym;]0D^\Smwq*}Q yߖIeLYgzo>м(CYOӏO/3h32԰_Tk A4]dz-P@#PK"TpFppt/slides/slide2.xmlTn!{JU:j&/Qj8p{qTԗ3 3bo&!*g{zXRV8쾧?wwQKP;!%1Dž`s˰g2W0].|8픀['^ TIhPf͟D)š\>_~ׁ(PbRΌk;֊ưo%]0yF{d)}(#˛0%"8bK\UjrfHCS%jR&4r鋓|uw:M:eu1YJC. ˣ00CMd.!dH*PEaSZdc  Ր\kJN'+A+ '^IJ$cͱ[YPK"Tl4 ppt/slides/_rels/slide1.xml.rels0Dٻ-p0POДmb' μd{ WFsHi4-GuT7E)I<ўC=2eXq7G2+SȲ$3̀u&)kS dl4Jq@6*UW11XZ (]+SJcM^2sPK"T% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T{N,ppt/notesSlides/notesSlide1.xmlTn0~ EMBaT1Դ&Aiaa}>$nt7}Q#J70A@x.W)|~ZE3xs}%. :s!ׄa}!$V ŰGUB6 h<}F 7vxQMNDeDmT׍}6yN6i|<۵|Rx/Jfry(8f$3 Ebn@BKޯ)Ik@@_Oy?ꋠAa.t7q*MA=sR Z#"Հ 3#EyEn$yPN)5-Y93}@?!9P(jY&W΅-N6SN/Fw_f fȰzpϰ] N@k3W ]l| ׾3X}&-{N>\lr~be},%-PK"T1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\f TUNʜTMUސNVp _ PK"Ty%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<!i=2X0yܗE%3= 1Uy!~_ R8Zqͥݚ*mL f0c16mUت5aLJZs}vCLwLժ`b& g7E}v-?T^67T0 SF@0" W/+W%<ܫ(n;k=iAͶ= \vpFېK˧bF^6i9_ѭ0K7 s|:66mv/ sNx5$Q)ķ'q:4`[Ɍ 7*O:TBa?[m|peRt]")p;RI(`޹4w,20_Rӓt ɛEB.LNx+8#at8?Q0 ;gR@iHQ)R=$ po' sHP.4R%}G;\PK"TI ppt/_rels/presentation.xml.relsN _poiŌƘ|lO["^2MB ^s~|4Ӫ()ݘVӗŒn֫'P‡EF4r:xoofQ`a,p7 J3+7r\AdrmM`/ަdwyA3W0T`(\cVEp':IqB ЃeYG:\>:b$ENӉYG:eN./^<(HLd% o1"'^ɲLDf PK"Tg[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+OaLɟjYF<ڼ\emKYUG =%n(8Ѧ'XY̠ JZ+=`fPK"Tzìm!ppt/notesMasters/notesMaster1.xmlYn8}_`A>.\ݨ:EDm hSӤEKv(%8M% Ùјy⺢᢬EX^% Y/-!1+07D/~y3`$5p 01C{.e3pIų! Ʀ5W>s ?:FNKf|tZΗas 2[n[!A9uߑU׀z`gRn]a:'3v;XKjh.9!JbW/y3n.x› >m1\A;͜nR+8;gFă) BQ:r-Skm>{m>?1 8nt^\A.(ɼJV)Es^ aSXt,:Գ[3?ߖms6@^QI>4\ȗ,% mNr2_ ٙ6ףQxJp`m11Bl_P7G&[#5]e@JZz 5m+b\g-;yCӂŠ ̱Fޏ̦d.5#È,C!m}6̄ IP? aJv'?Y?4b?!tø $a>fc`eY-9y;D%SJ0[% z诡i 'Xc@8Ak| @ PP' (ZI2h bj  PHs(+T4@ 0>*/~'џPKURocB ppt/media/image1.pngUT$~`ux  sb``p b``>$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}(ppt/presProps.xmlUTux PK"T*ppt/theme/theme2.xmlPK!:~"T10ppt/theme/theme1.xmlUTux PK!ђ7-86ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux PK!ђ7-Q7ppt/slideLayouts/_rels/slideLayout16.xml.relsUTux PK!ђ7,j8ppt/slideLayouts/_rels/slideLayout1.xml.relsUTux PK!ђ7,9ppt/slideLayouts/_rels/slideLayout7.xml.relsUTux PK!ђ7,:ppt/slideLayouts/_rels/slideLayout6.xml.relsUTux PK!ђ7-;ppt/slideLayouts/_rels/slideLayout10.xml.relsUTux PK!ђ7-<ppt/slideLayouts/_rels/slideLayout11.xml.relsUTux PK!ђ7,=ppt/slideLayouts/_rels/slideLayout9.xml.relsUTux PK!ђ7,>ppt/slideLayouts/_rels/slideLayout8.xml.relsUTux PK!ђ7,@ppt/slideLayouts/_rels/slideLayout3.xml.relsUTux PK!ђ7,,Appt/slideLayouts/_rels/slideLayout2.xml.relsUTux PK!ђ7-DBppt/slideLayouts/_rels/slideLayout14.xml.relsUTux PK!ђ7-]Cppt/slideLayouts/_rels/slideLayout15.xml.relsUTux PK!ђ7-vDppt/slideLayouts/_rels/slideLayout13.xml.relsUTux PK!ђ7-Eppt/slideLayouts/_rels/slideLayout12.xml.relsUTux PK!ђ7,Fppt/slideLayouts/_rels/slideLayout4.xml.relsUTux PK!ђ7,Gppt/slideLayouts/_rels/slideLayout5.xml.relsUTux PK! L|!Hppt/slideLayouts/slideLayout7.xmlUTux PK!3Y "Kppt/slideLayouts/slideLayout11.xmlUTux PK!Ex"Oppt/slideLayouts/slideLayout10.xmlUTux PK!z&!Tppt/slideLayouts/slideLayout6.xmlUTux PK!=[!Wppt/slideLayouts/slideLayout4.xmlUTux PK!im "c[ppt/slideLayouts/slideLayout12.xmlUTux PK!h "appt/slideLayouts/slideLayout13.xmlUTux PK!s@y#!eppt/slideLayouts/slideLayout5.xmlUTux PK!=t!%kppt/slideLayouts/slideLayout1.xmlUTux PK!f\$ "{pppt/slideLayouts/slideLayout17.xmlUTux PK!(D "/tppt/slideLayouts/slideLayout16.xmlUTux PK!)J.  !wppt/slideLayouts/slideLayout2.xmlUTux PK!;FdvU&"{ppt/slideLayouts/slideLayout14.xmlUTux PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux PK!!dppt/slideLayouts/slideLayout3.xmlUTux PK!K%!ppt/slideLayouts/slideLayout8.xmlUTux PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux PK!x%,docProps/app.xmlUTux PK99Vpandoc-3.1.3/test/pptx/speaker-notes-afterheader/0000755000000000000000000000000007346545000020155 5ustar0000000000000000pandoc-3.1.3/test/pptx/speaker-notes-afterheader/input.native0000644000000000000000000000035407346545000022526 0ustar0000000000000000[Header 1 ("here-is-a-single-header",[],[]) [Str "Here",Space,Str "is",Space,Str "a",Space,Str "single",Space,Str "header"] ,Div ("",["notes"],[]) [Para [Str "and",Space,Str "here",Space,Str "are",Space,Str "some",Space,Str "notes"]]] pandoc-3.1.3/test/pptx/speaker-notes-afterheader/output.pptx0000644000000000000000000007360107346545000022441 0ustar0000000000000000PK"T.{}Ippt/slides/slide1.xmlSN0w ƙ4d!{vRrb潉s}3hEzAZSŒ06k{87kW,55btcAtyXXsGt5 VbdKC~~۶R &G:Œ<(%eb<@Lֽ/CjJ 2S]M_,a?ZӍPS\O0D"JTEWgv28+ UdT@οͤ[[(*<vCq)Npk1yûDyBdsWY4 ~lj50ab_7px>uKw&PK"T  ppt/slides/_rels/slide1.xml.rels0Dٻ-p0POДmb;;;ϡ't^! JniC_!:|'D{]vϘScQMc B]ˬw"˒d<9NT_M(G#uX`W5dck1pt/L@:ZO4mzA(^PK"T/ppt/notesSlides/notesSlide1.xmlT[o0+ߩ U0U*pͷنCb9W7[iqvD!Fr4  i ,̈渶V1E @8[%5pI8#n3˪j Ś1Fkԍ2):'`\%XF=ivEZ`o5#A9#ZZx(7VIm<ͱ{V╰H]_Oy?IEQa.v7^BdM ԒQv` o `Fb䣴4XQPDUd򻪑)W۰=o&6ByP?G{ ww"vGYvB|9tČ]xRaq6a2Q7DNB\ h^SQ4 >#9t Πvűzpcv%5t"W ~el:wegП;٧Ar&I6z?_ ߕ1jx" DҬ"@PK"Tֿ)*ppt/notesSlides/_rels/notesSlide1.xml.rels 0_%ݤAD^D 6?dPPK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"Tm?-[Content_Types].xml͗n0 _DlclpHZ$J r&eP-7mĿXv$`P7 U$뿏jm댖GKSD}ǘ p( f$4y'zJ"Ha:0 auiϵEȑY6v:Ϲ~VhyfkTh{F0"o XQ2Rcir e ii/ mhL Xzg˓8(h$ju"ԕP.B\q"Cpjg} ˀy:G&sLKti.ܩ5aQ>!]‚qCX.3.mC,2\Uq$7  \W%c#\6b5jzPK"TmȁGdocProps/core.xmlN0_%=q⪀$=z "7޶V i7iS*(H /MTհJB*F(hT5mhAh Qp+v&+.:Nh$/3&ωψ&O-O"2#*wy%!YHENg1r?#/#dx}.:U9ׇn׆k~}&g^o[Ec$SAih4=4aDģ L=нZ7F3mhV+a1-GCpAma2daLɟjYF<ڼ\emKYUG =%n(8Ѧ'XY̠ JZ+=`fPK"Tzìm!ppt/notesMasters/notesMaster1.xmlYn8}_`A>.\ݨ:EDm hSӤEKv(%8M% Ùјy⺢᢬EX^% Y/-!1+07D/~y3`$5p 01C{.e3pIų! Ʀ5W>s ?:FNKf|tZΗas 2[n[!A9uߑU׀z`gRn]a:'3v;XKjh.9!JbW/y3n.x› >m1\A;͜nR+8;gFă) BQ:r-Skm>{m>?1 8nt^\A.(ɼJV)Es^ aSXt,:Գ[3?ߖms6@^QI>4\ȗ,% mNr2_ ٙ6ףQxJp`m11Bl_P7G&[#5]e@JZz 5m+b\g-;yCӂŠ ̱Fޏ̦d.5#È,C!m}6̄ IP? aJv'?Y?4b?!tø $a>fc`eY-9y;D%SJ0[% z诡i 'Xc@8Ak| @ PP' (ZI2h bj  PHs(+T4@ 0>*/~'џPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlRsU*M3M2250ab_7px>uKw&#9t Πvűzpcv%5t"W ~el:wegП;٧Ar&I6z?_ ߕ1jx" DҬ"@PK"Tֿ)*ppt/notesSlides/_rels/notesSlide1.xml.rels 0_%ݤAD^D 6?dPPK"T1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\x]n{032U-c.. ihG5BPXL#a')4]%0+P#-|mt-Shy6n,;¨Z!Jɳ"[| X7cmD=Hc"%%fH, Xn n 2 hcon.Өgk}j\zIu#UGFK+/|Y^*?BK*/g˃j2UhBjxϑҳ_,AS޽kBg)$Ci8aI{+Բ!}bo 9q;/dʹH.%j'TW%c)_mWj~7_pޫ_D,ۦPK"T(GdocProps/core.xml_O ſJ{ ev=ib7wY@}{Y.ٛo\ι?QQYV*f?US DŽ,>F0b"9LkSwqq;{!r#g`&" ۷=@ -h01(u+ZœQǠ&cuE)?_QseBFj*)XT2"N2$媺L4xAf) riF % PʖKvG\@tACPK"Ty%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<!i }!Nh*#xjˀWZ,֖Oe|fs#P bʌY7VcB ߈ bRRI?ؤcR\Է'#RV9%uB֢fWa ͌vs^KPuܔ2^r)$51P{UZ- p_H[`7Nnn"ܴ9$Ϲ3FA猎s sF^xq {HԧR9$ߧR=$ n' $9$G7m GIQ %\PK"T(Q[ppt/_rels/presentation.xml.relsN!_pw٭Z)Ř`b>Dվm ?_|e MUSFV-ݬWϠƎ0(Hbc,F*ēQ`,}Ϝ%{m˩߶ Jv]$[13OU Pc6Ut,Ia,Bx$#uUyOQLTh4Duӹ)ɅM 4$$bdY$MX8KB|,$MlKPK"Tg[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+OaLɟjYF<ڼ\emKYUG =%n(8Ѧ'XY̠ JZ+=`fPK"Tzìm!ppt/notesMasters/notesMaster1.xmlYn8}_`A>.\ݨ:EDm hSӤEKv(%8M% Ùјy⺢᢬EX^% Y/-!1+07D/~y3`$5p 01C{.e3pIų! Ʀ5W>s ?:FNKf|tZΗas 2[n[!A9uߑU׀z`gRn]a:'3v;XKjh.9!JbW/y3n.x› >m1\A;͜nR+8;gFă) BQ:r-Skm>{m>?1 8nt^\A.(ɼJV)Es^ aSXt,:Գ[3?ߖms6@^QI>4\ȗ,% mNr2_ ٙ6ףQxJp`m11Bl_P7G&[#5]e@JZz 5m+b\g-;yCӂŠ ̱Fޏ̦d.5#È,C!m}6̄ IP? aJv'?Y?4b?!tø $a>fc`eY-9y;D%SJ0[% z诡i 'Xc@8Ak| @ PP' (ZI2h bj  PHs(+T4@ 0>*/~'џPKURocB ppt/media/image1.pngUT$~`ux  sb``p b``>$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}߾'_ׂ/m:|*bt0.W3f,wP&f1R@r$}fa^lt?m_,5cH㒮I"',j]F^FmayҊ![eQ !>̃"rxyH~H|oo~PK"T-͆fppt/slides/slide2.xmlXn0}+GBT*PILkنM{َ N?}}'Ljۻ"`$ "z?fw7@29@C/U*@(gH3p!_w`~q~$$S2TD`)S*Z~J\`{Le+mXl(Y$x =@w.-xaYhP$"3.COOh&q@TF(q;J* %6&S̈́.*q7sXit™āg"rcc"[Sӯ'3Jͺw?|sWyL55Bpc^tRsb4Z<֬%bӼ7tm Ê&d,wE@zIjCwR 7õ)%lZ 9b/%؂=#cM6,N1g~-Y9 _:- ,@{łw7VXd˻ "ƔjPLa%0^f{>J [%ȥԠPRPvZ6mR>)-5}g?'xo>M 9}HW ~ /N 2+o PK"T6CIE ppt/slides/_rels/slide1.xml.relsj1_%})"و tUBr'RT.\sOfۉ|aL;-m^9wWOD.4Hy1`,Hte3hE.c,yY4o,3$[!nU d l? F˳ET4ϹĊ1stW 1ZL43OuE+-\2B-=}`X]PK"T+? ppt/slides/_rels/slide2.xml.rels0Dٻ-r0POДmb' μd=+9i4-Guȳ"D$hϡ Axj,iDk)Zdi[f:5W{ dl4Jq@6*UW11XZ (]+SJcM^2sPK"T  ppt/slides/_rels/slide3.xml.rels 0E%ޤ>nD(!Aq-tܹswݑ;04V4l"?a'brV@҉ ݖ ["PФMm1aNțh-l0ƙ8<mZI[k4qNUxO+|C}dZTM-flp~WȾвpPK"T!l0ppt/notesSlides/notesSlide1.xmlTn ~ĽKdkխ4*UYԴ@TN9c'n ZpcVJf0@$QE\_TY )BL`{4ޖ+#GS jwDp4 >#+ xsN;EIƱڲҶ˦ɦ >Ml8 O6y[PQO APkiYPt"ֹa@AOYQP&Sޤ\G]+F5PmxE``1av0~P׿#߶8f:wig:-Q2O.h1InOry\.?_;9y;H|a-x"@DZIq|PK"T g3&ppt/notesSlides/notesSlide2.xmlTn0~!E U0U*9h>6,lڻώcH;qωonF(] 3׼L2L0DuSX#tVX!Ur&x09%(܋l7" TWԡTD6m+H[۵|Vl_ȵjëZ:@1#)u.ϟ[M28i n&VC"$f=wV}=Us( AG78:'ᒀ5͉@CG}Ӏ K #yyI$wyM^) 5X 0򨭧>Q j?>*GYM/eb-q\j1JI=m/f[a茶n%8鮺#L !+a<[R_Z>FQ{9g 2DpAگdv\Gd<ƣ$~Ga<͇2 ,n)v/$ޅ{R5VL{ׁN oPK"T2Dppt/notesSlides/notesSlide3.xmlUmo0+SE UeT1T:Gog :]h ƖJw$SY)??:#|=҉T,Mh tBej/m+eu~krÃNg"h)qoWUVJtEmA_Q ؒgaj_^ꅩ 2HR)ƈ4^u\vIʈ0{yhbm=pXgtu+I$=8FgW80mt?iV<&3.;ݨs4\N{dڛfx뗞a~Nãm-|+)-GNV>PK"Tֿ)*ppt/notesSlides/_rels/notesSlide1.xml.rels 0_%ݤAD^D 6?dPPK"T>*ppt/notesSlides/_rels/notesSlide2.xml.rels 0_%ݤADЃ 6?dPB<ۻ #$Nָ^_`84@,80B*>NU)AQTES&kZ i+`G_ؾƝW.͜43P_ۨxEq>!%:_$T~7OPK"TdO*ppt/notesSlides/_rels/notesSlide3.xml.rels 0_%ݤU^DEBm(Ѓ;3U}a$㝄iI8vԛꈃJ9A # }Ja-">Z;ż("~3`dFB7s`G_ؾmƭW.M43P_X &,|B:(JGuQToPK"Ti\??ppt/media/image1.jpgweX^.tKww# XbE钐\iNYJ@S_o}<̙w杧5:L ;'4@ a@`0cSSQQSPг3вQP01rprpS3 s sqs KKECAmO]l-A$`<_00…rL aaba@$X`a2{8Hrn] Q+Il6ߧzSb{? $eVxZ$Tni?B$! ak!$Y[ bjΘ*K6kfjOAWd|(_#˲Mj5EV꿮-\\#ψh*lqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"TA[Content_Types].xml͘n0_q}QIi qٓy&P@=F .?e:0܏a*։P0|y흅€ Ta8E4x HP2VrM;O', Aasp4 e|t઴C CnL&b̊UB6xU ga¸ !L+ #eϊ'nK`6Mywkd"b $r!I(`.1\Fw|g誃4Ƃ{a.wT^GC|:GS|:w{ZꠛYjoBL6(dl^w '2NRxkc\d:DEz+VŠFek !~{׮orP;/e\uq$ڒ f.࣓c)[mZݴiwcMu7 j 5&j!b߅PK"TmȁGdocProps/core.xmlN0_%=q⪀$=z "7޶V i7iS*8` 2eYLy=>$]gմTRqᅶU1TI^~T%T`Ȃ픪--- .y8 m~&ωψ&O-O"2#*wy%!YHENg1rzxT[<>_rElߪn |={߿ wbw+h=o<~Hbczhd*(-q45=4AGģ L=нZ7F3mhV+a1ۖapAm@1ѕ(+Wu*c-P6~-3 m g21ܔK,3  ?ކ[Q2dJɉƓO*{H5Ȥ ⌜;8CyFnvC\$)r `pH t!{  IwA )KxqO $9º9ʪEߓEt\w4d9KWl4M/Q3 "f"O|R^4c]W**I;q砺ՒȸaM.ޑUq=%0wG$ۧ#peN+:M A}<@8 PK"TYgppt/_rels/presentation.xml.relsN!_pwjc҃Y վ-4q~f~ ,߃D;NhEqUmx$!8Jxs6I|mG RO=Ѧnu +`lCVEpÈ]NR\_bIĜ{dIFzF9vk9RRbXp'o"q]N.%?$Yd% [:dc~PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"TX$,ppt/notesMasters/_rels/notesMaster1.xml.rels 0 ;mDd."*Juŭ-mvqK R7y"/ 8ˡjz8I^N"#4bo8ɔCq4>aLɟjYF<ڼ\emKYUG =%n(8Ѧ'XY̠ JZ+=`fPK"Tzìm!ppt/notesMasters/notesMaster1.xmlYn8}_`A>.\ݨ:EDm hSӤEKv(%8M% Ùјy⺢᢬EX^% Y/-!1+07D/~y3`$5p 01C{.e3pIų! Ʀ5W>s ?:FNKf|tZΗas 2[n[!A9uߑU׀z`gRn]a:'3v;XKjh.9!JbW/y3n.x› >m1\A;͜nR+8;gFă) BQ:r-Skm>{m>?1 8nt^\A.(ɼJV)Es^ aSXt,:Գ[3?ߖms6@^QI>4\ȗ,% mNr2_ ٙ6ףQxJp`m11Bl_P7G&[#5]e@JZz 5m+b\g-;yCӂŠ ̱Fޏ̦d.5#È,C!m}6̄ IP? aJv'?Y?4b?!tø $a>fc`eY-9y;D%SJ0[% z诡i 'Xc@8Ak| @ PP' (ZI2h bj  PHs(+T4@ 0>*/~'џPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlR*ppt/notesSlides/_rels/notesSlide2.xml.relsPK"TdO*ppt/notesSlides/_rels/notesSlide3.xml.relsPK"Ti\?? ppt/media/image1.jpgPK"T.!Tppt/slideMasters/slideMaster1.xmlPK"Tr,[ppt/slideMasters/_rels/slideMaster1.xml.relsPK"TA ][Content_Types].xmlPK"TmȁG_docProps/core.xmlPK"Ty%a`docProps/custom.xmlPK"TQ a_rels/.relsPK"T5v[,bppt/presentation.xmlPK"TYgGeppt/_rels/presentation.xml.relsPK"T0K fppt/viewProps.xmlPK"TX$,Yhppt/notesMasters/_rels/notesMaster1.xml.relsPK"Tzìm!Vippt/notesMasters/notesMaster1.xmlPK"T(oppt/tableStyles.xmlPK"T }.oppt/presProps.xmlPK"Tqppt/theme/theme2.xmlPK"T mu!wppt/theme/theme1.xmlPK"Tђ7-&~ppt/slideLayouts/_rels/slideLayout11.xml.relsPK"Tђ7-'ppt/slideLayouts/_rels/slideLayout10.xml.relsPK"Tђ7,(ppt/slideLayouts/_rels/slideLayout9.xml.relsPK"Tђ7,(ppt/slideLayouts/_rels/slideLayout8.xml.relsPK"Tђ7,(ppt/slideLayouts/_rels/slideLayout7.xml.relsPK"Tђ7,(ppt/slideLayouts/_rels/slideLayout6.xml.relsPK"Tђ7,(ppt/slideLayouts/_rels/slideLayout5.xml.relsPK"Tђ7,(ppt/slideLayouts/_rels/slideLayout4.xml.relsPK"Tђ7,(ppt/slideLayouts/_rels/slideLayout3.xml.relsPK"Tђ7,(ppt/slideLayouts/_rels/slideLayout2.xml.relsPK"Tђ7,(ppt/slideLayouts/_rels/slideLayout1.xml.relsPK"T'v!(ppt/slideLayouts/slideLayout9.xmlPK"TJI,!ݍppt/slideLayouts/slideLayout8.xmlPK"TSd{g!Вppt/slideLayouts/slideLayout7.xmlPK"T}!ppt/slideLayouts/slideLayout6.xmlPK"TE˧:!?ppt/slideLayouts/slideLayout5.xmlPK"T?N!Wppt/slideLayouts/slideLayout4.xmlPK"T6\#!ppt/slideLayouts/slideLayout3.xmlPK"TD9Bi !7ppt/slideLayouts/slideLayout2.xmlPK"TkO ' "ߪppt/slideLayouts/slideLayout11.xmlPK"TF "ۮppt/slideLayouts/slideLayout10.xmlPK"To@h)!ppt/slideLayouts/slideLayout1.xmlPK"T%1,odocProps/app.xmlPK33bpandoc-3.1.3/test/pptx/speaker-notes-afterseps/templated.pptx0000644000000000000000000017604407346545000022607 0ustar0000000000000000PK"Tyq[ppt/slides/slide1.xmlTr }W0Hv亚8^Lg$Ӹh0/. ltiw9gnvDnjQWL7BscqnoLd Uq罩 q=u#m=ږ4nE/ɸ(B޾^V/{|jb`Nt3;hDfa9[bm<~<[$#E{>dK$thInA%!weGa=f|6 ;p`!+ʵ⣟őp C_[ 49?wT3JNGR;!eldk/9_@y=낹0d?!ǭnarM7gq9)gET.g,N73Mb{zXQ06e9'ĕ v?T u6IB U&];dE^Oz&w{;YUn_,OiUVX*VEԁEoP*yLxjैfOC4lmdF V +dCNN'I|fN>%@aimKZx2T.Bwo}5VׄeZ,Xљ6tQs:?Y,<%ƤRphz4 /szc`qfǂ,A\£".Eyτ]VEgzZ]^?Z?V/[o{/lflk|3_u2Kt\48M^Y;)i'Q) ;˾VC#*-ZL>f1c7%gR {!x$)+P@B/B'3f IbSt?(\#f˓PK"Tyijppt/slides/slide3.xml]o  ~%KiTj"_:L~*/}0>"[Sӯ'3Jͺw?|sWyL55Bpc^tRsb4Z<֬%bӼ7tm Ê&d,wE@zIjCwR 7õ)%lZ 9b/%؂=#cM6,N1g~-Y9 _:- ,@{łw7VXd˻ "ƔjPLa%0^f{>J [%ȥԠPRPvZ6mR>)-5}g?'xo>M 9}HW ~ /N 2+o PK"Te|E ppt/slides/_rels/slide1.xml.relsj1_%})"و tUBr'RT.\sOfۉ|aL;-m^9wWOD.4Hy1`,Hte3hE.c,yY4o,3$[!nU d l? F˳ET4ϹĊ1stW 1ZL43OuE+-\2B=}`X]PK"T+? ppt/slides/_rels/slide2.xml.rels0Dٻ-r0POДmb' μd=+9i4-Guȳ"D$hϡ Axj,iDk)Zdi[f:5W{ dl4Jq@6*UW11XZ (]+SJcM^2sPK"T  ppt/slides/_rels/slide3.xml.rels 0E%ޤ>nD(!Aq-tܹswݑ;04V4l"?a'brV@҉ ݖ ["PФMm1aNțh-l0ƙ8<mZI[k4qNUxO+|C}dZTM-flp~WȾвpPK"T!l0ppt/notesSlides/notesSlide1.xmlTn ~ĽKdkխ4*UYԴ@TN9c'n ZpcVJf0@$QE\_TY )BL`{4ޖ+#GS jwDp4 >#+ xsN;EIƱڲҶ˦ɦ >Ml8 O6y[PQO APkiYPt"ֹa@AOYQP&Sޤ\G]+F5PmxE``1av0~P׿#߶8f:wig:-Q2O.h1InOry\.?_;9y;H|a-x"@DZIq|PK"T g3&ppt/notesSlides/notesSlide2.xmlTn0~!E U0U*9h>6,lڻώcH;qωonF(] 3׼L2L0DuSX#tVX!Ur&x09%(܋l7" TWԡTD6m+H[۵|Vl_ȵjëZ:@1#)u.ϟ[M28i n&VC"$f=wV}=Us( AG78:'ᒀ5͉@CG}Ӏ K #yyI$wyM^) 5X 0򨭧>Q j?>*GYM/eb-q\j1JI=m/f[a茶n%8鮺#L !+a<[R_Z>FQ{9g 2DpAگdv\Gd<ƣ$~Ga<͇2 ,n)v/$ޅ{R5VL{ׁN oPK"T2Dppt/notesSlides/notesSlide3.xmlUmo0+SE UeT1T:Gog :]h ƖJw$SY)??:#|=҉T,Mh tBej/m+eu~krÃNg"h)qoWUVJtEmA_Q ؒgaj_^ꅩ 2HR)ƈ4^u\vIʈ0{yhbm=pXgtu+I$=8FgW80mt?iV<&3.;ݨs4\N{dڛfx뗞a~Nãm-|+)-GNV>PK"Tֿ)*ppt/notesSlides/_rels/notesSlide1.xml.rels 0_%ݤAD^D 6?dPPK"T>*ppt/notesSlides/_rels/notesSlide2.xml.rels 0_%ݤADЃ 6?dPB<ۻ #$Nָ^_`84@,80B*>NU)AQTES&kZ i+`G_ؾƝW.͜43P_ۨxEq>!%:_$T~7OPK"TdO*ppt/notesSlides/_rels/notesSlide3.xml.rels 0_%ݤU^DEBm(Ѓ;3U}a$㝄iI8vԛꈃJ9A # }Ja-">Z;ż("~3`dFB7s`G_ؾmƭW.M43P_X &,|B:(JGuQToPK"Ti\??ppt/media/image2.jpgweX^.tKww# XbE钐\iNYJ@S_o}<̙w杧5:L ;'4@ a@`0cSSQQSPг3вQP01rprpS3 s sqs KKECAmO]l-A$`<_00…rL aaba@$X`a2{8Hrn] Q+Il6ߧzSb{? $eVxZ$Tni?B$! ak!$Y[ bjΘ*K6kfjOAWd|(_#˲Mj5EV꿮-\\#ψh*lqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK"T1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\?L̂X'hbNLJ߃r:~XpMUn.c.^.̵iSfxS`G)BP8\#aΗ7]%0*&!7&1Gf(5+|EdYq a܏.Myll)/%܊{nK[m K"XJ2 gI 197˨_%j5跘.e3}G#F^RG(?7e* ,|_mR{/҅g{B0y~ש?e0uCTb(a"hbm92>uteK&jXmɅKݱ>6U~a#~D9+Vf%0kAjM!bşPK"T(GdocProps/core.xml_O ſJ{ ev=ib7wY@}{Y.ٛo\ι?QQYV*f?US DŽ,>F0b"9LkSwqq;{!r#g`&" ۷=@ -h01(u+ZœQǠ&cuE)?_QseBFj*)XT2"N2$媺L4xAf) riF % PʖKvG\@tACPK"Ty%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<!ip=2X0yܗE%3= 1Uy!~_ R8Zqͥݚ*mL f0c16mUxTk+6)Ø;TUsŶ%xMToZc{v-?T^67T0 SF@0" W/+W%:ܫ(n;k=i}ufO027n!q\tʻ(6ma {0jc: j'P;GWCkbHKw0J|3[}@m fo̸}CnI-W{,5{p(JK!{#ǟB; f{Js"sUʁ0.9Q8=)L(LY$Ϲ3FA猎s sF^xq {H=5!~{)n %CJ v@J;d NH!Q҇{ {CPK"T8gppt/_rels/presentation.xml.relsN _poi;ӌƘ|-%T,dd?',߃D;NhEqUmx$8(Gqケ' m@VہPڎ?X.9zMC45F۽su '`lCVEpÈ]NR\_bIĜ9luXˑjUt:w9<{|"1IJF[|(t9!veF 21W?PK"Tg[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+OaLɟjYF<ڼ\emKYUG =%n(8Ѧ'XY̠ JZ+=`fPK"Tzìm!ppt/notesMasters/notesMaster1.xmlYn8}_`A>.\ݨ:EDm hSӤEKv(%8M% Ùјy⺢᢬EX^% Y/-!1+07D/~y3`$5p 01C{.e3pIų! Ʀ5W>s ?:FNKf|tZΗas 2[n[!A9uߑU׀z`gRn]a:'3v;XKjh.9!JbW/y3n.x› >m1\A;͜nR+8;gFă) BQ:r-Skm>{m>?1 8nt^\A.(ɼJV)Es^ aSXt,:Գ[3?ߖms6@^QI>4\ȗ,% mNr2_ ٙ6ףQxJp`m11Bl_P7G&[#5]e@JZz 5m+b\g-;yCӂŠ ̱Fޏ̦d.5#È,C!m}6̄ IP? aJv'?Y?4b?!tø $a>fc`eY-9y;D%SJ0[% z诡i 'Xc@8Ak| @ PP' (ZI2h bj  PHs(+T4@ 0>*/~'џPKURocB ppt/media/image1.pngUT$~`ux  sb``p b``>$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}*ppt/notesSlides/_rels/notesSlide2.xml.relsPK"TdO*ppt/notesSlides/_rels/notesSlide3.xml.relsPK"Ti\??"ppt/media/image2.jpgPK"T1G# @!Tppt/slideMasters/slideMaster1.xmlPK"TjA/ ,\ppt/slideMasters/_rels/slideMaster1.xml.relsPK"T=2MBD^[Content_Types].xmlPK"T(Gl`docProps/core.xmlPK"Ty%adocProps/custom.xmlPK"TQ pb_rels/.relsPK"T)+/ cppt/presentation.xmlPK"T8geppt/_rels/presentation.xml.relsPK"Tg[gl!.gppt/viewProps.xmlPK"TX$,hppt/notesMasters/_rels/notesMaster1.xml.relsPK"Tzìm!ippt/notesMasters/notesMaster1.xmlPKURocB oppt/media/image1.pngUT$~`ux PK!rppt/tableStyles.xmlUTux PK! 0sppt/presProps.xmlUTux PK"Tuppt/theme/theme2.xmlPK!:~"T{ppt/theme/theme1.xmlUTux PK!ђ7-Łppt/slideLayouts/_rels/slideLayout17.xml.relsUTux PK!ђ7-ނppt/slideLayouts/_rels/slideLayout16.xml.relsUTux PK!ђ7,ppt/slideLayouts/_rels/slideLayout1.xml.relsUTux PK!ђ7,ppt/slideLayouts/_rels/slideLayout7.xml.relsUTux PK!ђ7,'ppt/slideLayouts/_rels/slideLayout6.xml.relsUTux PK!ђ7-?ppt/slideLayouts/_rels/slideLayout10.xml.relsUTux PK!ђ7-Xppt/slideLayouts/_rels/slideLayout11.xml.relsUTux PK!ђ7,qppt/slideLayouts/_rels/slideLayout9.xml.relsUTux PK!ђ7,ppt/slideLayouts/_rels/slideLayout8.xml.relsUTux PK!ђ7,ppt/slideLayouts/_rels/slideLayout3.xml.relsUTux PK!ђ7,ppt/slideLayouts/_rels/slideLayout2.xml.relsUTux PK!ђ7-эppt/slideLayouts/_rels/slideLayout14.xml.relsUTux PK!ђ7-ppt/slideLayouts/_rels/slideLayout15.xml.relsUTux PK!ђ7-ppt/slideLayouts/_rels/slideLayout13.xml.relsUTux PK!ђ7-ppt/slideLayouts/_rels/slideLayout12.xml.relsUTux PK!ђ7,5ppt/slideLayouts/_rels/slideLayout4.xml.relsUTux PK!ђ7,Mppt/slideLayouts/_rels/slideLayout5.xml.relsUTux PK! L|!eppt/slideLayouts/slideLayout7.xmlUTux PK!3Y "8ppt/slideLayouts/slideLayout11.xmlUTux PK!Ex"Hppt/slideLayouts/slideLayout10.xmlUTux PK!z&!5ppt/slideLayouts/slideLayout6.xmlUTux PK!=[!>ppt/slideLayouts/slideLayout4.xmlUTux PK!im "ppt/slideLayouts/slideLayout12.xmlUTux PK!h "ppt/slideLayouts/slideLayout13.xmlUTux PK!s@y#!8ppt/slideLayouts/slideLayout5.xmlUTux PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux PK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux PK!(D "ppt/slideLayouts/slideLayout16.xmlUTux PK!)J.  !<ppt/slideLayouts/slideLayout2.xmlUTux PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux PK!p O;"Jppt/slideLayouts/slideLayout15.xmlUTux PK!!ppt/slideLayouts/slideLayout3.xmlUTux PK!K%!Cppt/slideLayouts/slideLayout8.xmlUTux PK!ҦB!3ppt/slideLayouts/slideLayout9.xmlUTux PK!x%,0docProps/app.xmlUTux PK@@spandoc-3.1.3/test/pptx/speaker-notes/0000755000000000000000000000000007346545000015705 5ustar0000000000000000pandoc-3.1.3/test/pptx/speaker-notes/input.native0000644000000000000000000000201007346545000020245 0ustar0000000000000000[Para [Str "Here",Space,Str "is",Space,Str "a",Space,Str "slide."] ,Div ("",["notes"],[]) [Para [Str "Here",Space,Str "is",Space,Str "a",Space,Str "note."] ,Para [Str "Here",Space,Str "is",Space,Emph [Str "some"],Space,Strong [Str "other"],Space,Str "formatting."]] ,HorizontalRule ,Para [Str "A",Space,Str "page",Space,Str "with",Space,Str "no",Space,Str "speaker",Space,Str "notes"] ,HorizontalRule ,Div ("",["notes"],[]) [Para [Str "The",Space,Str "first",Space,Str "note",Space,Str "div"]] ,Para [Str "A",Space,Str "page",Space,Str "with",Space,Str "two",Space,Str "notes."] ,Div ("",["notes"],[]) [Para [Str "The",Space,Str "second",Space,Str "note",Space,Str "div"]] ,HorizontalRule ,Para [Str "Strip",Space,Str "links",Space,Str "and",Space,Str "footnotes."] ,Div ("",["notes"],[]) [Para [Str "No",Space,Link ("",[],[]) [Str "link"] ("https://www.google.com",""),Space,Str "here."] ,Para [Str "No",Space,Str "note",Space,Str "here.",Note [Para [Str "You\8217ll",Space,Str "never",Space,Str "read",Space,Str "this"]]]]] pandoc-3.1.3/test/pptx/speaker-notes/output.pptx0000644000000000000000000010473507346545000020174 0ustar0000000000000000PK"Txc|Kppt/slides/slide1.xmlSn0bJH"A?Ī7& _/ -.[͌S0ף1FBjyV^r[hlEg (GƂqt;Jx|Ky P@H"M4{ u#LE))ckɳBq)틳krlW HS5ƈu["a7N;C]ه|. V$͚sݬy:O%dqWWu3z0:DJRH$x0#mlJ|l)F6qCwS 䔈?{iGKV҇u8H(/X̊sudh艗c WpGy)8Rke+R<$? >7PK"T6Wppt/slides/slide2.xmlSN0wp bTR3Y7n=c;Y޼\%IwFtA haN7%}}y<-j_!؂1/ZPܟ kq|UBIvX\2;MyySם{# t $Hӷu&MBb'gwvRyo*46Vƾ}f y1N呡h1,&aD䬘EWhg6[eU]LhJ.5GοN]6(1%d#m[0zr͉Opkc\wB G eӁ5ˤrNn #|LayC,oТ-wMBv"'f,?PK"T1]Qppt/slides/slide3.xmlSn0bJQ$ˢzmBzI m9p2of̗c%s|;bU?wo7xVi39bY ډ }TFP矦"!8MDF~\3ʲa^t Ӵu퀦Aӿ(elˋP @dnVoL,ۍAMHR9ƈ/e"BuPco1$$s,YqկɰqUwg%7 m8eP+^AA+ž-K$ɧdDu7tT c"dTq +4mݑCzxoyTsf_+ =t n4W#wP^; .4Hr2|@$#PK"T_Uppt/slides/slide4.xmlSN »˪1]/F7YݿKa_`˙sNڋh2bKKJ -}y;: -Ij1 z0<,Lzcz-$ry WHyȼ:%Ɗw+czŒAsB)?(eebeQ=@pn־'J&s(An275bsț&I[ޕ${i?-ټ-*ÿNgUc25[-ox mXLZv}0'㕕55&4ԗ+GA e\BC EcƍM0(IgmD!,P,3?Vd_ ?"V'PK"T  ppt/slides/_rels/slide1.xml.rels0Dٻ-p0POДmb;;;ϡ't^! JniC_!:|'D{]vϘScQMc B]ˬw"˒d<9NT_M(G#uX`W5dck1pt/L@:ZO4mzA(^PK"T% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T+? ppt/slides/_rels/slide3.xml.rels0Dٻ-r0POДmb' μd=+9i4-Guȳ"D$hϡ Axj,iDk)Zdi[f:5W{ dl4Jq@6*UW11XZ (]+SJcM^2sPK"T ppt/slides/_rels/slide4.xml.rels 0D%ݤV^D(x!ݶ6 I*mwvvfWFsXji*A~.؉U֓x=6g{ᩱ6!aVȻhIenLRT\Q_M]+G#uX`Shck0ptL)@2ZO4mzF͇pxPK"T~>Wppt/notesSlides/notesSlide1.xmlUmo0+ BUh*U Hmaa{8~=w|)8C[&bv#Lr57k5҂ANY!Z5$pjRpԜZ)I4@8#N34ח:N Zrej4u `Li}/Yg5@vEZR<.40JR酽؆ !tX5vޕ#PXӸqgNi)}R;! Ǟ\_VݚՒ NS@ Fc$K@@aԣ$#Vӌn8C2dw6,y)gϋI3^ TՄe6t/v+U4bL;oN;aؖlT?EKUW$PWЀr(5m|G6:^l$sYUH [HXN%n?\Y6K1%-b;[k~G~k Vw?hFiԝNl6"ͨr@^^ZHTӧ箃:;=~+PK"TdN?qppt/notesSlides/notesSlide2.xmlUn1 % $T"Ǟ^۵Zkw$EJ^|˙9٫m)PJ&w$SY_OX*yci4szLe9^( ReJdÃϤč9_iVM E: m[4}6`=L"kPKSҠ`$i ƈ4.eO/=65e==M/^I!H򯧬Y~wʞAQ@.f/~j% 辤 r%8;miX74caԣriS(d+v#>zAMz_HuBТnc*s?gwٿԻp5JXXr;D%,$=[Kj¡F,qiqdJ c .E]bBtɡges/6o|LKٟ Ɓi;- ^SMowAg4]vQiع7>?_ ۢ F< /08; 3я$ɗ=9LRWA&PK"TA9fppt/notesSlides/notesSlide3.xmlUn0~ P*U :g6g lHܿG'7U.pc<I??-1^ 4\OhscPRBثHwdd&%-8n%"MD-D6B6$Tm:MK[a;|R5%7rjjVH,=qZB1"w#C֊tRt[8%T^wqw/Nv|6Hݗ4f4\ p[Z>U#.,LOx9j WyN)w5K sfWy@Ъ.%PH֪:YNL5! Z:al̞cml,xbgKPgخ5ӕ@(=gjocWN6~ɑ `vWž}w3vjmrRe@cعHYRCgw|G`4\(l./|ÖnF^PK"TdO*ppt/notesSlides/_rels/notesSlide2.xml.rels 0_%ݤU^DEBm(Ѓ;3U}a$㝄iI8vԛꈃJ9A # }Ja-">Z;ż("~3`dFB7s`G_ؾmƭW.M43P_X &,|B:(JGuQToPK"T);*ppt/notesSlides/_rels/notesSlide3.xml.rels 0_%ݤ^DEBm(Ѓ;3U}a$㝄iI8vԛꈃJ9A # }Ja-">Z;ż("~3`dFB7s`G_ؾmƭW.M43P_X &,|B:(JGuQToPK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"Tzod[Content_Types].xml͘n@_pjm^pՃ0ꦰm}4F@7;|LwI-X]H(H /\婪a#䅮'IUKsYSRԶeW%6\Dڙ `3vA򲍯>_9)i]ADPfD.$<$~Iu2cY^^,13`|f/sJЪj |={߆w>6Y[>Fy1K#{o[Ec$SAia*-R3@jψ[D3_ ]ִ=++p"l C=F::%wR<ށ.Se&t| "@(e^.xG'uQi!y*uic슿RQt29Cխ4w@Ehr񎬊-p|-L?&0e>/ccӜft4\y S>qPK"Tn3ppt/_rels/presentation.xml.relsQO ǿ vsN3c`{mt^2MG`ڃ\I,dj.[wO7KY^A03lǵEDZ;!g6S?iif'ky &cO)6ۺhwpj^z ^7dG1W̻aD.S&((fQۉ(QEJ gfK 2⛲Lɵb E)RRhbEM9Q 23*`}xsA1r~ǽPK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"TX$,ppt/notesMasters/_rels/notesMaster1.xml.rels 0 ;mDd."*Juŭ-mvqK R7y"/ 8ˡjz8I^N"#4bo8ɔCq4>aLɟjYF<ڼ\emKYUG =%n(8Ѧ'XY̠ JZ+=`fPK"Tzìm!ppt/notesMasters/notesMaster1.xmlYn8}_`A>.\ݨ:EDm hSӤEKv(%8M% Ùјy⺢᢬EX^% Y/-!1+07D/~y3`$5p 01C{.e3pIų! Ʀ5W>s ?:FNKf|tZΗas 2[n[!A9uߑU׀z`gRn]a:'3v;XKjh.9!JbW/y3n.x› >m1\A;͜nR+8;gFă) BQ:r-Skm>{m>?1 8nt^\A.(ɼJV)Es^ aSXt,:Գ[3?ߖms6@^QI>4\ȗ,% mNr2_ ٙ6ףQxJp`m11Bl_P7G&[#5]e@JZz 5m+b\g-;yCӂŠ ̱Fޏ̦d.5#È,C!m}6̄ IP? aJv'?Y?4b?!tø $a>fc`eY-9y;D%SJ0[% z诡i 'Xc@8Ak| @ PP' (ZI2h bj  PHs(+T4@ 0>*/~'џPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlRW ppt/notesSlides/notesSlide1.xmlPK"TdN?q@ ppt/notesSlides/notesSlide2.xmlPK"TA9fppt/notesSlides/notesSlide3.xmlPK"Tֿ)*2ppt/notesSlides/_rels/notesSlide1.xml.relsPK"TdO*5ppt/notesSlides/_rels/notesSlide2.xml.relsPK"T);*8ppt/notesSlides/_rels/notesSlide3.xml.relsPK"T.!;ppt/slideMasters/slideMaster1.xmlPK"Tr,Pppt/slideMasters/_rels/slideMaster1.xml.relsPK"Tzod[Content_Types].xmlPK"TmȁGdocProps/core.xmlPK"Ty% docProps/custom.xmlPK"TQ !_rels/.relsPK"Td}"ppt/presentation.xmlPK"Tn3%ppt/_rels/presentation.xml.relsPK"T0K &'ppt/viewProps.xmlPK"TX$,(ppt/notesMasters/_rels/notesMaster1.xml.relsPK"Tzìm!)ppt/notesMasters/notesMaster1.xmlPK"T/ppt/tableStyles.xmlPK"T }.0ppt/presProps.xmlPK"T92ppt/theme/theme2.xmlPK"T mu!b8ppt/theme/theme1.xmlPK"Tђ7->ppt/slideLayouts/_rels/slideLayout11.xml.relsPK"Tђ7-?ppt/slideLayouts/_rels/slideLayout10.xml.relsPK"Tђ7,@ppt/slideLayouts/_rels/slideLayout9.xml.relsPK"Tђ7,Appt/slideLayouts/_rels/slideLayout8.xml.relsPK"Tђ7,Bppt/slideLayouts/_rels/slideLayout7.xml.relsPK"Tђ7,Cppt/slideLayouts/_rels/slideLayout6.xml.relsPK"Tђ7,Dppt/slideLayouts/_rels/slideLayout5.xml.relsPK"Tђ7,Eppt/slideLayouts/_rels/slideLayout4.xml.relsPK"Tђ7,Fppt/slideLayouts/_rels/slideLayout3.xml.relsPK"Tђ7,Gppt/slideLayouts/_rels/slideLayout2.xml.relsPK"Tђ7,Hppt/slideLayouts/_rels/slideLayout1.xml.relsPK"T'v!Ippt/slideLayouts/slideLayout9.xmlPK"TJI,!lNppt/slideLayouts/slideLayout8.xmlPK"TSd{g!_Sppt/slideLayouts/slideLayout7.xmlPK"T}!Vppt/slideLayouts/slideLayout6.xmlPK"TE˧:!Yppt/slideLayouts/slideLayout5.xmlPK"T?N!^ppt/slideLayouts/slideLayout4.xmlPK"T6\#!+cppt/slideLayouts/slideLayout3.xmlPK"TD9Bi !gppt/slideLayouts/slideLayout2.xmlPK"TkO ' "nkppt/slideLayouts/slideLayout11.xmlPK"TF "joppt/slideLayouts/slideLayout10.xmlPK"To@h)!/sppt/slideLayouts/slideLayout1.xmlPK"T%1,owdocProps/app.xmlPK44ypandoc-3.1.3/test/pptx/speaker-notes/templated.pptx0000644000000000000000000013640207346545000020607 0ustar0000000000000000PK"Txc|Kppt/slides/slide1.xmlSn0bJH"A?Ī7& _/ -.[͌S0ף1FBjyV^r[hlEg (GƂqt;Jx|Ky P@H"M4{ u#LE))ckɳBq)틳krlW HS5ƈu["a7N;C]ه|. V$͚sݬy:O%dqWWu3z0:DJRH$x0#mlJ|l)F6qCwS 䔈?{iGKV҇u8H(/X̊sudh艗c WpGy)8Rke+R<$? >7PK"T6Wppt/slides/slide2.xmlSN0wp bTR3Y7n=c;Y޼\%IwFtA haN7%}}y<-j_!؂1/ZPܟ kq|UBIvX\2;MyySם{# t $Hӷu&MBb'gwvRyo*46Vƾ}f y1N呡h1,&aD䬘EWhg6[eU]LhJ.5GοN]6(1%d#m[0zr͉Opkc\wB G eӁ5ˤrNn #|LayC,oТ-wMBv"'f,?PK"T1]Qppt/slides/slide3.xmlSn0bJQ$ˢzmBzI m9p2of̗c%s|;bU?wo7xVi39bY ډ }TFP矦"!8MDF~\3ʲa^t Ӵu퀦Aӿ(elˋP @dnVoL,ۍAMHR9ƈ/e"BuPco1$$s,YqկɰqUwg%7 m8eP+^AA+ž-K$ɧdDu7tT c"dTq +4mݑCzxoyTsf_+ =t n4W#wP^; .4Hr2|@$#PK"T_Uppt/slides/slide4.xmlSN »˪1]/F7YݿKa_`˙sNڋh2bKKJ -}y;: -Ij1 z0<,Lzcz-$ry WHyȼ:%Ɗw+czŒAsB)?(eebeQ=@pn־'J&s(An275bsț&I[ޕ${i?-ټ-*ÿNgUc25[-ox mXLZv}0'㕕55&4ԗ+GA e\BC EcƍM0(IgmD!,P,3?Vd_ ?"V'PK"T  ppt/slides/_rels/slide1.xml.rels0Dٻ-p0POДmb;;;ϡ't^! JniC_!:|'D{]vϘScQMc B]ˬw"˒d<9NT_M(G#uX`W5dck1pt/L@:ZO4mzA(^PK"T% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T+? ppt/slides/_rels/slide3.xml.rels0Dٻ-r0POДmb' μd=+9i4-Guȳ"D$hϡ Axj,iDk)Zdi[f:5W{ dl4Jq@6*UW11XZ (]+SJcM^2sPK"T ppt/slides/_rels/slide4.xml.rels 0D%ݤV^D(x!ݶ6 I*mwvvfWFsXji*A~.؉U֓x=6g{ᩱ6!aVȻhIenLRT\Q_M]+G#uX`Shck0ptL)@2ZO4mzF͇pxPK"T~>Wppt/notesSlides/notesSlide1.xmlUmo0+ BUh*U Hmaa{8~=w|)8C[&bv#Lr57k5҂ANY!Z5$pjRpԜZ)I4@8#N34ח:N Zrej4u `Li}/Yg5@vEZR<.40JR酽؆ !tX5vޕ#PXӸqgNi)}R;! Ǟ\_VݚՒ NS@ Fc$K@@aԣ$#Vӌn8C2dw6,y)gϋI3^ TՄe6t/v+U4bL;oN;aؖlT?EKUW$PWЀr(5m|G6:^l$sYUH [HXN%n?\Y6K1%-b;[k~G~k Vw?hFiԝNl6"ͨr@^^ZHTӧ箃:;=~+PK"TdN?qppt/notesSlides/notesSlide2.xmlUn1 % $T"Ǟ^۵Zkw$EJ^|˙9٫m)PJ&w$SY_OX*yci4szLe9^( ReJdÃϤč9_iVM E: m[4}6`=L"kPKSҠ`$i ƈ4.eO/=65e==M/^I!H򯧬Y~wʞAQ@.f/~j% 辤 r%8;miX74caԣriS(d+v#>zAMz_HuBТnc*s?gwٿԻp5JXXr;D%,$=[Kj¡F,qiqdJ c .E]bBtɡges/6o|LKٟ Ɓi;- ^SMowAg4]vQiع7>?_ ۢ F< /08; 3я$ɗ=9LRWA&PK"TA9fppt/notesSlides/notesSlide3.xmlUn0~ P*U :g6g lHܿG'7U.pc<I??-1^ 4\OhscPRBثHwdd&%-8n%"MD-D6B6$Tm:MK[a;|R5%7rjjVH,=qZB1"w#C֊tRt[8%T^wqw/Nv|6Hݗ4f4\ p[Z>U#.,LOx9j WyN)w5K sfWy@Ъ.%PH֪:YNL5! Z:al̞cml,xbgKPgخ5ӕ@(=gjocWN6~ɑ `vWž}w3vjmrRe@cعHYRCgw|G`4\(l./|ÖnF^PK"TdO*ppt/notesSlides/_rels/notesSlide2.xml.rels 0_%ݤU^DEBm(Ѓ;3U}a$㝄iI8vԛꈃJ9A # }Ja-">Z;ż("~3`dFB7s`G_ؾmƭW.M43P_X &,|B:(JGuQToPK"T);*ppt/notesSlides/_rels/notesSlide3.xml.rels 0_%ݤ^DEBm(Ѓ;3U}a$㝄iI8vԛꈃJ9A # }Ja-">Z;ż("~3`dFB7s`G_ؾmƭW.M43P_X &,|B:(JGuQToPK"T1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\iQfVa|o\a8{4J݆\|λ*6ma G2gƖKu^,N,թv8$*0##a$Nz1ځr/q;CnI-W{,5{p)Js!ؑOBs.=ߤcyQʑ0.N9S8=+L)LX$ϥ3FANs wF^x H5!~)n %CJ`v@J{d NH!Q2{ ߡ?PK"TJppt/_rels/presentation.xml.relsN _poi?Nn7f.L@z)^2MB <_>_@G0+Y"1Te[f3|os:͔Wez|iZ){-2ϗĄxu;.1:4[5 gG]9XkԴ*|."n((|"Yb1/e 27PK"Tg[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+OaLɟjYF<ڼ\emKYUG =%n(8Ѧ'XY̠ JZ+=`fPK"Tzìm!ppt/notesMasters/notesMaster1.xmlYn8}_`A>.\ݨ:EDm hSӤEKv(%8M% Ùјy⺢᢬EX^% Y/-!1+07D/~y3`$5p 01C{.e3pIų! Ʀ5W>s ?:FNKf|tZΗas 2[n[!A9uߑU׀z`gRn]a:'3v;XKjh.9!JbW/y3n.x› >m1\A;͜nR+8;gFă) BQ:r-Skm>{m>?1 8nt^\A.(ɼJV)Es^ aSXt,:Գ[3?ߖms6@^QI>4\ȗ,% mNr2_ ٙ6ףQxJp`m11Bl_P7G&[#5]e@JZz 5m+b\g-;yCӂŠ ̱Fޏ̦d.5#È,C!m}6̄ IP? aJv'?Y?4b?!tø $a>fc`eY-9y;D%SJ0[% z诡i 'Xc@8Ak| @ PP' (ZI2h bj  PHs(+T4@ 0>*/~'џPKURocB ppt/media/image1.pngUT$~`ux  sb``p b``>$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}W ppt/notesSlides/notesSlide1.xmlPK"TdN?q@ ppt/notesSlides/notesSlide2.xmlPK"TA9fppt/notesSlides/notesSlide3.xmlPK"Tֿ)*2ppt/notesSlides/_rels/notesSlide1.xml.relsPK"TdO*5ppt/notesSlides/_rels/notesSlide2.xml.relsPK"T);*8ppt/notesSlides/_rels/notesSlide3.xml.relsPK"T1G# @!;ppt/slideMasters/slideMaster1.xmlPK"TjA/ ,Vppt/slideMasters/_rels/slideMaster1.xml.relsPK"Tq_[Content_Types].xmlPK"TW G docProps/core.xmlPK"Ty%:"docProps/custom.xmlPK"TQ "_rels/.relsPK"Tn0O $ppt/presentation.xmlPK"TJg&ppt/_rels/presentation.xml.relsPK"Tg[gl!'ppt/viewProps.xmlPK"TX$,X)ppt/notesMasters/_rels/notesMaster1.xml.relsPK"Tzìm!U*ppt/notesMasters/notesMaster1.xmlPKURocB '0ppt/media/image1.pngUT$~`ux PK!l3ppt/tableStyles.xmlUTux PK! 0Z4ppt/presProps.xmlUTux PK"T$6ppt/theme/theme2.xmlPK!:~"TM<ppt/theme/theme1.xmlUTux PK!ђ7-TBppt/slideLayouts/_rels/slideLayout17.xml.relsUTux PK!ђ7-mCppt/slideLayouts/_rels/slideLayout16.xml.relsUTux PK!ђ7,Dppt/slideLayouts/_rels/slideLayout1.xml.relsUTux PK!ђ7,Eppt/slideLayouts/_rels/slideLayout7.xml.relsUTux PK!ђ7,Fppt/slideLayouts/_rels/slideLayout6.xml.relsUTux PK!ђ7-Gppt/slideLayouts/_rels/slideLayout10.xml.relsUTux PK!ђ7-Hppt/slideLayouts/_rels/slideLayout11.xml.relsUTux PK!ђ7,Jppt/slideLayouts/_rels/slideLayout9.xml.relsUTux PK!ђ7,Kppt/slideLayouts/_rels/slideLayout8.xml.relsUTux PK!ђ7,0Lppt/slideLayouts/_rels/slideLayout3.xml.relsUTux PK!ђ7,HMppt/slideLayouts/_rels/slideLayout2.xml.relsUTux PK!ђ7-`Nppt/slideLayouts/_rels/slideLayout14.xml.relsUTux PK!ђ7-yOppt/slideLayouts/_rels/slideLayout15.xml.relsUTux PK!ђ7-Pppt/slideLayouts/_rels/slideLayout13.xml.relsUTux PK!ђ7-Qppt/slideLayouts/_rels/slideLayout12.xml.relsUTux PK!ђ7,Rppt/slideLayouts/_rels/slideLayout4.xml.relsUTux PK!ђ7,Sppt/slideLayouts/_rels/slideLayout5.xml.relsUTux PK! L|!Tppt/slideLayouts/slideLayout7.xmlUTux PK!3Y "Wppt/slideLayouts/slideLayout11.xmlUTux PK!Ex"[ppt/slideLayouts/slideLayout10.xmlUTux PK!z&!`ppt/slideLayouts/slideLayout6.xmlUTux PK!=[!cppt/slideLayouts/slideLayout4.xmlUTux PK!im "gppt/slideLayouts/slideLayout12.xmlUTux PK!h "mppt/slideLayouts/slideLayout13.xmlUTux PK!s@y#!qppt/slideLayouts/slideLayout5.xmlUTux PK!=t!Awppt/slideLayouts/slideLayout1.xmlUTux PK!f\$ "|ppt/slideLayouts/slideLayout17.xmlUTux PK!(D "Kppt/slideLayouts/slideLayout16.xmlUTux PK!)J.  !˃ppt/slideLayouts/slideLayout2.xmlUTux PK!;FdvU&",ppt/slideLayouts/slideLayout14.xmlUTux PK!p O;"ٌppt/slideLayouts/slideLayout15.xmlUTux PK!!ppt/slideLayouts/slideLayout3.xmlUTux PK!K%!Ҙppt/slideLayouts/slideLayout8.xmlUTux PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux PK!x%,docProps/app.xmlUTux PKAA*pandoc-3.1.3/test/pptx/start-numbering-at/0000755000000000000000000000000007346545000016650 5ustar0000000000000000pandoc-3.1.3/test/pptx/start-numbering-at/input.native0000644000000000000000000000120707346545000021217 0ustar0000000000000000[Header 2 ("example-numbering-mwe",[],[]) [Str "Example",Space,Str "numbering",Space,Str "MWE"] ,Para [Str "This",Space,Str "is",Space,Str "a",Space,Str "slide",Space,Str "with",Space,Str "examples",Space,Str "in",Space,Str "(1)",Space,Str "and",Space,Str "(2)"] ,OrderedList (1,Example,TwoParens) [[Plain [Str "First"]] ,[Plain [Str "Second"]]] ,Header 2 ("a-second-slide",[],[]) [Str "A",Space,Str "second",Space,Str "slide"] ,Para [Str "This",Space,Str "second",Space,Str "slide",Space,Str "has",Space,Str "a",Space,Str "third",Space,Str "example",Space,Str "in",Space,Str "(3)."] ,OrderedList (3,Example,TwoParens) [[Plain [Str "Third"]]]] pandoc-3.1.3/test/pptx/start-numbering-at/output.pptx0000644000000000000000000006771007346545000021140 0ustar0000000000000000PK"Tarppt/slides/slide1.xmlTMo!+SrH7Uծ%u-U^TY8Y% f[]$ځGf i|7Rk6[Y kcA8EC\ >E%I5' ~wNY/mP@H"M 4{u#L~A))c ɳBt)һ.l7wHhF*h0Fuew%" lک4Gykp4{G6 ]v離Y;=UOCI\ajPA?H{h/ E䡤HOmQ>|p-t98]ZKaCɝBPQ =2 a2Xo \i˕LwFgC2hP ռ);(~y)8'Zb|袺<+dnUGJ fUeSބA80Yppt/slides/slide2.xmlTn!Ī]8vUؑ&r-ؠ\O_3n r9mg4jE19nl^}DQ*3,|CHdRG r[ ; &=1TYܟwۭbc{#,T 4D3J/AASN?E!rdo*]x2#KaHڶ5"vCHnLAG7rGנsKhhAA/ =: 0_(EȅPC=Tx`}r'Ҕ 4MLŻǍTH҈(GƧʢ7ӷ36jnq|ԯ*roP`ꓣ>(A;J?n<~ d-HPK"T% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"TIa [Content_Types].xml͗n0_q$mE!9t9u\3$Vl'M޾$UQ&l1O3op)bFɄI쿏k8菗 ZuKaSȩ '9( (&a[h=tYaUYL*(T3j񘔧dclɜ^B 11Sٺ+vBGFZ*CP9NLS5f9P' %A[ۋ+ep.̚s4`^Y;T$u"ԅP.B\rEzƢh.N(.!%,TS#7 X{"{_Srf̏~J{Uo);iZkj3zBhǥ|PK"TmȁGdocProps/core.xmlN0_%=q⪀$=z "7޶V i7iS*]Ŭ-u,Z(u2;AI3nVDAEZoxmrQ檅E U-]O lYPcRqdW5V\TDX; /Pb纑S>7o#Z9y[^DPfDl$<$+~YIuf"E Ak x38ޫQ/3qb7+ߥhu8C^" JkF]+*( cQńtEZN-+ ѶBtDkqa?mn 5 C-EA{%w\<~ڀ4ɢse hwf!ӿm쏾PߜeAA0*s%_W4f~ ٫2.J2@7d5\L[I-C(Ĝ~bt> f,X漢j8ǵԟϦPK"TWD>Ippt/_rels/presentation.xml.relsN0 _%-0Z B xmDDI6Ti8Dɶ\ yi4(c}j{i=%3Cwz}a,7CQ;ensOiMS-۴xoǀ:z%u*z($uN'gbGQJR\夰 (%)y>;Qe7&'Wo _^?1IJk';{o;&PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlR(ppt/slides/slide2.xmlPK"T% Bppt/slides/_rels/slide1.xml.relsPK"T% )ppt/slides/_rels/slide2.xml.relsPK"T.!ppt/slideMasters/slideMaster1.xmlPK"Tr,% ppt/slideMasters/_rels/slideMaster1.xml.relsPK"TIa o[Content_Types].xmlPK"TmȁG?docProps/core.xmlPK"Ty%docProps/custom.xmlPK"TQ C_rels/.relsPK"T;R{Uppt/presentation.xmlPK"TWD>I^ppt/_rels/presentation.xml.relsPK"T0K ppt/viewProps.xmlPK"T\ppt/tableStyles.xmlPK"T }.2ppt/presProps.xmlPK"Tppt/theme/theme2.xmlPK"T mu!"ppt/theme/theme1.xmlPK"Tђ7-Z(ppt/slideLayouts/_rels/slideLayout11.xml.relsPK"Tђ7-[)ppt/slideLayouts/_rels/slideLayout10.xml.relsPK"Tђ7,\*ppt/slideLayouts/_rels/slideLayout9.xml.relsPK"Tђ7,\+ppt/slideLayouts/_rels/slideLayout8.xml.relsPK"Tђ7,\,ppt/slideLayouts/_rels/slideLayout7.xml.relsPK"Tђ7,\-ppt/slideLayouts/_rels/slideLayout6.xml.relsPK"Tђ7,\.ppt/slideLayouts/_rels/slideLayout5.xml.relsPK"Tђ7,\/ppt/slideLayouts/_rels/slideLayout4.xml.relsPK"Tђ7,\0ppt/slideLayouts/_rels/slideLayout3.xml.relsPK"Tђ7,\1ppt/slideLayouts/_rels/slideLayout2.xml.relsPK"Tђ7,\2ppt/slideLayouts/_rels/slideLayout1.xml.relsPK"T'v!\3ppt/slideLayouts/slideLayout9.xmlPK"TJI,!8ppt/slideLayouts/slideLayout8.xmlPK"TSd{g!=ppt/slideLayouts/slideLayout7.xmlPK"T}!$@ppt/slideLayouts/slideLayout6.xmlPK"TE˧:!sCppt/slideLayouts/slideLayout5.xmlPK"T?N!Hppt/slideLayouts/slideLayout4.xmlPK"T6\#!Lppt/slideLayouts/slideLayout3.xmlPK"TD9Bi !kQppt/slideLayouts/slideLayout2.xmlPK"TkO ' "Uppt/slideLayouts/slideLayout11.xmlPK"TF "Yppt/slideLayouts/slideLayout10.xmlPK"To@h)!\ppt/slideLayouts/slideLayout1.xmlPK"T%1,oppt/slides/slide2.xmlTn!+V"IF#MZA%cpm-u \s9p{k;f.GcPˤLзt7u]P R  0TpM:nRnm&1-3O~$xk" sZRҭ&Vf҅AsSN?ѥbE[ysdv_[/nAdC4 x uumv5/6-$]:IޗMGumST5N5*_U4U+'qtp~`lUl"%Uzw ,f0tp#gqpp-s4]ҩq+Cʩ*Ba>KAAέ :48AAIsa,*<'܌}; P.bտ)YT_2< @ hJ_N6o޾Oh4*6VCY,P?9ɣ ⹹QOOn.'PK!% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK!% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK!1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\U*eLUQCjj<" h!z6fƔ DloVO͖Ú,a?`7ԿPK!y%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<KC !ژ*^400S14껪MJj`^?ؤ^0'^I yɯ-3j)XSDqL5g"C9_hs<Á `v#o>ȿ\⤓k=aǾkzGW8\ ;f8!1qg)+9Ca?ڰoh#̚Ϩ][.yTHP)\^W1b/Bw @Zӿ Gq؝8] h^F2Mȳ%U 7PFNo\u}8u%Ml+О9ܶkxr$ SNoN 7 $/'%3 ZFaN}-wF~ E-H$ dR; xR?4 n-$;$Kh7i!M}]!PK!5ˏIppt/_rels/presentation.xml.relsN _{K[u3c D plixAvy~sr3(C ZF֫+*b$hϠ>PEIkC,]G-CZ傺=ɦa6M doӶR_p l0ra`p(Ԫn@y QI֡q&?Rʞ3I"Gq֑~\(| {|&bd$NPt9!vOeF :VPK!g[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+O$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKdPSppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}'ppt/slides/slide2.xmlPK!% Appt/slides/_rels/slide1.xml.relsPK!% (ppt/slides/_rels/slide2.xml.relsPK!1G# @!ppt/slideMasters/slideMaster1.xmlPK!jA/ ,*ppt/slideMasters/_rels/slideMaster1.xml.relsPK!@[Content_Types].xmlPK! ) ,GdocProps/core.xmlPK!y%docProps/custom.xmlPK!Q _rels/.relsPK!$E ppt/presentation.xmlPK!5ˏIppt/_rels/presentation.xml.relsPK!g[gl!/ppt/viewProps.xmlPKURocB ppt/media/image1.pngUT$~`ux PK!ppt/tableStyles.xmlUTux PK! 0ppt/presProps.xmlUTux PKdPSppt/theme/theme2.xmlPK!:~"T%ppt/theme/theme1.xmlUTux PK!ђ7-+ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux PK!ђ7--ppt/slideLayouts/_rels/slideLayout16.xml.relsUTux PK!ђ7,).ppt/slideLayouts/_rels/slideLayout1.xml.relsUTux PK!ђ7,A/ppt/slideLayouts/_rels/slideLayout7.xml.relsUTux PK!ђ7,Y0ppt/slideLayouts/_rels/slideLayout6.xml.relsUTux PK!ђ7-q1ppt/slideLayouts/_rels/slideLayout10.xml.relsUTux PK!ђ7-2ppt/slideLayouts/_rels/slideLayout11.xml.relsUTux PK!ђ7,3ppt/slideLayouts/_rels/slideLayout9.xml.relsUTux PK!ђ7,4ppt/slideLayouts/_rels/slideLayout8.xml.relsUTux PK!ђ7,5ppt/slideLayouts/_rels/slideLayout3.xml.relsUTux PK!ђ7,6ppt/slideLayouts/_rels/slideLayout2.xml.relsUTux PK!ђ7-8ppt/slideLayouts/_rels/slideLayout14.xml.relsUTux PK!ђ7-9ppt/slideLayouts/_rels/slideLayout15.xml.relsUTux PK!ђ7-5:ppt/slideLayouts/_rels/slideLayout13.xml.relsUTux PK!ђ7-N;ppt/slideLayouts/_rels/slideLayout12.xml.relsUTux PK!ђ7,g<ppt/slideLayouts/_rels/slideLayout4.xml.relsUTux PK!ђ7,=ppt/slideLayouts/_rels/slideLayout5.xml.relsUTux PK! L|!>ppt/slideLayouts/slideLayout7.xmlUTux PK!3Y "jAppt/slideLayouts/slideLayout11.xmlUTux PK!Ex"zEppt/slideLayouts/slideLayout10.xmlUTux PK!z&!gJppt/slideLayouts/slideLayout6.xmlUTux PK!=[!pMppt/slideLayouts/slideLayout4.xmlUTux PK!im ""Qppt/slideLayouts/slideLayout12.xmlUTux PK!h "IWppt/slideLayouts/slideLayout13.xmlUTux PK!s@y#!j[ppt/slideLayouts/slideLayout5.xmlUTux PK!=t!`ppt/slideLayouts/slideLayout1.xmlUTux PK!f\$ ":fppt/slideLayouts/slideLayout17.xmlUTux PK!(D "ippt/slideLayouts/slideLayout16.xmlUTux PK!)J.  !nmppt/slideLayouts/slideLayout2.xmlUTux PK!;FdvU&"pppt/slideLayouts/slideLayout14.xmlUTux PK!p O;"|vppt/slideLayouts/slideLayout15.xmlUTux PK!!#}ppt/slideLayouts/slideLayout3.xmlUTux PK!K%!uppt/slideLayouts/slideLayout8.xmlUTux PK!ҦB!eppt/slideLayouts/slideLayout9.xmlUTux PK!x%,bdocProps/app.xmlUTux PK55͎pandoc-3.1.3/test/pptx/tables/0000755000000000000000000000000007346545000014377 5ustar0000000000000000pandoc-3.1.3/test/pptx/tables/input.native0000644000000000000000000000670407346545000016755 0ustar0000000000000000[Header 2 ("a-table-with-a-caption",[],[]) [Str "A",Space,Str "Table,",Space,Str "with",Space,Str "a",Space,Str "caption"] ,Table ("",[],[]) (Caption Nothing [Para [Str "Demonstration",Space,Str "of",Space,Str "simple",Space,Str "table",Space,Str "syntax,",Space,Str "with",Space,Str "alignment"]]) [(AlignRight,ColWidthDefault) ,(AlignLeft,ColWidthDefault) ,(AlignCenter,ColWidthDefault) ,(AlignDefault,ColWidthDefault)] (TableHead ("",[],[]) [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Right"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Left"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Center"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Default"]]]]) [(TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "12"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "12"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "12"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "12"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "123"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "123"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "123"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "123"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1"]]]])] (TableFoot ("",[],[]) []) ,Table ("",[],[]) (Caption Nothing []) [(AlignRight,ColWidthDefault) ,(AlignLeft,ColWidthDefault) ,(AlignCenter,ColWidthDefault) ,(AlignDefault,ColWidthDefault)] (TableHead ("",[],[]) [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Right"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Left"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Center"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Default"]]]]) [(TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "12"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "12"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "12"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "12"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "123"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "123"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "123"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "123"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1"]]]])] (TableFoot ("",[],[]) [])]pandoc-3.1.3/test/pptx/tables/output.pptx0000644000000000000000000007071607346545000016667 0ustar0000000000000000PK"T0VPppt/slides/slide1.xmlXn0}+GBT*PIUWLb5ǎlClǁ@?Oؾ{|&O)Xa! g}~{DŽ-nYOLPKz()WĹQ1U{ +Mr·YeVS(mr%h=, E%E֙v3oÆrÚʇ<^83GzQkǾeD ~năXGΰ/_5S4x%*D(30ډ.@YBДRَs*q4`DQNc,@*]h'· ]Օ-xkʰ'Ċ^6:@;AmNvAttH!>a5ωꙿeː砱[cS"U2$qV j:d>D8RYz$֭1OtΨ1N9JK@41m)E6% fq**3^@ PK"T#B`ppt/slides/slide2.xmlWn0+! U Z uq9V[ڀ V{lgΜ#n3"M±H(_ F/%@rAT1Qy# Y*d^L$!r0Q"M)&9!a-*ZqHBR KlŻ$X|$EՋ4 @ܚw",* ֩ͬaMV]\}8{$ؘ(J]@UnұJ^$,!o@[yf, Kf5GL_׼x͸_֒l[p^;}bj)3Xj)N,իuOm=̕7a[2GQ;N#nQ!{^a2O'q[S>Ih2 dQƟnSdFֶH6ƚ=4`ݪ>c+fUMy5hə5[+iCϗς?47T .2eY/|OL  fB0cu8c3>설hɎeLތ^ĥ8򙐞eju-b=+zwz^V/[p_}+VW {PK"T% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"TIa [Content_Types].xml͗n0_q$mE!9t9u\3$Vl'M޾$UQ&l1O3op)bFɄI쿏k8菗 ZuKaSȩ '9( (&a[h=tYaUYL*(T3j񘔧dclɜ^B 11Sٺ+vBGFZ*CP9NLS5f9P' %A[ۋ+ep.̚s4`^Y;T$u"ԅP.B\rEzƢh.N(.!%,TS#7 X{"{_Srf̏~J{Uo);iZkj3zBhǥ|PK"TmȁGdocProps/core.xmlN0_%=q⪀$=z "7޶V i7iS*]Ŭ-u,Z(u2;AI3nVDAEZoxmrQ檅E U-]O lYPcRqdW5V\TDX; /Pb纑S>7o#Z9y[^DPfDl$<$+~YIuf"E Ak x38ޫQ/3qb7+ߥhu8C^" JkF]+*( cQńtEZN-+ ѶBtDkqa?mn 5 C-EA{%w\<~ڀ4ɢse hwf!ӿm쏾PߜeAA0*s%_W4f~ ٫2.J2@7d5\L[I-C(Ĝ~bt> f,X漢j8ǵԟϦPK"TWD>Ippt/_rels/presentation.xml.relsN0 _%-0Z B xmDDI6Ti8Dɶ\ yi4(c}j{i=%3Cwz}a,7CQ;ensOiMS-۴xoǀ:z%u*z($uN'gbGQJR\夰 (%)y>;Qe7&'Wo _^?1IJk';{o;&PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlRIdppt/_rels/presentation.xml.relsPK"T0K ppt/viewProps.xmlPK"Tbppt/tableStyles.xmlPK"T }.8ppt/presProps.xmlPK"Tppt/theme/theme2.xmlPK"T mu! $ppt/theme/theme1.xmlPK"Tђ7-`*ppt/slideLayouts/_rels/slideLayout11.xml.relsPK"Tђ7-a+ppt/slideLayouts/_rels/slideLayout10.xml.relsPK"Tђ7,b,ppt/slideLayouts/_rels/slideLayout9.xml.relsPK"Tђ7,b-ppt/slideLayouts/_rels/slideLayout8.xml.relsPK"Tђ7,b.ppt/slideLayouts/_rels/slideLayout7.xml.relsPK"Tђ7,b/ppt/slideLayouts/_rels/slideLayout6.xml.relsPK"Tђ7,b0ppt/slideLayouts/_rels/slideLayout5.xml.relsPK"Tђ7,b1ppt/slideLayouts/_rels/slideLayout4.xml.relsPK"Tђ7,b2ppt/slideLayouts/_rels/slideLayout3.xml.relsPK"Tђ7,b3ppt/slideLayouts/_rels/slideLayout2.xml.relsPK"Tђ7,b4ppt/slideLayouts/_rels/slideLayout1.xml.relsPK"T'v!b5ppt/slideLayouts/slideLayout9.xmlPK"TJI,!:ppt/slideLayouts/slideLayout8.xmlPK"TSd{g! ?ppt/slideLayouts/slideLayout7.xmlPK"T}!*Bppt/slideLayouts/slideLayout6.xmlPK"TE˧:!yEppt/slideLayouts/slideLayout5.xmlPK"T?N!Jppt/slideLayouts/slideLayout4.xmlPK"T6\#!Nppt/slideLayouts/slideLayout3.xmlPK"TD9Bi !qSppt/slideLayouts/slideLayout2.xmlPK"TkO ' "Wppt/slideLayouts/slideLayout11.xmlPK"TF "[ppt/slideLayouts/slideLayout10.xmlPK"To@h)!^ppt/slideLayouts/slideLayout1.xmlPK"T%1,oBcdocProps/app.xmlPK(( epandoc-3.1.3/test/pptx/tables/templated.pptx0000644000000000000000000012236407346545000017303 0ustar0000000000000000PKDSi0Qppt/slides/slide1.xmlXn0}+GB*TjRU-{bͱ-ۥA}@S'ر}=8yYPRAtg-UD_ L ȵ}U.03ss. ͫ\L'㢠0.,ax3]9"m`U{x+YoA4sZq'NrPAwzpâ~9mMz{B;K j4m VKa6*ϳYMDjJ U%U9+ai,Xaga3ZV6̴(Sqo=]Rh]3iGW/()VB;;YY;58X3H$Z*]n5cδ (Jqi%H2Ѝ} YX؂V;VjzQ7 wqNB/vtSht'H#(?|@3zF}cH=r|߭&ND߲dIs::N^&WhܾD4s6y-IV%D1$>]3ap+ Eul {{KIS?@ӽA`NT)ƽ/ G^m#LQv"|V۟E>G;J~~RߣSV|Evzeקnk[`qYdިn%nkgT/טv1©vܢ5~gP1*3X|)j(VL.)Y0{W 71jPKDS̱ppt/slides/slide2.xmlWn0}+@(CRM:T0C9vJ5[h@hTHgp``MdEU±H)_חio~R]yG WCX%,@J/qva(|<&^dd, \$04*eUg+VJR46z Yj;,_$!Y˙O4 @ܚ2,k7,̬A~#4dvq>9"Qؘ)J@~ݺӑJf a  f9NGV M%Qs Qg27 owc3nXzQ7 8n''?)VZ0\jIΨԳx.Om=L\3=JFqt:wɤҀ}zxm:F[ / iH0I_oSOIeZR6"}7B >V[3GkPj9Z6b$8UsC]@ 2WbR_- dP"όXc;e3 SxKyq"3!dxWY@l|//V):=y/41|&оPKDS% ppt/slides/_rels/slide1.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PKDS% ppt/slides/_rels/slide2.xml.rels 0_%ݤ "M{IdTۛc <7L}LÑV@Ipm8\i2!qÔs0V$}"3j| [왤Wb@5?l?FŢ?*X»X VD[}giچ_PKDS1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\U*eLUQCjj<" h!z6fƔ DloK"HEnsI0'[ (Mj V*;\>Z К[j(XH~ZM,8LWѦ i \ɽOf2}_s:ZP:mhe^}":eh.r1>)ﳇՒ5yYnV^L0y< I`L|PKDSy%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<KC !ژ*^400S14껪MJj`^?ؤ^0'^I yɯ-3j)XSDqL5g"C9_hs<Á `v#o>ȿ\⤓k=aǾkzGW8\ ;f8!1qg)+9Ca?ڰoh#̚Ϩ][.yTHP)\^W1b/Bw @Zӿ Gq؝8] h^F2Mȳ%U 7PFNo\u}8u%Ml+О9ܶkxr$ SNoN 7 $/'%3 ZFaN}-wF~ E-H$ dR; xR?4 n-$;$Kh7i!M}]!PKDS5ˏIppt/_rels/presentation.xml.relsN _{K[u3c D plixAvy~sr3(C ZF֫+*b$hϠ>PEIkC,]G-CZ傺=ɦa6M doӶR_p l0ra`p(Ԫn@y QI֡q&?Rʞ3I"Gq֑~\(| {|&bd$NPt9!vOeF :VPKDSg[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+O$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKDSppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}<ppt/slideLayouts/_rels/slideLayout13.xml.relsUTux PK!ђ7-W=ppt/slideLayouts/_rels/slideLayout12.xml.relsUTux PK!ђ7,p>ppt/slideLayouts/_rels/slideLayout4.xml.relsUTux PK!ђ7,?ppt/slideLayouts/_rels/slideLayout5.xml.relsUTux PK! L|!@ppt/slideLayouts/slideLayout7.xmlUTux PK!3Y "sCppt/slideLayouts/slideLayout11.xmlUTux PK!Ex"Gppt/slideLayouts/slideLayout10.xmlUTux PK!z&!pLppt/slideLayouts/slideLayout6.xmlUTux PK!=[!yOppt/slideLayouts/slideLayout4.xmlUTux PK!im "+Sppt/slideLayouts/slideLayout12.xmlUTux PK!h "RYppt/slideLayouts/slideLayout13.xmlUTux PK!s@y#!s]ppt/slideLayouts/slideLayout5.xmlUTux PK!=t!bppt/slideLayouts/slideLayout1.xmlUTux PK!f\$ "Chppt/slideLayouts/slideLayout17.xmlUTux PK!(D "kppt/slideLayouts/slideLayout16.xmlUTux PK!)J.  !woppt/slideLayouts/slideLayout2.xmlUTux PK!;FdvU&"rppt/slideLayouts/slideLayout14.xmlUTux PK!p O;"xppt/slideLayouts/slideLayout15.xmlUTux PK!!,ppt/slideLayouts/slideLayout3.xmlUTux PK!K%!~ppt/slideLayouts/slideLayout8.xmlUTux PK!ҦB!nppt/slideLayouts/slideLayout9.xmlUTux PK!x%,kdocProps/app.xmlUTux PK55֐pandoc-3.1.3/test/pptx/two-column/all-text/0000755000000000000000000000000007346545000016763 5ustar0000000000000000pandoc-3.1.3/test/pptx/two-column/all-text/input.native0000644000000000000000000000063507346545000021336 0ustar0000000000000000Pandoc (Meta {unMeta = fromList []}) [Header 1 ("two-column-layout",[],[]) [Str "Two-Column",Space,Str "Layout"] ,Div ("",["columns"],[]) [Div ("",["column"],[]) [Para [Str "One",Space,Str "paragraph."] ,Para [Str "Another",Space,Str "paragraph."]] ,Div ("",["column"],[]) [Para [Str "Second",Space,Str "column",Space,Str "paragraph."] ,Para [Str "Another",Space,Str "second",Space,Str "paragraph."]]]] pandoc-3.1.3/test/pptx/two-column/all-text/output.pptx0000644000000000000000000006601307346545000021246 0ustar0000000000000000PK"Tppt/slides/slide1.xmlUn!{TU:jˋXXxۯN(3sjP ߷_>奭BhlEgPό|q8d1'vO)i:&>WB ℤmg}AOANxI䉡:!on%Mv F*QcY"!Iq*@ 5Ǵx)XeG׬=/I)B GrY- m@Jޮ 6@*ɐIB2X`FZ>>:?`Ϸ>lM d/Nsg2uh$ba>/7,wȽhEG16 R-R{XBkIh¡Kb/xҩlޤ`;Gm;;MhAGK>oū qƇhX~98}nS%nR$PK"Tzwft% ppt/slides/_rels/slide1.xml.rels 0_%ݤH^D(x!٦$؂;; S;7d㰧t+4g۝mN"GMHD\0.%9|匚!_B#;TՉ5L)S{ #l,MF],~+́ҵ1išm6_PK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"T! [Content_Types].xml͗n@_pm!=\`R[tS.V߾(%Q, dwgc a4Y{<}=zd<%hC܅1. 8BR͉'zC nxt1aa96w:q~WNI/K9E8 "_k"E%cw#Q+j$JGi~`;ԯM' ٮĴ 1|q A8r@o) o*1rW hA,jk0%wv!57m<3iJ*_ ^Y}0gnt.̖Voe5چ1#gFZUg:H Ȥ'FA}'Fap0@ O!%~\)'waap R;$C^ ҨHq4Br?cXw`X9,R{6~ 8? |,"8٣cVEr/Skz&ZHi:'' g4KQeȓ l/'q1eN( ƃ|F,mVT;z$O~PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlR奭BhlEgPό|q8d1'vO)i:&>WB ℤmg}AOANxI䉡:!on%Mv F*QcY"!Iq*@ 5Ǵx)XeG׬=/I)B GrY- m@Jޮ 6@*ɐIB2X`FZ>>:?`Ϸ>lM d/QE*0h&ba>/7,wȽhEG16 R-R{XAkIh¡Kb/xҩlޤ`;Gm;;MhAGK>oū qƇhX~98}nS%nR$PKDSzwft% ppt/slides/_rels/slide1.xml.rels 0_%ݤH^D(x!٦$؂;; S;7d㰧t+4g۝mN"GMHD\0.%9|匚!_B#;TՉ5L)S{ #l,MF],~+́ҵ1išm6_PKDS1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\K"HEnsI0'[ (Mj V*;\>Z К[j(XH~ZM,8LWѦ i \ɽOf2}_s:ZP:mhe^}":eh.r1>)ﳇՒ5yYnV^L0y< I`L|PKDSy%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<31)7ǒxLݍ0c~DP$ARE aD3EŝrS?VFR8 V ]]٣sRG/K$s'APW#ҫ@NRkw0J|` [A |Y+n#yL/=;m gciރjyKLVў=xdͲ+Ej$m#eSn23d yqH3w<o3:(h3ċ)l!EC>!>!%a0{;i!!9BCi i?8JpqOHPr1PKDS&ppt/_rels/presentation.xml.relsAN0Eb͞8)P!TrLmCjQTU~6?a Q;+*J`hm|o`^:b}diF<{ Ѧƅ^R*C˽T{"_咇L=ٶ?ޮi'zt 1" 8jU$7`:mN 0< ,E= E"gq12'Ot48g$Βg%Im9gq>2H/PKDSg[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+O$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKDSppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}ppt/slideLayouts/slideLayout11.xmlUTux PK!Ex"RBppt/slideLayouts/slideLayout10.xmlUTux PK!z&!?Gppt/slideLayouts/slideLayout6.xmlUTux PK!=[!HJppt/slideLayouts/slideLayout4.xmlUTux PK!im "Mppt/slideLayouts/slideLayout12.xmlUTux PK!h "!Tppt/slideLayouts/slideLayout13.xmlUTux PK!s@y#!BXppt/slideLayouts/slideLayout5.xmlUTux PK!=t!]ppt/slideLayouts/slideLayout1.xmlUTux PK!f\$ "cppt/slideLayouts/slideLayout17.xmlUTux PK!(D "fppt/slideLayouts/slideLayout16.xmlUTux PK!)J.  !Fjppt/slideLayouts/slideLayout2.xmlUTux PK!;FdvU&"mppt/slideLayouts/slideLayout14.xmlUTux PK!p O;"Tsppt/slideLayouts/slideLayout15.xmlUTux PK!!yppt/slideLayouts/slideLayout3.xmlUTux PK!K%!Mppt/slideLayouts/slideLayout8.xmlUTux PK!ҦB!=ppt/slideLayouts/slideLayout9.xmlUTux PK!x%,:docProps/app.xmlUTux PK33wpandoc-3.1.3/test/pptx/two-column/text-and-image/0000755000000000000000000000000007346545000020035 5ustar0000000000000000pandoc-3.1.3/test/pptx/two-column/text-and-image/input.native0000644000000000000000000000124207346545000022403 0ustar0000000000000000[Header 1 ("slide-1",[],[]) [Str "Slide",Space,Str "1"] ,Div ("",["columns"],[]) [Div ("",["column"],[]) [Para [Image ("",[],[]) [Str "an",Space,Str "image"] ("lalune.jpg","fig:")]] ,Div ("",["column"],[]) [Para [Str "This",Space,Str "should",Space,Str "use",Space,Str "Two",Space,Str "Content,",Space,Emph [Str "not"],Space,Str "Comparison!"]]] ,Header 1 ("slide-2",[],[]) [Str "Slide",Space,Str "2"] ,Div ("",["columns"],[]) [Div ("",["column"],[]) [Para [Str "This",Space,Str "should",Space,Str "also",Space,Str "use",Space,Str "Two",Space,Str "Content"]] ,Div ("",["column"],[]) [Para [Image ("",[],[]) [Str "an",Space,Str "image"] ("lalune.jpg","fig:")]]]] pandoc-3.1.3/test/pptx/two-column/text-and-image/output.pptx0000644000000000000000000013066107346545000022321 0ustar0000000000000000PK"Tppt/slides/slide1.xmlVQo ~`~ފ&m5֮&u]d?`ba@@Rg~7IS)sp}hŌJNq!&*,'ݧQvuyVLIV9[ZcB8]UHq+X}E`+:vgGfZ5d >MN6;Y?r8N^q8OFa$# w%(ԙ&פdͷ 5HQAbI*% fv7/pm?/Y-Z» ͞l|D[o WK޲p䇃j_^Y^-.PK"TƄK:ppt/slides/slide2.xmlVn0 )W9OӠivm1%{EVlm$HJGɲ)`=bS"E~(Ҿ+X4靧 bb?|'7WzbET &sz%=WI-)pn\Tgi:2)r)b5N L[rm[oo0 n=H>3:yP c^Gg 9 b$A8j]FV$zi*P=MmxbjhKwi5-6 k*ks'&ׂIII$;&u%r[ Μwtlx-ލo;\}򭏳wK&º:!Q.sg+b[ͨۯC݅   y:-$iX!r*92)Y?.pjdqvY-v'a{dB^.#'lmTdFm0&^Z.SZVݐCbFVBmJGH,8H/FoH%qau*]mMK$)I͉_?R3pPK"T+ ppt/slides/_rels/slide1.xml.rels 0_%ݤc/">@Hi!IEޠ @Hi!IEޠ qm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"T> [Content_Types].xml͗n@_pȪmm<\pՃIlaĵ!շ1Uҽ,;ϷKx ІI[A@2b"Fza0}j#ĄSRԜZ\(~HP 6lz0zK|t߻R}*Z&.ٙ!1 m5hff1fʔ(1SVӳYvOr GZ*C&>F9Pc1%&PeU\)KLJέ)/Z'( Y8OߡNR9٫P.B]u"TE.B; 5-DyQ̵BYt&_Od)y>dڠeՅS*C+1 J C4P)97VOcʽڜ2f໖>l P=(z\Z@PK"TmȁGdocProps/core.xmlN0_%=q⪀$=z "7޶V i7iS*]Ŭ-u,Z(u2;AI3nVDAEZoxmrQ檅E U-]O lYPcRqdW5V\TDX; /Pb纑S>7o#Z9y[^DPfDl$<$+~YIuf"E Ak x38ޫQ/3qb7+ߥhu8C^" JkF]+*( cQńtEZN-+ ѶBtDkqa?mn 5 C-EA{%w\<~ڀ4ɢse hwf!ӿm쏾PߜeAA0*s%_W4f~ ٫2.J2@7d5\L[I-C(Ĝ~bt> f,X漢j8ǵԟϦPK"TWD>Ippt/_rels/presentation.xml.relsN0 _%-0Z B xmDDI6Ti8Dɶ\ yi4(c}j{i=%3Cwz}a,7CQ;ensOiMS-۴xoǀ:z%u*z($uN'gbGQJR\夰 (%)y>;Qe7&'Wo _^?1IJk';{o;&PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlR P[Content_Types].xmlPK"TmȁGQdocProps/core.xmlPK"Ty%1SdocProps/custom.xmlPK"TQ S_rels/.relsPK"T;R{Tppt/presentation.xmlPK"TWD>IXppt/_rels/presentation.xml.relsPK"T0K AYppt/viewProps.xmlPK"T[ppt/tableStyles.xmlPK"T }.[ppt/presProps.xmlPK"T]ppt/theme/theme2.xmlPK"T mu!cppt/theme/theme1.xmlPK"Tђ7-jppt/slideLayouts/_rels/slideLayout11.xml.relsPK"Tђ7-kppt/slideLayouts/_rels/slideLayout10.xml.relsPK"Tђ7,lppt/slideLayouts/_rels/slideLayout9.xml.relsPK"Tђ7,mppt/slideLayouts/_rels/slideLayout8.xml.relsPK"Tђ7,nppt/slideLayouts/_rels/slideLayout7.xml.relsPK"Tђ7,oppt/slideLayouts/_rels/slideLayout6.xml.relsPK"Tђ7,pppt/slideLayouts/_rels/slideLayout5.xml.relsPK"Tђ7,qppt/slideLayouts/_rels/slideLayout4.xml.relsPK"Tђ7,rppt/slideLayouts/_rels/slideLayout3.xml.relsPK"Tђ7,sppt/slideLayouts/_rels/slideLayout2.xml.relsPK"Tђ7,tppt/slideLayouts/_rels/slideLayout1.xml.relsPK"T'v!uppt/slideLayouts/slideLayout9.xmlPK"TJI,!yppt/slideLayouts/slideLayout8.xmlPK"TSd{g!~ppt/slideLayouts/slideLayout7.xmlPK"T}!ˁppt/slideLayouts/slideLayout6.xmlPK"TE˧:!ppt/slideLayouts/slideLayout5.xmlPK"T?N!2ppt/slideLayouts/slideLayout4.xmlPK"T6\#!wppt/slideLayouts/slideLayout3.xmlPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlPK"TkO ' "ppt/slideLayouts/slideLayout11.xmlPK"TF "ppt/slideLayouts/slideLayout10.xmlPK"To@h)!{ppt/slideLayouts/slideLayout1.xmlPK"T%1,odocProps/app.xmlPK))^ =pandoc-3.1.3/test/pptx/two-column/text-and-image/templated.pptx0000644000000000000000000016231607346545000022742 0ustar0000000000000000PKDSOcgppt/slides/slide1.xmlVQo ~߯`~ފi5֮&u]d?`a@@g~ƮR&a/;Wu%К˕$I &*\NB(J;&tN1d'J3 2q05K\4pj}QtU1' M[rm[oo0 n<2:E@g1/Sdqd/IRI 5Ѯu#=V$za*?"V]UO;[tnk"+jFa.\@LX`|-ؖh% ^]-6T ِSɉI1QNl xj FSgA؟y`mRyI&"/cUHy'x-qXxmcn~!EVBlj%N8Ȳq$Y"yGbau*]mMK$ Y͉_>R3pPKDSQ, ppt/slides/_rels/slide1.xml.rels 0_%ݤc/">@Hi!bޠ f,HtehE.c,yY]UK?3`IC<9v K:#q͢_*X£-X5f~ӂ ;ZO4c[&Po_lPKDSQ, ppt/slides/_rels/slide2.xml.rels 0_%ݤc/">@Hi!bޠ f,HtehE.c,yY]UK?3`IC<9v K:#q͢_*X£-X5f~ӂ ;ZO4c[&Po_lPKDSi\??ppt/media/image2.jpgweX^.tKww# XbE钐\iNYJ@S_o}<̙w杧5:L ;'4@ a@`0cSSQQSPг3вQP01rprpS3 s sqs KKECAmO]l-A$`<_00…rL aaba@$X`a2{8Hrn] Q+Il6ߧzSb{? $eVxZ$Tni?B$! ak!$Y[ bjΘ*K6kfjOAWd|(_#˲Mj5EV꿮-\\#ψh*lqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPKDS1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\>b5Pm_(Gh2dCZr4bƔKK qPeqSp,1)n>хZS]M4yV u"ԹPK'.\jl;Iu$Pn>n6+'@'{]$m35oE=*wBY(<#9$gYK] Κ~f)"w"p1.wY+љ2XZڜ2f૖?b)_Z6zZA>JF}PKDS9nGdocProps/core.xmlOO!ſʆ.5Fv{5o-'0ڭMzx4ox7'b6n3'oeyGmP>K"HEnsI0'[ (Mj V*;\>Z К[j(XH~ZM,8LWѦ i \ɽOf2}_s:ZP:mhe^}":eh.r1>)ﳇՒ5yYnV^L0y< I`L|PKDSy%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<KC !ژ*^400S14껪MJj`^?ؤ^0'^I yɯ-3j)XSDqL5g"C9_hs<Á `v#o>ȿ\⤓k=aǾkzGW8\ ;f8!1qg)+9Ca?ڰoh#̚Ϩ][.yTHP)\^W1b/Bw @Zӿ Gq؝8] h^F2Mȳ%U 7PFNo\u}8u%Ml+О9ܶkxr$ SNoN 7 $/'%3 ZFaN}-wF~ E-H$ dR; xR?4 n-$;$Kh7i!M}]!PKDS5ˏIppt/_rels/presentation.xml.relsN _{K[u3c D plixAvy~sr3(C ZF֫+*b$hϠ>PEIkC,]G-CZ傺=ɦa6M doӶR_p l0ra`p(Ԫn@y QI֡q&?Rʞ3I"Gq֑~\(| {|&bd$NPt9!vOeF :VPKDSg[gl!ppt/viewProps.xmln0Ey($jU,*vo\l|}g";{̝3c/םlNhd+PUZ& d+ޛ cGk.hhx 3K"<K":՛G+O$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKDSppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL} \\[ \\{" , Para [ Str "And:" ] , CodeBlock ( "" , [ "python" ] , [] ) "def my_function(x):\n return x + 1" , Para [ Str "If" , Space , Str "we" , Space , Str "use" , Space , Str "the" , Space , Str "highlight" , Space , Str "directive," , Space , Str "we" , Space , Str "can" , Space , Str "specify" , Space , Str "a" , Space , Str "default" , Space , Str "language" , SoftBreak , Str "for" , Space , Str "literate" , Space , Str "blocks." ] , CodeBlock ( "" , [ "haskell" ] , [] ) "-- this code is in haskell\ndata Tree = Leaf | Node Tree Tree" , CodeBlock ( "" , [ "haskell" ] , [] ) "-- this code is in haskell too\ndata Nat = Zero | Succ Nat" , CodeBlock ( "" , [ "javascript" ] , [] ) "-- this code is in javascript\nlet f = (x, y) => x + y" , Header 1 ( "lists" , [] , [] ) [ Str "Lists" ] , Header 2 ( "unordered" , [] , [] ) [ Str "Unordered" ] , Para [ Str "Asterisks" , Space , Str "tight:" ] , BulletList [ [ Plain [ Str "asterisk" , Space , Str "1" ] ] , [ Plain [ Str "asterisk" , Space , Str "2" ] ] , [ Plain [ Str "asterisk" , Space , Str "3" ] ] ] , Para [ Str "Asterisks" , Space , Str "loose:" ] , BulletList [ [ Plain [ Str "asterisk" , Space , Str "1" ] ] , [ Plain [ Str "asterisk" , Space , Str "2" ] ] , [ Plain [ Str "asterisk" , Space , Str "3" ] ] ] , Para [ Str "Pluses" , Space , Str "tight:" ] , BulletList [ [ Plain [ Str "Plus" , Space , Str "1" ] ] , [ Plain [ Str "Plus" , Space , Str "2" ] ] , [ Plain [ Str "Plus" , Space , Str "3" ] ] ] , Para [ Str "Pluses" , Space , Str "loose:" ] , BulletList [ [ Plain [ Str "Plus" , Space , Str "1" ] ] , [ Plain [ Str "Plus" , Space , Str "2" ] ] , [ Plain [ Str "Plus" , Space , Str "3" ] ] ] , Para [ Str "Minuses" , Space , Str "tight:" ] , BulletList [ [ Plain [ Str "Minus" , Space , Str "1" ] ] , [ Plain [ Str "Minus" , Space , Str "2" ] ] , [ Plain [ Str "Minus" , Space , Str "3" ] ] ] , Para [ Str "Minuses" , Space , Str "loose:" ] , BulletList [ [ Plain [ Str "Minus" , Space , Str "1" ] ] , [ Plain [ Str "Minus" , Space , Str "2" ] ] , [ Plain [ Str "Minus" , Space , Str "3" ] ] ] , Header 2 ( "ordered" , [] , [] ) [ Str "Ordered" ] , Para [ Str "Tight:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Plain [ Str "First" ] ] , [ Plain [ Str "Second" ] ] , [ Plain [ Str "Third" ] ] ] , Para [ Str "and:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Plain [ Str "One" ] ] , [ Plain [ Str "Two" ] ] , [ Plain [ Str "Three" ] ] ] , Para [ Str "Loose" , Space , Str "using" , Space , Str "tabs:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Plain [ Str "First" ] ] , [ Plain [ Str "Second" ] ] , [ Plain [ Str "Third" ] ] ] , Para [ Str "and" , Space , Str "using" , Space , Str "spaces:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Plain [ Str "One" ] ] , [ Plain [ Str "Two" ] ] , [ Plain [ Str "Three" ] ] ] , Para [ Str "Multiple" , Space , Str "paragraphs:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Para [ Str "Item" , Space , Str "1," , Space , Str "graf" , Space , Str "one." ] , Para [ Str "Item" , Space , Str "1." , Space , Str "graf" , Space , Str "two." , Space , Str "The" , Space , Str "quick" , Space , Str "brown" , Space , Str "fox" , Space , Str "jumped" , Space , Str "over" , Space , Str "the" , Space , Str "lazy" , Space , Str "dog\8217s" , SoftBreak , Str "back." ] ] , [ Para [ Str "Item" , Space , Str "2." ] ] , [ Para [ Str "Item" , Space , Str "3." ] ] ] , Para [ Str "Nested:" ] , BulletList [ [ Plain [ Str "Tab" ] , BulletList [ [ Plain [ Str "Tab" ] , BulletList [ [ Plain [ Str "Tab" ] ] ] ] ] ] ] , Para [ Str "Here\8217s" , Space , Str "another:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Para [ Str "First" ] ] , [ Para [ Str "Second:" ] , BlockQuote [ BulletList [ [ Plain [ Str "Fee" ] ] , [ Plain [ Str "Fie" ] ] , [ Plain [ Str "Foe" ] ] ] ] ] , [ Para [ Str "Third" ] ] ] , Header 2 ( "fancy-list-markers" , [] , [] ) [ Str "Fancy" , Space , Str "list" , Space , Str "markers" ] , OrderedList ( 2 , Decimal , TwoParens ) [ [ Para [ Str "begins" , Space , Str "with" , Space , Str "2" ] ] , [ Para [ Str "and" , Space , Str "now" , Space , Str "3" ] , Para [ Str "with" , Space , Str "a" , Space , Str "continuation" ] , OrderedList ( 4 , LowerRoman , Period ) [ [ Plain [ Str "sublist" , Space , Str "with" , Space , Str "roman" , Space , Str "numerals," , Space , Str "starting" , Space , Str "with" , Space , Str "4" ] ] , [ Plain [ Str "more" , Space , Str "items" ] , OrderedList ( 1 , UpperAlpha , TwoParens ) [ [ Plain [ Str "a" , Space , Str "subsublist" ] ] , [ Plain [ Str "a" , Space , Str "subsublist" ] ] ] ] ] ] ] , Para [ Str "Nesting:" ] , OrderedList ( 1 , UpperAlpha , Period ) [ [ Plain [ Str "Upper" , Space , Str "Alpha" ] , OrderedList ( 1 , UpperRoman , Period ) [ [ Plain [ Str "Upper" , Space , Str "Roman." ] , OrderedList ( 6 , Decimal , TwoParens ) [ [ Plain [ Str "Decimal" , Space , Str "start" , Space , Str "with" , Space , Str "6" ] , OrderedList ( 3 , LowerAlpha , OneParen ) [ [ Plain [ Str "Lower" , Space , Str "alpha" , Space , Str "with" , Space , Str "paren" ] ] ] ] ] ] ] ] ] , Para [ Str "Autonumbering:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Autonumber." ] ] , [ Plain [ Str "More." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Nested." ] ] ] ] ] , Para [ Str "Autonumbering" , Space , Str "with" , Space , Str "explicit" , Space , Str "start:" ] , OrderedList ( 4 , LowerAlpha , TwoParens ) [ [ Plain [ Str "item" , Space , Str "1" ] ] , [ Plain [ Str "item" , Space , Str "2" ] ] ] , Header 2 ( "definition" , [] , [] ) [ Str "Definition" ] , DefinitionList [ ( [ Str "term" , Space , Str "1" ] , [ [ Para [ Str "Definition" , Space , Str "1." ] ] ] ) , ( [ Str "term" , Space , Str "2" ] , [ [ Para [ Str "Definition" , Space , Str "2," , Space , Str "paragraph" , Space , Str "1." ] , Para [ Str "Definition" , Space , Str "2," , Space , Str "paragraph" , Space , Str "2." ] ] ] ) , ( [ Str "term" , Space , Str "with" , Space , Emph [ Str "emphasis" ] ] , [ [ Para [ Str "Definition" , Space , Str "3." ] ] ] ) ] , Header 1 ( "field-lists" , [] , [] ) [ Str "Field" , Space , Str "Lists" ] , BlockQuote [ DefinitionList [ ( [ Str "address" ] , [ [ Para [ Str "61" , Space , Str "Main" , Space , Str "St." ] ] ] ) , ( [ Str "city" ] , [ [ Para [ Emph [ Str "Nowhere" ] , Str "," , Space , Str "MA," , SoftBreak , Str "USA" ] ] ] ) , ( [ Str "phone" ] , [ [ Para [ Str "123-4567" ] ] ] ) ] ] , DefinitionList [ ( [ Str "address" ] , [ [ Para [ Str "61" , Space , Str "Main" , Space , Str "St." ] ] ] ) , ( [ Str "city" ] , [ [ Para [ Emph [ Str "Nowhere" ] , Str "," , Space , Str "MA," , SoftBreak , Str "USA" ] ] ] ) , ( [ Str "phone" ] , [ [ Para [ Str "123-4567" ] ] ] ) ] , Header 1 ( "html-blocks" , [] , [] ) [ Str "HTML" , Space , Str "Blocks" ] , Para [ Str "Simple" , Space , Str "block" , Space , Str "on" , Space , Str "one" , Space , Str "line:" ] , RawBlock (Format "html") "

                " , Para [ Str "Now," , Space , Str "nested:" ] , RawBlock (Format "html") "
                \n
                \n
                \n foo\n
                \n
                \n
                " , Header 1 ( "latex-block" , [] , [] ) [ Str "LaTeX" , Space , Str "Block" ] , RawBlock (Format "latex") "\\begin{tabular}{|l|l|}\\hline\nAnimal & Number \\\\ \\hline\nDog & 2 \\\\\nCat & 1 \\\\ \\hline\n\\end{tabular}" , Header 1 ( "inline-markup" , [] , [] ) [ Str "Inline" , Space , Str "Markup" ] , Para [ Str "This" , Space , Str "is" , Space , Emph [ Str "emphasized" ] , Str "." , Space , Str "This" , Space , Str "is" , Space , Strong [ Str "strong" ] , Str "." ] , Para [ Str "This" , Space , Str "is" , Space , Str "code:" , Space , Code ( "" , [] , [] ) ">" , Str "," , Space , Code ( "" , [] , [] ) "$" , Str "," , Space , Code ( "" , [] , [] ) "\\" , Str "," , Space , Code ( "" , [] , [] ) "\\$" , Str "," , Space , Code ( "" , [] , [] ) "" , Str "." ] , Para [ Str "This" , Space , Str "is" , Subscript [ Str "subscripted" ] , Space , Str "and" , Space , Str "this" , Space , Str "is" , Space , Superscript [ Str "superscripted" ] , Str "." ] , Header 1 ( "special-characters" , [] , [] ) [ Str "Special" , Space , Str "Characters" ] , Para [ Str "Here" , Space , Str "is" , Space , Str "some" , Space , Str "unicode:" ] , BulletList [ [ Plain [ Str "I" , Space , Str "hat:" , Space , Str "\206" ] ] , [ Plain [ Str "o" , Space , Str "umlaut:" , Space , Str "\246" ] ] , [ Plain [ Str "section:" , Space , Str "\167" ] ] , [ Plain [ Str "set" , Space , Str "membership:" , Space , Str "\8712" ] ] , [ Plain [ Str "copyright:" , Space , Str "\169" ] ] ] , Para [ Str "AT&T" , Space , Str "has" , Space , Str "an" , Space , Str "ampersand" , Space , Str "in" , Space , Str "their" , Space , Str "name." ] , Para [ Str "This" , Space , Str "&" , Space , Str "that." ] , Para [ Str "4" , Space , Str "<" , Space , Str "5." ] , Para [ Str "6" , Space , Str ">" , Space , Str "5." ] , Para [ Str "Backslash:" , Space , Str "\\" ] , Para [ Str "Backtick:" , Space , Str "`" ] , Para [ Str "Asterisk:" , Space , Str "*" ] , Para [ Str "Underscore:" , Space , Str "_" ] , Para [ Str "Left" , Space , Str "brace:" , Space , Str "{" ] , Para [ Str "Right" , Space , Str "brace:" , Space , Str "}" ] , Para [ Str "Left" , Space , Str "bracket:" , Space , Str "[" ] , Para [ Str "Right" , Space , Str "bracket:" , Space , Str "]" ] , Para [ Str "Left" , Space , Str "paren:" , Space , Str "(" ] , Para [ Str "Right" , Space , Str "paren:" , Space , Str ")" ] , Para [ Str "Greater-than:" , Space , Str ">" ] , Para [ Str "Hash:" , Space , Str "#" ] , Para [ Str "Period:" , Space , Str "." ] , Para [ Str "Bang:" , Space , Str "!" ] , Para [ Str "Plus:" , Space , Str "+" ] , Para [ Str "Minus:" , Space , Str "-" ] , Header 1 ( "links" , [] , [] ) [ Str "Links" ] , Para [ Str "Explicit:" , Space , Str "a" , Space , Link ( "" , [] , [] ) [ Str "URL" ] ( "/url/" , "" ) , Str "." ] , Para [ Str "Explicit" , Space , Str "with" , Space , Str "no" , Space , Str "label:" , Space , Link ( "" , [] , [] ) [ Str "foo" ] ( "foo" , "" ) , Str "." ] , Para [ Str "Two" , Space , Str "anonymous" , Space , Str "links:" , Space , Link ( "" , [] , [] ) [ Str "the" , Space , Str "first" ] ( "/url1/" , "" ) , Space , Str "and" , Space , Link ( "" , [] , [] ) [ Str "the" , Space , Str "second" ] ( "/url2/" , "" ) ] , Para [ Str "Reference" , Space , Str "links:" , Space , Link ( "" , [] , [] ) [ Str "link1" ] ( "/url1/" , "" ) , Space , Str "and" , Space , Link ( "" , [] , [] ) [ Str "link2" ] ( "/url2/" , "" ) , Space , Str "and" , Space , Link ( "" , [] , [] ) [ Str "link1" ] ( "/url1/" , "" ) , Space , Str "again." ] , Para [ Str "Another" , Space , Link ( "" , [] , [] ) [ Str "style" , Space , Str "of" , Space , Str "reference" , Space , Str "link" ] ( "/url1/" , "" ) , Str "." ] , Para [ Str "Here\8217s" , Space , Str "a" , Space , Link ( "" , [] , [] ) [ Str "link" , Space , Str "with" , Space , Str "an" , Space , Str "ampersand" , Space , Str "in" , Space , Str "the" , Space , Str "URL" ] ( "http://example.com/?foo=1&bar=2" , "" ) , Str "." ] , Para [ Str "Here\8217s" , Space , Str "a" , Space , Str "link" , Space , Str "with" , Space , Str "an" , Space , Str "amersand" , Space , Str "in" , Space , Str "the" , Space , Str "link" , Space , Str "text:" , Space , Link ( "" , [] , [] ) [ Str "AT&T" ] ( "/url/" , "" ) , Str "." ] , Para [ Str "Autolinks:" , Space , Link ( "" , [] , [] ) [ Str "http://example.com/?foo=1&bar=2" ] ( "http://example.com/?foo=1&bar=2" , "" ) , Space , Str "and" , Space , Link ( "" , [] , [] ) [ Str "nobody@nowhere.net" ] ( "mailto:nobody@nowhere.net" , "" ) , Str "." ] , Para [ Str "But" , Space , Str "not" , Space , Str "here:" ] , CodeBlock ( "" , [] , [] ) "http://example.com/" , Header 1 ( "images" , [] , [] ) [ Str "Images" ] , Para [ Str "From" , Space , Quoted DoubleQuote [ Str "Voyage" , Space , Str "dans" , Space , Str "la" , Space , Str "Lune" ] , Space , Str "by" , Space , Str "Georges" , Space , Str "Melies" , Space , Str "(1902):" ] , Para [ Image ( "" , [] , [] ) [ Str "image" ] ( "lalune.jpg" , "" ) ] , Para [ Image ( "" , [] , [ ( "height" , "2343px" ) ] ) [ Str "Voyage dans la Lune" ] ( "lalune.jpg" , "" ) ] , Para [ Str "Here" , Space , Str "is" , Space , Str "a" , Space , Str "movie" , Space , Image ( "" , [] , [] ) [ Str "movie" ] ( "movie.jpg" , "" ) , Space , Str "icon." ] , Para [ Str "And" , Space , Str "an" , Space , Link ( "" , [] , [] ) [ Image ( "" , [] , [] ) [ Str "A movie" ] ( "movie.jpg" , "" ) ] ( "/url" , "" ) , Str "." ] , Header 1 ( "comments" , [] , [] ) [ Str "Comments" ] , Para [ Str "First" , Space , Str "paragraph" ] , Para [ Str "Another" , Space , Str "paragraph" ] , Para [ Str "A" , Space , Str "third" , Space , Str "paragraph" ] , Header 1 ( "line-blocks" , [] , [] ) [ Str "Line" , Space , Str "blocks" ] , LineBlock [ [ Str "But" , Space , Str "can" , Space , Str "a" , Space , Str "bee" , Space , Str "be" , Space , Str "said" , Space , Str "to" , Space , Str "be" ] , [ Str "\160\160\160\160or" , Space , Str "not" , Space , Str "to" , Space , Str "be" , Space , Str "an" , Space , Str "entire" , Space , Str "bee," ] , [ Str "\160\160\160\160\160\160\160\160when" , Space , Str "half" , Space , Str "the" , Space , Str "bee" , Space , Str "is" , Space , Str "not" , Space , Str "a" , Space , Str "bee," ] , [ Str "\160\160\160\160\160\160\160\160\160\160\160\160due" , Space , Str "to" , Space , Str "some" , Space , Str "ancient" , Space , Str "injury?" ] , [] , [ Str "Continuation" , Space , Str "line" ] , [ Str "\160\160and" , Space , Str "another" ] ] , Header 1 ( "simple-tables" , [] , [] ) [ Str "Simple" , Space , Str "Tables" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "col" , Space , Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "col" , Space , Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "col" , Space , Str "3" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "r1" , Space , Str "a" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "b" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "c" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "r2" , Space , Str "d" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "e" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "f" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Headless" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "r1" , Space , Str "a" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "b" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "c" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "r2" , Space , Str "d" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "e" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "f" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Header 1 ( "grid-tables" , [] , [] ) [ Str "Grid" , Space , Str "Tables" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidth 0.2375 ) , ( AlignDefault , ColWidth 0.15 ) , ( AlignDefault , ColWidth 0.1625 ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "col" , Space , Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "col" , Space , Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "col" , Space , Str "3" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "r1" , Space , Str "a" , SoftBreak , Str "r1" , Space , Str "bis" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "b" , SoftBreak , Str "b" , Space , Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "c" , SoftBreak , Str "c" , Space , Str "2" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "r2" , Space , Str "d" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "e" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "f" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Headless" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidth 0.2375 ) , ( AlignDefault , ColWidth 0.15 ) , ( AlignDefault , ColWidth 0.1625 ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "r1" , Space , Str "a" , SoftBreak , Str "r1" , Space , Str "bis" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "b" , SoftBreak , Str "b" , Space , Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "c" , SoftBreak , Str "c" , Space , Str "2" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "r2" , Space , Str "d" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "e" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "f" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Spaces" , Space , Str "at" , Space , Str "ends" , Space , Str "of" , Space , Str "lines" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidth 0.2375 ) , ( AlignDefault , ColWidth 0.15 ) , ( AlignDefault , ColWidth 0.1625 ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "r1" , Space , Str "a" , SoftBreak , Str "r1" , Space , Str "bis" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "b" , SoftBreak , Str "b" , Space , Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "c" , SoftBreak , Str "c" , Space , Str "2" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "r2" , Space , Str "d" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "e" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "f" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Multiple" , Space , Str "blocks" , Space , Str "in" , Space , Str "a" , Space , Str "cell" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidth 0.2375 ) , ( AlignDefault , ColWidth 0.15 ) , ( AlignDefault , ColWidth 0.1625 ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "r1" , Space , Str "a" ] , Para [ Str "r1" , Space , Str "bis" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ BulletList [ [ Plain [ Str "b" ] ] , [ Plain [ Str "b" , Space , Str "2" ] ] , [ Plain [ Str "b" , Space , Str "2" ] ] ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "c" , SoftBreak , Str "c" , Space , Str "2" , SoftBreak , Str "c" , Space , Str "2" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Table" , Space , Str "with" , Space , Str "cells" , Space , Str "spanning" , Space , Str "multiple" , Space , Str "rows" , Space , Str "or" , Space , Str "columns:" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidth 0.175 ) , ( AlignDefault , ColWidth 0.1 ) , ( AlignDefault , ColWidth 0.1375 ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 2) [ Plain [ Str "Property" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Earth" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 3) (ColSpan 1) [ Plain [ Str "Temperature" , SoftBreak , Str "1961-1990" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "min" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "-89.2" , Space , Str "\176C" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "mean" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "14" , Space , Str "\176C" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "min" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "56.7" , Space , Str "\176C" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Table" , Space , Str "with" , Space , Str "complex" , Space , Str "header:" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidth 0.275 ) , ( AlignDefault , ColWidth 0.1 ) , ( AlignDefault , ColWidth 0.1 ) , ( AlignDefault , ColWidth 0.1 ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 2) (ColSpan 1) [ Plain [ Str "Location" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 3) [ Plain [ Str "Temperature" , Space , Str "1961-1990" , SoftBreak , Str "in" , Space , Str "degree" , Space , Str "Celsius" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "min" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "mean" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "max" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Antarctica" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "-89.2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "N/A" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "19.8" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Earth" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "-89.2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "14" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "56.7" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Header 1 ( "footnotes" , [] , [] ) [ Str "Footnotes" ] , Para [ Note [ Para [ Str "Note" , Space , Str "with" , Space , Str "one" , Space , Str "line." ] ] ] , Para [ Note [ Para [ Str "Note" , Space , Str "with" , SoftBreak , Str "continuation" , Space , Str "line." ] ] ] , Para [ Note [ Para [ Str "Note" , Space , Str "with" ] , Para [ Str "continuation" , Space , Str "block." ] ] ] , Para [ Note [ Para [ Str "Note" , Space , Str "with" , SoftBreak , Str "continuation" , Space , Str "line" ] , Para [ Str "and" , Space , Str "a" , Space , Str "second" , Space , Str "para." ] ] ] , Para [ Str "Not" , Space , Str "in" , Space , Str "note." ] , Header 1 ( "math" , [] , [] ) [ Str "Math" ] , Para [ Str "Some" , Space , Str "inline" , Space , Str "math" , Space , Math InlineMath "E=mc^2" , Str "." , Space , Str "Now" , Space , Str "some" , SoftBreak , Str "display" , Space , Str "math:" ] , Para [ Math DisplayMath "E=mc^2" ] , Para [ Math DisplayMath "E = mc^2" ] , Para [ Math DisplayMath "E = mc^2" , Math DisplayMath "\\alpha = \\beta" ] , Para [ Span ( "" , [] , [ ( "label" , "hithere" ) , ( "nowrap" , "" ) ] ) [ Math DisplayMath "\\begin{aligned}\nE &= mc^2\\\\\nF &= \\pi E\n\\end{aligned}" , Math DisplayMath "F &= \\gamma \\alpha^2" ] ] , Para [ Str "All" , Space , Str "done." ] , Header 1 ( "default-role" , [] , [] ) [ Str "Default-Role" ] , Para [ Str "Try" , Space , Str "changing" , Space , Str "the" , Space , Str "default" , Space , Str "role" , Space , Str "to" , Space , Str "a" , Space , Str "few" , Space , Str "different" , Space , Str "things." ] , Header 2 ( "doesnt-break-title-parsing" , [] , [] ) [ Str "Doesn\8217t" , Space , Str "Break" , Space , Str "Title" , Space , Str "Parsing" ] , Para [ Str "Inline" , Space , Str "math:" , Space , Math InlineMath "E=mc^2" , Space , Str "or" , Space , Math InlineMath "E=mc^2" , Space , Str "or" , Space , Math InlineMath "E=mc^2" , Str "." , SoftBreak , Str "Other" , Space , Str "roles:" , Space , Superscript [ Str "super" ] , Str "," , Space , Subscript [ Str "sub" ] , Str "." ] , Para [ Math DisplayMath "\\alpha = beta" , Math DisplayMath "E = mc^2" ] , Para [ Str "Some" , Space , Superscript [ Str "of" ] , Space , Str "these" , Space , Superscript [ Str "words" ] , Space , Str "are" , Space , Str "in" , Space , Superscript [ Str "superscript" ] , Str "." ] , Para [ Str "Reset" , Space , Str "default-role" , Space , Str "to" , Space , Str "the" , Space , Str "default" , Space , Str "default." ] , Para [ Str "And" , Space , Str "now" , Space , Span ( "" , [ "title-ref" ] , [] ) [ Str "some-invalid-string-3231231" ] , Space , Str "is" , Space , Str "nonsense." ] , Para [ Str "And" , Space , Str "now" , Space , Str "with" , Space , RawInline (Format "html") "inline HTML" , Str "." ] , Para [ Str "And" , Space , Str "some" , Space , Str "inline" , Space , Str "haskell" , Space , Code ( "" , [ "haskell" ] , [] ) "fmap id [1,2..10]" , Str "." ] , Para [ Str "Indirect" , Space , Str "python" , Space , Str "role" , Space , Code ( "" , [ "py" , "python" , "indirect" ] , [] ) "[x*x for x in [1,2,3,4,5]]" , Str "." ] , Para [ Str "Different" , Space , Str "indirect" , Space , Str "C" , Space , Code ( "" , [ "c" , "different-indirect" ] , [] ) "int x = 15;" , Str "." ] , Header 2 ( "literal-symbols" , [] , [] ) [ Str "Literal" , Space , Str "symbols" ] , Para [ Str "2*2" , Space , Str "=" , Space , Str "4*1" ] ] pandoc-3.1.3/test/rst-reader.rst0000644000000000000000000002332507346545000014741 0ustar0000000000000000Pandoc Test Suite ################# Subtitle ^^^^^^^^ :Authors: John MacFarlane; Anonymous :Date: July 17, 2006 :Revision: 3 Level one header ================ This is a set of tests for pandoc. Most of them are adapted from John Gruber's markdown test suite. Level two header ---------------- Level three +++++++++++ Level four with *emphasis* ~~~~~~~~~~~~~~~~~~~~~~~~~~ Level five '''''''''' Paragraphs ========== Here's a regular paragraph. In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item. Here's one with a bullet. * criminey. Horizontal rule: ----- Another: **** Block Quotes ============ Here's a block quote: This is a block quote. It is pretty short. Here's another, differently indented: This is a block quote. It's indented with a tab. Code in a block quote:: sub status { print "working"; } List in a block quote: 1. item one 2. item two Nested block quotes: nested nested Code Blocks =========== Code: :: ---- (should be four hyphens) sub status { print "working"; } :: this code block is indented by one tab And:: this block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{ And: .. code-block:: python def my_function(x): return x + 1 If we use the highlight directive, we can specify a default language for literate blocks. .. highlight:: haskell :: -- this code is in haskell data Tree = Leaf | Node Tree Tree :: -- this code is in haskell too data Nat = Zero | Succ Nat .. highlight:: javascript :: -- this code is in javascript let f = (x, y) => x + y .. highlight:: Lists ===== Unordered --------- Asterisks tight: * asterisk 1 * asterisk 2 * asterisk 3 Asterisks loose: * asterisk 1 * asterisk 2 * asterisk 3 Pluses tight: + Plus 1 + Plus 2 + Plus 3 Pluses loose: + Plus 1 + Plus 2 + Plus 3 Minuses tight: - Minus 1 - Minus 2 - Minus 3 Minuses loose: - Minus 1 - Minus 2 - Minus 3 Ordered ------- Tight: 1. First 2. Second 3. Third and: 1. One 2. Two 3. Three Loose using tabs: 1. First 2. Second 3. Third and using spaces: 1. One 2. Two 3. Three Multiple paragraphs: 1. Item 1, graf one. Item 1. graf two. The quick brown fox jumped over the lazy dog's back. 2. Item 2. 3. Item 3. Nested: * Tab * Tab * Tab Here's another: 1. First 2. Second: * Fee * Fie * Foe 3. Third Fancy list markers ------------------ (2) begins with 2 (3) and now 3 with a continuation iv. sublist with roman numerals, starting with 4 v. more items (A) a subsublist (B) a subsublist Nesting: A. Upper Alpha I. Upper Roman. (6) Decimal start with 6 c) Lower alpha with paren Autonumbering: #. Autonumber. #. More. #. Nested. Autonumbering with explicit start: (d) item 1 (#) item 2 Definition ---------- term 1 Definition 1. term 2 Definition 2, paragraph 1. Definition 2, paragraph 2. term with *emphasis* Definition 3. Field Lists =========== :address: 61 Main St. :city: *Nowhere*, MA, USA :phone: 123-4567 :address: 61 Main St. :city: *Nowhere*, MA, USA :phone: 123-4567 HTML Blocks =========== Simple block on one line: .. raw:: html
                foo
                Now, nested: .. raw:: html
                foo
                LaTeX Block =========== .. raw:: latex \begin{tabular}{|l|l|}\hline Animal & Number \\ \hline Dog & 2 \\ Cat & 1 \\ \hline \end{tabular} Inline Markup ============= This is *emphasized*. This is **strong**. This is code: ``>``, ``$``, ``\``, ``\$``, ````. This is\ :sub:`subscripted` and this is :sup:`superscripted`\ . Special Characters ================== Here is some unicode: - I hat: Î - o umlaut: ö - section: § - set membership: ∈ - copyright: © AT&T has an ampersand in their name. This & that. 4 < 5. 6 > 5. Backslash: \\ Backtick: \` Asterisk: \* Underscore: \_ Left brace: \{ Right brace: \} Left bracket: \[ Right bracket: \] Left paren: \( Right paren: \) Greater-than: \> Hash: \# Period: \. Bang: \! Plus: \+ Minus: \- Links ===== Explicit: a `URL `_. Explicit with no label: ``_. Two anonymous links: `the first`__ and `the second`__ __ /url1/ __ /url2/ Reference links: `link1`_ and `link2`_ and link1_ again. .. _link1: /url1/ .. _`link2`: /url2/ Another `style of reference link `_. Here's a `link with an ampersand in the URL`_. Here's a link with an amersand in the link text: `AT&T `_. .. _link with an ampersand in the URL: http://example.com/?foo=1&bar=2 Autolinks: http://example.com/?foo=1&bar=2 and nobody@nowhere.net. But not here:: http://example.com/ Images ====== From "Voyage dans la Lune" by Georges Melies (1902): .. image:: lalune.jpg .. image:: lalune.jpg :height: 2343 :alt: Voyage dans la Lune Here is a movie |movie| icon. .. |movie| image:: movie.jpg And an |image with a link|. .. |image with a link| image:: movie.jpg :alt: A movie :target: /url Comments ======== First paragraph .. comment .. Comment block, should not appear in output as defined by reStructuredText Another paragraph .. Another comment block. This one spans several text elements. It doesn't end until indentation is restored to the preceding level. A third paragraph Line blocks =========== | But can a bee be said to be | or not to be an entire bee, | when half the bee is not a bee, | due to some ancient injury? | | Continuation line | and another Simple Tables ============= ================== =========== ========== col 1 col 2 col 3 ================== =========== ========== r1 a b c r2 d e f ================== =========== ========== Headless ================== =========== ========== r1 a b c r2 d e f ================== =========== ========== Grid Tables =========== +------------------+-----------+------------+ | col 1 | col 2 | col 3 | +==================+===========+============+ | r1 a | b | c | | r1 bis | b 2 | c 2 | +------------------+-----------+------------+ | r2 d | e | f | +------------------+-----------+------------+ Headless +------------------+-----------+------------+ | r1 a | b | c | | r1 bis | b 2 | c 2 | +------------------+-----------+------------+ | r2 d | e | f | +------------------+-----------+------------+ Spaces at ends of lines +------------------+-----------+------------+ | r1 a | b | c | | r1 bis | b 2 | c 2 | +------------------+-----------+------------+ | r2 d | e | f | +------------------+-----------+------------+ Multiple blocks in a cell +------------------+-----------+------------+ | r1 a | - b | c | | | - b 2 | c 2 | | r1 bis | - b 2 | c 2 | +------------------+-----------+------------+ Table with cells spanning multiple rows or columns: +---------------------+----------+ | Property | Earth | +=============+=======+==========+ | | min | -89.2 °C | | Temperature +-------+----------+ | 1961-1990 | mean | 14 °C | | +-------+----------+ | | min | 56.7 °C | +-------------+-------+----------+ Table with complex header: +---------------------+-----------------------+ | Location | Temperature 1961-1990 | | | in degree Celsius | | +-------+-------+-------+ | | min | mean | max | +=====================+=======+=======+=======+ | Antarctica | -89.2 | N/A | 19.8 | +---------------------+-------+-------+-------+ | Earth | -89.2 | 14 | 56.7 | +---------------------+-------+-------+-------+ Footnotes ========= [1]_ [#]_ [#]_ [*]_ .. [1] Note with one line. .. [#] Note with continuation line. .. [#] Note with continuation block. .. [*] Note with continuation line and a second para. Not in note. Math ==== Some inline math :math:`E=mc^2`\ . Now some display math: .. math:: E=mc^2 .. math:: E = mc^2 .. math:: E = mc^2 \alpha = \beta .. math:: :label: hithere :nowrap: E &= mc^2\\ F &= \pi E F &= \gamma \alpha^2 All done. Default-Role ============ Try changing the default role to a few different things. .. default-role:: math Doesn't Break Title Parsing --------------------------- Inline math: `E=mc^2` or :math:`E=mc^2` or `E=mc^2`:math:. Other roles: :sup:`super`, `sub`:sub:. .. math:: \alpha = beta E = mc^2 .. default-role:: sup Some `of` these :sup:`words` are in `superscript`:sup:. Reset default-role to the default default. .. default-role:: And now `some-invalid-string-3231231` is nonsense. .. role:: html(raw) :format: html And now with :html:`inline HTML`. .. role:: haskell(code) :language: haskell And some inline haskell :haskell:`fmap id [1,2..10]`. .. role:: indirect(code) .. role:: py(indirect) :language: python Indirect python role :py:`[x*x for x in [1,2,3,4,5]]`. .. role:: different-indirect(code) :language: c .. role:: c(different-indirect) Different indirect C :c:`int x = 15;`. Literal symbols --------------- 2*2 = 4*1 pandoc-3.1.3/test/rtf/0000755000000000000000000000000007346545000012725 5ustar0000000000000000pandoc-3.1.3/test/rtf/accent.native0000644000000000000000000000042207346545000015370 0ustar0000000000000000Pandoc Meta { unMeta = fromList [] } [ Para [ Str "le" , Space , Str "caf\233" , Space , Str "o\249" , Space , Str "on" , Space , Str "ne" , Space , Str "fume" , Space , Str "pas" ] ] pandoc-3.1.3/test/rtf/accent.rtf0000644000000000000000000000006207346545000014675 0ustar0000000000000000{\rtf1\ansi { le caf\'e9 o\'f9 on ne fume pas } } pandoc-3.1.3/test/rtf/bookmark.native0000644000000000000000000000037207346545000015744 0ustar0000000000000000Pandoc Meta { unMeta = fromList [] } [ Para [ Span ( "bookmark_1" , [] , [] ) [ Str "Bookmark_1" ] ] , Para [ Link ( "" , [] , [] ) [ Str "click" , Space , Str "me" ] ( "#bookmark_1" , "" ) ] ] pandoc-3.1.3/test/rtf/bookmark.rtf0000644000000000000000000000025007346545000015244 0ustar0000000000000000{\rtf1\ansi \pard {\*\bkmkstart bookmark_1}Bookmark_1{\*\bkmkend bookmark_1} \par \pard {\field{\*\fldinst { HYPERLINK \\l "bookmark_1" }}{\fldrslt{click me}}} \par } pandoc-3.1.3/test/rtf/footnote.native0000644000000000000000000000466407346545000016004 0ustar0000000000000000Pandoc Meta { unMeta = fromList [] } [ Para [ Str "Mead's" , Space , Str "landmark" , Space , Str "study" , Space , Str "has" , Space , Str "been" , Space , Str "amply" , Space , Str "annotated." , Note [ Para [ Str "See" , Space , Str "Sahlins," , Space , Str "Bateson," , Space , Str "and" , Space , Str "Geertz" , Space , Str "for" , Space , Str "a" , Space , Str "complete" , Space , Str "bibliography." ] ] , Space , Str "It" , Space , Str "was" , Space , Str "her" , Space , Str "work" , Space , Str "in" , Space , Str "America" , Space , Str "during" , Space , Str "the" , Space , Str "Second" , Space , Str "World" , Space , Str "War," , Space , Str "however," , Space , Str "that" , Space , Str "forms" , Space , Str "the" , Space , Str "basis" , Space , Str "for" , Space , Str "the" , Space , Str "paper." , Space , Str "As" , Space , Str "others" , Space , Str "have" , Space , Str "noted," , Note [ Para [ Str "A" , Space , Str "complete" , Space , Str "bibliography" , Space , Str "will" , Space , Str "be" , Space , Str "found" , Space , Str "at" , Space , Str "the" , Space , Str "end" , Space , Str "of" , Space , Str "this" , Space , Str "chapter." ] ] , Space , Str "this" , Space , Str "period" , Space , Str "was" , Space , Str "a" , Space , Str "turning" , Space , Str "point" , Space , Str "for" , Space , Str "Margaret" , Space , Str "Mead." ] ] pandoc-3.1.3/test/rtf/footnote.rtf0000644000000000000000000000106607346545000015302 0ustar0000000000000000{\rtf1\ansi \ftnbj\ftnrestart \sectd \linemod0\linex0\endnhere \pard\plain \ri1170 \fs20 {\pu6 Mead's landmark study has been amply annotated.\chftn {\footnote \pard\plain \s246 \fs20 {\up6\chftn } See Sahlins, Bateson, and Geertz for a complete bibliography.} It was her work in America during the Second World War, however, that forms the basis for the paper. As others have noted,\chftn {\footnote \pard\plain \s246 \fs20 {\up6\chftn} A complete bibliography will be found at the end of this chapter.} this period was a turning point for Margaret Mead.} \par} pandoc-3.1.3/test/rtf/formatting.native0000644000000000000000000000171607346545000016314 0ustar0000000000000000Pandoc Meta { unMeta = fromList [ ( "operator" , MetaInlines [ Str "John" , Space , Str "MacFarlane" ] ) ] } [ Para [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "test" , Space , Str "of" , Space , Str "FORMATTING." , Space , Str "This" , Space , Str "is" , Space , Str "hidden:" , Space , Str "." ] , Para [ SmallCaps [ Str "Small" , Space , Str "Caps" ] ] , Para [ Strong [ Str "bold" ] ] , Para [ Emph [ Str "italics" ] ] , Para [ Strong [ Str "bold" , Space , Emph [ Str "and" , Space , Str "italics" ] ] ] , Para [ Underline [ Str "underlined" ] ] , Para [ Strikeout [ Str "strikeout" ] ] , Para [ Str "x" , Superscript [ Str "superscript" ] ] , Para [ Str "x" , Subscript [ Str "subscript" ] ] ] pandoc-3.1.3/test/rtf/formatting.rtf0000644000000000000000000011642007346545000015620 0ustar0000000000000000{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi31507\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f4\fbidi \fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Helvetica;} {\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} {\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0302020204030204}Calibri Light;} {\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} {\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;} {\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1068\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f1069\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} {\f1071\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f1072\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f1073\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} {\f1074\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f1075\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f1076\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f1108\fbidi \fnil\fcharset238\fprq2 Helvetica CE;} {\f1109\fbidi \fnil\fcharset204\fprq2 Helvetica Cyr;}{\f1111\fbidi \fnil\fcharset161\fprq2 Helvetica Greek;}{\f1112\fbidi \fnil\fcharset162\fprq2 Helvetica Tur;}{\f1115\fbidi \fnil\fcharset186\fprq2 Helvetica Baltic;} {\f1116\fbidi \fnil\fcharset163\fprq2 Helvetica (Vietnamese);}{\f1408\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f1409\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;}{\f1411\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;} {\f1412\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f1415\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}{\f1416\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);} {\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} {\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} {\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} {\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} {\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} {\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Calibri Light CE;}{\fhimajor\f31529\fbidi \fswiss\fcharset204\fprq2 Calibri Light Cyr;} {\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Calibri Light Greek;}{\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Calibri Light Tur;}{\fhimajor\f31533\fbidi \fswiss\fcharset177\fprq2 Calibri Light (Hebrew);} {\fhimajor\f31534\fbidi \fswiss\fcharset178\fprq2 Calibri Light (Arabic);}{\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Calibri Light Baltic;}{\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Calibri Light (Vietnamese);} {\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} {\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} {\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} {\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} {\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} {\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} {\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} {\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} {\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;} {\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} {\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} {\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}} {\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0; \red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red0\green0\blue0;\red0\green0\blue0;}{\*\defchp \fs24\loch\af31506\hich\af31506\dbch\af31505 }{\*\defpap \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1033\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\* \ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1033\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused Normal Table;}}{\*\rsidtbl \rsid2168431\rsid14113975}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\operator John MacFarlane} {\creatim\yr2021\mo8\dy4\hr17\min1}{\revtim\yr2021\mo8\dy4\hr17\min2}{\version2}{\edmins1}{\nofpages1}{\nofwords21}{\nofchars120}{\nofcharsws140}{\vern6543}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}} \paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect \widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\dghorigin1701 \dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\rsidroot2168431 \fet0{\*\wgrffmtfilter 2450}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2 \pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6 \pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1033\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af4 \ltrch\fcs0 \f4\insrsid14113975 \hich\af4\dbch\af31505\loch\f4 This is a test of }{\rtlch\fcs1 \af4 \ltrch\fcs0 \caps\f4\insrsid14113975\charrsid2168431 \hich\af4\dbch\af31505\loch\f4 formatting}{\rtlch\fcs1 \af4 \ltrch\fcs0 \f4\insrsid14113975 .}{\rtlch\fcs1 \af4 \ltrch\fcs0 \f4\insrsid2168431 \hich\af4\dbch\af31505\loch\f4 This is hidden: }{\rtlch\fcs1 \af4 \ltrch\fcs0 \v\f4\insrsid2168431\charrsid2168431 \hich\af4\dbch\af31505\loch\f4 secret}{\rtlch\fcs1 \af4 \ltrch\fcs0 \f4\insrsid2168431 .}{\rtlch\fcs1 \af4 \ltrch\fcs0 \f4\insrsid14113975 \par }{\rtlch\fcs1 \af4 \ltrch\fcs0 \scaps\f4\insrsid14113975\charrsid2168431 \hich\af4\dbch\af31505\loch\f4 Small Caps \par }{\rtlch\fcs1 \ab\af4 \ltrch\fcs0 \b\f4\insrsid14113975 \hich\af4\dbch\af31505\loch\f4 bold}{\rtlch\fcs1 \af4 \ltrch\fcs0 \f4\insrsid14113975 \par }{\rtlch\fcs1 \ai\af4 \ltrch\fcs0 \i\f4\insrsid14113975 \hich\af4\dbch\af31505\loch\f4 italics}{\rtlch\fcs1 \af4 \ltrch\fcs0 \f4\insrsid14113975 \par }{\rtlch\fcs1 \ab\af4 \ltrch\fcs0 \b\f4\insrsid14113975 \hich\af4\dbch\af31505\loch\f4 bold }{\rtlch\fcs1 \ab\ai\af4 \ltrch\fcs0 \b\i\f4\insrsid14113975 \hich\af4\dbch\af31505\loch\f4 and italics}{\rtlch\fcs1 \af4 \ltrch\fcs0 \f4\insrsid14113975 \par }{\rtlch\fcs1 \af4 \ltrch\fcs0 \f4\ul\insrsid14113975 \hich\af4\dbch\af31505\loch\f4 underlined}{\rtlch\fcs1 \af4 \ltrch\fcs0 \f4\insrsid14113975 \par }{\rtlch\fcs1 \af4 \ltrch\fcs0 \strike\f4\insrsid14113975 \hich\af4\dbch\af31505\loch\f4 strikeout \par }{\rtlch\fcs1 \af4 \ltrch\fcs0 \f4\insrsid14113975 \hich\af4\dbch\af31505\loch\f4 x}{\rtlch\fcs1 \af4 \ltrch\fcs0 \f4\super\insrsid14113975 \hich\af4\dbch\af31505\loch\f4 superscript}{\rtlch\fcs1 \af4 \ltrch\fcs0 \f4\insrsid14113975 \par \hich\af4\dbch\af31505\loch\f4 x}{\rtlch\fcs1 \af4 \ltrch\fcs0 \f4\sub\insrsid14113975 \hich\af4\dbch\af31505\loch\f4 subscript}{\rtlch\fcs1 \af4 \ltrch\fcs0 \f4\insrsid14113975 \par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a 9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad 5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6 b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0 0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6 a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512 0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462 a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865 6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b 4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b 4757e8d3f729e245eb2b260a0238fd010000ffff0300504b030414000600080000002100b6f4679893070000c9200000160000007468656d652f7468656d652f 7468656d65312e786d6cec59cd8b1bc915bf07f23f347d97f5d5ad8fc1f2a24fcfda33b6b164873dd648a5eef2547789aad28cc56208de532e81c026e49085bd ed21842cecc22eb9e48f31d8249b3f22afaa5bdd5552c99e191c3061463074977eefd5afde7bf5de53d5ddcf5e26d4bbc05c1096f6fcfa9d9aefe174ce16248d 7afeb3d9a4d2f13d2151ba4094a5b8e76fb0f03fbbf7eb5fdd454732c609f6403e1547a8e7c752ae8eaa5531876124eeb0154ee1bb25e30992f0caa3ea82a34b d09bd06aa3566b55134452df4b51026a1f2f97648ebd9952e9dfdb2a1f53784da5500373caa74a35b6243476715e5708b11143cabd0b447b3eccb3609733fc52 fa1e4542c2173dbfa6fffceabdbb5574940b517940d6909be8bf5c2e17589c37f49c3c3a2b260d823068f50bfd1a40e53e6edc1eb7c6ad429f06a0f91c569a71 b175b61bc320c71aa0ecd1a17bd41e35eb16ded0dfdce3dc0fd5c7c26b50a63fd8c34f2643b0a285d7a00c1feee1c3417730b2f56b50866fede1dbb5fe28685b fa3528a6243ddf43d7c25673b85d6d0159327aec8477c360d26ee4ca4b144443115d6a8a254be5a1584bd00bc6270050408a24493db959e1259a43140f112567 9c7827248a21f056286502866b8ddaa4d684ffea13e827ed5174849121ad780113b137a4f87862cec94af6fc07a0d537206f7ffef9cdeb1fdfbcfee9cd575fbd 79fdf77c6eadca923b466964cafdf2dd1ffef3cd6fbd7ffff0ed2f5fff319b7a172f4cfcbbbffdeedd3ffef93ef5b0e2d2146ffff4fdbb1fbf7ffbe7dfffebaf 5f3bb4f7393a33e1339260e13dc297de5396c0021dfcf119bf9ec42c46c494e8a791402952b338f48f656ca11f6d10450edc00db767cce21d5b880f7d72f2cc2 d398af2571687c182716f094313a60dc6985876a2ec3ccb3751ab927e76b13f714a10bd7dc43945a5e1eaf579063894be530c616cd2714a5124538c5d253dfb1 738c1dabfb8210cbaea764ce99604be97d41bc01224e93ccc899154da5d03149c02f1b1741f0b7659bd3e7de8051d7aa47f8c246c2de40d4417e86a965c6fb68 2d51e252394309350d7e8264ec2239ddf0b9891b0b099e8e3065de78818570c93ce6b05ec3e90f21cdb8dd7e4a37898de4929cbb749e20c64ce4889d0f6394ac 5cd829496313fbb938871045de13265df05366ef10f50e7e40e941773f27d872f787b3c133c8b026a53240d4376beef0e57dccacf89d6ee8126157aae9f3c44a b17d4e9cd131584756689f604cd1255a60ec3dfbdcc160c05696cd4bd20f62c82ac7d815580f901dabea3dc5027a25d5dcece7c91322ac909de2881de073bad9 493c1b9426881fd2fc08bc6eda7c0ca52e7105c0633a3f37818f08f480102f4ea33c16a0c308ee835a9fc4c82a60ea5db8e375c32dff5d658fc1be7c61d1b8c2 be04197c6d1948eca6cc7b6d3343d49aa00c9819822ec3956e41c4727f29a28aab165b3be596f6a62ddd00dd91d5f42424fd6007b4d3fb84ffbbde073a8cb77f f9c6b10f3e4ebfe3566c25ab6b763a8792c9f14e7f7308b7dbd50c195f904fbfa919a175fa04431dd9cf58b73dcd6d4fe3ffdff73487f6f36d2773a8dfb8ed64 7ce8306e3b99fc70e5e3743265f3027d8d3af0c80e7af4b14f72f0d46749289dca0dc527421ffc08f83db398c0a092d3279eb838055cc5f0a8ca1c4c60e1228e b48cc799fc0d91f134462b381daafb4a492472d591f0564cc0a1911e76ea5678ba4e4ed9223becacd7d5c16656590592e5782d2cc6e1a04a66e856bb3cc02bd4 6bb6913e68dd1250b2d721614c6693683a48b4b783ca48fa58178ce620a157f65158741d2c3a4afdd6557b2c805ae115f8c1edc1cff49e1f06200242701e07cd f942f92973f5d6bbda991fd3d3878c69450034d8db08283ddd555c0f2e4fad2e0bb52b78da2261849b4d425b46377822869fc17974aad1abd0b8aeafbba54b2d 7aca147a3e08ad9246bbf33e1637f535c8ede6069a9a9982a6de65cf6f35430899395af5fc251c1ac363b282d811ea3717a211dcbccc25cf36fc4d32cb8a0b39 4222ce0cae934e960d122231f728497abe5a7ee1069aea1ca2b9d51b90103e59725d482b9f1a3970baed64bc5ce2b934dd6e8c284b67af90e1b35ce1fc568bdf 1cac24d91adc3d8d1797de195df3a708422c6cd795011744c0dd413db3e682c0655891c8caf8db294c79da356fa3740c65e388ae62945714339967709dca0b3a faadb081f196af190c6a98242f8467912ab0a651ad6a5a548d8cc3c1aafb6121653923699635d3ca2aaa6abab39835c3b60cecd8f26645de60b53531e434b3c2 67a97b37e576b7b96ea74f28aa0418bcb09fa3ea5ea12018d4cac92c6a8af17e1a56393b1fb56bc776811fa07695226164fdd656ed8edd8a1ae19c0e066f54f9 416e376a6168b9ed2bb5a5f5adb979b1cdce5e40f2184197bba6526857c2c92e47d0104d754f92a50dd8222f65be35e0c95b73d2f3bfac85fd60d80887955a27 1c57826650ab74c27eb3d20fc3667d1cd66ba341e31514161927f530bbb19fc00506dde4f7f67a7cefee3ed9ded1dc99b3a4caf4dd7c5513d777f7f5c6e1bb7b 8f40d2f9b2d598749bdd41abd26df627956034e854bac3d6a0326a0ddba3c9681876ba9357be77a1c141bf390c5ae34ea5551f0e2b41aba6e877ba9576d068f4 8376bf330efaaff23606569ea58fdc16605ecdebde7f010000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d65 2f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d36 3f2451eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e 3198720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d985 0528a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c020000130000000000000000000000 0000000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b00000000000000000000 000000300100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c0000000000000000000000000019020000 7468656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d0014000600080000002100b6f4679893070000c92000001600000000000000 000000000000d60200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b01000027000000 000000000000000000009d0a00007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000980b00000000} {\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d 617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169 6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363 656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e} {\*\latentstyles\lsdstimax376\lsdlockeddef0\lsdsemihiddendef0\lsdunhideuseddef0\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1; \lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4; \lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7; \lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 1; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 5; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 9; \lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 1;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 2;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 3; \lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 4;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 5;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 6; \lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 7;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 8;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Indent; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 header;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footer; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index heading;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of figures; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope return;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation reference; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 line number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 page number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote text; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of authorities;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 macro;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 toa heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 3; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 3; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 3; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 5;\lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Closing; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Signature;\lsdsemihidden1 \lsdunhideused1 \lsdpriority1 \lsdlocked0 Default Paragraph Font;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 4; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Message Header;\lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Salutation; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Date;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Note Heading; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 3; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Block Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 FollowedHyperlink;\lsdqformat1 \lsdpriority22 \lsdlocked0 Strong; \lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Document Map;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Plain Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 E-mail Signature; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Top of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Bottom of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal (Web);\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Acronym; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Cite;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Code;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Definition; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Keyboard;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Preformatted;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Sample;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Typewriter; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Variable;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Table;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation subject;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 No List; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 1; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 2; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 2; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 3; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 2; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 6; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 2; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 6; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 2; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Contemporary;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Elegant;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Professional; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 2; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Balloon Text;\lsdpriority39 \lsdlocked0 Table Grid;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Theme;\lsdsemihidden1 \lsdlocked0 Placeholder Text; \lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdpriority60 \lsdlocked0 Light Shading;\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid;\lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2; \lsdpriority65 \lsdlocked0 Medium List 1;\lsdpriority66 \lsdlocked0 Medium List 2;\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2;\lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List; \lsdpriority71 \lsdlocked0 Colorful Shading;\lsdpriority72 \lsdlocked0 Colorful List;\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1;\lsdpriority61 \lsdlocked0 Light List Accent 1; \lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdsemihidden1 \lsdlocked0 Revision; \lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1; \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;\lsdpriority72 \lsdlocked0 Colorful List Accent 1; \lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2; \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2; \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2; \lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3; \lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3; \lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4; \lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdpriority62 \lsdlocked0 Light Grid Accent 4;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4; \lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4; \lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;\lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5; \lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5; \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 5; \lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdpriority62 \lsdlocked0 Light Grid Accent 6; \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 6; \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 6; \lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis; \lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdsemihidden1 \lsdunhideused1 \lsdpriority37 \lsdlocked0 Bibliography; \lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;\lsdpriority41 \lsdlocked0 Plain Table 1;\lsdpriority42 \lsdlocked0 Plain Table 2;\lsdpriority43 \lsdlocked0 Plain Table 3;\lsdpriority44 \lsdlocked0 Plain Table 4; \lsdpriority45 \lsdlocked0 Plain Table 5;\lsdpriority40 \lsdlocked0 Grid Table Light;\lsdpriority46 \lsdlocked0 Grid Table 1 Light;\lsdpriority47 \lsdlocked0 Grid Table 2;\lsdpriority48 \lsdlocked0 Grid Table 3;\lsdpriority49 \lsdlocked0 Grid Table 4; \lsdpriority50 \lsdlocked0 Grid Table 5 Dark;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 1; \lsdpriority48 \lsdlocked0 Grid Table 3 Accent 1;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 1;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 1; \lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 1;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 2;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 2; \lsdpriority49 \lsdlocked0 Grid Table 4 Accent 2;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 2; \lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 3;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 3;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 3;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 3; \lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 3;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 4; \lsdpriority47 \lsdlocked0 Grid Table 2 Accent 4;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 4;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 4;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 4; \lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 4;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 5; \lsdpriority48 \lsdlocked0 Grid Table 3 Accent 5;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 5;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 5; \lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 5;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 6;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 6; \lsdpriority49 \lsdlocked0 Grid Table 4 Accent 6;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 6; \lsdpriority46 \lsdlocked0 List Table 1 Light;\lsdpriority47 \lsdlocked0 List Table 2;\lsdpriority48 \lsdlocked0 List Table 3;\lsdpriority49 \lsdlocked0 List Table 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark; \lsdpriority51 \lsdlocked0 List Table 6 Colorful;\lsdpriority52 \lsdlocked0 List Table 7 Colorful;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 List Table 2 Accent 1;\lsdpriority48 \lsdlocked0 List Table 3 Accent 1; \lsdpriority49 \lsdlocked0 List Table 4 Accent 1;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 1;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 1; \lsdpriority46 \lsdlocked0 List Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 List Table 2 Accent 2;\lsdpriority48 \lsdlocked0 List Table 3 Accent 2;\lsdpriority49 \lsdlocked0 List Table 4 Accent 2; \lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 2;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 3; \lsdpriority47 \lsdlocked0 List Table 2 Accent 3;\lsdpriority48 \lsdlocked0 List Table 3 Accent 3;\lsdpriority49 \lsdlocked0 List Table 4 Accent 3;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 3; \lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 4;\lsdpriority47 \lsdlocked0 List Table 2 Accent 4; \lsdpriority48 \lsdlocked0 List Table 3 Accent 4;\lsdpriority49 \lsdlocked0 List Table 4 Accent 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 4;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 4; \lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 List Table 2 Accent 5;\lsdpriority48 \lsdlocked0 List Table 3 Accent 5; \lsdpriority49 \lsdlocked0 List Table 4 Accent 5;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 5;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 5; \lsdpriority46 \lsdlocked0 List Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 List Table 2 Accent 6;\lsdpriority48 \lsdlocked0 List Table 3 Accent 6;\lsdpriority49 \lsdlocked0 List Table 4 Accent 6; \lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Mention; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Smart Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hashtag;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Unresolved Mention;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Smart Link;}}{\*\datastore }}pandoc-3.1.3/test/rtf/heading.native0000644000000000000000000000044007346545000015532 0ustar0000000000000000Pandoc Meta { unMeta = fromList [] } [ Header 1 ( "" , [] , [] ) [ Str "Heading" , Space , Str "1" ] , Header 2 ( "" , [] , [] ) [ Str "Heading" , Space , Str "2" ] , Header 3 ( "" , [] , [] ) [ Str "Heading" , Space , Str "3" ] , Para [ Str "Paragraph" ] ] pandoc-3.1.3/test/rtf/heading.rtf0000644000000000000000000013064607346545000015053 0ustar0000000000000000{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch31506\stshfloch31506\stshfhich31506\stshfbi31507\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;} {\f37\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\f38\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0302020204030204}Calibri Light;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} {\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0302020204030204}Calibri Light;} {\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} {\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;} {\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f44\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f45\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} {\f47\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f48\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f49\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f50\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} {\f51\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f52\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f384\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f385\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;} {\f387\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f388\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f391\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}{\f392\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);} {\f414\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f415\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\f417\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f418\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;} {\f419\fbidi \fswiss\fcharset177\fprq2 Calibri (Hebrew);}{\f420\fbidi \fswiss\fcharset178\fprq2 Calibri (Arabic);}{\f421\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f422\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);} {\f424\fbidi \fswiss\fcharset238\fprq2 Calibri Light CE;}{\f425\fbidi \fswiss\fcharset204\fprq2 Calibri Light Cyr;}{\f427\fbidi \fswiss\fcharset161\fprq2 Calibri Light Greek;}{\f428\fbidi \fswiss\fcharset162\fprq2 Calibri Light Tur;} {\f429\fbidi \fswiss\fcharset177\fprq2 Calibri Light (Hebrew);}{\f430\fbidi \fswiss\fcharset178\fprq2 Calibri Light (Arabic);}{\f431\fbidi \fswiss\fcharset186\fprq2 Calibri Light Baltic;}{\f432\fbidi \fswiss\fcharset163\fprq2 Calibri Light (Vietnamese);} {\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} {\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} {\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} {\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} {\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} {\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Calibri Light CE;}{\fhimajor\f31529\fbidi \fswiss\fcharset204\fprq2 Calibri Light Cyr;} {\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Calibri Light Greek;}{\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Calibri Light Tur;}{\fhimajor\f31533\fbidi \fswiss\fcharset177\fprq2 Calibri Light (Hebrew);} {\fhimajor\f31534\fbidi \fswiss\fcharset178\fprq2 Calibri Light (Arabic);}{\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Calibri Light Baltic;}{\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Calibri Light (Vietnamese);} {\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} {\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} {\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} {\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} {\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} {\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} {\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} {\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} {\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;} {\fhiminor\f31573\fbidi \fswiss\fcharset177\fprq2 Calibri (Hebrew);}{\fhiminor\f31574\fbidi \fswiss\fcharset178\fprq2 Calibri (Arabic);}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;} {\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} {\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} {\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}} {\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0; \red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red0\green0\blue0;\red0\green0\blue0;\caccentone\ctint255\cshade191\red47\green84\blue150; \caccentone\ctint255\cshade127\red31\green55\blue99;}{\*\defchp \f31506\fs22 }{\*\defpap \ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa160\sl259\slmult1 \widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{ \s1\ql \li0\ri0\sb240\sl259\slmult1\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs32\alang1025 \ltrch\fcs0 \fs32\cf19\lang1033\langfe1033\loch\f31502\hich\af31502\dbch\af31501\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink15 \sqformat \spriority9 \styrsid2496039 heading 1;}{\s2\ql \li0\ri0\sb40\sl259\slmult1 \keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs26\alang1025 \ltrch\fcs0\b\fs26\cf19\lang1033\langfe1033\loch\f31502\hich\af31502\dbch\af31501\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink16 \sunhideused \sqformat \spriority9 \styrsid2496039 heading 2;}{\s3\ql \li0\ri0\sb40\sl259\slmult1\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs24\alang1025 \ltrch\fcs0 \fs24\cf20\lang1033\langfe1033\loch\f31502\hich\af31502\dbch\af31501\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink17 \sunhideused \sqformat \spriority9 \styrsid2496039 heading 3;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused Normal Table;}{\*\cs15 \additive \rtlch\fcs1 \af31503\afs32 \ltrch\fcs0 \fs32\cf19\loch\f31502\hich\af31502\dbch\af31501 \sbasedon10 \slink1 \slocked \spriority9 \styrsid2496039 Heading 1 Char;}{\*\cs16 \additive \rtlch\fcs1 \af31503\afs26 \ltrch\fcs0 \fs26\cf19\loch\f31502\hich\af31502\dbch\af31501 \sbasedon10 \slink2 \slocked \spriority9 \styrsid2496039 Heading 2 Char;}{\*\cs17 \additive \rtlch\fcs1 \af31503\afs24 \ltrch\fcs0 \fs24\cf20\loch\f31502\hich\af31502\dbch\af31501 \sbasedon10 \slink3 \slocked \spriority9 \styrsid2496039 Heading 3 Char;}}{\*\rsidtbl \rsid1718450\rsid2496039\rsid2631807\rsid4616182\rsid10489260}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1 \mwrapIndent1440\mintLim0\mnaryLim1} {\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect \widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors1\noxlattoyen \expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1440\dgvorigin1440\dghshow1\dgvshow1 \jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct \asianbrkrule\rsidroot2496039\newtblstyruls\nogrowautofit\usenormstyforlist\noindnmbrts\felnbrelev\nocxsptable\indrlsweleven\noafcnsttbl\afelev\utinl\hwelev\spltpgpar\notcvasp\notbrkcnstfrctbl\notvatxbx\krnprsnet\cachedcolbal \nouicompat \fet0 {\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}} \pard\plain \ltrpar\s1\ql \li0\ri0\sb240\sl259\slmult1\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0\pararsid2496039 \rtlch\fcs1 \af31503\afs32\alang1025 \ltrch\fcs0 \fs32\cf19\lang1033\langfe1033\loch\af31502\hich\af31502\dbch\af31501\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af31503 \ltrch\fcs0 \insrsid2496039 \hich\af31502\dbch\af31501\loch\f31502 H\hich\af31502\dbch\af31501\loch\f31502 eading 1}{\rtlch\fcs1 \af31503 \ltrch\fcs0 \insrsid2631807 \par }\pard\plain \ltrpar\s2\ql \li0\ri0\sb40\sl259\slmult1\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0\pararsid2496039 \rtlch\fcs1 \af31503\afs26\alang1025 \ltrch\fcs0 \fs26\cf19\lang1033\langfe1033\loch\af31502\hich\af31502\dbch\af31501\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af31503 \ltrch\fcs0 \insrsid2496039 \hich\af31502\dbch\af31501\loch\f31502 H\hich\af31502\dbch\af31501\loch\f31502 eading }{\rtlch\fcs1 \af31503 \ltrch\fcs0 \insrsid2496039 \hich\af31502\dbch\af31501\loch\f31502 2}{\rtlch\fcs1 \af31503 \ltrch\fcs0 \insrsid2496039 \par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb40\sl259\slmult1\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0\pararsid2496039 \rtlch\fcs1 \af31503\afs24\alang1025 \ltrch\fcs0 \fs24\cf20\lang1033\langfe1033\loch\af31502\hich\af31502\dbch\af31501\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af31503 \ltrch\fcs0 \insrsid2496039 \hich\af31502\dbch\af31501\loch\f31502 H\hich\af31502\dbch\af31501\loch\f31502 eading }{\rtlch\fcs1 \af31503 \ltrch\fcs0 \insrsid2496039 \hich\af31502\dbch\af31501\loch\f31502 3}{\rtlch\fcs1 \af31503 \ltrch\fcs0 \insrsid2496039 \par }\pard\plain \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid2496039 Paragraph \par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a 9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad 5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6 b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0 0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6 a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512 0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462 a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865 6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b 4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b 4757e8d3f729e245eb2b260a0238fd010000ffff0300504b030414000600080000002100d3130843c40600008b1a0000160000007468656d652f7468656d652f 7468656d65312e786d6cec595d8bdb46147d2ff43f08bd3bfe92fcb1c41b6cd9ceb6d94d42eca4e4716c8fadc98e344633de8d0981923c160aa569e943037deb 43691b48a02fe9afd936a54d217fa17746b63c638fbb9b2585a5640d8b343af7ce997bafce1d4997afdc8fa87384134e58dc708b970aae83e3211b9178d2706f f7bbb99aeb7081e211a22cc60d778eb97b65f7c30f2ea31d11e2083b601ff31dd4704321a63bf93c1fc230e297d814c7706dcc920809384d26f951828ec16f44 f3a542a1928f10895d274611b8bd311e932176fad2a5bbbb74dea1701a0b2e078634e949d7d8b050d8d1615122f89c0734718e106db830cf881df7f17de13a14 7101171a6e41fdb9f9ddcb79b4b330a2628bad66d7557f0bbb85c1e8b0a4e64c26836c52cff3bd4a33f3af00546ce23ad54ea553c9fc29001a0e61a52917d367 b514780bac064a0f2dbedbd576b968e035ffe50dce4d5ffe0cbc02a5febd0d7cb71b40140dbc02a5787f03efb7eaadb6e95f81527c65035f2d34db5ed5f0af40 2125f1e106bae057cac172b51964cce89e155ef7bd6eb5b470be42413564d525a718b3586cabb508dd6349170012489120b123e6533c4643a8e20051324888b3 4f262114de14c58cc370a154e816caf05ffe3c75a4328a7630d2ac252f60c23786241f870f1332150df763f0ea6a90372f7f7cf3f2b973f2e8c5c9a35f4e1e3f 3e79f473eac8b0da43f144b77afdfd177f3ffdd4f9ebf977af9f7c65c7731dfffb4f9ffdf6eb977620ac741582575f3ffbe3c5b357df7cfee70f4f2cf0668206 3abc4f22cc9debf8d8b9c52258980a81c91c0f92b7b3e88788e816cd78c2518ce42c16ff1d111ae8eb73449105d7c26604ef24203136e0d5d93d83702f4c6682 583c5e0b230378c0186db1c41a856b722e2dccfd593cb14f9ecc74dc2d848e6c73072836f2db994d415b89cd65106283e64d8a62812638c6c291d7d821c696d5 dd25c488eb0119268cb3b170ee12a7858835247d3230aa6965b44722c8cbdc4610f26dc4e6e08ed362d4b6ea363e32917057206a21dfc7d408e355341328b2b9 eca388ea01df4722b491eccd93a18eeb7001999e60ca9cce08736eb3b991c07ab5a45f0379b1a7fd80ce231399087268f3b98f18d3916d761884289adab03d12 873af6237e08258a9c9b4cd8e007ccbc43e439e401c55bd37d876023dda7abc16d50569dd2aa40e4955962c9e555cc8cfaedcde91861253520fc869e47243e55 dcd764ddff6f651d84f4d5b74f2dabbaa882de4c88f58eda5b93f16db875f10e583222175fbbdb6816dfc470bb6c36b0f7d2fd5ebaddffbd746fbb9fdfbd60af 341ae45b6e15d3adbadab8475bf7ed6342694fcc29dee76aebcea1338dba3028edd4332bce9ee3a6211cca3b192630709304291b2761e21322c25e88a6b0bf2f bad2c9842f5c4fb833651cb6fd6ad8ea5be2e92c3a60a3f471b558948fa6a978702456e3053f1b87470d91a22bd5d52358e65eb19da847e5250169fb3624b4c9 4c12650b89ea725006493d9843d02c24d4cade098bba85454dba5fa66a830550cbb2025b2707365c0dd7f7c0048ce0890a513c92794a53bdccae4ae6bbccf4b6 601a1500fb886505ac325d975cb72e4fae2e2db53364da20a1959b49424546f5301ea2115e54a71c3d0b8db7cd757d9552839e0c859a0f4a6b45a35afb3716e7 cd35d8ad6b038d75a5a0b173dc702b651f4a6688a60d770c8ffd70184da176b8dcf2223a8177674391a437fc7994659a70d1463c4c03ae4427558388089c3894 440d572e3f4b038d9586286ec51208c28525570759b968e420e96692f1788c87424fbb3622239d9e82c2a75a61bdaacccf0f96966c06e9ee85a363674067c92d 0425e6578b328023c2e1ed4f318de688c0ebcc4cc856f5b7d69816b2abbf4f5435948e233a0dd1a2a3e8629ec295946774d4591603ed6cb16608a8169245231c 4c6483d5836a74d3ac6ba41cb676ddd38d64e434d15cf54c435564d7b4ab9831c3b20dacc5f27c4d5e63b50c31689adee153e95e97dcfa52ebd6f60959978080 67f1b374dd3334048dda6a32839a64bc29c352b317a366ef582ef0146a6769129aea57966ed7e296f508eb743078aece0f76eb550b43e3e5be52455a7df7d03f 4db0c13d108f36bc049e51c1552ae1c343826043d4537b925436e016b92f16b7061c39b38434dc0705bfe905253fc8156a7e27e795bd42aee637cbb9a6ef978b 1dbf5868b74a0fa1b188302afae937972ebc8aa2f3c5971735bef1f5255abe6dbb3464519ea9af2b79455c7d7d2996b67f7d710888ce834aa95b2fd75b955cbd dcece6bc76ab96ab079556ae5d09aaed6e3bf06bf5ee43d7395260af590ebc4aa796ab148320e7550a927ead9eab7aa552d3ab366b1daff970b18d8195a7f2b1 88058457f1dafd070000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d652f7468656d652f5f72656c732f7468 656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f2451eced0dae2c082e8761be9969 bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e3198720e274a939cd08a54f980ae38 a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d9850528a2c6cce0239baa4c04ca5bbaba c4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c0200001300000000000000000000000000000000005b436f6e74656e745f 54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b00000000000000000000000000300100005f72656c732f2e72 656c73504b01022d00140006000800000021006b799616830000008a0000001c00000000000000000000000000190200007468656d652f7468656d652f746865 6d654d616e616765722e786d6c504b01022d0014000600080000002100d3130843c40600008b1a00001600000000000000000000000000d60200007468656d65 2f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b0100002700000000000000000000000000ce0900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000c90a00000000} {\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d 617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169 6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363 656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e} {\*\latentstyles\lsdstimax375\lsdlockeddef0\lsdsemihiddendef0\lsdunhideuseddef0\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1; \lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4; \lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7; \lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 1; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 5; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 9; \lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 1;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 2;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 3; \lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 4;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 5;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 6; \lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 7;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 8;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Indent; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 header;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footer; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index heading;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of figures; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope return;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation reference; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 line number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 page number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote text; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of authorities;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 macro;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 toa heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 3; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 3; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 3; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 5;\lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Closing; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Signature;\lsdsemihidden1 \lsdunhideused1 \lsdpriority1 \lsdlocked0 Default Paragraph Font;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 4; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Message Header;\lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Salutation; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Date;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Note Heading; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 3; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Block Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 FollowedHyperlink;\lsdqformat1 \lsdpriority22 \lsdlocked0 Strong; \lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Document Map;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Plain Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 E-mail Signature; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Top of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Bottom of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal (Web);\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Acronym; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Cite;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Code;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Definition; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Keyboard;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Preformatted;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Sample;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Typewriter; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Variable;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Table;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation subject;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 No List; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 1; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 2; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 2; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 3; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 2; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 6; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 2; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 6; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 2; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Contemporary;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Elegant;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Professional; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 2; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Balloon Text;\lsdpriority39 \lsdlocked0 Table Grid;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Theme;\lsdsemihidden1 \lsdlocked0 Placeholder Text; \lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdpriority60 \lsdlocked0 Light Shading;\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid;\lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2; \lsdpriority65 \lsdlocked0 Medium List 1;\lsdpriority66 \lsdlocked0 Medium List 2;\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2;\lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List; \lsdpriority71 \lsdlocked0 Colorful Shading;\lsdpriority72 \lsdlocked0 Colorful List;\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1;\lsdpriority61 \lsdlocked0 Light List Accent 1; \lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdsemihidden1 \lsdlocked0 Revision; \lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1; \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;\lsdpriority72 \lsdlocked0 Colorful List Accent 1; \lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2; \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2; \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2; \lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3; \lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3; \lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4; \lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdpriority62 \lsdlocked0 Light Grid Accent 4;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4; \lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4; \lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;\lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5; \lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5; \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 5; \lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdpriority62 \lsdlocked0 Light Grid Accent 6; \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 6; \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 6; \lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis; \lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdsemihidden1 \lsdunhideused1 \lsdpriority37 \lsdlocked0 Bibliography; \lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;\lsdpriority41 \lsdlocked0 Plain Table 1;\lsdpriority42 \lsdlocked0 Plain Table 2;\lsdpriority43 \lsdlocked0 Plain Table 3;\lsdpriority44 \lsdlocked0 Plain Table 4; \lsdpriority45 \lsdlocked0 Plain Table 5;\lsdpriority40 \lsdlocked0 Grid Table Light;\lsdpriority46 \lsdlocked0 Grid Table 1 Light;\lsdpriority47 \lsdlocked0 Grid Table 2;\lsdpriority48 \lsdlocked0 Grid Table 3;\lsdpriority49 \lsdlocked0 Grid Table 4; \lsdpriority50 \lsdlocked0 Grid Table 5 Dark;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 1; \lsdpriority48 \lsdlocked0 Grid Table 3 Accent 1;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 1;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 1; \lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 1;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 2;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 2; \lsdpriority49 \lsdlocked0 Grid Table 4 Accent 2;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 2; \lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 3;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 3;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 3;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 3; \lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 3;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 4; \lsdpriority47 \lsdlocked0 Grid Table 2 Accent 4;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 4;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 4;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 4; \lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 4;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 5; \lsdpriority48 \lsdlocked0 Grid Table 3 Accent 5;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 5;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 5; \lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 5;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 6;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 6; \lsdpriority49 \lsdlocked0 Grid Table 4 Accent 6;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 6; \lsdpriority46 \lsdlocked0 List Table 1 Light;\lsdpriority47 \lsdlocked0 List Table 2;\lsdpriority48 \lsdlocked0 List Table 3;\lsdpriority49 \lsdlocked0 List Table 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark; \lsdpriority51 \lsdlocked0 List Table 6 Colorful;\lsdpriority52 \lsdlocked0 List Table 7 Colorful;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 List Table 2 Accent 1;\lsdpriority48 \lsdlocked0 List Table 3 Accent 1; \lsdpriority49 \lsdlocked0 List Table 4 Accent 1;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 1;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 1; \lsdpriority46 \lsdlocked0 List Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 List Table 2 Accent 2;\lsdpriority48 \lsdlocked0 List Table 3 Accent 2;\lsdpriority49 \lsdlocked0 List Table 4 Accent 2; \lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 2;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 3; \lsdpriority47 \lsdlocked0 List Table 2 Accent 3;\lsdpriority48 \lsdlocked0 List Table 3 Accent 3;\lsdpriority49 \lsdlocked0 List Table 4 Accent 3;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 3; \lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 4;\lsdpriority47 \lsdlocked0 List Table 2 Accent 4; \lsdpriority48 \lsdlocked0 List Table 3 Accent 4;\lsdpriority49 \lsdlocked0 List Table 4 Accent 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 4;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 4; \lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 List Table 2 Accent 5;\lsdpriority48 \lsdlocked0 List Table 3 Accent 5; \lsdpriority49 \lsdlocked0 List Table 4 Accent 5;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 5;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 5; \lsdpriority46 \lsdlocked0 List Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 List Table 2 Accent 6;\lsdpriority48 \lsdlocked0 List Table 3 Accent 6;\lsdpriority49 \lsdlocked0 List Table 4 Accent 6; \lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Mention; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Smart Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hashtag;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Unresolved Mention;}}{\*\datastore 010500000200000018000000 4d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000 d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000b002 c4a57123d401feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000105000000000000}} pandoc-3.1.3/test/rtf/image.native0000644000000000000000000000041707346545000015221 0ustar0000000000000000Pandoc Meta { unMeta = fromList [] } [ Para [ Image ( "" , [] , [ ( "width" , "2.0in" ) , ( "height" , "2.0in" ) ] ) [ Str "image" ] ( "f9d88c3dbe18f6a7f5670e994a947d51216cdf0e.jpg" , "" ) ] ] pandoc-3.1.3/test/rtf/image.rtf0000644000000000000000000010003307346545000014521 0ustar0000000000000000{\rtf1\ansi\deff0{\fonttbl{\f0 \fswiss Helvetica;}{\f1 \fmodern Courier;}} {\colortbl;\red255\green0\blue0;\red0\green0\blue255;} \widowctrl\hyphauto {\pard \ql \f0 \sa180 \li0 \fi0 {\pict\jpegblip\picw250\pich250\picwgoal2880\pichgoal2880 \bin ffd8ffe000104a46494600010101007800780000ffdb00430006040506050406060506070706080a100a0a09090a140e0f0c1017141818171416161a1d251f1a1b231c1616202c20232627292a29191f2d302d283025282928ffdb0043010707070a080a130a0a13281a161a2828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828ffc000110800fa00fa03011100021101031101ffc4001c0000000701010000000000000000000000010203040506070008ffc4003e100002010303020404040502050500030001020300041105122106311322415107617181143291a1234252b1c115f016336272d1082443e1f1265382ffc40017010101010100000000000000000000000000010204ffc4001b11010101010003010000000000000000000001110212213141ffda000c03010002110311003f00dadd18a10a704f6a95ccc57e37750782b0d8d9ea0cd32e7c5446e07e9f4ad723119a7b89e61e348f260719278aad613cbb640002938c76a182b264fc87bd13009c0c019c76e3d68a072e1cf6f4cd502d330c28269a61bb39c923923d4fad44c08dccb95cfd28b8280769ee08a263891e1808739e4f1d8d149392172cc714050dbb9fde8960ed8c60b79b1ed44103b05c331dbdb1dc5026ac1946d20ff8140aa631c773ec738a0346a003bf93e9cf02801895e7b9a01886796c923bd0090a06393c76a0142003ce3d86680d8dd9392303f5341ccc1b3cf7a2c812c37e4923d381429757013209fa511c18146c9247a0f6a007900c0c671c6280854e086c673eb45c27c038fd68aedff2fda836ef881f136f25d5e6b7d1262964aa02b03f98fbf153131935edcc97576f35c33349212cc4f39f7ab26186dfce5b200f73451f7600dcb8cf27e7400c0b291914046c9e0718fde81371b8e7273f4ef4007691919240e714097f31f376e7b5008caee27807b0f5a02c8e1b3c6d27d33cd0201d839523144d1a149ae084b78da47638211771fd050d582c3a0faab5119b6d12f8ab1c06788a0fd4e2ac356fd1fe08754ddccaba849696309e598c9e2103fed1dcfdeadc44fea5ff00a7f956366d375e492403ca935bedcf1eea4ff6ac68a55efc1beb3b552574f8e7009ff933a927ec715bc82b3a8f4d6bba5ca1352d22fe061cf9a0383f71dea5119cc6c0baed3eaac0f1fad40897dcc3d81f7a052366c1007df3400f21edefc5008c28f30c9c5170ee4fc37830086395250a7c66770c18e78da31c0c63de8609b41f7c515c5172a30c3b76344a3e377cb2339cf7a242aea89808cce368272b8c1a2e107c672a49f5c1a181c9c7ae7da8a2119e7b1f5068099ffa68258a132062d8f9e0f34059502b61bf2824e681bb297ced2a71efda80f19c47b9c77fdbe74057c13e539cf3c1a0eeeb9c73f33405ddb4f18249c1e28062b79ae242902024465b9214614649e7bd0362a7249eddc513456e5720f38f5a1a98e96e95d6baa6ebc2d1ad1e65521649bb469f563534d6d7d31f04347d2a2fc5f535db6a0e83718906c887cbbe5a9a8bef44dce9f731ca9a2e89169d6d6f2184b1455dc07b11dcfeb4d16f119c649a681285b03d3e5500f87820ff006a0e098191de80ac9b8904647b55d11da9681a56a31f87a869f6970b8ffe4883629a289aefc16e92d441682da5b098f21ed9f033f353914d19b751fc08d66cc16d12fe2bf45ec92ff0df1fdbfb559ec667aff4eeb1a04db359d3ae6d40eccebe53f46ec7f5ab82263da7dcf3eb5174e5181076918c7de869503232491ee4515c1803824f03b51287f30e0e7d803449494832c157278a2e8c71fcb9f9d144639236824d01e142efb1768cfb9c7ef40512a818de78ff00a682518e7cc30ab9e00a02cce9953247bd41e467191ed9a04205ee99da4e4e3d283a524b0427b5026c18a8e082067db8341ce0e39ed409b6502907391edda80f2dfdc496f0c124ac6184b144cf0a4e338fd2894f7a7342d4ba9b568f4fd261f12571966270a8bfd47d8511bae85f02b47b7fc34bac5d5c5dc88a0c90ab6c8d9bedce3ef4d1ad691a6dae976a96d616d15b409f9638d70054a1dbc68ea51d4329f4619a8022b78e04548515117b05000a035c5c4702a995c26e3819f534047bcb68a458cce866719540724d02e41c0f7a012a40f6141cbc8e7bd01719e38e6838af1c0a04ca8206d3cd037bdb082fad9e0bd8a39e0718649141047d0d5d18f759fc0cd3af164b8e9999acae4e4f81236e898f7c0f55fed574615aee83a96817ef67abda3db4ebdb7f66f983d88a061bb8db9e3d45165076db83c1f950a53780d8247c80a2398f182724f1c7ad080c608cfa7a51a0062adc7afbd0130173bb9c5070f071cb37e82826106e8f615e01c9e680d6b35bc534be3c1e3831b2aa962bb188f2b71df1de819ae4b1048c7f57bd01a58268e332642ae0704f7cf6207af6a01b99e17b7b6416e227407c494139909ed9f4c0a04a4e501e0f1eb40d263e53dce7fa682c9d0bd13abf58dd6db18bc2b157c4975270ab8ef8f563f21447a73a03a1f4de8eb031582b497328066b97fcd21ff038edfde88b7e32703bd64188e7e6283864b73400cd804b67ca3268317eacea6d56ff005233592f8b6303f953fa4af7c2fa93417fe98b763e0ea171297bab98558068f695ce0e08fdbd281e5c6a57ba5e9d14d716ef7774f2ec112601da4f27ec2827ada74bab559a20e148fcae36b0f91140283729c77a0e0a7777a01dac68395719e39a029607cb901b19c501480ab9279f4a086ea8d0b48d76c0586b7143224a76c61ce1831fe93e86b43cd1f12fe19ea7d2533dcdbeebcd20b612651e68f9ece3fcf6fa5067cbcf20ff009a051724905411e94032799060723da8406d6c67e7ea68d0e1770fe5cfb5026c37039ef9a02eca098c91e6e01e71c500b1d8a49c12786cf6a06a4e256008e3d050119958007920e2801154e32fb4120927b014017eb1c523ac5209a356215c291b87be28957ef853f0d66eaa99352d515e1d190f947669ce7b0ffa7e74a8f4be996569a5d9c56b6704705b46bb5238d42851f2ac875712bc70b3c30f892019540704d01ad2669a0491936330c95ce7140b2e4939a03638c7e8680ae485e33bbe540d60d3ada162c90a02c7270a39340a4f28b68da4645007a8f6a069a746f73235ddcefc391e12b2e1916824948742c99382473c73404791c617695279dc0640f9502c578c9efeb4095cb4cb0830ba21cf999c6401f4f5a05061d430c8079a02e03b3004311c7d281b5e3cd676c65489ee594e4aafe6c7ae07a9a0a075bbea3a8ea96f047d3935ebc404f04ad29411e08e011d98fed416fd212ee5b05b4d5ad6300c615807f1171eaa49eff5ad418c7c55f8466dd66d57a521f20cbcd66a7247a9283dbe5418a63862479877cf1f6c5008e400bdf1ce684016fe53dfbd1a73794600e08ce3d6800377c8c7d6800a9cf75fd4503d91492460f7ee3d28247a7b459f5fd592d22711c206f9e563858a31f99cfd050583518ba75247b1d134f9aed21396d4669769931dc01c003f7a329c4d17458ac5b55d36c12e040a3f1da75c1cb04ede2447f7f6a94567ad7a66db4fbbb29ba7d65b8b4bd8ccd09c8231eaa07b8ab04a7c2cf87b3f53ea8d77abc72c1a5dabe2452bb5a561fc83e5ee7e541e988218ed2dd22b7855228d76a46a00000ec00a510bd4dd511f4fe84da95cc31f880022da4902b1e7d3e99ac86fd03d631f565b4ee6d4dbbc649009cab2e48c83f514165b8b94b6895c44f279c280839e78ce28178ae6de46748a789e453865570483ec6812d42e85a421fc37918b00a883924d024c6e99b7a2a966c0009e17dc9f9fed40f81c77e28139218e4ff9815b9cf23340a01c907b9140201038ed402fcafd28386464e4fd33c50272bc60032609cf00fbd024f722dc66f24822ddf972f8feff00e280f69b24844919cac9ce7de83a447f30ded823007b50459d6ecacb528349b979127651b1dc795f1f3f7a0990148054823dc5015d491c0a0c3be337c2ff00c489b5ee9c87172016b9b541c49ff5a8f7f71eb560c1fc43e0a47e1aa94277310431f91fa551c1727f29ed409b641c86e31839a3454805739c1f6a026f1fd740f64665fc8c31cfde82db79bb40e9e8f49b62eb7d7e8b717ec832c91ff247fa1dc7df2281bcc9369d671493c422b7911654c1215f92bb8827bf068624ba635392df5eb4b9924558ee5bc19b71cee43c6dc7cf34c657be8db0b0b9d0f51d2afe668934dbf9628ddb8c2b8c0073f3a80da37546a7d25174fd95dc125c69f7313ee5655dfc313bd483cf07b1f6a68d5b48d5ec758b612e9d7293211c8fe653f35ee2a084eb9e8bb1eafb3582fe496278f3e1c919fcb9f97ad03ee8dd017a6741b6d3229dae161057c5750a48249ec3eb4139238568f6a9e7b103b5037934cb3793c610a2cd9277a8da73f5140ee38f6280c4b11c65b934023006d50050030e4647de80c846de3b500fcf9fbd0197273ed4007b91400e580c8e45074a82400e72682b36fd2162b7f25ddc09af2766ceeb872db79cf00f6a0b3229550140e07007a50092db860673de818df473c862686dad6470d9cce3b7b63e740fa1de6252ebb5bd81cd00bee2d800d003a6464004763ce683ce9f1cbe1f1d3a67ea1d1a30b68edffba814708c7f9c63d0fafceaca31e6dc71e1f07daa82608c83819f7a1a11ce149238fd68d0a579ec682cfd27a7c3a86bd10bc38b3b756b8b93c1fe1a8c91f7381f7a034f752ea5aa5c5eb292f732128037619c018f6ec282e5a2cb047abda74d5ce9b6da80f136de4a496219b3e48c92000323ea73467519d3da5bb757dbda410ac90c77c23058f99007ee7ec31416882ee47d23acb5185caf8bab4691b1efe57fff0038a9457ee75a82f6e7429350466b482f2742c0f74241c80c38c64541a9cfa1e89ac0177d33ab3d8de28f2b5bca429f91140e2c7a9b5ae9fb85b6ea9b46b9b3c796fe040768f76ec0fafb1f9505df4ebdb3d4edd6e74db98ee216fe68ce47d280648f75e2485a44da385ddc13f4a025ddbdbea16a633286566ce55f9c8f6c502ad750db2c514f30dec428247e6340bbf04100b73402afb943ed2b9e30683836defe9403bc1e06734020e06280cafe8683a375941d841c77c1a0151b467b50159f00e4127e5402872371040c5046eb5aadbe9b1c02e2f6dad25b89047099c677b7b0140fe3f1010afc803f3018e68160c3041ee2823f5dba92d34db89a1d9e2843b03b6d05bd013560c1748d57aa2797c6b35bab78e6959dc47231580ff336dcfb03c1a58364b5bbb7d7fa7b7427f1f673830c8664285bd1815238fad20f2c7c41e979ba43aa2e2c1cb1b663bede438f3a13c7dc76fb5515e9065b851f7a02950002a09c51a1b83cf14176e90d3645e9ad7752752aac23b3439c066665c827e944d29a6410aea725c4567135bd840d3c88a723728c29c9efe6c50d3ee9545b0bf8ef2e6e3c2fc2c6f72f2920e5f19039ee4938a9a875d03278377acf52ddf867f036ef71923932bfe51fbd3475cdc369df0db4fb389d4ea37970fa9cc0b00511795ce7d4f181eb4cd2451755fc45ac16d637381b14ca36b641dfce723e4053170d6cb52bbb362f6d3cb19241f2b9029862f09f143549ba7e7d2eef6caf2797c66ee17fdfd69862d1a069da7dfdac579d17adcda5ea9e1a992376c4723e39e3b024fd7e94c458ac3e25dee8d31d3bae74e7b79002bf8b8549471db38f5f4ed4c165e943a06a328d4ba605b4b22a1523c420c64fbaf38a82d36f0ce7cf7463790729b53017e940e0b0ceceed8ce0500e1b70daa08f5c9ed41d271cd0132476e7d7ff00aa069797d2411168ed9a41fcc858211f73c5075acb25ca6fb82aa31e58a36c81f561dcd033d42169e158ac64b98151b3981c2966cf639f4a064c7a8ac55e4865b7d493701e1c8e52403ea3cbfda827e390ca3f2c914aa81991bd281cdacc2747215c60e0ee5c67e940cb51b0b2bcbd824bfb08ee1a252d1caea1821cfa67b1fa504982b2283ce08f518a08abb82f6dd0369a5662081e14ce40c7ae1b04fda82275cb0bfd4f4536f7114589a5412461f3e4ce4e0e060f63f6ab2893d3b4b5b5b78e22ed22aae3cc3cc7e64fad3449a22a461500007602a0cd7e3b74c26b5d2ad79147baf34eccca40e4a7f30ff3f6aba3cd0543267eb5427b86f1f4c76ef45d0eca1ad5ef224d13e1cf4fd9b22192fa67bc955f8c8c617fba9fb510d7a6ed3fd43a735e5b54964be658c048fb6cdd9e7eb8a186bac97d174e6d22e23437b7ac26b95e77c68bf950fa7279e2b22dba45b59e97a669fa4ea36aeff89cea9a90451fc355ff0096ad9f4ce3f41570675d4fa8c77da8de5cde5be26bc653171ca47dc1f6c9fed5562b97f70276808da7c24f0c1c63804e33fa8a2928c0e0383c8f7ed41d92a41393f4a2548595c2c37493db4cd04e8a08f139566edfef3445b6e7aeaf65d2df48ea2b11776ae02a93e564c772adef409f4ee8ba9a21d73a36fa579ad9f325afe599171ed9c30a960d5ba0fe2843abb47a6f510fc26a4c36890f9558fcc6783506a1147b510024e30339ce680d2c6ae9861eb9a009178a0205443b989e39cd01d8075e3047ce80563057ca381ed4011c4531e503d85013c91b804a21279c903341131cda8c3abdc8650f6d20c4321232adec3dc504bab2c113c9293bb1963df3408dd4b75e1efb2856463dbc43b4631fad047e9177ad4fe32ea16b1db4b8fe1aa92571f5f5a0916bc8e0895af5c46c17cd8c9ff7da80f6d736f7f6915c59cab35bc837238ed8a072a31c1ef4062870718a06f7702dc5b3c522ee4752ae0fa8230683c75d6ba3b74ef535fe984929149e4278ca9e47edfdab42058003763ed409f88ffd6dfad06b1f12ae612fa0c76e0b471e9916d23f973eb4158d3efeff004a984da5debc1295d8e4018dbf3145d583a2ad96f356bbd7f5d90dc59587f1e79a6392f28fcaa3ee47159444ea3aa5ddfc7acf50dcdc344d7a4dbc317f52641200f6000fdeb41b5ef51d8eab672ffa9e971c97c11638268e431a46000012a3b9a351567db823b11f3ef40948e428048207a8340ab48ae83cb83ee0f3428a982719edf3e68c9cc97d3fe15ad8c9be138f2bf38e7b8f6ef40f7a5f55bdd3f56b46d3649127f1405f08e7249c76f5fa50689d48ba5f545cdcbdb462cba9206411b2b055bb07d4fb1c73528d4fa8f52d62cf47b6b8d2e65fc458c49f8a818795c151939f977a823ba0fe253750eb7fe937b04293f9f6c90be41dbdc7ff006283473c1efc1a06f69776d73bbf0f2aca32572bc80470450284a46dfca19f819f5a04e799614def26c0bdce09cfd85045dc75769d12dc3c3e2491db0dd3c85195235f7c91cfd066ae0cdba9be31f4ec61a386c1ef9d4ee473e45cfb1cf34c101d3ff1ac9d481d46c628ed24751881880833f988e7b0fa5328dfed2f2def2ce2b9b79925b791772ca87208f7a60182ee2b95cc0c48f53823fbd40ac658b30f4f4a086d4ee1d75bb6b78f4e965596366fc5211b23238008fde81f43692da5bc30d97831a0397dc09e3d714087506bf61a2c4cd77324726d2caaec141f9fd2ae0c435bf8c57173ad7876f7a2daca10489121244cdf319ce3dbf5a834fe81f881a6f57bcb6ba7c53c72c11873e28cee1db391dbef4199ff00ea4348116a5a66a8a8a04aad04847a90723f6ad7d18c312ddc02a3815423ba0f63fa541687bd9efe1b533b3c9e0a78473e899e318a09bd0ba6eef543e3b2bd8e9b10064bd9e4da001dc81401aeeb29a984d0ba7d5e1d06d4e6594f06523bc8e7f5c0ac8af752dfc17d7090d9218ec6d9447129ee71fcc4fb9cd6842ab10dc0014f3e5a2c1704b671dfdc734525226dc939e283a362c7f940344a380393df144733e2276e38f5efcd01b4bbbfc3dda4a9298a44395902e4a9c70682660d4265d62de40b1bdc1545054f95c8fe627df141af7c3af8808f3dd68dd5d2a45765884b8908d8c3b6c27b7a77a945d7a5fa474bd2ba8e4d5748b28624955d5d8b13b79ee9e983d8d40a753758c7a46b96f6114725dc92279a2810b3a64f94900763cfafa503fd3b59b79ed84da34713c0cd890f0a158fa1f981de826e1b548959fc4dc5cee24b6467e59ed4101ff19e9f676baa5d6a72c50adb4ad1ac790ccc076200f7ad41e7df881d79a87576a5f87b0f161d381db1c2a36e7e6d8ff3416bf87ff082c6f208ef7a82f22b9761bd6d619785f6dc477fa53705ab57f83bd297ceb1e9caf67708db9c4526723e849e3e94f212dd25d117fd29a8c09a76b534fa39cf8b6b71ced38e36fb73417f52e64548e34007e673e9f21ef590a1c918c90718dc281a69b68f67118d9da5058b798f6fa7fe280daadd1b2d36eae70710c4d263df0a4d583cc7a668fd4bf11b5837d7c93dcd9a3146959822a0e781f4cfa55161e9dd7fa67a4f55b9e9aea3e9f81fc09ca0ba118998fcdb2338c7b528d39f4cd2ba76e2d357d292df4eb391809963420ce1b1b576fa1e7359119f1eb4e17dd033ca172d6b2a4df303383fdeb5c8f2eef3bce4e0e335684cb0c9f354160d36f64b0baf16072b91b5f03391f43c51aab23a5debe91c4fad4d73689e6fc3a290573ff4f03e59f4a3280d67581ce916567f84b58ce0a1fccec3d58fa9a084de08c90464e4d1a8e419059b201f4a05630a176918efc50176293872c17bf14042aa0125b03db14046c60b60123fde6827fa0c68edd5365ff11346ba6292ee64194240c807e59a32b7fc51bfe8bd5ed5db424860beb62b89218422ce09c11c01dbbd0660ae110bf1bf2154838dbebfefeb41a8f4cdac7f117458f4d9ecd2df53b4cf81a822808c47255c0f7c8e7fb54a2ec2cfabba3b4b4b8d3af12eedad40926b0f070a13f9b633649f7a82eba6ea4357d321d4ecad512daf20df26e016507fa4fbfaf3e98f9d067dd2bd2faac9aa4d72d72d1e9510ca46a7631c7a320e18f1dfd7bd059afb7da816d23de4ba5de211346a1e4785f190548e4648c63b64e6b43ce9d5baafe3b539c5b452dbda46c638a167cb281c73ee4ff9340e3a3fa5f5aea4ba58f4bb57dbfcf2b02a8bf7f7a0de3a5fa0b50d2a2d92eb3e048c0a97c867dbedcf6a944e5cf4f6b76d1b3d8ea42795066266c87c81c65b9cfaf15048e83af3cd64abac08edaf01546c38dae4e0657ee6826e5b892de3702292e2545ddb55700fd0fbfca81c4b3bc718716eef9eeaa402280d14ab3c0b2c65c06fe571823ed40df56b217fa6dd5ab9216689a33f2c8c558307e83b8d77a37aaa7d22f2512c28768800c9954671b3d33ebef568d0ef7a7749eb0b5bbbb162d657b32b46d2e1564c8ed9c5644d1b0b9bbd261d2a440af6cb0e2e5b1e7dbc1238e0f7a0375b696daa7496a3a4dac8a92cf078685b271db04d391e40d5ec4586a1716de2a49e0c8c85d3b120f715ba1899173ff305413070abd89cfe9f5a2d3ee9c8639fa874eb6b804c52dc46b20c9f302c3bd11e84d47e1af4d5dc6521d3e3b662c19a58721ff5a9a321f89bd27a374b456d158dccd34d333332c9b4b2afbe47a7cb1f7aa33d2bc0d8c0f1c8f6a2c14b6d501b39cf63450897380c319e3de8065031c038f7ed40d8faf1ce41e4d004876a8dc3cc7e743025c956c818028c904579e7f0e15695c9c0541924f6c00283d0bf07f42d6b48820b8d62d20b2b58d656404959e52f83c8ff00fcfafbd4a35bb06f12391a48dd55cee2b2f3818ed8f6a8158a159890f02242079147623e631c502b0db436d1ecb7458d4738038fb0a087d6eeb508f48bb7d32d95750752b6c26c905b3ddb6f61eb574794f5cb6b9d0fa9678b512b25d24bbe52b8c1638278fbd582c57ff12afaed45b5bc0d0d8a8c08a2731ee3eec5793f40450466a1d59af446293c186cd53ca0c36eab93dc649e49fbd048e89f1675ed35e301e293919dcbf9867b37cbe94a35fe94ea4d33aba6824306dc48015750d86c6e247b0cf63591a40b8dc23fc30f14138dcac3000f9d03687547f12e8dd5af816b13148dddbcd29039c0f6f6f7a0eb5d62caf5636825db70c9bc4328f0dc0271c8a090627d3073ce681acf6505ccf14d35bc2f2c2731bb28254fb8a075144a83ca806792400334049ee6281e2496408656d880ff0031f61fa50446bd76058ea1b9e21025a3bb48afe71df9c7b71de9c8f196a0de23ca7b827d4f7add117e0cbfd4b5059392369663ff004e71c51aa97e8f555eadd258f2bf8a889cff00dc28cbd0bf123a926e96d163bdb74490bca2321c678209ff001591e71eafd7a7d7ef45cde2c20aae144638033fb9ad2e1b5e69d058da431ccf21d4a5c3b4631b62523807feaf5c7a50222f2d648c25f5aeec8c2cd19dae3d3e87e944d3eb7e90d425b49ef2292de38224f1505c3f8724a9eeaa7bd0d57a60406059436306868a7803839c7ad1a158039c13f4a33a716767f8cb9b6b55e1ae2458813e9938cd07a9f42d0b4de99b4b7d1f41b58ff19b03c93ba06607fa8b1f5f619a5b8266d74a65d42da6ba90cce996dcdc8c9fff006a5a2c2635083b05ef83eb5028076341db4b1ed9f7a04651fc41db18ed419d75b744dbea335fcb0db0335f2057901c05da73c8f9d5d18a75174a3f4c47335e35da4ce418a489374254f707d463d33565d1529b569a489a17944b06ec8057d71dcd037b4b6b8bfba31584124b27e62a8a4f1ea68357f83da7ea5a76bfe0912453ccabb49194653cb60f6ce3dfda983d196cd108c2401711f9768e306b2297d73fc6d02773a8b591922693c5004bb9d72542fa2f6efde8314ff867aeeec27500b77bb5670e36ca19b1dff2e7f2fd2837ce8bd5dd348b78b552219022870d9c46e792a4f6c608a0b846c8e03232b29ec41cd0199f1410fd4b24b1e8f712c0a5e4452d851e6c639dbf3238a0afa42ba77475e4ba8470896681da45180b18da76af3c9029c8f26dc1df2b9c606e273e86b743331924f27f4a82c12280e59b008e79f6a2d4d74188ff00e30d203a82ad7519c1ff00b860d11ba7c5e86c9fa3afae6f4091e043e021270b21e01c7dcd6479ab4dd3aeb56be4b7b184cf2b301b57d07bfd2b4bad0fe25e9f6960ba7c7a55ac50cd750335ccaade7723b83b8f6e38a2207a5ba4e7ea3d93780cb616ca53781f99fbff009a0b675a5be9765d43a75a6ad3b25adb4185429b831c70303dfdfd2831eb8954ca48f3827819c71ed406b2b1b9bf9a5fc1c4ce2253238047957dc9345d122b792eee522811a495ce1157b93ed444ff0049f476b1aaf51c761345269d25be269259570c833c6077249e062a68f53e8ef0da69509d4ae225b92a04af232ab16f98cf1f4a5a266d4dbca8af13a329ecca723f51502d14f0cb9f05d1c8ee01c91f6a0393b4edfe63c8a031608859b38f97340d84d04e5846eae50f9829ce3eb400fb24466041f5e3d2823f56d22db57b192d6e61468a41c823ff0035651916bbf04ada7badda5cad6d1b72c09dc33f2a6875d25f0865d06fe2bc6d4c4d3282026cca8cfafcfd29a34cd234a10c768f711a78f1bb392a3001208e3ec69a26a58d640c832091c90706a084ea1d3eeafdadf4f86da3166c0b4b397c18f046140f5ce4d04f4702436e91c28a9122e028ed8a0a9f5a5b6a09a1bc5a135bc72cce048b3c5bc15c638f9d59043fc2db997481aa69dae49e1cb6bb643239211939e467818f97bd305965ebce9a10bc8da9dbaa2679dd9ce3d8530572cfac87566ab05ae9f1490692b9696e1f833738555f96793504df5f25945d2576b7ec16dc46792381c7b7ad5e60f234980e42f6c9c56a82ec3eff00bd4124e49700f1c646e3cd169ce9575f83d52cee324347323f6e3861ff008a23d47d4ba6a75074fdcd8ef317e2e2ff0098bdd4706a60c3f4ae8cd5f44eb8fc3e97248a638cbc73bf90483d463b373e9574685abf42a6b5649fea72bbdeac4a8d3b018cfae31f7a6895b6b29b41d30d8e9f6bbed9213e1b7a994e724fcbb5064bd7835a9752d3af75d8116354778f660788cbd9483dbb0a0cd20b2b8d43528ad2088bdcccf854039cff00e2827a0d34e9da1de896f2182492efc0976f998aa827d3d334113a74aa9a9298628e74570478bc0c7cf1da83724bb8246d3e6416b0384da61b5501c9f5c3704f152c037561a95f5fce61d3ad6db4ab950f34b331dd9f4191db8fdcd406d67a675ab4b6d325d1af248272a43430315ddec7038f6ad4b3f448bf47eb71cb69abddebf21d5e26896203846c30c8603b9c6452d9835901405660376319ac84bf13180779d8bb82827d4fb0a06f777367a75acd7170f1430a9f331200cfceae061a0cf6dac692d7365266191db0578f5edf3a6075a6c9278b3433188a467860d96fbd40fe540471409aa0c1140750001ed8ed4058e15133c983960077edf6a06faade5c5b7822d2d926766cb967da2341dd8f0727d85033d27597d62e2ee3163756915bbf8799d71e2f19dcbf2a092b88dd9a311950a0e5b70ce47fe6ac18af53f5b69da9752dd69da9ca906876e24465d9e69881c6ff005c679c0aa2bfd267a347512c93dbb5d42d90d3c800b68c9ce0ec3cfa528db74ad034db5905ee8be1ac728dc153984f3f980f4fb56453be2de8f647a6aff53796596f0aed46798ec033ce149c0fb0ad71479c9bb9dc3bf3c55a0b95f65a825150b481a407b93c0fda8a29c06671dc93803bd131eafd0af6dffe18d2ee25982a4b04603b7a9c631fad03bbe586381bc5945b96385718c827db3eb5288eb8ba934eb15fc3c535f05427796dcccdec7150637d5bd55d5362b7975aa4d0d919018adec8637807bb60723000e4f7cd58203538aefa8aeb478a7b9beba924547b8774cf8608036a80704639cf1f9855d1a7f4c68b67a03de5e5d59dad8d988c62e1c0f107a1e7fdf7a082ea6d07a6e3e99375a7cb6b3db093c727701e2360f7f53dfb50653d4130d42ee18f48b3f0232a15218936963ebf5fbd06dbf0cfa74855b9d46e04b730c6144691e12307d33ea7de8348ba6b5478a279a004f98c479247b81f5a9438805ac0be2e02e73c9ef8fbd40c2346d43578eefc40da7da1dc8b8eefea4fcb9fef419beabf12a4bcebcb2d2fa7ee0dc58492084b30236bb6467dce383f6a0b87556a67a7f4d95a0bbb5468816f0a69c78b2e072572719ce78357079dfab3af2e7a92c963b88d94abbbf91cedc93edf418aa2c5f0dbe2a6a9a0c90d8de34773a6a8da1186d6403fa48fec682d9adeb7a9b4c9d572dacc9a6c9700456e5ca910e000ecbd8e580352fb1ae7476bd6dd49a325e5a9f3025245fe961dea097523cc0919a032af039a006936c81423104649c703ef40dcce64bc3035a87b6f0c378f9fe7cf2b8fdf340a4b6e25962915d94a67807839f7a043586922b5636ec44c061063f31f6ab079d7fe19b7eb2d4efeef55d5d74f992e9a0fc3a441dcb13927b838c9aa2d4bf042c618e178efee6e18104870172318edf5c1e6945bbe1a748ea7d2315edbea3a99bcb190030c401010e4e783ee0fa56455be3d6b90c1a6268d69e17f1486900ee98ec29ccc183119419e7e55ba11f089f523ef5058363a8059fb8e31e9421b491056c01819e28d3d0ff07eea3d53a1e3b6b8db235aca63c139c0eea68ca47a9fa6ef757b83ff00bf68ad428c2f248c7a8f9fcea518df516adac74e7544f63a2ea172f1800291e6cee19ec78cd5826344e85b6bad25ba8fade5b99dae0ee11efc71e858f7e7d054a2d7d39a75ae8f7b6b00b8917f1516624b78429da327cec493db1db1d8540cf4aea28f58d6aeae2f6dd64b498082d880488d149fcea7d4939ab04175e6850a8d32de3b78e380c8de32c4db4e18e430fef543cf86fd0d691b4fabdf6648b3b2db69ce7dd87be68342d2f4fb9b5b891af1a28a2dc05bc5036d001e0eef7352884b961a2ea9aa7555c885e08d45b5bc52b61b686c120fb939fb541276bd4b61d53624d942e2f6200bc32290633e99f4233416dd3ad3f0d611c0c77b632e71dc9ef41156dd27a45addcb3dbd9c513b1dd941821bdc7b558333b9f873757fd69a85e3f813e9c7723b5d93265d872473c11544a68ff08fa75e290b42ec4e4124e70738fa5048e89f0f745d2aeadd2decedda6525c975121183c77f7a945c754d0e0d563682ed43425369403bff00bcd58308ba7d5fe13f5a05889974a9d8b46aede4914f707d88ff001528ddf4fd7edb54d1a1d56c312dab2e64dbc9418e78f5c541296d70b716d1cd6f8789977230ecc280cb7519b816f212b205de4e0843ce300f6cfcb39a0545c42cee88e0b458ddec33ee680eac92266360debc7b5056fad2d354b9b189745744be121daf27e550548ce3d4d58324d07a725e98ea2b7ff5381f5169a7579d021fe13904ee43ddfbe49038ab46e76cf05cc714f6d309232a4a98ce54fd6b2196bb7f2e9b631b2c427b891b6851db3eff002007341e5bf887aa2ea3d4f77378be381e42fdb711ed5a1554395caf1cd07617dcd04fc85402101da791421b49920331381c60d1a69bf02f56f03a925b12c162b98c955f775e47df19a32d99b518268e4491668704a79d4aeec7b7bd4a30feb7e9144d76e265697c3e2693631674273803e556087d76f35fd49859e9925ccf611141106f2e182e3241f727f5a94681a268f79ad1b1b8b9dd66b1c2b1ce9bb06361c1e7bf3fe6a096b0d3ba57488e485b52b40909c386901607d47bf7a0ae758eb69ac4d15be81a748f0a9c35cc90b2eff4c03c1c638a0b77405c5d5d45f87be5fe359a88b81b401dc1c7d38fb50586fed18ea3015790091591e447c1518c8c7a0a0a5754d8c9d49a8d9f4ee9dba0b3b5224b9692327728f627e7c6682f9a7e996b6b3a8b6b748a348820c7720761412c064e3041ce282b5d4bd73d3bd3f33daea97ac2e540dd0a292dc8cd043c1f15ba2a7923b65bb910371b9a12141f9d02edf13ba2ade56857551e5e77244c54fd0e280746ebfe99bbbd655d56dcdc9ce08465565f4ee3bfca82d53eb3a6dac3e25c5f5ba646402e33fa77a0aff5b74ad8757e9ca972844aa37c520fcca7d3f5ab067bd369a8f467544d626c98e9f7118f0200e4465c903049c8c9e6ad1b24334b6fa6249716cab20037c309dd83db03b5640dddac3764a4f02cb1103863919fa7a1a06d6f600c37162911b7b252b87dc773f1927393f4a079f868edae1ae6328a8b1ed38e30050226e85d5dc1f879011b3c47c2f604719f9d01eff4f4b83e3c6b18bb452b1cac9b8a83de80b16e8208a3b7b58e1407cc061427cc0ff1560ce7a8f592d69a97504cad2dac01a2b53900c3e9e51ea58f727d0551e73bfb86b99a49a46dcf21c96340dc13804f20f6f9501c0e3b8a0963316fcc4607007f57bd084d64dec01200ce483468ff0040d525d1755b4d4206ff0095207c11dc67ff0019a18f56584f6daad9dade4211e39104a8ded9152b235cd8c530613229c8c1c8ef50472e81690ee00322b0c100f0debdbb7ca8111ace856371358cba85aa5cc407891ccf83f2ef4048b4ad2e59bf116769672c72f99dd1437239078e2824a4d3e1b94559234110e781839fa0a0561b38ad532a12319c86c6307e740a9732a3a00cac870cd8e0faf0681be8b6db965bb909df3c85806eeabced5a09523647e6e0fef419a6adf116daf7ac34be9dd1da686e7f1ca2e243b76320ce57df9ff1560cc3e3f470ff00c78255b842b35bc6c4af9b6e323d3e95467b6365f8dbcf062beb68c119595d8aaff6e282422e9899b4f6bb5d46cda2562a76316c1078f4a0859e1b9b762c0bf94f0e84feb4125a57505c58ea70dd5d0174a986d92b1c13f6f5a0de7a5be366877260b5d42dee2d2423124a487507ebdf15289dd3fac7a7bab6feded74d61733473acdb5a162142ff00313d81ed505fa58fc6d809380c1b9f5c502e0e05040ea367a85dea454de2ff00a610375b04c16c7a16ef8340b5f6930dce9375636acf6a278f04c5dd4f1dbf4a084e91d06f3a52dee62bbd4a2b882494ced3c8a448063b63b638fde803ab7ae749b2b3096d792c93c8c109b55dcd18ce3710473ffdd043dc758dc5869044565aa5dda4c3c2b7bc78c1f14e3963db03e7c0ab066bf1327d41ba76ca6bc48ecad24c456f6b0c87cf8e4bbfa138c0fa9aa3297c83dd4e28395811cf2680a5b93c7ed413cd1ff0f3c797b8031406645236b0508406f30e68ba49c051b97d0e0e7d28ad57e19f575c5be8f269515dac772877c11bc464dea7ba8c739ce78f9d3193bb8ebfea2bcbd6b5b6b8b58bb7f13c2f0ce31cf0deb4c0f2dbad6d743d2ee99efae752d6c02a86e0054524f6383c7ff94c0b6af274c75149a46a5a82c46f1e1479fc3190bd8156fbe7f4a960bf74e9d253f1167a3ac09e0856610e3041ec7f6c540f67b892cee7f8d18368232ef2af2508c7047cf340ead5bf130accc9b1186541e723d09ffc5033bbb1b82d74d6b37f1244daa1b38073df3f4a08eeb1d3b50d4fa6a5b4d32f12cef1902ee73e523d476fde8306eb0d3fabfa4ba92c278af67bb7281606472f90bdd58558253a6afb40ea1d62283a8b461a66a6f931cf6a7c2466f7cfb939e7b5515fbed3747b5eb8f06eb78d35080a2ec9719c76f98049a0b4ebdd37d1bad869acbf0b03c5c16b29444adf50ded41995f68564a263a66b31cd02be152505493f51c1a088bab69ad1bc179e320f07c37c8a0692b46c4995f0381db39a0b2fc34e971d57d4705bc8db6c50ef9dd97b81fcbf7381528f5ae97a1d8e996d1db69b0c7648855b10a81b80f43c739c54134147b9a036063279fb5046e957726a0f2cfe04915b06db1788305ffeac7a0a00d72f8d9c491c06337533050ac7185cf2df6a06da2da4293488f34973328c34aea428c9ec3eded40ee7d2ad249448f6b133820ee2833df3fde819ea96897461b05b87815f2ee919e5d47704fa039ab079b3e326b70eafd4ef6d6650d8e9ebf868b69c8247723efebf2aa280eb9193ebedc5002a124e015340018fb8fde82cf32b1603d0678cd02406dce3008e47ce81b499c331383c9c9f5a2e9c69377369f7d6f796a4acf148acb83fb511e91b3b3d0bab745b7d45acedd8e3732b71b1fd73f7a5a19eafd09a56a0a96b1c705b49c48510761ce4fcfbd4d0d752826b2b583476fc3daacb295b79d768de8a32b1e71f989e49f6a7d14dd1af5ba275a45b8b093c054492ea769092373765c1da4679fbd306e36ba9595fe9f0dcdbcc92c33e1579cf27d0d409ea178f68521b6b76926ee8a7853f7ff140bc768d78f6f73748d1cd103b543f0091cf6efc502f7319dac194371d8b6326829f0c501d7ae6fa568d5d4942c806d4db81839f53c8cd59456fae6e628749b5bab8b1865b08e4726588ec11e7f2e49071c93da9a31dd4341d675e9a5bad374f9858162d0b4ac70e18f0573df35a0c759f87bd53a404f174f965dfff00f479b1ef570576e34bd4b4cc0bdb3b9b7258a00e846e3f2a94376475cee4914af7ca9150685f09ba61efb52fc7dd69bf8eb7c158d1d0b47bb38f37efde968d6eeb4eb5e91d6ad25b660aee59974db6881690918e31ce39279e062a5a34bb57b88adedd1e379679065d80036679e6a07e8391bce7e940c659ef5afe1286de3b16f2b8903094b7b2fa7ce81eb380c4260ed193f2a0cd6fa5d4a4ea0fc7bdadcce923158a3039db83c038e3ef41a0e96b2ad8a35e009291b8a939d9f227e43bd590436bbd6fa269202c974b7123602c76e779624e00e29833bf897d493e896525dbcb2a6b5a9c3e1456b91b6d60cf989c7f31f7a60c02490961ebcf3eb541308e39e067b507007b96007a67fb50178f97eb4165ce18165c2927b773fad023202d9c8dbb7818ff003408300b87f2f1c107d0d0c15a4f2e339c90467f6a18bdfc2cea8ff4bd561b4b9ba686d6e64552c4f954e7d7e46a60f4688d240af1b2bc6cbf5047ca960617ba658de1b792f2d94a5ab33461b18524633fa1a81b5c8b5168967369d23c0e0a24622dc981d81c76aba29df0bb48d660d52fceb88d069f04aeb69130037127f37b9c0ed9a8350781240bbc06da72323b1f7a0eb8816e633192ebc8c9472a78fa50349b4c83c068e24f0ddbcc1c13b837be4d055b57e98b996d4db5b4a893dc1e6620b6ccf2c467efc504ce97a38d3f4d874bf09af6d46e2f25cb82724e791db15650a43f878b51fc34f3da8f132b6d6a98c80a39ff007e99aba249631b58b9047239ec3e55368aeeb7d2da6f52c0eb7f16e87f2c6e836ba90724ab7a67b55d115ac7c3e8aed2182def4c56a14096368959a423d77e3229a27b41e9d8343b01069c8a8dc9660aa3713df3c64d4a1c695d3d6b67a8cba94b9b8d4e61869e4e4a8c636a7f4afcaa09a485519caae19b966f7a0435196582c656b74df3e308beec7b50629375775b691ac5bdb6b16d6378779f019b00a31cf391c9c2f1daae0b35ef52f5374de88d77aa45a6cd25ddc0108694ee2188c28007603d6a0d16c92430a4b2ed3230dc401855cfa0a0a07c45d7b5db9d462e9ee960b14b2ee134ef8c850012147ec78ab0670b643a2efae753d72686e6e2da211db42176079c8e768f65e39f7aa332d6f58bbd635096f6fe6692695b24f603d801e82823cb900ee00e68006460051dfd680ed9f0c905b713d8d006d5f5419fa505a18f94e40501b1b81a04186d62402c87be3d6810b81290aea8467201231cd1749dbc437f9f1e201db3de8ba07dc0175c027f28a335b17c26f888d6b6d0e8fabf892a29c453b1e547f49f7a946d6424f08236491c833ee0835073294888894120700f0280813c40a6711bc8843e00fca7d3ef40e41dc081f9a811681c6f7565329185623b7e9de812b3bcf11ff0b74563bd50494cf120071b97e5fda80d7577046c9019d5669dbc340324eec67fb734103d5da96bf67a7cf0e916f6e2765f25ddc4c11107ab1c8c647cce2816d3ec7f0f6564cae6e67da375e6d52cc4af2e4fb13ed4145f899d47b3499f4bb6d46cda49b69b92921565c3648e3dd40c81cd5c0ae89f13ec246d3e379ed2d6da180b5d34849da1780b128e49271c9f4a60ba685d5fa36bc42d95c324ec7090cc9b1d87b81ed50588958977cacaaa3b9341c655f12348d1dcb8dc1946540f99a019e2134454eeda7bed3839cd052fe2136b536b5d3563a1ca53c49da4b9507198940ce7e5c9fbe281c6b7a974cf4ee4ea7242d76dc784a3c595b3e9b464e3f6ad0ac745ccbd4fadcbabea42da56959a382ce7460d6b1a93c01f97272093ebf6a82f1ad6af0e9da5cb3cecf6902216919f82aa3818c7a9f4c530649a9f5269ba7429d472239bc991a1b0d3c3152880f0f23039e7bf3de90635ab6a377aa5ebdcdecef2c9239e59f3827e5ed54302195fcc38cd01245395c1f5f4a05b606538e483c501b6939e3b5077860f3914165754c33e549000dbe87de813b820c27fa7baafb8a04a69c98e281e42618c795338033df1f3a06c03e4e029247007ad010093c35674da71f977640340081a190658e41c820f141b0fc33f8926c218b4ed609366a02249bb2d19ce3ea4528dbece68eead926b7916689c643a9e0d643387521fea2f693c2d6efc786ee46d9bfed3eff2a04669edf5295ff057a60bd865309246d3bbbedc1efef41d63a8dec9ab4fa7dd4510fc3c69234ca186e2d9c003b7a67bd034bad0a5bb96e25d575267889cc1b54446d9bd0a37bfbfbd02925945a72cba8dddc48b3f87b1e58f23c623f292bdb7fa7cf38a0a5750f54ebba56a9a67fc516b6d6fd3970ea9234677c8dc7f38f6e4640ce282d1ac4b16bfa72c1d2bad430cd1ba822061865f5007d3daac19cf547c189357d561bbd3eee683c62cd786e9b73337b8c7bd512bd39f06adedec2de0d5ae639da372e6485363107f97767b505cee755d03a5e58ac228659af123184b7b733322e38c91dbf5a943ab3d52e64b49ee755d2e64950e238e35f10c884e17cbe87dc540e6d7509a4f110e9f7566a471712850abf6ce463e6280bacea36fd33a4497f773cf32c698dcc4beee33938edc7ad05534aea683ae61d64c4d2a69b6b88d16d5ca5c303f3e386cf61db140e27b5e99e96b64bdd562b6b30aa36c6c37cac7dc9eec6b42c1a66a962fa70beb6b516d0cbe76322f86c78f6c66831bf8b5d5d2dfa35a5dce60b1933b6ce3c788769f2b331ec1b8fd2831b79649984b239773c1dc68129725c1c640e73400ec781d8fb1a03c4a85d0c8582640257bd01e51fc42236263c9c67be280429c6037eb405dbf5fd682c2a0bb976cf07d3fc5009279ef8ec4e68193a9902b28e7dc71fb501d95b098e0f6dd9e0d0049131019b047b8390281bb292484e47c8500c4f242c3076bf704704739a0be7c3febfbae9a5daf23cd017c7e19fb107bb67d0f6fd6837cd2757d1fab34f4f05e37dde630b1c3a91edf4f7159103d6eb7da65fdbdf59dadb5e2460ac876ed9e1c8c060f9efe9c8a0a75cfc42d5742d2ee5a7e9dbb494b6d6b9bc930cce4f940e3cd81ed4160e98f88315e689fff0022b57664199cc5196f0c7a164ef8f98cd0589baffa68590985eb15c0db1985839f6c2919340b69d03f5285bdd6f4bf021424db4329cb153fccc3d09c76a090d3340d2f479a7bab3b38e2924e5e451cfd280d7dafe936f6c5e4bd89813b02a36589ce318a0358dc35cc4e17f9bf234cdbb78fa0c607a7340e6cec20b1596610c6934b8323226379edda81da8dcb9ec40a042f50b5bb21645473b58b11dbd7bfca8304f8add5d67a9ea8ba5d8ea72c1a4d8a952f10f2c920e368cf71e99fad5833dd0754d6ed66bdb2e9a91a5babb2a310465a57c1ddc1038e7bd5171d3748b8d46ee1ff005298dc6a764c27d4eeaee7fe1c01795881c9e7804fe940dbe287c4b6d75a1b1d1c986d62277c91bf131f4c0f6fad0663737135d3b497124924871f98e7803007d2811dc5b83903dc0a0333f03be7de8122df2c9a05a11e5f51f7a05ce7071804fca8033e5da0734020b0183bb23e5416269577ed0e5323078ceeefdff6a03dbcd62914c2f629a47c622689800879e4fbd046f9d8a2a03e31385c0e73da8b83ca590947dcaead8208e73da8849b3e19ce704f7c5015586d006431f5cf61f3a04ee586ff002481c8fe6191408f0011eb8e30682774dea9bbb5784492ca6385832e1ca95e3d2834be9df8c312e2db5eb4375080337000f1303d18763591a469baef4d755989ec6f6dae5a23e20b599406dd8e080ddbed41272f4dd8caf1c86d163910f9595882a3d718a035edd695d3b6a926b57d0ac65b10b4e06eedd863bf141077fd7af2782bd3fa26a1a8891d57c630948c0279393dcd04cf5875258f4de9f0cb7b7b6d66d2b81ba752d85f5214724fed41036bd79d2fe319d7a8f4b9c81e58de2f04827b9ce09a07a3acecf54b790685ace8697606009e52c377b7f2e682b097d7d36acf0f55df5edbdc0977412468cb6ce3be10af3c63b9c8a0b0751f505be9690dd5d752436f62a3fe4c6448f3b7b0c64e38f615734651f107e3045ac42b67a7693018633b965bc1bc838ee173807bf7cd33065baaeb1a95f2c11dfcd2bc51fe48880aa3e8a062a8b059f595df4ae9a74de9e9ec499d43c97b1427c6e47e525bb63e4282ad3ea3712893c599dbc4259c1627713c927de81043950df97db1406da8411c92063be280230839627078e79a0390a71b5bb5003a8c1232338e4507025573e9fbd02a0e41dc0e680c3691cf714053bb34160895dc16f291d98d02322aa39f3e14707ffaa06f202a5bb0c7201f4a343aca51090497efdfbfce89840c8db8e46573923ff14410b00490d9f5c1a0425dd8ce4673e873cd0265e4dbe7041ed814009b8cbb8e5863bd07163b7716e0607b6698060b96b7b9478dc8643918247ee39a60b7e97f133a8b4e0c63d4ee597380923970a3ef4c0e13e25dfcfab457ba95bdbddb212016501867b9cfbfda982f907c74b282da34874a9048aa479c83838edc62982b7ac7c42d235cd67f15ac5b40c366418a2cb0c1c81e6f5e31db14c160d035de8cd4a3f18ea96562cc37359dfe9cac887fef039fd6b39446f56ea5d13a9dca4579a922496b1975b8d22dfc3566cf9557230703be715ac1431d4d2275325d7fae6b4f6f182a93ef1e32a9f41938f6a60afeb1a95c5fea53dccf772cf2c8c489240031f627e7565c0d67bbf160487c1801073bc0c31f91f953420f2bc8c7c52cc540032738a809905c0f4fa501940208e73df34028e703938a0577ae013f4a001300db4f03b71407461ce0502dca8c9c7dcf6a003fafcbdcd0070bc1e0fd734070db467b8a04cb9c9e68274b93bcb1daa40200ed4099765249ec476cf340849b8b264823bf34689ee009cb671df1409bc8e8b8e770e3ec68984d9c953cf97be2860b248caaebc107dc67f7a184c31232db88fd451031ce50e76039f5c8045026efb8f93279e0fd680b239504f0483d88ef409ee25bb90c79c0e050151c6e21b39ce783eb40adbcc2cefa17bdb61322387781c950e3dbdf9c8a066f28790b22e013db3dbef54726081e63c6460d34191b1bb0720f634060e7600412c781502409c8e3d7b500ed71dbef8ed40243f181c0a02e5d4e0fad006f644e4819e3b501f7e3049e7b501bc43b4e391da80558003392d40a23305e320d02e64cf998e1bf5a032b0c927b8e68049c8c8e71c6280377043118f4e680bbff00de0504ddbb3128371c1c64668024e59f3cd02521254e4fad1a2107e48fe6a6809ddb9e78a029e1463d05027ffc744a6c3857c7b1a205ff00e637fbf4a02b12b1794e39f4a02024e7249ed409924720906800005173fd7404989698ee39e4f7a04cf723d07a501fff0097ed406ffe36a018ff00281e99a037f4d0731f3bfd28007e53400ff99a810248c0cf140bc60123233cff008a0557f9beb4056eff007a07109243e79a03778b27bfbd02b128c27039a054001b818a06609de793da815006070283ffd9}\par} } pandoc-3.1.3/test/rtf/link.native0000644000000000000000000000024607346545000015074 0ustar0000000000000000Pandoc Meta { unMeta = fromList [] } [ Para [ Link ( "" , [] , [] ) [ Str "pandoc" ] ( "http://pandoc.org" , "" ) ] ] pandoc-3.1.3/test/rtf/link.rtf0000644000000000000000000000040507346545000014376 0ustar0000000000000000{\rtf1\ansi\deff0{\fonttbl{\f0 \fswiss Helvetica;}{\f1 \fmodern Courier;}} {\colortbl;\red255\green0\blue0;\red0\green0\blue255;} \widowctrl\hyphauto {\pard \ql \f0 \sa180 \li0 \fi0 {\field{\*\fldinst{HYPERLINK "http://pandoc.org"}}{\fldrslt{pandoc}}} \par} } pandoc-3.1.3/test/rtf/list_complex.native0000644000000000000000000000371607346545000016646 0ustar0000000000000000Pandoc Meta { unMeta = fromList [ ( "author" , MetaInlines [ Str "Cynthia" , Space , Str "Johnson" ] ) , ( "operator" , MetaInlines [ Str "John" , Space , Str "MacFarlane" ] ) , ( "title" , MetaInlines [ Str "Text" , Space , Str "before" , Space , Str "list" ] ) ] } [ OrderedList ( 1 , Decimal , Period ) [ [ Para [ Str "One" ] ] , [ Para [ Str "Two" ] , OrderedList ( 1 , LowerAlpha , Period ) [ [ Para [ Str "Three" ] ] , [ Para [ Str "Four" ] , OrderedList ( 1 , LowerRoman , Period ) [ [ Para [ Str "Five" ] ] , [ Para [ Str "Six" ] , OrderedList ( 1 , UpperAlpha , Period ) [ [ Para [ Str "Seven" ] ] , [ Para [ Str "Eight" ] , OrderedList ( 1 , UpperRoman , Period ) [ [ Para [ Str "Nine" ] ] , [ Para [ Str "Ten" ] , BulletList [ [ Para [ Str "Eleven" ] ] , [ Para [ Str "Twelve" ] ] ] ] ] ] ] ] ] ] ] ] ] , Para [ Str "Out" , Space , Str "of" , Space , Str "list!" ] , Para [ Str "Start" , Space , Str "with" ] , OrderedList ( 7 , Decimal , Period ) [ [ Para [ Str "Seven" , Space , Str "Start" ] ] , [ Para [ Str "Eight" , Space , Str "Continue" ] ] ] ] pandoc-3.1.3/test/rtf/list_complex.rtf0000644000000000000000000017341407346545000016156 0ustar0000000000000000{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff45\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi0\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;} {\f3\fbidi \fdecor\fcharset2\fprq2{\*\panose 00000000000000000000}Symbol;}{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;}{\f45\fbidi \fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Times;} {\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} {\fhimajor\f31502\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0302020204030204}Calibri Light;}{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} {\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} {\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f52\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} {\f53\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\f55\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f56\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f57\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} {\f58\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f59\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f60\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f72\fbidi \fmodern\fcharset238\fprq1 Courier New CE;} {\f73\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;}{\f75\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f76\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f77\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);} {\f78\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f79\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f80\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f392\fbidi \froman\fcharset238\fprq2 Cambria Math CE;} {\f393\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;}{\f395\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f396\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f399\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;} {\f400\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);}{\f502\fbidi \fnil\fcharset238\fprq2 Times CE;}{\f503\fbidi \fnil\fcharset204\fprq2 Times Cyr;}{\f505\fbidi \fnil\fcharset161\fprq2 Times Greek;} {\f506\fbidi \fnil\fcharset162\fprq2 Times Tur;}{\f509\fbidi \fnil\fcharset186\fprq2 Times Baltic;}{\f510\fbidi \fnil\fcharset163\fprq2 Times (Vietnamese);}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} {\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} {\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} {\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} {\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} {\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} {\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Calibri Light CE;}{\fhimajor\f31529\fbidi \fswiss\fcharset204\fprq2 Calibri Light Cyr;}{\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Calibri Light Greek;} {\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Calibri Light Tur;}{\fhimajor\f31533\fbidi \fswiss\fcharset177\fprq2 Calibri Light (Hebrew);}{\fhimajor\f31534\fbidi \fswiss\fcharset178\fprq2 Calibri Light (Arabic);} {\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Calibri Light Baltic;}{\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Calibri Light (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} {\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} {\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} {\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} {\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} {\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} {\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} {\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} {\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;} {\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;} {\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} {\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} {\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}} {\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0; \red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red0\green0\blue0;\red0\green0\blue0;}{\*\defchp \fs24\loch\af31506\hich\af31506\dbch\af31505 }{\*\defpap \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af45\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1033\loch\f45\hich\af45\dbch\af31505\cgrid\langnp1033\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\* \ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1033\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused Normal Table;}}{\*\listtable{\list\listtemplateid2032649{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 _;}{\levelnumbers;} \fs28\cf0\loch\af3\hich\af3\dbch\af0\fbias0\hres0\chhres0 \fi-360\li360\jclisttab\tx360\lin360 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'04\'00.\'01.;}{\levelnumbers\'01\'03;} \rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-432\li792\jclisttab\tx792\lin792 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'06\'00.\'01.\'02.;}{\levelnumbers\'01\'03\'05;} \rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-504\li1224\jclisttab\tx1440\lin1224 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'08\'00.\'01.\'02.\'03.;}{\levelnumbers \'01\'03\'05\'07;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-648\li1728\jclisttab\tx2160\lin1728 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'0a\'00.\'01.\'02.\'03.\'04.;}{\levelnumbers\'01\'03\'05\'07\'09;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-792\li2232\jclisttab\tx2520\lin2232 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0 {\leveltext\'0c\'00.\'01.\'02.\'03.\'04.\'05.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-936\li2736\jclisttab\tx3240\lin2736 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1 \levelspace0\levelindent0{\leveltext\'0e\'00.\'01.\'02.\'03.\'04.\'05.\'06.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-1080\li3240\jclisttab\tx3600\lin3240 }{\listlevel\levelnfc0\levelnfcn0\leveljc0 \leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'10\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-1224\li3744\jclisttab\tx4320\lin3744 } {\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'12\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-1440\li4320\jclisttab\tx4680\lin4320 }{\listname ;}\listid161162663}{\list\listtemplateid-1055851588{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;} \rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li2160\lin2160 }{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li2880\lin2880 } {\listlevel\levelnfc1\levelnfcn1\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace540\levelindent0{\leveltext\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li3420\lin3420 }{\listlevel\levelnfc23\levelnfcn23 \leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li4500\lin4500 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 \levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'08.;}{\levelnumbers\'01;} \rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li6480\lin6480 }{\listname ;}\listid180975272}{\list\listtemplateid-1055851588\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \leveltemplateid67698703\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \leveltemplateid67698713\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \leveltemplateid67698715\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li2160\lin2160 }{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext \leveltemplateid67698709\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc1\levelnfcn1\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace540\levelindent0{\leveltext \leveltemplateid67698707\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li3420\lin3420 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext \leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li4500\lin4500 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698703 \'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698713 \'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698715 \'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li6480\lin6480 }{\listname ;}\listid581336416}{\list\listtemplateid-1516889114\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1 \levelspace0\levelindent0{\leveltext\leveltemplateid67698703\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative \levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative \levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative \levelspace0\levelindent0{\leveltext\leveltemplateid67698703\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative \levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative \levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li4320\lin4320 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative \levelspace0\levelindent0{\leveltext\leveltemplateid67698703\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative \levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative \levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li6480\lin6480 }{\listname ;}\listid592708402}{\list\listtemplateid353931476{\listlevel\levelnfc0\levelnfcn0 \leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0 \levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0 {\leveltext\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li2160\lin2160 }{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\'02\'03.;}{\levelnumbers \'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc1\levelnfcn1\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace540\levelindent0{\leveltext\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li3420\lin3420 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li4320\lin4320 } {\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0 \leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1 \levelspace0\levelindent0{\leveltext\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li6480\lin6480 }{\listname ;}\listid621182402}{\list\listtemplateid-37037068{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0 \levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1 \levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'03.;}{\levelnumbers\'01;} \rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li4320\lin4320 } {\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0 \leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1 \levelspace0\levelindent0{\leveltext\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li6480\lin6480 }{\listname ;}\listid982349901}{\list\listtemplateid-2094603378{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0 \levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1 \levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'03.;}{\levelnumbers\'01;} \rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li4320\lin4320 } {\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0 \leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1 \levelspace0\levelindent0{\leveltext\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li6480\lin6480 }{\listname ;}\listid1082678316}{\list\listtemplateid166376406\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0 \leveljcn0\levelfollow0\levelstartat7\levelspace0\levelindent0{\leveltext\leveltemplateid-1898031884\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0 \levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2 \levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0 \levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698703\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0 \levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2 \levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li4320\lin4320 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0 \levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698703\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0 \levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2 \levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li6480\lin6480 }{\listname ;}\listid1306352145} {\list\listtemplateid2032649{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li360\jclisttab\tx360\lin360 } {\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'04\'00.\'01.;}{\levelnumbers\'01\'03;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-432\li792\jclisttab\tx792\lin792 }{\listlevel \levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'06\'00.\'01.\'02.;}{\levelnumbers\'01\'03\'05;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-504\li1224\jclisttab\tx1440\lin1224 }{\listlevel \levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'08\'00.\'01.\'02.\'03.;}{\levelnumbers\'01\'03\'05\'07;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-648\li1728\jclisttab\tx2160\lin1728 } {\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0a\'00.\'01.\'02.\'03.\'04.;}{\levelnumbers\'01\'03\'05\'07\'09;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-792\li2232 \jclisttab\tx2520\lin2232 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0c\'00.\'01.\'02.\'03.\'04.\'05.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-936\li2736\jclisttab\tx3240\lin2736 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0e\'00.\'01.\'02.\'03.\'04.\'05.\'06.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d;} \rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-1080\li3240\jclisttab\tx3600\lin3240 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'10\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-1224\li3744\jclisttab\tx4320\lin3744 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0 \levelstartat1\levelspace0\levelindent0{\leveltext\'12\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-1440\li4320\jclisttab\tx4680\lin4320 }{\listname ;}\listid1517575639}{\list\listtemplateid-2069710980{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel \levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li2160\lin2160 }{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0 \levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 \levelindent0{\leveltext\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li4320\lin4320 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;} \rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li6480\lin6480 } {\listname ;}\listid1762801537}}{\*\listoverridetable{\listoverride\listid1517575639\listoverridecount0\ls1}{\listoverride\listid161162663\listoverridecount0\ls2}{\listoverride\listid581336416\listoverridecount0\ls3}{\listoverride\listid1082678316 \listoverridecount0\ls4}{\listoverride\listid1762801537\listoverridecount0\ls5}{\listoverride\listid621182402\listoverridecount0\ls6}{\listoverride\listid592708402\listoverridecount0\ls7}{\listoverride\listid180975272\listoverridecount0\ls8} {\listoverride\listid1306352145\listoverridecount0\levelstartat7\ls9}{\listoverride\listid982349901\listoverridecount0\ls10}}{\*\rsidtbl \rsid329053\rsid3617154\rsid3749795\rsid9258424}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0 \mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\title Text before list}{\author Cynthia Johnson}{\operator John MacFarlane}{\creatim\yr2003\mo10\dy13\hr19\min55}{\revtim\yr2021\mo8\dy9\hr10\min28}{\version4}{\edmins6}{\nofpages1}{\nofwords15} {\nofchars87}{\nofcharsws101}{\vern4617}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect \widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\noxlattoyen \expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dghspace180\dgvspace180\dghorigin1701\dgvorigin1984\dghshow0\dgvshow0 \jexpand\viewkind1\viewscale154\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\rsidroot3749795 \fet0{\*\wgrffmtfilter 2450}\ilfomacatclnup0\ltrpar \sectd \ltrsect \linex0\endnhere\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4 \pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (} {\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\listtext\pard\plain\ltrpar \rtlch\fcs1 \af0 \ltrch\fcs0 \f45\insrsid9258424 \hich\af45\dbch\af31505\loch\f45 1.\tab}\pard\plain \ltrpar\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls3\adjustright\rin0\lin720\itap0\pararsid9258424 \rtlch\fcs1 \af45\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1033\loch\af45\hich\af45\dbch\af31505\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af45 \ltrch\fcs0 \insrsid9258424 \hich\af45\dbch\af31505\loch\f45 One}{\rtlch\fcs1 \af45 \ltrch\fcs0 \insrsid329053 \par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af0 \ltrch\fcs0 \f45\insrsid9258424 \hich\af45\dbch\af31505\loch\f45 2.\tab}}{\rtlch\fcs1 \af45 \ltrch\fcs0 \insrsid9258424 \hich\af45\dbch\af31505\loch\f45 Two \par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af0 \ltrch\fcs0 \f45\insrsid9258424 \hich\af45\dbch\af31505\loch\f45 a.\tab}}\pard \ltrpar \ql \fi-360\li1440\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls3\ilvl1\adjustright\rin0\lin1440\itap0\pararsid9258424 {\rtlch\fcs1 \af45 \ltrch\fcs0 \insrsid9258424 \hich\af45\dbch\af31505\loch\f45 Three \par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af0 \ltrch\fcs0 \f45\insrsid9258424 \hich\af45\dbch\af31505\loch\f45 b.\tab}\hich\af45\dbch\af31505\loch\f45 Four \par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af0 \ltrch\fcs0 \f45\insrsid9258424 \hich\af45\dbch\af31505\loch\f45 i.\tab}}\pard \ltrpar \ql \fi-180\li2160\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls3\ilvl2\adjustright\rin0\lin2160\itap0\pararsid9258424 {\rtlch\fcs1 \af45 \ltrch\fcs0 \insrsid9258424 \hich\af45\dbch\af31505\loch\f45 Five \par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af0 \ltrch\fcs0 \f45\insrsid9258424 \hich\af45\dbch\af31505\loch\f45 ii.\tab}\hich\af45\dbch\af31505\loch\f45 Six \par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af0 \ltrch\fcs0 \f45\insrsid9258424 \hich\af45\dbch\af31505\loch\f45 A.\tab}}\pard \ltrpar \ql \fi-360\li2880\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls3\ilvl3\adjustright\rin0\lin2880\itap0\pararsid9258424 {\rtlch\fcs1 \af45 \ltrch\fcs0 \insrsid9258424 \hich\af45\dbch\af31505\loch\f45 Seven \par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af0 \ltrch\fcs0 \f45\insrsid9258424 \hich\af45\dbch\af31505\loch\f45 B.\tab}\hich\af45\dbch\af31505\loch\f45 Eight \par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af0 \ltrch\fcs0 \f45\insrsid9258424 \hich\af45\dbch\af31505\loch\f45 I.\tab}}\pard \ltrpar \ql \fi-180\li3420\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls3\ilvl4\adjustright\rin0\lin3420\itap0\pararsid9258424 {\rtlch\fcs1 \af45 \ltrch\fcs0 \insrsid9258424 \hich\af45\dbch\af31505\loch\f45 Nine \par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af0 \ltrch\fcs0 \f45\insrsid9258424 \hich\af45\dbch\af31505\loch\f45 II.\tab}\hich\af45\dbch\af31505\loch\f45 Ten \par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af45 \ltrch\fcs0 \f2\insrsid9258424 \hich\af2\dbch\af31505\loch\f2 o\tab}}\pard \ltrpar\ql \fi-360\li4500\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls3\ilvl5\adjustright\rin0\lin4500\itap0\pararsid9258424 { \rtlch\fcs1 \af45 \ltrch\fcs0 \insrsid9258424 \hich\af45\dbch\af31505\loch\f45 Eleven \par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af45 \ltrch\fcs0 \f2\insrsid9258424 \hich\af2\dbch\af31505\loch\f2 o\tab}\hich\af45\dbch\af31505\loch\f45 Twelve \par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9258424 {\rtlch\fcs1 \af45 \ltrch\fcs0 \insrsid9258424 \hich\af45\dbch\af31505\loch\f45 Out of list! \par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3617154 {\rtlch\fcs1 \af45 \ltrch\fcs0 \insrsid3617154 \hich\af45\dbch\af31505\loch\f45 Start with \par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af45 \ltrch\fcs0 \f45\insrsid3617154 \hich\af45\dbch\af31505\loch\f45 7.\tab}}\pard \ltrpar\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls9\adjustright\rin0\lin720\itap0\pararsid3617154 { \rtlch\fcs1 \af45 \ltrch\fcs0 \insrsid3617154 \hich\af45\dbch\af31505\loch\f45 Seven Start \par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af45 \ltrch\fcs0 \f45\insrsid3617154 \hich\af45\dbch\af31505\loch\f45 8.\tab}\hich\af45\dbch\af31505\loch\f45 Eight Continue \par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3617154 {\rtlch\fcs1 \af45 \ltrch\fcs0 \insrsid3617154 \par }\pard \ltrpar\ql \li4140\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin4140\itap0\pararsid9258424 {\rtlch\fcs1 \af45 \ltrch\fcs0 \insrsid9258424 \par }{\rtlch\fcs1 \af45 \ltrch\fcs0 \insrsid3617154 \par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a 9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad 5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6 b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0 0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6 a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512 0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462 a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865 6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b 4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b 4757e8d3f729e245eb2b260a0238fd010000ffff0300504b030414000600080000002100b6f4679893070000c9200000160000007468656d652f7468656d652f 7468656d65312e786d6cec59cd8b1bc915bf07f23f347d97f5d5ad8fc1f2a24fcfda33b6b164873dd648a5eef2547789aad28cc56208de532e81c026e49085bd ed21842cecc22eb9e48f31d8249b3f22afaa5bdd5552c99e191c3061463074977eefd5afde7bf5de53d5ddcf5e26d4bbc05c1096f6fcfa9d9aefe174ce16248d 7afeb3d9a4d2f13d2151ba4094a5b8e76fb0f03fbbf7eb5fdd454732c609f6403e1547a8e7c752ae8eaa5531876124eeb0154ee1bb25e30992f0caa3ea82a34b d09bd06aa3566b55134452df4b51026a1f2f97648ebd9952e9dfdb2a1f53784da5500373caa74a35b6243476715e5708b11143cabd0b447b3eccb3609733fc52 fa1e4542c2173dbfa6fffceabdbb5574940b517940d6909be8bf5c2e17589c37f49c3c3a2b260d823068f50bfd1a40e53e6edc1eb7c6ad429f06a0f91c569a71 b175b61bc320c71aa0ecd1a17bd41e35eb16ded0dfdce3dc0fd5c7c26b50a63fd8c34f2643b0a285d7a00c1feee1c3417730b2f56b50866fede1dbb5fe28685b fa3528a6243ddf43d7c25673b85d6d0159327aec8477c360d26ee4ca4b144443115d6a8a254be5a1584bd00bc6270050408a24493db959e1259a43140f112567 9c7827248a21f056286502866b8ddaa4d684ffea13e827ed5174849121ad780113b137a4f87862cec94af6fc07a0d537206f7ffef9cdeb1fdfbcfee9cd575fbd 79fdf77c6eadca923b466964cafdf2dd1ffef3cd6fbd7ffff0ed2f5fff319b7a172f4cfcbbbffdeedd3ffef93ef5b0e2d2146ffff4fdbb1fbf7ffbe7dfffebaf 5f3bb4f7393a33e1339260e13dc297de5396c0021dfcf119bf9ec42c46c494e8a791402952b338f48f656ca11f6d10450edc00db767cce21d5b880f7d72f2cc2 d398af2571687c182716f094313a60dc6985876a2ec3ccb3751ab927e76b13f714a10bd7dc43945a5e1eaf579063894be530c616cd2714a5124538c5d253dfb1 738c1dabfb8210cbaea764ce99604be97d41bc01224e93ccc899154da5d03149c02f1b1741f0b7659bd3e7de8051d7aa47f8c246c2de40d4417e86a965c6fb68 2d51e252394309350d7e8264ec2239ddf0b9891b0b099e8e3065de78818570c93ce6b05ec3e90f21cdb8dd7e4a37898de4929cbb749e20c64ce4889d0f6394ac 5cd829496313fbb938871045de13265df05366ef10f50e7e40e941773f27d872f787b3c133c8b026a53240d4376beef0e57dccacf89d6ee8126157aae9f3c44a b17d4e9cd131584756689f604cd1255a60ec3dfbdcc160c05696cd4bd20f62c82ac7d815580f901dabea3dc5027a25d5dcece7c91322ac909de2881de073bad9 493c1b9426881fd2fc08bc6eda7c0ca52e7105c0633a3f37818f08f480102f4ea33c16a0c308ee835a9fc4c82a60ea5db8e375c32dff5d658fc1be7c61d1b8c2 be04197c6d1948eca6cc7b6d3343d49aa00c9819822ec3956e41c4727f29a28aab165b3be596f6a62ddd00dd91d5f42424fd6007b4d3fb84ffbbde073a8cb77f f9c6b10f3e4ebfe3566c25ab6b763a8792c9f14e7f7308b7dbd50c195f904fbfa919a175fa04431dd9cf58b73dcd6d4fe3ffdff73487f6f36d2773a8dfb8ed64 7ce8306e3b99fc70e5e3743265f3027d8d3af0c80e7af4b14f72f0d46749289dca0dc527421ffc08f83db398c0a092d3279eb838055cc5f0a8ca1c4c60e1228e b48cc799fc0d91f134462b381daafb4a492472d591f0564cc0a1911e76ea5678ba4e4ed9223becacd7d5c16656590592e5782d2cc6e1a04a66e856bb3cc02bd4 6bb6913e68dd1250b2d721614c6693683a48b4b783ca48fa58178ce620a157f65158741d2c3a4afdd6557b2c805ae115f8c1edc1cff49e1f06200242701e07cd f942f92973f5d6bbda991fd3d3878c69450034d8db08283ddd555c0f2e4fad2e0bb52b78da2261849b4d425b46377822869fc17974aad1abd0b8aeafbba54b2d 7aca147a3e08ad9246bbf33e1637f535c8ede6069a9a9982a6de65cf6f35430899395af5fc251c1ac363b282d811ea3717a211dcbccc25cf36fc4d32cb8a0b39 4222ce0cae934e960d122231f728497abe5a7ee1069aea1ca2b9d51b90103e59725d482b9f1a3970baed64bc5ce2b934dd6e8c284b67af90e1b35ce1fc568bdf 1cac24d91adc3d8d1797de195df3a708422c6cd795011744c0dd413db3e682c0655891c8caf8db294c79da356fa3740c65e388ae62945714339967709dca0b3a faadb081f196af190c6a98242f8467912ab0a651ad6a5a548d8cc3c1aafb6121653923699635d3ca2aaa6abab39835c3b60cecd8f26645de60b53531e434b3c2 67a97b37e576b7b96ea74f28aa0418bcb09fa3ea5ea12018d4cac92c6a8af17e1a56393b1fb56bc776811fa07695226164fdd656ed8edd8a1ae19c0e066f54f9 416e376a6168b9ed2bb5a5f5adb979b1cdce5e40f2184197bba6526857c2c92e47d0104d754f92a50dd8222f65be35e0c95b73d2f3bfac85fd60d80887955a27 1c57826650ab74c27eb3d20fc3667d1cd66ba341e31514161927f530bbb19fc00506dde4f7f67a7cefee3ed9ded1dc99b3a4caf4dd7c5513d777f7f5c6e1bb7b 8f40d2f9b2d598749bdd41abd26df627956034e854bac3d6a0326a0ddba3c9681876ba9357be77a1c141bf390c5ae34ea5551f0e2b41aba6e877ba9576d068f4 8376bf330efaaff23606569ea58fdc16605ecdebde7f010000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d65 2f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d36 3f2451eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e 3198720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d985 0528a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c020000130000000000000000000000 0000000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b00000000000000000000 000000300100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c0000000000000000000000000019020000 7468656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d0014000600080000002100b6f4679893070000c92000001600000000000000 000000000000d60200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b01000027000000 000000000000000000009d0a00007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000980b00000000} {\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d 617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169 6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363 656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e} {\*\latentstyles\lsdstimax376\lsdlockeddef0\lsdsemihiddendef0\lsdunhideuseddef0\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1; \lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4; \lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7; \lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 1; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 5; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 9; \lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 1;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 2;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 3; \lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 4;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 5;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 6; \lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 7;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 8;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Indent; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 header;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footer; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index heading;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of figures; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope return;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation reference; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 line number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 page number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote text; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of authorities;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 macro;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 toa heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 3; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 3; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 3; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 5;\lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Closing; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Signature;\lsdsemihidden1 \lsdlocked0 Default Paragraph Font;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 4; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Message Header;\lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Salutation; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Date;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Note Heading; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 3; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Block Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 FollowedHyperlink;\lsdqformat1 \lsdpriority22 \lsdlocked0 Strong; \lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Document Map;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Plain Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 E-mail Signature; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Top of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Bottom of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal (Web);\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Acronym; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Cite;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Code;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Definition; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Keyboard;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Preformatted;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Sample;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Typewriter; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Variable;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation subject;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 No List;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 1; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Balloon Text;\lsdpriority39 \lsdlocked0 Table Grid; \lsdsemihidden1 \lsdlocked0 Placeholder Text;\lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdpriority60 \lsdlocked0 Light Shading;\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid; \lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2;\lsdpriority65 \lsdlocked0 Medium List 1;\lsdpriority66 \lsdlocked0 Medium List 2;\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2; \lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List;\lsdpriority71 \lsdlocked0 Colorful Shading;\lsdpriority72 \lsdlocked0 Colorful List;\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1; \lsdpriority61 \lsdlocked0 Light List Accent 1;\lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1; \lsdsemihidden1 \lsdlocked0 Revision;\lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1; \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1; \lsdpriority72 \lsdlocked0 Colorful List Accent 1;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2; \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2; \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2; \lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;\lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3; \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3; \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;\lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3; \lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4;\lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdpriority62 \lsdlocked0 Light Grid Accent 4; \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 4; \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 4; \lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5;\lsdpriority62 \lsdlocked0 Light Grid Accent 5; \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5; \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 5; \lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdpriority62 \lsdlocked0 Light Grid Accent 6; \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 6; \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 6; \lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis; \lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdsemihidden1 \lsdunhideused1 \lsdpriority37 \lsdlocked0 Bibliography; \lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;\lsdpriority41 \lsdlocked0 Plain Table 1;\lsdpriority42 \lsdlocked0 Plain Table 2;\lsdpriority43 \lsdlocked0 Plain Table 3;\lsdpriority44 \lsdlocked0 Plain Table 4; \lsdpriority45 \lsdlocked0 Plain Table 5;\lsdpriority40 \lsdlocked0 Grid Table Light;\lsdpriority46 \lsdlocked0 Grid Table 1 Light;\lsdpriority47 \lsdlocked0 Grid Table 2;\lsdpriority48 \lsdlocked0 Grid Table 3;\lsdpriority49 \lsdlocked0 Grid Table 4; \lsdpriority50 \lsdlocked0 Grid Table 5 Dark;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 1; \lsdpriority48 \lsdlocked0 Grid Table 3 Accent 1;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 1;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 1; \lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 1;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 2;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 2; \lsdpriority49 \lsdlocked0 Grid Table 4 Accent 2;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 2; \lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 3;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 3;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 3;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 3; \lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 3;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 4; \lsdpriority47 \lsdlocked0 Grid Table 2 Accent 4;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 4;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 4;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 4; \lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 4;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 5; \lsdpriority48 \lsdlocked0 Grid Table 3 Accent 5;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 5;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 5; \lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 5;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 6;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 6; \lsdpriority49 \lsdlocked0 Grid Table 4 Accent 6;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 6; \lsdpriority46 \lsdlocked0 List Table 1 Light;\lsdpriority47 \lsdlocked0 List Table 2;\lsdpriority48 \lsdlocked0 List Table 3;\lsdpriority49 \lsdlocked0 List Table 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark; \lsdpriority51 \lsdlocked0 List Table 6 Colorful;\lsdpriority52 \lsdlocked0 List Table 7 Colorful;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 List Table 2 Accent 1;\lsdpriority48 \lsdlocked0 List Table 3 Accent 1; \lsdpriority49 \lsdlocked0 List Table 4 Accent 1;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 1;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 1; \lsdpriority46 \lsdlocked0 List Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 List Table 2 Accent 2;\lsdpriority48 \lsdlocked0 List Table 3 Accent 2;\lsdpriority49 \lsdlocked0 List Table 4 Accent 2; \lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 2;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 3; \lsdpriority47 \lsdlocked0 List Table 2 Accent 3;\lsdpriority48 \lsdlocked0 List Table 3 Accent 3;\lsdpriority49 \lsdlocked0 List Table 4 Accent 3;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 3; \lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 4;\lsdpriority47 \lsdlocked0 List Table 2 Accent 4; \lsdpriority48 \lsdlocked0 List Table 3 Accent 4;\lsdpriority49 \lsdlocked0 List Table 4 Accent 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 4;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 4; \lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 List Table 2 Accent 5;\lsdpriority48 \lsdlocked0 List Table 3 Accent 5; \lsdpriority49 \lsdlocked0 List Table 4 Accent 5;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 5;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 5; \lsdpriority46 \lsdlocked0 List Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 List Table 2 Accent 6;\lsdpriority48 \lsdlocked0 List Table 3 Accent 6;\lsdpriority49 \lsdlocked0 List Table 4 Accent 6; \lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Mention; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Smart Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hashtag;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Unresolved Mention;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Smart Link;}}{\*\datastore }} pandoc-3.1.3/test/rtf/list_simple.native0000644000000000000000000000036707346545000016467 0ustar0000000000000000Pandoc Meta { unMeta = fromList [] } [ BulletList [ [ Para [ Str "one" ] ] , [ Para [ Str "two" ] , BulletList [ [ Para [ Str "sub" ] ] ] ] ] , BulletList [ [ Para [ Str "new" , Space , Str "list" ] ] ] ] pandoc-3.1.3/test/rtf/list_simple.rtf0000644000000000000000000000325707346545000015775 0ustar0000000000000000{\rtf1\ansi\ansicpg1252\cocoartf2513 \cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} {\*\expandedcolortbl;;} {\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{hyphen\}}{\leveltext\leveltemplateid2\'01\uc0\u8259 ;}{\levelnumbers;}\fi-360\li1440\lin1440 }{\listname ;}\listid1} {\list\listtemplateid2\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid101\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid2}} {\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}} \margl1440\margr1440\vieww11520\viewh8400\viewkind0 \pard\tx220\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\li720\fi-720\pardirnatural\partightenfactor0 \ls1\ilvl0 \f0\fs24 \cf0 {\listtext \uc0\u8226 }one\ {\listtext \uc0\u8226 }two\ \pard\tx940\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\li1440\fi-1440\pardirnatural\partightenfactor0 \ls1\ilvl1\cf0 {\listtext \uc0\u8259 }sub\ \pard\tx220\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\li720\fi-720\pardirnatural\partightenfactor0 \ls2\ilvl0\cf0 {\listtext \uc0\u8226 }new list\ }pandoc-3.1.3/test/rtf/table_error_codes.native0000644000000000000000000003060207346545000017613 0ustar0000000000000000Pandoc Meta { unMeta = fromList [] } [ Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Code" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "Error" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "3" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "PandocFailOnWarningError" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "PandocAppError" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "PandocTemplateError" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "6" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "PandocOptionError" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "21" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "PandocUnknownReaderError" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "22" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "PandocUnknownWriterError" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "23" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "PandocUnsupportedExtensionError" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "24" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "PandocCiteprocError" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "31" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "PandocEpubSubdirectoryError" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "43" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "PandocPDFError" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "44" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "PandocXMLError" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "47" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "PandocPDFProgramNotFoundError" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "61" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "PandocHttpError" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "62" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "PandocShouldNeverHappenError" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "63" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "PandocSomeError" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "64" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "PandocParseError" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "65" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "PandocParsecError" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "66" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "PandocMakePDFError" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "67" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "PandocSyntaxMapError" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "83" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "PandocFilterError" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "91" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "PandocMacroLoop" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "92" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "PandocUTF8DecodingError" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "93" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "PandocIpynbDecodingError" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "94" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "PandocUnsupportedCharsetError" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "97" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "PandocCouldNotFindDataFileError" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "99" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "PandocResourceNotFound" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] pandoc-3.1.3/test/rtf/table_error_codes.rtf0000644000000000000000000001226407346545000017124 0ustar0000000000000000{\rtf1\ansi { \trowd \trgaph120 \clbrdrb\brdrs\cellx4320\clbrdrb\brdrs\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 Code\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 Error\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx4320\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 3\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 PandocFailOnWarningError\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx4320\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 4\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 PandocAppError\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx4320\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 5\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 PandocTemplateError\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx4320\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 6\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 PandocOptionError\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx4320\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 21\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 PandocUnknownReaderError\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx4320\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 22\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 PandocUnknownWriterError\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx4320\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 23\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 PandocUnsupportedExtensionError\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx4320\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 24\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 PandocCiteprocError\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx4320\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 31\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 PandocEpubSubdirectoryError\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx4320\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 43\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 PandocPDFError\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx4320\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 44\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 PandocXMLError\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx4320\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 47\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 PandocPDFProgramNotFoundError\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx4320\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 61\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 PandocHttpError\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx4320\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 62\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 PandocShouldNeverHappenError\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx4320\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 63\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 PandocSomeError\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx4320\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 64\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 PandocParseError\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx4320\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 65\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 PandocParsecError\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx4320\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 66\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 PandocMakePDFError\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx4320\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 67\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 PandocSyntaxMapError\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx4320\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 83\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 PandocFilterError\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx4320\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 91\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 PandocMacroLoop\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx4320\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 92\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 PandocUTF8DecodingError\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx4320\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 93\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 PandocIpynbDecodingError\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx4320\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 94\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 PandocUnsupportedCharsetError\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx4320\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 97\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 PandocCouldNotFindDataFileError\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx4320\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 99\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 PandocResourceNotFound\par} \cell} } \intbl\row} {\pard \ql \f0 \sa180 \li0 \fi0 \par} } pandoc-3.1.3/test/rtf/table_simple.native0000644000000000000000000000404007346545000016573 0ustar0000000000000000Pandoc Meta { unMeta = fromList [] } [ Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "A" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "B" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "C" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "D" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "E" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "F" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "G" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Para [ Str "H" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] pandoc-3.1.3/test/rtf/table_simple.rtf0000644000000000000000000000036207346545000016103 0ustar0000000000000000{\rtf1\ansi \par \trowd \cellx10836 \pard \intbl A \cell \pard \intbl B \cell \pard \intbl C \cell \pard \intbl D \cell \row \trowd \cellx10836 \pard \intbl E \cell \pard \intbl F \cell \pard \intbl G \cell \pard \intbl H \cell \row \pard } pandoc-3.1.3/test/rtf/unicode.native0000644000000000000000000000014307346545000015561 0ustar0000000000000000Pandoc Meta { unMeta = fromList [] } [ Para [ Str "\8220hi\8221\8216hi\8217\61623\945\228" ] ] pandoc-3.1.3/test/rtf/unicode.rtf0000644000000000000000000000013407346545000015066 0ustar0000000000000000{\rtf1\ansi \pard \'93hi\'94 \u8216\'93hi\u8217\'94 \u-3913? \u945a {\uc2\u228\'E8a} \par } pandoc-3.1.3/test/s5-basic.html0000644000000000000000000000517007346545000014431 0ustar0000000000000000 My S5 Document

                My S5 Document

                Sam Smith
                Jen Jones

                July 15, 2006

                First slide

                • first bullet
                • second bullet

                Math

                • $\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$
                pandoc-3.1.3/test/s5-fancy.html0000644000000000000000000000531007346545000014444 0ustar0000000000000000 My S5 Document

                My S5 Document

                Sam Smith
                Jen Jones

                July 15, 2006

                First slide

                • first bullet
                • second bullet

                Math

                • \(\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}\)
                pandoc-3.1.3/test/s5-fragment.html0000644000000000000000000000034107346545000015146 0ustar0000000000000000

                First slide

                • first bullet
                • second bullet

                Math

                • $\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$
                pandoc-3.1.3/test/s5-inserts.html0000644000000000000000000000330207346545000015032 0ustar0000000000000000 My S5 Document STUFF INSERTED STUFF INSERTED

                First slide

                • first bullet
                • second bullet

                Math

                • $\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$
                STUFF INSERTED pandoc-3.1.3/test/s5.native0000644000000000000000000000110407346545000013665 0ustar0000000000000000Pandoc (Meta {unMeta = fromList [("author",MetaList [MetaInlines [Str "Sam",Space,Str "Smith"],MetaInlines [Str "Jen",Space,Str "Jones"]]),("date",MetaInlines [Str "July",Space,Str "15,",Space,Str "2006"]),("title",MetaInlines [Str "My",Space,Str "S5",Space,Str "Document"])]}) [Header 1 ("first-slide",[],[]) [Str "First",Space,Str "slide"] ,BulletList [[Plain [Str "first",Space,Str "bullet"]] ,[Plain [Str "second",Space,Str "bullet"]]] ,Header 1 ("math",[],[]) [Str "Math"] ,BulletList [[Plain [Math InlineMath "\\frac{d}{dx}f(x)=\\lim_{h\\to 0}\\frac{f(x+h)-f(x)}{h}"]]]] pandoc-3.1.3/test/tables-rstsubset.native0000644000000000000000000006162507346545000016662 0ustar0000000000000000[ Para [ Str "Simple" , Space , Str "table" , Space , Str "with" , Space , Str "caption:" ] , Table ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "Demonstration" , Space , Str "of" , Space , Str "simple" , Space , Str "table" , Space , Str "syntax." ] ]) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Right" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Left" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Center" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Default" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Simple" , Space , Str "table" , Space , Str "without" , Space , Str "caption:" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Right" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Left" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Center" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Default" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Simple" , Space , Str "table" , Space , Str "indented" , Space , Str "two" , Space , Str "spaces:" ] , Table ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "Demonstration" , Space , Str "of" , Space , Str "simple" , Space , Str "table" , Space , Str "syntax." ] ]) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Right" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Left" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Center" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Default" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Multiline" , Space , Str "table" , Space , Str "with" , Space , Str "caption:" ] , Table ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "Here\8217s" , Space , Str "the" , Space , Str "caption." , Space , Str "It" , Space , Str "may" , Space , Str "span" , Space , Str "multiple" , Space , Str "lines." ] ]) [ ( AlignDefault , ColWidth 0.15 ) , ( AlignDefault , ColWidth 0.1375 ) , ( AlignDefault , ColWidth 0.1625 ) , ( AlignDefault , ColWidth 0.35 ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Centered" , SoftBreak , Str "Header" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Left" , SoftBreak , Str "Aligned" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Right" , SoftBreak , Str "Aligned" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Default" , Space , Str "aligned" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "First" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "row" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12.0" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Example" , Space , Str "of" , Space , Str "a" , Space , Str "row" , Space , Str "that" , SoftBreak , Str "spans" , Space , Str "multiple" , Space , Str "lines." ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Second" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "row" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5.0" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Here\8217s" , Space , Str "another" , Space , Str "one." , Space , Str "Note" , SoftBreak , Str "the" , Space , Str "blank" , Space , Str "line" , Space , Str "between" , SoftBreak , Str "rows." ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Multiline" , Space , Str "table" , Space , Str "without" , Space , Str "caption:" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidth 0.15 ) , ( AlignDefault , ColWidth 0.1375 ) , ( AlignDefault , ColWidth 0.1625 ) , ( AlignDefault , ColWidth 0.35 ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Centered" , SoftBreak , Str "Header" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Left" , SoftBreak , Str "Aligned" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Right" , SoftBreak , Str "Aligned" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Default" , Space , Str "aligned" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "First" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "row" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12.0" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Example" , Space , Str "of" , Space , Str "a" , Space , Str "row" , Space , Str "that" , SoftBreak , Str "spans" , Space , Str "multiple" , Space , Str "lines." ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Second" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "row" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5.0" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Here\8217s" , Space , Str "another" , Space , Str "one." , Space , Str "Note" , SoftBreak , Str "the" , Space , Str "blank" , Space , Str "line" , Space , Str "between" , SoftBreak , Str "rows." ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Table" , Space , Str "without" , Space , Str "column" , Space , Str "headers:" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Multiline" , Space , Str "table" , Space , Str "without" , Space , Str "column" , Space , Str "headers:" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidth 0.15 ) , ( AlignDefault , ColWidth 0.1375 ) , ( AlignDefault , ColWidth 0.1625 ) , ( AlignDefault , ColWidth 0.35 ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "First" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "row" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12.0" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Example" , Space , Str "of" , Space , Str "a" , Space , Str "row" , Space , Str "that" , SoftBreak , Str "spans" , Space , Str "multiple" , Space , Str "lines." ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Second" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "row" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5.0" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Here\8217s" , Space , Str "another" , Space , Str "one." , Space , Str "Note" , SoftBreak , Str "the" , Space , Str "blank" , Space , Str "line" , Space , Str "between" , SoftBreak , Str "rows." ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] pandoc-3.1.3/test/tables.asciidoc0000644000000000000000000000300107346545000015076 0ustar0000000000000000Simple table with caption: .Demonstration of simple table syntax. [cols=">,<,^,",options="header",] |=== |Right |Left |Center |Default |12 |12 |12 |12 |123 |123 |123 |123 |1 |1 |1 |1 |=== Simple table without caption: [cols=">,<,^,",options="header",] |=== |Right |Left |Center |Default |12 |12 |12 |12 |123 |123 |123 |123 |1 |1 |1 |1 |=== Simple table indented two spaces: .Demonstration of simple table syntax. [cols=">,<,^,",options="header",] |=== |Right |Left |Center |Default |12 |12 |12 |12 |123 |123 |123 |123 |1 |1 |1 |1 |=== Multiline table with caption: .Here’s the caption. It may span multiple lines. [width="80%",cols="^20%,<17%,>20%,<43%",options="header",] |=== |Centered Header |Left Aligned |Right Aligned |Default aligned |First |row |12.0 |Example of a row that spans multiple lines. |Second |row |5.0 |Here’s another one. Note the blank line between rows. |=== Multiline table without caption: [width="80%",cols="^20%,<17%,>20%,<43%",options="header",] |=== |Centered Header |Left Aligned |Right Aligned |Default aligned |First |row |12.0 |Example of a row that spans multiple lines. |Second |row |5.0 |Here’s another one. Note the blank line between rows. |=== Table without column headers: [cols=">,<,^,>",] |=== |12 |12 |12 |12 |123 |123 |123 |123 |1 |1 |1 |1 |=== Multiline table without column headers: [width="80%",cols="^20%,<17%,>20%,43%",] |=== |First |row |12.0 |Example of a row that spans multiple lines. |Second |row |5.0 |Here’s another one. Note the blank line between rows. |=== pandoc-3.1.3/test/tables.asciidoctor0000644000000000000000000000300107346545000015623 0ustar0000000000000000Simple table with caption: .Demonstration of simple table syntax. [cols=">,<,^,",options="header",] |=== |Right |Left |Center |Default |12 |12 |12 |12 |123 |123 |123 |123 |1 |1 |1 |1 |=== Simple table without caption: [cols=">,<,^,",options="header",] |=== |Right |Left |Center |Default |12 |12 |12 |12 |123 |123 |123 |123 |1 |1 |1 |1 |=== Simple table indented two spaces: .Demonstration of simple table syntax. [cols=">,<,^,",options="header",] |=== |Right |Left |Center |Default |12 |12 |12 |12 |123 |123 |123 |123 |1 |1 |1 |1 |=== Multiline table with caption: .Here’s the caption. It may span multiple lines. [width="80%",cols="^20%,<17%,>20%,<43%",options="header",] |=== |Centered Header |Left Aligned |Right Aligned |Default aligned |First |row |12.0 |Example of a row that spans multiple lines. |Second |row |5.0 |Here’s another one. Note the blank line between rows. |=== Multiline table without caption: [width="80%",cols="^20%,<17%,>20%,<43%",options="header",] |=== |Centered Header |Left Aligned |Right Aligned |Default aligned |First |row |12.0 |Example of a row that spans multiple lines. |Second |row |5.0 |Here’s another one. Note the blank line between rows. |=== Table without column headers: [cols=">,<,^,>",] |=== |12 |12 |12 |12 |123 |123 |123 |123 |1 |1 |1 |1 |=== Multiline table without column headers: [width="80%",cols="^20%,<17%,>20%,43%",] |=== |First |row |12.0 |Example of a row that spans multiple lines. |Second |row |5.0 |Here’s another one. Note the blank line between rows. |=== pandoc-3.1.3/test/tables.context0000644000000000000000000001607107346545000015017 0ustar0000000000000000Simple table with caption: \startplacetable[title={Demonstration of simple table syntax.}] \startxtable \startxtablehead[head] \startxrowgroup[lastrow] \startxrow \startxcell[align=left] Right \stopxcell \startxcell[align=right] Left \stopxcell \startxcell[align=middle] Center \stopxcell \startxcell Default \stopxcell \stopxrow \stopxrowgroup \stopxtablehead \startxtablebody[body] \startxrow \startxcell[align=left] 12 \stopxcell \startxcell[align=right] 12 \stopxcell \startxcell[align=middle] 12 \stopxcell \startxcell 12 \stopxcell \stopxrow \startxrow \startxcell[align=left] 123 \stopxcell \startxcell[align=right] 123 \stopxcell \startxcell[align=middle] 123 \stopxcell \startxcell 123 \stopxcell \stopxrow \startxrowgroup[lastrow] \startxrow \startxcell[align=left] 1 \stopxcell \startxcell[align=right] 1 \stopxcell \startxcell[align=middle] 1 \stopxcell \startxcell 1 \stopxcell \stopxrow \stopxrowgroup \stopxtablebody \startxtablefoot[foot] \stopxtablefoot \stopxtable \stopplacetable Simple table without caption: \startplacetable[location=none] \startxtable \startxtablehead[head] \startxrowgroup[lastrow] \startxrow \startxcell[align=left] Right \stopxcell \startxcell[align=right] Left \stopxcell \startxcell[align=middle] Center \stopxcell \startxcell Default \stopxcell \stopxrow \stopxrowgroup \stopxtablehead \startxtablebody[body] \startxrow \startxcell[align=left] 12 \stopxcell \startxcell[align=right] 12 \stopxcell \startxcell[align=middle] 12 \stopxcell \startxcell 12 \stopxcell \stopxrow \startxrow \startxcell[align=left] 123 \stopxcell \startxcell[align=right] 123 \stopxcell \startxcell[align=middle] 123 \stopxcell \startxcell 123 \stopxcell \stopxrow \startxrowgroup[lastrow] \startxrow \startxcell[align=left] 1 \stopxcell \startxcell[align=right] 1 \stopxcell \startxcell[align=middle] 1 \stopxcell \startxcell 1 \stopxcell \stopxrow \stopxrowgroup \stopxtablebody \startxtablefoot[foot] \stopxtablefoot \stopxtable \stopplacetable Simple table indented two spaces: \startplacetable[title={Demonstration of simple table syntax.}] \startxtable \startxtablehead[head] \startxrowgroup[lastrow] \startxrow \startxcell[align=left] Right \stopxcell \startxcell[align=right] Left \stopxcell \startxcell[align=middle] Center \stopxcell \startxcell Default \stopxcell \stopxrow \stopxrowgroup \stopxtablehead \startxtablebody[body] \startxrow \startxcell[align=left] 12 \stopxcell \startxcell[align=right] 12 \stopxcell \startxcell[align=middle] 12 \stopxcell \startxcell 12 \stopxcell \stopxrow \startxrow \startxcell[align=left] 123 \stopxcell \startxcell[align=right] 123 \stopxcell \startxcell[align=middle] 123 \stopxcell \startxcell 123 \stopxcell \stopxrow \startxrowgroup[lastrow] \startxrow \startxcell[align=left] 1 \stopxcell \startxcell[align=right] 1 \stopxcell \startxcell[align=middle] 1 \stopxcell \startxcell 1 \stopxcell \stopxrow \stopxrowgroup \stopxtablebody \startxtablefoot[foot] \stopxtablefoot \stopxtable \stopplacetable Multiline table with caption: \startplacetable[title={Here's the caption. It may span multiple lines.}] \startxtable \startxtablehead[head] \startxrowgroup[lastrow] \startxrow \startxcell[align=middle,width={0.15\textwidth}] Centered Header \stopxcell \startxcell[align=right,width={0.14\textwidth}] Left Aligned \stopxcell \startxcell[align=left,width={0.16\textwidth}] Right Aligned \stopxcell \startxcell[align=right,width={0.35\textwidth}] Default aligned \stopxcell \stopxrow \stopxrowgroup \stopxtablehead \startxtablebody[body] \startxrow \startxcell[align=middle,width={0.15\textwidth}] First \stopxcell \startxcell[align=right,width={0.14\textwidth}] row \stopxcell \startxcell[align=left,width={0.16\textwidth}] 12.0 \stopxcell \startxcell[align=right,width={0.35\textwidth}] Example of a row that spans multiple lines. \stopxcell \stopxrow \startxrowgroup[lastrow] \startxrow \startxcell[align=middle,width={0.15\textwidth}] Second \stopxcell \startxcell[align=right,width={0.14\textwidth}] row \stopxcell \startxcell[align=left,width={0.16\textwidth}] 5.0 \stopxcell \startxcell[align=right,width={0.35\textwidth}] Here's another one. Note the blank line between rows. \stopxcell \stopxrow \stopxrowgroup \stopxtablebody \startxtablefoot[foot] \stopxtablefoot \stopxtable \stopplacetable Multiline table without caption: \startplacetable[location=none] \startxtable \startxtablehead[head] \startxrowgroup[lastrow] \startxrow \startxcell[align=middle,width={0.15\textwidth}] Centered Header \stopxcell \startxcell[align=right,width={0.14\textwidth}] Left Aligned \stopxcell \startxcell[align=left,width={0.16\textwidth}] Right Aligned \stopxcell \startxcell[align=right,width={0.35\textwidth}] Default aligned \stopxcell \stopxrow \stopxrowgroup \stopxtablehead \startxtablebody[body] \startxrow \startxcell[align=middle,width={0.15\textwidth}] First \stopxcell \startxcell[align=right,width={0.14\textwidth}] row \stopxcell \startxcell[align=left,width={0.16\textwidth}] 12.0 \stopxcell \startxcell[align=right,width={0.35\textwidth}] Example of a row that spans multiple lines. \stopxcell \stopxrow \startxrowgroup[lastrow] \startxrow \startxcell[align=middle,width={0.15\textwidth}] Second \stopxcell \startxcell[align=right,width={0.14\textwidth}] row \stopxcell \startxcell[align=left,width={0.16\textwidth}] 5.0 \stopxcell \startxcell[align=right,width={0.35\textwidth}] Here's another one. Note the blank line between rows. \stopxcell \stopxrow \stopxrowgroup \stopxtablebody \startxtablefoot[foot] \stopxtablefoot \stopxtable \stopplacetable Table without column headers: \startplacetable[location=none] \startxtable \startxtablehead[head] \stopxtablehead \startxtablebody[body] \startxrow \startxcell[align=left] 12 \stopxcell \startxcell[align=right] 12 \stopxcell \startxcell[align=middle] 12 \stopxcell \startxcell[align=left] 12 \stopxcell \stopxrow \startxrow \startxcell[align=left] 123 \stopxcell \startxcell[align=right] 123 \stopxcell \startxcell[align=middle] 123 \stopxcell \startxcell[align=left] 123 \stopxcell \stopxrow \startxrowgroup[lastrow] \startxrow \startxcell[align=left] 1 \stopxcell \startxcell[align=right] 1 \stopxcell \startxcell[align=middle] 1 \stopxcell \startxcell[align=left] 1 \stopxcell \stopxrow \stopxrowgroup \stopxtablebody \startxtablefoot[foot] \stopxtablefoot \stopxtable \stopplacetable Multiline table without column headers: \startplacetable[location=none] \startxtable \startxtablehead[head] \stopxtablehead \startxtablebody[body] \startxrow \startxcell[align=middle,width={0.15\textwidth}] First \stopxcell \startxcell[align=right,width={0.14\textwidth}] row \stopxcell \startxcell[align=left,width={0.16\textwidth}] 12.0 \stopxcell \startxcell[width={0.35\textwidth}] Example of a row that spans multiple lines. \stopxcell \stopxrow \startxrowgroup[lastrow] \startxrow \startxcell[align=middle,width={0.15\textwidth}] Second \stopxcell \startxcell[align=right,width={0.14\textwidth}] row \stopxcell \startxcell[align=left,width={0.16\textwidth}] 5.0 \stopxcell \startxcell[width={0.35\textwidth}] Here's another one. Note the blank line between rows. \stopxcell \stopxrow \stopxrowgroup \stopxtablebody \startxtablefoot[foot] \stopxtablefoot \stopxtable \stopplacetable pandoc-3.1.3/test/tables.docbook40000644000000000000000000001651607346545000015043 0ustar0000000000000000 Simple table with caption: Demonstration of simple table syntax. Right Left Center Default 12 12 12 12 123 123 123 123 1 1 1 1
                Simple table without caption: Right Left Center Default 12 12 12 12 123 123 123 123 1 1 1 1 Simple table indented two spaces: Demonstration of simple table syntax. Right Left Center Default 12 12 12 12 123 123 123 123 1 1 1 1
                Multiline table with caption: Here’s the caption. It may span multiple lines. Centered Header Left Aligned Right Aligned Default aligned First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here’s another one. Note the blank line between rows.
                Multiline table without caption: Centered Header Left Aligned Right Aligned Default aligned First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here’s another one. Note the blank line between rows. Table without column headers: 12 12 12 12 123 123 123 123 1 1 1 1 Multiline table without column headers: First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here’s another one. Note the blank line between rows. pandoc-3.1.3/test/tables.docbook50000644000000000000000000001651607346545000015044 0ustar0000000000000000 Simple table with caption: Demonstration of simple table syntax. Right Left Center Default 12 12 12 12 123 123 123 123 1 1 1 1
                Simple table without caption: Right Left Center Default 12 12 12 12 123 123 123 123 1 1 1 1 Simple table indented two spaces: Demonstration of simple table syntax. Right Left Center Default 12 12 12 12 123 123 123 123 1 1 1 1
                Multiline table with caption: Here’s the caption. It may span multiple lines. Centered Header Left Aligned Right Aligned Default aligned First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here’s another one. Note the blank line between rows.
                Multiline table without caption: Centered Header Left Aligned Right Aligned Default aligned First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here’s another one. Note the blank line between rows. Table without column headers: 12 12 12 12 123 123 123 123 1 1 1 1 Multiline table without column headers: First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here’s another one. Note the blank line between rows. pandoc-3.1.3/test/tables.dokuwiki0000644000000000000000000000324307346545000015156 0ustar0000000000000000Simple table with caption: Demonstration of simple table syntax. ^ Right^Left ^ Center ^Default^ | 12|12 | 12 |12 | | 123|123 | 123 |123 | | 1|1 | 1 |1 | Simple table without caption: ^ Right^Left ^ Center ^Default^ | 12|12 | 12 |12 | | 123|123 | 123 |123 | | 1|1 | 1 |1 | Simple table indented two spaces: Demonstration of simple table syntax. ^ Right^Left ^ Center ^Default^ | 12|12 | 12 |12 | | 123|123 | 123 |123 | | 1|1 | 1 |1 | Multiline table with caption: Here’s the caption. It may span multiple lines. ^ Centered Header ^Left Aligned ^ Right Aligned^Default aligned ^ | First |row | 12.0|Example of a row that spans multiple lines. | | Second |row | 5.0|Here’s another one. Note the blank line between rows. | Multiline table without caption: ^ Centered Header ^Left Aligned ^ Right Aligned^Default aligned ^ | First |row | 12.0|Example of a row that spans multiple lines. | | Second |row | 5.0|Here’s another one. Note the blank line between rows. | Table without column headers: | 12|12 | 12 | 12| | 123|123 | 123 | 123| | 1|1 | 1 | 1| Multiline table without column headers: | First |row | 12.0|Example of a row that spans multiple lines. | | Second |row | 5.0|Here’s another one. Note the blank line between rows.| pandoc-3.1.3/test/tables.fb20000644000000000000000000000755507346545000014013 0ustar0000000000000000 unrecognisedpandoc<p />

                Simple table with caption:

                RightLeftCenterDefault
                12121212
                123123123123
                1111

                Demonstration of simple table syntax.

                Simple table without caption:

                RightLeftCenterDefault
                12121212
                123123123123
                1111

                Simple table indented two spaces:

                RightLeftCenterDefault
                12121212
                123123123123
                1111

                Demonstration of simple table syntax.

                Multiline table with caption:

                Centered HeaderLeft AlignedRight AlignedDefault aligned
                Firstrow12.0Example of a row that spans multiple lines.
                Secondrow5.0Here’s another one. Note the blank line between rows.

                Here’s the caption. It may span multiple lines.

                Multiline table without caption:

                Centered HeaderLeft AlignedRight AlignedDefault aligned
                Firstrow12.0Example of a row that spans multiple lines.
                Secondrow5.0Here’s another one. Note the blank line between rows.

                Table without column headers:

                12121212
                123123123123
                1111

                Multiline table without column headers:

                Firstrow12.0Example of a row that spans multiple lines.
                Secondrow5.0Here’s another one. Note the blank line between rows.

                pandoc-3.1.3/test/tables.haddock0000644000000000000000000000666207346545000014735 0ustar0000000000000000Simple table with caption: +-------+------+--------+---------+ | Right | Left | Center | Default | +=======+======+========+=========+ | 12 | 12 | 12 | 12 | +-------+------+--------+---------+ | 123 | 123 | 123 | 123 | +-------+------+--------+---------+ | 1 | 1 | 1 | 1 | +-------+------+--------+---------+ Demonstration of simple table syntax. Simple table without caption: +-------+------+--------+---------+ | Right | Left | Center | Default | +=======+======+========+=========+ | 12 | 12 | 12 | 12 | +-------+------+--------+---------+ | 123 | 123 | 123 | 123 | +-------+------+--------+---------+ | 1 | 1 | 1 | 1 | +-------+------+--------+---------+ Simple table indented two spaces: +-------+------+--------+---------+ | Right | Left | Center | Default | +=======+======+========+=========+ | 12 | 12 | 12 | 12 | +-------+------+--------+---------+ | 123 | 123 | 123 | 123 | +-------+------+--------+---------+ | 1 | 1 | 1 | 1 | +-------+------+--------+---------+ Demonstration of simple table syntax. Multiline table with caption: +-----------+----------+------------+---------------------------+ | Centered | Left | Right | Default aligned | | Header | Aligned | Aligned | | +===========+==========+============+===========================+ | First | row | 12.0 | Example of a row that | | | | | spans multiple lines. | +-----------+----------+------------+---------------------------+ | Second | row | 5.0 | Here’s another one. Note | | | | | the blank line between | | | | | rows. | +-----------+----------+------------+---------------------------+ Here’s the caption. It may span multiple lines. Multiline table without caption: +-----------+----------+------------+---------------------------+ | Centered | Left | Right | Default aligned | | Header | Aligned | Aligned | | +===========+==========+============+===========================+ | First | row | 12.0 | Example of a row that | | | | | spans multiple lines. | +-----------+----------+------------+---------------------------+ | Second | row | 5.0 | Here’s another one. Note | | | | | the blank line between | | | | | rows. | +-----------+----------+------------+---------------------------+ Table without column headers: +-----+-----+-----+-----+ | 12 | 12 | 12 | 12 | +-----+-----+-----+-----+ | 123 | 123 | 123 | 123 | +-----+-----+-----+-----+ | 1 | 1 | 1 | 1 | +-----+-----+-----+-----+ Multiline table without column headers: +-----------+----------+------------+---------------------------+ | First | row | 12.0 | Example of a row that | | | | | spans multiple lines. | +-----------+----------+------------+---------------------------+ | Second | row | 5.0 | Here’s another one. Note | | | | | the blank line between | | | | | rows. | +-----------+----------+------------+---------------------------+ pandoc-3.1.3/test/tables.html40000644000000000000000000001036407346545000014362 0ustar0000000000000000

                Simple table with caption:

                Demonstration of simple table syntax.
                Right Left Center Default
                12 12 12 12
                123 123 123 123
                1 1 1 1

                Simple table without caption:

                Right Left Center Default
                12 12 12 12
                123 123 123 123
                1 1 1 1

                Simple table indented two spaces:

                Demonstration of simple table syntax.
                Right Left Center Default
                12 12 12 12
                123 123 123 123
                1 1 1 1

                Multiline table with caption:

                Here’s the caption. It may span multiple lines.
                Centered Header Left Aligned Right Aligned Default aligned
                First row 12.0 Example of a row that spans multiple lines.
                Second row 5.0 Here’s another one. Note the blank line between rows.

                Multiline table without caption:

                Centered Header Left Aligned Right Aligned Default aligned
                First row 12.0 Example of a row that spans multiple lines.
                Second row 5.0 Here’s another one. Note the blank line between rows.

                Table without column headers:

                12 12 12 12
                123 123 123 123
                1 1 1 1

                Multiline table without column headers:

                First row 12.0 Example of a row that spans multiple lines.
                Second row 5.0 Here’s another one. Note the blank line between rows.
                pandoc-3.1.3/test/tables.html50000644000000000000000000001247607346545000014371 0ustar0000000000000000

                Simple table with caption:

                Demonstration of simple table syntax.
                Right Left Center Default
                12 12 12 12
                123 123 123 123
                1 1 1 1

                Simple table without caption:

                Right Left Center Default
                12 12 12 12
                123 123 123 123
                1 1 1 1

                Simple table indented two spaces:

                Demonstration of simple table syntax.
                Right Left Center Default
                12 12 12 12
                123 123 123 123
                1 1 1 1

                Multiline table with caption:

                Here’s the caption. It may span multiple lines.
                Centered Header Left Aligned Right Aligned Default aligned
                First row 12.0 Example of a row that spans multiple lines.
                Second row 5.0 Here’s another one. Note the blank line between rows.

                Multiline table without caption:

                Centered Header Left Aligned Right Aligned Default aligned
                First row 12.0 Example of a row that spans multiple lines.
                Second row 5.0 Here’s another one. Note the blank line between rows.

                Table without column headers:

                12 12 12 12
                123 123 123 123
                1 1 1 1

                Multiline table without column headers:

                First row 12.0 Example of a row that spans multiple lines.
                Second row 5.0 Here’s another one. Note the blank line between rows.
                pandoc-3.1.3/test/tables.icml0000644000000000000000000010311707346545000014255 0ustar0000000000000000 Simple table with caption:
                Right Left Center Default 12 12 12 12 123 123 123 123 1 1 1 1
                Demonstration of simple table syntax.
                Simple table without caption:
                Right Left Center Default 12 12 12 12 123 123 123 123 1 1 1 1

                Simple table indented two spaces:
                Right Left Center Default 12 12 12 12 123 123 123 123 1 1 1 1
                Demonstration of simple table syntax.
                Multiline table with caption:
                Centered Header Left Aligned Right Aligned Default aligned First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here’s another one. Note the blank line between rows.
                Here’s the caption. It may span multiple lines.
                Multiline table without caption:
                Centered Header Left Aligned Right Aligned Default aligned First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here’s another one. Note the blank line between rows.

                Table without column headers:
                12 12 12 12 123 123 123 123 1 1 1 1

                Multiline table without column headers:
                First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here’s another one. Note the blank line between rows.
                pandoc-3.1.3/test/tables.jats_archiving0000644000000000000000000001254107346545000016324 0ustar0000000000000000

                Simple table with caption:

                Demonstration of simple table syntax.

                Right Left Center Default
                12 12 12 12
                123 123 123 123
                1 1 1 1

                Simple table without caption:

                Right Left Center Default
                12 12 12 12
                123 123 123 123
                1 1 1 1

                Simple table indented two spaces:

                Demonstration of simple table syntax.

                Right Left Center Default
                12 12 12 12
                123 123 123 123
                1 1 1 1

                Multiline table with caption:

                Here’s the caption. It may span multiple lines.

                Centered Header Left Aligned Right Aligned Default aligned
                First row 12.0 Example of a row that spans multiple lines.
                Second row 5.0 Here’s another one. Note the blank line between rows.

                Multiline table without caption:

                Centered Header Left Aligned Right Aligned Default aligned
                First row 12.0 Example of a row that spans multiple lines.
                Second row 5.0 Here’s another one. Note the blank line between rows.

                Table without column headers:

                12 12 12 12
                123 123 123 123
                1 1 1 1

                Multiline table without column headers:

                First row 12.0 Example of a row that spans multiple lines.
                Second row 5.0 Here’s another one. Note the blank line between rows.
                pandoc-3.1.3/test/tables.jats_articleauthoring0000644000000000000000000001254107346545000017716 0ustar0000000000000000

                Simple table with caption:

                Demonstration of simple table syntax.

                Right Left Center Default
                12 12 12 12
                123 123 123 123
                1 1 1 1

                Simple table without caption:

                Right Left Center Default
                12 12 12 12
                123 123 123 123
                1 1 1 1

                Simple table indented two spaces:

                Demonstration of simple table syntax.

                Right Left Center Default
                12 12 12 12
                123 123 123 123
                1 1 1 1

                Multiline table with caption:

                Here’s the caption. It may span multiple lines.

                Centered Header Left Aligned Right Aligned Default aligned
                First row 12.0 Example of a row that spans multiple lines.
                Second row 5.0 Here’s another one. Note the blank line between rows.

                Multiline table without caption:

                Centered Header Left Aligned Right Aligned Default aligned
                First row 12.0 Example of a row that spans multiple lines.
                Second row 5.0 Here’s another one. Note the blank line between rows.

                Table without column headers:

                12 12 12 12
                123 123 123 123
                1 1 1 1

                Multiline table without column headers:

                First row 12.0 Example of a row that spans multiple lines.
                Second row 5.0 Here’s another one. Note the blank line between rows.
                pandoc-3.1.3/test/tables.jats_publishing0000644000000000000000000001254107346545000016516 0ustar0000000000000000

                Simple table with caption:

                Demonstration of simple table syntax.

                Right Left Center Default
                12 12 12 12
                123 123 123 123
                1 1 1 1

                Simple table without caption:

                Right Left Center Default
                12 12 12 12
                123 123 123 123
                1 1 1 1

                Simple table indented two spaces:

                Demonstration of simple table syntax.

                Right Left Center Default
                12 12 12 12
                123 123 123 123
                1 1 1 1

                Multiline table with caption:

                Here’s the caption. It may span multiple lines.

                Centered Header Left Aligned Right Aligned Default aligned
                First row 12.0 Example of a row that spans multiple lines.
                Second row 5.0 Here’s another one. Note the blank line between rows.

                Multiline table without caption:

                Centered Header Left Aligned Right Aligned Default aligned
                First row 12.0 Example of a row that spans multiple lines.
                Second row 5.0 Here’s another one. Note the blank line between rows.

                Table without column headers:

                12 12 12 12
                123 123 123 123
                1 1 1 1

                Multiline table without column headers:

                First row 12.0 Example of a row that spans multiple lines.
                Second row 5.0 Here’s another one. Note the blank line between rows.
                pandoc-3.1.3/test/tables.jira0000644000000000000000000000230607346545000014254 0ustar0000000000000000Simple table with caption: || Right || Left || Center || Default || | 12 | 12 | 12 | 12 | | 123 | 123 | 123 | 123 | | 1 | 1 | 1 | 1 | Simple table without caption: || Right || Left || Center || Default || | 12 | 12 | 12 | 12 | | 123 | 123 | 123 | 123 | | 1 | 1 | 1 | 1 | Simple table indented two spaces: || Right || Left || Center || Default || | 12 | 12 | 12 | 12 | | 123 | 123 | 123 | 123 | | 1 | 1 | 1 | 1 | Multiline table with caption: || Centered Header || Left Aligned || Right Aligned || Default aligned || | First | row | 12.0 | Example of a row that spans multiple lines. | | Second | row | 5.0 | Here’s another one. Note the blank line between rows. | Multiline table without caption: || Centered Header || Left Aligned || Right Aligned || Default aligned || | First | row | 12.0 | Example of a row that spans multiple lines. | | Second | row | 5.0 | Here’s another one. Note the blank line between rows. | Table without column headers: | 12 | 12 | 12 | 12 | | 123 | 123 | 123 | 123 | | 1 | 1 | 1 | 1 | Multiline table without column headers: | First | row | 12.0 | Example of a row that spans multiple lines. | | Second | row | 5.0 | Here’s another one. Note the blank line between rows. | pandoc-3.1.3/test/tables.latex0000644000000000000000000001011307346545000014437 0ustar0000000000000000Simple table with caption: \begin{longtable}[]{@{}rlcl@{}} \caption{Demonstration of simple table syntax.}\tabularnewline \toprule\noalign{} Right & Left & Center & Default \\ \midrule\noalign{} \endfirsthead \toprule\noalign{} Right & Left & Center & Default \\ \midrule\noalign{} \endhead \bottomrule\noalign{} \endlastfoot 12 & 12 & 12 & 12 \\ 123 & 123 & 123 & 123 \\ 1 & 1 & 1 & 1 \\ \end{longtable} Simple table without caption: \begin{longtable}[]{@{}rlcl@{}} \toprule\noalign{} Right & Left & Center & Default \\ \midrule\noalign{} \endhead \bottomrule\noalign{} \endlastfoot 12 & 12 & 12 & 12 \\ 123 & 123 & 123 & 123 \\ 1 & 1 & 1 & 1 \\ \end{longtable} Simple table indented two spaces: \begin{longtable}[]{@{}rlcl@{}} \caption{Demonstration of simple table syntax.}\tabularnewline \toprule\noalign{} Right & Left & Center & Default \\ \midrule\noalign{} \endfirsthead \toprule\noalign{} Right & Left & Center & Default \\ \midrule\noalign{} \endhead \bottomrule\noalign{} \endlastfoot 12 & 12 & 12 & 12 \\ 123 & 123 & 123 & 123 \\ 1 & 1 & 1 & 1 \\ \end{longtable} Multiline table with caption: \begin{longtable}[]{@{} >{\centering\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.1500}} >{\raggedright\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.1375}} >{\raggedleft\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.1625}} >{\raggedright\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.3500}}@{}} \caption{Here's the caption. It may span multiple lines.}\tabularnewline \toprule\noalign{} \begin{minipage}[b]{\linewidth}\centering Centered Header \end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright Left Aligned \end{minipage} & \begin{minipage}[b]{\linewidth}\raggedleft Right Aligned \end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright Default aligned \end{minipage} \\ \midrule\noalign{} \endfirsthead \toprule\noalign{} \begin{minipage}[b]{\linewidth}\centering Centered Header \end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright Left Aligned \end{minipage} & \begin{minipage}[b]{\linewidth}\raggedleft Right Aligned \end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright Default aligned \end{minipage} \\ \midrule\noalign{} \endhead \bottomrule\noalign{} \endlastfoot First & row & 12.0 & Example of a row that spans multiple lines. \\ Second & row & 5.0 & Here's another one. Note the blank line between rows. \\ \end{longtable} Multiline table without caption: \begin{longtable}[]{@{} >{\centering\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.1500}} >{\raggedright\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.1375}} >{\raggedleft\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.1625}} >{\raggedright\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.3500}}@{}} \toprule\noalign{} \begin{minipage}[b]{\linewidth}\centering Centered Header \end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright Left Aligned \end{minipage} & \begin{minipage}[b]{\linewidth}\raggedleft Right Aligned \end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright Default aligned \end{minipage} \\ \midrule\noalign{} \endhead \bottomrule\noalign{} \endlastfoot First & row & 12.0 & Example of a row that spans multiple lines. \\ Second & row & 5.0 & Here's another one. Note the blank line between rows. \\ \end{longtable} Table without column headers: \begin{longtable}[]{@{}rlcr@{}} \toprule\noalign{} \endhead \bottomrule\noalign{} \endlastfoot 12 & 12 & 12 & 12 \\ 123 & 123 & 123 & 123 \\ 1 & 1 & 1 & 1 \\ \end{longtable} Multiline table without column headers: \begin{longtable}[]{@{} >{\centering\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.1500}} >{\raggedright\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.1375}} >{\raggedleft\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.1625}} >{\raggedright\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.3500}}@{}} \toprule\noalign{} \endhead \bottomrule\noalign{} \endlastfoot First & row & 12.0 & Example of a row that spans multiple lines. \\ Second & row & 5.0 & Here's another one. Note the blank line between rows. \\ \end{longtable} pandoc-3.1.3/test/tables.man0000644000000000000000000000366607346545000014114 0ustar0000000000000000.PP Simple table with caption: .PP Demonstration of simple table syntax. .TS tab(@); r l c l. T{ Right T}@T{ Left T}@T{ Center T}@T{ Default T} _ T{ 12 T}@T{ 12 T}@T{ 12 T}@T{ 12 T} T{ 123 T}@T{ 123 T}@T{ 123 T}@T{ 123 T} T{ 1 T}@T{ 1 T}@T{ 1 T}@T{ 1 T} .TE .PP Simple table without caption: .PP .TS tab(@); r l c l. T{ Right T}@T{ Left T}@T{ Center T}@T{ Default T} _ T{ 12 T}@T{ 12 T}@T{ 12 T}@T{ 12 T} T{ 123 T}@T{ 123 T}@T{ 123 T}@T{ 123 T} T{ 1 T}@T{ 1 T}@T{ 1 T}@T{ 1 T} .TE .PP Simple table indented two spaces: .PP Demonstration of simple table syntax. .TS tab(@); r l c l. T{ Right T}@T{ Left T}@T{ Center T}@T{ Default T} _ T{ 12 T}@T{ 12 T}@T{ 12 T}@T{ 12 T} T{ 123 T}@T{ 123 T}@T{ 123 T}@T{ 123 T} T{ 1 T}@T{ 1 T}@T{ 1 T}@T{ 1 T} .TE .PP Multiline table with caption: .PP Here\[cq]s the caption. It may span multiple lines. .TS tab(@); cw(10.5n) lw(9.6n) rw(11.4n) lw(24.5n). T{ Centered Header T}@T{ Left Aligned T}@T{ Right Aligned T}@T{ Default aligned T} _ T{ First T}@T{ row T}@T{ 12.0 T}@T{ Example of a row that spans multiple lines. T} T{ Second T}@T{ row T}@T{ 5.0 T}@T{ Here\[cq]s another one. Note the blank line between rows. T} .TE .PP Multiline table without caption: .PP .TS tab(@); cw(10.5n) lw(9.6n) rw(11.4n) lw(24.5n). T{ Centered Header T}@T{ Left Aligned T}@T{ Right Aligned T}@T{ Default aligned T} _ T{ First T}@T{ row T}@T{ 12.0 T}@T{ Example of a row that spans multiple lines. T} T{ Second T}@T{ row T}@T{ 5.0 T}@T{ Here\[cq]s another one. Note the blank line between rows. T} .TE .PP Table without column headers: .PP .TS tab(@); r l c r. T{ 12 T}@T{ 12 T}@T{ 12 T}@T{ 12 T} T{ 123 T}@T{ 123 T}@T{ 123 T}@T{ 123 T} T{ 1 T}@T{ 1 T}@T{ 1 T}@T{ 1 T} .TE .PP Multiline table without column headers: .PP .TS tab(@); cw(10.5n) lw(9.6n) rw(11.4n) lw(24.5n). T{ First T}@T{ row T}@T{ 12.0 T}@T{ Example of a row that spans multiple lines. T} T{ Second T}@T{ row T}@T{ 5.0 T}@T{ Here\[cq]s another one. Note the blank line between rows. T} .TE pandoc-3.1.3/test/tables.markdown0000644000000000000000000000477607346545000015166 0ustar0000000000000000Simple table with caption: Right Left Center Default ------- ------ -------- --------- 12 12 12 12 123 123 123 123 1 1 1 1 : Demonstration of simple table syntax. Simple table without caption: Right Left Center Default ------- ------ -------- --------- 12 12 12 12 123 123 123 123 1 1 1 1 Simple table indented two spaces: Right Left Center Default ------- ------ -------- --------- 12 12 12 12 123 123 123 123 1 1 1 1 : Demonstration of simple table syntax. Multiline table with caption: --------------------------------------------------------------- Centered Left Right Default aligned Header Aligned Aligned ----------- ---------- ------------ --------------------------- First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here's another one. Note the blank line between rows. --------------------------------------------------------------- : Here's the caption. It may span multiple lines. Multiline table without caption: --------------------------------------------------------------- Centered Left Right Default aligned Header Aligned Aligned ----------- ---------- ------------ --------------------------- First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here's another one. Note the blank line between rows. --------------------------------------------------------------- Table without column headers: ----- ----- ----- ----- 12 12 12 12 123 123 123 123 1 1 1 1 ----- ----- ----- ----- Multiline table without column headers: ----------- ---------- ------------ --------------------------- First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here's another one. Note the blank line between rows. ----------- ---------- ------------ --------------------------- pandoc-3.1.3/test/tables.markua0000644000000000000000000000425207346545000014611 0ustar0000000000000000Simple table with caption: | Right | Left | Center | Default | |------:|:-----|:------:|---------| | 12 | 12 | 12 | 12 | | 123 | 123 | 123 | 123 | | 1 | 1 | 1 | 1 | Demonstration of simple table syntax. Simple table without caption: | Right | Left | Center | Default | |------:|:-----|:------:|---------| | 12 | 12 | 12 | 12 | | 123 | 123 | 123 | 123 | | 1 | 1 | 1 | 1 | Simple table indented two spaces: | Right | Left | Center | Default | |------:|:-----|:------:|---------| | 12 | 12 | 12 | 12 | | 123 | 123 | 123 | 123 | | 1 | 1 | 1 | 1 | Demonstration of simple table syntax. Multiline table with caption: | Centered Header | Left Aligned | Right Aligned | Default aligned | |:---------------:|:-------------|--------------:|:------------------------------------------------------| | First | row | 12.0 | Example of a row that spans multiple lines. | | Second | row | 5.0 | Here’s another one. Note the blank line between rows. | Here’s the caption. It may span multiple lines. Multiline table without caption: | Centered Header | Left Aligned | Right Aligned | Default aligned | |:---------------:|:-------------|--------------:|:------------------------------------------------------| | First | row | 12.0 | Example of a row that spans multiple lines. | | Second | row | 5.0 | Here’s another one. Note the blank line between rows. | Table without column headers: | | | | | |----:|:----|:---:|----:| | 12 | 12 | 12 | 12 | | 123 | 123 | 123 | 123 | | 1 | 1 | 1 | 1 | Multiline table without column headers: | | | | | |:------:|:----|-----:|-------------------------------------------------------| | First | row | 12.0 | Example of a row that spans multiple lines. | | Second | row | 5.0 | Here’s another one. Note the blank line between rows. | pandoc-3.1.3/test/tables.mediawiki0000644000000000000000000000716507346545000015302 0ustar0000000000000000Simple table with caption: {| class="wikitable" |+ Demonstration of simple table syntax. |- ! style="text-align: right;"| Right ! style="text-align: left;"| Left ! style="text-align: center;"| Center ! Default |- | style="text-align: right;"| 12 | style="text-align: left;"| 12 | style="text-align: center;"| 12 | 12 |- | style="text-align: right;"| 123 | style="text-align: left;"| 123 | style="text-align: center;"| 123 | 123 |- | style="text-align: right;"| 1 | style="text-align: left;"| 1 | style="text-align: center;"| 1 | 1 |} Simple table without caption: {| class="wikitable" |- ! style="text-align: right;"| Right ! style="text-align: left;"| Left ! style="text-align: center;"| Center ! Default |- | style="text-align: right;"| 12 | style="text-align: left;"| 12 | style="text-align: center;"| 12 | 12 |- | style="text-align: right;"| 123 | style="text-align: left;"| 123 | style="text-align: center;"| 123 | 123 |- | style="text-align: right;"| 1 | style="text-align: left;"| 1 | style="text-align: center;"| 1 | 1 |} Simple table indented two spaces: {| class="wikitable" |+ Demonstration of simple table syntax. |- ! style="text-align: right;"| Right ! style="text-align: left;"| Left ! style="text-align: center;"| Center ! Default |- | style="text-align: right;"| 12 | style="text-align: left;"| 12 | style="text-align: center;"| 12 | 12 |- | style="text-align: right;"| 123 | style="text-align: left;"| 123 | style="text-align: center;"| 123 | 123 |- | style="text-align: right;"| 1 | style="text-align: left;"| 1 | style="text-align: center;"| 1 | 1 |} Multiline table with caption: {| class="wikitable" |+ Here’s the caption. It may span multiple lines. |- ! style="text-align: center;"| Centered Header ! style="text-align: left;"| Left Aligned ! style="text-align: right;"| Right Aligned ! style="text-align: left;"| Default aligned |- | style="text-align: center;"| First | style="text-align: left;"| row | style="text-align: right;"| 12.0 | style="text-align: left;"| Example of a row that spans multiple lines. |- | style="text-align: center;"| Second | style="text-align: left;"| row | style="text-align: right;"| 5.0 | style="text-align: left;"| Here’s another one. Note the blank line between rows. |} Multiline table without caption: {| class="wikitable" |- ! style="text-align: center;"| Centered Header ! style="text-align: left;"| Left Aligned ! style="text-align: right;"| Right Aligned ! style="text-align: left;"| Default aligned |- | style="text-align: center;"| First | style="text-align: left;"| row | style="text-align: right;"| 12.0 | style="text-align: left;"| Example of a row that spans multiple lines. |- | style="text-align: center;"| Second | style="text-align: left;"| row | style="text-align: right;"| 5.0 | style="text-align: left;"| Here’s another one. Note the blank line between rows. |} Table without column headers: {| class="wikitable" |- | style="text-align: right;"| 12 | style="text-align: left;"| 12 | style="text-align: center;"| 12 | style="text-align: right;"| 12 |- | style="text-align: right;"| 123 | style="text-align: left;"| 123 | style="text-align: center;"| 123 | style="text-align: right;"| 123 |- | style="text-align: right;"| 1 | style="text-align: left;"| 1 | style="text-align: center;"| 1 | style="text-align: right;"| 1 |} Multiline table without column headers: {| class="wikitable" |- | style="text-align: center;"| First | style="text-align: left;"| row | style="text-align: right;"| 12.0 | Example of a row that spans multiple lines. |- | style="text-align: center;"| Second | style="text-align: left;"| row | style="text-align: right;"| 5.0 | Here’s another one. Note the blank line between rows. |} pandoc-3.1.3/test/tables.ms0000644000000000000000000000471407346545000013753 0ustar0000000000000000.LP Simple table with caption: .PP Demonstration of simple table syntax. .na .TS delim(@@) tab( ); r l c l. T{ Right T} T{ Left T} T{ Center T} T{ Default T} _ T{ 12 T} T{ 12 T} T{ 12 T} T{ 12 T} T{ 123 T} T{ 123 T} T{ 123 T} T{ 123 T} T{ 1 T} T{ 1 T} T{ 1 T} T{ 1 T} .TE .ad .LP Simple table without caption: .PP .na .TS delim(@@) tab( ); r l c l. T{ Right T} T{ Left T} T{ Center T} T{ Default T} _ T{ 12 T} T{ 12 T} T{ 12 T} T{ 12 T} T{ 123 T} T{ 123 T} T{ 123 T} T{ 123 T} T{ 1 T} T{ 1 T} T{ 1 T} T{ 1 T} .TE .ad .LP Simple table indented two spaces: .PP Demonstration of simple table syntax. .na .TS delim(@@) tab( ); r l c l. T{ Right T} T{ Left T} T{ Center T} T{ Default T} _ T{ 12 T} T{ 12 T} T{ 12 T} T{ 12 T} T{ 123 T} T{ 123 T} T{ 123 T} T{ 123 T} T{ 1 T} T{ 1 T} T{ 1 T} T{ 1 T} .TE .ad .LP Multiline table with caption: .PP Here\[cq]s the caption. It may span multiple lines. .na .nr LLold \n[LL] .TS delim(@@) tab( ); cw(10.5n) lw(9.6n) rw(11.4n) lw(24.5n). T{ Centered Header T} T{ Left Aligned T} T{ Right Aligned T} T{ Default aligned T} _ T{ .nr LL 10.5n First T} T{ .nr LL 9.6n row T} T{ .nr LL 11.4n 12.0 T} T{ .nr LL 24.5n Example of a row that spans multiple lines. T} T{ .nr LL 10.5n Second T} T{ .nr LL 9.6n row T} T{ .nr LL 11.4n 5.0 T} T{ .nr LL 24.5n Here\[cq]s another one. Note the blank line between rows. T} .TE .nr LL \n[LLold] .ad .LP Multiline table without caption: .PP .na .nr LLold \n[LL] .TS delim(@@) tab( ); cw(10.5n) lw(9.6n) rw(11.4n) lw(24.5n). T{ Centered Header T} T{ Left Aligned T} T{ Right Aligned T} T{ Default aligned T} _ T{ .nr LL 10.5n First T} T{ .nr LL 9.6n row T} T{ .nr LL 11.4n 12.0 T} T{ .nr LL 24.5n Example of a row that spans multiple lines. T} T{ .nr LL 10.5n Second T} T{ .nr LL 9.6n row T} T{ .nr LL 11.4n 5.0 T} T{ .nr LL 24.5n Here\[cq]s another one. Note the blank line between rows. T} .TE .nr LL \n[LLold] .ad .LP Table without column headers: .PP .na .TS delim(@@) tab( ); r l c r. T{ 12 T} T{ 12 T} T{ 12 T} T{ 12 T} T{ 123 T} T{ 123 T} T{ 123 T} T{ 123 T} T{ 1 T} T{ 1 T} T{ 1 T} T{ 1 T} .TE .ad .LP Multiline table without column headers: .PP .na .nr LLold \n[LL] .TS delim(@@) tab( ); cw(10.5n) lw(9.6n) rw(11.4n) lw(24.5n). T{ .nr LL 10.5n First T} T{ .nr LL 9.6n row T} T{ .nr LL 11.4n 12.0 T} T{ .nr LL 24.5n Example of a row that spans multiple lines. T} T{ .nr LL 10.5n Second T} T{ .nr LL 9.6n row T} T{ .nr LL 11.4n 5.0 T} T{ .nr LL 24.5n Here\[cq]s another one. Note the blank line between rows. T} .TE .nr LL \n[LLold] .ad pandoc-3.1.3/test/tables.muse0000644000000000000000000000450007346545000014276 0ustar0000000000000000Simple table with caption: Right || Left || Center || Default 12 | 12 | 12 | 12 123 | 123 | 123 | 123 1 | 1 | 1 | 1 |+ Demonstration of simple table syntax. +| Simple table without caption: Right || Left || Center || Default 12 | 12 | 12 | 12 123 | 123 | 123 | 123 1 | 1 | 1 | 1 Simple table indented two spaces: Right || Left || Center || Default 12 | 12 | 12 | 12 123 | 123 | 123 | 123 1 | 1 | 1 | 1 |+ Demonstration of simple table syntax. +| Multiline table with caption: +-----------+----------+------------+---------------------------+ | First | row | 12.0 | Example of a row that | | | | | spans multiple lines. | +-----------+----------+------------+---------------------------+ | Second | row | 5.0 | Here’s another one. Note | | | | | the blank line between | | | | | rows. | +-----------+----------+------------+---------------------------+ Multiline table without caption: +-----------+----------+------------+---------------------------+ | First | row | 12.0 | Example of a row that | | | | | spans multiple lines. | +-----------+----------+------------+---------------------------+ | Second | row | 5.0 | Here’s another one. Note | | | | | the blank line between | | | | | rows. | +-----------+----------+------------+---------------------------+ Table without column headers: 12 | 12 | 12 | 12 123 | 123 | 123 | 123 1 | 1 | 1 | 1 Multiline table without column headers: +-----------+----------+------------+---------------------------+ | First | row | 12.0 | Example of a row that | | | | | spans multiple lines. | +-----------+----------+------------+---------------------------+ | Second | row | 5.0 | Here’s another one. Note | | | | | the blank line between | | | | | rows. | +-----------+----------+------------+---------------------------+ pandoc-3.1.3/test/tables.native0000644000000000000000000006153307346545000014624 0ustar0000000000000000[ Para [ Str "Simple" , Space , Str "table" , Space , Str "with" , Space , Str "caption:" ] , Table ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "Demonstration" , Space , Str "of" , Space , Str "simple" , Space , Str "table" , Space , Str "syntax." ] ]) [ ( AlignRight , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Right" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Left" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Center" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Default" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Simple" , Space , Str "table" , Space , Str "without" , Space , Str "caption:" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignRight , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Right" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Left" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Center" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Default" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Simple" , Space , Str "table" , Space , Str "indented" , Space , Str "two" , Space , Str "spaces:" ] , Table ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "Demonstration" , Space , Str "of" , Space , Str "simple" , Space , Str "table" , Space , Str "syntax." ] ]) [ ( AlignRight , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Right" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Left" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Center" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Default" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Multiline" , Space , Str "table" , Space , Str "with" , Space , Str "caption:" ] , Table ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "Here\8217s" , Space , Str "the" , Space , Str "caption." , SoftBreak , Str "It" , Space , Str "may" , Space , Str "span" , Space , Str "multiple" , Space , Str "lines." ] ]) [ ( AlignCenter , ColWidth 0.15 ) , ( AlignLeft , ColWidth 0.1375 ) , ( AlignRight , ColWidth 0.1625 ) , ( AlignLeft , ColWidth 0.35 ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Centered" , SoftBreak , Str "Header" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Left" , SoftBreak , Str "Aligned" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Right" , SoftBreak , Str "Aligned" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Default" , Space , Str "aligned" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "First" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "row" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12.0" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Example" , Space , Str "of" , Space , Str "a" , Space , Str "row" , Space , Str "that" , Space , Str "spans" , SoftBreak , Str "multiple" , Space , Str "lines." ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Second" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "row" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5.0" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Here\8217s" , Space , Str "another" , Space , Str "one." , Space , Str "Note" , SoftBreak , Str "the" , Space , Str "blank" , Space , Str "line" , Space , Str "between" , Space , Str "rows." ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Multiline" , Space , Str "table" , Space , Str "without" , Space , Str "caption:" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignCenter , ColWidth 0.15 ) , ( AlignLeft , ColWidth 0.1375 ) , ( AlignRight , ColWidth 0.1625 ) , ( AlignLeft , ColWidth 0.35 ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Centered" , SoftBreak , Str "Header" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Left" , SoftBreak , Str "Aligned" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Right" , SoftBreak , Str "Aligned" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Default" , Space , Str "aligned" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "First" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "row" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12.0" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Example" , Space , Str "of" , Space , Str "a" , Space , Str "row" , Space , Str "that" , Space , Str "spans" , SoftBreak , Str "multiple" , Space , Str "lines." ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Second" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "row" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5.0" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Here\8217s" , Space , Str "another" , Space , Str "one." , Space , Str "Note" , SoftBreak , Str "the" , Space , Str "blank" , Space , Str "line" , Space , Str "between" , Space , Str "rows." ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Table" , Space , Str "without" , Space , Str "column" , Space , Str "headers:" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignRight , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignRight , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "123" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "Multiline" , Space , Str "table" , Space , Str "without" , Space , Str "column" , Space , Str "headers:" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignCenter , ColWidth 0.15 ) , ( AlignLeft , ColWidth 0.1375 ) , ( AlignRight , ColWidth 0.1625 ) , ( AlignDefault , ColWidth 0.35 ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "First" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "row" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "12.0" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Example" , Space , Str "of" , Space , Str "a" , Space , Str "row" , Space , Str "that" , Space , Str "spans" , SoftBreak , Str "multiple" , Space , Str "lines." ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Second" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "row" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5.0" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Here\8217s" , Space , Str "another" , Space , Str "one." , Space , Str "Note" , SoftBreak , Str "the" , Space , Str "blank" , Space , Str "line" , Space , Str "between" , Space , Str "rows." ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] pandoc-3.1.3/test/tables.opendocument0000644000000000000000000004621407346545000016035 0ustar0000000000000000Simple table with caption: Demonstration of simple table syntax. Right Left Center Default 12 12 12 12 123 123 123 123 1 1 1 1 Simple table without caption: Right Left Center Default 12 12 12 12 123 123 123 123 1 1 1 1 Simple table indented two spaces: Demonstration of simple table syntax. Right Left Center Default 12 12 12 12 123 123 123 123 1 1 1 1 Multiline table with caption: Here’s the caption. It may span multiple lines. Centered Header Left Aligned Right Aligned Default aligned First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here’s another one. Note the blank line between rows. Multiline table without caption: Centered Header Left Aligned Right Aligned Default aligned First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here’s another one. Note the blank line between rows. Table without column headers: 12 12 12 12 123 123 123 123 1 1 1 1 Multiline table without column headers: First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here’s another one. Note the blank line between rows. pandoc-3.1.3/test/tables.org0000644000000000000000000000375407346545000014126 0ustar0000000000000000Simple table with caption: | Right | Left | Center | Default | |-------+------+--------+---------| | 12 | 12 | 12 | 12 | | 123 | 123 | 123 | 123 | | 1 | 1 | 1 | 1 | #+caption: Demonstration of simple table syntax. Simple table without caption: | Right | Left | Center | Default | |-------+------+--------+---------| | 12 | 12 | 12 | 12 | | 123 | 123 | 123 | 123 | | 1 | 1 | 1 | 1 | Simple table indented two spaces: | Right | Left | Center | Default | |-------+------+--------+---------| | 12 | 12 | 12 | 12 | | 123 | 123 | 123 | 123 | | 1 | 1 | 1 | 1 | #+caption: Demonstration of simple table syntax. Multiline table with caption: | Centered Header | Left Aligned | Right Aligned | Default aligned | |-----------------+--------------+---------------+-------------------------------------------------------| | First | row | 12.0 | Example of a row that spans multiple lines. | | Second | row | 5.0 | Here's another one. Note the blank line between rows. | #+caption: Here's the caption. It may span multiple lines. Multiline table without caption: | Centered Header | Left Aligned | Right Aligned | Default aligned | |-----------------+--------------+---------------+-------------------------------------------------------| | First | row | 12.0 | Example of a row that spans multiple lines. | | Second | row | 5.0 | Here's another one. Note the blank line between rows. | Table without column headers: | 12 | 12 | 12 | 12 | | 123 | 123 | 123 | 123 | | 1 | 1 | 1 | 1 | Multiline table without column headers: | First | row | 12.0 | Example of a row that spans multiple lines. | | Second | row | 5.0 | Here's another one. Note the blank line between rows. | pandoc-3.1.3/test/tables.plain0000644000000000000000000000500607346545000014432 0ustar0000000000000000Simple table with caption: Right Left Center Default ------- ------ -------- --------- 12 12 12 12 123 123 123 123 1 1 1 1 : Demonstration of simple table syntax. Simple table without caption: Right Left Center Default ------- ------ -------- --------- 12 12 12 12 123 123 123 123 1 1 1 1 Simple table indented two spaces: Right Left Center Default ------- ------ -------- --------- 12 12 12 12 123 123 123 123 1 1 1 1 : Demonstration of simple table syntax. Multiline table with caption: --------------------------------------------------------------- Centered Left Right Default aligned Header Aligned Aligned ----------- ---------- ------------ --------------------------- First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here’s another one. Note the blank line between rows. --------------------------------------------------------------- : Here’s the caption. It may span multiple lines. Multiline table without caption: --------------------------------------------------------------- Centered Left Right Default aligned Header Aligned Aligned ----------- ---------- ------------ --------------------------- First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here’s another one. Note the blank line between rows. --------------------------------------------------------------- Table without column headers: ----- ----- ----- ----- 12 12 12 12 123 123 123 123 1 1 1 1 ----- ----- ----- ----- Multiline table without column headers: ----------- ---------- ------------ --------------------------- First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here’s another one. Note the blank line between rows. ----------- ---------- ------------ --------------------------- pandoc-3.1.3/test/tables.rst0000644000000000000000000000573607346545000014151 0ustar0000000000000000Simple table with caption: .. table:: Demonstration of simple table syntax. ===== ==== ====== ======= Right Left Center Default ===== ==== ====== ======= 12 12 12 12 123 123 123 123 1 1 1 1 ===== ==== ====== ======= Simple table without caption: ===== ==== ====== ======= Right Left Center Default ===== ==== ====== ======= 12 12 12 12 123 123 123 123 1 1 1 1 ===== ==== ====== ======= Simple table indented two spaces: .. table:: Demonstration of simple table syntax. ===== ==== ====== ======= Right Left Center Default ===== ==== ====== ======= 12 12 12 12 123 123 123 123 1 1 1 1 ===== ==== ====== ======= Multiline table with caption: .. table:: Here’s the caption. It may span multiple lines. +-----------+----------+------------+---------------------------+ | Centered | Left | Right | Default aligned | | Header | Aligned | Aligned | | +===========+==========+============+===========================+ | First | row | 12.0 | Example of a row that | | | | | spans multiple lines. | +-----------+----------+------------+---------------------------+ | Second | row | 5.0 | Here’s another one. Note | | | | | the blank line between | | | | | rows. | +-----------+----------+------------+---------------------------+ Multiline table without caption: +-----------+----------+------------+---------------------------+ | Centered | Left | Right | Default aligned | | Header | Aligned | Aligned | | +===========+==========+============+===========================+ | First | row | 12.0 | Example of a row that | | | | | spans multiple lines. | +-----------+----------+------------+---------------------------+ | Second | row | 5.0 | Here’s another one. Note | | | | | the blank line between | | | | | rows. | +-----------+----------+------------+---------------------------+ Table without column headers: === === === === 12 12 12 12 123 123 123 123 1 1 1 1 === === === === Multiline table without column headers: +-----------+----------+------------+---------------------------+ | First | row | 12.0 | Example of a row that | | | | | spans multiple lines. | +-----------+----------+------------+---------------------------+ | Second | row | 5.0 | Here’s another one. Note | | | | | the blank line between | | | | | rows. | +-----------+----------+------------+---------------------------+ pandoc-3.1.3/test/tables.rtf0000644000000000000000000002046307346545000014126 0ustar0000000000000000{\pard \ql \f0 \sa180 \li0 \fi0 Simple table with caption:\par} { \trowd \trgaph120 \clbrdrb\brdrs\cellx2160\clbrdrb\brdrs\cellx4320\clbrdrb\brdrs\cellx6480\clbrdrb\brdrs\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 Right\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 Left\par} \cell} {{\pard\intbl \qc \f0 \sa0 \li0 \fi0 Center\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 Default\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx2160\cellx4320\cellx6480\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 12\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 12\par} \cell} {{\pard\intbl \qc \f0 \sa0 \li0 \fi0 12\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 12\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx2160\cellx4320\cellx6480\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 123\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 123\par} \cell} {{\pard\intbl \qc \f0 \sa0 \li0 \fi0 123\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 123\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx2160\cellx4320\cellx6480\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 1\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 1\par} \cell} {{\pard\intbl \qc \f0 \sa0 \li0 \fi0 1\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 1\par} \cell} } \intbl\row} {\pard \ql \f0 \sa180 \li0 \fi0 Demonstration of simple table syntax.\par} {\pard \ql \f0 \sa180 \li0 \fi0 Simple table without caption:\par} { \trowd \trgaph120 \clbrdrb\brdrs\cellx2160\clbrdrb\brdrs\cellx4320\clbrdrb\brdrs\cellx6480\clbrdrb\brdrs\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 Right\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 Left\par} \cell} {{\pard\intbl \qc \f0 \sa0 \li0 \fi0 Center\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 Default\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx2160\cellx4320\cellx6480\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 12\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 12\par} \cell} {{\pard\intbl \qc \f0 \sa0 \li0 \fi0 12\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 12\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx2160\cellx4320\cellx6480\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 123\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 123\par} \cell} {{\pard\intbl \qc \f0 \sa0 \li0 \fi0 123\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 123\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx2160\cellx4320\cellx6480\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 1\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 1\par} \cell} {{\pard\intbl \qc \f0 \sa0 \li0 \fi0 1\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 1\par} \cell} } \intbl\row} {\pard \ql \f0 \sa180 \li0 \fi0 \par} {\pard \ql \f0 \sa180 \li0 \fi0 Simple table indented two spaces:\par} { \trowd \trgaph120 \clbrdrb\brdrs\cellx2160\clbrdrb\brdrs\cellx4320\clbrdrb\brdrs\cellx6480\clbrdrb\brdrs\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 Right\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 Left\par} \cell} {{\pard\intbl \qc \f0 \sa0 \li0 \fi0 Center\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 Default\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx2160\cellx4320\cellx6480\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 12\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 12\par} \cell} {{\pard\intbl \qc \f0 \sa0 \li0 \fi0 12\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 12\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx2160\cellx4320\cellx6480\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 123\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 123\par} \cell} {{\pard\intbl \qc \f0 \sa0 \li0 \fi0 123\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 123\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx2160\cellx4320\cellx6480\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 1\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 1\par} \cell} {{\pard\intbl \qc \f0 \sa0 \li0 \fi0 1\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 1\par} \cell} } \intbl\row} {\pard \ql \f0 \sa180 \li0 \fi0 Demonstration of simple table syntax.\par} {\pard \ql \f0 \sa180 \li0 \fi0 Multiline table with caption:\par} { \trowd \trgaph120 \clbrdrb\brdrs\cellx1296\clbrdrb\brdrs\cellx2484\clbrdrb\brdrs\cellx3888\clbrdrb\brdrs\cellx6912 \trkeep\intbl { {{\pard\intbl \qc \f0 \sa0 \li0 \fi0 Centered Header\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 Left Aligned\par} \cell} {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 Right Aligned\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 Default aligned\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx1296\cellx2484\cellx3888\cellx6912 \trkeep\intbl { {{\pard\intbl \qc \f0 \sa0 \li0 \fi0 First\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 row\par} \cell} {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 12.0\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 Example of a row that spans multiple lines.\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx1296\cellx2484\cellx3888\cellx6912 \trkeep\intbl { {{\pard\intbl \qc \f0 \sa0 \li0 \fi0 Second\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 row\par} \cell} {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 5.0\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 Here\u8217's another one. Note the blank line between rows.\par} \cell} } \intbl\row} {\pard \ql \f0 \sa180 \li0 \fi0 Here\u8217's the caption. It may span multiple lines.\par} {\pard \ql \f0 \sa180 \li0 \fi0 Multiline table without caption:\par} { \trowd \trgaph120 \clbrdrb\brdrs\cellx1296\clbrdrb\brdrs\cellx2484\clbrdrb\brdrs\cellx3888\clbrdrb\brdrs\cellx6912 \trkeep\intbl { {{\pard\intbl \qc \f0 \sa0 \li0 \fi0 Centered Header\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 Left Aligned\par} \cell} {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 Right Aligned\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 Default aligned\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx1296\cellx2484\cellx3888\cellx6912 \trkeep\intbl { {{\pard\intbl \qc \f0 \sa0 \li0 \fi0 First\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 row\par} \cell} {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 12.0\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 Example of a row that spans multiple lines.\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx1296\cellx2484\cellx3888\cellx6912 \trkeep\intbl { {{\pard\intbl \qc \f0 \sa0 \li0 \fi0 Second\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 row\par} \cell} {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 5.0\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 Here\u8217's another one. Note the blank line between rows.\par} \cell} } \intbl\row} {\pard \ql \f0 \sa180 \li0 \fi0 \par} {\pard \ql \f0 \sa180 \li0 \fi0 Table without column headers:\par} { \trowd \trgaph120 \cellx2160\cellx4320\cellx6480\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 12\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 12\par} \cell} {{\pard\intbl \qc \f0 \sa0 \li0 \fi0 12\par} \cell} {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 12\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx2160\cellx4320\cellx6480\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 123\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 123\par} \cell} {{\pard\intbl \qc \f0 \sa0 \li0 \fi0 123\par} \cell} {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 123\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx2160\cellx4320\cellx6480\cellx8640 \trkeep\intbl { {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 1\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 1\par} \cell} {{\pard\intbl \qc \f0 \sa0 \li0 \fi0 1\par} \cell} {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 1\par} \cell} } \intbl\row} {\pard \ql \f0 \sa180 \li0 \fi0 \par} {\pard \ql \f0 \sa180 \li0 \fi0 Multiline table without column headers:\par} { \trowd \trgaph120 \cellx1296\cellx2484\cellx3888\cellx6912 \trkeep\intbl { {{\pard\intbl \qc \f0 \sa0 \li0 \fi0 First\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 row\par} \cell} {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 12.0\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 Example of a row that spans multiple lines.\par} \cell} } \intbl\row} { \trowd \trgaph120 \cellx1296\cellx2484\cellx3888\cellx6912 \trkeep\intbl { {{\pard\intbl \qc \f0 \sa0 \li0 \fi0 Second\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 row\par} \cell} {{\pard\intbl \qr \f0 \sa0 \li0 \fi0 5.0\par} \cell} {{\pard\intbl \ql \f0 \sa0 \li0 \fi0 Here\u8217's another one. Note the blank line between rows.\par} \cell} } \intbl\row} {\pard \ql \f0 \sa180 \li0 \fi0 \par} pandoc-3.1.3/test/tables.tei0000644000000000000000000000731207346545000014112 0ustar0000000000000000

                Simple table with caption:

                Right

                Left

                Center

                Default

                12

                12

                12

                12

                123

                123

                123

                123

                1

                1

                1

                1

                Simple table without caption:

                Right

                Left

                Center

                Default

                12

                12

                12

                12

                123

                123

                123

                123

                1

                1

                1

                1

                Simple table indented two spaces:

                Right

                Left

                Center

                Default

                12

                12

                12

                12

                123

                123

                123

                123

                1

                1

                1

                1

                Multiline table with caption:

                Centered Header

                Left Aligned

                Right Aligned

                Default aligned

                First

                row

                12.0

                Example of a row that spans multiple lines.

                Second

                row

                5.0

                Here’s another one. Note the blank line between rows.

                Multiline table without caption:

                Centered Header

                Left Aligned

                Right Aligned

                Default aligned

                First

                row

                12.0

                Example of a row that spans multiple lines.

                Second

                row

                5.0

                Here’s another one. Note the blank line between rows.

                Table without column headers:

                12

                12

                12

                12

                123

                123

                123

                123

                1

                1

                1

                1

                Multiline table without column headers:

                First

                row

                12.0

                Example of a row that spans multiple lines.

                Second

                row

                5.0

                Here’s another one. Note the blank line between rows.

                pandoc-3.1.3/test/tables.texinfo0000644000000000000000000000427707346545000015014 0ustar0000000000000000@node Top @top Top Simple table with caption: @float Table @multitable {Right} {Left} {Center} {Default} @headitem Right @tab Left @tab Center @tab Default @item 12 @tab 12 @tab 12 @tab 12 @item 123 @tab 123 @tab 123 @tab 123 @item 1 @tab 1 @tab 1 @tab 1 @end multitable @caption{Demonstration of simple table syntax.} @end float Simple table without caption: @multitable {Right} {Left} {Center} {Default} @headitem Right @tab Left @tab Center @tab Default @item 12 @tab 12 @tab 12 @tab 12 @item 123 @tab 123 @tab 123 @tab 123 @item 1 @tab 1 @tab 1 @tab 1 @end multitable Simple table indented two spaces: @float Table @multitable {Right} {Left} {Center} {Default} @headitem Right @tab Left @tab Center @tab Default @item 12 @tab 12 @tab 12 @tab 12 @item 123 @tab 123 @tab 123 @tab 123 @item 1 @tab 1 @tab 1 @tab 1 @end multitable @caption{Demonstration of simple table syntax.} @end float Multiline table with caption: @float Table @multitable @columnfractions 0.15 0.14 0.16 0.35 @headitem Centered Header @tab Left Aligned @tab Right Aligned @tab Default aligned @item First @tab row @tab 12.0 @tab Example of a row that spans multiple lines. @item Second @tab row @tab 5.0 @tab Here's another one. Note the blank line between rows. @end multitable @caption{Here's the caption. It may span multiple lines.} @end float Multiline table without caption: @multitable @columnfractions 0.15 0.14 0.16 0.35 @headitem Centered Header @tab Left Aligned @tab Right Aligned @tab Default aligned @item First @tab row @tab 12.0 @tab Example of a row that spans multiple lines. @item Second @tab row @tab 5.0 @tab Here's another one. Note the blank line between rows. @end multitable Table without column headers: @multitable {123} {123} {123} {123} @item 12 @tab 12 @tab 12 @tab 12 @item 123 @tab 123 @tab 123 @tab 123 @item 1 @tab 1 @tab 1 @tab 1 @end multitable Multiline table without column headers: @multitable @columnfractions 0.15 0.14 0.16 0.35 @item First @tab row @tab 12.0 @tab Example of a row that spans multiple lines. @item Second @tab row @tab 5.0 @tab Here's another one. Note the blank line between rows. @end multitable pandoc-3.1.3/test/tables.textile0000644000000000000000000000673607346545000015020 0ustar0000000000000000Simple table with caption:
                Demonstration of simple table syntax.
                Right Left Center Default
                12 12 12 12
                123 123 123 123
                1 1 1 1
                Simple table without caption: |_. Right|_. Left|_. Center|_. Default| |>. 12|<. 12|=. 12|12| |>. 123|<. 123|=. 123|123| |>. 1|<. 1|=. 1|1| Simple table indented two spaces:
                Demonstration of simple table syntax.
                Right Left Center Default
                12 12 12 12
                123 123 123 123
                1 1 1 1
                Multiline table with caption:
                Here's the caption. It may span multiple lines.
                Centered Header Left Aligned Right Aligned Default aligned
                First row 12.0 Example of a row that spans multiple lines.
                Second row 5.0 Here's another one. Note the blank line between rows.
                Multiline table without caption:
                Centered Header Left Aligned Right Aligned Default aligned
                First row 12.0 Example of a row that spans multiple lines.
                Second row 5.0 Here's another one. Note the blank line between rows.
                Table without column headers: |>. 12|<. 12|=. 12|>. 12| |>. 123|<. 123|=. 123|>. 123| |>. 1|<. 1|=. 1|>. 1| Multiline table without column headers:
                First row 12.0 Example of a row that spans multiple lines.
                Second row 5.0 Here's another one. Note the blank line between rows.
                pandoc-3.1.3/test/tables.txt0000644000000000000000000000513507346545000014151 0ustar0000000000000000Simple table with caption: Right Left Center Default ------- ------ ---------- ------- 12 12 12 12 123 123 123 123 1 1 1 1 Table: Demonstration of simple table syntax. Simple table without caption: Right Left Center Default ------- ------ ---------- ------- 12 12 12 12 123 123 123 123 1 1 1 1 Simple table indented two spaces: Right Left Center Default ------- ------ ---------- ------- 12 12 12 12 123 123 123 123 1 1 1 1 : Demonstration of simple table syntax. Multiline table with caption: : Here's the caption. It may span multiple lines. --------------------------------------------------------------- Centered Left Right Header Aligned Aligned Default aligned ---------- --------- ----------- --------------------------- First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here's another one. Note the blank line between rows. --------------------------------------------------------------- Multiline table without caption: --------------------------------------------------------------- Centered Left Right Header Aligned Aligned Default aligned ---------- --------- ----------- --------------------------- First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here's another one. Note the blank line between rows. --------------------------------------------------------------- Table without column headers: ------- ------ ---------- ------- 12 12 12 12 123 123 123 123 1 1 1 1 ------- ------ ---------- ------- Multiline table without column headers: ---------- --------- ----------- --------------------------- First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here's another one. Note the blank line between rows. ---------- --------- ----------- --------------------------- pandoc-3.1.3/test/tables.typst0000644000000000000000000000450107346545000014511 0ustar0000000000000000Simple table with caption: #align(center)[#table( columns: 4, align: (col, row) => (right,left,center,auto,).at(col), inset: 6pt, [Right], [Left], [Center], [Default], [12], [12], [12], [12], [123], [123], [123], [123], [1], [1], [1], [1], ) #align(center, [Demonstration of simple table syntax.]) ] Simple table without caption: #align(center)[#table( columns: 4, align: (col, row) => (right,left,center,auto,).at(col), inset: 6pt, [Right], [Left], [Center], [Default], [12], [12], [12], [12], [123], [123], [123], [123], [1], [1], [1], [1], ) ] Simple table indented two spaces: #align(center)[#table( columns: 4, align: (col, row) => (right,left,center,auto,).at(col), inset: 6pt, [Right], [Left], [Center], [Default], [12], [12], [12], [12], [123], [123], [123], [123], [1], [1], [1], [1], ) #align(center, [Demonstration of simple table syntax.]) ] Multiline table with caption: #align(center)[#table( columns: 4, align: (col, row) => (center,left,right,left,).at(col), inset: 6pt, [Centered Header], [Left Aligned], [Right Aligned], [Default aligned], [First], [row], [12.0], [Example of a row that spans multiple lines.], [Second], [row], [5.0], [Here’s another one. Note the blank line between rows.], ) #align(center, [Here’s the caption. It may span multiple lines.]) ] Multiline table without caption: #align(center)[#table( columns: 4, align: (col, row) => (center,left,right,left,).at(col), inset: 6pt, [Centered Header], [Left Aligned], [Right Aligned], [Default aligned], [First], [row], [12.0], [Example of a row that spans multiple lines.], [Second], [row], [5.0], [Here’s another one. Note the blank line between rows.], ) ] Table without column headers: #align(center)[#table( columns: 4, align: (col, row) => (right,left,center,right,).at(col), inset: 6pt, [12], [12], [12], [12], [123], [123], [123], [123], [1], [1], [1], [1], ) ] Multiline table without column headers: #align(center)[#table( columns: 4, align: (col, row) => (center,left,right,auto,).at(col), inset: 6pt, [First], [row], [12.0], [Example of a row that spans multiple lines.], [Second], [row], [5.0], [Here’s another one. Note the blank line between rows.], ) ] pandoc-3.1.3/test/tables.xwiki0000644000000000000000000000211707346545000014462 0ustar0000000000000000Simple table with caption: |=Right |=Left |=Center |=Default |12 |12 |12 |12 |123 |123 |123 |123 |1 |1 |1 |1 Simple table without caption: |=Right |=Left |=Center |=Default |12 |12 |12 |12 |123 |123 |123 |123 |1 |1 |1 |1 Simple table indented two spaces: |=Right |=Left |=Center |=Default |12 |12 |12 |12 |123 |123 |123 |123 |1 |1 |1 |1 Multiline table with caption: |=Centered Header |=Left Aligned |=Right Aligned |=Default aligned |First |row |12.0 |Example of a row that spans multiple lines. |Second |row |5.0 |Here’s another one. Note the blank line between rows. Multiline table without caption: |=Centered Header |=Left Aligned |=Right Aligned |=Default aligned |First |row |12.0 |Example of a row that spans multiple lines. |Second |row |5.0 |Here’s another one. Note the blank line between rows. Table without column headers: |= |= |= |= |12 |12 |12 |12 |123 |123 |123 |123 |1 |1 |1 |1 Multiline table without column headers: |= |= |= |= |First |row |12.0 |Example of a row that spans multiple lines. |Second |row |5.0 |Here’s another one. Note the blank line between rows. pandoc-3.1.3/test/tables.zimwiki0000644000000000000000000000404707346545000015016 0ustar0000000000000000Simple table with caption: Demonstration of simple table syntax. |Right|Left |Center |Default| |----:|:----|:-----:|-------| | 12|12 | 12 |12 | | 123|123 | 123 |123 | | 1|1 | 1 |1 | Simple table without caption: |Right|Left |Center |Default| |----:|:----|:-----:|-------| | 12|12 | 12 |12 | | 123|123 | 123 |123 | | 1|1 | 1 |1 | Simple table indented two spaces: Demonstration of simple table syntax. |Right|Left |Center |Default| |----:|:----|:-----:|-------| | 12|12 | 12 |12 | | 123|123 | 123 |123 | | 1|1 | 1 |1 | Multiline table with caption: Here’s the caption. It may span multiple lines. |Centered Header|Left Aligned|Right Aligned|Default aligned | |:-------------:|:-----------|------------:|:------------------------------------------------------| | First |row | 12.0|Example of a row that spans multiple lines. | | Second |row | 5.0|Here’s another one. Note the blank line between rows. | Multiline table without caption: |Centered Header|Left Aligned|Right Aligned|Default aligned | |:-------------:|:-----------|------------:|:------------------------------------------------------| | First |row | 12.0|Example of a row that spans multiple lines. | | Second |row | 5.0|Here’s another one. Note the blank line between rows. | Table without column headers: | 12|12 | 12 | 12| |----:|:----|:-----:|----:| | 12|12 | 12 | 12| | 123|123 | 123 | 123| | 1|1 | 1 | 1| Multiline table without column headers: | First |row | 12.0|Example of a row that spans multiple lines. | |:--------:|:----|-----:|-----------------------------------------------------| | First |row | 12.0|Example of a row that spans multiple lines. | | Second |row | 5.0|Here’s another one. Note the blank line between rows.| pandoc-3.1.3/test/tables/0000755000000000000000000000000007346545000013404 5ustar0000000000000000pandoc-3.1.3/test/tables/nordics.html40000644000000000000000000000271107346545000016020 0ustar0000000000000000

                States belonging to the Nordics.

                Name Capital Population
                (in 2018)
                Area
                (in km2)
                Denmark Copenhagen 5,809,502 43,094
                Finland Helsinki 5,537,364 338,145
                Iceland Reykjavik 343,518 103,000
                Norway Oslo 5,372,191 323,802
                Sweden Stockholm 10,313,447 450,295
                Total 27,376,022 1,258,336
                pandoc-3.1.3/test/tables/nordics.html50000644000000000000000000000352607346545000016026 0ustar0000000000000000

                States belonging to the Nordics.

                Name Capital Population
                (in 2018)
                Area
                (in km2)
                Denmark Copenhagen 5,809,502 43,094
                Finland Helsinki 5,537,364 338,145
                Iceland Reykjavik 343,518 103,000
                Norway Oslo 5,372,191 323,802
                Sweden Stockholm 10,313,447 450,295
                Total 27,376,022 1,258,336
                pandoc-3.1.3/test/tables/nordics.jats_archiving0000644000000000000000000000317007346545000017763 0ustar0000000000000000

                States belonging to the Nordics.

                Name Capital Population(in 2018) Area(in km2)
                Total 27,376,022 1,258,336
                DenmarkCopenhagen 5,809,502 43,094
                FinlandHelsinki 5,537,364 338,145
                IcelandReykjavik 343,518 103,000
                NorwayOslo 5,372,191 323,802
                SwedenStockholm 10,313,447 450,295
                pandoc-3.1.3/test/tables/nordics.latex0000644000000000000000000000273707346545000016115 0ustar0000000000000000\begin{longtable}[]{@{} >{\centering\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.3000}} >{\raggedright\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.3000}} >{\raggedright\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.2000}} >{\raggedright\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.2000}}@{}} \caption[Nordic countries]{States belonging to the \emph{Nordics.}}\label{nordics}\tabularnewline \toprule\noalign{} \begin{minipage}[b]{\linewidth}\centering Name \end{minipage} & \begin{minipage}[b]{\linewidth}\centering Capital \end{minipage} & \begin{minipage}[b]{\linewidth}\centering Population\\ (in 2018)\strut \end{minipage} & \begin{minipage}[b]{\linewidth}\centering Area\\ (in km\textsuperscript{2})\strut \end{minipage} \\ \midrule\noalign{} \endfirsthead \toprule\noalign{} \begin{minipage}[b]{\linewidth}\centering Name \end{minipage} & \begin{minipage}[b]{\linewidth}\centering Capital \end{minipage} & \begin{minipage}[b]{\linewidth}\centering Population\\ (in 2018)\strut \end{minipage} & \begin{minipage}[b]{\linewidth}\centering Area\\ (in km\textsuperscript{2})\strut \end{minipage} \\ \midrule\noalign{} \endhead \midrule\noalign{} Total & & 27,376,022 & 1,258,336 \\ \bottomrule\noalign{} \endlastfoot Denmark & Copenhagen & 5,809,502 & 43,094 \\ Finland & Helsinki & 5,537,364 & 338,145 \\ Iceland & Reykjavik & 343,518 & 103,000 \\ Norway & Oslo & 5,372,191 & 323,802 \\ Sweden & Stockholm & 10,313,447 & 450,295 \\ \end{longtable} pandoc-3.1.3/test/tables/nordics.mediawiki0000644000000000000000000000250507346545000016734 0ustar0000000000000000{| id="nordics" class="wikitable" source="wikipedia" |+ States belonging to the ''Nordics.'' |- ! style="text-align: center;"| Name ! style="text-align: center;"| Capital ! style="text-align: center;"| Population
                (in 2018) ! style="text-align: center;"| Area
                (in km2) |- class="country" ! style="text-align: center;"| Denmark | style="text-align: left;"| Copenhagen | style="text-align: left;"| 5,809,502 | style="text-align: left;"| 43,094 |- class="country" ! style="text-align: center;"| Finland | style="text-align: left;"| Helsinki | style="text-align: left;"| 5,537,364 | style="text-align: left;"| 338,145 |- class="country" ! style="text-align: center;"| Iceland | style="text-align: left;"| Reykjavik | style="text-align: left;"| 343,518 | style="text-align: left;"| 103,000 |- class="country" ! style="text-align: center;"| Norway | style="text-align: left;"| Oslo | style="text-align: left;"| 5,372,191 | style="text-align: left;"| 323,802 |- class="country" ! style="text-align: center;"| Sweden | style="text-align: left;"| Stockholm | style="text-align: left;"| 10,313,447 | style="text-align: left;"| 450,295 |- id="summary" ! style="text-align: center;"| Total ! style="text-align: left;"| ! id="total-population" style="text-align: left;"| 27,376,022 ! id="total-area" style="text-align: left;"| 1,258,336 |} pandoc-3.1.3/test/tables/nordics.native0000644000000000000000000000605007346545000016256 0ustar0000000000000000[Table ("nordics",[],[("source","wikipedia")]) (Caption (Just [Str "Nordic",Space,Str "countries"]) [Para [Str "States",Space,Str "belonging",Space,Str "to",Space,Str "the",Space,Emph [Str "Nordics."]]]) [(AlignCenter,ColWidth 0.3) ,(AlignLeft,ColWidth 0.3) ,(AlignLeft,ColWidth 0.2) ,(AlignLeft,ColWidth 0.2)] (TableHead ("",["simple-head"],[]) [Row ("",[],[]) [Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1) [Plain [Str "Name"]] ,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1) [Plain [Str "Capital"]] ,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1) [Plain [Str "Population",LineBreak,Str "(in",Space,Str "2018)"]] ,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1) [Plain [Str "Area",LineBreak,Str "(in",Space,Str "km",Superscript [Str "2"],Str ")"]]]]) [(TableBody ("",["souvereign-states"],[]) (RowHeadColumns 1) [] [Row ("",["country"],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Denmark"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Copenhagen"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "5,809,502"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "43,094"]]] ,Row ("",["country"],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Finland"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Helsinki"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "5,537,364"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "338,145"]]] ,Row ("",["country"],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Iceland"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Reykjavik"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "343,518"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "103,000"]]] ,Row ("",["country"],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Norway"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Oslo"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "5,372,191"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "323,802"]]] ,Row ("",["country"],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Sweden"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Stockholm"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "10,313,447"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "450,295"]]]])] (TableFoot ("",[],[]) [Row ("summary",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Total"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [] ,Cell ("total-population",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "27,376,022"]] ,Cell ("total-area",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1,258,336"]]]])] pandoc-3.1.3/test/tables/planets.html40000644000000000000000000000643607346545000016035 0ustar0000000000000000

                Data about the planets of our solar system.

                Name Mass (10^24kg) Diameter (km) Density (kg/m^3) Gravity (m/s^2) Length of day (hours) Distance from Sun (10^6km) Mean temperature (C) Number of moons Notes
                Terrestrial planets Mercury 0.330 4,879 5427 3.7 4222.6 57.9 167 0 Closest to the Sun
                Venus 4.87 12,104 5243 8.9 2802.0 108.2 464 0
                Earth 5.97 12,756 5514 9.8 24.0 149.6 15 1 Our world
                Mars 0.642 6,792 3933 3.7 24.7 227.9 -65 2 The red planet
                Jovian planets Gas giants Jupiter 1898 142,984 1326 23.1 9.9 778.6 -110 67 The largest planet
                Saturn 568 120,536 687 9.0 10.7 1433.5 -140 62
                Ice giants Uranus 86.8 51,118 1271 8.7 17.2 2872.5 -195 27
                Neptune 102 49,528 1638 11.0 16.1 4495.1 -200 14
                Dwarf planets Pluto 0.0146 2,370 2095 0.7 153.3 5906.4 -225 5 Declassified as a planet in 2006.
                pandoc-3.1.3/test/tables/planets.html50000644000000000000000000001057407346545000016034 0ustar0000000000000000

                Data about the planets of our solar system.

                Name Mass (10^24kg) Diameter (km) Density (kg/m^3) Gravity (m/s^2) Length of day (hours) Distance from Sun (10^6km) Mean temperature (C) Number of moons Notes
                Terrestrial planets Mercury 0.330 4,879 5427 3.7 4222.6 57.9 167 0 Closest to the Sun
                Venus 4.87 12,104 5243 8.9 2802.0 108.2 464 0
                Earth 5.97 12,756 5514 9.8 24.0 149.6 15 1 Our world
                Mars 0.642 6,792 3933 3.7 24.7 227.9 -65 2 The red planet
                Jovian planets Gas giants Jupiter 1898 142,984 1326 23.1 9.9 778.6 -110 67 The largest planet
                Saturn 568 120,536 687 9.0 10.7 1433.5 -140 62
                Ice giants Uranus 86.8 51,118 1271 8.7 17.2 2872.5 -195 27
                Neptune 102 49,528 1638 11.0 16.1 4495.1 -200 14
                Dwarf planets Pluto 0.0146 2,370 2095 0.7 153.3 5906.4 -225 5 Declassified as a planet in 2006.
                pandoc-3.1.3/test/tables/planets.jats_archiving0000644000000000000000000001011707346545000017767 0ustar0000000000000000

                Data about the planets of our solar system.

                Name Mass (10^24kg) Diameter (km) Density (kg/m^3) Gravity (m/s^2) Length of day (hours) Distance from Sun (10^6km) Mean temperature (C) Number of moons Notes
                Terrestrial planets Mercury0.330 4,879 5427 3.7 4222.6 57.9 167 0 Closest to the Sun
                Venus4.87 12,104 5243 8.9 2802.0 108.2 464 0
                Earth5.97 12,756 5514 9.8 24.0 149.6 15 1 Our world
                Mars0.642 6,792 3933 3.7 24.7 227.9 -65 2 The red planet
                Jovian planets Gas giants Jupiter1898 142,984 1326 23.1 9.9 778.6 -110 67 The largest planet
                Saturn568 120,536 687 9.0 10.7 1433.5 -140 62
                Ice giants Uranus86.8 51,118 1271 8.7 17.2 2872.5 -195 27
                Neptune102 49,528 1638 11.0 16.1 4495.1 -200 14
                Dwarf planets Pluto0.0146 2,370 2095 0.7 153.3 5906.4 -225 5 Declassified as a planet in 2006.
                pandoc-3.1.3/test/tables/planets.latex0000644000000000000000000000313207346545000016110 0ustar0000000000000000\begin{longtable}[]{@{}cclrrrrrrrrl@{}} \caption{Data about the planets of our solar system.}\tabularnewline \toprule\noalign{} \multicolumn{2}{@{}c}{% } & Name & Mass (10\^{}24kg) & Diameter (km) & Density (kg/m\^{}3) & Gravity (m/s\^{}2) & Length of day (hours) & Distance from Sun (10\^{}6km) & Mean temperature (C) & Number of moons & Notes \\ \midrule\noalign{} \endfirsthead \toprule\noalign{} \multicolumn{2}{@{}c}{% } & Name & Mass (10\^{}24kg) & Diameter (km) & Density (kg/m\^{}3) & Gravity (m/s\^{}2) & Length of day (hours) & Distance from Sun (10\^{}6km) & Mean temperature (C) & Number of moons & Notes \\ \midrule\noalign{} \endhead \bottomrule\noalign{} \endlastfoot \multicolumn{2}{@{}c}{% \multirow{4}{*}{Terrestrial planets}} & Mercury & 0.330 & 4,879 & 5427 & 3.7 & 4222.6 & 57.9 & 167 & 0 & Closest to the Sun \\ & & Venus & 4.87 & 12,104 & 5243 & 8.9 & 2802.0 & 108.2 & 464 & 0 & \\ & & Earth & 5.97 & 12,756 & 5514 & 9.8 & 24.0 & 149.6 & 15 & 1 & Our world \\ & & Mars & 0.642 & 6,792 & 3933 & 3.7 & 24.7 & 227.9 & -65 & 2 & The red planet \\ \multirow{4}{*}{Jovian planets} & \multirow{2}{*}{Gas giants} & Jupiter & 1898 & 142,984 & 1326 & 23.1 & 9.9 & 778.6 & -110 & 67 & The largest planet \\ & & Saturn & 568 & 120,536 & 687 & 9.0 & 10.7 & 1433.5 & -140 & 62 & \\ & \multirow{2}{*}{Ice giants} & Uranus & 86.8 & 51,118 & 1271 & 8.7 & 17.2 & 2872.5 & -195 & 27 & \\ & & Neptune & 102 & 49,528 & 1638 & 11.0 & 16.1 & 4495.1 & -200 & 14 & \\ \multicolumn{2}{@{}c}{% Dwarf planets} & Pluto & 0.0146 & 2,370 & 2095 & 0.7 & 153.3 & 5906.4 & -225 & 5 & Declassified as a planet in 2006. \\ \end{longtable} pandoc-3.1.3/test/tables/planets.mediawiki0000644000000000000000000000674607346545000016754 0ustar0000000000000000{| class="wikitable" |+ Data about the planets of our solar system. |- ! colspan="2" style="text-align: center;"| ! Name ! style="text-align: right;"| Mass (10^24kg) ! style="text-align: right;"| Diameter (km) ! style="text-align: right;"| Density (kg/m^3) ! style="text-align: right;"| Gravity (m/s^2) ! style="text-align: right;"| Length of day (hours) ! style="text-align: right;"| Distance from Sun (10^6km) ! style="text-align: right;"| Mean temperature (C) ! style="text-align: right;"| Number of moons ! Notes |- ! rowspan="4" colspan="2" style="text-align: center;"| Terrestrial planets ! Mercury | style="text-align: right;"| 0.330 | style="text-align: right;"| 4,879 | style="text-align: right;"| 5427 | style="text-align: right;"| 3.7 | style="text-align: right;"| 4222.6 | style="text-align: right;"| 57.9 | style="text-align: right;"| 167 | style="text-align: right;"| 0 | Closest to the Sun |- ! Venus | style="text-align: right;"| 4.87 | style="text-align: right;"| 12,104 | style="text-align: right;"| 5243 | style="text-align: right;"| 8.9 | style="text-align: right;"| 2802.0 | style="text-align: right;"| 108.2 | style="text-align: right;"| 464 | style="text-align: right;"| 0 | |- ! Earth | style="text-align: right;"| 5.97 | style="text-align: right;"| 12,756 | style="text-align: right;"| 5514 | style="text-align: right;"| 9.8 | style="text-align: right;"| 24.0 | style="text-align: right;"| 149.6 | style="text-align: right;"| 15 | style="text-align: right;"| 1 | Our world |- ! Mars | style="text-align: right;"| 0.642 | style="text-align: right;"| 6,792 | style="text-align: right;"| 3933 | style="text-align: right;"| 3.7 | style="text-align: right;"| 24.7 | style="text-align: right;"| 227.9 | style="text-align: right;"| -65 | style="text-align: right;"| 2 | The red planet |- ! rowspan="4" style="text-align: center;"| Jovian planets ! rowspan="2" style="text-align: center;"| Gas giants ! Jupiter | style="text-align: right;"| 1898 | style="text-align: right;"| 142,984 | style="text-align: right;"| 1326 | style="text-align: right;"| 23.1 | style="text-align: right;"| 9.9 | style="text-align: right;"| 778.6 | style="text-align: right;"| -110 | style="text-align: right;"| 67 | The largest planet |- ! Saturn | style="text-align: right;"| 568 | style="text-align: right;"| 120,536 | style="text-align: right;"| 687 | style="text-align: right;"| 9.0 | style="text-align: right;"| 10.7 | style="text-align: right;"| 1433.5 | style="text-align: right;"| -140 | style="text-align: right;"| 62 | |- ! rowspan="2" style="text-align: center;"| Ice giants ! Uranus | style="text-align: right;"| 86.8 | style="text-align: right;"| 51,118 | style="text-align: right;"| 1271 | style="text-align: right;"| 8.7 | style="text-align: right;"| 17.2 | style="text-align: right;"| 2872.5 | style="text-align: right;"| -195 | style="text-align: right;"| 27 | |- ! Neptune | style="text-align: right;"| 102 | style="text-align: right;"| 49,528 | style="text-align: right;"| 1638 | style="text-align: right;"| 11.0 | style="text-align: right;"| 16.1 | style="text-align: right;"| 4495.1 | style="text-align: right;"| -200 | style="text-align: right;"| 14 | |- ! colspan="2" style="text-align: center;"| Dwarf planets ! Pluto | style="text-align: right;"| 0.0146 | style="text-align: right;"| 2,370 | style="text-align: right;"| 2095 | style="text-align: right;"| 0.7 | style="text-align: right;"| 153.3 | style="text-align: right;"| 5906.4 | style="text-align: right;"| -225 | style="text-align: right;"| 5 | Declassified as a planet in 2006. |} pandoc-3.1.3/test/tables/planets.native0000644000000000000000000002351307346545000016266 0ustar0000000000000000[Table ("",[],[]) (Caption Nothing [Para [Str "Data",Space,Str "about",Space,Str "the",Space,Str "planets",Space,Str "of",Space,Str "our",Space,Str "solar",Space,Str "system."]]) [(AlignCenter,ColWidthDefault) ,(AlignCenter,ColWidthDefault) ,(AlignDefault,ColWidthDefault) ,(AlignRight,ColWidthDefault) ,(AlignRight,ColWidthDefault) ,(AlignRight,ColWidthDefault) ,(AlignRight,ColWidthDefault) ,(AlignRight,ColWidthDefault) ,(AlignRight,ColWidthDefault) ,(AlignRight,ColWidthDefault) ,(AlignRight,ColWidthDefault) ,(AlignDefault,ColWidthDefault)] (TableHead ("",[],[]) [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 2) [] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Name"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Mass",Space,Str "(10^24kg)"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Diameter",Space,Str "(km)"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Density",Space,Str "(kg/m^3)"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Gravity",Space,Str "(m/s^2)"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Length",Space,Str "of",Space,Str "day",Space,Str "(hours)"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Distance",Space,Str "from",Space,Str "Sun",Space,Str "(10^6km)"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Mean",Space,Str "temperature",Space,Str "(C)"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Number",Space,Str "of",Space,Str "moons"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Notes"]]]]) [(TableBody ("",[],[]) (RowHeadColumns 3) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 4) (ColSpan 2) [Plain [Str "Terrestrial",Space,Str "planets"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Mercury"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "0.330"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "4,879"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "5427"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "3.7"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "4222.6"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "57.9"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "167"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "0"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Closest",Space,Str "to",Space,Str "the",Space,Str "Sun"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Venus"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "4.87"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "12,104"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "5243"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "8.9"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "2802.0"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "108.2"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "464"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "0"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) []] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Earth"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "5.97"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "12,756"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "5514"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "9.8"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "24.0"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "149.6"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "15"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Our",Space,Str "world"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Mars"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "0.642"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "6,792"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "3933"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "3.7"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "24.7"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "227.9"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "-65"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "2"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "The",Space,Str "red",Space,Str "planet"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 4) (ColSpan 1) [Plain [Str "Jovian",Space,Str "planets"]] ,Cell ("",[],[]) AlignDefault (RowSpan 2) (ColSpan 1) [Plain [Str "Gas",Space,Str "giants"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Jupiter"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1898"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "142,984"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1326"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "23.1"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "9.9"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "778.6"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "-110"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "67"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "The",Space,Str "largest",Space,Str "planet"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Saturn"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "568"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "120,536"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "687"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "9.0"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "10.7"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1433.5"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "-140"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "62"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) []] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 2) (ColSpan 1) [Plain [Str "Ice",Space,Str "giants"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Uranus"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "86.8"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "51,118"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1271"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "8.7"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "17.2"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "2872.5"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "-195"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "27"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) []] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Neptune"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "102"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "49,528"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1638"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "11.0"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "16.1"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "4495.1"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "-200"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "14"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) []] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 2) [Plain [Str "Dwarf",Space,Str "planets"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Pluto"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "0.0146"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "2,370"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "2095"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "0.7"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "153.3"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "5906.4"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "-225"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "5"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Declassified",Space,Str "as",Space,Str "a",Space,Str "planet",Space,Str "in",Space,Str "2006."]]]])] (TableFoot ("",[],[]) [])] pandoc-3.1.3/test/tables/students.html40000644000000000000000000000211107346545000016222 0ustar0000000000000000

                List of Students

                Student ID Name
                Computer Science
                3741255 Jones, Martha
                4077830 Pierce, Benjamin
                5151701 Kirk, James
                Russian Literature
                3971244 Nim, Victor
                Astrophysics
                4100332 Petrov, Alexandra
                4100332 Toyota, Hiroko
                pandoc-3.1.3/test/tables/students.html50000644000000000000000000000247107346545000016234 0ustar0000000000000000

                List of Students

                Student ID Name
                Computer Science
                3741255 Jones, Martha
                4077830 Pierce, Benjamin
                5151701 Kirk, James
                Russian Literature
                3971244 Nim, Victor
                Astrophysics
                4100332 Petrov, Alexandra
                4100332 Toyota, Hiroko
                pandoc-3.1.3/test/tables/students.jats_archiving0000644000000000000000000000237707346545000020203 0ustar0000000000000000

                List of Students

                Student ID Name
                Computer Science
                3741255 Jones, Martha
                4077830 Pierce, Benjamin
                5151701 Kirk, James
                Russian Literature
                3971244 Nim, Victor
                Astrophysics
                4100332 Petrov, Alexandra
                4100332 Toyota, Hiroko
                pandoc-3.1.3/test/tables/students.latex0000644000000000000000000000171607346545000016321 0ustar0000000000000000\begin{longtable}[]{@{} >{\raggedright\arraybackslash}p{(\columnwidth - 2\tabcolsep) * \real{0.5000}} >{\raggedright\arraybackslash}p{(\columnwidth - 2\tabcolsep) * \real{0.5000}}@{}} \caption{List of Students}\label{students}\tabularnewline \toprule\noalign{} \begin{minipage}[b]{\linewidth}\centering Student ID \end{minipage} & \begin{minipage}[b]{\linewidth}\centering Name \end{minipage} \\ \midrule\noalign{} \endfirsthead \toprule\noalign{} \begin{minipage}[b]{\linewidth}\centering Student ID \end{minipage} & \begin{minipage}[b]{\linewidth}\centering Name \end{minipage} \\ \midrule\noalign{} \endhead \bottomrule\noalign{} \endlastfoot \multicolumn{2}{@{}l@{}}{% Computer Science} \\ 3741255 & Jones, Martha \\ 4077830 & Pierce, Benjamin \\ 5151701 & Kirk, James \\ \multicolumn{2}{@{}l@{}}{% Russian Literature} \\ 3971244 & Nim, Victor \\ \multicolumn{2}{@{}l@{}}{% Astrophysics} \\ 4100332 & Petrov, Alexandra \\ 4100332 & Toyota, Hiroko \\ \end{longtable} pandoc-3.1.3/test/tables/students.mediawiki0000644000000000000000000000150307346545000017141 0ustar0000000000000000{| id="students" class="wikitable" source="mdn" |+ List of Students |- ! style="text-align: center;"| Student ID ! style="text-align: center;"| Name |- ! colspan="2" style="text-align: left;"| Computer Science |- | style="text-align: left;"| 3741255 | style="text-align: left;"| Jones, Martha |- | style="text-align: left;"| 4077830 | style="text-align: left;"| Pierce, Benjamin |- | style="text-align: left;"| 5151701 | style="text-align: left;"| Kirk, James |- ! colspan="2" style="text-align: left;"| Russian Literature |- | style="text-align: left;"| 3971244 | style="text-align: left;"| Nim, Victor |- ! colspan="2" style="text-align: left;"| Astrophysics |- | style="text-align: left;"| 4100332 | style="text-align: left;"| Petrov, Alexandra |- | style="text-align: left;"| 4100332 | style="text-align: left;"| Toyota, Hiroko |} pandoc-3.1.3/test/tables/students.native0000644000000000000000000000421107346545000016463 0ustar0000000000000000[Table ("students",[],[("source","mdn")]) (Caption Nothing [Para [Str "List",Space,Str "of",Space,Str "Students"]]) [(AlignLeft,ColWidth 0.5) ,(AlignLeft,ColWidth 0.5)] (TableHead ("",[],[]) [Row ("",[],[]) [Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1) [Plain [Str "Student",Space,Str "ID"]] ,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1) [Plain [Str "Name"]]]]) [(TableBody ("",["souvereign-states"],[]) (RowHeadColumns 0) [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 2) [Plain [Str "Computer",Space,Str "Science"]]]] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "3741255"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Jones,",Space,Str "Martha"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "4077830"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Pierce,",Space,Str "Benjamin"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "5151701"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Kirk,",Space,Str "James"]]]]) ,(TableBody ("",[],[]) (RowHeadColumns 0) [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 2) [Plain [Str "Russian",Space,Str "Literature"]]]] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "3971244"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Nim,",Space,Str "Victor"]]]]) ,(TableBody ("",[],[]) (RowHeadColumns 0) [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 2) [Plain [Str "Astrophysics"]]]] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "4100332"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Petrov,",Space,Str "Alexandra"]]] ,Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "4100332"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Toyota,",Space,Str "Hiroko"]]]])] (TableFoot ("",[],[]) [])] pandoc-3.1.3/test/test-pandoc.hs0000644000000000000000000001135407346545000014713 0ustar0000000000000000{-# OPTIONS_GHC -Wall #-} module Main where import System.Environment (getArgs, getExecutablePath) import qualified Control.Exception as E import Text.Pandoc.App (convertWithOpts, handleOptInfo, defaultOpts, options, parseOptionsFromArgs) import Text.Pandoc.Error (handleError) import Text.Pandoc.Scripting (noEngine) import GHC.IO.Encoding import Test.Tasty import qualified Tests.Command import qualified Tests.Old import qualified Tests.Readers.Creole import qualified Tests.Readers.Docx import qualified Tests.Readers.DokuWiki import qualified Tests.Readers.EPUB import qualified Tests.Readers.FB2 import qualified Tests.Readers.HTML import qualified Tests.Readers.JATS import qualified Tests.Readers.Jira import qualified Tests.Readers.LaTeX import qualified Tests.Readers.Markdown import qualified Tests.Readers.Muse import qualified Tests.Readers.ODT import qualified Tests.Readers.Org import qualified Tests.Readers.RST import qualified Tests.Readers.RTF import qualified Tests.Readers.Txt2Tags import qualified Tests.Readers.Man import qualified Tests.Shared import qualified Tests.Writers.AsciiDoc import qualified Tests.Writers.ConTeXt import qualified Tests.Writers.DocBook import qualified Tests.Writers.Docx import qualified Tests.Writers.FB2 import qualified Tests.Writers.HTML import qualified Tests.Writers.JATS import qualified Tests.Writers.Jira import qualified Tests.Writers.LaTeX import qualified Tests.Writers.Markdown import qualified Tests.Writers.Ms import qualified Tests.Writers.Muse import qualified Tests.Writers.Native import qualified Tests.Writers.Org import qualified Tests.Writers.Plain import qualified Tests.Writers.Powerpoint import qualified Tests.Writers.RST import qualified Tests.Writers.AnnotatedTable import qualified Tests.Writers.TEI import qualified Tests.Writers.Markua import Text.Pandoc.Shared (inDirectory) tests :: FilePath -> TestTree tests pandocPath = testGroup "pandoc tests" [ Tests.Command.tests , testGroup "Old" (Tests.Old.tests pandocPath) , testGroup "Shared" Tests.Shared.tests , testGroup "Writers" [ testGroup "Native" Tests.Writers.Native.tests , testGroup "ConTeXt" Tests.Writers.ConTeXt.tests , testGroup "LaTeX" Tests.Writers.LaTeX.tests , testGroup "HTML" Tests.Writers.HTML.tests , testGroup "JATS" Tests.Writers.JATS.tests , testGroup "Jira" Tests.Writers.Jira.tests , testGroup "Docbook" Tests.Writers.DocBook.tests , testGroup "Markdown" Tests.Writers.Markdown.tests , testGroup "Org" Tests.Writers.Org.tests , testGroup "Plain" Tests.Writers.Plain.tests , testGroup "AsciiDoc" Tests.Writers.AsciiDoc.tests , testGroup "Docx" Tests.Writers.Docx.tests , testGroup "RST" Tests.Writers.RST.tests , testGroup "TEI" Tests.Writers.TEI.tests , testGroup "markua" Tests.Writers.Markua.tests , testGroup "Muse" Tests.Writers.Muse.tests , testGroup "FB2" Tests.Writers.FB2.tests , testGroup "PowerPoint" Tests.Writers.Powerpoint.tests , testGroup "Ms" Tests.Writers.Ms.tests , testGroup "AnnotatedTable" Tests.Writers.AnnotatedTable.tests ] , testGroup "Readers" [ testGroup "LaTeX" Tests.Readers.LaTeX.tests , testGroup "Markdown" Tests.Readers.Markdown.tests , testGroup "HTML" Tests.Readers.HTML.tests , testGroup "JATS" Tests.Readers.JATS.tests , testGroup "Jira" Tests.Readers.Jira.tests , testGroup "Org" Tests.Readers.Org.tests , testGroup "RST" Tests.Readers.RST.tests , testGroup "RTF" Tests.Readers.RTF.tests , testGroup "Docx" Tests.Readers.Docx.tests , testGroup "ODT" Tests.Readers.ODT.tests , testGroup "Txt2Tags" Tests.Readers.Txt2Tags.tests , testGroup "EPUB" Tests.Readers.EPUB.tests , testGroup "Muse" Tests.Readers.Muse.tests , testGroup "Creole" Tests.Readers.Creole.tests , testGroup "Man" Tests.Readers.Man.tests , testGroup "FB2" Tests.Readers.FB2.tests , testGroup "DokuWiki" Tests.Readers.DokuWiki.tests ] ] main :: IO () main = do setLocaleEncoding utf8 args <- getArgs case args of "--emulate":args' -> -- emulate pandoc executable E.catch (do res <- parseOptionsFromArgs options defaultOpts "pandoc" args' case res of Left e -> handleOptInfo noEngine e Right opts -> convertWithOpts noEngine opts) (handleError . Left) _ -> inDirectory "test" $ do fp <- getExecutablePath -- putStrLn $ "Using pandoc executable at " ++ fp defaultMain $ tests fp pandoc-3.1.3/test/testsuite.native0000644000000000000000000014330507346545000015401 0ustar0000000000000000Pandoc Meta { unMeta = fromList [ ( "author" , MetaList [ MetaInlines [ Str "John" , Space , Str "MacFarlane" ] , MetaInlines [ Str "Anonymous" ] ] ) , ( "date" , MetaInlines [ Str "July" , Space , Str "17," , Space , Str "2006" ] ) , ( "title" , MetaInlines [ Str "Pandoc" , Space , Str "Test" , Space , Str "Suite" ] ) ] } [ Para [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "set" , Space , Str "of" , Space , Str "tests" , Space , Str "for" , Space , Str "pandoc." , Space , Str "Most" , Space , Str "of" , Space , Str "them" , Space , Str "are" , Space , Str "adapted" , Space , Str "from" , SoftBreak , Str "John" , Space , Str "Gruber\8217s" , Space , Str "markdown" , Space , Str "test" , Space , Str "suite." ] , HorizontalRule , Header 1 ( "headers" , [] , [] ) [ Str "Headers" ] , Header 2 ( "level-2-with-an-embedded-link" , [] , [] ) [ Str "Level" , Space , Str "2" , Space , Str "with" , Space , Str "an" , Space , Link ( "" , [] , [] ) [ Str "embedded" , Space , Str "link" ] ( "/url" , "" ) ] , Header 3 ( "level-3-with-emphasis" , [] , [] ) [ Str "Level" , Space , Str "3" , Space , Str "with" , Space , Emph [ Str "emphasis" ] ] , Header 4 ( "level-4" , [] , [] ) [ Str "Level" , Space , Str "4" ] , Header 5 ( "level-5" , [] , [] ) [ Str "Level" , Space , Str "5" ] , Header 1 ( "level-1" , [] , [] ) [ Str "Level" , Space , Str "1" ] , Header 2 ( "level-2-with-emphasis" , [] , [] ) [ Str "Level" , Space , Str "2" , Space , Str "with" , Space , Emph [ Str "emphasis" ] ] , Header 3 ( "level-3" , [] , [] ) [ Str "Level" , Space , Str "3" ] , Para [ Str "with" , Space , Str "no" , Space , Str "blank" , Space , Str "line" ] , Header 2 ( "level-2" , [] , [] ) [ Str "Level" , Space , Str "2" ] , Para [ Str "with" , Space , Str "no" , Space , Str "blank" , Space , Str "line" ] , HorizontalRule , Header 1 ( "paragraphs" , [] , [] ) [ Str "Paragraphs" ] , Para [ Str "Here\8217s" , Space , Str "a" , Space , Str "regular" , Space , Str "paragraph." ] , Para [ Str "In" , Space , Str "Markdown" , Space , Str "1.0.0" , Space , Str "and" , Space , Str "earlier." , Space , Str "Version" , SoftBreak , Str "8." , Space , Str "This" , Space , Str "line" , Space , Str "turns" , Space , Str "into" , Space , Str "a" , Space , Str "list" , Space , Str "item." , SoftBreak , Str "Because" , Space , Str "a" , Space , Str "hard-wrapped" , Space , Str "line" , Space , Str "in" , Space , Str "the" , SoftBreak , Str "middle" , Space , Str "of" , Space , Str "a" , Space , Str "paragraph" , Space , Str "looked" , Space , Str "like" , Space , Str "a" , SoftBreak , Str "list" , Space , Str "item." ] , Para [ Str "Here\8217s" , Space , Str "one" , Space , Str "with" , Space , Str "a" , Space , Str "bullet." , SoftBreak , Str "*" , Space , Str "criminey." ] , Para [ Str "There" , Space , Str "should" , Space , Str "be" , Space , Str "a" , Space , Str "hard" , Space , Str "line" , Space , Str "break" , LineBreak , Str "here." ] , HorizontalRule , Header 1 ( "block-quotes" , [] , [] ) [ Str "Block" , Space , Str "Quotes" ] , Para [ Str "E-mail" , Space , Str "style:" ] , BlockQuote [ Para [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "block" , Space , Str "quote." , SoftBreak , Str "It" , Space , Str "is" , Space , Str "pretty" , Space , Str "short." ] ] , BlockQuote [ Para [ Str "Code" , Space , Str "in" , Space , Str "a" , Space , Str "block" , Space , Str "quote:" ] , CodeBlock ( "" , [] , [] ) "sub status {\n print \"working\";\n}" , Para [ Str "A" , Space , Str "list:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Plain [ Str "item" , Space , Str "one" ] ] , [ Plain [ Str "item" , Space , Str "two" ] ] ] , Para [ Str "Nested" , Space , Str "block" , Space , Str "quotes:" ] , BlockQuote [ Para [ Str "nested" ] ] , BlockQuote [ Para [ Str "nested" ] ] ] , Para [ Str "This" , Space , Str "should" , Space , Str "not" , Space , Str "be" , Space , Str "a" , Space , Str "block" , Space , Str "quote:" , Space , Str "2" , SoftBreak , Str ">" , Space , Str "1." ] , Para [ Str "And" , Space , Str "a" , Space , Str "following" , Space , Str "paragraph." ] , HorizontalRule , Header 1 ( "code-blocks" , [] , [] ) [ Str "Code" , Space , Str "Blocks" ] , Para [ Str "Code:" ] , CodeBlock ( "" , [] , [] ) "---- (should be four hyphens)\n\nsub status {\n print \"working\";\n}\n\nthis code block is indented by one tab" , Para [ Str "And:" ] , CodeBlock ( "" , [] , [] ) " this code block is indented by two tabs\n\nThese should not be escaped: \\$ \\\\ \\> \\[ \\{" , HorizontalRule , Header 1 ( "lists" , [] , [] ) [ Str "Lists" ] , Header 2 ( "unordered" , [] , [] ) [ Str "Unordered" ] , Para [ Str "Asterisks" , Space , Str "tight:" ] , BulletList [ [ Plain [ Str "asterisk" , Space , Str "1" ] ] , [ Plain [ Str "asterisk" , Space , Str "2" ] ] , [ Plain [ Str "asterisk" , Space , Str "3" ] ] ] , Para [ Str "Asterisks" , Space , Str "loose:" ] , BulletList [ [ Para [ Str "asterisk" , Space , Str "1" ] ] , [ Para [ Str "asterisk" , Space , Str "2" ] ] , [ Para [ Str "asterisk" , Space , Str "3" ] ] ] , Para [ Str "Pluses" , Space , Str "tight:" ] , BulletList [ [ Plain [ Str "Plus" , Space , Str "1" ] ] , [ Plain [ Str "Plus" , Space , Str "2" ] ] , [ Plain [ Str "Plus" , Space , Str "3" ] ] ] , Para [ Str "Pluses" , Space , Str "loose:" ] , BulletList [ [ Para [ Str "Plus" , Space , Str "1" ] ] , [ Para [ Str "Plus" , Space , Str "2" ] ] , [ Para [ Str "Plus" , Space , Str "3" ] ] ] , Para [ Str "Minuses" , Space , Str "tight:" ] , BulletList [ [ Plain [ Str "Minus" , Space , Str "1" ] ] , [ Plain [ Str "Minus" , Space , Str "2" ] ] , [ Plain [ Str "Minus" , Space , Str "3" ] ] ] , Para [ Str "Minuses" , Space , Str "loose:" ] , BulletList [ [ Para [ Str "Minus" , Space , Str "1" ] ] , [ Para [ Str "Minus" , Space , Str "2" ] ] , [ Para [ Str "Minus" , Space , Str "3" ] ] ] , Header 2 ( "ordered" , [] , [] ) [ Str "Ordered" ] , Para [ Str "Tight:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Plain [ Str "First" ] ] , [ Plain [ Str "Second" ] ] , [ Plain [ Str "Third" ] ] ] , Para [ Str "and:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Plain [ Str "One" ] ] , [ Plain [ Str "Two" ] ] , [ Plain [ Str "Three" ] ] ] , Para [ Str "Loose" , Space , Str "using" , Space , Str "tabs:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Para [ Str "First" ] ] , [ Para [ Str "Second" ] ] , [ Para [ Str "Third" ] ] ] , Para [ Str "and" , Space , Str "using" , Space , Str "spaces:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Para [ Str "One" ] ] , [ Para [ Str "Two" ] ] , [ Para [ Str "Three" ] ] ] , Para [ Str "Multiple" , Space , Str "paragraphs:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Para [ Str "Item" , Space , Str "1," , Space , Str "graf" , Space , Str "one." ] , Para [ Str "Item" , Space , Str "1." , Space , Str "graf" , Space , Str "two." , Space , Str "The" , Space , Str "quick" , Space , Str "brown" , Space , Str "fox" , Space , Str "jumped" , Space , Str "over" , Space , Str "the" , Space , Str "lazy" , Space , Str "dog\8217s" , SoftBreak , Str "back." ] ] , [ Para [ Str "Item" , Space , Str "2." ] ] , [ Para [ Str "Item" , Space , Str "3." ] ] ] , Header 2 ( "nested" , [] , [] ) [ Str "Nested" ] , BulletList [ [ Plain [ Str "Tab" ] , BulletList [ [ Plain [ Str "Tab" ] , BulletList [ [ Plain [ Str "Tab" ] ] ] ] ] ] ] , Para [ Str "Here\8217s" , Space , Str "another:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Plain [ Str "First" ] ] , [ Plain [ Str "Second:" ] , BulletList [ [ Plain [ Str "Fee" ] ] , [ Plain [ Str "Fie" ] ] , [ Plain [ Str "Foe" ] ] ] ] , [ Plain [ Str "Third" ] ] ] , Para [ Str "Same" , Space , Str "thing" , Space , Str "but" , Space , Str "with" , Space , Str "paragraphs:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Para [ Str "First" ] ] , [ Para [ Str "Second:" ] , BulletList [ [ Plain [ Str "Fee" ] ] , [ Plain [ Str "Fie" ] ] , [ Plain [ Str "Foe" ] ] ] ] , [ Para [ Str "Third" ] ] ] , Header 2 ( "tabs-and-spaces" , [] , [] ) [ Str "Tabs" , Space , Str "and" , Space , Str "spaces" ] , BulletList [ [ Para [ Str "this" , Space , Str "is" , Space , Str "a" , Space , Str "list" , Space , Str "item" , SoftBreak , Str "indented" , Space , Str "with" , Space , Str "tabs" ] ] , [ Para [ Str "this" , Space , Str "is" , Space , Str "a" , Space , Str "list" , Space , Str "item" , SoftBreak , Str "indented" , Space , Str "with" , Space , Str "spaces" ] , BulletList [ [ Para [ Str "this" , Space , Str "is" , Space , Str "an" , Space , Str "example" , Space , Str "list" , Space , Str "item" , SoftBreak , Str "indented" , Space , Str "with" , Space , Str "tabs" ] ] , [ Para [ Str "this" , Space , Str "is" , Space , Str "an" , Space , Str "example" , Space , Str "list" , Space , Str "item" , SoftBreak , Str "indented" , Space , Str "with" , Space , Str "spaces" ] ] ] ] ] , Header 2 ( "fancy-list-markers" , [] , [] ) [ Str "Fancy" , Space , Str "list" , Space , Str "markers" ] , OrderedList ( 2 , Decimal , TwoParens ) [ [ Para [ Str "begins" , Space , Str "with" , Space , Str "2" ] ] , [ Para [ Str "and" , Space , Str "now" , Space , Str "3" ] , Para [ Str "with" , Space , Str "a" , Space , Str "continuation" ] , OrderedList ( 4 , LowerRoman , Period ) [ [ Plain [ Str "sublist" , Space , Str "with" , Space , Str "roman" , Space , Str "numerals," , SoftBreak , Str "starting" , Space , Str "with" , Space , Str "4" ] ] , [ Plain [ Str "more" , Space , Str "items" ] , OrderedList ( 1 , UpperAlpha , TwoParens ) [ [ Plain [ Str "a" , Space , Str "subsublist" ] ] , [ Plain [ Str "a" , Space , Str "subsublist" ] ] ] ] ] ] ] , Para [ Str "Nesting:" ] , OrderedList ( 1 , UpperAlpha , Period ) [ [ Plain [ Str "Upper" , Space , Str "Alpha" ] , OrderedList ( 1 , UpperRoman , Period ) [ [ Plain [ Str "Upper" , Space , Str "Roman." ] , OrderedList ( 6 , Decimal , TwoParens ) [ [ Plain [ Str "Decimal" , Space , Str "start" , Space , Str "with" , Space , Str "6" ] , OrderedList ( 3 , LowerAlpha , OneParen ) [ [ Plain [ Str "Lower" , Space , Str "alpha" , Space , Str "with" , Space , Str "paren" ] ] ] ] ] ] ] ] ] , Para [ Str "Autonumbering:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Autonumber." ] ] , [ Plain [ Str "More." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Nested." ] ] ] ] ] , Para [ Str "Should" , Space , Str "not" , Space , Str "be" , Space , Str "a" , Space , Str "list" , Space , Str "item:" ] , Para [ Str "M.A.\160\&2007" ] , Para [ Str "B." , Space , Str "Williams" ] , HorizontalRule , Header 1 ( "definition-lists" , [] , [] ) [ Str "Definition" , Space , Str "Lists" ] , Para [ Str "Tight" , Space , Str "using" , Space , Str "spaces:" ] , DefinitionList [ ( [ Str "apple" ] , [ [ Plain [ Str "red" , Space , Str "fruit" ] ] ] ) , ( [ Str "orange" ] , [ [ Plain [ Str "orange" , Space , Str "fruit" ] ] ] ) , ( [ Str "banana" ] , [ [ Plain [ Str "yellow" , Space , Str "fruit" ] ] ] ) ] , Para [ Str "Tight" , Space , Str "using" , Space , Str "tabs:" ] , DefinitionList [ ( [ Str "apple" ] , [ [ Plain [ Str "red" , Space , Str "fruit" ] ] ] ) , ( [ Str "orange" ] , [ [ Plain [ Str "orange" , Space , Str "fruit" ] ] ] ) , ( [ Str "banana" ] , [ [ Plain [ Str "yellow" , Space , Str "fruit" ] ] ] ) ] , Para [ Str "Loose:" ] , DefinitionList [ ( [ Str "apple" ] , [ [ Para [ Str "red" , Space , Str "fruit" ] ] ] ) , ( [ Str "orange" ] , [ [ Para [ Str "orange" , Space , Str "fruit" ] ] ] ) , ( [ Str "banana" ] , [ [ Para [ Str "yellow" , Space , Str "fruit" ] ] ] ) ] , Para [ Str "Multiple" , Space , Str "blocks" , Space , Str "with" , Space , Str "italics:" ] , DefinitionList [ ( [ Emph [ Str "apple" ] ] , [ [ Para [ Str "red" , Space , Str "fruit" ] , Para [ Str "contains" , Space , Str "seeds," , SoftBreak , Str "crisp," , Space , Str "pleasant" , Space , Str "to" , Space , Str "taste" ] ] ] ) , ( [ Emph [ Str "orange" ] ] , [ [ Para [ Str "orange" , Space , Str "fruit" ] , CodeBlock ( "" , [] , [] ) "{ orange code block }" , BlockQuote [ Para [ Str "orange" , Space , Str "block" , Space , Str "quote" ] ] ] ] ) ] , Para [ Str "Multiple" , Space , Str "definitions," , Space , Str "tight:" ] , DefinitionList [ ( [ Str "apple" ] , [ [ Plain [ Str "red" , Space , Str "fruit" ] ] , [ Plain [ Str "computer" ] ] ] ) , ( [ Str "orange" ] , [ [ Plain [ Str "orange" , Space , Str "fruit" ] ] , [ Plain [ Str "bank" ] ] ] ) ] , Para [ Str "Multiple" , Space , Str "definitions," , Space , Str "loose:" ] , DefinitionList [ ( [ Str "apple" ] , [ [ Para [ Str "red" , Space , Str "fruit" ] ] , [ Para [ Str "computer" ] ] ] ) , ( [ Str "orange" ] , [ [ Para [ Str "orange" , Space , Str "fruit" ] ] , [ Para [ Str "bank" ] ] ] ) ] , Para [ Str "Blank" , Space , Str "line" , Space , Str "after" , Space , Str "term," , Space , Str "indented" , Space , Str "marker," , Space , Str "alternate" , Space , Str "markers:" ] , DefinitionList [ ( [ Str "apple" ] , [ [ Para [ Str "red" , Space , Str "fruit" ] ] , [ Para [ Str "computer" ] ] ] ) , ( [ Str "orange" ] , [ [ Para [ Str "orange" , Space , Str "fruit" ] , OrderedList ( 1 , Decimal , Period ) [ [ Plain [ Str "sublist" ] ] , [ Plain [ Str "sublist" ] ] ] ] ] ) ] , Header 1 ( "html-blocks" , [] , [] ) [ Str "HTML" , Space , Str "Blocks" ] , Para [ Str "Simple" , Space , Str "block" , Space , Str "on" , Space , Str "one" , Space , Str "line:" ] , Div ( "" , [] , [] ) [ Plain [ Str "foo" ] ] , Para [ Str "And" , Space , Str "nested" , Space , Str "without" , Space , Str "indentation:" ] , Div ( "" , [] , [] ) [ Div ( "" , [] , [] ) [ Div ( "" , [] , [] ) [ Para [ Str "foo" ] ] ] , Div ( "" , [] , [] ) [ Plain [ Str "bar" ] ] ] , Para [ Str "Interpreted" , Space , Str "markdown" , Space , Str "in" , Space , Str "a" , Space , Str "table:" ] , RawBlock (Format "html") "" , RawBlock (Format "html") "" , RawBlock (Format "html") "" , RawBlock (Format "html") "" , RawBlock (Format "html") "" , RawBlock (Format "html") "
                " , Plain [ Str "This" , Space , Str "is" , Space , Emph [ Str "emphasized" ] ] , RawBlock (Format "html") "" , Plain [ Str "And" , Space , Str "this" , Space , Str "is" , Space , Strong [ Str "strong" ] ] , RawBlock (Format "html") "
                " , RawBlock (Format "html") "" , Para [ Str "Here\8217s" , Space , Str "a" , Space , Str "simple" , Space , Str "block:" ] , Div ( "" , [] , [] ) [ Para [ Str "foo" ] ] , Para [ Str "This" , Space , Str "should" , Space , Str "be" , Space , Str "a" , Space , Str "code" , Space , Str "block," , Space , Str "though:" ] , CodeBlock ( "" , [] , [] ) "
                \n foo\n
                " , Para [ Str "As" , Space , Str "should" , Space , Str "this:" ] , CodeBlock ( "" , [] , [] ) "
                foo
                " , Para [ Str "Now," , Space , Str "nested:" ] , Div ( "" , [] , [] ) [ Div ( "" , [] , [] ) [ Div ( "" , [] , [] ) [ Plain [ Str "foo" ] ] ] ] , Para [ Str "This" , Space , Str "should" , Space , Str "just" , Space , Str "be" , Space , Str "an" , Space , Str "HTML" , Space , Str "comment:" ] , RawBlock (Format "html") "" , Para [ Str "Multiline:" ] , RawBlock (Format "html") "" , RawBlock (Format "html") "" , Para [ Str "Code" , Space , Str "block:" ] , CodeBlock ( "" , [] , [] ) "" , Para [ Str "Just" , Space , Str "plain" , Space , Str "comment," , Space , Str "with" , Space , Str "trailing" , Space , Str "spaces" , Space , Str "on" , Space , Str "the" , Space , Str "line:" ] , RawBlock (Format "html") "" , Para [ Str "Code:" ] , CodeBlock ( "" , [] , [] ) "
                " , Para [ Str "Hr\8217s:" ] , RawBlock (Format "html") "
                " , RawBlock (Format "html") "
                " , RawBlock (Format "html") "
                " , RawBlock (Format "html") "
                " , RawBlock (Format "html") "
                " , RawBlock (Format "html") "
                " , RawBlock (Format "html") "
                " , RawBlock (Format "html") "
                " , RawBlock (Format "html") "
                " , HorizontalRule , Header 1 ( "inline-markup" , [] , [] ) [ Str "Inline" , Space , Str "Markup" ] , Para [ Str "This" , Space , Str "is" , Space , Emph [ Str "emphasized" ] , Str "," , Space , Str "and" , Space , Str "so" , Space , Emph [ Str "is" , Space , Str "this" ] , Str "." ] , Para [ Str "This" , Space , Str "is" , Space , Strong [ Str "strong" ] , Str "," , Space , Str "and" , Space , Str "so" , Space , Strong [ Str "is" , Space , Str "this" ] , Str "." ] , Para [ Str "An" , Space , Emph [ Link ( "" , [] , [] ) [ Str "emphasized" , Space , Str "link" ] ( "/url" , "" ) ] , Str "." ] , Para [ Strong [ Emph [ Str "This" , Space , Str "is" , Space , Str "strong" , Space , Str "and" , Space , Str "em." ] ] ] , Para [ Str "So" , Space , Str "is" , Space , Strong [ Emph [ Str "this" ] ] , Space , Str "word." ] , Para [ Strong [ Emph [ Str "This" , Space , Str "is" , Space , Str "strong" , Space , Str "and" , Space , Str "em." ] ] ] , Para [ Str "So" , Space , Str "is" , Space , Strong [ Emph [ Str "this" ] ] , Space , Str "word." ] , Para [ Str "This" , Space , Str "is" , Space , Str "code:" , Space , Code ( "" , [] , [] ) ">" , Str "," , Space , Code ( "" , [] , [] ) "$" , Str "," , Space , Code ( "" , [] , [] ) "\\" , Str "," , Space , Code ( "" , [] , [] ) "\\$" , Str "," , Space , Code ( "" , [] , [] ) "" , Str "." ] , Para [ Strikeout [ Str "This" , Space , Str "is" , Space , Emph [ Str "strikeout" ] , Str "." ] ] , Para [ Str "Superscripts:" , Space , Str "a" , Superscript [ Str "bc" ] , Str "d" , Space , Str "a" , Superscript [ Emph [ Str "hello" ] ] , Space , Str "a" , Superscript [ Str "hello\160there" ] , Str "." ] , Para [ Str "Subscripts:" , Space , Str "H" , Subscript [ Str "2" ] , Str "O," , Space , Str "H" , Subscript [ Str "23" ] , Str "O," , Space , Str "H" , Subscript [ Str "many\160of\160them" ] , Str "O." ] , Para [ Str "These" , Space , Str "should" , Space , Str "not" , Space , Str "be" , Space , Str "superscripts" , Space , Str "or" , Space , Str "subscripts," , SoftBreak , Str "because" , Space , Str "of" , Space , Str "the" , Space , Str "unescaped" , Space , Str "spaces:" , Space , Str "a^b" , Space , Str "c^d," , Space , Str "a~b" , Space , Str "c~d." ] , HorizontalRule , Header 1 ( "smart-quotes-ellipses-dashes" , [] , [] ) [ Str "Smart" , Space , Str "quotes," , Space , Str "ellipses," , Space , Str "dashes" ] , Para [ Quoted DoubleQuote [ Str "Hello," ] , Space , Str "said" , Space , Str "the" , Space , Str "spider." , Space , Quoted DoubleQuote [ Quoted SingleQuote [ Str "Shelob" ] , Space , Str "is" , Space , Str "my" , Space , Str "name." ] ] , Para [ Quoted SingleQuote [ Str "A" ] , Str "," , Space , Quoted SingleQuote [ Str "B" ] , Str "," , Space , Str "and" , Space , Quoted SingleQuote [ Str "C" ] , Space , Str "are" , Space , Str "letters." ] , Para [ Quoted SingleQuote [ Str "Oak," ] , Space , Quoted SingleQuote [ Str "elm," ] , Space , Str "and" , Space , Quoted SingleQuote [ Str "beech" ] , Space , Str "are" , Space , Str "names" , Space , Str "of" , Space , Str "trees." , SoftBreak , Str "So" , Space , Str "is" , Space , Quoted SingleQuote [ Str "pine." ] ] , Para [ Quoted SingleQuote [ Str "He" , Space , Str "said," , Space , Quoted DoubleQuote [ Str "I" , Space , Str "want" , Space , Str "to" , Space , Str "go." ] ] , Space , Str "Were" , Space , Str "you" , Space , Str "alive" , Space , Str "in" , Space , Str "the" , SoftBreak , Str "70\8217s?" ] , Para [ Str "Here" , Space , Str "is" , Space , Str "some" , Space , Str "quoted" , Space , Quoted SingleQuote [ Code ( "" , [] , [] ) "code" ] , Space , Str "and" , Space , Str "a" , Space , Quoted DoubleQuote [ Link ( "" , [] , [] ) [ Str "quoted" , Space , Str "link" ] ( "http://example.com/?foo=1&bar=2" , "" ) ] , Str "." ] , Para [ Str "Some" , Space , Str "dashes:" , Space , Str "one\8212two" , Space , Str "\8212" , Space , Str "three\8212four" , Space , Str "\8212" , Space , Str "five." ] , Para [ Str "Dashes" , Space , Str "between" , Space , Str "numbers:" , Space , Str "5\8211\&7," , Space , Str "255\8211\&66," , Space , Str "1987\8211\&1999." ] , Para [ Str "Ellipses\8230and\8230and\8230." ] , HorizontalRule , Header 1 ( "latex" , [] , [] ) [ Str "LaTeX" ] , BulletList [ [ Plain [ RawInline (Format "tex") "\\cite[22-23]{smith.1899}" ] ] , [ Plain [ Math InlineMath "2+2=4" ] ] , [ Plain [ Math InlineMath "x \\in y" ] ] , [ Plain [ Math InlineMath "\\alpha \\wedge \\omega" ] ] , [ Plain [ Math InlineMath "223" ] ] , [ Plain [ Math InlineMath "p" , Str "-Tree" ] ] , [ Plain [ Str "Here\8217s" , Space , Str "some" , Space , Str "display" , Space , Str "math:" , SoftBreak , Math DisplayMath "\\frac{d}{dx}f(x)=\\lim_{h\\to 0}\\frac{f(x+h)-f(x)}{h}" ] ] , [ Plain [ Str "Here\8217s" , Space , Str "one" , Space , Str "that" , Space , Str "has" , Space , Str "a" , Space , Str "line" , Space , Str "break" , Space , Str "in" , Space , Str "it:" , Space , Math InlineMath "\\alpha + \\omega \\times x^2" , Str "." ] ] ] , Para [ Str "These" , Space , Str "shouldn\8217t" , Space , Str "be" , Space , Str "math:" ] , BulletList [ [ Plain [ Str "To" , Space , Str "get" , Space , Str "the" , Space , Str "famous" , Space , Str "equation," , Space , Str "write" , Space , Code ( "" , [] , [] ) "$e = mc^2$" , Str "." ] ] , [ Plain [ Str "$22,000" , Space , Str "is" , Space , Str "a" , Space , Emph [ Str "lot" ] , Space , Str "of" , Space , Str "money." , Space , Str "So" , Space , Str "is" , Space , Str "$34,000." , SoftBreak , Str "(It" , Space , Str "worked" , Space , Str "if" , Space , Quoted DoubleQuote [ Str "lot" ] , Space , Str "is" , Space , Str "emphasized.)" ] ] , [ Plain [ Str "Shoes" , Space , Str "($20)" , Space , Str "and" , Space , Str "socks" , Space , Str "($5)." ] ] , [ Plain [ Str "Escaped" , Space , Code ( "" , [] , [] ) "$" , Str ":" , Space , Str "$73" , Space , Emph [ Str "this" , Space , Str "should" , Space , Str "be" , Space , Str "emphasized" ] , Space , Str "23$." ] ] ] , Para [ Str "Here\8217s" , Space , Str "a" , Space , Str "LaTeX" , Space , Str "table:" ] , RawBlock (Format "tex") "\\begin{tabular}{|l|l|}\\hline\nAnimal & Number \\\\ \\hline\nDog & 2 \\\\\nCat & 1 \\\\ \\hline\n\\end{tabular}" , HorizontalRule , Header 1 ( "special-characters" , [] , [] ) [ Str "Special" , Space , Str "Characters" ] , Para [ Str "Here" , Space , Str "is" , Space , Str "some" , Space , Str "unicode:" ] , BulletList [ [ Plain [ Str "I" , Space , Str "hat:" , Space , Str "\206" ] ] , [ Plain [ Str "o" , Space , Str "umlaut:" , Space , Str "\246" ] ] , [ Plain [ Str "section:" , Space , Str "\167" ] ] , [ Plain [ Str "set" , Space , Str "membership:" , Space , Str "\8712" ] ] , [ Plain [ Str "copyright:" , Space , Str "\169" ] ] ] , Para [ Str "AT&T" , Space , Str "has" , Space , Str "an" , Space , Str "ampersand" , Space , Str "in" , Space , Str "their" , Space , Str "name." ] , Para [ Str "AT&T" , Space , Str "is" , Space , Str "another" , Space , Str "way" , Space , Str "to" , Space , Str "write" , Space , Str "it." ] , Para [ Str "This" , Space , Str "&" , Space , Str "that." ] , Para [ Str "4" , Space , Str "<" , Space , Str "5." ] , Para [ Str "6" , Space , Str ">" , Space , Str "5." ] , Para [ Str "Backslash:" , Space , Str "\\" ] , Para [ Str "Backtick:" , Space , Str "`" ] , Para [ Str "Asterisk:" , Space , Str "*" ] , Para [ Str "Underscore:" , Space , Str "_" ] , Para [ Str "Left" , Space , Str "brace:" , Space , Str "{" ] , Para [ Str "Right" , Space , Str "brace:" , Space , Str "}" ] , Para [ Str "Left" , Space , Str "bracket:" , Space , Str "[" ] , Para [ Str "Right" , Space , Str "bracket:" , Space , Str "]" ] , Para [ Str "Left" , Space , Str "paren:" , Space , Str "(" ] , Para [ Str "Right" , Space , Str "paren:" , Space , Str ")" ] , Para [ Str "Greater-than:" , Space , Str ">" ] , Para [ Str "Hash:" , Space , Str "#" ] , Para [ Str "Period:" , Space , Str "." ] , Para [ Str "Bang:" , Space , Str "!" ] , Para [ Str "Plus:" , Space , Str "+" ] , Para [ Str "Minus:" , Space , Str "-" ] , HorizontalRule , Header 1 ( "links" , [] , [] ) [ Str "Links" ] , Header 2 ( "explicit" , [] , [] ) [ Str "Explicit" ] , Para [ Str "Just" , Space , Str "a" , Space , Link ( "" , [] , [] ) [ Str "URL" ] ( "/url/" , "" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , Space , Str "and" , Space , Str "title" ] ( "/url/" , "title" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , Space , Str "and" , Space , Str "title" ] ( "/url/" , "title preceded by two spaces" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , Space , Str "and" , Space , Str "title" ] ( "/url/" , "title preceded by a tab" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , Space , Str "and" , Space , Str "title" ] ( "/url/" , "title with \"quotes\" in it" ) ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , Space , Str "and" , Space , Str "title" ] ( "/url/" , "title with single quotes" ) ] , Para [ Link ( "" , [] , [] ) [ Str "with_underscore" ] ( "/url/with_underscore" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "Email" , Space , Str "link" ] ( "mailto:nobody@nowhere.net" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "Empty" ] ( "" , "" ) , Str "." ] , Header 2 ( "reference" , [] , [] ) [ Str "Reference" ] , Para [ Str "Foo" , Space , Link ( "" , [] , [] ) [ Str "bar" ] ( "/url/" , "" ) , Str "." ] , Para [ Str "With" , Space , Link ( "" , [] , [] ) [ Str "embedded" , Space , Str "[brackets]" ] ( "/url/" , "" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "b" ] ( "/url/" , "" ) , Space , Str "by" , Space , Str "itself" , Space , Str "should" , Space , Str "be" , Space , Str "a" , Space , Str "link." ] , Para [ Str "Indented" , Space , Link ( "" , [] , [] ) [ Str "once" ] ( "/url" , "" ) , Str "." ] , Para [ Str "Indented" , Space , Link ( "" , [] , [] ) [ Str "twice" ] ( "/url" , "" ) , Str "." ] , Para [ Str "Indented" , Space , Link ( "" , [] , [] ) [ Str "thrice" ] ( "/url" , "" ) , Str "." ] , Para [ Str "This" , Space , Str "should" , Space , Str "[not][]" , Space , Str "be" , Space , Str "a" , Space , Str "link." ] , CodeBlock ( "" , [] , [] ) "[not]: /url" , Para [ Str "Foo" , Space , Link ( "" , [] , [] ) [ Str "bar" ] ( "/url/" , "Title with \"quotes\" inside" ) , Str "." ] , Para [ Str "Foo" , Space , Link ( "" , [] , [] ) [ Str "biz" ] ( "/url/" , "Title with \"quote\" inside" ) , Str "." ] , Header 2 ( "with-ampersands" , [] , [] ) [ Str "With" , Space , Str "ampersands" ] , Para [ Str "Here\8217s" , Space , Str "a" , Space , Link ( "" , [] , [] ) [ Str "link" , Space , Str "with" , Space , Str "an" , Space , Str "ampersand" , Space , Str "in" , Space , Str "the" , Space , Str "URL" ] ( "http://example.com/?foo=1&bar=2" , "" ) , Str "." ] , Para [ Str "Here\8217s" , Space , Str "a" , Space , Str "link" , Space , Str "with" , Space , Str "an" , Space , Str "amersand" , Space , Str "in" , Space , Str "the" , Space , Str "link" , Space , Str "text:" , Space , Link ( "" , [] , [] ) [ Str "AT&T" ] ( "http://att.com/" , "AT&T" ) , Str "." ] , Para [ Str "Here\8217s" , Space , Str "an" , Space , Link ( "" , [] , [] ) [ Str "inline" , Space , Str "link" ] ( "/script?foo=1&bar=2" , "" ) , Str "." ] , Para [ Str "Here\8217s" , Space , Str "an" , Space , Link ( "" , [] , [] ) [ Str "inline" , Space , Str "link" , Space , Str "in" , Space , Str "pointy" , Space , Str "braces" ] ( "/script?foo=1&bar=2" , "" ) , Str "." ] , Header 2 ( "autolinks" , [] , [] ) [ Str "Autolinks" ] , Para [ Str "With" , Space , Str "an" , Space , Str "ampersand:" , Space , Link ( "" , [ "uri" ] , [] ) [ Str "http://example.com/?foo=1&bar=2" ] ( "http://example.com/?foo=1&bar=2" , "" ) ] , BulletList [ [ Plain [ Str "In" , Space , Str "a" , Space , Str "list?" ] ] , [ Plain [ Link ( "" , [ "uri" ] , [] ) [ Str "http://example.com/" ] ( "http://example.com/" , "" ) ] ] , [ Plain [ Str "It" , Space , Str "should." ] ] ] , Para [ Str "An" , Space , Str "e-mail" , Space , Str "address:" , Space , Link ( "" , [ "email" ] , [] ) [ Str "nobody@nowhere.net" ] ( "mailto:nobody@nowhere.net" , "" ) ] , BlockQuote [ Para [ Str "Blockquoted:" , Space , Link ( "" , [ "uri" ] , [] ) [ Str "http://example.com/" ] ( "http://example.com/" , "" ) ] ] , Para [ Str "Auto-links" , Space , Str "should" , Space , Str "not" , Space , Str "occur" , Space , Str "here:" , Space , Code ( "" , [] , [] ) "" ] , CodeBlock ( "" , [] , [] ) "or here: " , HorizontalRule , Header 1 ( "images" , [] , [] ) [ Str "Images" ] , Para [ Str "From" , Space , Quoted DoubleQuote [ Str "Voyage" , Space , Str "dans" , Space , Str "la" , Space , Str "Lune" ] , Space , Str "by" , Space , Str "Georges" , Space , Str "Melies" , Space , Str "(1902):" ] , Figure ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "lalune" ] ]) [ Plain [ Image ( "" , [] , [] ) [ Str "lalune" ] ( "lalune.jpg" , "Voyage dans la Lune" ) ] ] , Para [ Str "Here" , Space , Str "is" , Space , Str "a" , Space , Str "movie" , Space , Image ( "" , [] , [] ) [ Str "movie" ] ( "movie.jpg" , "" ) , Space , Str "icon." ] , HorizontalRule , Header 1 ( "footnotes" , [] , [] ) [ Str "Footnotes" ] , Para [ Str "Here" , Space , Str "is" , Space , Str "a" , Space , Str "footnote" , Space , Str "reference," , Note [ Para [ Str "Here" , Space , Str "is" , Space , Str "the" , Space , Str "footnote." , Space , Str "It" , Space , Str "can" , Space , Str "go" , Space , Str "anywhere" , Space , Str "after" , Space , Str "the" , Space , Str "footnote" , SoftBreak , Str "reference." , Space , Str "It" , Space , Str "need" , Space , Str "not" , Space , Str "be" , Space , Str "placed" , Space , Str "at" , Space , Str "the" , Space , Str "end" , Space , Str "of" , Space , Str "the" , Space , Str "document." ] ] , Space , Str "and" , Space , Str "another." , Note [ Para [ Str "Here\8217s" , Space , Str "the" , Space , Str "long" , Space , Str "note." , Space , Str "This" , Space , Str "one" , Space , Str "contains" , Space , Str "multiple" , SoftBreak , Str "blocks." ] , Para [ Str "Subsequent" , Space , Str "blocks" , Space , Str "are" , Space , Str "indented" , Space , Str "to" , Space , Str "show" , Space , Str "that" , Space , Str "they" , Space , Str "belong" , Space , Str "to" , Space , Str "the" , SoftBreak , Str "footnote" , Space , Str "(as" , Space , Str "with" , Space , Str "list" , Space , Str "items)." ] , CodeBlock ( "" , [] , [] ) " { }" , Para [ Str "If" , Space , Str "you" , Space , Str "want," , Space , Str "you" , Space , Str "can" , Space , Str "indent" , Space , Str "every" , Space , Str "line," , Space , Str "but" , Space , Str "you" , Space , Str "can" , Space , Str "also" , Space , Str "be" , SoftBreak , Str "lazy" , Space , Str "and" , Space , Str "just" , Space , Str "indent" , Space , Str "the" , Space , Str "first" , Space , Str "line" , Space , Str "of" , Space , Str "each" , Space , Str "block." ] ] , SoftBreak , Str "This" , Space , Str "should" , Space , Emph [ Str "not" ] , Space , Str "be" , Space , Str "a" , Space , Str "footnote" , Space , Str "reference," , Space , Str "because" , Space , Str "it" , SoftBreak , Str "contains" , Space , Str "a" , Space , Str "space.[^my" , Space , Str "note]" , Space , Str "Here" , Space , Str "is" , Space , Str "an" , Space , Str "inline" , Space , Str "note." , Note [ Para [ Str "This" , SoftBreak , Str "is" , Space , Emph [ Str "easier" ] , Space , Str "to" , Space , Str "type." , Space , Str "Inline" , Space , Str "notes" , Space , Str "may" , Space , Str "contain" , SoftBreak , Link ( "" , [] , [] ) [ Str "links" ] ( "http://google.com" , "" ) , Space , Str "and" , Space , Code ( "" , [] , [] ) "]" , Space , Str "verbatim" , Space , Str "characters," , SoftBreak , Str "as" , Space , Str "well" , Space , Str "as" , Space , Str "[bracketed" , Space , Str "text]." ] ] ] , BlockQuote [ Para [ Str "Notes" , Space , Str "can" , Space , Str "go" , Space , Str "in" , Space , Str "quotes." , Note [ Para [ Str "In" , Space , Str "quote." ] ] ] ] , OrderedList ( 1 , Decimal , Period ) [ [ Plain [ Str "And" , Space , Str "in" , Space , Str "list" , Space , Str "items." , Note [ Para [ Str "In" , Space , Str "list." ] ] ] ] ] , Para [ Str "This" , Space , Str "paragraph" , Space , Str "should" , Space , Str "not" , Space , Str "be" , Space , Str "part" , Space , Str "of" , Space , Str "the" , Space , Str "note," , Space , Str "as" , Space , Str "it" , Space , Str "is" , Space , Str "not" , Space , Str "indented." ] ] pandoc-3.1.3/test/testsuite.txt0000644000000000000000000002176707346545000014741 0ustar0000000000000000% Pandoc Test Suite % John MacFarlane; Anonymous % July 17, 2006 This is a set of tests for pandoc. Most of them are adapted from John Gruber's markdown test suite. ----- # Headers ## Level 2 with an [embedded link](/url) ### Level 3 with *emphasis* #### Level 4 ##### Level 5 Level 1 ======= Level 2 with *emphasis* ----------------------- ### Level 3 with no blank line Level 2 ------- with no blank line ---------- # Paragraphs Here's a regular paragraph. In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item. Here's one with a bullet. * criminey. There should be a hard line break here. --- # Block Quotes E-mail style: > This is a block quote. > It is pretty short. > Code in a block quote: > > sub status { > print "working"; > } > > A list: > > 1. item one > 2. item two > > Nested block quotes: > > > nested > >> nested > This should not be a block quote: 2 > 1. And a following paragraph. * * * * # Code Blocks Code: ---- (should be four hyphens) sub status { print "working"; } this code block is indented by one tab And: this code block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{ ___________ # Lists ## Unordered Asterisks tight: * asterisk 1 * asterisk 2 * asterisk 3 Asterisks loose: * asterisk 1 * asterisk 2 * asterisk 3 Pluses tight: + Plus 1 + Plus 2 + Plus 3 Pluses loose: + Plus 1 + Plus 2 + Plus 3 Minuses tight: - Minus 1 - Minus 2 - Minus 3 Minuses loose: - Minus 1 - Minus 2 - Minus 3 ## Ordered Tight: 1. First 2. Second 3. Third and: 1. One 2. Two 3. Three Loose using tabs: 1. First 2. Second 3. Third and using spaces: 1. One 2. Two 3. Three Multiple paragraphs: 1. Item 1, graf one. Item 1. graf two. The quick brown fox jumped over the lazy dog's back. 2. Item 2. 3. Item 3. ## Nested * Tab * Tab * Tab Here's another: 1. First 2. Second: * Fee * Fie * Foe 3. Third Same thing but with paragraphs: 1. First 2. Second: * Fee * Fie * Foe 3. Third ## Tabs and spaces + this is a list item indented with tabs + this is a list item indented with spaces + this is an example list item indented with tabs + this is an example list item indented with spaces ## Fancy list markers (2) begins with 2 (3) and now 3 with a continuation iv. sublist with roman numerals, starting with 4 v. more items (A) a subsublist (B) a subsublist Nesting: A. Upper Alpha I. Upper Roman. (6) Decimal start with 6 c) Lower alpha with paren Autonumbering: #. Autonumber. #. More. #. Nested. Should not be a list item: M.A. 2007 B. Williams * * * * * # Definition Lists Tight using spaces: apple : red fruit orange : orange fruit banana : yellow fruit Tight using tabs: apple : red fruit orange : orange fruit banana : yellow fruit Loose: apple : red fruit orange : orange fruit banana : yellow fruit Multiple blocks with italics: *apple* : red fruit contains seeds, crisp, pleasant to taste *orange* : orange fruit { orange code block } > orange block quote Multiple definitions, tight: apple : red fruit : computer orange : orange fruit : bank Multiple definitions, loose: apple : red fruit : computer orange : orange fruit : bank Blank line after term, indented marker, alternate markers: apple ~ red fruit ~ computer orange ~ orange fruit 1. sublist 2. sublist # HTML Blocks Simple block on one line:
                foo
                And nested without indentation:
                foo
                bar
                Interpreted markdown in a table:
                This is *emphasized* And this is **strong**
                Here's a simple block:
                foo
                This should be a code block, though:
                foo
                As should this:
                foo
                Now, nested:
                foo
                This should just be an HTML comment: Multiline: Code block: Just plain comment, with trailing spaces on the line: Code:
                Hr's:








                ----- # Inline Markup This is *emphasized*, and so _is this_. This is **strong**, and so __is this__. An *[emphasized link](/url)*. ***This is strong and em.*** So is ***this*** word. ___This is strong and em.___ So is ___this___ word. This is code: `>`, `$`, `\`, `\$`, ``. ~~This is *strikeout*.~~ Superscripts: a^bc^d a^*hello*^ a^hello\ there^. Subscripts: H~2~O, H~23~O, H~many\ of\ them~O. These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d. ----- # Smart quotes, ellipses, dashes "Hello," said the spider. "'Shelob' is my name." 'A', 'B', and 'C' are letters. 'Oak,' 'elm,' and 'beech' are names of trees. So is 'pine.' 'He said, "I want to go."' Were you alive in the 70's? Here is some quoted '`code`' and a "[quoted link][1]". Some dashes: one---two --- three---four --- five. Dashes between numbers: 5--7, 255--66, 1987--1999. Ellipses...and...and.... ----- # LaTeX - \cite[22-23]{smith.1899} - $2+2=4$ - $x \in y$ - $\alpha \wedge \omega$ - $223$ - $p$-Tree - Here's some display math: $$\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$$ - Here's one that has a line break in it: $\alpha + \omega \times x^2$. These shouldn't be math: - To get the famous equation, write `$e = mc^2$`. - $22,000 is a *lot* of money. So is $34,000. (It worked if "lot" is emphasized.) - Shoes ($20) and socks ($5). - Escaped `$`: $73 *this should be emphasized* 23\$. Here's a LaTeX table: \begin{tabular}{|l|l|}\hline Animal & Number \\ \hline Dog & 2 \\ Cat & 1 \\ \hline \end{tabular} * * * * * # Special Characters Here is some unicode: - I hat: Î - o umlaut: ö - section: § - set membership: ∈ - copyright: © AT&T has an ampersand in their name. AT&T is another way to write it. This & that. 4 < 5. 6 > 5. Backslash: \\ Backtick: \` Asterisk: \* Underscore: \_ Left brace: \{ Right brace: \} Left bracket: \[ Right bracket: \] Left paren: \( Right paren: \) Greater-than: \> Hash: \# Period: \. Bang: \! Plus: \+ Minus: \- - - - - - - - - - - - - - # Links ## Explicit Just a [URL](/url/). [URL and title](/url/ "title"). [URL and title](/url/ "title preceded by two spaces"). [URL and title](/url/ "title preceded by a tab"). [URL and title](/url/ "title with "quotes" in it") [URL and title](/url/ 'title with single quotes') [with\_underscore](/url/with_underscore) [Email link](mailto:nobody@nowhere.net) [Empty](). ## Reference Foo [bar][a]. [a]: /url/ With [embedded [brackets]][b]. [b] by itself should be a link. Indented [once][]. Indented [twice][]. Indented [thrice][]. This should [not][] be a link. [once]: /url [twice]: /url [thrice]: /url [not]: /url [b]: /url/ Foo [bar][]. Foo [biz](/url/ "Title with "quote" inside"). [bar]: /url/ "Title with "quotes" inside" ## With ampersands Here's a [link with an ampersand in the URL][1]. Here's a link with an amersand in the link text: [AT&T][2]. Here's an [inline link](/script?foo=1&bar=2). Here's an [inline link in pointy braces](). [1]: http://example.com/?foo=1&bar=2 [2]: http://att.com/ "AT&T" ## Autolinks With an ampersand: * In a list? * * It should. An e-mail address: > Blockquoted: Auto-links should not occur here: `` or here: ---- # Images From "Voyage dans la Lune" by Georges Melies (1902): ![lalune][] [lalune]: lalune.jpg "Voyage dans la Lune" Here is a movie ![movie](movie.jpg) icon. ---- # Footnotes Here is a footnote reference,[^1] and another.[^longnote] This should *not* be a footnote reference, because it contains a space.[^my note] Here is an inline note.^[This is *easier* to type. Inline notes may contain [links](http://google.com) and `]` verbatim characters, as well as [bracketed text].] > Notes can go in quotes.^[In quote.] 1. And in list items.^[In list.] [^longnote]: Here's the long note. This one contains multiple blocks. Subsequent blocks are indented to show that they belong to the footnote (as with list items). { } If you want, you can indent every line, but you can also be lazy and just indent the first line of each block. This paragraph should not be part of the note, as it is not indented. [^1]: Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document. pandoc-3.1.3/test/textile-reader.native0000644000000000000000000007056407346545000016274 0ustar0000000000000000Pandoc Meta { unMeta = fromList [] } [ Para [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "set" , Space , Str "of" , Space , Str "tests" , Space , Str "for" , Space , Str "pandoc" , Space , Str "Textile" , Space , Str "Reader." , Space , Str "Part" , Space , Str "of" , Space , Str "it" , Space , Str "comes" , LineBreak , Str "from" , Space , Str "John" , Space , Str "Gruber\8217s" , Space , Str "markdown" , Space , Str "test" , Space , Str "suite." ] , HorizontalRule , Header 1 ( "headers" , [] , [] ) [ Str "Headers" ] , Header 2 ( "level-2-with-an-embedded-link" , [] , [] ) [ Str "Level" , Space , Str "2" , Space , Str "with" , Space , Str "an" , Space , Link ( "" , [] , [] ) [ Str "embedded" , Space , Str "link" ] ( "http://www.example.com" , "" ) ] , Header 3 ( "level-3-with-emphasis" , [] , [] ) [ Str "Level" , Space , Str "3" , Space , Str "with" , Space , Strong [ Str "emphasis" ] ] , Header 4 ( "level-4" , [] , [] ) [ Str "Level" , Space , Str "4" ] , Header 5 ( "level-5" , [] , [] ) [ Str "Level" , Space , Str "5" ] , Header 6 ( "level-6" , [] , [] ) [ Str "Level" , Space , Str "6" ] , Header 1 ( "paragraphs" , [] , [] ) [ Str "Paragraphs" ] , Para [ Str "Here\8217s" , Space , Str "a" , Space , Str "regular" , Space , Str "paragraph." ] , Para [ Str "Line" , Space , Str "breaks" , Space , Str "are" , Space , Str "preserved" , Space , Str "in" , Space , Str "textile," , Space , Str "so" , Space , Str "you" , Space , Str "can" , Space , Str "not" , Space , Str "wrap" , Space , Str "your" , Space , Str "very" , LineBreak , Str "long" , Space , Str "paragraph" , Space , Str "with" , Space , Str "your" , Space , Str "favourite" , Space , Str "text" , Space , Str "editor" , Space , Str "and" , Space , Str "have" , Space , Str "it" , Space , Str "rendered" , LineBreak , Str "with" , Space , Str "no" , Space , Str "break." ] , Para [ Str "Here\8217s" , Space , Str "one" , Space , Str "with" , Space , Str "a" , Space , Str "bullet." ] , BulletList [ [ Plain [ Str "criminey." ] ] ] , Para [ Str "There" , Space , Str "should" , Space , Str "be" , Space , Str "a" , Space , Str "paragraph" , Space , Str "break" , Space , Str "between" , Space , Str "here" ] , Para [ Str "and" , Space , Str "here." ] , Para [ Str "pandoc" , Space , Str "converts" , Space , Str "textile." ] , Header 1 ( "block-quotes" , [] , [] ) [ Str "Block" , Space , Str "Quotes" ] , BlockQuote [ Para [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "famous" , Space , Str "quote" , Space , Str "from" , Space , Str "somebody." , Space , Str "He" , Space , Str "had" , Space , Str "a" , Space , Str "lot" , Space , Str "of" , Space , Str "things" , Space , Str "to" , LineBreak , Str "say," , Space , Str "so" , Space , Str "the" , Space , Str "text" , Space , Str "is" , Space , Str "really" , Space , Str "really" , Space , Str "long" , Space , Str "and" , Space , Str "spans" , Space , Str "on" , Space , Str "multiple" , Space , Str "lines." ] ] , Para [ Str "And" , Space , Str "a" , Space , Str "following" , Space , Str "paragraph." ] , Header 1 ( "code-blocks" , [] , [] ) [ Str "Code" , Space , Str "Blocks" ] , Para [ Str "Code:" ] , CodeBlock ( "" , [] , [] ) " ---- (should be four hyphens)\n\n sub status {\n print \"working\";\n }\n\n this code block is indented by one tab" , Para [ Str "And:" ] , CodeBlock ( "" , [] , [] ) " this code block is indented by two tabs\n\n These should not be escaped: \\$ \\\\ \\> \\[ \\{" , CodeBlock ( "" , [] , [] ) "Code block with .bc\n continued\n @" , Str "," , Space , Code ( "" , [] , [] ) "@" , Str "." ] , Header 1 ( "notextile" , [] , [] ) [ Str "Notextile" ] , Para [ Str "A" , Space , Str "block" , Space , Str "of" , Space , Str "text" , Space , Str "can" , Space , Str "be" , Space , Str "protected" , Space , Str "with" , Space , Str "notextile" , Space , Str ":" ] , Para [ Str "\nNo *bold* and\n* no bullet\n" ] , Para [ Str "and" , Space , Str "inlines" , Space , Str "can" , Space , Str "be" , Space , Str "protected" , Space , Str "with" , Space , Str "double *equals (=)* markup." ] , Header 1 ( "lists" , [] , [] ) [ Str "Lists" ] , Header 2 ( "unordered" , [] , [] ) [ Str "Unordered" ] , Para [ Str "Asterisks" , Space , Str "tight:" ] , BulletList [ [ Plain [ Str "asterisk" , Space , Str "1" ] ] , [ Plain [ Str "asterisk" , Space , Str "2" ] ] , [ Plain [ Str "asterisk" , Space , Str "3" ] ] ] , Para [ Str "With" , Space , Str "line" , Space , Str "breaks:" ] , BulletList [ [ Plain [ Str "asterisk" , Space , Str "1" , LineBreak , Str "newline" ] ] , [ Plain [ Str "asterisk" , Space , Str "2" ] ] ] , Header 2 ( "ordered" , [] , [] ) [ Str "Ordered" ] , Para [ Str "Tight:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "First" ] ] , [ Plain [ Str "Second" ] ] , [ Plain [ Str "Third" ] ] ] , Header 2 ( "nested" , [] , [] ) [ Str "Nested" ] , BulletList [ [ Plain [ Str "ui" , Space , Str "1" ] , BulletList [ [ Plain [ Str "ui" , Space , Str "1.1" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "oi" , Space , Str "1.1.1" ] ] , [ Plain [ Str "oi" , Space , Str "1.1.2" ] ] ] ] , [ Plain [ Str "ui" , Space , Str "1.2" ] ] ] ] , [ Plain [ Str "ui" , Space , Str "2" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "oi" , Space , Str "2.1" ] , BulletList [ [ Plain [ Str "ui" , Space , Str "2.1.1" ] ] , [ Plain [ Str "ui" , Space , Str "2.1.2" ] ] ] ] ] ] ] , Header 2 ( "issue-1500" , [] , [] ) [ Str "Issue" , Space , Str "#1500" ] , BulletList [ [ Plain [ Str "one" ] ] , [ Plain [ Str "two" , LineBreak , Str "->" , Space , Str "and" , Space , Str "more" ] ] ] , Header 2 ( "issue-1513" , [] , [] ) [ Str "Issue" , Space , Str "#1513" ] , Para [ Str "List:" ] , BulletList [ [ Plain [ Str "one" ] ] , [ Plain [ Str "two" ] ] ] , Header 2 ( "definition-list" , [] , [] ) [ Str "Definition" , Space , Str "List" ] , DefinitionList [ ( [ Str "coffee" ] , [ [ Plain [ Str "Hot" , Space , Str "and" , Space , Str "black" ] ] ] ) , ( [ Str "tea" ] , [ [ Plain [ Str "Also" , Space , Str "hot," , Space , Str "but" , Space , Str "a" , Space , Str "little" , Space , Str "less" , Space , Str "black" ] ] ] ) , ( [ Str "milk" ] , [ [ Para [ Str "Nourishing" , Space , Str "beverage" , Space , Str "for" , Space , Str "baby" , Space , Str "cows." ] , Para [ Str "Cold" , Space , Str "drink" , Space , Str "that" , Space , Str "goes" , Space , Str "great" , Space , Str "with" , Space , Str "cookies." ] ] ] ) , ( [ Str "beer" ] , [ [ Plain [ Str "fresh" , Space , Str "and" , Space , Str "bitter" ] ] ] ) ] , Header 1 ( "inline-markup" , [] , [] ) [ Str "Inline" , Space , Str "Markup" ] , Para [ Str "This" , Space , Str "is" , Space , Emph [ Str "emphasized" ] , Str "," , Space , Str "and" , Space , Str "so" , Space , Emph [ Str "is" , Space , Str "this" ] , Str "." , LineBreak , Str "This" , Space , Str "is" , Space , Strong [ Str "strong" ] , Str "," , Space , Str "and" , Space , Str "so" , Space , Strong [ Str "is" , Space , Str "this" ] , Str "." , LineBreak , Str "This" , Space , Str "is" , Space , Underline [ Str "inserted" ] , Str "," , Space , Str "and" , Space , Str "this" , Space , Str "is" , Space , Strikeout [ Str "deleted" ] , Str "." , LineBreak , Str "Hyphenated-words-are-ok," , Space , Str "as" , Space , Str "well" , Space , Str "as" , Space , Str "strange_underscore_notation." , LineBreak , Str "A" , Space , Link ( "" , [] , [] ) [ Strong [ Str "strong" , Space , Str "link" ] ] ( "http://www.foobar.com" , "" ) , Str "." ] , Para [ Emph [ Strong [ Str "This" , Space , Str "is" , Space , Str "strong" , Space , Str "and" , Space , Str "em." ] ] , LineBreak , Str "So" , Space , Str "is" , Space , Strong [ Emph [ Str "this" ] ] , Space , Str "word" , Space , Str "and" , Space , Emph [ Strong [ Str "that" , Space , Str "one" ] ] , Str "." , LineBreak , Strikeout [ Str "This" , Space , Str "is" , Space , Str "strikeout" , Space , Str "and" , Space , Strong [ Str "strong" ] ] ] , Para [ Str "Superscripts:" , Space , Str "a" , Superscript [ Str "bc" ] , Str "d" , Space , Str "a" , Space , Superscript [ Strong [ Str "hello" ] ] , Space , Str "a" , Superscript [ Str "hello" , Space , Str "there" ] , Str "." , LineBreak , Str "Subscripts:" , Space , Subscript [ Str "here" ] , Space , Str "H" , Space , Subscript [ Str "2" ] , Str "O," , Space , Str "H" , Space , Subscript [ Str "23" ] , Str "O," , Space , Str "H" , Space , Subscript [ Str "many" , Space , Str "of" , Space , Str "them" ] , Str "O." ] , Para [ Str "Dashes" , Space , Str ":" , Space , Str "How" , Space , Str "cool" , Space , Str "\8212" , Space , Str "automatic" , Space , Str "dashes." ] , Para [ Str "Ellipses" , Space , Str ":" , Space , Str "He" , Space , Str "thought" , Space , Str "and" , Space , Str "thought" , Space , Str "\8230" , Space , Str "and" , Space , Str "then" , Space , Str "thought" , Space , Str "some" , Space , Str "more." ] , Para [ Str "Quotes" , Space , Str "and" , Space , Str "apostrophes" , Space , Str ":" , Space , Quoted DoubleQuote [ Str "I\8217d" , Space , Str "like" , Space , Str "to" , Space , Str "thank" , Space , Str "you" ] , Space , Str "for" , Space , Str "example." ] , Header 1 ( "links" , [] , [] ) [ Str "Links" ] , Header 2 ( "explicit" , [] , [] ) [ Str "Explicit" ] , Para [ Str "Just" , Space , Str "a" , Space , Link ( "" , [] , [] ) [ Str "url" ] ( "http://www.url.com" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "Email" , Space , Str "link" ] ( "mailto:nobody@nowhere.net" , "" ) ] , Para [ Quoted DoubleQuote [ Str "not" , Space , Str "a" , Space , Str "link" ] , Str ":" , Space , Str "foo" ] , Para [ Str "Automatic" , Space , Str "linking" , Space , Str "to" , Space , Link ( "" , [] , [] ) [ Str "http://www.example.com" ] ( "http://www.example.com" , "" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "Example" ] ( "http://www.example.com/" , "" ) , Str ":" , Space , Str "Example" , Space , Str "of" , Space , Str "a" , Space , Str "link" , Space , Str "followed" , Space , Str "by" , Space , Str "a" , Space , Str "colon." ] , Para [ Str "A" , Space , Str "link" , Link ( "" , [] , [] ) [ Str "with" , Space , Str "brackets" ] ( "http://www.example.com" , "" ) , Str "and" , Space , Str "no" , Space , Str "spaces." ] , Header 1 ( "tables" , [] , [] ) [ Str "Tables" ] , Para [ Str "Textile" , Space , Str "allows" , Space , Str "tables" , Space , Str "with" , Space , Str "and" , Space , Str "without" , Space , Str "headers" , Space , Str ":" ] , Header 2 ( "without-headers" , [] , [] ) [ Str "Without" , Space , Str "headers" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "name" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "age" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "sex" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "joan" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "24" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "f" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "archie" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "29" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "m" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "bella" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "45" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "f" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "and" , Space , Str "some" , Space , Str "text" , Space , Str "following" , Space , Str "\8230" ] , Header 2 ( "with-headers" , [] , [] ) [ Str "With" , Space , Str "headers" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "name" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "age" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "sex" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "joan" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "24" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "f" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "archie" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "29" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "m" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "bella" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "45" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "f" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Header 1 ( "images" , [] , [] ) [ Str "Images" ] , Para [ Str "Textile" , Space , Str "inline" , Space , Str "image" , Space , Str "syntax," , Space , Str "like" , LineBreak , Str "here" , Space , Image ( "" , [] , [] ) [ Str "this is the alt text" ] ( "this_is_an_image.png" , "this is the alt text" ) , LineBreak , Str "and" , Space , Str "here" , Space , Image ( "" , [] , [] ) [ Str "" ] ( "this_is_an_image.png" , "" ) , Str "." ] , Header 1 ( "attributes" , [] , [] ) [ Str "Attributes" ] , Header 2 ( "ident" , [ "bar" , "foo" ] , [ ( "style" , "color:red;" ) , ( "lang" , "en" ) ] ) [ Str "HTML" , Space , Str "and" , Space , Str "CSS" , Space , Str "attributes" , Space , Str "are" , Space , Str "parsed" , Space , Str "in" , Space , Str "headers." ] , Header 2 ( "centered" , [] , [ ( "style" , "text-align:center;" ) ] ) [ Str "Centered" ] , Header 2 ( "right" , [] , [ ( "style" , "text-align:right;" ) ] ) [ Str "Right" ] , Header 2 ( "justified" , [] , [ ( "lang" , "en" ) , ( "style" , "color:blue;text-align:justify;" ) ] ) [ Str "Justified" ] , Para [ Str "as" , Space , Str "well" , Space , Str "as" , Space , Strong [ Span ( "" , [ "foo" ] , [] ) [ Str "inline" , Space , Str "attributes" ] ] , Space , Str "of" , Space , Span ( "" , [] , [ ( "style" , "color:red;" ) ] ) [ Str "all" , Space , Str "kind" ] ] , Div ( "" , [] , [ ( "style" , "color:green;" ) ] ) [ Para [ Str "and" , Space , Str "paragraph" , Space , Str "attributes," , Space , Str "and" , Space , Str "table" , Space , Str "attributes." ] ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "name" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "age" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "sex" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "joan" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "24" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "f" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Emph [ Str "(class#id)" , Space , Str "emph" ] ] , Para [ Emph [ Str "(no" , Space , Str "class#id)" , Space , Str "emph" ] ] , Header 1 ( "entities" , [] , [] ) [ Str "Entities" ] , Para [ Str "*" , LineBreak , Str "&" ] , Header 1 ( "raw-html" , [] , [] ) [ Str "Raw" , Space , Str "HTML" ] , Para [ Str "However," , Space , RawInline (Format "html") "" , Space , Str "raw" , Space , Str "HTML" , Space , Str "inlines" , Space , RawInline (Format "html") "" , Space , Str "are" , Space , Str "accepted," , Space , Str "as" , Space , Str "well" , Space , Str "as" , Space , Str ":" ] , RawBlock (Format "html") "
                " , Para [ Str "any" , Space , Strong [ Str "Raw" , Space , Str "HTML" , Space , Str "Block" ] , Space , Str "with" , Space , Str "bold" ] , RawBlock (Format "html") "
                " , Para [ Str "Html" , Space , Str "blocks" , Space , Str "can" ] , RawBlock (Format "html") "
                " , Para [ Str "interrupt" , Space , Str "paragraphs" ] , RawBlock (Format "html") "
                " , Para [ Str "as" , Space , Str "well." ] , Para [ Str "Can" , Space , Str "you" , Space , Str "prove" , Space , Str "that" , Space , Str "2" , Space , Str "<" , Space , Str "3" , Space , Str "?" ] , Header 1 ( "acronyms-and-marks" , [] , [] ) [ Str "Acronyms" , Space , Str "and" , Space , Str "marks" ] , Para [ Str "PBS (Public Broadcasting System)" ] , Para [ Str "Hi\8482" ] , Para [ Str "Hi" , Space , Str "\8482" ] , Para [ Str "\174" , Space , Str "Hi\174" ] , Para [ Str "Hi\169\&2008" , Space , Str "\169" , Space , Str "2008" ] , Header 1 ( "footnotes" , [] , [] ) [ Str "Footnotes" ] , Para [ Str "A" , Space , Str "note." , Note [ Para [ Str "The" , Space , Str "note" , LineBreak , Str "is" , Space , Str "here!" ] ] , Space , Str "Another" , Space , Str "note" , Note [ Para [ Str "Other" , Space , Str "note." ] ] , Str "." ] , Header 1 ( "comment-blocks" , [] , [] ) [ Str "Comment" , Space , Str "blocks" ] , Para [ Str "not" , Space , Str "a" , Space , Str "comment." ] ] pandoc-3.1.3/test/textile-reader.textile0000644000000000000000000001025407346545000016452 0ustar0000000000000000This is a set of tests for pandoc Textile Reader. Part of it comes from John Gruber's markdown test suite. ----- h1. Headers h2. Level 2 with an "embedded link":http://www.example.com h3. Level 3 with *emphasis* h4. Level 4 h5. Level 5 h6. Level 6 h1. Paragraphs Here's a regular paragraph. Line breaks are preserved in textile, so you can not wrap your very long paragraph with your favourite text editor and have it rendered with no break. Here's one with a bullet. * criminey. There should be a paragraph break between here and here. pandoc converts textile. h1. Block Quotes bq. This is a famous quote from somebody. He had a lot of things to say, so the text is really really long and spans on multiple lines. And a following paragraph. h1. Code Blocks Code:
                    ---- (should be four hyphens)
                
                    sub status {
                        print "working";
                    }
                
                	this code block is indented by one tab
                
                And:
                		this code block is indented by two tabs
                
                    These should not be escaped:  \$ \\ \> \[ \{
                
                bc. Code block with .bc continued @@, @. h1. Notextile A block of text can be protected with notextile : No *bold* and * no bullet and inlines can be protected with ==double *equals (=)* markup==. h1. Lists h2. Unordered Asterisks tight: * asterisk 1 * asterisk 2 * asterisk 3 With line breaks: * asterisk 1 newline * asterisk 2 h2. Ordered Tight: # First # Second # Third h2. Nested * ui 1 ** ui 1.1 ### oi 1.1.1 ### oi 1.1.2 ** ui 1.2 * ui 2 ## oi 2.1 *** ui 2.1.1 *** ui 2.1.2 h2. Issue #1500 * one * two -> and more h2. Issue #1513 List: * one * two h2. Definition List - coffee := Hot and black - tea := Also hot, but a little less black - milk := Nourishing beverage for baby cows. Cold drink that goes great with cookies.=: - beer := fresh and bitter h1. Inline Markup This is _emphasized_, and so __is this__. This is *strong*, and so **is this**. This is +inserted+, and this is -deleted-. Hyphenated-words-are-ok, as well as strange_underscore_notation. A "*strong link*":http://www.foobar.com. _*This is strong and em.*_ So is *_this_* word and __**that one**__. -This is strikeout and *strong*- Superscripts: a[^bc^]d a ^*hello*^ a[^hello there^]. Subscripts: ~here~ H[ ~2~]O, H[ ~23~]O, H[ ~many of them~]O. Dashes : How cool -- automatic dashes. Ellipses : He thought and thought ... and then thought some more. Quotes and apostrophes : "I'd like to thank you" for example. h1. Links h2. Explicit Just a "url":http://www.url.com "Email link":mailto:nobody@nowhere.net "not a link": foo Automatic linking to "$":http://www.example.com. "Example":http://www.example.com/: Example of a link followed by a colon. A link["with brackets":http://www.example.com]and no spaces. h1. Tables Textile allows tables with and without headers : h2. Without headers | name | age | sex | | joan | 24 | f | | archie | 29 | m | | bella | 45 | f | and some text following ... h2. With headers |_. name |_. age |_. sex | | joan | 24 | f | | archie | 29 | m | | bella | 45 | f | h1. Images Textile inline image syntax, like here !this_is_an_image.png(this is the alt text)! and here !this_is_an_image.png!. h1. Attributes h2[en]{color:red}(foo bar #ident). HTML and CSS attributes are parsed in headers. h2=. Centered h2>. Right h2<>{color:blue}[en]. Justified as well as *(foo)inline attributes* of %{color:red}all kind% p{color:green}. and paragraph attributes, and table attributes. table{foo:bar}. | name | age | sex | | joan | 24 | f | _(class#id) emph_ _(no class#id) emph_ h1. Entities * & h1. Raw HTML However, raw HTML inlines are accepted, as well as :
                any *Raw HTML Block* with bold
                Html blocks can
                interrupt paragraphs
                as well. Can you prove that 2 < 3 ? h1. Acronyms and marks PBS(Public Broadcasting System) Hi(tm) Hi (TM) (r) Hi(r) Hi(c)2008 (C) 2008 h1. Footnotes A note.[1] Another note[2]. fn1. The note is here! fn2^. Other note. h1. Comment blocks ###. my comment is here. not a comment. pandoc-3.1.3/test/tikiwiki-reader.native0000644000000000000000000005012507346545000016431 0ustar0000000000000000Pandoc Meta { unMeta = fromList [] } [ Header 1 ( "header" , [] , [] ) [ Str "header" ] , Header 2 ( "header-level-two" , [] , [] ) [ Str "header" , Space , Str "level" , Space , Str "two" ] , Header 3 ( "header-level-3" , [] , [] ) [ Str "header" , Space , Str "level" , Space , Str "3" ] , Header 4 ( "header-_level_-four" , [] , [] ) [ Str "header" , Space , Str "_level_" , Space , Str "four" ] , Header 5 ( "header-level-5" , [] , [] ) [ Str "header" , Space , Str "level" , Space , Str "5" ] , Header 6 ( "header-level-6" , [] , [] ) [ Str "header" , Space , Str "level" , Space , Str "6" ] , Para [ Str "!!!!!!!" , Space , Str "not" , Space , Str "a" , Space , Str "header" ] , Para [ Str "--++" , Space , Str "not" , Space , Str "a" , Space , Str "header" ] , Header 1 ( "emph-and-strong" , [] , [] ) [ Str "emph" , Space , Str "and" , Space , Str "strong" ] , Para [ Emph [ Str "emph" ] , Space , Strong [ Str "strong" ] ] , Para [ Emph [ Strong [ Str "strong" , Space , Str "and" , Space , Str "emph" , Space , Str "1" ] ] ] , Para [ Strong [ Emph [ Str "strong" , Space , Str "and" , Space , Str "emph" , Space , Str "2" ] ] ] , Para [ Strong [ Emph [ Str "emph" , Space , Str "inside" ] , Space , Str "strong" ] ] , Para [ Strong [ Str "strong" , Space , Str "with" , Space , Emph [ Str "emph" ] ] ] , Para [ Emph [ Strong [ Str "strong" , Space , Str "inside" ] , Space , Str "emph" ] ] , Header 1 ( "other-inlines" , [] , [] ) [ Str "other" , Space , Str "inlines" ] , Para [ Underline [ Str "underlined" , Space , Str "text" ] ] , Para [ Strikeout [ Str "strikeout" ] ] , Header 1 ( "horizontal-rule" , [] , [] ) [ Str "horizontal" , Space , Str "rule" ] , Para [ Str "top" ] , HorizontalRule , Para [ Str "bottom" ] , HorizontalRule , Header 1 ( "nop" , [] , [] ) [ Str "nop" ] , Para [ Str "__not emph__" ] , Header 1 ( "entities" , [] , [] ) [ Str "entities" ] , Para [ Str "hi" , Space , Str "&" , Space , Str "low" ] , Para [ Str "hi" , Space , Str "&" , Space , Str "low" ] , Para [ Str "G\246del" ] , Para [ Str "\777\2730" ] , Header 1 ( "linebreaks" , [] , [] ) [ Str "linebreaks" ] , Para [ Str "hi" , LineBreak , Str "there" ] , Para [ Str "hi" , LineBreak , Str "there" ] , Header 1 ( "inline-code" , [] , [] ) [ Str "inline" , Space , Str "code" ] , Para [ Code ( "" , [] , [] ) "*\8594*" , Space , Code ( "" , [] , [] ) "typed" , Space , Code ( "" , [] , [] ) ">>=" ] , Header 1 ( "code-blocks" , [] , [] ) [ Str "code" , Space , Str "blocks" ] , CodeBlock ( "" , [] , [] ) "\ncase xs of\n (_:_) -> reverse xs\n [] -> ['*']\n" , CodeBlock ( "" , [ "haskell" ] , [ ( "colors" , "haskell" ) , ( "ln" , "0" ) ] ) "\ncase xs of\n (_:_) -> reverse xs\n [] -> ['*']\n" , Header 1 ( "external-links" , [] , [] ) [ Str "external" , Space , Str "links" ] , Para [ Link ( "" , [] , [] ) [ Emph [ Str "Google" ] , Space , Str "search" , Space , Str "engine" ] ( "http://google.com" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "http://pandoc.org" ] ( "http://pandoc.org" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "http://google.com" ] ( "http://google.com" , "" ) , Space , Link ( "" , [] , [] ) [ Str "http://yahoo.com" ] ( "http://yahoo.com" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "email" , Space , Str "me" ] ( "mailto:info@example.org" , "" ) ] , Para [ Str "http://google.com" ] , Para [ Str "info@example.org" ] , Header 1 ( "lists" , [] , [] ) [ Str "lists" ] , BulletList [ [ Plain [ Str "Start" , Space , Str "each" , Space , Str "line" ] ] , [ Plain [ Str "with" , Space , Str "an" , Space , Str "asterisk" , Space , Str "(*)." ] , BulletList [ [ Plain [ Str "More" , Space , Str "asterisks" , Space , Str "gives" , Space , Str "deeper" ] , BulletList [ [ Plain [ Str "and" , Space , Str "deeper" , Space , Str "levels." ] ] ] ] ] ] , [ Plain [ Str "Line" , Space , Str "breaks" , LineBreak , Str "don't" , Space , Str "break" , Space , Str "levels." ] ] , [ Plain [ Str "Continuations" , Space , Str "are" , Space , Str "also" , Space , Str "possible" ] , BulletList [ [ Plain [ Str "and" , Space , Str "do" , Space , Str "not" , Space , Str "break" , Space , Str "the" , Space , Str "list" , Space , Str "flow" ] ] ] ] , [ Plain [ Str "Level" , Space , Str "one" ] ] ] , Para [ Str "Any" , Space , Str "other" , Space , Str "start" , Space , Str "ends" , Space , Str "the" , Space , Str "list." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Start" , Space , Str "each" , Space , Str "line" ] ] , [ Plain [ Str "with" , Space , Str "a" , Space , Str "number" , Space , Str "(1.)." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "More" , Space , Str "number" , Space , Str "signs" , Space , Str "gives" , Space , Str "deeper" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "and" , Space , Str "deeper" ] ] , [ Plain [ Str "levels." ] ] ] ] ] ] , [ Plain [ Str "Line" , Space , Str "breaks" , LineBreak , Str "don't" , Space , Str "break" , Space , Str "levels." ] ] , [ Plain [ Str "Blank" , Space , Str "lines" ] ] ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "end" , Space , Str "the" , Space , Str "list" , Space , Str "and" , Space , Str "start" , Space , Str "another." ] ] ] , Para [ Str "Any" , Space , Str "other" , Space , Str "start" , Space , Str "also" , Space , Str "ends" , Space , Str "the" , Space , Str "list." ] , DefinitionList [ ( [ Str "item" , Space , Str "1" ] , [ [ Plain [ Str "definition" , Space , Str "1" ] ] ] ) , ( [ Str "item" , Space , Str "2" ] , [ [ Plain [ Str "definition" , Space , Str "2-1" , Space , Str "definition" , Space , Str "2-2" ] ] ] ) , ( [ Str "item" , Space , Emph [ Str "3" ] ] , [ [ Plain [ Str "definition" , Space , Emph [ Str "3" ] ] ] ] ) ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "one" ] ] , [ Plain [ Str "two" ] , BulletList [ [ Plain [ Str "two" , Space , Str "point" , Space , Str "one" ] ] , [ Plain [ Str "two" , Space , Str "point" , Space , Str "two" ] ] ] ] , [ Plain [ Str "three" ] ] , [ Plain [ Str "four" ] ] , [ Plain [ Str "five" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "five" , Space , Str "sub" , Space , Str "1" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "five" , Space , Str "sub" , Space , Str "1" , Space , Str "sub" , Space , Str "1" ] ] ] ] , [ Plain [ Str "five" , Space , Str "sub" , Space , Str "2" ] ] ] ] ] , Header 1 ( "tables" , [] , [] ) [ Str "tables" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Orange" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Apple" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Bread" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Pie" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Butter" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Ice" , Space , Str "cream" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Orange" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Apple" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Bread" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Pie" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Strong [ Str "Butter" ] ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Ice" , Space , Str "cream" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Orange" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Apple" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Bread" , LineBreak , LineBreak , Str "and" , Space , Str "cheese" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Pie" , LineBreak , LineBreak , Strong [ Str "apple" ] , Space , Str "and" , Space , Emph [ Str "carrot" ] , Space ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Space , Str "Orange" , Space ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Space , Str "Apple" , Space ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Space , Str "more" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Space , Str "Bread" , Space ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Space , Str "Pie" , Space ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Space , Str "more" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Space , Str "Butter" , Space ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Space , Str "Ice" , Space , Str "cream" , Space ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Space , Str "and" , Space , Str "more" , Space ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] pandoc-3.1.3/test/tikiwiki-reader.tikiwiki0000644000000000000000000000364007346545000016767 0ustar0000000000000000! header !! header level two !!! header level 3 !!!! header _level_ four !!!!! header level 5 !!!!!! header level 6 !!!!!!! not a header --++ not a header ! emph and strong ''emph'' __strong__ ''__strong and emph 1__'' __''strong and emph 2''__ __''emph inside'' strong__ __strong with ''emph''__ ''__strong inside__ emph'' ! other inlines ===underlined text=== --strikeout-- ! horizontal rule top ---- bottom ---- ! nop ~np~__not emph__~/np~ ! entities hi & low hi & low Gödel ̉પ ! linebreaks hi%%%there hi%%% there ! inline code -+*→*+- -+typed+- -+>>=+- ! code blocks {CODE()} case xs of (_:_) -> reverse xs [] -> ['*'] {CODE} {CODE(colors="haskell" ln=0)} case xs of (_:_) -> reverse xs [] -> ['*'] {CODE} ! external links [http://google.com|''Google'' search engine] [http://pandoc.org] [http://google.com] [http://yahoo.com] [mailto:info@example.org|email me] http://google.com info@example.org ! lists * Start each line * with an asterisk (*). ** More asterisks gives deeper *** and deeper levels. * Line breaks%%%don't break levels. * Continuations + are also possible ** and do not break the list flow * Level one Any other start ends the list. # Start each line # with a number (1.). ## More number signs gives deeper ### and deeper ### levels. # Line breaks%%%don't break levels. # Blank lines # end the list and start another. Any other start also ends the list. ;item 1: definition 1 ;item 2: definition 2-1 + definition 2-2 ;item ''3'': definition ''3'' # one # two ** two point one ** two point two # three # four # five ## five sub 1 ### five sub 1 sub 1 ## five sub 2 ! tables ||Orange|Apple Bread|Pie Butter|Ice cream|| ||Orange|Apple Bread|Pie __Butter__|Ice cream|| ||Orange|Apple Bread%%%%%%and cheese|Pie%%%%%%__apple__ and ''carrot'' || || Orange | Apple | more Bread | Pie | more Butter | Ice cream | and more || pandoc-3.1.3/test/twiki-reader.native0000644000000000000000000005431307346545000015737 0ustar0000000000000000Pandoc Meta { unMeta = fromList [] } [ Header 1 ( "header" , [] , [] ) [ Str "header" ] , Header 2 ( "header-level-two" , [] , [] ) [ Str "header" , Space , Str "level" , Space , Str "two" ] , Header 3 ( "header-level-3" , [] , [] ) [ Str "header" , Space , Str "level" , Space , Str "3" ] , Header 4 ( "header-level-four" , [] , [] ) [ Str "header" , Space , Emph [ Str "level" ] , Space , Str "four" ] , Header 5 ( "header-level-5" , [] , [] ) [ Str "header" , Space , Str "level" , Space , Str "5" ] , Header 6 ( "header-level-6" , [] , [] ) [ Str "header" , Space , Str "level" , Space , Str "6" ] , Para [ Str "---+++++++" , Space , Str "not" , Space , Str "a" , Space , Str "header" ] , Para [ Str "--++" , Space , Str "not" , Space , Str "a" , Space , Str "header" ] , Header 1 ( "emph-and-strong" , [] , [] ) [ Str "emph" , Space , Str "and" , Space , Str "strong" ] , Para [ Emph [ Str "emph" ] , Space , Strong [ Str "strong" ] ] , Para [ Emph [ Strong [ Str "strong" , Space , Str "and" , Space , Str "emph" ] ] ] , Para [ Strong [ Emph [ Str "emph" , Space , Str "inside" ] , Space , Str "strong" ] ] , Para [ Strong [ Str "strong" , Space , Str "with" , Space , Emph [ Str "emph" ] ] ] , Para [ Emph [ Strong [ Str "strong" , Space , Str "inside" ] , Space , Str "emph" ] ] , Header 1 ( "horizontal-rule" , [] , [] ) [ Str "horizontal" , Space , Str "rule" ] , Para [ Str "top" ] , HorizontalRule , Para [ Str "bottom" ] , HorizontalRule , Header 1 ( "nop" , [] , [] ) [ Str "nop" ] , Para [ Str "_not" , Space , Str "emph_" ] , Header 1 ( "entities" , [] , [] ) [ Str "entities" ] , Para [ Str "hi" , Space , Str "&" , Space , Str "low" ] , Para [ Str "hi" , Space , Str "&" , Space , Str "low" ] , Para [ Str "G\246del" ] , Para [ Str "\777\2730" ] , Header 1 ( "comments" , [] , [] ) [ Str "comments" ] , Para [ Str "inline" , Space , Str "comment" ] , Para [ Str "between" , Space , Str "blocks" ] , Header 1 ( "linebreaks" , [] , [] ) [ Str "linebreaks" ] , Para [ Str "hi" , LineBreak , Str "there" ] , Para [ Str "hi" , LineBreak , Str "there" ] , Header 1 ( "inline-code" , [] , [] ) [ Str "inline" , Space , Str "code" ] , Para [ Code ( "" , [] , [] ) "*\8594*" , Space , Code ( "" , [] , [] ) "typed" , Space , Code ( "" , [ "haskell" ] , [] ) ">>=" ] , Header 1 ( "code-blocks" , [] , [] ) [ Str "code" , Space , Str "blocks" ] , CodeBlock ( "" , [] , [] ) "case xs of\n (_:_) -> reverse xs\n [] -> ['*']" , CodeBlock ( "" , [ "haskell" ] , [] ) "case xs of\n (_:_) -> reverse xs\n [] -> ['*']" , Header 1 ( "block-quotes" , [] , [] ) [ Str "block" , Space , Str "quotes" ] , Para [ Str "Regular" , Space , Str "paragraph" ] , BlockQuote [ Para [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "block" , Space , Str "quote." ] , Para [ Str "With" , Space , Str "two" , Space , Str "paragraphs." ] ] , Para [ Str "Nother" , Space , Str "paragraph." ] , Header 1 ( "external-links" , [] , [] ) [ Str "external" , Space , Str "links" ] , Para [ Link ( "" , [] , [] ) [ Emph [ Str "Google" ] , Space , Str "search" , Space , Str "engine" ] ( "http://google.com" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "http://pandoc.org" ] ( "http://pandoc.org" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "http://google.com" ] ( "http://google.com" , "" ) , Space , Link ( "" , [] , [] ) [ Str "http://yahoo.com" ] ( "http://yahoo.com" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "email" , Space , Str "me" ] ( "mailto:info@example.org" , "" ) ] , Para [ Str "http://google.com" ] , Para [ Str "http://google.com" ] , Para [ Str "http://google.com" ] , Para [ Str "info@example.org" ] , Para [ Str "info@example.org" ] , Para [ Str "info@example.org" ] , Header 1 ( "lists" , [] , [] ) [ Str "lists" ] , BulletList [ [ Plain [ Str "Start" , Space , Str "each" , Space , Str "line" ] ] , [ Plain [ Str "with" , Space , Str "an" , Space , Str "asterisk" , Space , Str "(*)." ] , BulletList [ [ Plain [ Str "More" , Space , Str "asterisks" , Space , Str "gives" , Space , Str "deeper" ] , BulletList [ [ Plain [ Str "and" , Space , Str "deeper" , Space , Str "levels." ] ] ] ] ] ] , [ Plain [ Str "Line" , Space , Str "breaks" , LineBreak , Str "don't" , Space , Str "break" , Space , Str "levels." ] ] , [ Plain [ Str "Continuations" , Space , Str "are" , Space , Str "also" , Space , Str "possible" ] , BulletList [ [ Plain [ Str "and" , Space , Str "do" , Space , Str "not" , Space , Str "break" , Space , Str "the" , Space , Str "list" , Space , Str "flow" ] ] ] ] , [ Plain [ Str "Level" , Space , Str "one" ] ] ] , Para [ Str "Any" , Space , Str "other" , Space , Str "start" , Space , Str "ends" , Space , Str "the" , Space , Str "list." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Start" , Space , Str "each" , Space , Str "line" ] ] , [ Plain [ Str "with" , Space , Str "a" , Space , Str "number" , Space , Str "(1.)." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "More" , Space , Str "number" , Space , Str "signs" , Space , Str "gives" , Space , Str "deeper" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "and" , Space , Str "deeper" ] ] , [ Plain [ Str "levels." ] ] ] ] ] ] , [ Plain [ Str "Line" , Space , Str "breaks" , LineBreak , Str "don't" , Space , Str "break" , Space , Str "levels." ] ] , [ Plain [ Str "Blank" , Space , Str "lines" ] ] ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "end" , Space , Str "the" , Space , Str "list" , Space , Str "and" , Space , Str "start" , Space , Str "another." ] ] ] , Para [ Str "Any" , Space , Str "other" , Space , Str "start" , Space , Str "also" , Space , Str "ends" , Space , Str "the" , Space , Str "list." ] , DefinitionList [ ( [ Str "item" , Space , Str "1" ] , [ [ Plain [ Str "definition" , Space , Str "1" ] ] ] ) , ( [ Str "item" , Space , Str "2" ] , [ [ Plain [ Str "definition" , Space , Str "2-1" , Space , Str "definition" , Space , Str "2-2" ] ] ] ) , ( [ Str "item" , Space , Emph [ Str "3" ] ] , [ [ Plain [ Str "definition" , Space , Emph [ Str "3" ] ] ] ] ) ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "one" ] ] , [ Plain [ Str "two" ] , BulletList [ [ Plain [ Str "two" , Space , Str "point" , Space , Str "one" ] ] , [ Plain [ Str "two" , Space , Str "point" , Space , Str "two" ] ] ] ] , [ Plain [ Str "three" ] , DefinitionList [ ( [ Str "three" , Space , Str "item" , Space , Str "one" ] , [ [ Plain [ Str "three" , Space , Str "def" , Space , Str "one" ] ] ] ) ] ] , [ Plain [ Str "four" ] , DefinitionList [ ( [ Str "four" , Space , Str "def" , Space , Str "one" ] , [ [ Plain [ Str "this" , Space , Str "is" , Space , Str "a" , Space , Str "continuation" ] ] ] ) ] ] , [ Plain [ Str "five" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "five" , Space , Str "sub" , Space , Str "1" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "five" , Space , Str "sub" , Space , Str "1" , Space , Str "sub" , Space , Str "1" ] ] ] ] , [ Plain [ Str "five" , Space , Str "sub" , Space , Str "2" ] ] ] ] ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "other" ] , OrderedList ( 1 , UpperRoman , DefaultDelim ) [ [ Plain [ Str "list" ] ] , [ Plain [ Str "styles" ] ] ] ] , [ Plain [ Str "are" ] , OrderedList ( 1 , LowerRoman , DefaultDelim ) [ [ Plain [ Str "also" ] ] , [ Plain [ Str "possible" ] ] ] ] , [ Plain [ Str "all" ] , OrderedList ( 1 , LowerAlpha , DefaultDelim ) [ [ Plain [ Str "the" ] ] , [ Plain [ Str "different" ] ] , [ Plain [ Str "styles" ] ] ] ] , [ Plain [ Str "are" ] , OrderedList ( 1 , UpperAlpha , DefaultDelim ) [ [ Plain [ Str "implemented" ] ] , [ Plain [ Str "and" ] ] , [ Plain [ Str "supported" ] ] ] ] ] , Header 1 ( "tables" , [] , [] ) [ Str "tables" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Orange" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Apple" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Bread" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Pie" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Butter" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Ice" , Space , Str "cream" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Orange" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Apple" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Bread" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Pie" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Strong [ Str "Butter" ] ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Ice" , Space , Str "cream" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignLeft , ColWidthDefault ) , ( AlignLeft , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Orange" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Apple" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Bread" , LineBreak , LineBreak , Str "and" , Space , Str "cheese" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Pie" , LineBreak , LineBreak , Strong [ Str "apple" ] , Space , Str "and" , Space , Emph [ Str "carrot" ] ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Orange" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Apple" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "more" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Bread" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Pie" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "more" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Butter" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Ice" , Space , Str "cream" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "and" , Space , Str "more" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Header 1 ( "macros" , [] , [] ) [ Str "macros" ] , Para [ Span ( "" , [ "twiki-macro" , "TEST" ] , [] ) [] ] , Para [ Span ( "" , [ "twiki-macro" , "TEST" ] , [] ) [ Str "" ] ] , Para [ Span ( "" , [ "twiki-macro" , "TEST" ] , [] ) [ Str "content with spaces" ] ] , Para [ Span ( "" , [ "twiki-macro" , "TEST" ] , [] ) [ Str "content with spaces" ] ] , Para [ Span ( "" , [ "twiki-macro" , "TEST" ] , [ ( "ARG1" , "test" ) ] ) [ Str "content with spaces" ] ] , Para [ Span ( "" , [ "twiki-macro" , "TEST" ] , [] ) [ Str "content with spaces ARG1=test" ] ] , Para [ Span ( "" , [ "twiki-macro" , "TEST" ] , [ ( "ARG1" , "test" ) ] ) [ Str "content with spaces" ] ] , Para [ Span ( "" , [ "twiki-macro" , "TEST" ] , [ ( "ARG1" , "test" ) , ( "ARG2" , "test2" ) ] ) [ Str "" ] ] , Para [ Span ( "" , [ "twiki-macro" , "TEST" ] , [ ( "ARG1" , "test" ) , ( "ARG2" , "test2" ) ] ) [ Str "" ] ] , Para [ Span ( "" , [ "twiki-macro" , "TEST" ] , [ ( "ARG1" , "test" ) , ( "ARG2" , "test2" ) ] ) [ Str "multiline\ndoes also work" ] ] ] pandoc-3.1.3/test/twiki-reader.twiki0000644000000000000000000000606607346545000015602 0ustar0000000000000000---+ header ---++ header level two ---+++ header level 3 ---++++ header _level_ four ---+++++ header level 5 ---++++++ header level 6 ---+++++++ not a header --++ not a header ---+ emph and strong _emph_ *strong* __strong and emph__ *emph inside strong* *strong with emph* _strong inside emph_ ---+ horizontal rule top --- bottom --- ---+ nop _not emph_ ---+ entities hi & low hi & low Gödel ̉પ ---+ comments inline comment between blocks ---+ linebreaks hi%BR%there hi%BR% there ---+ inline code *→* =typed= >>= ---+ code blocks case xs of (_:_) -> reverse xs [] -> ['*'] case xs of (_:_) -> reverse xs [] -> ['*'] ---+ block quotes Regular paragraph
                This is a block quote. With two paragraphs.
                Nother paragraph. ---+ external links [[http://google.com][Google search engine]] http://pandoc.org [[http://google.com]] [[http://yahoo.com]] [[mailto:info@example.org][email me]] !http://google.com http://google.com http://google.com !info@example.org info@example.org info@example.org ---+ lists * Start each line * with an asterisk (*). * More asterisks gives deeper * and deeper levels. * Line breaks%BR%don't break levels. * Continuations are also possible * and do not break the list flow * Level one Any other start ends the list. 1. Start each line 1. with a number (1.). 1. More number signs gives deeper 1. and deeper 1. levels. 1. Line breaks%BR%don't break levels. 1. Blank lines 1. end the list and start another. Any other start also ends the list. $ item 1: definition 1 $ item 2: definition 2-1 definition 2-2 $ item _3_: definition _3_ 1. one 1. two * two point one * two point two 1. three $ three item one: three def one 1. four $ four def one: this is a continuation 1. five 1. five sub 1 1. five sub 1 sub 1 1. five sub 2 1. other I. list I. styles 1. are i. also i. possible 1. all a. the a. different a. styles 1. are A. implemented A. and A. supported ---+ tables |Orange|Apple| |Bread|Pie| |Butter|Ice cream| |*Orange*|*Apple*| |Bread|Pie| |*Butter*|Ice cream| |*Orange*|*Apple*| |Bread%BR%%BR%and cheese|Pie%BR%%BR%*apple* and carrot| | Orange | Apple | more | | Bread | Pie | more | | Butter | Ice cream | and more | ---+ macros %TEST% %TEST{}% %TEST{content with spaces}% %TEST{"content with spaces"}% %TEST{"content with spaces" ARG1="test"}% %TEST{content with spaces ARG1=test}% %TEST{ARG1=test content with spaces}% %TEST{ARG1=test ARG2=test2}% %TEST{ARG1="test" ARG2="test2"}% %TEST{ARG1="test" ARG2="test2" multiline does also work}% pandoc-3.1.3/test/txt2tags.native0000644000000000000000000040245507346545000015134 0ustar0000000000000000Pandoc Meta { unMeta = fromList [ ( "author" , MetaList [ MetaInlines [ Str "author" ] ] ) , ( "date" , MetaInlines [ Str "date" ] ) , ( "includeconf" , MetaString "rules.conf" ) , ( "title" , MetaInlines [ Str "Txt2tags" , Space , Str "Markup" , Space , Str "Rules" ] ) ] } [ Para [ Str "This" , Space , Str "document" , Space , Str "describes" , Space , Str "all" , Space , Str "the" , Space , Str "details" , Space , Str "about" , Space , Str "each" , Space , Str "txt2tags" , Space , Str "mark." , SoftBreak , Str "The" , Space , Str "target" , Space , Str "audience" , Space , Str "are" , Space , Strong [ Str "experienced" ] , Space , Str "users." , Space , Str "You" , Space , Str "may" , Space , Str "find" , Space , Str "it" , SoftBreak , Str "useful" , Space , Str "if" , Space , Str "you" , Space , Str "want" , Space , Str "to" , Space , Str "master" , Space , Str "the" , Space , Str "marks" , Space , Str "or" , Space , Str "solve" , Space , Str "a" , Space , Str "specific" , Space , Str "problem" , SoftBreak , Str "about" , Space , Str "a" , Space , Str "mark." ] , Para [ Str "If" , Space , Str "you" , Space , Str "are" , Space , Str "new" , Space , Str "to" , Space , Str "txt2tags" , Space , Str "or" , Space , Str "just" , Space , Str "want" , Space , Str "to" , Space , Str "know" , Space , Str "which" , Space , Str "are" , Space , Str "the" , SoftBreak , Str "available" , Space , Str "marks," , Space , Str "please" , Space , Str "read" , Space , Str "the" , Space , Link ( "" , [] , [] ) [ Str "Markup" , Space , Str "Demo" ] ( "MARKUPDEMO" , "" ) , Str "." ] , Para [ Str "Note" , Space , Str "1:" , Space , Str "This" , Space , Str "document" , Space , Str "is" , Space , Str "generated" , Space , Str "directly" , Space , Str "from" , Space , Str "the" , Space , Str "txt2tags" , SoftBreak , Str "test-suite." , Space , Str "All" , Space , Str "the" , Space , Str "rules" , Space , Str "mentioned" , Space , Str "here" , Space , Str "are" , Space , Str "100%" , Space , Str "in" , Space , Str "sync" , Space , Str "with" , Space , Str "the" , SoftBreak , Str "current" , Space , Str "program" , Space , Str "code." ] , Para [ Str "Note" , Space , Str "2:" , Space , Str "A" , Space , Str "good" , Space , Str "practice" , Space , Str "is" , Space , Str "to" , Space , Str "consult" , Space , Link ( "" , [] , [] ) [ Str "the" , Space , Str "sources" ] ( "rules.t2t" , "" ) , Space , Str "when" , SoftBreak , Str "reading," , Space , Str "to" , Space , Str "see" , Space , Str "how" , Space , Str "the" , Space , Str "texts" , Space , Str "were" , Space , Str "made." ] , Para [ Str "Table" , Space , Str "of" , Space , Str "Contents:" ] , HorizontalRule , Header 1 ( "paragraph" , [] , [] ) [ Str "Paragraph" ] , Para [ Str "A" , Space , Str "paragraph" , Space , Str "is" , Space , Str "composed" , Space , Str "by" , Space , Str "one" , Space , Str "or" , Space , Str "more" , Space , Str "lines." , SoftBreak , Str "A" , Space , Str "blank" , Space , Str "line" , Space , Str "(or" , Space , Str "a" , Space , Str "table," , Space , Str "or" , Space , Str "a" , Space , Str "list)" , Space , Str "ends" , Space , Str "the" , SoftBreak , Str "current" , Space , Str "paragraph." ] , Para [ Str "Leading" , Space , Str "and" , Space , Str "trailing" , Space , Str "spaces" , Space , Str "are" , Space , Str "ignored." ] , Para [ Str "A" , Space , Str "comment" , Space , Str "line" , Space , Str "can" , Space , Str "be" , Space , Str "placed" , Space , Str "inside" , Space , Str "a" , Space , Str "paragraph." , SoftBreak , Str "It" , Space , Str "will" , Space , Str "not" , Space , Str "affect" , Space , Str "it." ] , Para [ Str "The" , Space , Str "end" , Space , Str "of" , Space , Str "the" , Space , Str "file" , Space , Str "(EOF)" , Space , Str "closes" , Space , Str "the" , SoftBreak , Str "currently" , Space , Str "open" , Space , Str "paragraph." ] , Header 1 ( "comment" , [] , [] ) [ Str "Comment" ] , Para [ Str "%" , Space , Str "not" , Space , Str "on" , Space , Str "the" , Space , Str "line" , Space , Str "beginning" , Space , Str "(at" , Space , Str "column" , Space , Str "2)" ] , Para [ Str "some" , Space , Str "text" , Space , Str "%" , Space , Str "half" , Space , Str "line" , Space , Str "comments" , Space , Str "are" , Space , Str "not" , Space , Str "allowed" ] , Header 1 ( "line" , [] , [] ) [ Str "Line" ] , HorizontalRule , HorizontalRule , HorizontalRule , HorizontalRule , HorizontalRule , HorizontalRule , HorizontalRule , HorizontalRule , HorizontalRule , HorizontalRule , HorizontalRule , Para [ Strikeout [ Str "-----" ] , SoftBreak , Strikeout [ Str "-------" , Space , Str "--------" ] ] , Para [ Strikeout [ Str "-------+--------" ] ] , Para [ Str "(" , Space , Strikeout [ Str "----------------" ] , Space , Str ")" ] , Header 1 ( "inline" , [] , [] ) [ Str "Inline" ] , Para [ Str "i)" , Space , Strong [ Str "b" ] , Space , Emph [ Str "i" ] , Space , Underline [ Str "u" ] , Space , Strikeout [ Str "s" ] , Space , Code ( "" , [] , [] ) "m" , Space , Str "r" , Space , RawInline (Format "html") "t" , SoftBreak , Str "i)" , Space , Strong [ Str "bo" ] , Space , Emph [ Str "it" ] , Space , Underline [ Str "un" ] , Space , Strikeout [ Str "st" ] , Space , Code ( "" , [] , [] ) "mo" , Space , Str "ra" , Space , RawInline (Format "html") "tg" , SoftBreak , Str "i)" , Space , Strong [ Str "bold" ] , Space , Emph [ Str "ital" ] , Space , Underline [ Str "undr" ] , Space , Strikeout [ Str "strk" ] , Space , Code ( "" , [] , [] ) "mono" , Space , Str "raw" , Space , RawInline (Format "html") "tggd" , SoftBreak , Str "i)" , Space , Strong [ Str "bo" , Space , Str "ld" ] , Space , Emph [ Str "it" , Space , Str "al" ] , Space , Underline [ Str "un" , Space , Str "dr" ] , Space , Strikeout [ Str "st" , Space , Str "rk" ] , Space , Code ( "" , [] , [] ) "mo no" , Space , Str "r" , Space , Str "aw" , Space , RawInline (Format "html") "tg gd" , SoftBreak , Str "i)" , Space , Strong [ Str "bo" , Space , Str "*" , Space , Str "ld" ] , Space , Emph [ Str "it" , Space , Str "/" , Space , Str "al" ] , Space , Underline [ Str "un" , Space , Str "_" , Space , Str "dr" ] , Space , Strikeout [ Str "st" , Space , Str "-" , Space , Str "rk" ] , Space , Code ( "" , [] , [] ) "mo ` no" , Space , Str "r" , Space , Str "\"" , Space , Str "aw" , Space , RawInline (Format "html") "tg ' gd" , SoftBreak , Str "i)" , Space , Strong [ Str "bo" , Space , Str "**ld" ] , Space , Emph [ Str "it" , Space , Str "//al" ] , Space , Underline [ Str "un" , Space , Str "__dr" ] , Space , Strikeout [ Str "st" , Space , Str "--rk" ] , Space , Code ( "" , [] , [] ) "mo ``no" , Space , Str "r" , Space , Str "\"\"aw" , Space , RawInline (Format "html") "tg ''gd" , SoftBreak , Str "i)" , Space , Strong [ Str "bo" , Space , Str "**" , Space , Str "ld" ] , Space , Emph [ Str "it" , Space , Str "//" , Space , Str "al" ] , Space , Underline [ Str "un" , Space , Str "__" , Space , Str "dr" ] , Space , Strikeout [ Str "st" , Space , Str "--" , Space , Str "rk" ] , Space , Code ( "" , [] , [] ) "mo `` no" , Space , Str "r" , Space , Str "\"\"" , Space , Str "aw" , Space , RawInline (Format "html") "tg '' gd" , SoftBreak , Str "i)" , Space , Strong [ Str "**bold**" ] , Space , Emph [ Str "//ital//" ] , Space , Underline [ Str "__undr__" ] , Space , Strikeout [ Str "--strk--" ] , Space , Code ( "" , [] , [] ) "``mono``" , Space , Str "\"\"raw\"\"" , Space , RawInline (Format "html") "''tggd''" , SoftBreak , Str "i)" , Space , Strong [ Str "*bold*" ] , Space , Emph [ Str "/ital/" ] , Space , Underline [ Str "_undr_" ] , Space , Strikeout [ Str "-strk-" ] , Space , Code ( "" , [] , [] ) "`mono`" , Space , Str "\"raw\"" , Space , RawInline (Format "html") "'tggd'" ] , Para [ Str "i)" , Space , Strong [ Str "*" ] , Space , Emph [ Str "/" ] , Space , Underline [ Str "_" ] , Space , Strikeout [ Str "-" ] , Space , Code ( "" , [] , [] ) "`" , Space , Str "\"" , Space , RawInline (Format "html") "'" , SoftBreak , Str "i)" , Space , Strong [ Str "**" ] , Space , Emph [ Str "//" ] , Space , Underline [ Str "__" ] , Space , Strikeout [ Str "--" ] , Space , Code ( "" , [] , [] ) "``" , Space , Str "\"\"" , Space , RawInline (Format "html") "''" , SoftBreak , Str "i)" , Space , Strong [ Str "***" ] , Space , Emph [ Str "///" ] , Space , Underline [ Str "___" ] , Space , Strikeout [ Str "---" ] , Space , Code ( "" , [] , [] ) "```" , Space , Str "\"\"\"" , Space , RawInline (Format "html") "'''" , SoftBreak , Str "i)" , Space , Strong [ Str "****" ] , Space , Emph [ Str "////" ] , Space , Underline [ Str "____" ] , Space , Strikeout [ Str "----" ] , Space , Code ( "" , [] , [] ) "````" , Space , Str "\"\"\"\"" , Space , RawInline (Format "html") "''''" , SoftBreak , Str "i)" , Space , Strong [ Str "*****" ] , Space , Emph [ Str "/////" ] , Space , Underline [ Str "_____" ] , Space , Strikeout [ Str "-----" ] , Space , Code ( "" , [] , [] ) "`````" , Space , Str "\"\"\"\"\"" , Space , RawInline (Format "html") "'''''" , SoftBreak , Str "i)" , Space , Strong [ Str "******" ] , Space , Emph [ Str "//////" ] , Space , Underline [ Str "______" ] , Space , Strikeout [ Str "------" ] , Space , Code ( "" , [] , [] ) "``````" , Space , Str "\"\"\"\"\"\"" , Space , RawInline (Format "html") "''''''" ] , Para [ Str "i)" , Space , Str "****" , Space , Str "////" , Space , Str "____" , Space , Str "----" , Space , Str "````" , Space , Str "\"\"\"\"" , Space , Str "''''" , SoftBreak , Str "i)" , Space , Str "**" , Space , Str "**" , Space , Str "//" , Space , Str "//" , Space , Str "__" , Space , Str "__" , Space , Str "--" , Space , Str "--" , Space , Str "``" , Space , Str "``" , Space , Str "\"\"" , Space , Str "\"\"" , Space , Str "''" , Space , Str "''" ] , Para [ Str "i)" , Space , Str "**" , Space , Str "bold**" , Space , Str "//" , Space , Str "ital//" , Space , Str "__" , Space , Str "undr__" , Space , Str "--" , Space , Str "strk--" , Space , Str "``" , Space , Str "mono``" , Space , Str "\"\"" , Space , Str "raw\"\"" , Space , Str "''" , Space , Str "tggd''" , SoftBreak , Str "i)" , Space , Str "**bold" , Space , Str "**" , Space , Str "//ital" , Space , Str "//" , Space , Str "__undr" , Space , Str "__" , Space , Str "--strk" , Space , Str "--" , Space , Str "``mono" , Space , Str "``" , Space , Str "\"\"raw" , Space , Str "\"\"" , Space , Str "''tggd" , Space , Str "''" , SoftBreak , Str "i)" , Space , Str "**" , Space , Str "bold" , Space , Str "**" , Space , Str "//" , Space , Str "ital" , Space , Str "//" , Space , Str "__" , Space , Str "undr" , Space , Str "__" , Space , Str "--" , Space , Str "strk" , Space , Str "--" , Space , Str "``" , Space , Str "mono" , Space , Str "``" , Space , Str "\"\"" , Space , Str "raw" , Space , Str "\"\"" , Space , Str "''" , Space , Str "tggd" , Space , Str "''" ] , Header 1 ( "link" , [] , [] ) [ Str "Link" ] , Para [ Link ( "" , [] , [] ) [ Str "mailto:user@domain.com" ] ( "user@domain.com" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "mailto:user@domain.com" ] ( "user@domain.com" , "" ) , Str "." , SoftBreak , Link ( "" , [] , [] ) [ Str "mailto:user@domain.com" ] ( "user@domain.com" , "" ) , Str "." , Space , Str "any" , Space , Str "text." , SoftBreak , Str "any" , Space , Str "text:" , Space , Link ( "" , [] , [] ) [ Str "mailto:user@domain.com" ] ( "user@domain.com" , "" ) , Str "." , Space , Str "any" , Space , Str "text." , SoftBreak , Link ( "" , [] , [] ) [ Str "label" ] ( "user@domain.com" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "mailto:user@domain.com?subject=bla" ] ( "user@domain.com?subject=bla" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "mailto:user@domain.com?subject=bla" ] ( "user@domain.com?subject=bla" , "" ) , Str "." , SoftBreak , Link ( "" , [] , [] ) [ Str "mailto:user@domain.com?subject=bla" ] ( "user@domain.com?subject=bla" , "" ) , Str "," , SoftBreak , Link ( "" , [] , [] ) [ Str "mailto:user@domain.com?subject=bla&cc=otheruser@domain.com" ] ( "user@domain.com?subject=bla&cc=otheruser@domain.com" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "mailto:user@domain.com?subject=bla&cc=otheruser@domain.com" ] ( "user@domain.com?subject=bla&cc=otheruser@domain.com" , "" ) , Str "." , SoftBreak , Link ( "" , [] , [] ) [ Str "mailto:user@domain.com?subject=bla&cc=otheruser@domain.com" ] ( "user@domain.com?subject=bla&cc=otheruser@domain.com" , "" ) , Str "," , SoftBreak , Link ( "" , [] , [] ) [ Str "label" ] ( "user@domain.com?subject=bla&cc=otheruser@domain.com" , "" ) , Str "." , SoftBreak , Link ( "" , [] , [] ) [ Str "label" ] ( "user@domain.com?subject=bla&cc=otheruser@domain.com." , "" ) , Str "." , SoftBreak , Link ( "" , [] , [] ) [ Str "http://www.domain.com" ] ( "http://www.domain.com" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "http://www.domain.com/dir/" ] ( "http://www.domain.com/dir/" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "http://www.domain.com/dir///" ] ( "http://www.domain.com/dir///" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "http://www.domain.com." ] ( "http://www.domain.com." , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "http://www.domain.com," ] ( "http://www.domain.com," , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "http://www.domain.com." ] ( "http://www.domain.com." , "" ) , Space , Str "any" , Space , Str "text." , SoftBreak , Link ( "" , [] , [] ) [ Str "http://www.domain.com," ] ( "http://www.domain.com," , "" ) , Space , Str "any" , Space , Str "text." , SoftBreak , Link ( "" , [] , [] ) [ Str "http://www.domain.com/dir/." ] ( "http://www.domain.com/dir/." , "" ) , Space , Str "any" , Space , Str "text." , SoftBreak , Str "any" , Space , Str "text:" , Space , Link ( "" , [] , [] ) [ Str "http://www.domain.com." ] ( "http://www.domain.com." , "" ) , Space , Str "any" , Space , Str "text." , SoftBreak , Str "any" , Space , Str "text:" , Space , Link ( "" , [] , [] ) [ Str "http://www.domain.com/dir/." ] ( "http://www.domain.com/dir/." , "" ) , Space , Str "any" , Space , Str "text." , SoftBreak , Str "any" , Space , Str "text:" , Space , Link ( "" , [] , [] ) [ Str "http://www.domain.com/dir/index.html." ] ( "http://www.domain.com/dir/index.html." , "" ) , Space , Str "any" , Space , Str "text." , SoftBreak , Str "any" , Space , Str "text:" , Space , Link ( "" , [] , [] ) [ Str "http://www.domain.com/dir/index.html," ] ( "http://www.domain.com/dir/index.html," , "" ) , Space , Str "any" , Space , Str "text." , SoftBreak , Link ( "" , [] , [] ) [ Str "http://www.domain.com/dir/#anchor" ] ( "http://www.domain.com/dir/#anchor" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "http://www.domain.com/dir/index.html#anchor" ] ( "http://www.domain.com/dir/index.html#anchor" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "http://www.domain.com/dir/index.html#anchor." ] ( "http://www.domain.com/dir/index.html#anchor." , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "http://www.domain.com/dir/#anchor." ] ( "http://www.domain.com/dir/#anchor." , "" ) , Space , Str "any" , Space , Str "text." , SoftBreak , Link ( "" , [] , [] ) [ Str "http://www.domain.com/dir/index.html#anchor." ] ( "http://www.domain.com/dir/index.html#anchor." , "" ) , Space , Str "any" , Space , Str "text." , SoftBreak , Str "any" , Space , Str "text:" , Space , Link ( "" , [] , [] ) [ Str "http://www.domain.com/dir/#anchor." ] ( "http://www.domain.com/dir/#anchor." , "" ) , Space , Str "any" , Space , Str "text." , SoftBreak , Str "any" , Space , Str "text:" , Space , Link ( "" , [] , [] ) [ Str "http://www.domain.com/dir/index.html#anchor." ] ( "http://www.domain.com/dir/index.html#anchor." , "" ) , Space , Str "any" , Space , Str "text." , SoftBreak , Link ( "" , [] , [] ) [ Str "http://domain.com?a=a@a.a&b=a+b+c." ] ( "http://domain.com?a=a@a.a&b=a+b+c." , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "http://domain.com?a=a@a.a&b=a+b+c," ] ( "http://domain.com?a=a@a.a&b=a+b+c," , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "http://domain.com/bla.cgi?a=a@a.a&b=a+b+c." ] ( "http://domain.com/bla.cgi?a=a@a.a&b=a+b+c." , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "http://domain.com/bla.cgi?a=a@a.a&b=a+b+c@." ] ( "http://domain.com/bla.cgi?a=a@a.a&b=a+b+c@." , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "http://domain.com?a=a@a.a&b=a+b+c.#anchor" ] ( "http://domain.com?a=a@a.a&b=a+b+c.#anchor" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "http://domain.com/bla.cgi?a=a@a.a&b=a+b+c.#anchor" ] ( "http://domain.com/bla.cgi?a=a@a.a&b=a+b+c.#anchor" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "http://domain.com/bla.cgi?a=a@a.a&b=a+b+c@.#anchor" ] ( "http://domain.com/bla.cgi?a=a@a.a&b=a+b+c@.#anchor" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "http://user:password@domain.com/bla.html." ] ( "http://user:password@domain.com/bla.html." , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "http://user:password@domain.com/dir/." ] ( "http://user:password@domain.com/dir/." , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "http://user:password@domain.com." ] ( "http://user:password@domain.com." , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "http://user:@domain.com." ] ( "http://user:@domain.com." , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "http://user@domain.com." ] ( "http://user@domain.com." , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "http://user:password@domain.com/bla.cgi?a=a@a.a&b=a+b+c.#anchor" ] ( "http://user:password@domain.com/bla.cgi?a=a@a.a&b=a+b+c.#anchor" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "http://user:password@domain.com/bla.cgi?a=a@a.a&b=a+b+c@#anchor" ] ( "http://user:password@domain.com/bla.cgi?a=a@a.a&b=a+b+c@#anchor" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "label" ] ( "www.domain.com" , "" ) , SoftBreak , Str "[" , Space , Str "label" , Space , Link ( "" , [] , [] ) [ Str "www.domain.com" ] ( "www.domain.com" , "" ) , Str "]" , SoftBreak , Link ( "" , [] , [] ) [ Str "label" , Space ] ( "www.domain.com" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "anchor" , Space ] ( "http://www.domain.com/dir/index.html#anchor." , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "login" , Space ] ( "http://user:password@domain.com/bla.html" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "form" , Space ] ( "http://www.domain.com/bla.cgi?a=a@a.a&b=a+b+c." , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "form" , Space , Str "&" , Space , Str "anchor" ] ( "http://www.domain.com/bla.cgi?a=a@a.a&b=a+b+c.#anchor" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "login" , Space , Str "&" , Space , Str "form" , Space ] ( "http://user:password@domain.com/bla.cgi?a=a@a.a&b=a+b+c." , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "local" , Space , Str "link" , Space , Str "up" , Space ] ( ".." , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "local" , Space , Str "link" , Space , Str "file" , Space ] ( "bla.html" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "local" , Space , Str "link" , Space , Str "anchor" , Space ] ( "#anchor" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "local" , Space , Str "link" , Space , Str "file/anchor" ] ( "bla.html#anchor" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "local" , Space , Str "link" , Space , Str "file/anchor" ] ( "bla.html#anchor." , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "local" , Space , Str "link" , Space , Str "img" , Space ] ( "abc.gif" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "www.fake.com" ] ( "www.domain.com" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "http://domain.com:8080/~user/_st-r@a=n$g,e/index%20new.htm" ] ( "http://domain.com:8080/~user/_st-r@a=n$g,e/index%20new.htm" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "http://domain.com:8080/~user/_st-r@a=n$g,e/index%20new.htm?a=/%22&b=+.@*_-" ] ( "http://domain.com:8080/~user/_st-r@a=n$g,e/index%20new.htm?a=/%22&b=+.@*_-" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "http://domain.com:8080/~user/_st-r@a=n$g,e/index%20new.htm?a=/%22&b=+.@*_-#anchor_" ] ( "http://domain.com:8080/~user/_st-r@a=n$g,e/index%20new.htm?a=/%22&b=+.@*_-#anchor_" , "" ) , Str "-1%." , SoftBreak , Link ( "" , [] , [] ) [ Str "http://foo._user-9:pass!#$%&*()+word@domain.com:8080/~user/_st-r@a=n$g,e/index%20new.htm?a=/%22&b=+.@*_-#anchor_" ] ( "http://foo._user-9:pass!#$%&*()+word@domain.com:8080/~user/_st-r@a=n$g,e/index%20new.htm?a=/%22&b=+.@*_-#anchor_" , "" ) , Str "-1%." , SoftBreak , Link ( "" , [] , [] ) [ Str "http://L1.com" ] ( "http://L1.com" , "" ) , Space , Str "!" , Space , Link ( "" , [] , [] ) [ Str "mailto:L2@www.com" ] ( "L2@www.com" , "" ) , Space , Str "!" , Space , Link ( "" , [] , [] ) [ Str "L3" ] ( "www.com" , "" ) , Space , Str "!" , Space , Link ( "" , [] , [] ) [ Str "L4" ] ( "w@ww.com" , "" ) , Space , Str "!" , Space , Link ( "" , [] , [] ) [ Str "www.L5.com" ] ( "www.L5.com" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "www.domain.com" ] ( "www.domain.com" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "www2.domain.com" ] ( "www2.domain.com" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "ftp.domain.com" ] ( "ftp.domain.com" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "WWW.DOMAIN.COM" ] ( "WWW.DOMAIN.COM" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "FTP.DOMAIN.COM" ] ( "FTP.DOMAIN.COM" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "label" ] ( "www.domain.com" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "label" ] ( "ftp.domain.com" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "label" ] ( "WWW.DOMAIN.COM" , "" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "label" ] ( "FTP.DOMAIN.COM" , "" ) , SoftBreak , Str "[label" , Space , Link ( "" , [] , [] ) [ Str "www.domain.com" ] ( "www.domain.com" , "" ) , Space , Str "]" , SoftBreak , Str "[label]" , Space , Link ( "" , [] , [] ) [ Str "www.domain.com" ] ( "www.domain.com" , "" ) , Str "]" ] , Header 1 ( "image" , [] , [] ) [ Str "Image" ] , Para [ Image ( "" , [] , [] ) [] ( "img.png" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Image ( "" , [] , [] ) [] ( "img.png" , "" ) ] ( "https://txt2tags.org" , "" ) ] , Para [ Image ( "" , [] , [] ) [] ( "img.png" , "" ) , Space , Str "Image" , Space , Str "at" , Space , Str "the" , Space , Str "line" , Space , Str "beginning." ] , Para [ Str "Image" , Space , Str "in" , Space , Str "the" , Space , Str "middle" , Space , Image ( "" , [] , [] ) [] ( "img.png" , "" ) , Space , Str "of" , Space , Str "the" , Space , Str "line." ] , Para [ Str "Image" , Space , Str "at" , Space , Str "the" , Space , Str "line" , Space , Str "end." , Space , Image ( "" , [] , [] ) [] ( "img.png" , "" ) ] , Para [ Image ( "" , [] , [] ) [] ( "img.png" , "" ) , SoftBreak , Image ( "" , [] , [] ) [] ( "img.png" , "" ) , SoftBreak , Image ( "" , [] , [] ) [] ( "img.png" , "" ) ] , Para [ Image ( "" , [] , [] ) [] ( "img.png" , "" ) , Image ( "" , [] , [] ) [] ( "img.png" , "" ) ] , Para [ Str "Images" , Space , Image ( "" , [] , [] ) [] ( "img.png" , "" ) , Space , Str "mixed" , Space , Image ( "" , [] , [] ) [] ( "img.png" , "" ) , Space , Str "with" , Space , Image ( "" , [] , [] ) [] ( "img.png" , "" ) , Space , Str "text." ] , Para [ Str "Images" , Space , Str "glued" , Space , Str "together:" , Space , Image ( "" , [] , [] ) [] ( "img.png" , "" ) , Image ( "" , [] , [] ) [] ( "img.png" , "" ) , Image ( "" , [] , [] ) [] ( "img.png" , "" ) , Str "." ] , Para [ Str "[img.png" , Space , Str "]" ] , Para [ Str "[" , Space , Str "img.png]" ] , Para [ Str "[" , Space , Str "img.png" , Space , Str "]" ] , Header 1 ( "numtitle" , [] , [] ) [ Str "Numbered" , Space , Str "Title" ] , Header 1 ( "" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "1" ] , Header 2 ( "" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "2" ] , Header 3 ( "" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "3" ] , Header 4 ( "" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "4" ] , Header 5 ( "" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "5" ] , Header 1 ( "lab_el-1" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "1" ] , Header 2 ( "lab_el-2" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "2" ] , Header 3 ( "lab_el-3" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "3" ] , Header 4 ( "lab_el-4" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "4" ] , Header 5 ( "lab_el-5" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "5" ] , Header 3 ( "" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "3" ] , Header 3 ( "" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "3" ] , Header 3 ( "" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "3" ] , Header 3 ( "" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "3" ] , Header 3 ( "" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "3" ] , Header 3 ( "lab_el-9" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "3" ] , Para [ Str "+Not" , Space , Str "Title" ] , Para [ Str "++Not" , Space , Str "Title+" ] , Para [ Str "+++Not" , Space , Str "Title++++" , SoftBreak , Str "++++++Not" , Space , Str "Title" , Space , Str "6++++++" ] , Para [ Str "+++++++Not" , Space , Str "Title" , Space , Str "7+++++++" , SoftBreak , Str "+Not" , Space , Str "Title+" , Space , Str "[label1]" , SoftBreak , Str "+Not" , Space , Str "Title+[" , Space , Str "label" , Space , Str "]" , SoftBreak , Str "+Not" , Space , Str "Title+[la/bel]" ] , Header 1 ( "title" , [] , [] ) [ Str "Title" ] , Header 1 ( "" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "1" ] , Header 2 ( "" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "2" ] , Header 3 ( "" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "3" ] , Header 4 ( "" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "4" ] , Header 5 ( "" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "5" ] , Header 1 ( "lab_el-1" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "1" ] , Header 2 ( "lab_el-2" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "2" ] , Header 3 ( "lab_el-3" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "3" ] , Header 4 ( "lab_el-4" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "4" ] , Header 5 ( "lab_el-5" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "5" ] , Header 3 ( "" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "3" ] , Header 3 ( "" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "3" ] , Header 3 ( "" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "3" ] , Header 3 ( "" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "3" ] , Header 3 ( "" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "3" ] , Header 3 ( "lab_el-9" , [] , [] ) [ Str "Title" , Space , Str "Level" , Space , Str "3" ] , Para [ Str "=Not" , Space , Str "Title" ] , Para [ Str "==Not" , Space , Str "Title=" ] , Para [ Str "===Not" , Space , Str "Title====" , SoftBreak , Str "======Not" , Space , Str "Title" , Space , Str "6======" ] , Para [ Str "=======Not" , Space , Str "Title" , Space , Str "7=======" , SoftBreak , Str "=Not" , Space , Str "Title=" , Space , Str "[label1]" , SoftBreak , Str "=Not" , Space , Str "Title=[" , Space , Str "label" , Space , Str "]" , SoftBreak , Str "=Not" , Space , Str "Title=[la/bel]" ] , Header 1 ( "quote" , [] , [] ) [ Str "Quote" ] , BlockQuote [ Para [ Str "To" , Space , Str "quote" , Space , Str "a" , Space , Str "paragraph," , Space , Str "just" , Space , Str "prefix" , Space , Str "it" , Space , Str "by" , Space , Str "a" , Space , Str "TAB" , SoftBreak , Str "character." , Space , Str "All" , Space , Str "the" , Space , Str "lines" , Space , Str "of" , Space , Str "the" , Space , Str "paragraph" , Space , Str "must" , SoftBreak , Str "begin" , Space , Str "with" , Space , Str "a" , Space , Str "TAB." ] ] , Para [ Str "Any" , Space , Str "non-tabbed" , Space , Str "line" , Space , Str "closes" , Space , Str "the" , Space , Str "quote" , Space , Str "block." ] , BlockQuote [ Para [ Str "The" , Space , Str "number" , Space , Str "of" , Space , Str "leading" , Space , Str "TABs" , Space , Str "identifies" , Space , Str "the" , Space , Str "quote" , SoftBreak , Str "block" , Space , Str "depth." , Space , Str "This" , Space , Str "is" , Space , Str "quote" , Space , Str "level" , Space , Str "1." ] , BlockQuote [ Para [ Str "With" , Space , Str "two" , Space , Str "TABs," , Space , Str "we" , Space , Str "are" , Space , Str "on" , Space , Str "the" , Space , Str "quote" , SoftBreak , Str "level" , Space , Str "2." ] , BlockQuote [ Para [ Str "The" , Space , Str "more" , Space , Str "TABs," , Space , Str "more" , Space , Str "deep" , Space , Str "is" , SoftBreak , Str "the" , Space , Str "quote" , Space , Str "level." ] , BlockQuote [ Para [ Str "There" , Space , Str "isn't" , Space , Str "a" , Space , Str "limit." ] ] ] ] ] , BlockQuote [ BlockQuote [ BlockQuote [ BlockQuote [ Para [ Str "This" , Space , Str "quote" , Space , Str "starts" , Space , Str "at" , SoftBreak , Str "level" , Space , Str "4." ] ] , Para [ Str "Then" , Space , Str "its" , Space , Str "depth" , Space , Str "is" , Space , Str "decreased." ] ] , Para [ Str "Counting" , Space , Str "down," , Space , Str "one" , Space , Str "by" , Space , Str "one." ] ] , Para [ Str "Until" , Space , Str "the" , Space , Str "level" , Space , Str "1." ] ] , BlockQuote [ BlockQuote [ BlockQuote [ Para [ Str "Unlike" , Space , Str "lists," , Space , Str "any" , Space , Str "quote" , Space , Str "block" , Space , Str "is" , SoftBreak , Str "independent," , Space , Str "not" , Space , Str "part" , Space , Str "of" , Space , Str "a" , Space , Str "tree." ] ] ] , Para [ Str "The" , Space , Str "TAB" , Space , Str "count" , Space , Str "don't" , Space , Str "need" , Space , Str "to" , Space , Str "be" , Space , Str "incremental" , SoftBreak , Str "by" , Space , Str "one." ] , BlockQuote [ BlockQuote [ BlockQuote [ Para [ Str "The" , Space , Str "nesting" , Space , Str "don't" , Space , Str "need" , SoftBreak , Str "to" , Space , Str "follow" , Space , Str "any" , Space , Str "rule." ] ] ] , Para [ Str "Quotes" , Space , Str "can" , Space , Str "be" , Space , Str "opened" , Space , Str "and" , Space , Str "closed" , SoftBreak , Str "in" , Space , Str "any" , Space , Str "way." ] , BlockQuote [ BlockQuote [ BlockQuote [ Para [ Str "You" , Space , Str "choose." ] ] ] ] ] ] , BlockQuote [ Para [ Str "Some" , Space , Str "targets" , Space , Str "(as" , Space , Str "sgml)" , Space , Str "don't" , Space , Str "support" , Space , Str "the" , SoftBreak , Str "nesting" , Space , Str "of" , Space , Str "quotes." , Space , Str "There" , Space , Str "is" , Space , Str "only" , Space , Str "one" , Space , Str "quote" , SoftBreak , Str "level." ] , BlockQuote [ Para [ Str "In" , Space , Str "this" , Space , Str "case," , Space , Str "no" , Space , Str "matter" , Space , Str "how" , Space , Str "much" , SoftBreak , Str "TABs" , Space , Str "are" , Space , Str "used" , Space , Str "to" , Space , Str "define" , Space , Str "the" , Space , Str "quote" , SoftBreak , Str "block," , Space , Str "it" , Space , Str "always" , Space , Str "will" , Space , Str "be" , Space , Str "level" , Space , Str "1." ] ] ] , BlockQuote [ Para [ Str "Spaces" , Space , Str "AFTER" , Space , Str "the" , Space , Str "TAB" , Space , Str "character" , Space , Str "are" , Space , Str "allowed." , SoftBreak , Str "But" , Space , Str "be" , Space , Str "careful," , Space , Str "it" , Space , Str "can" , Space , Str "be" , Space , Str "confusing." ] ] , Para [ Str "Spaces" , Space , Str "BEFORE" , Space , Str "the" , Space , Str "TAB" , Space , Str "character" , SoftBreak , Str "invalidate" , Space , Str "the" , Space , Str "mark." , Space , Str "It's" , Space , Str "not" , Space , Str "quote." ] , BlockQuote [ Para [ Str "Paragraph" , Space , Str "breaks" , Space , Str "inside" , Space , Str "a" , Space , Str "quote" , Space , Str "aren't" , SoftBreak , Str "possible." ] , Para [ Str "This" , Space , Str "sample" , Space , Str "are" , Space , Str "two" , Space , Str "separated" , Space , Str "quoted" , SoftBreak , Str "paragraphs," , Space , Str "not" , Space , Str "a" , Space , Str "quote" , Space , Str "block" , Space , Str "with" , SoftBreak , Str "two" , Space , Str "paragraphs" , Space , Str "inside." ] ] , BlockQuote [ Para [ Str "The" , Space , Str "end" , Space , Str "of" , Space , Str "the" , Space , Str "file" , Space , Str "(EOF)" , Space , Str "closes" , Space , Str "the" , SoftBreak , Str "currently" , Space , Str "open" , Space , Str "quote" , Space , Str "block." ] ] , Header 1 ( "raw" , [] , [] ) [ Str "Raw" ] , Para [ Str "A raw line.\n" ] , Para [ Str " Another raw line, with leading spaces.\n" ] , Para [ Str "A raw area delimited\n by lines with marks.\n" ] , Para [ Str "Trailing spaces and TABs after the area marks\nare allowed, but not encouraged nor documented.\n" ] , Para [ Str "\"\"\"Not" , Space , Str "a" , Space , Str "raw" , Space , Str "line," , Space , Str "need" , Space , Str "one" , Space , Str "space" , Space , Str "after" , Space , Str "mark." ] , Para [ Str "\"\"\"" , SoftBreak , Str "Not" , Space , Str "a" , Space , Str "raw" , Space , Str "area." , SoftBreak , Str "The" , Space , Str "marks" , Space , Str "must" , Space , Str "be" , Space , Str "at" , Space , Str "the" , Space , Str "line" , Space , Str "beginning," , SoftBreak , Str "no" , Space , Str "leading" , Space , Str "spaces." , SoftBreak , Str "\"\"\"" ] , Para [ Str "The end of the file (EOF) closes\nthe currently open raw area.\n" ] , Header 1 ( "verbatim" , [] , [] ) [ Str "Verbatim" ] , CodeBlock ( "" , [] , [] ) "A verbatim line.\n" , CodeBlock ( "" , [] , [] ) " Another verbatim line, with leading spaces.\n" , CodeBlock ( "" , [] , [] ) "A verbatim area delimited\n by lines with marks.\n" , CodeBlock ( "" , [] , [] ) "Trailing spaces and TABs after the area marks\nare allowed, but not encouraged nor documented.\n" , Para [ Str "```Not" , Space , Str "a" , Space , Str "verbatim" , Space , Str "line," , Space , Str "need" , Space , Str "one" , Space , Str "space" , Space , Str "after" , Space , Str "mark." ] , Para [ Str "```" , SoftBreak , Str "Not" , Space , Str "a" , Space , Str "verbatim" , Space , Str "area." , SoftBreak , Str "The" , Space , Str "marks" , Space , Str "must" , Space , Str "be" , Space , Str "at" , Space , Str "the" , Space , Str "line" , Space , Str "beginning," , SoftBreak , Str "no" , Space , Str "leading" , Space , Str "spaces." , SoftBreak , Str "```" ] , CodeBlock ( "" , [] , [] ) "The end of the file (EOF) closes\nthe currently open verbatim area.\n" , Header 1 ( "deflist" , [] , [] ) [ Str "Definition" , Space , Str "List" ] , DefinitionList [ ( [ Str "Definition" , Space , Str "list" ] , [ [ Plain [ Str "A" , Space , Str "list" , Space , Str "with" , Space , Str "terms" ] ] ] ) , ( [ Str "Start" , Space , Str "term" , Space , Str "with" , Space , Str "colon" ] , [ [ Plain [ Str "And" , Space , Str "its" , Space , Str "definition" , Space , Str "follows" ] ] ] ) ] , Header 1 ( "numlist" , [] , [] ) [ Str "Numbered" , Space , Str "List" ] , Para [ Str "See" , Space , Link ( "" , [] , [] ) [ Str "List" ] ( "#list" , "" ) , Str "," , Space , Str "the" , Space , Str "same" , Space , Str "rules" , Space , Str "apply." ] , Header 1 ( "list" , [] , [] ) [ Str "List" ] , BulletList [ [ Plain [ Str "Use" , Space , Str "the" , Space , Str "hyphen" , Space , Str "to" , Space , Str "prefix" , Space , Str "list" , Space , Str "items." ] ] , [ Plain [ Str "There" , Space , Str "must" , Space , Str "be" , Space , Str "one" , Space , Str "space" , Space , Str "after" , Space , Str "the" , Space , Str "hyphen." ] ] , [ Plain [ Str "The" , Space , Str "list" , Space , Str "is" , Space , Str "closed" , Space , Str "by" , Space , Str "two" , Space , Str "consecutive" , Space , Str "blank" , Space , Str "lines." ] ] ] , BulletList [ [ Plain [ Str "The" , Space , Str "list" , Space , Str "can" , Space , Str "be" , Space , Str "indented" , Space , Str "on" , Space , Str "the" , Space , Str "source" , Space , Str "document." ] ] , [ Plain [ Str "You" , Space , Str "can" , Space , Str "use" , Space , Str "any" , Space , Str "number" , Space , Str "of" , Space , Str "spaces." ] ] , [ Plain [ Str "The" , Space , Str "result" , Space , Str "will" , Space , Str "be" , Space , Str "the" , Space , Str "same." ] ] ] , BulletList [ [ Para [ Str "Let" , Space , Str "one" , Space , Str "blank" , Space , Str "line" , Space , Str "between" , Space , Str "the" , Space , Str "list" , Space , Str "items." ] ] , [ Para [ Str "It" , Space , Str "will" , Space , Str "be" , Space , Str "maintained" , Space , Str "on" , Space , Str "the" , Space , Str "conversion." ] ] , [ Para [ Str "Some" , Space , Str "targets" , Space , Str "don't" , Space , Str "support" , Space , Str "this" , Space , Str "behavior." ] ] , [ Para [ Str "This" , Space , Str "one" , Space , Str "was" , Space , Str "separated" , Space , Str "by" , Space , Str "a" , Space , Str "line" , Space , Str "with" , Space , Str "blanks." , SoftBreak , Str "You" , Space , Str "can" , Space , Str "also" , Space , Str "put" , Space , Str "a" , Space , Str "blank" , Space , Str "line" , Space , Str "inside" ] , Para [ Str "the" , Space , Str "item" , Space , Str "contents" , Space , Str "and" , Space , Str "it" , Space , Str "will" , Space , Str "be" , Space , Str "preserved." ] ] ] , Para [ Str "-This" , Space , Str "is" , Space , Str "not" , Space , Str "a" , Space , Str "list" , Space , Str "(no" , Space , Str "space)" ] , Para [ Str "-" , Space , Str "This" , Space , Str "is" , Space , Str "not" , Space , Str "a" , Space , Str "list" , Space , Str "(more" , Space , Str "than" , Space , Str "one" , Space , Str "space)" ] , Para [ Str "-" , Space , Str "This" , Space , Str "is" , Space , Str "not" , Space , Str "a" , Space , Str "list" , Space , Str "(a" , Space , Str "TAB" , Space , Str "instead" , Space , Str "the" , Space , Str "space)" ] , BulletList [ [ BulletList [ [ Plain [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "list" ] ] ] ] , [ OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "list" ] ] ] ] , [ DefinitionList [ ( [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "list" ] , [ [] ] ) ] ] ] , BulletList [ [ Plain [ Str "This" , Space , Str "is" , Space , Str "the" , Space , Str "\"mother\"" , Space , Str "list" , Space , Str "first" , Space , Str "item." ] ] , [ Plain [ Str "Here" , Space , Str "is" , Space , Str "the" , Space , Str "second," , Space , Str "but" , Space , Str "inside" , Space , Str "this" , Space , Str "item," ] , BulletList [ [ Plain [ Str "there" , Space , Str "is" , Space , Str "a" , Space , Str "sublist," , Space , Str "with" , Space , Str "its" , Space , Str "own" , Space , Str "items." ] ] , [ Plain [ Str "Note" , Space , Str "that" , Space , Str "the" , Space , Str "items" , Space , Str "of" , Space , Str "the" , Space , Str "same" , Space , Str "sublist" ] ] , [ Plain [ Str "must" , Space , Str "have" , Space , Str "the" , Space , Str "same" , Space , Str "indentation." ] , BulletList [ [ Plain [ Str "And" , Space , Str "this" , Space , Str "can" , Space , Str "go" , Space , Str "on," , Space , Str "opening" , Space , Str "sublists." ] , BulletList [ [ Plain [ Str "Just" , Space , Str "add" , Space , Str "leading" , Space , Str "spaces" , Space , Str "before" , Space , Str "the" ] ] , [ Plain [ Str "hyphen" , Space , Str "and" , Space , Str "sublists" , Space , Str "will" , Space , Str "be" , Space , Str "opened." ] ] , [ Plain [ Str "The" , Space , Str "two" , Space , Str "blank" , Space , Str "lines" , Space , Str "closes" , Space , Str "them" , Space , Str "all." ] ] ] ] ] ] ] ] ] , BulletList [ [ Plain [ Str "When" , Space , Str "nesting" , Space , Str "lists," , Space , Str "the" , Space , Str "additional" , Space , Str "spaces" , Space , Str "are" , Space , Str "free." ] ] , [ Plain [ Str "You" , Space , Str "can" , Space , Str "add" , Space , Str "just" , Space , Str "one," ] , BulletList [ [ Plain [ Str "or" , Space , Str "many." ] , BulletList [ [ Plain [ Str "What" , Space , Str "matters" , Space , Str "is" , Space , Str "to" , Space , Str "put" , Space , Str "more" , Space , Str "than" , Space , Str "the" , Space , Str "previous." ] ] , [ Plain [ Str "But" , Space , Str "remember" , Space , Str "that" , Space , Str "the" , Space , Str "other" , Space , Str "items" , Space , Str "of" , Space , Str "the" , Space , Str "same" , Space , Str "list" ] ] , [ Plain [ Str "must" , Space , Str "use" , Space , Str "the" , Space , Str "same" , Space , Str "indentation." ] ] ] ] ] ] ] , BulletList [ [ Plain [ Str "There" , Space , Str "is" , Space , Str "not" , Space , Str "a" , Space , Str "depth" , Space , Str "limit," ] , BulletList [ [ Plain [ Str "you" , Space , Str "can" , Space , Str "go" , Space , Str "deeper" , Space , Str "and" , Space , Str "deeper." ] , BulletList [ [ Plain [ Str "But" , Space , Str "some" , Space , Str "targets" , Space , Str "may" , Space , Str "have" , Space , Str "restrictions." ] , BulletList [ [ Plain [ Str "The" , Space , Str "LaTeX" , Space , Str "maximum" , Space , Str "is" , Space , Str "here," , Space , Str "4" , Space , Str "levels." ] ] ] ] ] ] ] ] ] , BulletList [ [ Plain [ Str "Reverse" , Space , Str "nesting" , Space , Str "doesn't" , Space , Str "work." ] ] , [ Plain [ Str "Because" , Space , Str "a" , Space , Str "sublist" , Space , Str "*must*" , Space , Str "have" , Space , Str "a" , Space , Str "mother" , Space , Str "list." ] ] , [ Plain [ Str "It's" , Space , Str "the" , Space , Str "list" , Space , Str "concept," , Space , Str "not" , Space , Str "a" , Space , Str "txt2tags" , Space , Str "limitation." ] ] , [ Plain [ Str "All" , Space , Str "this" , Space , Str "sublists" , Space , Str "will" , Space , Str "be" , Space , Str "bumped" , Space , Str "to" , Space , Str "mother" , Space , Str "lists." ] ] , [ Plain [ Str "At" , Space , Str "level" , Space , Str "1," , Space , Str "like" , Space , Str "this" , Space , Str "one." ] ] ] , BulletList [ [ Plain [ Str "Level" , Space , Str "1" ] , BulletList [ [ Plain [ Str "Level" , Space , Str "2" ] , BulletList [ [ Plain [ Str "Level" , Space , Str "3" ] , BulletList [ [ Plain [ Str "Level" , Space , Str "4" ] ] ] ] , [ Plain [ Str "Level" , Space , Str "3" , Space , Str "--" , Space , Str "(closed" , Space , Str "Level" , Space , Str "4)" ] ] ] ] , [ Plain [ Str "Level" , Space , Str "2" , Space , Str "--" , Space , Str "(closed" , Space , Str "Level" , Space , Str "3)" ] ] ] ] , [ Plain [ Str "Level" , Space , Str "1" , Space , Str "--" , Space , Str "(closed" , Space , Str "Level" , Space , Str "2)" ] ] ] , BulletList [ [ Plain [ Str "Level" , Space , Str "1" ] , BulletList [ [ Plain [ Str "Level" , Space , Str "2" ] , BulletList [ [ Plain [ Str "Level" , Space , Str "3" ] , BulletList [ [ Plain [ Str "Level" , Space , Str "4" ] ] ] ] ] ] ] ] , [ Plain [ Str "Level" , Space , Str "1" , Space , Str "--" , Space , Str "(closed" , Space , Str "Level" , Space , Str "4," , Space , Str "Level" , Space , Str "3" , Space , Str "and" , Space , Str "Level" , Space , Str "2)" ] ] ] , BulletList [ [ Para [ Str "Level" , Space , Str "1" ] , BulletList [ [ Para [ Str "Level" , Space , Str "2" , Space , Str "--" , Space , Str "blank" , Space , Str "BEFORE" , Space , Str "and" , Space , Str "AFTER" , Space , Str "(in)" ] , BulletList [ [ Plain [ Str "Level" , Space , Str "3" ] ] ] ] ] ] ] , BulletList [ [ Plain [ Str "Level" , Space , Str "4" ] ] ] , BulletList [ [ Para [ Str "Level" , Space , Str "3" ] ] , [ Para [ Str "Level" , Space , Str "2" , Space , Str "--" , Space , Str "blank" , Space , Str "BEFORE" , Space , Str "and" , Space , Str "AFTER" , Space , Str "(out)" ] ] , [ Para [ Str "Level" , Space , Str "1" ] , BulletList [ [ Para [ Str "Level" , Space , Str "2" , Space , Str "--" , Space , Str "blank" , Space , Str "BEFORE" , Space , Str "(spaces)" , Space , Str "and" , Space , Str "AFTER" , Space , Str "(TAB)" ] , BulletList [ [ Plain [ Str "Level" , Space , Str "3" ] ] ] ] ] ] ] , BulletList [ [ Plain [ Str "Level" , Space , Str "1" ] , BulletList [ [ Plain [ Str "Level" , Space , Str "2" ] , BulletList [ [ Plain [ Str "Level" , Space , Str "3" ] , BulletList [ [ Plain [ Str "Level" , Space , Str "4" ] ] , [ Plain [ Str "Level" , Space , Str "3.5" , Space , Str "???" ] ] ] ] , [ Plain [ Str "Level" , Space , Str "3" ] ] , [ Plain [ Str "Level" , Space , Str "2.5" , Space , Str "???" ] ] ] ] , [ Plain [ Str "Level" , Space , Str "2" ] ] , [ Plain [ Str "Level" , Space , Str "1.5" , Space , Str "???" ] ] ] ] , [ Plain [ Str "Level" , Space , Str "1" ] ] ] , BulletList [ [ Plain [ Str "This" , Space , Str "list" , Space , Str "is" , Space , Str "closed" , Space , Str "by" , Space , Str "a" , Space , Str "line" , Space , Str "with" , Space , Str "spaces" , Space , Str "and" , Space , Str "other" , Space , Str "with" , Space , Str "TABs" ] ] ] , BulletList [ [ Plain [ Str "This" , Space , Str "list" , Space , Str "is" , Space , Str "NOT" , Space , Str "closed" , Space , Str "by" , Space , Str "two" , Space , Str "comment" , Space , Str "lines" ] ] ] , BulletList [ [ Plain [ Str "This" , Space , Str "list" , Space , Str "is" , Space , Str "closed" , Space , Str "by" , Space , Str "a" , Space , Str "line" , Space , Str "with" , Space , Str "spaces" , Space , Str "and" , Space , Str "TAB," ] ] , [ Plain [ Str "then" , Space , Str "a" , Space , Str "comment" , Space , Str "line," , Space , Str "then" , Space , Str "an" , Space , Str "empty" , Space , Str "line." ] ] ] , BulletList [ [ Plain [ Str "Level" , Space , Str "1" ] , BulletList [ [ Plain [ Str "Level" , Space , Str "2" ] , BulletList [ [ Plain [ Str "Level" , Space , Str "3" ] ] ] , Plain [ Str "-" , SoftBreak , Str "Level" , Space , Str "2" ] ] ] , Plain [ Str "-" , SoftBreak , Str "Level" , Space , Str "1" ] ] ] , Para [ Str "-" ] , BulletList [ [ Plain [ Str "Empty" , Space , Str "item" , Space , Str "with" , Space , Str "trailing" , Space , Str "spaces." ] ] ] , Para [ Str "-" ] , BulletList [ [ Plain [ Str "Empty" , Space , Str "item" , Space , Str "with" , Space , Str "trailing" , Space , Str "TAB." ] ] ] , Para [ Str "-" ] , BulletList [ [ Plain [ Str "If" , Space , Str "the" , Space , Str "end" , Space , Str "of" , Space , Str "the" , Space , Str "file" , Space , Str "(EOF)" , Space , Str "is" , Space , Str "hit," ] , BulletList [ [ Plain [ Str "all" , Space , Str "the" , Space , Str "currently" , Space , Str "opened" , Space , Str "list" , Space , Str "are" , Space , Str "closed," ] , BulletList [ [ Plain [ Str "just" , Space , Str "like" , Space , Str "when" , Space , Str "using" , Space , Str "the" , Space , Str "two" , Space , Str "blank" , Space , Str "lines." ] ] ] ] ] ] ] , Header 1 ( "table" , [] , [] ) [ Str "Table" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignRight , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "1" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignRight , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "3" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "3" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "||" , Space , Str "Cell" , Space , Str "1" , Space , Str "|" , Space , Str "Cell" , Space , Str "2" , Space , Str "|" , Space , Str "Cell" , Space , Str "3" , Space , Str "|" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Cell" , Space , Str "3" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Heading" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Heading" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Heading" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "<-" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "--" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "->" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "--" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "--" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "--" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "->" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "--" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "<-" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "3+4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "3" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "4" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1+2+3" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2+3" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1+2+3+4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "0" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "7" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "8" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "A" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "B" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "D" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "E" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "F" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "3" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "3" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "3" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Jan" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Fev" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Mar" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Apr" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "May" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "20%" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "40%" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "60%" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "80%" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "100%" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignCenter , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "/" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "/" , Space , Str "/" , Space , Str "/" , Space , Str "/" , Space , Str "/" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "/" , Space , Str "/" , Space , Str "/" , Space , Str "/" , Space , Str "/" , Space , Str "/" , Space , Str "/" , Space , Str "/" , Space , Str "/" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "o" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "o" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "." ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "=" , Space , Str "=" , Space , Str "=" , Space , Str "=" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "01" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "02" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "05" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "07" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "11" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "13" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "16" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "17" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "19" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "20" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "23" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "25" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "26" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "29" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "30" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "32" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "35" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "37" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "39" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "40" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) , ( AlignCenter , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "0" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "3" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "6" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "7" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "8" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "9" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "A" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "B" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "C" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "D" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "E" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "F" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "0" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "3" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "4" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "5" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "6" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "7" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "8" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "9" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "A" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "B" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "C" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "D" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "E" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "F" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignCenter , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) []) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] ] ] (TableFoot ( "" , [] , [] ) []) , Para [ Str "|this|is|not|a|table|" ] , Para [ Str "|this|" , Space , Str "is|" , Space , Str "not|" , Space , Str "a|" , Space , Str "table|" ] , Para [ Str "|this" , Space , Str "|is" , Space , Str "|not" , Space , Str "|a" , Space , Str "|table" , Space , Str "|" ] , Para [ Str "|" , Space , Str "this\t|" , Space , Str "is\t|" , Space , Str "not\t|" , Space , Str "a\t|" , Space , Str "table\t|" ] , HorizontalRule , Para [ Str "The" , Space , Str "End." ] ] pandoc-3.1.3/test/txt2tags.t2t0000644000000000000000000005356607346545000014364 0ustar0000000000000000Txt2tags Markup Rules author date %!includeconf: rules.conf This document describes all the details about each txt2tags mark. The target audience are **experienced** users. You may find it useful if you want to master the marks or solve a specific problem about a mark. If you are new to txt2tags or just want to know which are the available marks, please read the [Markup Demo MARKUPDEMO]. Note 1: This document is generated directly from the txt2tags test-suite. All the rules mentioned here are 100% in sync with the current program code. Note 2: A good practice is to consult [the sources rules.t2t] when reading, to see how the texts were made. Table of Contents: %%TOC ------------------------------------------------------------- = Paragraph =[paragraph] %INCLUDED(t2t) starts here: ../../../test/marks/paragraph.t2t %%% Syntax: Lines grouped together A paragraph is composed by one or more lines. A blank line (or a table, or a list) ends the current paragraph. %%% Syntax: Leading and trailing spaces are ignored Leading and trailing spaces are ignored. %%% Syntax: A comment don't close a paragraph A comment line can be placed inside a paragraph. % this comment will be ignored It will not affect it. %%% Closing: EOF closes the open paragraph The end of the file (EOF) closes the currently open paragraph. = Comment =[comment] %INCLUDED(t2t) starts here: ../../../test/marks/comment.t2t %%% Syntax: The % character at the line beginning (column 1) %glued with the % mark % separated from the % mark % very distant from the % mark %%%%%%% lots of % marks % a blank comment, used for vertical spacing: % % NOTE: what matters is the first % being at the line beginning, % the rest of the line is just ignored. %%% Syntax: Area (block) %%% You're not seeing this. %%% %%% Syntax: Area (block) with trailing spaces %%% You're not seeing this. %%% %%% Invalid: The % in any other position % not on the line beginning (at column 2) some text % half line comments are not allowed = Line =[line] %INCLUDED(t2t) starts here: ../../../test/marks/line.t2t %%% Syntax: At least 20 chars of - = _ -------------------- ==================== ____________________ %%% Syntax: Any kind of mixing is allowed %% Free mixing is allowed to make the line, %% but the first char is the identifier for %% the difference between separator ( - _ ) %% and strong ( = ) lines. =========----------- -_-_-_-_-_-_-_-_-_-_ =-=-=-=-=-=-=-=-=-=- =------------------= --------====-------- %%% Syntax: Leading and/or trailing spaces are allowed -------------------- -------------------- -------------------- %%% Invalid: Less than 20 chars (but strike matches) --------- %%% Invalid: Strange chars (but strike matches) --------- ---------- ---------+---------- ( -------------------- ) = Inline =[inline] %INCLUDED(t2t) starts here: ../../../test/marks/inline.t2t %%% Syntax: Marks are greedy and must be "glued" with contents %% GLUED: The contents must be glued with the marks, no spaces %% between them. Right after the opening mark there must be a %% non-blank character, as well as right before the closing mark. %% %% GREEDY: If the contents boundary character is the same as %% the mark character, it is considered contents, not mark. %% So ""****bold****"" turns to ""**bold**"" in HTML. i) **b** //i// __u__ --s-- ``m`` ""r"" ''t'' i) **bo** //it// __un__ --st-- ``mo`` ""ra"" ''tg'' i) **bold** //ital// __undr__ --strk-- ``mono`` ""raw"" ''tggd'' i) **bo ld** //it al// __un dr__ --st rk-- ``mo no`` ""r aw"" ''tg gd'' i) **bo * ld** //it / al// __un _ dr__ --st - rk-- ``mo ` no`` ""r " aw"" ''tg ' gd'' i) **bo **ld** //it //al// __un __dr__ --st --rk-- ``mo ``no`` ""r ""aw"" ''tg ''gd'' i) **bo ** ld** //it // al// __un __ dr__ --st -- rk-- ``mo `` no`` ""r "" aw"" ''tg '' gd'' i) ****bold**** ////ital//// ____undr____ ----strk---- ````mono```` """"raw"""" ''''tggd'''' i) ***bold*** ///ital/// ___undr___ ---strk--- ```mono``` """raw""" '''tggd''' %%% Syntax: Repetition is greedy %% When the mark character is repeated many times, %% the contents are expanded to the largest possible. %% That's why they are greedy, the outer marks are %% the ones used. i) ***** ///// _____ ----- ````` """"" ''''' i) ****** ////// ______ ------ `````` """""" '''''' i) ******* /////// _______ ------- ``````` """"""" ''''''' i) ******** //////// ________ -------- ```````` """""""" '''''''' i) ********* ///////// _________ --------- ````````` """"""""" ''''''''' i) ********** ////////// __________ ---------- `````````` """""""""" '''''''''' %%% Invalid: No contents i) **** //// ____ ---- ```` """" '''' i) ** ** // // __ __ -- -- `` `` "" "" '' '' %%% Invalid: Contents not "glued" with marks %% Spaces between the marks and the contents in any side %% invalidate the mark. i) ** bold** // ital// __ undr__ -- strk-- `` mono`` "" raw"" '' tggd'' i) **bold ** //ital // __undr __ --strk -- ``mono `` ""raw "" ''tggd '' i) ** bold ** // ital // __ undr __ -- strk -- `` mono `` "" raw "" '' tggd '' = Link =[link] %INCLUDED(t2t) starts here: ../../../test/marks/link.t2t %%% Syntax: E-mail user@domain.com user@domain.com. user@domain.com. any text. any text: user@domain.com. any text. [label user@domain.com] %%% Syntax: E-mail with form data user@domain.com?subject=bla user@domain.com?subject=bla. user@domain.com?subject=bla, user@domain.com?subject=bla&cc=otheruser@domain.com user@domain.com?subject=bla&cc=otheruser@domain.com. user@domain.com?subject=bla&cc=otheruser@domain.com, [label user@domain.com?subject=bla&cc=otheruser@domain.com]. [label user@domain.com?subject=bla&cc=otheruser@domain.com.]. %%% Syntax: URL http://www.domain.com http://www.domain.com/dir/ http://www.domain.com/dir/// http://www.domain.com. http://www.domain.com, http://www.domain.com. any text. http://www.domain.com, any text. http://www.domain.com/dir/. any text. any text: http://www.domain.com. any text. any text: http://www.domain.com/dir/. any text. any text: http://www.domain.com/dir/index.html. any text. any text: http://www.domain.com/dir/index.html, any text. %%% Syntax: URL with anchor http://www.domain.com/dir/#anchor http://www.domain.com/dir/index.html#anchor http://www.domain.com/dir/index.html#anchor. http://www.domain.com/dir/#anchor. any text. http://www.domain.com/dir/index.html#anchor. any text. any text: http://www.domain.com/dir/#anchor. any text. any text: http://www.domain.com/dir/index.html#anchor. any text. %%% Syntax: URL with form data http://domain.com?a=a@a.a&b=a+b+c. http://domain.com?a=a@a.a&b=a+b+c, http://domain.com/bla.cgi?a=a@a.a&b=a+b+c. http://domain.com/bla.cgi?a=a@a.a&b=a+b+c@. %%% Syntax: URL with form data and anchor http://domain.com?a=a@a.a&b=a+b+c.#anchor http://domain.com/bla.cgi?a=a@a.a&b=a+b+c.#anchor http://domain.com/bla.cgi?a=a@a.a&b=a+b+c@.#anchor %%% Syntax: URL with login data http://user:password@domain.com/bla.html. http://user:password@domain.com/dir/. http://user:password@domain.com. http://user:@domain.com. http://user@domain.com. %%% Syntax: URL with login, form and anchor http://user:password@domain.com/bla.cgi?a=a@a.a&b=a+b+c.#anchor http://user:password@domain.com/bla.cgi?a=a@a.a&b=a+b+c@#anchor %%% Syntax: URL with label [label www.domain.com] %%% Syntax: URL with label (trailing spaces are discarded, leading are maintained) %TODO normalize this behavior [ label www.domain.com] [label www.domain.com] %%% Syntax: URL with label, stressing [anchor http://www.domain.com/dir/index.html#anchor.] [login http://user:password@domain.com/bla.html] [form http://www.domain.com/bla.cgi?a=a@a.a&b=a+b+c.] [form & anchor http://www.domain.com/bla.cgi?a=a@a.a&b=a+b+c.#anchor] [login & form http://user:password@domain.com/bla.cgi?a=a@a.a&b=a+b+c.] %%% Syntax: Link with label for local files [local link up ..] [local link file bla.html] [local link anchor #anchor] [local link file/anchor bla.html#anchor] [local link file/anchor bla.html#anchor.] [local link img abc.gif] %%% Syntax: Another link as a label [www.fake.com www.domain.com] %%% Syntax: URL with funny chars http://domain.com:8080/~user/_st-r@a=n$g,e/index%20new.htm http://domain.com:8080/~user/_st-r@a=n$g,e/index%20new.htm?a=/%22&b=+.@*_- http://domain.com:8080/~user/_st-r@a=n$g,e/index%20new.htm?a=/%22&b=+.@*_-#anchor_-1%. http://foo._user-9:pass!#$%&*()+word@domain.com:8080/~user/_st-r@a=n$g,e/index%20new.htm?a=/%22&b=+.@*_-#anchor_-1%. %%% Test: Various per line http://L1.com ! L2@www.com ! [L3 www.com] ! [L4 w@ww.com] ! www.L5.com %%% Feature: Guessed link, adding protocol automatically www.domain.com www2.domain.com ftp.domain.com WWW.DOMAIN.COM FTP.DOMAIN.COM [label www.domain.com] [label ftp.domain.com] [label WWW.DOMAIN.COM] [label FTP.DOMAIN.COM] %%% Invalid: Trailing space on link [label www.domain.com ] %%% Invalid: Label with ] char (use postproc) [label] www.domain.com] = Image =[image] %INCLUDED(t2t) starts here: ../../../test/marks/image.t2t %%% Syntax: Image name inside brackets: [img] [img.png] %%% Syntax: Image pointing to a link: [[img] link] [[img.png] https://txt2tags.org] %%% Align: Image position is preserved when inside paragraph [img.png] Image at the line beginning. Image in the middle [img.png] of the line. Image at the line end. [img.png] %%% Align: Image alone with spaces around is aligned [img.png] [img.png] [img.png] %%% Test: Two glued images with no spaces (left & right) [img.png][img.png] %%% Test: Various per line Images [img.png] mixed [img.png] with [img.png] text. Images glued together: [img.png][img.png][img.png]. %%% Invalid: Spaces inside are not allowed [img.png ] [ img.png] [ img.png ] % Ignored as they change every time when run = Numbered Title =[numtitle] %%% Syntax: Balanced equal signs (from 1 to 5) + Title Level 1 + ++ Title Level 2 ++ +++ Title Level 3 +++ ++++ Title Level 4 ++++ +++++ Title Level 5 +++++ %%% Label: Between brackets, alphanumeric [A-Za-z0-9_-] + Title Level 1 +[lab_el-1] ++ Title Level 2 ++[lab_el-2] +++ Title Level 3 +++[lab_el-3] ++++ Title Level 4 ++++[lab_el-4] +++++ Title Level 5 +++++[lab_el-5] %%% Syntax: Spaces around and/or inside are allowed (and ignored) +++Title Level 3+++ +++ Title Level 3 +++ +++ Title Level 3 +++ +++ Title Level 3 +++ +++ Title Level 3 +++ +++ Title Level 3 +++[lab_el-9] %%% Invalid: Unbalanced equal signs +Not Title ++Not Title+ +++Not Title++++ %%% Invalid: Level deeper than 5 ++++++Not Title 6++++++ +++++++Not Title 7+++++++ %%% Invalid: Space between title and label +Not Title+ [label1] %%% Invalid: Space inside label +Not Title+[ label ] %%% Invalid: Strange chars inside label +Not Title+[la/bel] = Title =[title] %INCLUDED(t2t) starts here: ../../../test/marks/title.t2t %%% Syntax: Balanced equal signs (from 1 to 5) = Title Level 1 = == Title Level 2 == === Title Level 3 === ==== Title Level 4 ==== ===== Title Level 5 ===== %%% Label: Between brackets, alphanumeric [A-Za-z0-9_-] = Title Level 1 =[lab_el-1] == Title Level 2 ==[lab_el-2] === Title Level 3 ===[lab_el-3] ==== Title Level 4 ====[lab_el-4] ===== Title Level 5 =====[lab_el-5] %%% Syntax: Spaces around and/or inside are allowed (and ignored) ===Title Level 3=== === Title Level 3 === === Title Level 3 === === Title Level 3 === === Title Level 3 === === Title Level 3 ===[lab_el-9] %%% Invalid: Unbalanced equal signs =Not Title ==Not Title= ===Not Title==== %%% Invalid: Level deeper than 5 ======Not Title 6====== =======Not Title 7======= %%% Invalid: Space between title and label =Not Title= [label1] %%% Invalid: Space inside label =Not Title=[ label ] %%% Invalid: Strange chars inside label =Not Title=[la/bel] = Quote =[quote] %INCLUDED(t2t) starts here: ../../../test/marks/quote.t2t To quote a paragraph, just prefix it by a TAB character. All the lines of the paragraph must begin with a TAB. Any non-tabbed line closes the quote block. %%% Nesting: Creating deeper quotes The number of leading TABs identifies the quote block depth. This is quote level 1. With two TABs, we are on the quote level 2. The more TABs, more deep is the quote level. There isn't a limit. %%% Nesting: Reverse nesting works This quote starts at level 4. Then its depth is decreased. Counting down, one by one. Until the level 1. %%% Nesting: Random count Unlike lists, any quote block is independent, not part of a tree. The TAB count don't need to be incremental by one. The nesting don't need to follow any rule. Quotes can be opened and closed in any way. You choose. %%% Nesting: When not supported Some targets (as sgml) don't support the nesting of quotes. There is only one quote level. In this case, no matter how much TABs are used to define the quote block, it always will be level 1. %%% Syntax: Spaces after TAB Spaces AFTER the TAB character are allowed. But be careful, it can be confusing. %%% Invalid: Spaces before TAB Spaces BEFORE the TAB character invalidate the mark. It's not quote. %%% Invalid: Paragraphs inside Paragraph breaks inside a quote aren't possible. This sample are two separated quoted paragraphs, not a quote block with two paragraphs inside. %%% Closing: EOF closes the open block The end of the file (EOF) closes the currently open quote block. = Raw =[raw] %%% Syntax: A single line """ A raw line. %%% Syntax: A single line with leading spaces """ Another raw line, with leading spaces. %%% Syntax: Area (block) """ A raw area delimited by lines with marks. """ %%% Syntax: Area (block) with trailing spaces """ Trailing spaces and TABs after the area marks are allowed, but not encouraged nor documented. """ %%% Invalid: No space between mark and contents """Not a raw line, need one space after mark. %%% Invalid: Leading spaces on block marks """ Not a raw area. The marks must be at the line beginning, no leading spaces. """ %%% Closing: EOF closes the open block """ The end of the file (EOF) closes the currently open raw area. """ = Verbatim =[verbatim] %INCLUDED(t2t) starts here: ../../../test/marks/verbatim.t2t %%% Syntax: A single line ``` A verbatim line. %%% Syntax: A single line with leading spaces ``` Another verbatim line, with leading spaces. %%% Syntax: Area (block) ``` A verbatim area delimited by lines with marks. ``` %%% Syntax: Area (block) with trailing spaces ``` Trailing spaces and TABs after the area marks are allowed, but not encouraged nor documented. ``` %%% Invalid: No space between mark and contents ```Not a verbatim line, need one space after mark. %%% Invalid: Leading spaces on block marks ``` Not a verbatim area. The marks must be at the line beginning, no leading spaces. ``` %%% Closing: EOF closes the open block ``` The end of the file (EOF) closes the currently open verbatim area. ``` = Definition List =[deflist] : Definition list A list with terms : Start term with colon And its definition follows = Numbered List =[numlist] See [List #list], the same rules apply. = List =[list] %INCLUDED(t2t) starts here: ../../../test/marks/list.t2t %%% Items: Prefixed by hyphen - Use the hyphen to prefix list items. - There must be one space after the hyphen. - The list is closed by two consecutive blank lines. %%% Items: Free leading spacing (indentation) - The list can be indented on the source document. - You can use any number of spaces. - The result will be the same. %%% Items: Vertical spacing between items - Let one blank line between the list items. - It will be maintained on the conversion. - Some targets don't support this behavior. - This one was separated by a line with blanks. You can also put a blank line inside the item contents and it will be preserved. %%% Items: Exactly ONE space after the hyphen -This is not a list (no space) - This is not a list (more than one space) - This is not a list (a TAB instead the space) %%% Items: Catchy cases - - This is a list - + This is a list - : This is a list %%% Nesting: Creating sublists - This is the "mother" list first item. - Here is the second, but inside this item, - there is a sublist, with its own items. - Note that the items of the same sublist - must have the same indentation. - And this can go on, opening sublists. - Just add leading spaces before the - hyphen and sublists will be opened. - The two blank lines closes them all. %%% Nesting: Free leading spacing (indentation) - When nesting lists, the additional spaces are free. - You can add just one, - or many. - What matters is to put more than the previous. - But remember that the other items of the same list - must use the same indentation. %%% Nesting: Maximum depth - There is not a depth limit, - you can go deeper and deeper. - But some targets may have restrictions. - The LaTeX maximum is here, 4 levels. %%% Nesting: Reverse doesn't work - Reverse nesting doesn't work. - Because a sublist *must* have a mother list. - It's the list concept, not a txt2tags limitation. - All this sublists will be bumped to mother lists. - At level 1, like this one. %%% Nesting: Going deeper and back %% When nesting back to an upper level, the previous sublist %% is automatically closed. - Level 1 - Level 2 - Level 3 - Level 4 - Level 3 -- (closed Level 4) - Level 2 -- (closed Level 3) - Level 1 -- (closed Level 2) %% More than one list can be closed when nesting back. - Level 1 - Level 2 - Level 3 - Level 4 - Level 1 -- (closed Level 4, Level 3 and Level 2) %%% Nesting: Vertical spacing between lists - Level 1 - Level 2 -- blank BEFORE and AFTER (in) - Level 3 % comment lines are NOT considered blank lines - Level 4 % comment lines are NOT considered blank lines - Level 3 - Level 2 -- blank BEFORE and AFTER (out) - Level 1 - Level 2 -- blank BEFORE (spaces) and AFTER (TAB) - Level 3 %%% Nesting: Messing up %% Be careful when going back on the nesting, %% it must be on a valid level! If not, it will %% be bumped up to the previous valid level. - Level 1 - Level 2 - Level 3 - Level 4 - Level 3.5 ??? - Level 3 - Level 2.5 ??? - Level 2 - Level 1.5 ??? - Level 1 %%% Closing: Two (not so) empty lines - This list is closed by a line with spaces and other with TABs - This list is NOT closed by two comment lines % comment lines are NOT considered blank lines % comment lines are NOT considered blank lines - This list is closed by a line with spaces and TAB, - then a comment line, then an empty line. % comment lines are NOT considered blank lines %%% Closing: Empty item closes current (sub)list %% The two blank lines closes ALL the lists. %% To close just the current, use an empty item. - Level 1 - Level 2 - Level 3 - Level 2 - Level 1 - %% The empty item can have trailing blanks. - Empty item with trailing spaces. - - Empty item with trailing TAB. - %%% Closing: EOF closes the lists - If the end of the file (EOF) is hit, - all the currently opened list are closed, - just like when using the two blank lines. = Table =[table] %INCLUDED(t2t) starts here: ../../../test/marks/table.t2t %%% Syntax: Lines starting with a pipe | | Cell 1 %%% Syntax: Extra pipes separate cells | Cell 1 | Cell 2 | Cell 3 %%% Syntax: With a trailing pipe, make border | Cell 1 | Cell 2 | Cell 3 | %%% Syntax: Table lines starting with double pipe are heading || Cell 1 | Cell 2 | Cell 3 | %%% Align: Spaces before the leading pipe centralize the table | Cell 1 | Cell 2 | Cell 3 | %%% Align: Spaces inside the cell denote its alignment || Heading | Heading | Heading | % comments don't close an opened table | <- | -- | -> | | -- | -- | -- | | -> | -- | <- | %%% Span: Column span is defined by extra pipes at cell closing || 1 | 2 | 3+4 || | 1 | 2 | 3 | 4 | | 1+2+3 ||| 4 | | 1 | 2+3 || 4 | | 1+2+3+4 |||| %%% Test: Empty cells are placed as expected | 0 | 1 | 2 | | | 4 | 5 | | 7 | | 8 | | A | B | | | D | E | F | %%% Test: Lines with different number of cells | 1 | | 1 | 2 | | 1 | 2 | 3 | | 1 | 2 | 3 | 4 | | 1 | 2 | 3 | 4 | 5 | %%% Test: Empty cells + Span + Messy cell number = Fun! | Jan | | Fev || | Mar ||| | Apr |||| | May ||||| | 20% | 40% | 60% | 80% | 100% | | | | / | | | | | / / / / / ||| | | / / / / / / / / / ||||| | | o | | o | | | | | . | | | | | = = = = ||| | | 01 | 02 | | | 05 | | 07 | | | | | 11 | | 13 | | | 16 | | 17 | | 19 | 20 | | | 23 | | | 25 | 26 | | | 29 | 30 | | 32 | | | | 35 | | 37 | | 39 | 40 | %%% Test: Lots of cells at the same line | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | %%% Test: Empty lines | | | | | | %%% Invalid: There must be at least one space around the pipe |this|is|not|a|table| |this| is| not| a| table| |this |is |not |a |table | %%% Invalid: You must use spaces, not TABs | this | is | not | a | table | ------------------------------------------------------------ The End. pandoc-3.1.3/test/vimwiki-reader.native0000644000000000000000000016205407346545000016271 0ustar0000000000000000Pandoc Meta { unMeta = fromList [ ( "date" , MetaInlines [ Str "2017-05-01" ] ) , ( "title" , MetaInlines [ Str "title" ] ) ] } [ Header 1 ( "implemented" , [] , [] ) [ Emph [ Span ( "implemented" , [] , [] ) [] , Strong [ Str "implemented" ] ] ] , Header 1 ( "header" , [] , [] ) [ Str "header" ] , Header 2 ( "header level two" , [] , [] ) [ Str "header" , Space , Str "level" , Space , Str "two" ] , Header 3 ( "header level 3" , [] , [] ) [ Str "header" , Space , Code ( "" , [] , [] ) "level" , Space , Str "3" ] , Header 4 ( "header level four" , [] , [] ) [ Str "header" , Space , Strikeout [ Str "level" ] , Space , Str "four" ] , Header 5 ( "header level 5" , [] , [] ) [ Str "header" , Space , Emph [ Span ( "level" , [] , [] ) [] , Strong [ Str "level" ] , Space , Str "5" ] ] , Header 6 ( "header level 6" , [] , [] ) [ Str "header" , Space , Str "level" , Space , Str "6" ] , Para [ Str "=======" , Space , Str "not" , Space , Str "a" , Space , Str "header" , Space , Str "========" ] , Para [ Str "hi==" , Space , Str "not" , Space , Str "a" , Space , Str "header" , Space , Str "==" ] , Para [ Str "===" , Space , Str "not" , Space , Str "a" , Space , Str "header" , Space , Str "==" ] , Para [ Str "===" , Space , Str "not" , Space , Str "a" , Space , Str "header" , Space , Str "===-" ] , Para [ Str "not" , Space , Str "a" , Space , Str "header:" ] , Para [ Str "=n=" ] , Para [ Str "===" , Space , Str "not" , Space , Str "a" , Space , Str "header" , Space , Str "====" ] , Header 2 ( "centred header" , [ "justcenter" ] , [] ) [ Str "centred" , Space , Str "header" ] , Header 2 ( "header with some == in between" , [] , [] ) [ Str "header" , Space , Str "with" , Space , Str "some" , Space , Code ( "" , [] , [] ) "==" , Space , Str "in" , Space , Str "between" ] , Header 2 ( "header with some == in between" , [] , [] ) [ Str "header" , Space , Str "with" , Space , Str "some" , Space , Str "==" , Space , Str "in" , Space , Str "between" ] , Header 2 ( "header with some ==in between" , [] , [] ) [ Str "header" , Space , Str "with" , Space , Str "some" , Space , Str "==in" , Space , Str "between" ] , Header 2 ( "emph strong and strikeout" , [] , [] ) [ Str "emph" , Space , Str "strong" , Space , Str "and" , Space , Str "strikeout" ] , Para [ Emph [ Str "emph" ] , Space , Span ( "strong" , [] , [] ) [] , Strong [ Str "strong" ] ] , Para [ Span ( "strong and emph" , [] , [] ) [] , Strong [ Emph [ Str "strong" , Space , Str "and" , Space , Str "emph" ] ] ] , Para [ Emph [ Span ( "emph and strong" , [] , [] ) [] , Strong [ Str "emph" , Space , Str "and" , Space , Str "strong" ] ] ] , Para [ Span ( "emph inside strong" , [] , [] ) [] , Strong [ Emph [ Str "emph" , Space , Str "inside" ] , Space , Str "strong" ] ] , Para [ Span ( "strong with emph" , [] , [] ) [] , Strong [ Str "strong" , Space , Str "with" , Space , Emph [ Str "emph" ] ] ] , Para [ Emph [ Span ( "strong inside" , [] , [] ) [] , Strong [ Str "strong" , Space , Str "inside" ] , Space , Str "emph" ] ] , Para [ Emph [ Strikeout [ Str "strikeout" ] , Space , Str "inside" , Space , Str "emph" ] ] , Para [ Strikeout [ Str "This" , Space , Str "is" , Space , Emph [ Str "struck" , Space , Str "out" ] , Space , Str "with" , Space , Str "emph" ] ] , Para [ Str "*not" , SoftBreak , Str "strong*" ] , Para [ Str "just" , Space , Str "two" , Space , Str "stars:" , Space , Str "**" ] , Para [ Str "just" , Space , Str "two" , Space , Str "underscores:" , Space , Str "__" ] , Para [ Str "just" , Space , Str "four" , Space , Str "~s:" , Space , Str "~~~~" ] , Para [ Str "_not" , SoftBreak , Str "emph_" ] , Para [ Str "~~not" , SoftBreak , Str "strikeout~~" ] , Header 2 ( "horizontal rule" , [] , [] ) [ Str "horizontal" , Space , Str "rule" ] , Para [ Str "top" ] , HorizontalRule , Para [ Str "middle" ] , HorizontalRule , Para [ Str "not" , Space , Str "a" , Space , Str "rule-----" ] , Para [ Str "not" , Space , Str "a" , Space , Str "rule" , Space , Str "(trailing" , Space , Str "spaces):" , SoftBreak , Str "-----" ] , Para [ Str "not" , Space , Str "a" , Space , Str "rule" , Space , Str "(leading" , Space , Str "spaces):" , SoftBreak , Str "----" ] , Header 2 ( "comments" , [] , [] ) [ Str "comments" ] , Para [ Str "this" , SoftBreak , Str "is" , Space , Str "%%" , Space , Str "not" , Space , Str "secret" ] , Header 2 ( "inline code" , [] , [] ) [ Str "inline" , Space , Str "code" ] , Para [ Str "Here" , Space , Str "is" , Space , Str "some" , Space , Code ( "" , [] , [] ) "inline code" , Str "." ] , Para [ Str "Just" , Space , Str "two" , Space , Str "backticks:" , Space , Str "``" ] , Header 2 ( "preformatted text" , [] , [] ) [ Str "preformatted" , Space , Str "text" ] , CodeBlock ( "" , [] , [] ) " Tyger! Tyger! burning bright\n In the forests of the night,\n What immortal hand or eye\n Could frame thy fearful symmetry?\n In what distant deeps or skies\n Burnt the fire of thine eyes?\n On what wings dare he aspire?\n What the hand dare sieze the fire?" , Header 3 ( "preformatted text with attributes" , [] , [] ) [ Str "preformatted" , Space , Str "text" , Space , Str "with" , Space , Str "attributes" ] , CodeBlock ( "" , [] , [ ( "class" , "python" ) , ( "style" , "color:blue" ) ] ) " for i in range(1, 5):\n print(i)" , Header 3 ( "preformatted text with nested syntax" , [] , [] ) [ Str "preformatted" , Space , Str "text" , Space , Str "with" , Space , Str "nested" , Space , Str "syntax" ] , CodeBlock ( "" , [ "sql" ] , [] ) "SELECT * FROM table" , Header 3 ( "empty preformatted text" , [] , [] ) [ Str "empty" , Space , Str "preformatted" , Space , Str "text" ] , CodeBlock ( "" , [] , [] ) "" , Header 2 ( "block quotes" , [] , [] ) [ Str "block" , Space , Str "quotes" ] , BlockQuote [ Plain [ Str "(indentation" , Space , Str "4" , Space , Str "spaces)" , Space , Str "This" , Space , Str "would" , Space , Str "be" , Space , Str "a" , Space , Str "blockquote" , Space , Str "in" , Space , Str "Vimwiki." , Space , Str "It" , Space , Str "is" , Space , Str "not" , Space , Span ( "highlighted" , [] , [] ) [] , Strong [ Str "highlighted" ] , Space , Str "in" , Space , Str "Vim" , Space , Str "but" , SoftBreak , Str "(indentation" , Space , Str "1" , Space , Str "space" , Space , Str "followed" , Space , Str "by" , Space , Str "1" , Space , Str "tab" , Space , Str "of" , Space , Str "width" , Space , Str "4)" , Space , Str "could" , Space , Str "be" , Space , Str "styled" , Space , Str "by" , Space , Str "CSS" , Space , Str "in" , Space , Str "HTML." , Space , Str "Blockquotes" , Space , Str "are" , Space , Str "usually" , Space , Str "used" , Space , Str "to" , Space , Str "quote" , Space , Str "a" , SoftBreak , Str "(indentation" , Space , Str "1" , Space , Str "tab" , Space , Str "of" , Space , Str "width" , Space , Str "4)" , Space , Str "long" , Space , Str "piece" , Space , Str "of" , Space , Str "text" , Space , Str "from" , Space , Str "another" , Space , Str "source." , Space , Strikeout [ Str "blah" , Space , Str "blah" ] , Space , Span ( "-blockquote" , [] , [] ) [ Str "" ] , Span ( "blockquote" , [ "tag" ] , [] ) [ Str "blockquote" ] ] ] , Header 2 ( "external links" , [] , [] ) [ Str "external" , Space , Str "links" ] , Para [ Link ( "" , [] , [] ) [ Emph [ Str "Google" ] , Space , Str "search" , Space , Str "engine" ] ( "http://google.com" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "http://pandoc.org" ] ( "http://pandoc.org" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "ftp://vim.org" ] ( "ftp://vim.org" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "http://google.com" ] ( "http://google.com" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "email" , Space , Str "me" ] ( "mailto:info@example.org" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "mailto:hello@bye.com" ] ( "mailto:hello@bye.com" , "" ) ] , Header 2 ( "internal links" , [] , [] ) [ Str "internal" , Space , Str "links" ] , Para [ Link ( "" , [] , [] ) [ Str "This is a link" ] ( "This is a link" , "wikilink" ) ] , Para [ Link ( "" , [] , [] ) [ Str "Description" , Space , Str "of" , Space , Str "the" , Space , Str "link" ] ( "This is a link source" , "wikilink" ) ] , Para [ Link ( "" , [] , [] ) [ Str "projects/Important Project 1" ] ( "projects/Important Project 1" , "wikilink" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "../index" ] ( "../index" , "wikilink" ) , SoftBreak , Link ( "" , [] , [] ) [ Str "Other" , Space , Str "files" ] ( "a subdirectory/" , "wikilink" ) ] , Para [ Link ( "" , [] , [] ) [ Str "try" , Space , Str "me" , Space , Str "to" , Space , Str "test" , Space , Str "tag" , Space , Str "anchors" ] ( "#tag-one" , "wikilink" ) ] , Para [ Link ( "" , [] , [] ) [ Str "try" , Space , Str "me" , Space , Str "to" , Space , Str "test" , Space , Str "header" , Space , Str "anchors" ] ( "#block quotes" , "wikilink" ) ] , Para [ Link ( "" , [] , [] ) [ Str "try" , Space , Str "me" , Space , Str "to" , Space , Str "test" , Space , Str "strong" , Space , Str "anchors" ] ( "#strong" , "wikilink" ) ] , Para [ Link ( "" , [] , [] ) [ Str "Tasks" , Space , Str "for" , Space , Str "tomorrow" ] ( "Todo List#Tomorrow" , "wikilink" ) ] , Para [ Link ( "" , [] , [] ) [ Str "diary:2017-05-01" ] ( "diary/2017-05-01" , "wikilink" ) ] , Para [ Link ( "" , [] , [] ) [ Str "Important" , Space , Str "Data" ] ( "file:../assets/data.csv" , "" ) ] , Header 3 ( "links with thumbnails" , [] , [] ) [ Str "links" , Space , Str "with" , Space , Str "thumbnails" ] , Para [ Link ( "" , [] , [] ) [ Image ( "" , [] , [] ) [ Str "" ] ( "./movie.jpg" , "" ) ] ( "http://www.google.com" , "" ) ] , Header 2 ( "images" , [] , [] ) [ Str "images" ] , Para [ Image ( "" , [] , [] ) [ Str "" ] ( "file:./lalune.jpg" , "" ) ] , Para [ Image ( "" , [] , [] ) [ Str "Vimwiki" ] ( "http://vimwiki.googlecode.com/hg/images/vimwiki_logo.png" , "" ) , SoftBreak , Image ( "" , [] , [] ) [ Str "" ] ( "file:./movie.jpg" , "" ) ] , Header 3 ( "image with attributes" , [] , [] ) [ Str "image" , Space , Str "with" , Space , Str "attributes" ] , Para [ Image ( "" , [] , [ ( "style" , "width:150px;height:120px;" ) ] ) [ Emph [ Str "cool" , Space , Str "stuff" ] ] ( "lalune.jpg" , "" ) ] , Para [ Image ( "" , [] , [ ( "style" , "font-color:red" ) ] ) [ Span ( "Non-existing" , [] , [] ) [] , Strong [ Str "Non-existing" ] , Space , Str "image" ] ( "nonexist.jpg" , "" ) ] , Para [ Image ( "" , [] , [ ( "style" , "width:150px;height:120px;" ) ] ) [ Emph [ Str "cool" , Space , Str "stuff" ] ] ( "lalune.jpg" , "" ) ] , Header 2 ( "lists" , [] , [] ) [ Str "lists" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "ordered" , Space , Str "list" , Space , Str "item" , Space , Str "1," , Space , Str "and" , Space , Str "here" , Space , Str "is" , Space , Str "some" , Space , Str "math" , Space , Str "belonging" , Space , Str "to" , Space , Str "list" , Space , Str "item" , Space , Str "1" ] , Para [ Math DisplayMath "a^2 + b^2 = c^2" ] , Plain [ Str "and" , Space , Str "some" , Space , Str "preformatted" , Space , Str "and" , Space , Str "tables" , Space , Str "belonging" , Space , Str "to" , Space , Str "item" , Space , Str "1" , Space , Str "as" , Space , Str "well" ] , CodeBlock ( "" , [] , [] ) "I'm part of item 1." , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "this" , Space , Str "table" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "is" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "also" , Space , Str "a" , Space , Str "part" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "of" , Space , Str "item" , Space , Str "1" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Plain [ Str "and" , Space , Str "some" , Space , Str "more" , Space , Str "text" , Space , Str "belonging" , Space , Str "to" , Space , Str "item" , Space , Str "1." ] ] , [ Plain [ Str "ordered" , Space , Str "list" , Space , Str "item" , Space , Str "2" ] ] ] , BulletList [ [ Plain [ Str "Bulleted" , Space , Str "list" , Space , Str "item" , Space , Str "1" ] ] , [ Plain [ Str "Bulleted" , Space , Str "list" , Space , Str "item" , Space , Str "2" ] ] ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Bulleted" , Space , Str "list" , Space , Str "item" , Space , Str "1" ] ] , [ Plain [ Str "the" , Space , Str "#" , Space , Str "become" , Space , Str "numbers" , Space , Str "when" , Space , Str "converted" , Space , Str "to" , Space , Str "HTML" ] ] ] , BulletList [ [ Plain [ Str "Bulleted" , Space , Str "list" , Space , Str "item" , Space , Str "1" ] ] , [ Plain [ Str "Bulleted" , Space , Str "list" , Space , Str "item" , Space , Str "2" ] ] ] , BulletList [ [ Plain [ Str "Item" , Space , Str "1" ] ] , [ Plain [ Str "Item" , Space , Str "2" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Sub" , Space , Str "item" , Space , Str "1" , Space , Str "(indentation" , Space , Str "4" , Space , Str "spaces)" , SoftBreak , Str "Sub" , Space , Str "item" , Space , Str "1" , Space , Str "continued" , Space , Str "line." , SoftBreak , Str "Sub" , Space , Str "item" , Space , Str "1" , Space , Str "next" , Space , Str "continued" , Space , Str "line." ] ] , [ Plain [ Str "Sub" , Space , Str "item" , Space , Str "2," , Space , Str "as" , Space , Str "an" , Space , Str "ordered" , Space , Str "list" , Space , Str "item" , Space , Str "even" , Space , Str "though" , Space , Str "the" , Space , Str "identifier" , Space , Str "is" , Space , Code ( "" , [] , [] ) "*" , Space , Str "(indentation" , Space , Str "2" , Space , Str "spaces" , Space , Str "followed" , Space , Str "by" , Space , Str "one" , Space , Str "tab" , Space , Str "of" , Space , Str "width" , Space , Str "4)" ] ] , [ Plain [ Str "etc." , SoftBreak , Str "Continuation" , Space , Str "of" , Space , Str "Item" , Space , Str "2" , SoftBreak , Str "Next" , Space , Str "continuation" , Space , Str "of" , Space , Str "Item" , Space , Str "2" ] ] ] ] ] , Para [ Str "But" , Space , Str "this" , Space , Str "is" , Space , Str "a" , Space , Str "new" , Space , Str "paragraph." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "1" ] , BulletList [ [ Plain [ Code ( "" , [] , [] ) "1.1" ] ] ] ] , [ Plain [ Str "2" ] , BulletList [ [ Plain [ Str "2.1" ] ] ] ] ] , BulletList [ [ Plain [ Str "3" ] ] ] , Header 3 ( "ordered lists with non-# identifiers" , [] , [] ) [ Str "ordered" , Space , Str "lists" , Space , Str "with" , Space , Str "non-#" , Space , Str "identifiers" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Numbered" , Space , Str "list" , Space , Str "item" , Space , Str "1" ] ] , [ Plain [ Str "Numbered" , Space , Str "list" , Space , Str "item" , Space , Str "2" ] ] , [ Plain [ Str "Numbered" , Space , Str "list" , Space , Str "item" , Space , Str "3" ] ] ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Numbered" , Space , Str "list" , Space , Str "item" , Space , Str "1" ] ] , [ Plain [ Str "Numbered" , Space , Str "list" , Space , Str "item" , Space , Str "2" ] ] , [ Plain [ Str "Numbered" , Space , Str "list" , Space , Str "item" , Space , Str "3" ] ] ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Numbered" , Space , Str "list" , Space , Str "item" , Space , Str "1" ] ] , [ Plain [ Str "Numbered" , Space , Str "list" , Space , Str "item" , Space , Str "2" ] ] , [ Plain [ Str "Numbered" , Space , Str "list" , Space , Str "item" , Space , Str "3" ] ] ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Numbered" , Space , Str "list" , Space , Str "item" , Space , Str "1" ] ] , [ Plain [ Str "Numbered" , Space , Str "list" , Space , Str "item" , Space , Str "2" ] ] , [ Plain [ Str "Numbered" , Space , Str "list" , Space , Str "item" , Space , Str "3" ] ] ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Numbered" , Space , Str "list" , Space , Str "item" , Space , Str "1" ] ] , [ Plain [ Str "Numbered" , Space , Str "list" , Space , Str "item" , Space , Str "2" ] ] , [ Plain [ Str "Numbered" , Space , Str "list" , Space , Str "item" , Space , Str "3" ] ] ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Numbered" , Space , Str "list" , Space , Str "item" , Space , Str "1" ] ] , [ Plain [ Str "Numbered" , Space , Str "list" , Space , Str "item" , Space , Str "2" ] ] , [ Plain [ Str "Numbered" , Space , Str "list" , Space , Str "item" , Space , Str "3" ] ] ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Numbered" , Space , Str "list" , Space , Str "item" , Space , Str "1" ] ] , [ Plain [ Str "Numbered" , Space , Str "list" , Space , Str "item" , Space , Str "2" ] ] , [ Plain [ Str "Numbered" , Space , Str "list" , Space , Str "item" , Space , Str "3" ] ] ] , BulletList [ [ Plain [ Str "Bulleted" , Space , Str "list" , Space , Str "item" , Space , Str "1" ] ] , [ Plain [ Str "Bulleted" , Space , Str "list" , Space , Str "item" , Space , Str "2" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Numbered" , Space , Str "list" , Space , Str "sub" , Space , Str "item" , Space , Str "1" ] ] , [ Plain [ Str "more" , Space , Str "..." ] , BulletList [ [ Plain [ Str "and" , Space , Str "more" , Space , Str "..." ] ] , [ Plain [ Str "..." ] ] ] ] , [ Plain [ Str "Numbered" , Space , Str "list" , Space , Str "sub" , Space , Str "item" , Space , Str "3" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Numbered" , Space , Str "list" , Space , Str "sub" , Space , Str "sub" , Space , Str "item" , Space , Str "1" ] ] , [ Plain [ Str "Numbered" , Space , Str "list" , Space , Str "sub" , Space , Str "sub" , Space , Str "item" , Space , Str "2" ] ] ] ] , [ Plain [ Str "etc." ] ] ] ] , [ Plain [ Str "Bulleted" , Space , Str "list" , Space , Str "item" , Space , Str "3" ] ] ] , Header 2 ( "todo lists" , [] , [] ) [ Str "todo" , Space , Str "lists" ] , BulletList [ [ Plain [ Span ( "" , [ "done0" ] , [] ) [] , Str "task" , Space , Str "1" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Span ( "" , [ "done1" ] , [] ) [] , Str "5" ] ] ] ] , [ Plain [ Span ( "" , [ "done2" ] , [] ) [] , Str "3" ] ] , [ Plain [ Str "[]" , Space , Str "not" , Space , Str "a" , Space , Str "todo" , Space , Str "item" ] ] , [ Plain [ Str "[" , Space , Str "]not" , Space , Str "a" , Space , Str "todo" , Space , Str "item" ] ] , [ Plain [ Str "[r]" , Space , Str "not" , Space , Str "a" , Space , Str "todo" , Space , Str "item" ] ] , [ Plain [ Str "[" , Space , Str "]" , Space , Str "not" , Space , Str "a" , Space , Str "todo" , Space , Str "item" ] ] , [ Plain [ Span ( "" , [ "done2" ] , [] ) [] , Str "a" , Space , Str "tab" , Space , Str "in" , Space , Str "the" , Space , Str "todo" , Space , Str "list" , Space , Str "marker" , Space , Code ( "" , [] , [] ) "[ ]" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Span ( "" , [ "done3" ] , [] ) [] , Str "4" , SoftBreak , Str "5" ] ] , [ Plain [ Span ( "" , [ "done4" ] , [] ) [] ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "a" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "b" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] ] ] , [ Plain [ Span ( "" , [ "done4" ] , [] ) [] , Str "task" , Space , Str "2" ] ] ] , Header 2 ( "math" , [] , [] ) [ Str "math" ] , Para [ Math InlineMath " \\sum_i a_i^2 = 1 " ] , Para [ Math DisplayMath "\\sum_i a_i^2\n=\n1" ] , Para [ Math DisplayMath "\\begin{aligned}\n\\sum_i a_i^2 &= 1 + 1 \\\\\n&= 2.\n\\end{aligned}" ] , Para [ Str "edge" , Space , Str "case" , Space , Str "(the" , Space , Code ( "" , [] , [] ) "c^2 + " , Space , Str "after" , Space , Str "the" , Space , Str "multline" , Space , Str "tag" , Space , Str "is" , Space , Str "in" , Space , Str "the" , Space , Str "equation):" ] , Para [ Math DisplayMath "\\begin{gathered}\nc^2 + \na^2 + b^2\n\\end{gathered}" ] , Para [ Str "edge" , Space , Str "case" , Space , Str "(the" , Space , Str "tag" , Space , Str "is" , Space , Code ( "" , [] , [] ) "hello%bye" , Str ")" ] , Para [ Math DisplayMath "\\begin{hello%bye}\n\\int_a^b f(x) dx\n\\end{hello%bye}" ] , Para [ Str "Just" , Space , Str "two" , Space , Str "dollar" , Space , Str "signs:" , Space , Str "$$" ] , Para [ Str "[not" , Space , Str "math]" , Space , Str "You" , Space , Str "have" , Space , Str "$1" , SoftBreak , Str "and" , Space , Str "I" , Space , Str "have" , Space , Str "$1." ] , Header 2 ( "tags" , [] , [] ) [ Str "tags" ] , Para [ Span ( "-tag-one" , [] , [] ) [ Str "" ] , Span ( "tag-one" , [ "tag" ] , [] ) [ Str "tag-one" ] , Space , Span ( "-tag-two" , [] , [] ) [ Str "" ] , Span ( "tag-two" , [ "tag" ] , [] ) [ Str "tag-two" ] ] , Header 2 ( "tables" , [] , [] ) [ Str "tables" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Year" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Temperature" , Space , Str "(low)" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "Temperature" , Space , Str "(high)" ] ] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1900" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "-10" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "25" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1910" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "-15" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "30" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1920" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "-10" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "32" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1930" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Emph [ Str "N/A" ] ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Emph [ Str "N/A" ] ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "1940" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "-2" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "40" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Header 3 ( "centered headerless tables" , [] , [] ) [ Str "centered" , Space , Str "headerless" , Space , Str "tables" ] , Div ( "" , [ "center" ] , [] ) [ Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "a" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "b" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "c" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "d" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) ] , Header 2 ( "paragraphs" , [] , [] ) [ Str "paragraphs" ] , Para [ Str "This" , Space , Str "is" , Space , Str "first" , Space , Str "paragraph" , SoftBreak , Str "with" , Space , Str "two" , Space , Str "lines." ] , Para [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "second" , Space , Str "paragraph" , Space , Str "with" , SoftBreak , Str "two" , Space , Str "lines" , Space , Str "after" , Space , Str "many" , Space , Str "blank" , Space , Str "lines." ] , Header 2 ( "definition list" , [] , [] ) [ Str "definition" , Space , Str "list" ] , DefinitionList [ ( [ Str "Term" , Space , Str "1" ] , [ [ Plain [ Str "Definition" , Space , Str "1" ] ] ] ) , ( [ Str "Term" , Space , Str "2" ] , [ [ Plain [ Str "Definition" , Space , Str "2" ] ] , [ Plain [ Str "Definition" , Space , Str "3" ] ] ] ) , ( [ Str "Term" , Space , Str "::" , Space , Span ( "separated" , [] , [] ) [] , Strong [ Str "separated" ] , Space , Str "by" , Space , Str "::" , Space , Emph [ Str "double" , Space , Str "colons" ] ] , [ [ Plain [ Str "Def1" ] ] , [ Plain [ Str "Def2" ] ] ] ) , ( [ Str "Term" , Space , Str "with" , Space , Str "lots" , Space , Str "of" , Space , Str "trailing" , Space , Str "colons:::::::" ] , [ [ Plain [ Str "Definition" ] ] ] ) , ( [ Str "::" , Space , Str "This" , Space , Str "is" , Space , Str "::" , Space , Str "A" , Space , Str "term" , Space , Str "(rather" , Space , Str "than" , Space , Str "a" , Space , Str "definition)" ] , [ [ Plain [ Str "and" , Space , Str "this" , Space , Str "is" , Space , Str "a" , Space , Str "definition" ] ] ] ) , ( [ Str "Term" , Space , Str "Without" , Space , Str "definitions" ] , [ [] ] ) , ( [ Str "Part" , Space , Str "::" , Space , Str "of" , Space , Str "::" , Space , Str "dt" ] , [ [ Plain [ Str "part" , Space , Str "of" , Space , Str "::dd" ] ] ] ) ] , DefinitionList [ ( [] , [ [ Plain [ Str "Definition" , Space , Str "1" , Space , Str "without" , Space , Str "a" , Space , Str "term" ] ] , [ Plain [ Str "Definition" , Space , Str "2" , Space , Str "without" , Space , Str "a" , Space , Str "term" ] ] ] ) ] , DefinitionList [ ( [ Str "T1" ] , [ [ Plain [ Str "D1" ] ] ] ) ] , Para [ Str "new" , Space , Str "paragraph" ] , DefinitionList [ ( [ Str "T1" ] , [ [ Plain [ Str "D1" ] ] ] ) ] , Para [ Str "Not::Definition" ] , Para [ Str "Not" , Space , Str "::Definition" ] , Para [ Str "::Not" , Space , Str "definition" ] , BlockQuote [ Plain [ Str "::" , Space , Str "blockquote" ] ] , BlockQuote [ Plain [ Str "block" , Space , Str "::" , Space , Str "quote" ] ] , Header 2 ( "metadata placeholders" , [] , [] ) [ Str "metadata" , Space , Str "placeholders" ] , Para [ Str "%this" , Space , Str "is" , Space , Str "not" , Space , Str "a" , Space , Str "placeholder" ] , Para [ Str "placeholders" , SoftBreak , Str "serves" , Space , Str "as" , Space , Str "space" , Space , Str "/" , Space , Str "softbreak" , Space , Str "in" , Space , Str "paragraphs" ] , Header 2 ( "sup, sub" , [] , [] ) [ Str "sup," , Space , Str "sub" ] , Para [ Str "super" , Superscript [ Str "script" ] ] , Para [ Str "sub" , Subscript [ Str "script" ] ] , Header 2 ( "the todo mark" , [] , [] ) [ Str "the" , Space , Str "todo" , Space , Str "mark" ] , Para [ Span ( "" , [ "todo" ] , [] ) [ Str "TODO:" ] ] , Header 1 ( "not implemented yet" , [] , [] ) [ Emph [ Span ( "not implemented yet" , [] , [] ) [] , Strong [ Str "not" , Space , Str "implemented" , Space , Str "yet" ] ] ] , Header 2 ( "tables with spans" , [] , [] ) [ Str "tables" , Space , Str "with" , Space , Str "spans" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "a" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "b" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "c" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "d" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "\\/" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "e" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str ">" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "f" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "\\/" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "\\/" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str ">" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "g" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "h" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str ">" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str ">" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str ">" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Header 2 ( "tables with multiple lines of headers" , [] , [] ) [ Str "tables" , Space , Str "with" , Space , Str "multiple" , Space , Str "lines" , Space , Str "of" , Space , Str "headers" ] , Table ( "" , [] , [] ) (Caption Nothing []) [ ( AlignDefault , ColWidthDefault ) , ( AlignDefault , ColWidthDefault ) ] (TableHead ( "" , [] , [] ) [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] ] ]) [ TableBody ( "" , [] , [] ) (RowHeadColumns 0) [] [ Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "a" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "b" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "c" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "d" ] ] ] , Row ( "" , [] , [] ) [ Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "---" ] ] , Cell ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [ Plain [ Str "---" ] ] ] ] ] (TableFoot ( "" , [] , [] ) []) , Header 2 ( "some other placeholders" , [] , [] ) [ Str "some" , Space , Str "other" , Space , Str "placeholders" ] , Para [ Code ( "" , [] , [] ) "template" , Space , Str "placeholder" , Space , Str "is" , Space , Str "ignored." ] , Para [ Code ( "" , [] , [] ) "nohtml" , Space , Str "placeholder" , Space , Str "is" , Space , Str "ignored." ] ] pandoc-3.1.3/test/vimwiki-reader.wiki0000644000000000000000000001601607346545000015742 0ustar0000000000000000= _*implemented*_ = = header = == header level two == === header `level` 3 === ==== header ~~level~~ four ==== ===== header _*level* 5_ ===== ====== header level 6 ====== ======= not a header ======== hi== not a header == === not a header == === not a header ===- not a header: =n= === not a header ==== == centred header == == header with some `==` in between == == header with some == in between == == header with some ==in between == == emph strong and strikeout == _emph_ *strong* *_strong and emph_* _*emph and strong*_ *_emph inside_ strong* *strong with _emph_* _*strong inside* emph_ _~~strikeout~~ inside emph_ ~~This is _struck out_ with emph~~ *not strong* just two stars: ** just two underscores: __ just four ~s: ~~~~ _not %%comment emph_ ~~not %%comment %%comment strikeout~~ == horizontal rule == top ---- middle ------- not a rule----- not a rule (trailing spaces): ----- not a rule (leading spaces): ---- == comments == %% you can't see me. this %% secret is %% not secret == inline code == Here is some `inline code`. Just two backticks: `` == preformatted text == {{{ Tyger! Tyger! burning bright In the forests of the night, What immortal hand or eye Could frame thy fearful symmetry? In what distant deeps or skies Burnt the fire of thine eyes? On what wings dare he aspire? What the hand dare sieze the fire? }}} === preformatted text with attributes === {{{class="python" style="color:blue" for i in range(1, 5): print(i) }}} === preformatted text with nested syntax === {{{sql SELECT * FROM table }}} === empty preformatted text === {{{ }}} == block quotes == (indentation 4 spaces) This would be a blockquote in Vimwiki. It is not *highlighted* in Vim but (indentation 1 space followed by 1 tab of width 4) could be styled by CSS in HTML. Blockquotes are usually used to quote a (indentation 1 tab of width 4) long piece of text from another source. ~~blah blah~~ :blockquote: == external links == [[http://google.com|_Google_ search engine]] http://pandoc.org ftp://vim.org [[http://google.com]] [[mailto:info@example.org|email me]] mailto:hello@bye.com == internal links == [[This is a link]] [[This is a link source|Description of the link]] [[projects/Important Project 1]] [[../index]] [[a subdirectory/|Other files]] [[#tag-one|try me to test tag anchors]] [[#block quotes|try me to test header anchors]] [[#strong|try me to test strong anchors]] [[Todo List#Tomorrow|Tasks for tomorrow]] [[diary:2017-05-01]] [[file:../assets/data.csv|Important Data]] === links with thumbnails === [[http://www.google.com|{{./movie.jpg}}]] == images == {{file:./lalune.jpg}} {{http://vimwiki.googlecode.com/hg/images/vimwiki_logo.png|Vimwiki}} {{local:./movie.jpg}} === image with attributes === {{lalune.jpg|_cool stuff_|style="width:150px;height:120px;"}} {{nonexist.jpg|*Non-existing* image|class="center flow blabla" style="font-color:red"}} {{lalune.jpg|_cool stuff_|style="width:150px;height:120px;"|anything in this segment is ignored}} == lists == # ordered list item 1, and here is some math belonging to list item 1 {{$ a^2 + b^2 = c^2 }}$ and some preformatted and tables belonging to item 1 as well {{{ I'm part of item 1. }}} | this table | is | | also a part | of item 1 | and some more text belonging to item 1. # ordered list item 2 * Bulleted list item 1 * Bulleted list item 2 # Bulleted list item 1 # the # become numbers when converted to HTML - Bulleted list item 1 - Bulleted list item 2 * Item 1 * Item 2 # Sub item 1 (indentation 4 spaces) Sub item 1 continued line. %%comments Sub item 1 next continued line. * Sub item 2, as an ordered list item even though the identifier is `*` (indentation 2 spaces followed by one tab of width 4) * etc. Continuation of Item 2 Next continuation of Item 2 But this is a new paragraph. # 1 * `1.1` * 2 * 2.1 * 3 === ordered lists with non-# identifiers === 1. Numbered list item 1 2. Numbered list item 2 3. Numbered list item 3 4. Numbered list item 1 5. Numbered list item 2 6. Numbered list item 3 1) Numbered list item 1 2) Numbered list item 2 3) Numbered list item 3 a) Numbered list item 1 b) Numbered list item 2 c) Numbered list item 3 A) Numbered list item 1 B) Numbered list item 2 C) Numbered list item 3 i) Numbered list item 1 ii) Numbered list item 2 iii) Numbered list item 3 I) Numbered list item 1 II) Numbered list item 2 III) Numbered list item 3 - Bulleted list item 1 - Bulleted list item 2 a) Numbered list sub item 1 b) more ... * and more ... * ... c) Numbered list sub item 3 1. Numbered list sub sub item 1 2. Numbered list sub sub item 2 d) etc. - Bulleted list item 3 == todo lists == * [ ] task 1 1. [.] 5 * [o] 3 * [] not a todo item * [ ]not a todo item * [r] not a todo item * [ ] not a todo item * [o] a tab in the todo list marker `[ ]` III) [O] 4 5 i) [X] | a | b | * [X] task 2 == math == $ \sum_i a_i^2 = 1 $ {{$ \sum_i a_i^2 = 1 }}$ {{$%align% \sum_i a_i^2 &= 1 + 1 \\ &= 2. }}$ edge case (the `c^2 + ` after the multline tag is in the equation): {{$%multline%c^2 + a^2 + b^2 }}$ edge case (the tag is `hello%bye`) {{$%hello%bye% \int_a^b f(x) dx }}$ Just two dollar signs: $$ [not math] You have $1 and I have $1. == tags == :tag-one:tag-two: == tables == | Year | Temperature (low) | Temperature (high) | |------|-------------------|--------------------| | 1900 | -10 | 25 | | 1910 | -15 | 30 | | 1920 | -10 | 32 | | 1930 | _N/A_ | _N/A_ | | 1940 | -2 | 40 | === centered headerless tables === | a | b | | c | d | == paragraphs == This is first paragraph with two lines. This is a second paragraph with two lines after many blank lines. == definition list == Term 1:: Definition 1 Term 2:: :: Definition 2 :: Definition 3 Term :: *separated* by :: _double colons_ :: Def1 :: Def2 Term with lots of trailing colons::::::::: Definition :: This is :: A term (rather than a definition) :: and this is a definition Term Without definitions :: :: Part :: of :: dt :: part of ::dd :: Definition 1 without a term :: Definition 2 without a term T1 :: D1 new paragraph T1 :: D1 Not::Definition Not ::Definition ::Not definition :: blockquote block :: quote == metadata placeholders == %title title %date 2017-05-01 %title second title is ignored %date second date is ignored %this is not a placeholder placeholders %title another title %date 2017-04-23 serves as space / softbreak in paragraphs == sup, sub == super^script^ sub,,script,, == the todo mark == TODO: = _*not implemented yet*_ = == tables with spans == | a | b | c | d | | \/ | e | > | f | | \/ | \/ | > | g | | h | > | > | > | == tables with multiple lines of headers == | a | b | | c | d | |---|---| == some other placeholders == `template` placeholder is ignored. %template template `nohtml` placeholder is ignored. %nohtml pandoc-3.1.3/test/writer.asciidoc0000644000000000000000000002014707346545000015152 0ustar0000000000000000= Pandoc Test Suite John MacFarlane; Anonymous July 17, 2006 This is a set of tests for pandoc. Most of them are adapted from John Gruber’s markdown test suite. ''''' == Headers === Level 2 with an link:/url[embedded link] ==== Level 3 with _emphasis_ ===== Level 4 ====== Level 5 == Level 1 === Level 2 with _emphasis_ ==== Level 3 with no blank line === Level 2 with no blank line ''''' == Paragraphs Here’s a regular paragraph. In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item. Here’s one with a bullet. * criminey. There should be a hard line break + here. ''''' == Block Quotes E-mail style: ____ This is a block quote. It is pretty short. ____ ____ -- Code in a block quote: .... sub status { print "working"; } .... A list: [arabic] . item one . item two Nested block quotes: ____ nested ____ ____ nested ____ -- ____ This should not be a block quote: 2 > 1. And a following paragraph. ''''' == Code Blocks Code: .... ---- (should be four hyphens) sub status { print "working"; } this code block is indented by one tab .... And: .... this code block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{ .... ''''' == Lists === Unordered Asterisks tight: * asterisk 1 * asterisk 2 * asterisk 3 Asterisks loose: * asterisk 1 * asterisk 2 * asterisk 3 Pluses tight: * Plus 1 * Plus 2 * Plus 3 Pluses loose: * Plus 1 * Plus 2 * Plus 3 Minuses tight: * Minus 1 * Minus 2 * Minus 3 Minuses loose: * Minus 1 * Minus 2 * Minus 3 === Ordered Tight: [arabic] . First . Second . Third and: [arabic] . One . Two . Three Loose using tabs: [arabic] . First . Second . Third and using spaces: [arabic] . One . Two . Three Multiple paragraphs: [arabic] . Item 1, graf one. + Item 1. graf two. The quick brown fox jumped over the lazy dog’s back. . Item 2. . Item 3. === Nested * Tab ** Tab *** Tab Here’s another: [arabic] . First . Second: * Fee * Fie * Foe . Third Same thing but with paragraphs: [arabic] . First . Second: * Fee * Fie * Foe . Third === Tabs and spaces * this is a list item indented with tabs * this is a list item indented with spaces ** this is an example list item indented with tabs ** this is an example list item indented with spaces === Fancy list markers [arabic, start=2] . begins with 2 . and now 3 + with a continuation [lowerroman, start=4] .. sublist with roman numerals, starting with 4 .. more items [upperalpha] ... a subsublist ... a subsublist Nesting: [upperalpha] . Upper Alpha [upperroman] .. Upper Roman. [arabic, start=6] ... Decimal start with 6 [loweralpha, start=3] .... Lower alpha with paren Autonumbering: . Autonumber. . More. .. Nested. Should not be a list item: M.A. 2007 B. Williams ''''' == Definition Lists Tight using spaces: apple:: red fruit orange:: orange fruit banana:: yellow fruit Tight using tabs: apple:: red fruit orange:: orange fruit banana:: yellow fruit Loose: apple:: red fruit orange:: orange fruit banana:: yellow fruit Multiple blocks with italics: _apple_:: red fruit + contains seeds, crisp, pleasant to taste _orange_:: orange fruit + .... { orange code block } .... + ____ orange block quote ____ Multiple definitions, tight: apple:: red fruit + computer orange:: orange fruit + bank Multiple definitions, loose: apple:: red fruit + computer orange:: orange fruit + bank Blank line after term, indented marker, alternate markers: apple:: red fruit + computer orange:: orange fruit + [arabic] . sublist . sublist == HTML Blocks Simple block on one line: foo And nested without indentation: foo bar Interpreted markdown in a table: This is _emphasized_ And this is *strong* Here’s a simple block: foo This should be a code block, though: ....
                foo
                .... As should this: ....
                foo
                .... Now, nested: foo This should just be an HTML comment: Multiline: Code block: .... .... Just plain comment, with trailing spaces on the line: Code: ....
                .... Hr’s: ''''' == Inline Markup This is _emphasized_, and so _is this_. This is *strong*, and so *is this*. An _link:/url[emphasized link]_. *_This is strong and em._* So is *_this_* word. *_This is strong and em._* So is *_this_* word. This is code: `>`, `$`, `\`, `\$`, ``. [line-through]*This is _strikeout_.* Superscripts: a^bc^d a^_hello_^ a^hello there^. Subscripts: H~2~O, H~23~O, H~many of them~O. These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d. ''''' == Smart quotes, ellipses, dashes ``Hello,'' said the spider. ```Shelob' is my name.'' `A', `B', and `C' are letters. `Oak,' `elm,' and `beech' are names of trees. So is `pine.' `He said, ``I want to go.''' Were you alive in the 70’s? Here is some quoted ``code`' and a ``http://example.com/?foo=1&bar=2[quoted link]''. Some dashes: one—two — three—four — five. Dashes between numbers: 5–7, 255–66, 1987–1999. Ellipses…and…and…. ''''' == LaTeX * * latexmath:[$2+2=4$] * latexmath:[$x \in y$] * latexmath:[$\alpha \wedge \omega$] * latexmath:[$223$] * latexmath:[$p$]-Tree * Here’s some display math: + [latexmath] ++++ \[\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}\] ++++ * Here’s one that has a line break in it: latexmath:[$\alpha + \omega \times x^2$]. These shouldn’t be math: * To get the famous equation, write `$e = mc^2$`. * $22,000 is a _lot_ of money. So is $34,000. (It worked if ``lot'' is emphasized.) * Shoes ($20) and socks ($5). * Escaped `$`: $73 _this should be emphasized_ 23$. Here’s a LaTeX table: ''''' == Special Characters Here is some unicode: * I hat: Î * o umlaut: ö * section: § * set membership: ∈ * copyright: © AT&T has an ampersand in their name. AT&T is another way to write it. This & that. 4 < 5. 6 > 5. Backslash: \ Backtick: ` Asterisk: * Underscore: _ Left brace: \{ Right brace: } Left bracket: [ Right bracket: ] Left paren: ( Right paren: ) Greater-than: > Hash: # Period: . Bang: ! Plus: + Minus: - ''''' == Links === Explicit Just a link:/url/[URL]. link:/url/[URL and title]. link:/url/[URL and title]. link:/url/[URL and title]. link:/url/[URL and title] link:/url/[URL and title] link:/url/with_underscore[with_underscore] mailto:nobody@nowhere.net[Email link] link:[Empty]. === Reference Foo link:/url/[bar]. With link:/url/[embedded [brackets]]. link:/url/[b] by itself should be a link. Indented link:/url[once]. Indented link:/url[twice]. Indented link:/url[thrice]. This should [not][] be a link. .... [not]: /url .... Foo link:/url/[bar]. Foo link:/url/[biz]. === With ampersands Here’s a http://example.com/?foo=1&bar=2[link with an ampersand in the URL]. Here’s a link with an amersand in the link text: http://att.com/[AT&T]. Here’s an link:/script?foo=1&bar=2[inline link]. Here’s an link:/script?foo=1&bar=2[inline link in pointy braces]. === Autolinks With an ampersand: http://example.com/?foo=1&bar=2 * In a list? * http://example.com/ * It should. An e-mail address: nobody@nowhere.net ____ Blockquoted: http://example.com/ ____ Auto-links should not occur here: `` .... or here: .... ''''' == Images From ``Voyage dans la Lune'' by Georges Melies (1902): .lalune image::lalune.jpg[lalune,title="Voyage dans la Lune"] Here is a movie image:movie.jpg[movie] icon. ''''' == Footnotes Here is a footnote reference,footnote:[Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document.] and another.[multiblock footnote omitted] This should _not_ be a footnote reference, because it contains a space.[^my note] Here is an inline note.footnote:[This is _easier_ to type. Inline notes may contain http://google.com[links] and `]` verbatim characters, as well as [bracketed text].] ____ Notes can go in quotes.footnote:[In quote.] ____ [arabic] . And in list items.footnote:[In list.] This paragraph should not be part of the note, as it is not indented. pandoc-3.1.3/test/writer.asciidoctor0000644000000000000000000002022007346545000015667 0ustar0000000000000000= Pandoc Test Suite John MacFarlane; Anonymous July 17, 2006 :stem: latexmath This is a set of tests for pandoc. Most of them are adapted from John Gruber’s markdown test suite. ''''' == Headers === Level 2 with an link:/url[embedded link] ==== Level 3 with _emphasis_ ===== Level 4 ====== Level 5 == Level 1 === Level 2 with _emphasis_ ==== Level 3 with no blank line === Level 2 with no blank line ''''' == Paragraphs Here’s a regular paragraph. In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item. Here’s one with a bullet. * criminey. There should be a hard line break + here. ''''' == Block Quotes E-mail style: ____ This is a block quote. It is pretty short. ____ ____ -- Code in a block quote: .... sub status { print "working"; } .... A list: [arabic] . item one . item two Nested block quotes: ____ nested ____ ____ nested ____ -- ____ This should not be a block quote: 2 > 1. And a following paragraph. ''''' == Code Blocks Code: .... ---- (should be four hyphens) sub status { print "working"; } this code block is indented by one tab .... And: .... this code block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{ .... ''''' == Lists === Unordered Asterisks tight: * asterisk 1 * asterisk 2 * asterisk 3 Asterisks loose: * asterisk 1 * asterisk 2 * asterisk 3 Pluses tight: * Plus 1 * Plus 2 * Plus 3 Pluses loose: * Plus 1 * Plus 2 * Plus 3 Minuses tight: * Minus 1 * Minus 2 * Minus 3 Minuses loose: * Minus 1 * Minus 2 * Minus 3 === Ordered Tight: [arabic] . First . Second . Third and: [arabic] . One . Two . Three Loose using tabs: [arabic] . First . Second . Third and using spaces: [arabic] . One . Two . Three Multiple paragraphs: [arabic] . Item 1, graf one. + Item 1. graf two. The quick brown fox jumped over the lazy dog’s back. . Item 2. . Item 3. === Nested * Tab ** Tab *** Tab Here’s another: [arabic] . First . Second: * Fee * Fie * Foe . Third Same thing but with paragraphs: [arabic] . First . Second: * Fee * Fie * Foe . Third === Tabs and spaces * this is a list item indented with tabs * this is a list item indented with spaces ** this is an example list item indented with tabs ** this is an example list item indented with spaces === Fancy list markers [arabic, start=2] . begins with 2 . and now 3 + with a continuation [lowerroman, start=4] .. sublist with roman numerals, starting with 4 .. more items [upperalpha] ... a subsublist ... a subsublist Nesting: [upperalpha] . Upper Alpha [upperroman] .. Upper Roman. [arabic, start=6] ... Decimal start with 6 [loweralpha, start=3] .... Lower alpha with paren Autonumbering: . Autonumber. . More. .. Nested. Should not be a list item: M.A. 2007 B. Williams ''''' == Definition Lists Tight using spaces: apple:: red fruit orange:: orange fruit banana:: yellow fruit Tight using tabs: apple:: red fruit orange:: orange fruit banana:: yellow fruit Loose: apple:: red fruit orange:: orange fruit banana:: yellow fruit Multiple blocks with italics: _apple_:: red fruit + contains seeds, crisp, pleasant to taste _orange_:: orange fruit + .... { orange code block } .... + ____ orange block quote ____ Multiple definitions, tight: apple:: red fruit + computer orange:: orange fruit + bank Multiple definitions, loose: apple:: red fruit + computer orange:: orange fruit + bank Blank line after term, indented marker, alternate markers: apple:: red fruit + computer orange:: orange fruit + [arabic] . sublist . sublist == HTML Blocks Simple block on one line: foo And nested without indentation: foo bar Interpreted markdown in a table: This is _emphasized_ And this is *strong* Here’s a simple block: foo This should be a code block, though: ....
                foo
                .... As should this: ....
                foo
                .... Now, nested: foo This should just be an HTML comment: Multiline: Code block: .... .... Just plain comment, with trailing spaces on the line: Code: ....
                .... Hr’s: ''''' == Inline Markup This is _emphasized_, and so _is this_. This is *strong*, and so *is this*. An _link:/url[emphasized link]_. *_This is strong and em._* So is *_this_* word. *_This is strong and em._* So is *_this_* word. This is code: `+>+`, `+$+`, `+\+`, `+\$+`, `++`. [line-through]*This is _strikeout_.* Superscripts: a^bc^d a^_hello_^ a^hello there^. Subscripts: H~2~O, H~23~O, H~many of them~O. These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d. ''''' == Smart quotes, ellipses, dashes "`Hello,`" said the spider. "`'`Shelob`' is my name.`" '`A`', '`B`', and '`C`' are letters. '`Oak,`' '`elm,`' and '`beech`' are names of trees. So is '`pine.`' '`He said, "`I want to go.`"`' Were you alive in the 70’s? Here is some quoted '``+code+``' and a "`http://example.com/?foo=1&bar=2[quoted link]`". Some dashes: one—two — three—four — five. Dashes between numbers: 5–7, 255–66, 1987–1999. Ellipses…and…and…. ''''' == LaTeX * * latexmath:[2+2=4] * latexmath:[x \in y] * latexmath:[\alpha \wedge \omega] * latexmath:[223] * latexmath:[p]-Tree * Here’s some display math: + [latexmath] ++++ \frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h} ++++ * Here’s one that has a line break in it: latexmath:[\alpha + \omega \times x^2]. These shouldn’t be math: * To get the famous equation, write `+$e = mc^2$+`. * $22,000 is a _lot_ of money. So is $34,000. (It worked if "`lot`" is emphasized.) * Shoes ($20) and socks ($5). * Escaped `+$+`: $73 _this should be emphasized_ 23$. Here’s a LaTeX table: ''''' == Special Characters Here is some unicode: * I hat: Î * o umlaut: ö * section: § * set membership: ∈ * copyright: © AT&T has an ampersand in their name. AT&T is another way to write it. This & that. 4 < 5. 6 > 5. Backslash: \ Backtick: ` Asterisk: * Underscore: _ Left brace: \{ Right brace: } Left bracket: [ Right bracket: ] Left paren: ( Right paren: ) Greater-than: > Hash: # Period: . Bang: ! Plus: + Minus: - ''''' == Links === Explicit Just a link:/url/[URL]. link:/url/[URL and title]. link:/url/[URL and title]. link:/url/[URL and title]. link:/url/[URL and title] link:/url/[URL and title] link:/url/with_underscore[with_underscore] mailto:nobody@nowhere.net[Email link] link:[Empty]. === Reference Foo link:/url/[bar]. With link:/url/[embedded [brackets]]. link:/url/[b] by itself should be a link. Indented link:/url[once]. Indented link:/url[twice]. Indented link:/url[thrice]. This should [not][] be a link. .... [not]: /url .... Foo link:/url/[bar]. Foo link:/url/[biz]. === With ampersands Here’s a http://example.com/?foo=1&bar=2[link with an ampersand in the URL]. Here’s a link with an amersand in the link text: http://att.com/[AT&T]. Here’s an link:/script?foo=1&bar=2[inline link]. Here’s an link:/script?foo=1&bar=2[inline link in pointy braces]. === Autolinks With an ampersand: http://example.com/?foo=1&bar=2 * In a list? * http://example.com/ * It should. An e-mail address: nobody@nowhere.net ____ Blockquoted: http://example.com/ ____ Auto-links should not occur here: `++` .... or here: .... ''''' == Images From "`Voyage dans la Lune`" by Georges Melies (1902): .lalune image::lalune.jpg[lalune,title="Voyage dans la Lune"] Here is a movie image:movie.jpg[movie] icon. ''''' == Footnotes Here is a footnote reference,footnote:[Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document.] and another.[multiblock footnote omitted] This should _not_ be a footnote reference, because it contains a space.[^my note] Here is an inline note.footnote:[This is _easier_ to type. Inline notes may contain http://google.com[links] and `+]+` verbatim characters, as well as [bracketed text].] ____ Notes can go in quotes.footnote:[In quote.] ____ [arabic] . And in list items.footnote:[In list.] This paragraph should not be part of the note, as it is not indented. pandoc-3.1.3/test/writer.context0000644000000000000000000004127507346545000015065 0ustar0000000000000000% Enable hyperlinks \setupinteraction [state=start, title={Pandoc Test Suite}, author={John MacFarlane; Anonymous}, style=, color=, contrastcolor=] \setupurl[style=] % make chapter, section bookmarks visible when opening document \placebookmarks[chapter, section, subsection, subsubsection, subsubsubsection, subsubsubsubsection][chapter, section] \setupinteractionscreen[option={bookmark,title}] \setuppagenumbering[location={footer,middle}] \setupbackend[export=yes] \setupstructure[state=start,method=auto] % use microtypography \definefontfeature[default][default][script=latn, protrusion=quality, expansion=quality, itlc=yes, textitalics=yes, onum=yes, pnum=yes] \definefontfeature[default:tnum][default][tnum=yes, pnum=no] \definefontfeature[smallcaps][script=latn, protrusion=quality, expansion=quality, smcp=yes, onum=yes, pnum=yes] \setupalign[hz,hanging] \setupitaliccorrection[global, always] \setupbodyfontenvironment[default][em=italic] % use italic as em, not slanted \definefallbackfamily[mainface][rm][CMU Serif][preset=range:greek, force=yes] \definefontfamily[mainface][rm][Latin Modern Roman] \definefontfamily[mainface][mm][Latin Modern Math] \definefontfamily[mainface][ss][Latin Modern Sans] \definefontfamily[mainface][tt][Latin Modern Typewriter][features=none] \setupbodyfont[mainface] \setupwhitespace[medium] \setuphead[chapter] [style=\tfd\setupinterlinespace,header=empty] \setuphead[section] [style=\tfc\setupinterlinespace] \setuphead[subsection] [style=\tfb\setupinterlinespace] \setuphead[subsubsection] [style=\bf] \setuphead[subsubsubsection] [style=\sc] \setuphead[subsubsubsubsection][style=\it] \definesectionlevels [default] [section, subsection, subsubsection, subsubsubsection, subsubsubsubsection] \setuphead[chapter, section, subsection, subsubsection, subsubsubsection, subsubsubsubsection][number=no] \definedescription [description] [headstyle=bold, style=normal, location=hanging, width=broad, margin=1cm, alternative=hanging] \setupitemize[autointro] % prevent orphan list intro \setupitemize[indentnext=no] \defineitemgroup[enumerate] \setupenumerate[each][fit][itemalign=left,distance=.5em,style={\feature[+][default:tnum]}] \setupfloat[figure][default={here,nonumber}] \setupfloat[table][default={here,nonumber}] \setupxtable[frame=off] \setupxtable[head][topframe=on] \setupxtable[body][] \setupxtable[foot][] \setupxtable[lastrow][bottomframe=on] \starttext \startalignment[middle] {\tfd\setupinterlinespace Pandoc Test Suite} \smallskip {\tfa\setupinterlinespace John MacFarlane\crlf Anonymous} \smallskip {\tfa\setupinterlinespace July 17, 2006} \bigskip \stopalignment This is a set of tests for pandoc. Most of them are adapted from John Gruber's markdown test suite. \thinrule \startsectionlevel[title={Headers},reference={headers}] \startsectionlevel[title={Level 2 with an \goto{embedded link}[url(/url)]},reference={level-2-with-an-embedded-link}] \startsectionlevel[title={Level 3 with {\em emphasis}},reference={level-3-with-emphasis}] \startsectionlevel[title={Level 4},reference={level-4}] \startsectionlevel[title={Level 5},reference={level-5}] \stopsectionlevel \stopsectionlevel \stopsectionlevel \stopsectionlevel \stopsectionlevel \startsectionlevel[title={Level 1},reference={level-1}] \startsectionlevel[title={Level 2 with {\em emphasis}},reference={level-2-with-emphasis}] \startsectionlevel[title={Level 3},reference={level-3}] with no blank line \stopsectionlevel \stopsectionlevel \startsectionlevel[title={Level 2},reference={level-2}] with no blank line \thinrule \stopsectionlevel \stopsectionlevel \startsectionlevel[title={Paragraphs},reference={paragraphs}] Here's a regular paragraph. In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item. Here's one with a bullet. * criminey. There should be a hard line break\crlf here. \thinrule \stopsectionlevel \startsectionlevel[title={Block Quotes},reference={block-quotes}] E-mail style: \startblockquote This is a block quote. It is pretty short. \stopblockquote \startblockquote Code in a block quote: \starttyping sub status { print "working"; } \stoptyping A list: \startenumerate[n,packed][stopper=.] \item item one \item item two \stopenumerate Nested block quotes: \startblockquote nested \stopblockquote \startblockquote nested \stopblockquote \stopblockquote This should not be a block quote: 2 > 1. And a following paragraph. \thinrule \stopsectionlevel \startsectionlevel[title={Code Blocks},reference={code-blocks}] Code: \starttyping ---- (should be four hyphens) sub status { print "working"; } this code block is indented by one tab \stoptyping And: \starttyping this code block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{ \stoptyping \thinrule \stopsectionlevel \startsectionlevel[title={Lists},reference={lists}] \startsectionlevel[title={Unordered},reference={unordered}] Asterisks tight: \startitemize[packed] \item asterisk 1 \item asterisk 2 \item asterisk 3 \stopitemize Asterisks loose: \startitemize \item asterisk 1 \item asterisk 2 \item asterisk 3 \stopitemize Pluses tight: \startitemize[packed] \item Plus 1 \item Plus 2 \item Plus 3 \stopitemize Pluses loose: \startitemize \item Plus 1 \item Plus 2 \item Plus 3 \stopitemize Minuses tight: \startitemize[packed] \item Minus 1 \item Minus 2 \item Minus 3 \stopitemize Minuses loose: \startitemize \item Minus 1 \item Minus 2 \item Minus 3 \stopitemize \stopsectionlevel \startsectionlevel[title={Ordered},reference={ordered}] Tight: \startenumerate[n,packed][stopper=.] \item First \item Second \item Third \stopenumerate and: \startenumerate[n,packed][stopper=.] \item One \item Two \item Three \stopenumerate Loose using tabs: \startenumerate[n][stopper=.] \item First \item Second \item Third \stopenumerate and using spaces: \startenumerate[n][stopper=.] \item One \item Two \item Three \stopenumerate Multiple paragraphs: \startenumerate[n][stopper=.] \item Item 1, graf one. Item 1. graf two. The quick brown fox jumped over the lazy dog's back. \item Item 2. \item Item 3. \stopenumerate \stopsectionlevel \startsectionlevel[title={Nested},reference={nested}] \startitemize[packed] \item Tab \startitemize[packed] \item Tab \startitemize[packed] \item Tab \stopitemize \stopitemize \stopitemize Here's another: \startenumerate[n,packed][stopper=.] \item First \item Second: \startitemize[packed] \item Fee \item Fie \item Foe \stopitemize \item Third \stopenumerate Same thing but with paragraphs: \startenumerate[n][stopper=.] \item First \item Second: \startitemize[packed] \item Fee \item Fie \item Foe \stopitemize \item Third \stopenumerate \stopsectionlevel \startsectionlevel[title={Tabs and spaces},reference={tabs-and-spaces}] \startitemize \item this is a list item indented with tabs \item this is a list item indented with spaces \startitemize \item this is an example list item indented with tabs \item this is an example list item indented with spaces \stopitemize \stopitemize \stopsectionlevel \startsectionlevel[title={Fancy list markers},reference={fancy-list-markers}] \startenumerate[n][start=2,left=(,stopper=)] \item begins with 2 \item and now 3 with a continuation \startenumerate[r,packed][start=4,stopper=.] \item sublist with roman numerals, starting with 4 \item more items \startenumerate[A,packed][left=(,stopper=)] \item a subsublist \item a subsublist \stopenumerate \stopenumerate \stopenumerate Nesting: \startenumerate[A,packed][stopper=.] \item Upper Alpha \startenumerate[R,packed][stopper=.] \item Upper Roman. \startenumerate[n,packed][start=6,left=(,stopper=)] \item Decimal start with 6 \startenumerate[a,packed][start=3,stopper=)] \item Lower alpha with paren \stopenumerate \stopenumerate \stopenumerate \stopenumerate Autonumbering: \startenumerate[n,packed] \item Autonumber. \item More. \startenumerate[a,packed] \item Nested. \stopenumerate \stopenumerate Should not be a list item: M.A.~2007 B. Williams \thinrule \stopsectionlevel \stopsectionlevel \startsectionlevel[title={Definition Lists},reference={definition-lists}] Tight using spaces: \startdescription{apple} red fruit \stopdescription \startdescription{orange} orange fruit \stopdescription \startdescription{banana} yellow fruit \stopdescription Tight using tabs: \startdescription{apple} red fruit \stopdescription \startdescription{orange} orange fruit \stopdescription \startdescription{banana} yellow fruit \stopdescription Loose: \startdescription{apple} red fruit \stopdescription \startdescription{orange} orange fruit \stopdescription \startdescription{banana} yellow fruit \stopdescription Multiple blocks with italics: \startdescription{{\em apple}} red fruit contains seeds, crisp, pleasant to taste \stopdescription \startdescription{{\em orange}} orange fruit \starttyping { orange code block } \stoptyping \startblockquote orange block quote \stopblockquote \stopdescription Multiple definitions, tight: \startdescription{apple} red fruit computer \stopdescription \startdescription{orange} orange fruit bank \stopdescription Multiple definitions, loose: \startdescription{apple} red fruit computer \stopdescription \startdescription{orange} orange fruit bank \stopdescription Blank line after term, indented marker, alternate markers: \startdescription{apple} red fruit computer \stopdescription \startdescription{orange} orange fruit \startenumerate[n,packed][stopper=.] \item sublist \item sublist \stopenumerate \stopdescription \stopsectionlevel \startsectionlevel[title={HTML Blocks},reference={html-blocks}] Simple block on one line: foo And nested without indentation: foo bar Interpreted markdown in a table: This is {\em emphasized} And this is {\bf strong} Here's a simple block: foo This should be a code block, though: \starttyping
                foo
                \stoptyping As should this: \starttyping
                foo
                \stoptyping Now, nested: foo This should just be an HTML comment: Multiline: Code block: \starttyping \stoptyping Just plain comment, with trailing spaces on the line: Code: \starttyping
                \stoptyping Hr's: \thinrule \stopsectionlevel \startsectionlevel[title={Inline Markup},reference={inline-markup}] This is {\em emphasized}, and so {\em is this}. This is {\bf strong}, and so {\bf is this}. An {\em \goto{emphasized link}[url(/url)]}. {\bf {\em This is strong and em.}} So is {\bf {\em this}} word. {\bf {\em This is strong and em.}} So is {\bf {\em this}} word. This is code: \type{>}, \type{$}, \type{\}, \type{\$}, \type{}. \overstrikes{This is {\em strikeout}.} Superscripts: a\high{bc}d a\high{{\em hello}} a\high{hello~there}. Subscripts: H\low{2}O, H\low{23}O, H\low{many~of~them}O. These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a\lettertilde{}b c\lettertilde{}d. \thinrule \stopsectionlevel \startsectionlevel[title={Smart quotes, ellipses, dashes},reference={smart-quotes-ellipses-dashes}] \quotation{Hello,} said the spider. \quotation{\quote{Shelob} is my name.} \quote{A}, \quote{B}, and \quote{C} are letters. \quote{Oak,} \quote{elm,} and \quote{beech} are names of trees. So is \quote{pine.} \quote{He said, \quotation{I want to go.}} Were you alive in the 70's? Here is some quoted \quote{\type{code}} and a \quotation{\goto{quoted link}[url(http://example.com/?foo=1&bar=2)]}. Some dashes: one---two --- three---four --- five. Dashes between numbers: 5--7, 255--66, 1987--1999. Ellipses\ldots{}and\ldots{}and\ldots{}. \thinrule \stopsectionlevel \startsectionlevel[title={LaTeX},reference={latex}] \startitemize[packed] \item \cite[22-23]{smith.1899} \item $2+2=4$ \item $x \in y$ \item $\alpha \wedge \omega$ \item $223$ \item $p$-Tree \item Here's some display math: \startformula \frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h} \stopformula \item Here's one that has a line break in it: $\alpha + \omega \times x^2$. \stopitemize These shouldn't be math: \startitemize[packed] \item To get the famous equation, write \type{$e = mc^2$}. \item \$22,000 is a {\em lot} of money. So is \$34,000. (It worked if \quotation{lot} is emphasized.) \item Shoes (\$20) and socks (\$5). \item Escaped \type{$}: \$73 {\em this should be emphasized} 23\$. \stopitemize Here's a LaTeX table: \begin{tabular}{|l|l|}\hline Animal & Number \\ \hline Dog & 2 \\ Cat & 1 \\ \hline \end{tabular} \thinrule \stopsectionlevel \startsectionlevel[title={Special Characters},reference={special-characters}] Here is some unicode: \startitemize[packed] \item I hat: Î \item o umlaut: ö \item section: § \item set membership: ∈ \item copyright: © \stopitemize AT&T has an ampersand in their name. AT&T is another way to write it. This & that. 4 < 5. 6 > 5. Backslash: \letterbackslash{} Backtick: ` Asterisk: * Underscore: _ Left brace: \{ Right brace: \} Left bracket: {[} Right bracket: {]} Left paren: ( Right paren: ) Greater-than: > Hash: \# Period: . Bang: ! Plus: + Minus: - \thinrule \stopsectionlevel \startsectionlevel[title={Links},reference={links}] \startsectionlevel[title={Explicit},reference={explicit}] Just a \goto{URL}[url(/url/)]. \goto{URL and title}[url(/url/)]. \goto{URL and title}[url(/url/)]. \goto{URL and title}[url(/url/)]. \goto{URL and title}[url(/url/)] \goto{URL and title}[url(/url/)] \goto{with_underscore}[url(/url/with_underscore)] \goto{Email link}[url(mailto:nobody@nowhere.net)] \goto{Empty}[url()]. \stopsectionlevel \startsectionlevel[title={Reference},reference={reference}] Foo \goto{bar}[url(/url/)]. With \goto{embedded {[}brackets{]}}[url(/url/)]. \goto{b}[url(/url/)] by itself should be a link. Indented \goto{once}[url(/url)]. Indented \goto{twice}[url(/url)]. Indented \goto{thrice}[url(/url)]. This should {[}not{]}{[}{]} be a link. \starttyping [not]: /url \stoptyping Foo \goto{bar}[url(/url/)]. Foo \goto{biz}[url(/url/)]. \stopsectionlevel \startsectionlevel[title={With ampersands},reference={with-ampersands}] Here's a \goto{link with an ampersand in the URL}[url(http://example.com/?foo=1&bar=2)]. Here's a link with an amersand in the link text: \goto{AT&T}[url(http://att.com/)]. Here's an \goto{inline link}[url(/script?foo=1&bar=2)]. Here's an \goto{inline link in pointy braces}[url(/script?foo=1&bar=2)]. \stopsectionlevel \startsectionlevel[title={Autolinks},reference={autolinks}] With an ampersand: \useURL[url1][http://example.com/?foo=1&bar=2]\from[url1] \startitemize[packed] \item In a list? \item \useURL[url2][http://example.com/]\from[url2] \item It should. \stopitemize An e-mail address: \goto{nobody@nowhere.net}[url(mailto:nobody@nowhere.net)] \startblockquote Blockquoted: \useURL[url3][http://example.com/]\from[url3] \stopblockquote Auto-links should not occur here: \type{} \starttyping or here: \stoptyping \thinrule \stopsectionlevel \stopsectionlevel \startsectionlevel[title={Images},reference={images}] From \quotation{Voyage dans la Lune} by Georges Melies (1902): \startplacefigure[title={lalune}] {\externalfigure[lalune.jpg]} \stopplacefigure Here is a movie {\externalfigure[movie.jpg]} icon. \thinrule \stopsectionlevel \startsectionlevel[title={Footnotes},reference={footnotes}] Here is a footnote reference,\footnote{Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document.} and another.\startbuffer Here's the long note. This one contains multiple blocks. Subsequent blocks are indented to show that they belong to the footnote (as with list items). \starttyping { } \stoptyping If you want, you can indent every line, but you can also be lazy and just indent the first line of each block.\stopbuffer\footnote{\getbuffer} This should {\em not} be a footnote reference, because it contains a space.{[}^my note{]} Here is an inline note.\footnote{This is {\em easier} to type. Inline notes may contain \goto{links}[url(http://google.com)] and \type{]} verbatim characters, as well as {[}bracketed text{]}.} \startblockquote Notes can go in quotes.\footnote{In quote.} \stopblockquote \startenumerate[n,packed][stopper=.] \item And in list items.\footnote{In list.} \stopenumerate This paragraph should not be part of the note, as it is not indented. \stopsectionlevel \stoptext pandoc-3.1.3/test/writer.docbook40000644000000000000000000007752407346545000015113 0ustar0000000000000000
                Pandoc Test Suite John MacFarlane Anonymous July 17, 2006 This is a set of tests for pandoc. Most of them are adapted from John Gruber’s markdown test suite. Headers Level 2 with an <ulink url="/url">embedded link</ulink> Level 3 with <emphasis>emphasis</emphasis> Level 4 Level 5 Level 1 Level 2 with <emphasis>emphasis</emphasis> Level 3 with no blank line Level 2 with no blank line Paragraphs Here’s a regular paragraph. In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item. Here’s one with a bullet. * criminey. There should be a hard line break here. Block Quotes E-mail style:
                This is a block quote. It is pretty short.
                Code in a block quote: sub status { print "working"; } A list: item one item two Nested block quotes:
                nested
                nested
                This should not be a block quote: 2 > 1. And a following paragraph.
                Code Blocks Code: ---- (should be four hyphens) sub status { print "working"; } this code block is indented by one tab And: this code block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{ Lists Unordered Asterisks tight: asterisk 1 asterisk 2 asterisk 3 Asterisks loose: asterisk 1 asterisk 2 asterisk 3 Pluses tight: Plus 1 Plus 2 Plus 3 Pluses loose: Plus 1 Plus 2 Plus 3 Minuses tight: Minus 1 Minus 2 Minus 3 Minuses loose: Minus 1 Minus 2 Minus 3 Ordered Tight: First Second Third and: One Two Three Loose using tabs: First Second Third and using spaces: One Two Three Multiple paragraphs: Item 1, graf one. Item 1. graf two. The quick brown fox jumped over the lazy dog’s back. Item 2. Item 3. Nested Tab Tab Tab Here’s another: First Second: Fee Fie Foe Third Same thing but with paragraphs: First Second: Fee Fie Foe Third Tabs and spaces this is a list item indented with tabs this is a list item indented with spaces this is an example list item indented with tabs this is an example list item indented with spaces Fancy list markers begins with 2 and now 3 with a continuation sublist with roman numerals, starting with 4 more items a subsublist a subsublist Nesting: Upper Alpha Upper Roman. Decimal start with 6 Lower alpha with paren Autonumbering: Autonumber. More. Nested. Should not be a list item: M.A. 2007 B. Williams Definition Lists Tight using spaces: apple red fruit orange orange fruit banana yellow fruit Tight using tabs: apple red fruit orange orange fruit banana yellow fruit Loose: apple red fruit orange orange fruit banana yellow fruit Multiple blocks with italics: apple red fruit contains seeds, crisp, pleasant to taste orange orange fruit { orange code block }
                orange block quote
                Multiple definitions, tight: apple red fruit computer orange orange fruit bank Multiple definitions, loose: apple red fruit computer orange orange fruit bank Blank line after term, indented marker, alternate markers: apple red fruit computer orange orange fruit sublist sublist
                HTML Blocks Simple block on one line: foo And nested without indentation: foo bar Interpreted markdown in a table:
                This is emphasized And this is strong
                Here’s a simple block: foo This should be a code block, though: <div> foo </div> As should this: <div>foo</div> Now, nested: foo This should just be an HTML comment: Multiline: Code block: <!-- Comment --> Just plain comment, with trailing spaces on the line: Code: <hr /> Hr’s:








                Inline Markup This is emphasized, and so is this. This is strong, and so is this. An emphasized link. This is strong and em. So is this word. This is strong and em. So is this word. This is code: >, $, \, \$, <html>. This is strikeout. Superscripts: abcd ahello ahello there. Subscripts: H2O, H23O, Hmany of themO. These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d. Smart quotes, ellipses, dashes Hello, said the spider. Shelob is my name. A, B, and C are letters. Oak, elm, and beech are names of trees. So is pine. He said, I want to go. Were you alive in the 70’s? Here is some quoted code and a quoted link. Some dashes: one—two — three—four — five. Dashes between numbers: 5–7, 255–66, 1987–1999. Ellipses…and…and…. LaTeX 2 + 2 = 4 x ∈ y α ∧ ω 223 p-Tree Here’s some display math: $$\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$$ Here’s one that has a line break in it: α + ω × x2. These shouldn’t be math: To get the famous equation, write $e = mc^2$. $22,000 is a lot of money. So is $34,000. (It worked if lot is emphasized.) Shoes ($20) and socks ($5). Escaped $: $73 this should be emphasized 23$. Here’s a LaTeX table: Special Characters Here is some unicode: I hat: Î o umlaut: ö section: § set membership: ∈ copyright: © AT&T has an ampersand in their name. AT&T is another way to write it. This & that. 4 < 5. 6 > 5. Backslash: \ Backtick: ` Asterisk: * Underscore: _ Left brace: { Right brace: } Left bracket: [ Right bracket: ] Left paren: ( Right paren: ) Greater-than: > Hash: # Period: . Bang: ! Plus: + Minus: - Links Explicit Just a URL. URL and title. URL and title. URL and title. URL and title URL and title with_underscore Email link (nobody@nowhere.net) Empty. Reference Foo bar. With embedded [brackets]. b by itself should be a link. Indented once. Indented twice. Indented thrice. This should [not][] be a link. [not]: /url Foo bar. Foo biz. With ampersands Here’s a link with an ampersand in the URL. Here’s a link with an amersand in the link text: AT&T. Here’s an inline link. Here’s an inline link in pointy braces. Autolinks With an ampersand: http://example.com/?foo=1&bar=2 In a list? http://example.com/ It should. An e-mail address: nobody@nowhere.net
                Blockquoted: http://example.com/
                Auto-links should not occur here: <http://example.com/> or here: <http://example.com/>
                Images From Voyage dans la Lune by Georges Melies (1902):
                lalune lalune
                Here is a movie movie icon.
                Footnotes Here is a footnote reference, Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document. and another. Here’s the long note. This one contains multiple blocks. Subsequent blocks are indented to show that they belong to the footnote (as with list items). { <code> } If you want, you can indent every line, but you can also be lazy and just indent the first line of each block. This should not be a footnote reference, because it contains a space.[^my note] Here is an inline note. This is easier to type. Inline notes may contain links and ] verbatim characters, as well as [bracketed text].
                Notes can go in quotes. In quote.
                And in list items. In list. This paragraph should not be part of the note, as it is not indented.
                pandoc-3.1.3/test/writer.docbook50000644000000000000000000007734307346545000015113 0ustar0000000000000000
                Pandoc Test Suite John MacFarlane Anonymous July 17, 2006 This is a set of tests for pandoc. Most of them are adapted from John Gruber’s markdown test suite.
                Headers
                Level 2 with an <link xlink:href="/url">embedded link</link>
                Level 3 with <emphasis>emphasis</emphasis>
                Level 4
                Level 5
                Level 1
                Level 2 with <emphasis>emphasis</emphasis>
                Level 3 with no blank line
                Level 2 with no blank line
                Paragraphs Here’s a regular paragraph. In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item. Here’s one with a bullet. * criminey. There should be a hard line break here.
                Block Quotes E-mail style:
                This is a block quote. It is pretty short.
                Code in a block quote: sub status { print "working"; } A list: item one item two Nested block quotes:
                nested
                nested
                This should not be a block quote: 2 > 1. And a following paragraph.
                Code Blocks Code: ---- (should be four hyphens) sub status { print "working"; } this code block is indented by one tab And: this code block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{
                Lists
                Unordered Asterisks tight: asterisk 1 asterisk 2 asterisk 3 Asterisks loose: asterisk 1 asterisk 2 asterisk 3 Pluses tight: Plus 1 Plus 2 Plus 3 Pluses loose: Plus 1 Plus 2 Plus 3 Minuses tight: Minus 1 Minus 2 Minus 3 Minuses loose: Minus 1 Minus 2 Minus 3
                Ordered Tight: First Second Third and: One Two Three Loose using tabs: First Second Third and using spaces: One Two Three Multiple paragraphs: Item 1, graf one. Item 1. graf two. The quick brown fox jumped over the lazy dog’s back. Item 2. Item 3.
                Nested Tab Tab Tab Here’s another: First Second: Fee Fie Foe Third Same thing but with paragraphs: First Second: Fee Fie Foe Third
                Tabs and spaces this is a list item indented with tabs this is a list item indented with spaces this is an example list item indented with tabs this is an example list item indented with spaces
                Fancy list markers begins with 2 and now 3 with a continuation sublist with roman numerals, starting with 4 more items a subsublist a subsublist Nesting: Upper Alpha Upper Roman. Decimal start with 6 Lower alpha with paren Autonumbering: Autonumber. More. Nested. Should not be a list item: M.A. 2007 B. Williams
                Definition Lists Tight using spaces: apple red fruit orange orange fruit banana yellow fruit Tight using tabs: apple red fruit orange orange fruit banana yellow fruit Loose: apple red fruit orange orange fruit banana yellow fruit Multiple blocks with italics: apple red fruit contains seeds, crisp, pleasant to taste orange orange fruit { orange code block }
                orange block quote
                Multiple definitions, tight: apple red fruit computer orange orange fruit bank Multiple definitions, loose: apple red fruit computer orange orange fruit bank Blank line after term, indented marker, alternate markers: apple red fruit computer orange orange fruit sublist sublist
                HTML Blocks Simple block on one line: foo And nested without indentation: foo bar Interpreted markdown in a table: This is emphasized And this is strong Here’s a simple block: foo This should be a code block, though: <div> foo </div> As should this: <div>foo</div> Now, nested: foo This should just be an HTML comment: Multiline: Code block: <!-- Comment --> Just plain comment, with trailing spaces on the line: Code: <hr /> Hr’s:
                Inline Markup This is emphasized, and so is this. This is strong, and so is this. An emphasized link. This is strong and em. So is this word. This is strong and em. So is this word. This is code: >, $, \, \$, <html>. This is strikeout. Superscripts: abcd ahello ahello there. Subscripts: H2O, H23O, Hmany of themO. These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d.
                Smart quotes, ellipses, dashes Hello, said the spider. Shelob is my name. A, B, and C are letters. Oak, elm, and beech are names of trees. So is pine. He said, I want to go. Were you alive in the 70’s? Here is some quoted code and a quoted link. Some dashes: one—two — three—four — five. Dashes between numbers: 5–7, 255–66, 1987–1999. Ellipses…and…and….
                LaTeX 2 + 2 = 4 x ∈ y α ∧ ω 223 p-Tree Here’s some display math: $$\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$$ Here’s one that has a line break in it: α + ω × x2. These shouldn’t be math: To get the famous equation, write $e = mc^2$. $22,000 is a lot of money. So is $34,000. (It worked if lot is emphasized.) Shoes ($20) and socks ($5). Escaped $: $73 this should be emphasized 23$. Here’s a LaTeX table:
                Special Characters Here is some unicode: I hat: Î o umlaut: ö section: § set membership: ∈ copyright: © AT&T has an ampersand in their name. AT&T is another way to write it. This & that. 4 < 5. 6 > 5. Backslash: \ Backtick: ` Asterisk: * Underscore: _ Left brace: { Right brace: } Left bracket: [ Right bracket: ] Left paren: ( Right paren: ) Greater-than: > Hash: # Period: . Bang: ! Plus: + Minus: -
                Links
                Explicit Just a URL. URL and title. URL and title. URL and title. URL and title URL and title with_underscore Email link (nobody@nowhere.net) Empty.
                Reference Foo bar. With embedded [brackets]. b by itself should be a link. Indented once. Indented twice. Indented thrice. This should [not][] be a link. [not]: /url Foo bar. Foo biz.
                With ampersands Here’s a link with an ampersand in the URL. Here’s a link with an amersand in the link text: AT&T. Here’s an inline link. Here’s an inline link in pointy braces.
                Autolinks With an ampersand: http://example.com/?foo=1&bar=2 In a list? http://example.com/ It should. An e-mail address: nobody@nowhere.net
                Blockquoted: http://example.com/
                Auto-links should not occur here: <http://example.com/> or here: <http://example.com/>
                Images From Voyage dans la Lune by Georges Melies (1902):
                lalune lalune
                Here is a movie movie icon.
                Footnotes Here is a footnote reference, Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document. and another. Here’s the long note. This one contains multiple blocks. Subsequent blocks are indented to show that they belong to the footnote (as with list items). { <code> } If you want, you can indent every line, but you can also be lazy and just indent the first line of each block. This should not be a footnote reference, because it contains a space.[^my note] Here is an inline note. This is easier to type. Inline notes may contain links and ] verbatim characters, as well as [bracketed text].
                Notes can go in quotes. In quote.
                And in list items. In list. This paragraph should not be part of the note, as it is not indented.
                pandoc-3.1.3/test/writer.dokuwiki0000644000000000000000000002507607346545000015230 0ustar0000000000000000This is a set of tests for pandoc. Most of them are adapted from John Gruber’s markdown test suite. ---- ====== Headers ====== ===== Level 2 with an embedded link ===== ==== Level 3 with emphasis ==== === Level 4 === == Level 5 == ====== Level 1 ====== ===== Level 2 with emphasis ===== ==== Level 3 ==== with no blank line ===== Level 2 ===== with no blank line ---- ====== Paragraphs ====== Here’s a regular paragraph. In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item. Here’s one with a bullet. * criminey. There should be a hard line break\\ here. ---- ====== Block Quotes ====== E-mail style: > This is a block quote. It is pretty short.
                Code in a block quote: sub status { print "working"; } A list: - item one - item two Nested block quotes: > nested > nested
                This should not be a block quote: 2 > 1. And a following paragraph. ---- ====== Code Blocks ====== Code: ---- (should be four hyphens) sub status { print "working"; } this code block is indented by one tab And: this code block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{ ---- ====== Lists ====== ===== Unordered ===== Asterisks tight: * asterisk 1 * asterisk 2 * asterisk 3 Asterisks loose: * asterisk 1 * asterisk 2 * asterisk 3 Pluses tight: * Plus 1 * Plus 2 * Plus 3 Pluses loose: * Plus 1 * Plus 2 * Plus 3 Minuses tight: * Minus 1 * Minus 2 * Minus 3 Minuses loose: * Minus 1 * Minus 2 * Minus 3 ===== Ordered ===== Tight: - First - Second - Third and: - One - Two - Three Loose using tabs: - First - Second - Third and using spaces: - One - Two - Three Multiple paragraphs:
                1. Item 1, graf one.

                  Item 1. graf two. The quick brown fox jumped over the lazy dog’s back.

                2. Item 2.

                3. Item 3.

                ===== Nested ===== * Tab * Tab * Tab Here’s another: - First - Second: * Fee * Fie * Foe - Third Same thing but with paragraphs: - First - Second: * Fee * Fie * Foe - Third ===== Tabs and spaces ===== * this is a list item indented with tabs * this is a list item indented with spaces * this is an example list item indented with tabs * this is an example list item indented with spaces ===== Fancy list markers =====
                1. begins with 2

                2. and now 3

                  with a continuation

                  1. sublist with roman numerals, starting with 4
                  2. more items
                    1. a subsublist
                    2. a subsublist
                Nesting:
                1. Upper Alpha
                  1. Upper Roman.
                    1. Decimal start with 6
                      1. Lower alpha with paren
                Autonumbering: - Autonumber. - More. - Nested. Should not be a list item: M.A. 2007 B. Williams ---- ====== Definition Lists ====== Tight using spaces: * **apple** red fruit * **orange** orange fruit * **banana** yellow fruit Tight using tabs: * **apple** red fruit * **orange** orange fruit * **banana** yellow fruit Loose: * **apple** red fruit * **orange** orange fruit * **banana** yellow fruit Multiple blocks with italics:
                //apple//

                red fruit

                contains seeds, crisp, pleasant to taste

                //orange//

                orange fruit

                { orange code block } >

                orange block quote

                Multiple definitions, tight: * **apple** red fruitcomputer * **orange** orange fruitbank Multiple definitions, loose: * **apple** red fruitcomputer * **orange** orange fruitbank Blank line after term, indented marker, alternate markers: * **apple** red fruitcomputer * **orange** orange fruit - sublist - sublist ====== HTML Blocks ====== Simple block on one line: foo And nested without indentation: foo bar Interpreted markdown in a table:
                This is //emphasized// And this is **strong**
                Here’s a simple block: foo This should be a code block, though:
                foo
                As should this:
                foo
                Now, nested: foo This should just be an HTML comment: Multiline: Code block: Just plain comment, with trailing spaces on the line: Code:
                Hr’s:








                ---- ====== Inline Markup ====== This is //emphasized//, and so //is this//. This is **strong**, and so **is this**. An //[[url|emphasized link]]//. **//This is strong and em.//** So is **//this//** word. **//This is strong and em.//** So is **//this//** word. This is code: ''%%>%%'', ''%%$%%'', ''%%\%%'', ''%%\$%%'', ''%%%%''. This is //strikeout//. Superscripts: abcd a//hello// ahello there. Subscripts: H2O, H23O, Hmany of themO. These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d. ---- ====== Smart quotes, ellipses, dashes ====== “Hello,” said the spider. “‘Shelob’ is my name.” ‘A’, ‘B’, and ‘C’ are letters. ‘Oak,’ ‘elm,’ and ‘beech’ are names of trees. So is ‘pine.’ ‘He said, “I want to go.”’ Were you alive in the 70’s? Here is some quoted ‘''%%code%%''’ and a “[[http://example.com/?foo=1&bar=2|quoted link]]”. Some dashes: one—two — three—four — five. Dashes between numbers: 5–7, 255–66, 1987–1999. Ellipses…and…and…. ---- ====== LaTeX ====== * * $2+2=4$ * $x \in y$ * $\alpha \wedge \omega$ * $223$ * $p$-Tree * Here’s some display math: $$\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$$ * Here’s one that has a line break in it: $\alpha + \omega \times x^2$. These shouldn’t be math: * To get the famous equation, write ''%%$e = mc^2$%%''. * $22,000 is a //lot// of money. So is $34,000. (It worked if “lot” is emphasized.) * Shoes ($20) and socks ($5). * Escaped ''%%$%%'': $73 //this should be emphasized// 23$. Here’s a LaTeX table: ---- ====== Special Characters ====== Here is some unicode: * I hat: Î * o umlaut: ö * section: § * set membership: ∈ * copyright: © AT&T has an ampersand in their name. AT&T is another way to write it. This & that. 4 < 5. 6 > 5. Backslash: \ Backtick: ` Asterisk: * Underscore: _ Left brace: { Right brace: } Left bracket: [ Right bracket: ] Left paren: ( Right paren: ) Greater-than: > Hash: # Period: . Bang: ! Plus: + Minus: - ---- ====== Links ====== ===== Explicit ===== Just a [[url/|URL]]. [[url/|URL and title]]. [[url/|URL and title]]. [[url/|URL and title]]. [[url/|URL and title]] [[url/|URL and title]] [[url/with_underscore|with_underscore]] [[mailto:nobody@nowhere.net|Email link]] [[|Empty]]. ===== Reference ===== Foo [[url/|bar]]. With [[url/|embedded [brackets]]]. [[url/|b]] by itself should be a link. Indented [[url|once]]. Indented [[url|twice]]. Indented [[url|thrice]]. This should [not][] be a link. [not]: /url Foo [[url/|bar]]. Foo [[url/|biz]]. ===== With ampersands ===== Here’s a [[http://example.com/?foo=1&bar=2|link with an ampersand in the URL]]. Here’s a link with an amersand in the link text: [[http://att.com/|AT&T]]. Here’s an [[script?foo=1&bar=2|inline link]]. Here’s an [[script?foo=1&bar=2|inline link in pointy braces]]. ===== Autolinks ===== With an ampersand: http://example.com/?foo=1&bar=2 * In a list? * http://example.com/ * It should. An e-mail address: > Blockquoted: http://example.com/ Auto-links should not occur here: ''%%%%'' or here: ---- ====== Images ====== From “Voyage dans la Lune” by Georges Melies (1902): {{lalune.jpg|Voyage dans la Lune}} lalune Here is a movie {{movie.jpg|movie}} icon. ---- ====== Footnotes ====== Here is a footnote reference,((Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document. )) and another.((Here’s the long note. This one contains multiple blocks. Subsequent blocks are indented to show that they belong to the footnote (as with list items). { } If you want, you can indent every line, but you can also be lazy and just indent the first line of each block. )) This should //not// be a footnote reference, because it contains a space.[^my note] Here is an inline note.((This is //easier// to type. Inline notes may contain [[http://google.com|links]] and ''%%]%%'' verbatim characters, as well as [bracketed text]. )) > Notes can go in quotes.((In quote. > )) - And in list items.((In list.)) This paragraph should not be part of the note, as it is not indented. pandoc-3.1.3/test/writer.fb20000644000000000000000000004001407346545000014040 0ustar0000000000000000 unrecognised John MacFarlane Anonymous Pandoc Test Suite July 17, 2006 pandoc <p>Pandoc Test Suite</p>

                This is a set of tests for pandoc. Most of them are adapted from John Gruber’s markdown test suite.

                <p>Headers</p>
                <p>Level 1</p>
                <p>Level 2 with <emphasis>emphasis</emphasis> </p>
                <p>Level 3</p>

                with no blank line

                <p>Level 2</p>

                with no blank line

                <p>Paragraphs</p>

                Here’s a regular paragraph.

                In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item.

                Here’s one with a bullet. * criminey.

                There should be a hard line break here.

                <p>Block Quotes</p>

                E-mail style:

                This is a block quote. It is pretty short.

                Code in a block quote:

                sub status {

                print "working";

                }

                A list:

                1. item one

                2. item two

                Nested block quotes:

                nested

                nested

                This should not be a block quote: 2 > 1.

                And a following paragraph.

                <p>Code Blocks</p>

                Code:

                ---- (should be four hyphens)

                sub status {

                print "working";

                }

                this code block is indented by one tab

                And:

                this code block is indented by two tabs

                These should not be escaped: \$ \\ \> \[ \{

                <p>Lists</p>
                <p>Unordered</p>

                Asterisks tight:

                • asterisk 1

                • asterisk 2

                • asterisk 3

                Asterisks loose:

                • asterisk 1

                • asterisk 2

                • asterisk 3

                Pluses tight:

                • Plus 1

                • Plus 2

                • Plus 3

                Pluses loose:

                • Plus 1

                • Plus 2

                • Plus 3

                Minuses tight:

                • Minus 1

                • Minus 2

                • Minus 3

                Minuses loose:

                • Minus 1

                • Minus 2

                • Minus 3

                <p>Ordered</p>

                Tight:

                1. First

                2. Second

                3. Third

                and:

                1. One

                2. Two

                3. Three

                Loose using tabs:

                1. First

                2. Second

                3. Third

                and using spaces:

                1. One

                2. Two

                3. Three

                Multiple paragraphs:

                1. Item 1, graf one.

                   Item 1. graf two. The quick brown fox jumped over the lazy dog’s back.

                2. Item 2.

                3. Item 3.

                <p>Nested</p>

                • Tab

                • • Tab

                • • • Tab

                Here’s another:

                1. First

                2. Second:

                2. • Fee

                2. • Fie

                2. • Foe

                3. Third

                Same thing but with paragraphs:

                1. First

                2. Second:

                2. • Fee

                2. • Fie

                2. • Foe

                3. Third

                <p>Tabs and spaces</p>

                • this is a list item indented with tabs

                • this is a list item indented with spaces

                • • this is an example list item indented with tabs

                • • this is an example list item indented with spaces

                <p>Fancy list markers</p>

                (2) begins with 2

                (3) and now 3

                    with a continuation

                (3) iv. sublist with roman numerals, starting with 4

                (3) v. more items

                (3) v. (A) a subsublist

                (3) v. (B) a subsublist

                Nesting:

                A. Upper Alpha

                A. I. Upper Roman.

                A. I. (6) Decimal start with 6

                A. I. (6) c) Lower alpha with paren

                Autonumbering:

                1. Autonumber.

                2. More.

                2. 1. Nested.

                Should not be a list item:

                M.A. 2007

                B. Williams

                <p>Definition Lists</p>

                Tight using spaces:

                apple

                    red fruit

                orange

                    orange fruit

                banana

                    yellow fruit

                Tight using tabs:

                apple

                    red fruit

                orange

                    orange fruit

                banana

                    yellow fruit

                Loose:

                apple

                    red fruit

                orange

                    orange fruit

                banana

                    yellow fruit

                Multiple blocks with italics:

                apple

                    red fruit

                    contains seeds, crisp, pleasant to taste

                orange

                    orange fruit

                    { orange code block }

                    orange block quote

                Multiple definitions, tight:

                apple

                    red fruit

                    computer

                orange

                    orange fruit

                    bank

                Multiple definitions, loose:

                apple

                    red fruit

                    computer

                orange

                    orange fruit

                    bank

                Blank line after term, indented marker, alternate markers:

                apple

                    red fruit

                    computer

                orange

                    orange fruit

                1. sublist

                2. sublist

                <p>HTML Blocks</p>

                Simple block on one line:

                foo

                And nested without indentation:

                foo

                bar

                Interpreted markdown in a table:

                This is emphasizedAnd this is strong

                Here’s a simple block:

                foo

                This should be a code block, though:

                <div>

                foo

                </div>

                As should this:

                <div>foo</div>

                Now, nested:

                foo

                This should just be an HTML comment:

                Multiline:

                Code block:

                <!-- Comment -->

                Just plain comment, with trailing spaces on the line:

                Code:

                <hr />

                Hr’s:

                <p>Inline Markup</p>

                This is emphasized, and so is this.

                This is strong, and so is this.

                An emphasized link .

                This is strong and em.

                So is this word.

                This is strong and em.

                So is this word.

                This is code: >, $, \, \$, <html>.

                This is strikeout.

                Superscripts: abcd a hello ahello there.

                Subscripts: H2O, H23O, Hmany of themO.

                These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d.

                <p>Smart quotes, ellipses, dashes</p>

                “Hello,” said the spider. “‘Shelob’ is my name.”

                ‘A’, ‘B’, and ‘C’ are letters.

                ‘Oak,’ ‘elm,’ and ‘beech’ are names of trees. So is ‘pine.’

                ‘He said, “I want to go.”’ Were you alive in the 70’s?

                Here is some quoted ‘code’ and a “quoted link”.

                Some dashes: one—two — three—four — five.

                Dashes between numbers: 5–7, 255–66, 1987–1999.

                Ellipses…and…and….

                <p>LaTeX</p>

                • 

                • 2+2=4

                • x \in y

                • \alpha \wedge \omega

                • 223

                • p-Tree

                • Here’s some display math: \frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}

                • Here’s one that has a line break in it: \alpha + \omega \times x^2.

                These shouldn’t be math:

                • To get the famous equation, write $e = mc^2$.

                • $22,000 is a lot of money. So is $34,000. (It worked if “lot” is emphasized.)

                • Shoes ($20) and socks ($5).

                • Escaped $: $73 this should be emphasized 23$.

                Here’s a LaTeX table:

                <p>Special Characters</p>

                Here is some unicode:

                • I hat: Î

                • o umlaut: ö

                • section: §

                • set membership: ∈

                • copyright: ©

                AT&T has an ampersand in their name.

                AT&T is another way to write it.

                This & that.

                4 < 5.

                6 > 5.

                Backslash: \

                Backtick: `

                Asterisk: *

                Underscore: _

                Left brace: {

                Right brace: }

                Left bracket: [

                Right bracket: ]

                Left paren: (

                Right paren: )

                Greater-than: >

                Hash: #

                Period: .

                Bang: !

                Plus: +

                Minus: -

                <p>Images</p>

                From “Voyage dans la Lune” by Georges Melies (1902):

                lalune

                Here is a movie movie icon.

                <p>Footnotes</p>

                Here is a footnote reference,[1] and another.[2] This should not be a footnote reference, because it contains a space.[^my note] Here is an inline note.[3]

                Notes can go in quotes.[4]

                1. And in list items.[5]

                This paragraph should not be part of the note, as it is not indented.

                <p>1</p>

                Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document.

                <p>2</p>

                Here’s the long note. This one contains multiple blocks.

                Subsequent blocks are indented to show that they belong to the footnote (as with list items).

                { <code> }

                If you want, you can indent every line, but you can also be lazy and just indent the first line of each block.

                <p>3</p>

                This is easier to type. Inline notes may contain links and ] verbatim characters, as well as [bracketed text].

                <p>4</p>

                In quote.

                <p>5</p>

                In list.

                pandoc-3.1.3/test/writer.haddock0000644000000000000000000002313707346545000014773 0ustar0000000000000000This is a set of tests for pandoc. Most of them are adapted from John Gruber’s markdown test suite. ________________________________________________________________________________ = Headers #headers# == Level 2 with an #level-2-with-an-embedded-link# === Level 3 with /emphasis/ #level-3-with-emphasis# ==== Level 4 #level-4# ===== Level 5 #level-5# = Level 1 #level-1# == Level 2 with /emphasis/ #level-2-with-emphasis# === Level 3 #level-3# with no blank line == Level 2 #level-2# with no blank line ________________________________________________________________________________ = Paragraphs #paragraphs# Here’s a regular paragraph. In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item. Here’s one with a bullet. * criminey. There should be a hard line break here. ________________________________________________________________________________ = Block Quotes #block-quotes# E-mail style: This is a block quote. It is pretty short. Code in a block quote: > sub status { > print "working"; > } A list: 1. item one 2. item two Nested block quotes: nested nested This should not be a block quote: 2 > 1. And a following paragraph. ________________________________________________________________________________ = Code Blocks #code-blocks# Code: > ---- (should be four hyphens) > > sub status { > print "working"; > } > > this code block is indented by one tab And: > this code block is indented by two tabs > > These should not be escaped: \$ \\ \> \[ \{ ________________________________________________________________________________ = Lists #lists# == Unordered #unordered# Asterisks tight: - asterisk 1 - asterisk 2 - asterisk 3 Asterisks loose: - asterisk 1 - asterisk 2 - asterisk 3 Pluses tight: - Plus 1 - Plus 2 - Plus 3 Pluses loose: - Plus 1 - Plus 2 - Plus 3 Minuses tight: - Minus 1 - Minus 2 - Minus 3 Minuses loose: - Minus 1 - Minus 2 - Minus 3 == Ordered #ordered# Tight: 1. First 2. Second 3. Third and: 1. One 2. Two 3. Three Loose using tabs: 1. First 2. Second 3. Third and using spaces: 1. One 2. Two 3. Three Multiple paragraphs: 1. Item 1, graf one. Item 1. graf two. The quick brown fox jumped over the lazy dog’s back. 2. Item 2. 3. Item 3. == Nested #nested# - Tab - Tab - Tab Here’s another: 1. First 2. Second: - Fee - Fie - Foe 3. Third Same thing but with paragraphs: 1. First 2. Second: - Fee - Fie - Foe 3. Third == Tabs and spaces #tabs-and-spaces# - this is a list item indented with tabs - this is a list item indented with spaces - this is an example list item indented with tabs - this is an example list item indented with spaces == Fancy list markers #fancy-list-markers# (2) begins with 2 (3) and now 3 with a continuation 4. sublist with roman numerals, starting with 4 5. more items (1) a subsublist (2) a subsublist Nesting: 1. Upper Alpha 1. Upper Roman. (6) Decimal start with 6 3) Lower alpha with paren Autonumbering: 1. Autonumber. 2. More. 1. Nested. Should not be a list item: M.A. 2007 B. Williams ________________________________________________________________________________ = Definition Lists #definition-lists# Tight using spaces: [apple] red fruit [orange] orange fruit [banana] yellow fruit Tight using tabs: [apple] red fruit [orange] orange fruit [banana] yellow fruit Loose: [apple] red fruit [orange] orange fruit [banana] yellow fruit Multiple blocks with italics: [/apple/] red fruit contains seeds, crisp, pleasant to taste [/orange/] orange fruit > { orange code block } orange block quote Multiple definitions, tight: [apple] red fruit computer [orange] orange fruit bank Multiple definitions, loose: [apple] red fruit computer [orange] orange fruit bank Blank line after term, indented marker, alternate markers: [apple] red fruit computer [orange] orange fruit 1. sublist 2. sublist = HTML Blocks #html-blocks# Simple block on one line: foo And nested without indentation: foo bar Interpreted markdown in a table: This is /emphasized/ And this is __strong__ Here’s a simple block: foo This should be a code block, though: >
                > foo >
                As should this: >
                foo
                Now, nested: foo This should just be an HTML comment: Multiline: Code block: > Just plain comment, with trailing spaces on the line: Code: >
                Hr’s: ________________________________________________________________________________ = Inline Markup #inline-markup# This is /emphasized/, and so /is this/. This is __strong__, and so __is this__. An //. __/This is strong and em./__ So is __/this/__ word. __/This is strong and em./__ So is __/this/__ word. This is code: @>@, @$@, @\\@, @\\$@, @\@. ~~This is /strikeout/.~~ Superscripts: abcd a/hello/ ahello there. Subscripts: H2O, H23O, Hmany of themO. These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d. ________________________________________________________________________________ = Smart quotes, ellipses, dashes #smart-quotes-ellipses-dashes# “Hello,” said the spider. “‘Shelob’ is my name.” ‘A’, ‘B’, and ‘C’ are letters. ‘Oak,’ ‘elm,’ and ‘beech’ are names of trees. So is ‘pine.’ ‘He said, “I want to go.”’ Were you alive in the 70’s? Here is some quoted ‘@code@’ and a “”. Some dashes: one—two — three—four — five. Dashes between numbers: 5–7, 255–66, 1987–1999. Ellipses…and…and…. ________________________________________________________________________________ = LaTeX #latex# - - \(2+2=4\) - \(x \in y\) - \(\alpha \wedge \omega\) - \(223\) - \(p\)-Tree - Here’s some display math: \[\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}\] - Here’s one that has a line break in it: \(\alpha + \omega \times x^2\). These shouldn’t be math: - To get the famous equation, write @$e = mc^2$@. - $22,000 is a /lot/ of money. So is $34,000. (It worked if “lot” is emphasized.) - Shoes ($20) and socks ($5). - Escaped @$@: $73 /this should be emphasized/ 23$. Here’s a LaTeX table: ________________________________________________________________________________ = Special Characters #special-characters# Here is some unicode: - I hat: Î - o umlaut: ö - section: § - set membership: ∈ - copyright: © AT&T has an ampersand in their name. AT&T is another way to write it. This & that. 4 \< 5. 6 > 5. Backslash: \\ Backtick: \` Asterisk: * Underscore: _ Left brace: { Right brace: } Left bracket: [ Right bracket: ] Left paren: ( Right paren: ) Greater-than: > Hash: # Period: . Bang: ! Plus: + Minus: - ________________________________________________________________________________ = Links #links# == Explicit #explicit# Just a . . . . < Empty>. == Reference #reference# Foo . With . by itself should be a link. Indented . Indented . Indented . This should [not][] be a link. > [not]: /url Foo . Foo . == With ampersands #with-ampersands# Here’s a . Here’s a link with an amersand in the link text: . Here’s an . Here’s an . == Autolinks #autolinks# With an ampersand: - In a list? - - It should. An e-mail address: Blockquoted: Auto-links should not occur here: @\@ > or here: ________________________________________________________________________________ = Images #images# From “Voyage dans la Lune” by Georges Melies (1902): <> lalune Here is a movie <> icon. ________________________________________________________________________________ = Footnotes #footnotes# Here is a footnote reference,<#notes [1]> and another.<#notes [2]> This should /not/ be a footnote reference, because it contains a space.[^my note] Here is an inline note.<#notes [3]> Notes can go in quotes.<#notes [4]> 1. And in list items.<#notes [5]> This paragraph should not be part of the note, as it is not indented. #notes# 1. Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document. 2. Here’s the long note. This one contains multiple blocks. Subsequent blocks are indented to show that they belong to the footnote (as with list items). > { } If you want, you can indent every line, but you can also be lazy and just indent the first line of each block. 3. This is /easier/ to type. Inline notes may contain and @]@ verbatim characters, as well as [bracketed text]. 4. In quote. 5. In list. pandoc-3.1.3/test/writer.html40000644000000000000000000004531107346545000014424 0ustar0000000000000000 Pandoc Test Suite

                This is a set of tests for pandoc. Most of them are adapted from John Gruber’s markdown test suite.


                Headers

                Level 3 with emphasis

                Level 4

                Level 5

                Level 1

                Level 2 with emphasis

                Level 3

                with no blank line

                Level 2

                with no blank line


                Paragraphs

                Here’s a regular paragraph.

                In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item.

                Here’s one with a bullet. * criminey.

                There should be a hard line break
                here.


                Block Quotes

                E-mail style:

                This is a block quote. It is pretty short.

                Code in a block quote:

                sub status {
                    print "working";
                }

                A list:

                1. item one
                2. item two

                Nested block quotes:

                nested

                nested

                This should not be a block quote: 2 > 1.

                And a following paragraph.


                Code Blocks

                Code:

                ---- (should be four hyphens)
                
                sub status {
                    print "working";
                }
                
                this code block is indented by one tab

                And:

                    this code block is indented by two tabs
                
                These should not be escaped:  \$ \\ \> \[ \{

                Lists

                Unordered

                Asterisks tight:

                • asterisk 1
                • asterisk 2
                • asterisk 3

                Asterisks loose:

                • asterisk 1

                • asterisk 2

                • asterisk 3

                Pluses tight:

                • Plus 1
                • Plus 2
                • Plus 3

                Pluses loose:

                • Plus 1

                • Plus 2

                • Plus 3

                Minuses tight:

                • Minus 1
                • Minus 2
                • Minus 3

                Minuses loose:

                • Minus 1

                • Minus 2

                • Minus 3

                Ordered

                Tight:

                1. First
                2. Second
                3. Third

                and:

                1. One
                2. Two
                3. Three

                Loose using tabs:

                1. First

                2. Second

                3. Third

                and using spaces:

                1. One

                2. Two

                3. Three

                Multiple paragraphs:

                1. Item 1, graf one.

                  Item 1. graf two. The quick brown fox jumped over the lazy dog’s back.

                2. Item 2.

                3. Item 3.

                Nested

                • Tab
                  • Tab
                    • Tab

                Here’s another:

                1. First
                2. Second:
                  • Fee
                  • Fie
                  • Foe
                3. Third

                Same thing but with paragraphs:

                1. First

                2. Second:

                  • Fee
                  • Fie
                  • Foe
                3. Third

                Tabs and spaces

                • this is a list item indented with tabs

                • this is a list item indented with spaces

                  • this is an example list item indented with tabs

                  • this is an example list item indented with spaces

                Fancy list markers

                1. begins with 2

                2. and now 3

                  with a continuation

                  1. sublist with roman numerals, starting with 4
                  2. more items
                    1. a subsublist
                    2. a subsublist

                Nesting:

                1. Upper Alpha
                  1. Upper Roman.
                    1. Decimal start with 6
                      1. Lower alpha with paren

                Autonumbering:

                1. Autonumber.
                2. More.
                  1. Nested.

                Should not be a list item:

                M.A. 2007

                B. Williams


                Definition Lists

                Tight using spaces:

                apple
                red fruit
                orange
                orange fruit
                banana
                yellow fruit

                Tight using tabs:

                apple
                red fruit
                orange
                orange fruit
                banana
                yellow fruit

                Loose:

                apple

                red fruit

                orange

                orange fruit

                banana

                yellow fruit

                Multiple blocks with italics:

                apple

                red fruit

                contains seeds, crisp, pleasant to taste

                orange

                orange fruit

                { orange code block }

                orange block quote

                Multiple definitions, tight:

                apple
                red fruit
                computer
                orange
                orange fruit
                bank

                Multiple definitions, loose:

                apple

                red fruit

                computer

                orange

                orange fruit

                bank

                Blank line after term, indented marker, alternate markers:

                apple

                red fruit

                computer

                orange

                orange fruit

                1. sublist
                2. sublist

                HTML Blocks

                Simple block on one line:

                foo

                And nested without indentation:

                foo

                bar

                Interpreted markdown in a table:

                This is emphasized And this is strong

                Here’s a simple block:

                foo

                This should be a code block, though:

                <div>
                    foo
                </div>

                As should this:

                <div>foo</div>

                Now, nested:

                foo

                This should just be an HTML comment:

                Multiline:

                Code block:

                <!-- Comment -->

                Just plain comment, with trailing spaces on the line:

                Code:

                <hr />

                Hr’s:











                Inline Markup

                This is emphasized, and so is this.

                This is strong, and so is this.

                An emphasized link.

                This is strong and em.

                So is this word.

                This is strong and em.

                So is this word.

                This is code: >, $, \, \$, <html>.

                This is strikeout.

                Superscripts: abcd ahello ahello there.

                Subscripts: H2O, H23O, Hmany of themO.

                These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d.


                Smart quotes, ellipses, dashes

                “Hello,” said the spider. “‘Shelob’ is my name.”

                ‘A’, ‘B’, and ‘C’ are letters.

                ‘Oak,’ ‘elm,’ and ‘beech’ are names of trees. So is ‘pine.’

                ‘He said, “I want to go.”’ Were you alive in the 70’s?

                Here is some quoted ‘code’ and a “quoted link”.

                Some dashes: one—two — three—four — five.

                Dashes between numbers: 5–7, 255–66, 1987–1999.

                Ellipses…and…and….


                LaTeX

                • 2 + 2 = 4
                • x ∈ y
                • α ∧ ω
                • 223
                • p-Tree
                • Here’s some display math: $$\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$$
                • Here’s one that has a line break in it: α + ω × x2.

                These shouldn’t be math:

                • To get the famous equation, write $e = mc^2$.
                • $22,000 is a lot of money. So is $34,000. (It worked if “lot” is emphasized.)
                • Shoes ($20) and socks ($5).
                • Escaped $: $73 this should be emphasized 23$.

                Here’s a LaTeX table:


                Special Characters

                Here is some unicode:

                • I hat: Î
                • o umlaut: ö
                • section: §
                • set membership: ∈
                • copyright: ©

                AT&T has an ampersand in their name.

                AT&T is another way to write it.

                This & that.

                4 < 5.

                6 > 5.

                Backslash: \

                Backtick: `

                Asterisk: *

                Underscore: _

                Left brace: {

                Right brace: }

                Left bracket: [

                Right bracket: ]

                Left paren: (

                Right paren: )

                Greater-than: >

                Hash: #

                Period: .

                Bang: !

                Plus: +

                Minus: -


                Links

                Explicit

                Just a URL.

                URL and title.

                URL and title.

                URL and title.

                URL and title

                URL and title

                with_underscore

                Email link

                Empty.

                Reference

                Foo bar.

                With embedded [brackets].

                b by itself should be a link.

                Indented once.

                Indented twice.

                Indented thrice.

                This should [not][] be a link.

                [not]: /url

                Foo bar.

                Foo biz.

                With ampersands

                Here’s a link with an ampersand in the URL.

                Here’s a link with an amersand in the link text: AT&T.

                Here’s an inline link.

                Here’s an inline link in pointy braces.

                With an ampersand: http://example.com/?foo=1&bar=2

                An e-mail address:

                Blockquoted: http://example.com/

                Auto-links should not occur here: <http://example.com/>

                or here: <http://example.com/>

                Images

                From “Voyage dans la Lune” by Georges Melies (1902):

                lalune
                lalune

                Here is a movie movie icon.


                Footnotes

                Here is a footnote reference,1 and another.2 This should not be a footnote reference, because it contains a space.[^my note] Here is an inline note.3

                Notes can go in quotes.4

                1. And in list items.5

                This paragraph should not be part of the note, as it is not indented.


                1. Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document.↩︎

                2. Here’s the long note. This one contains multiple blocks.

                  Subsequent blocks are indented to show that they belong to the footnote (as with list items).

                    { <code> }

                  If you want, you can indent every line, but you can also be lazy and just indent the first line of each block.↩︎

                3. This is easier to type. Inline notes may contain links and ] verbatim characters, as well as [bracketed text].↩︎

                4. In quote.↩︎

                5. In list.↩︎

                pandoc-3.1.3/test/writer.html50000644000000000000000000004507107346545000014430 0ustar0000000000000000 Pandoc Test Suite

                Pandoc Test Suite

                John MacFarlane

                Anonymous

                July 17, 2006

                This is a set of tests for pandoc. Most of them are adapted from John Gruber’s markdown test suite.


                Headers

                Level 3 with emphasis

                Level 4

                Level 5

                Level 1

                Level 2 with emphasis

                Level 3

                with no blank line

                Level 2

                with no blank line


                Paragraphs

                Here’s a regular paragraph.

                In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item.

                Here’s one with a bullet. * criminey.

                There should be a hard line break
                here.


                Block Quotes

                E-mail style:

                This is a block quote. It is pretty short.

                Code in a block quote:

                sub status {
                    print "working";
                }

                A list:

                1. item one
                2. item two

                Nested block quotes:

                nested

                nested

                This should not be a block quote: 2 > 1.

                And a following paragraph.


                Code Blocks

                Code:

                ---- (should be four hyphens)
                
                sub status {
                    print "working";
                }
                
                this code block is indented by one tab

                And:

                    this code block is indented by two tabs
                
                These should not be escaped:  \$ \\ \> \[ \{

                Lists

                Unordered

                Asterisks tight:

                • asterisk 1
                • asterisk 2
                • asterisk 3

                Asterisks loose:

                • asterisk 1

                • asterisk 2

                • asterisk 3

                Pluses tight:

                • Plus 1
                • Plus 2
                • Plus 3

                Pluses loose:

                • Plus 1

                • Plus 2

                • Plus 3

                Minuses tight:

                • Minus 1
                • Minus 2
                • Minus 3

                Minuses loose:

                • Minus 1

                • Minus 2

                • Minus 3

                Ordered

                Tight:

                1. First
                2. Second
                3. Third

                and:

                1. One
                2. Two
                3. Three

                Loose using tabs:

                1. First

                2. Second

                3. Third

                and using spaces:

                1. One

                2. Two

                3. Three

                Multiple paragraphs:

                1. Item 1, graf one.

                  Item 1. graf two. The quick brown fox jumped over the lazy dog’s back.

                2. Item 2.

                3. Item 3.

                Nested

                • Tab
                  • Tab
                    • Tab

                Here’s another:

                1. First
                2. Second:
                  • Fee
                  • Fie
                  • Foe
                3. Third

                Same thing but with paragraphs:

                1. First

                2. Second:

                  • Fee
                  • Fie
                  • Foe
                3. Third

                Tabs and spaces

                • this is a list item indented with tabs

                • this is a list item indented with spaces

                  • this is an example list item indented with tabs

                  • this is an example list item indented with spaces

                Fancy list markers

                1. begins with 2

                2. and now 3

                  with a continuation

                  1. sublist with roman numerals, starting with 4
                  2. more items
                    1. a subsublist
                    2. a subsublist

                Nesting:

                1. Upper Alpha
                  1. Upper Roman.
                    1. Decimal start with 6
                      1. Lower alpha with paren

                Autonumbering:

                1. Autonumber.
                2. More.
                  1. Nested.

                Should not be a list item:

                M.A. 2007

                B. Williams


                Definition Lists

                Tight using spaces:

                apple
                red fruit
                orange
                orange fruit
                banana
                yellow fruit

                Tight using tabs:

                apple
                red fruit
                orange
                orange fruit
                banana
                yellow fruit

                Loose:

                apple

                red fruit

                orange

                orange fruit

                banana

                yellow fruit

                Multiple blocks with italics:

                apple

                red fruit

                contains seeds, crisp, pleasant to taste

                orange

                orange fruit

                { orange code block }

                orange block quote

                Multiple definitions, tight:

                apple
                red fruit
                computer
                orange
                orange fruit
                bank

                Multiple definitions, loose:

                apple

                red fruit

                computer

                orange

                orange fruit

                bank

                Blank line after term, indented marker, alternate markers:

                apple

                red fruit

                computer

                orange

                orange fruit

                1. sublist
                2. sublist

                HTML Blocks

                Simple block on one line:

                foo

                And nested without indentation:

                foo

                bar

                Interpreted markdown in a table:

                This is emphasized And this is strong

                Here’s a simple block:

                foo

                This should be a code block, though:

                <div>
                    foo
                </div>

                As should this:

                <div>foo</div>

                Now, nested:

                foo

                This should just be an HTML comment:

                Multiline:

                Code block:

                <!-- Comment -->

                Just plain comment, with trailing spaces on the line:

                Code:

                <hr />

                Hr’s:











                Inline Markup

                This is emphasized, and so is this.

                This is strong, and so is this.

                An emphasized link.

                This is strong and em.

                So is this word.

                This is strong and em.

                So is this word.

                This is code: >, $, \, \$, <html>.

                This is strikeout.

                Superscripts: abcd ahello ahello there.

                Subscripts: H2O, H23O, Hmany of themO.

                These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d.


                Smart quotes, ellipses, dashes

                “Hello,” said the spider. “‘Shelob’ is my name.”

                ‘A’, ‘B’, and ‘C’ are letters.

                ‘Oak,’ ‘elm,’ and ‘beech’ are names of trees. So is ‘pine.’

                ‘He said, “I want to go.”’ Were you alive in the 70’s?

                Here is some quoted ‘code’ and a “quoted link”.

                Some dashes: one—two — three—four — five.

                Dashes between numbers: 5–7, 255–66, 1987–1999.

                Ellipses…and…and….


                LaTeX

                • 2 + 2 = 4
                • x ∈ y
                • α ∧ ω
                • 223
                • p-Tree
                • Here’s some display math: $$\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$$
                • Here’s one that has a line break in it: α + ω × x2.

                These shouldn’t be math:

                • To get the famous equation, write $e = mc^2$.
                • $22,000 is a lot of money. So is $34,000. (It worked if “lot” is emphasized.)
                • Shoes ($20) and socks ($5).
                • Escaped $: $73 this should be emphasized 23$.

                Here’s a LaTeX table:


                Special Characters

                Here is some unicode:

                • I hat: Î
                • o umlaut: ö
                • section: §
                • set membership: ∈
                • copyright: ©

                AT&T has an ampersand in their name.

                AT&T is another way to write it.

                This & that.

                4 < 5.

                6 > 5.

                Backslash: \

                Backtick: `

                Asterisk: *

                Underscore: _

                Left brace: {

                Right brace: }

                Left bracket: [

                Right bracket: ]

                Left paren: (

                Right paren: )

                Greater-than: >

                Hash: #

                Period: .

                Bang: !

                Plus: +

                Minus: -


                Links

                Explicit

                Just a URL.

                URL and title.

                URL and title.

                URL and title.

                URL and title

                URL and title

                with_underscore

                Email link

                Empty.

                Reference

                Foo bar.

                With embedded [brackets].

                b by itself should be a link.

                Indented once.

                Indented twice.

                Indented thrice.

                This should [not][] be a link.

                [not]: /url

                Foo bar.

                Foo biz.

                With ampersands

                Here’s a link with an ampersand in the URL.

                Here’s a link with an amersand in the link text: AT&T.

                Here’s an inline link.

                Here’s an inline link in pointy braces.

                With an ampersand: http://example.com/?foo=1&bar=2

                An e-mail address:

                Blockquoted: http://example.com/

                Auto-links should not occur here: <http://example.com/>

                or here: <http://example.com/>

                Images

                From “Voyage dans la Lune” by Georges Melies (1902):

                lalune

                Here is a movie movie icon.


                Footnotes

                Here is a footnote reference,1 and another.2 This should not be a footnote reference, because it contains a space.[^my note] Here is an inline note.3

                Notes can go in quotes.4

                1. And in list items.5

                This paragraph should not be part of the note, as it is not indented.

                pandoc-3.1.3/test/writer.icml0000644000000000000000000044005407346545000014323 0ustar0000000000000000 $ID/NormalCharacterStyle $ID/NormalCharacterStyle $ID/NormalCharacterStyle $ID/NormalCharacterStyle Courier New $ID/NormalCharacterStyle $ID/NormalCharacterStyle $ID/NormalCharacterStyle $ID/NormalCharacterStyle $ID/NormalCharacterStyle $ID/NormalCharacterStyle $ID/NormalCharacterStyle $ID/NormalCharacterStyle LeftAlign . 10 $ID/NormalParagraphStyle $ID/NormalParagraphStyle $ID/NormalParagraphStyle Courier New $ID/NormalParagraphStyle $ID/NormalParagraphStyle $ID/NormalParagraphStyle $ID/NormalParagraphStyle LeftAlign . 10 $ID/NormalParagraphStyle LeftAlign . 30 $ID/NormalParagraphStyle LeftAlign . 20 $ID/NormalParagraphStyle LeftAlign . 20 $ID/NormalParagraphStyle LeftAlign . 20 $ID/NormalParagraphStyle LeftAlign . 10 $ID/NormalParagraphStyle LeftAlign . 10 $ID/NormalParagraphStyle LeftAlign . 10 $ID/NormalParagraphStyle $ID/NormalParagraphStyle Courier New $ID/NormalParagraphStyle $ID/NormalParagraphStyle $ID/NormalParagraphStyle Courier New $ID/NormalParagraphStyle $ID/NormalParagraphStyle $ID/NormalParagraphStyle $ID/NormalParagraphStyle $ID/NormalParagraphStyle $ID/NormalParagraphStyle Courier New $ID/NormalParagraphStyle $ID/NormalParagraphStyle $ID/NormalParagraphStyle $ID/NormalParagraphStyle $ID/NormalParagraphStyle $ID/NormalParagraphStyle $ID/NormalParagraphStyle $ID/NormalParagraphStyle LeftAlign . 20 $ID/NormalParagraphStyle LeftAlign . 20 $ID/NormalParagraphStyle a, b, c, d... $ID/NormalParagraphStyle $ID/NormalParagraphStyle A, B, C, D... $ID/NormalParagraphStyle A, B, C, D... $ID/NormalParagraphStyle i, ii, iii, iv... $ID/NormalParagraphStyle $ID/NormalParagraphStyle i, ii, iii, iv... $ID/NormalParagraphStyle I, II, III, IV... $ID/NormalParagraphStyle $ID/NormalParagraphStyle $ID/NormalParagraphStyle $ID/NormalParagraphStyle $ID/NormalParagraphStyle $ID/NormalParagraphStyle A, B, C, D... $ID/NormalParagraphStyle $ID/NormalParagraphStyle This is a set of tests for pandoc. Most of them are adapted from John Gruber’s markdown test suite.
                Headers
                Level 2 with an
                Level 3 with emphasis
                Level 4
                Level 5
                Level 1
                Level 2 with emphasis
                Level 3
                with no blank line
                Level 2
                with no blank line
                Paragraphs
                Here’s a regular paragraph.
                In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item.
                Here’s one with a bullet. * criminey.
                There should be a hard line break here.
                Block Quotes
                E-mail style:
                This is a block quote. It is pretty short.
                Code in a block quote:
                sub status { print "working"; }
                A list:
                item one
                item two
                Nested block quotes:
                nested
                nested
                This should not be a block quote: 2 > 1.
                And a following paragraph.
                Code Blocks
                Code:
                ---- (should be four hyphens) sub status { print "working"; } this code block is indented by one tab
                And:
                this code block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{
                Lists
                Unordered
                Asterisks tight:
                asterisk 1
                asterisk 2
                asterisk 3
                Asterisks loose:
                asterisk 1
                asterisk 2
                asterisk 3
                Pluses tight:
                Plus 1
                Plus 2
                Plus 3
                Pluses loose:
                Plus 1
                Plus 2
                Plus 3
                Minuses tight:
                Minus 1
                Minus 2
                Minus 3
                Minuses loose:
                Minus 1
                Minus 2
                Minus 3
                Ordered
                Tight:
                First
                Second
                Third
                and:
                One
                Two
                Three
                Loose using tabs:
                First
                Second
                Third
                and using spaces:
                One
                Two
                Three
                Multiple paragraphs:
                Item 1, graf one.
                Item 1. graf two. The quick brown fox jumped over the lazy dog’s back.
                Item 2.
                Item 3.
                Nested
                Tab
                Tab
                Tab
                Here’s another:
                First
                Second:
                Fee
                Fie
                Foe
                Third
                Same thing but with paragraphs:
                First
                Second:
                Fee
                Fie
                Foe
                Third
                Tabs and spaces
                this is a list item indented with tabs
                this is a list item indented with spaces
                this is an example list item indented with tabs
                this is an example list item indented with spaces
                Fancy list markers
                begins with 2
                and now 3
                with a continuation
                sublist with roman numerals, starting with 4
                more items
                a subsublist
                a subsublist
                Nesting:
                Upper Alpha
                Upper Roman.
                Decimal start with 6
                Lower alpha with paren
                Autonumbering:
                Autonumber.
                More.
                Nested.
                Should not be a list item:
                M.A. 2007
                B. Williams
                Definition Lists
                Tight using spaces:
                apple
                red fruit
                orange
                orange fruit
                banana
                yellow fruit
                Tight using tabs:
                apple
                red fruit
                orange
                orange fruit
                banana
                yellow fruit
                Loose:
                apple
                red fruit
                orange
                orange fruit
                banana
                yellow fruit
                Multiple blocks with italics:
                apple
                red fruit
                contains seeds, crisp, pleasant to taste
                orange
                orange fruit
                { orange code block }
                orange block quote
                Multiple definitions, tight:
                apple
                red fruit
                computer
                orange
                orange fruit
                bank
                Multiple definitions, loose:
                apple
                red fruit
                computer
                orange
                orange fruit
                bank
                Blank line after term, indented marker, alternate markers:
                apple
                red fruit
                computer
                orange
                orange fruit
                sublist
                sublist
                HTML Blocks
                Simple block on one line:
                foo
                And nested without indentation:
                foo
                bar
                Interpreted markdown in a table:
                This is emphasized
                And this is strong
                Here’s a simple block:
                foo
                This should be a code block, though:
                <div> foo </div>
                As should this:
                <div>foo</div>
                Now, nested:
                foo
                This should just be an HTML comment:
                Multiline:
                Code block:
                <!-- Comment -->
                Just plain comment, with trailing spaces on the line:
                Code:
                <hr />
                Hr’s:
                Inline Markup
                This is emphasized , and so is this .
                This is strong , and so is this .
                An .
                This is strong and em.
                So is this word.
                This is strong and em.
                So is this word.
                This is code: > , $ , \ , \$ , <html> .
                This is strikeout .
                Superscripts: a bc d a hello a hello there .
                Subscripts: H 2 O, H 23 O, H many of them O.
                These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d.
                Smart quotes, ellipses, dashes
                “Hello,” said the spider. ‘Shelob’ is my name.”
                ‘A’ , ‘B’ , and ‘C’ are letters.
                ‘Oak,’ ‘elm,’ and ‘beech’ are names of trees. So is ‘pine.’
                ‘He said, “I want to go.” Were you alive in the 70’s?
                Here is some quoted code and a .
                Some dashes: one—two — three—four — five.
                Dashes between numbers: 5–7, 255–66, 1987–1999.
                Ellipses…and…and….
                LaTeX

                2 + 2 = 4
                x y
                α ω
                223
                p -Tree
                Here’s some display math: $$\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$$
                Here’s one that has a line break in it: α + ω × x 2 .
                These shouldn’t be math:
                To get the famous equation, write $e = mc^2$ .
                $22,000 is a lot of money. So is $34,000. (It worked if “lot” is emphasized.)
                Shoes ($20) and socks ($5).
                Escaped $ : $73 this should be emphasized 23$.
                Here’s a LaTeX table:
                Special Characters
                Here is some unicode:
                I hat: Î
                o umlaut: ö
                section: §
                set membership: ∈
                copyright: ©
                AT&T has an ampersand in their name.
                AT&T is another way to write it.
                This & that.
                4 < 5.
                6 > 5.
                Backslash: \
                Backtick: `
                Asterisk: *
                Underscore: _
                Left brace: {
                Right brace: }
                Left bracket: [
                Right bracket: ]
                Left paren: (
                Right paren: )
                Greater-than: >
                Hash: #
                Period: .
                Bang: !
                Plus: +
                Minus: -
                Links
                Explicit
                Just a .
                .
                .
                .




                .
                Reference
                Foo .
                With .
                by itself should be a link.
                Indented .
                Indented .
                Indented .
                This should [not][] be a link.
                [not]: /url
                Foo .
                Foo .
                With ampersands
                Here’s a .
                Here’s a link with an amersand in the link text: .
                Here’s an .
                Here’s an .
                Autolinks
                With an ampersand:
                In a list?

                It should.
                An e-mail address:
                Blockquoted:
                Auto-links should not occur here: <http://example.com/>
                or here: <http://example.com/>
                Images
                From “Voyage dans la Lune” by Georges Melies (1902):
                $ID/Embedded
                lalune
                Here is a movie $ID/Embedded icon.
                Footnotes
                Here is a footnote reference, Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document. and another. Here’s the long note. This one contains multiple blocks.
                Subsequent blocks are indented to show that they belong to the footnote (as with list items).
                { <code> }
                If you want, you can indent every line, but you can also be lazy and just indent the first line of each block.
                This should not be a footnote reference, because it contains a space.[^my note] Here is an inline note. This is easier to type. Inline notes may contain and ] verbatim characters, as well as [bracketed text].

                Notes can go in quotes. In quote.
                And in list items. In list.
                This paragraph should not be part of the note, as it is not indented.
                Black HyperlinkURLDestination/http%3a//google.com Black HyperlinkURLDestination/http%3a//example.com/ Black HyperlinkURLDestination/mailto%3anobody@nowhere.net Black HyperlinkURLDestination/http%3a//example.com/ Black HyperlinkURLDestination/http%3a//example.com/?foo=1&bar=2 Black HyperlinkURLDestination//script?foo=1&bar=2 Black HyperlinkURLDestination//script?foo=1&bar=2 Black HyperlinkURLDestination/http%3a//att.com/ Black HyperlinkURLDestination/http%3a//example.com/?foo=1&bar=2 Black HyperlinkURLDestination//url/ Black HyperlinkURLDestination//url/ Black HyperlinkURLDestination//url Black HyperlinkURLDestination//url Black HyperlinkURLDestination//url Black HyperlinkURLDestination//url/ Black HyperlinkURLDestination//url/ Black HyperlinkURLDestination//url/ Black HyperlinkURLDestination/ Black HyperlinkURLDestination/mailto%3anobody@nowhere.net Black HyperlinkURLDestination//url/with_underscore Black HyperlinkURLDestination//url/ Black HyperlinkURLDestination//url/ Black HyperlinkURLDestination//url/ Black HyperlinkURLDestination//url/ Black HyperlinkURLDestination//url/ Black HyperlinkURLDestination//url/ Black HyperlinkURLDestination/http%3a//example.com/?foo=1&bar=2 Black HyperlinkURLDestination//url Black HyperlinkURLDestination//url
                pandoc-3.1.3/test/writer.jats_archiving0000644000000000000000000006465107346545000016377 0ustar0000000000000000
                Pandoc Test Suite John MacFarlane Anonymous 17 7 2006

                This is a set of tests for pandoc. Most of them are adapted from John Gruber’s markdown test suite.

                Headers Level 2 with an <ext-link ext-link-type="uri" xlink:href="/url">embedded link</ext-link> Level 3 with <italic>emphasis</italic> Level 4 Level 5 Level 1 Level 2 with <italic>emphasis</italic> Level 3

                with no blank line

                Level 2

                with no blank line

                Paragraphs

                Here’s a regular paragraph.

                In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item.

                Here’s one with a bullet. * criminey.

                There should be a hard line break here.

                Block Quotes

                E-mail style:

                This is a block quote. It is pretty short.

                Code in a block quote:

                sub status { print "working"; }

                A list:

                item one

                item two

                Nested block quotes:

                nested

                nested

                This should not be a block quote: 2 > 1.

                And a following paragraph.

                Code Blocks

                Code:

                ---- (should be four hyphens) sub status { print "working"; } this code block is indented by one tab

                And:

                this code block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{
                Lists Unordered

                Asterisks tight:

                asterisk 1

                asterisk 2

                asterisk 3

                Asterisks loose:

                asterisk 1

                asterisk 2

                asterisk 3

                Pluses tight:

                Plus 1

                Plus 2

                Plus 3

                Pluses loose:

                Plus 1

                Plus 2

                Plus 3

                Minuses tight:

                Minus 1

                Minus 2

                Minus 3

                Minuses loose:

                Minus 1

                Minus 2

                Minus 3

                Ordered

                Tight:

                First

                Second

                Third

                and:

                One

                Two

                Three

                Loose using tabs:

                First

                Second

                Third

                and using spaces:

                One

                Two

                Three

                Multiple paragraphs:

                Item 1, graf one.

                Item 1. graf two. The quick brown fox jumped over the lazy dog’s back.

                Item 2.

                Item 3.

                Nested

                Tab

                Tab

                Tab

                Here’s another:

                First

                Second:

                Fee

                Fie

                Foe

                Third

                Same thing but with paragraphs:

                First

                Second:

                Fee

                Fie

                Foe

                Third

                Tabs and spaces

                this is a list item indented with tabs

                this is a list item indented with spaces

                this is an example list item indented with tabs

                this is an example list item indented with spaces

                Fancy list markers

                begins with 2

                and now 3

                with a continuation

                sublist with roman numerals, starting with 4

                more items

                a subsublist

                a subsublist

                Nesting:

                Upper Alpha

                Upper Roman.

                Decimal start with 6

                Lower alpha with paren

                Autonumbering:

                Autonumber.

                More.

                Nested.

                Should not be a list item:

                M.A. 2007

                B. Williams

                Definition Lists

                Tight using spaces:

                apple

                red fruit

                orange

                orange fruit

                banana

                yellow fruit

                Tight using tabs:

                apple

                red fruit

                orange

                orange fruit

                banana

                yellow fruit

                Loose:

                apple

                red fruit

                orange

                orange fruit

                banana

                yellow fruit

                Multiple blocks with italics:

                apple

                red fruit

                contains seeds, crisp, pleasant to taste

                orange

                orange fruit

                { orange code block }

                orange block quote

                Multiple definitions, tight:

                apple

                red fruit

                computer

                orange

                orange fruit

                bank

                Multiple definitions, loose:

                apple

                red fruit

                computer

                orange

                orange fruit

                bank

                Blank line after term, indented marker, alternate markers:

                apple

                red fruit

                computer

                orange

                orange fruit

                sublist

                sublist

                HTML Blocks

                Simple block on one line:

                foo

                And nested without indentation:

                foo

                bar

                Interpreted markdown in a table:

                This is emphasized

                And this is strong

                Here’s a simple block:

                foo

                This should be a code block, though:

                <div> foo </div>

                As should this:

                <div>foo</div>

                Now, nested:

                foo

                This should just be an HTML comment:

                Multiline:

                Code block:

                <!-- Comment -->

                Just plain comment, with trailing spaces on the line:

                Code:

                <hr />

                Hr’s:

                Inline Markup

                This is emphasized, and so is this.

                This is strong, and so is this.

                An emphasized link.

                This is strong and em.

                So is this word.

                This is strong and em.

                So is this word.

                This is code: >, $, \, \$, <html>.

                This is strikeout.

                Superscripts: abcd ahello ahello there.

                Subscripts: H2O, H23O, Hmany of themO.

                These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d.

                Smart quotes, ellipses, dashes

                “Hello,” said the spider. “‘Shelob’ is my name.”

                ‘A’, ‘B’, and ‘C’ are letters.

                ‘Oak,’ ‘elm,’ and ‘beech’ are names of trees. So is ‘pine.’

                ‘He said, “I want to go.”’ Were you alive in the 70’s?

                Here is some quoted ‘code’ and a “quoted link”.

                Some dashes: one—two — three—four — five.

                Dashes between numbers: 5–7, 255–66, 1987–1999.

                Ellipses…and…and….

                LaTeX

                2+2=4

                xy

                αω

                223

                p-Tree

                Here’s some display math: ddxf(x)=limh0f(x+h)f(x)h

                Here’s one that has a line break in it: α+ω×x2.

                These shouldn’t be math:

                To get the famous equation, write $e = mc^2$.

                $22,000 is a lot of money. So is $34,000. (It worked if “lot” is emphasized.)

                Shoes ($20) and socks ($5).

                Escaped $: $73 this should be emphasized 23$.

                Here’s a LaTeX table:

                Special Characters

                Here is some unicode:

                I hat: Î

                o umlaut: ö

                section: §

                set membership: ∈

                copyright: ©

                AT&T has an ampersand in their name.

                AT&T is another way to write it.

                This & that.

                4 < 5.

                6 > 5.

                Backslash: \

                Backtick: `

                Asterisk: *

                Underscore: _

                Left brace: {

                Right brace: }

                Left bracket: [

                Right bracket: ]

                Left paren: (

                Right paren: )

                Greater-than: >

                Hash: #

                Period: .

                Bang: !

                Plus: +

                Minus: -

                Links Explicit

                Just a URL.

                URL and title.

                URL and title.

                URL and title.

                URL and title

                URL and title

                with_underscore

                Email link

                Empty.

                Reference

                Foo bar.

                With embedded [brackets].

                b by itself should be a link.

                Indented once.

                Indented twice.

                Indented thrice.

                This should [not][] be a link.

                [not]: /url

                Foo bar.

                Foo biz.

                With ampersands

                Here’s a link with an ampersand in the URL.

                Here’s a link with an amersand in the link text: AT&T.

                Here’s an inline link.

                Here’s an inline link in pointy braces.

                Autolinks

                With an ampersand: http://example.com/?foo=1&bar=2

                In a list?

                http://example.com/

                It should.

                An e-mail address: nobody@nowhere.net

                Blockquoted: http://example.com/

                Auto-links should not occur here: <http://example.com/>

                or here: <http://example.com/>
                Images

                From “Voyage dans la Lune” by Georges Melies (1902):

                lalune

                Here is a movie movie icon.

                Footnotes

                Here is a footnote reference,1 and another.2 This should not be a footnote reference, because it contains a space.[^my note] Here is an inline note.3

                Notes can go in quotes.4

                And in list items.5

                This paragraph should not be part of the note, as it is not indented.

                Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document.

                Here’s the long note. This one contains multiple blocks.

                Subsequent blocks are indented to show that they belong to the footnote (as with list items).

                { <code> }

                If you want, you can indent every line, but you can also be lazy and just indent the first line of each block.

                This is easier to type. Inline notes may contain links and ] verbatim characters, as well as [bracketed text].

                In quote.

                In list.

                pandoc-3.1.3/test/writer.jats_articleauthoring0000644000000000000000000006246707346545000017774 0ustar0000000000000000
                Pandoc Test Suite John MacFarlane Anonymous

                This is a set of tests for pandoc. Most of them are adapted from John Gruber’s markdown test suite.

                Headers Level 2 with an <ext-link ext-link-type="uri" xlink:href="/url">embedded link</ext-link> Level 3 with <italic>emphasis</italic> Level 4 Level 5 Level 1 Level 2 with <italic>emphasis</italic> Level 3

                with no blank line

                Level 2

                with no blank line

                Paragraphs

                Here’s a regular paragraph.

                In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item.

                Here’s one with a bullet. * criminey.

                There should be a hard line break here.

                Block Quotes

                E-mail style:

                This is a block quote. It is pretty short.

                Code in a block quote:

                sub status { print "working"; }

                A list:

                item one

                item two

                Nested block quotes:

                nested

                nested

                This should not be a block quote: 2 > 1.

                And a following paragraph.

                Code Blocks

                Code:

                ---- (should be four hyphens) sub status { print "working"; } this code block is indented by one tab

                And:

                this code block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{
                Lists Unordered

                Asterisks tight:

                asterisk 1

                asterisk 2

                asterisk 3

                Asterisks loose:

                asterisk 1

                asterisk 2

                asterisk 3

                Pluses tight:

                Plus 1

                Plus 2

                Plus 3

                Pluses loose:

                Plus 1

                Plus 2

                Plus 3

                Minuses tight:

                Minus 1

                Minus 2

                Minus 3

                Minuses loose:

                Minus 1

                Minus 2

                Minus 3

                Ordered

                Tight:

                First

                Second

                Third

                and:

                One

                Two

                Three

                Loose using tabs:

                First

                Second

                Third

                and using spaces:

                One

                Two

                Three

                Multiple paragraphs:

                Item 1, graf one.

                Item 1. graf two. The quick brown fox jumped over the lazy dog’s back.

                Item 2.

                Item 3.

                Nested

                Tab

                Tab

                Tab

                Here’s another:

                First

                Second:

                Fee

                Fie

                Foe

                Third

                Same thing but with paragraphs:

                First

                Second:

                Fee

                Fie

                Foe

                Third

                Tabs and spaces

                this is a list item indented with tabs

                this is a list item indented with spaces

                this is an example list item indented with tabs

                this is an example list item indented with spaces

                Fancy list markers

                begins with 2

                and now 3

                with a continuation

                sublist with roman numerals, starting with 4

                more items

                a subsublist

                a subsublist

                Nesting:

                Upper Alpha

                Upper Roman.

                Decimal start with 6

                Lower alpha with paren

                Autonumbering:

                Autonumber.

                More.

                Nested.

                Should not be a list item:

                M.A. 2007

                B. Williams

                Definition Lists

                Tight using spaces:

                apple

                red fruit

                orange

                orange fruit

                banana

                yellow fruit

                Tight using tabs:

                apple

                red fruit

                orange

                orange fruit

                banana

                yellow fruit

                Loose:

                apple

                red fruit

                orange

                orange fruit

                banana

                yellow fruit

                Multiple blocks with italics:

                apple

                red fruit

                contains seeds, crisp, pleasant to taste

                orange

                orange fruit

                { orange code block }

                orange block quote

                Multiple definitions, tight:

                apple

                red fruit

                computer

                orange

                orange fruit

                bank

                Multiple definitions, loose:

                apple

                red fruit

                computer

                orange

                orange fruit

                bank

                Blank line after term, indented marker, alternate markers:

                apple

                red fruit

                computer

                orange

                orange fruit

                sublist

                sublist

                HTML Blocks

                Simple block on one line:

                foo

                And nested without indentation:

                foo

                bar

                Interpreted markdown in a table:

                This is emphasized

                And this is strong

                Here’s a simple block:

                foo

                This should be a code block, though:

                <div> foo </div>

                As should this:

                <div>foo</div>

                Now, nested:

                foo

                This should just be an HTML comment:

                Multiline:

                Code block:

                <!-- Comment -->

                Just plain comment, with trailing spaces on the line:

                Code:

                <hr />

                Hr’s:

                Inline Markup

                This is emphasized, and so is this.

                This is strong, and so is this.

                An emphasized link.

                This is strong and em.

                So is this word.

                This is strong and em.

                So is this word.

                This is code: >, $, \, \$, <html>.

                This is strikeout.

                Superscripts: abcd ahello ahello there.

                Subscripts: H2O, H23O, Hmany of themO.

                These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d.

                Smart quotes, ellipses, dashes

                “Hello,” said the spider. “‘Shelob’ is my name.”

                ‘A’, ‘B’, and ‘C’ are letters.

                ‘Oak,’ ‘elm,’ and ‘beech’ are names of trees. So is ‘pine.’

                ‘He said, “I want to go.”’ Were you alive in the 70’s?

                Here is some quoted ‘code’ and a “quoted link”.

                Some dashes: one—two — three—four — five.

                Dashes between numbers: 5–7, 255–66, 1987–1999.

                Ellipses…and…and….

                LaTeX

                2+2=4

                xy

                αω

                223

                p-Tree

                Here’s some display math: ddxf(x)=limh0f(x+h)f(x)h

                Here’s one that has a line break in it: α+ω×x2.

                These shouldn’t be math:

                To get the famous equation, write $e = mc^2$.

                $22,000 is a lot of money. So is $34,000. (It worked if “lot” is emphasized.)

                Shoes ($20) and socks ($5).

                Escaped $: $73 this should be emphasized 23$.

                Here’s a LaTeX table:

                Special Characters

                Here is some unicode:

                I hat: Î

                o umlaut: ö

                section: §

                set membership: ∈

                copyright: ©

                AT&T has an ampersand in their name.

                AT&T is another way to write it.

                This & that.

                4 < 5.

                6 > 5.

                Backslash: \

                Backtick: `

                Asterisk: *

                Underscore: _

                Left brace: {

                Right brace: }

                Left bracket: [

                Right bracket: ]

                Left paren: (

                Right paren: )

                Greater-than: >

                Hash: #

                Period: .

                Bang: !

                Plus: +

                Minus: -

                Links Explicit

                Just a URL.

                URL and title.

                URL and title.

                URL and title.

                URL and title

                URL and title

                with_underscore

                Email link

                Empty.

                Reference

                Foo bar.

                With embedded [brackets].

                b by itself should be a link.

                Indented once.

                Indented twice.

                Indented thrice.

                This should [not][] be a link.

                [not]: /url

                Foo bar.

                Foo biz.

                With ampersands

                Here’s a link with an ampersand in the URL.

                Here’s a link with an amersand in the link text: AT&T.

                Here’s an inline link.

                Here’s an inline link in pointy braces.

                Autolinks

                With an ampersand: http://example.com/?foo=1&bar=2

                In a list?

                http://example.com/

                It should.

                An e-mail address: nobody@nowhere.net

                Blockquoted: http://example.com/

                Auto-links should not occur here: <http://example.com/>

                or here: <http://example.com/>
                Images

                From “Voyage dans la Lune” by Georges Melies (1902):

                lalune

                Here is a movie movie icon.

                Footnotes

                Here is a footnote reference,

                Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document.

                and another.

                Here’s the long note. This one contains multiple blocks.

                Subsequent blocks are indented to show that they belong to the footnote (as with list items).

                { <code> }

                If you want, you can indent every line, but you can also be lazy and just indent the first line of each block.

                This should not be a footnote reference, because it contains a space.[^my note] Here is an inline note.

                This is easier to type. Inline notes may contain links and ] verbatim characters, as well as [bracketed text].

                Notes can go in quotes.

                In quote.

                And in list items.

                In list.

                This paragraph should not be part of the note, as it is not indented.

                pandoc-3.1.3/test/writer.jats_publishing0000644000000000000000000006462607346545000016573 0ustar0000000000000000
                Pandoc Test Suite John MacFarlane Anonymous 17 7 2006

                This is a set of tests for pandoc. Most of them are adapted from John Gruber’s markdown test suite.

                Headers Level 2 with an <ext-link ext-link-type="uri" xlink:href="/url">embedded link</ext-link> Level 3 with <italic>emphasis</italic> Level 4 Level 5 Level 1 Level 2 with <italic>emphasis</italic> Level 3

                with no blank line

                Level 2

                with no blank line

                Paragraphs

                Here’s a regular paragraph.

                In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item.

                Here’s one with a bullet. * criminey.

                There should be a hard line break here.

                Block Quotes

                E-mail style:

                This is a block quote. It is pretty short.

                Code in a block quote:

                sub status { print "working"; }

                A list:

                item one

                item two

                Nested block quotes:

                nested

                nested

                This should not be a block quote: 2 > 1.

                And a following paragraph.

                Code Blocks

                Code:

                ---- (should be four hyphens) sub status { print "working"; } this code block is indented by one tab

                And:

                this code block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{
                Lists Unordered

                Asterisks tight:

                asterisk 1

                asterisk 2

                asterisk 3

                Asterisks loose:

                asterisk 1

                asterisk 2

                asterisk 3

                Pluses tight:

                Plus 1

                Plus 2

                Plus 3

                Pluses loose:

                Plus 1

                Plus 2

                Plus 3

                Minuses tight:

                Minus 1

                Minus 2

                Minus 3

                Minuses loose:

                Minus 1

                Minus 2

                Minus 3

                Ordered

                Tight:

                First

                Second

                Third

                and:

                One

                Two

                Three

                Loose using tabs:

                First

                Second

                Third

                and using spaces:

                One

                Two

                Three

                Multiple paragraphs:

                Item 1, graf one.

                Item 1. graf two. The quick brown fox jumped over the lazy dog’s back.

                Item 2.

                Item 3.

                Nested

                Tab

                Tab

                Tab

                Here’s another:

                First

                Second:

                Fee

                Fie

                Foe

                Third

                Same thing but with paragraphs:

                First

                Second:

                Fee

                Fie

                Foe

                Third

                Tabs and spaces

                this is a list item indented with tabs

                this is a list item indented with spaces

                this is an example list item indented with tabs

                this is an example list item indented with spaces

                Fancy list markers

                begins with 2

                and now 3

                with a continuation

                sublist with roman numerals, starting with 4

                more items

                a subsublist

                a subsublist

                Nesting:

                Upper Alpha

                Upper Roman.

                Decimal start with 6

                Lower alpha with paren

                Autonumbering:

                Autonumber.

                More.

                Nested.

                Should not be a list item:

                M.A. 2007

                B. Williams

                Definition Lists

                Tight using spaces:

                apple

                red fruit

                orange

                orange fruit

                banana

                yellow fruit

                Tight using tabs:

                apple

                red fruit

                orange

                orange fruit

                banana

                yellow fruit

                Loose:

                apple

                red fruit

                orange

                orange fruit

                banana

                yellow fruit

                Multiple blocks with italics:

                apple

                red fruit

                contains seeds, crisp, pleasant to taste

                orange

                orange fruit

                { orange code block }

                orange block quote

                Multiple definitions, tight:

                apple

                red fruit

                computer

                orange

                orange fruit

                bank

                Multiple definitions, loose:

                apple

                red fruit

                computer

                orange

                orange fruit

                bank

                Blank line after term, indented marker, alternate markers:

                apple

                red fruit

                computer

                orange

                orange fruit

                sublist

                sublist

                HTML Blocks

                Simple block on one line:

                foo

                And nested without indentation:

                foo

                bar

                Interpreted markdown in a table:

                This is emphasized

                And this is strong

                Here’s a simple block:

                foo

                This should be a code block, though:

                <div> foo </div>

                As should this:

                <div>foo</div>

                Now, nested:

                foo

                This should just be an HTML comment:

                Multiline:

                Code block:

                <!-- Comment -->

                Just plain comment, with trailing spaces on the line:

                Code:

                <hr />

                Hr’s:

                Inline Markup

                This is emphasized, and so is this.

                This is strong, and so is this.

                An emphasized link.

                This is strong and em.

                So is this word.

                This is strong and em.

                So is this word.

                This is code: >, $, \, \$, <html>.

                This is strikeout.

                Superscripts: abcd ahello ahello there.

                Subscripts: H2O, H23O, Hmany of themO.

                These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d.

                Smart quotes, ellipses, dashes

                “Hello,” said the spider. “‘Shelob’ is my name.”

                ‘A’, ‘B’, and ‘C’ are letters.

                ‘Oak,’ ‘elm,’ and ‘beech’ are names of trees. So is ‘pine.’

                ‘He said, “I want to go.”’ Were you alive in the 70’s?

                Here is some quoted ‘code’ and a “quoted link”.

                Some dashes: one—two — three—four — five.

                Dashes between numbers: 5–7, 255–66, 1987–1999.

                Ellipses…and…and….

                LaTeX

                2+2=4

                xy

                αω

                223

                p-Tree

                Here’s some display math: ddxf(x)=limh0f(x+h)f(x)h

                Here’s one that has a line break in it: α+ω×x2.

                These shouldn’t be math:

                To get the famous equation, write $e = mc^2$.

                $22,000 is a lot of money. So is $34,000. (It worked if “lot” is emphasized.)

                Shoes ($20) and socks ($5).

                Escaped $: $73 this should be emphasized 23$.

                Here’s a LaTeX table:

                Special Characters

                Here is some unicode:

                I hat: Î

                o umlaut: ö

                section: §

                set membership: ∈

                copyright: ©

                AT&T has an ampersand in their name.

                AT&T is another way to write it.

                This & that.

                4 < 5.

                6 > 5.

                Backslash: \

                Backtick: `

                Asterisk: *

                Underscore: _

                Left brace: {

                Right brace: }

                Left bracket: [

                Right bracket: ]

                Left paren: (

                Right paren: )

                Greater-than: >

                Hash: #

                Period: .

                Bang: !

                Plus: +

                Minus: -

                Links Explicit

                Just a URL.

                URL and title.

                URL and title.

                URL and title.

                URL and title

                URL and title

                with_underscore

                Email link

                Empty.

                Reference

                Foo bar.

                With embedded [brackets].

                b by itself should be a link.

                Indented once.

                Indented twice.

                Indented thrice.

                This should [not][] be a link.

                [not]: /url

                Foo bar.

                Foo biz.

                With ampersands

                Here’s a link with an ampersand in the URL.

                Here’s a link with an amersand in the link text: AT&T.

                Here’s an inline link.

                Here’s an inline link in pointy braces.

                Autolinks

                With an ampersand: http://example.com/?foo=1&bar=2

                In a list?

                http://example.com/

                It should.

                An e-mail address: nobody@nowhere.net

                Blockquoted: http://example.com/

                Auto-links should not occur here: <http://example.com/>

                or here: <http://example.com/>
                Images

                From “Voyage dans la Lune” by Georges Melies (1902):

                lalune

                Here is a movie movie icon.

                Footnotes

                Here is a footnote reference,1 and another.2 This should not be a footnote reference, because it contains a space.[^my note] Here is an inline note.3

                Notes can go in quotes.4

                And in list items.5

                This paragraph should not be part of the note, as it is not indented.

                Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document.

                Here’s the long note. This one contains multiple blocks.

                Subsequent blocks are indented to show that they belong to the footnote (as with list items).

                { <code> }

                If you want, you can indent every line, but you can also be lazy and just indent the first line of each block.

                This is easier to type. Inline notes may contain links and ] verbatim characters, as well as [bracketed text].

                In quote.

                In list.

                pandoc-3.1.3/test/writer.jira0000644000000000000000000002117607346545000014324 0ustar0000000000000000This is a set of tests for pandoc. Most of them are adapted from John Gruber’s markdown test suite. ---- h1. {anchor:headers}Headers h2. {anchor:level-2-with-an-embedded-link}Level 2 with an [embedded link|/url] h3. {anchor:level-3-with-emphasis}Level 3 with _emphasis_ h4. {anchor:level-4}Level 4 h5. {anchor:level-5}Level 5 h1. {anchor:level-1}Level 1 h2. {anchor:level-2-with-emphasis}Level 2 with _emphasis_ h3. {anchor:level-3}Level 3 with no blank line h2. {anchor:level-2}Level 2 with no blank line ---- h1. {anchor:paragraphs}Paragraphs Here’s a regular paragraph. In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item. Here’s one with a bullet. * criminey. There should be a hard line break here. ---- h1. {anchor:block-quotes}Block Quotes E-mail style: bq. This is a block quote. It is pretty short. {quote} Code in a block quote: {noformat} sub status { print "working"; }{noformat} A list: # item one # item two Nested block quotes: bq. nested bq. nested{quote} This should not be a block quote: 2 > 1. And a following paragraph. ---- h1. {anchor:code-blocks}Code Blocks Code: {noformat} ---- (should be four hyphens) sub status { print "working"; } this code block is indented by one tab{noformat} And: {noformat} this code block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{{noformat} ---- h1. {anchor:lists}Lists h2. {anchor:unordered}Unordered Asterisks tight: * asterisk 1 * asterisk 2 * asterisk 3 Asterisks loose: * asterisk 1 * asterisk 2 * asterisk 3 Pluses tight: * Plus 1 * Plus 2 * Plus 3 Pluses loose: * Plus 1 * Plus 2 * Plus 3 Minuses tight: * Minus 1 * Minus 2 * Minus 3 Minuses loose: * Minus 1 * Minus 2 * Minus 3 h2. {anchor:ordered}Ordered Tight: # First # Second # Third and: # One # Two # Three Loose using tabs: # First # Second # Third and using spaces: # One # Two # Three Multiple paragraphs: # Item 1, graf one. Item 1. graf two. The quick brown fox jumped over the lazy dog’s back. # Item 2. # Item 3. h2. {anchor:nested}Nested * Tab ** Tab *** Tab Here’s another: # First # Second: #* Fee #* Fie #* Foe # Third Same thing but with paragraphs: # First # Second: #* Fee #* Fie #* Foe # Third h2. {anchor:tabs-and-spaces}Tabs and spaces * this is a list item indented with tabs * this is a list item indented with spaces ** this is an example list item indented with tabs ** this is an example list item indented with spaces h2. {anchor:fancy-list-markers}Fancy list markers # begins with 2 # and now 3 with a continuation ## sublist with roman numerals, starting with 4 ## more items ### a subsublist ### a subsublist Nesting: # Upper Alpha ## Upper Roman. ### Decimal start with 6 #### Lower alpha with paren Autonumbering: # Autonumber. # More. ## Nested. Should not be a list item: M.A. 2007 B. Williams ---- h1. {anchor:definition-lists}Definition Lists Tight using spaces: * *apple* red fruit * *orange* orange fruit * *banana* yellow fruit Tight using tabs: * *apple* red fruit * *orange* orange fruit * *banana* yellow fruit Loose: * *apple* red fruit * *orange* orange fruit * *banana* yellow fruit Multiple blocks with italics: * *_apple_* red fruit contains seeds, crisp, pleasant to taste * *_orange_* orange fruit {noformat} { orange code block }{noformat} bq. orange block quote Multiple definitions, tight: * *apple* red fruit computer * *orange* orange fruit bank Multiple definitions, loose: * *apple* red fruit computer * *orange* orange fruit bank Blank line after term, indented marker, alternate markers: * *apple* red fruit computer * *orange* orange fruit *# sublist *# sublist h1. {anchor:html-blocks}HTML Blocks Simple block on one line: foo And nested without indentation: foo bar Interpreted markdown in a table: This is _emphasized_ And this is *strong* Here’s a simple block: foo This should be a code block, though: {noformat}
                foo
                {noformat} As should this: {noformat}
                foo
                {noformat} Now, nested: foo This should just be an HTML comment: Multiline: Code block: {noformat} {noformat} Just plain comment, with trailing spaces on the line: Code: {noformat}
                {noformat} Hr’s: ---- h1. {anchor:inline-markup}Inline Markup This is _emphasized_, and so _is this_. This is *strong*, and so *is this*. An _[emphasized link|/url]_. *_This is strong and em._* So is *_this_* word. *_This is strong and em._* So is *_this_* word. This is code: {{>}}, {{$}}, {{\}}, {{\$}}, {{}}. -This is _strikeout_.- Superscripts: a{^}bc{^}d a{^}_hello_{^} a{^}hello there{^}. Subscripts: H{~}2{~}O, H{~}23{~}O, H{~}many of them{~}O. These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d. ---- h1. {anchor:smart-quotes-ellipses-dashes}Smart quotes, ellipses, dashes "Hello," said the spider. "'Shelob' is my name." 'A', 'B', and 'C' are letters. 'Oak,' 'elm,' and 'beech' are names of trees. So is 'pine.' 'He said, "I want to go."' Were you alive in the 70’s? Here is some quoted '{{code}}' and a "[quoted link|http://example.com/?foo=1&bar=2]". Some dashes: one—two — three—four — five. Dashes between numbers: 5–7, 255–66, 1987–1999. Ellipses…and…and…. ---- h1. {anchor:latex}LaTeX * * 2 + 2 = 4 * _x_ ∈ {_}y{_} * _α_ ∧ {_}ω{_} * 223 * _p_\-Tree * Here’s some display math: $$\frac\{d\}\{dx\}f\(x)=\lim\_\{h\to 0\}\frac\{f(x+h)-f\(x)\}\{h\}$$ * Here’s one that has a line break in it: _α_ + {_}ω{_} × {_}x{_}^2^. These shouldn’t be math: * To get the famous equation, write {{$e = mc^2$}}. * $22,000 is a _lot_ of money. So is $34,000. \(It worked if "lot" is emphasized.) * Shoes \($20) and socks \($5). * Escaped {{$}}: $73 _this should be emphasized_ 23$. Here’s a LaTeX table: ---- h1. {anchor:special-characters}Special Characters Here is some unicode: * I hat: Î * o umlaut: ö * section: § * set membership: ∈ * copyright: © AT&T has an ampersand in their name. AT&T is another way to write it. This & that. 4 < 5. 6 > 5. Backslash: \ Backtick: ` Asterisk: \* Underscore: \_ Left brace: \{ Right brace: \} Left bracket: \[ Right bracket: \] Left paren: \( Right paren: ) Greater-than: > Hash: # Period: . Bang: \! Plus: \+ Minus: \- ---- h1. {anchor:links}Links h2. {anchor:explicit}Explicit Just a [URL|/url/]. [URL and title|/url/]. [URL and title|/url/]. [URL and title|/url/]. [URL and title|/url/] [URL and title|/url/] [with_underscore|/url/with_underscore] [Email link|mailto:nobody@nowhere.net] [Empty|]. h2. {anchor:reference}Reference Foo [bar|/url/]. With [embedded \[brackets\]|/url/]. [b|/url/] by itself should be a link. Indented [once|/url]. Indented [twice|/url]. Indented [thrice|/url]. This should \[not\]\[\] be a link. {noformat} [not]: /url{noformat} Foo [bar|/url/]. Foo [biz|/url/]. h2. {anchor:with-ampersands}With ampersands Here’s a [link with an ampersand in the URL|http://example.com/?foo=1&bar=2]. Here’s a link with an amersand in the link text: [AT&T|http://att.com/]. Here’s an [inline link|/script?foo=1&bar=2]. Here’s an [inline link in pointy braces|/script?foo=1&bar=2]. h2. {anchor:autolinks}Autolinks With an ampersand: [http://example.com/?foo=1&bar=2] * In a list? * [http://example.com/] * It should. An e-mail address: [mailto:nobody@nowhere.net] bq. Blockquoted: [http://example.com/] Auto-links should not occur here: {{}} {noformat} or here: {noformat} ---- h1. {anchor:images}Images From "Voyage dans la Lune" by Georges Melies \(1902): !lalune.jpg|title=Voyage dans la Lune, alt=lalune! Here is a movie !movie.jpg|alt=movie! icon. ---- h1. {anchor:footnotes}Footnotes Here is a footnote reference,[1] and another.[2] This should _not_ be a footnote reference, because it contains a space.\[\^my note\] Here is an inline note.[3] bq. Notes can go in quotes.[4] # And in list items.[5] This paragraph should not be part of the note, as it is not indented. \[1] Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document. \[2] Here’s the long note. This one contains multiple blocks. Subsequent blocks are indented to show that they belong to the footnote \(as with list items). {noformat} { }{noformat} If you want, you can indent every line, but you can also be lazy and just indent the first line of each block. \[3] This is _easier_ to type. Inline notes may contain [links|http://google.com] and {{\]}} verbatim characters, as well as \[bracketed text]. \[4] In quote. \[5] In list. pandoc-3.1.3/test/writer.latex0000644000000000000000000004243207346545000014512 0ustar0000000000000000% Options for packages loaded elsewhere \PassOptionsToPackage{unicode}{hyperref} \PassOptionsToPackage{hyphens}{url} % \documentclass[ ]{article} \usepackage{amsmath,amssymb} \usepackage{iftex} \ifPDFTeX \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{textcomp} % provide euro and other symbols \else % if luatex or xetex \usepackage{unicode-math} % this also loads fontspec \defaultfontfeatures{Scale=MatchLowercase} \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1} \fi \usepackage{lmodern} \ifPDFTeX\else % xetex/luatex font selection \fi % Use upquote if available, for straight quotes in verbatim environments \IfFileExists{upquote.sty}{\usepackage{upquote}}{} \IfFileExists{microtype.sty}{% use microtype if available \usepackage[]{microtype} \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts }{} \makeatletter \@ifundefined{KOMAClassName}{% if non-KOMA class \IfFileExists{parskip.sty}{% \usepackage{parskip} }{% else \setlength{\parindent}{0pt} \setlength{\parskip}{6pt plus 2pt minus 1pt}} }{% if KOMA class \KOMAoptions{parskip=half}} \makeatother \usepackage{fancyvrb} \usepackage{xcolor} \usepackage{graphicx} \makeatletter \def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi} \def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi} \makeatother % Scale images if necessary, so that they will not overflow the page % margins by default, and it is still possible to overwrite the defaults % using explicit options in \includegraphics[width, height, ...]{} \setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio} % Set default figure placement to htbp \makeatletter \def\fps@figure{htbp} \makeatother \ifLuaTeX \usepackage{luacolor} \usepackage[soul]{lua-ul} \else \usepackage{soul} \fi \setlength{\emergencystretch}{3em} % prevent overfull lines \providecommand{\tightlist}{% \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} \setcounter{secnumdepth}{-\maxdimen} % remove section numbering \ifLuaTeX \usepackage{selnolig} % disable illegal ligatures \fi \IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}} \IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available \urlstyle{same} \VerbatimFootnotes % allow verbatim text in footnotes \hypersetup{ pdftitle={Pandoc Test Suite}, pdfauthor={John MacFarlane; Anonymous}, hidelinks, pdfcreator={LaTeX via pandoc}} \title{Pandoc Test Suite} \author{John MacFarlane \and Anonymous} \date{July 17, 2006} \begin{document} \maketitle This is a set of tests for pandoc. Most of them are adapted from John Gruber's markdown test suite. \begin{center}\rule{0.5\linewidth}{0.5pt}\end{center} \hypertarget{headers}{% \section{Headers}\label{headers}} \hypertarget{level-2-with-an-embedded-link}{% \subsection{\texorpdfstring{Level 2 with an \href{/url}{embedded link}}{Level 2 with an embedded link}}\label{level-2-with-an-embedded-link}} \hypertarget{level-3-with-emphasis}{% \subsubsection{\texorpdfstring{Level 3 with \emph{emphasis}}{Level 3 with emphasis}}\label{level-3-with-emphasis}} \hypertarget{level-4}{% \paragraph{Level 4}\label{level-4}} \hypertarget{level-5}{% \subparagraph{Level 5}\label{level-5}} \hypertarget{level-1}{% \section{Level 1}\label{level-1}} \hypertarget{level-2-with-emphasis}{% \subsection{\texorpdfstring{Level 2 with \emph{emphasis}}{Level 2 with emphasis}}\label{level-2-with-emphasis}} \hypertarget{level-3}{% \subsubsection{Level 3}\label{level-3}} with no blank line \hypertarget{level-2}{% \subsection{Level 2}\label{level-2}} with no blank line \begin{center}\rule{0.5\linewidth}{0.5pt}\end{center} \hypertarget{paragraphs}{% \section{Paragraphs}\label{paragraphs}} Here's a regular paragraph. In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item. Here's one with a bullet. * criminey. There should be a hard line break\\ here. \begin{center}\rule{0.5\linewidth}{0.5pt}\end{center} \hypertarget{block-quotes}{% \section{Block Quotes}\label{block-quotes}} E-mail style: \begin{quote} This is a block quote. It is pretty short. \end{quote} \begin{quote} Code in a block quote: \begin{verbatim} sub status { print "working"; } \end{verbatim} A list: \begin{enumerate} \def\labelenumi{\arabic{enumi}.} \tightlist \item item one \item item two \end{enumerate} Nested block quotes: \begin{quote} nested \end{quote} \begin{quote} nested \end{quote} \end{quote} This should not be a block quote: 2 \textgreater{} 1. And a following paragraph. \begin{center}\rule{0.5\linewidth}{0.5pt}\end{center} \hypertarget{code-blocks}{% \section{Code Blocks}\label{code-blocks}} Code: \begin{verbatim} ---- (should be four hyphens) sub status { print "working"; } this code block is indented by one tab \end{verbatim} And: \begin{verbatim} this code block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{ \end{verbatim} \begin{center}\rule{0.5\linewidth}{0.5pt}\end{center} \hypertarget{lists}{% \section{Lists}\label{lists}} \hypertarget{unordered}{% \subsection{Unordered}\label{unordered}} Asterisks tight: \begin{itemize} \tightlist \item asterisk 1 \item asterisk 2 \item asterisk 3 \end{itemize} Asterisks loose: \begin{itemize} \item asterisk 1 \item asterisk 2 \item asterisk 3 \end{itemize} Pluses tight: \begin{itemize} \tightlist \item Plus 1 \item Plus 2 \item Plus 3 \end{itemize} Pluses loose: \begin{itemize} \item Plus 1 \item Plus 2 \item Plus 3 \end{itemize} Minuses tight: \begin{itemize} \tightlist \item Minus 1 \item Minus 2 \item Minus 3 \end{itemize} Minuses loose: \begin{itemize} \item Minus 1 \item Minus 2 \item Minus 3 \end{itemize} \hypertarget{ordered}{% \subsection{Ordered}\label{ordered}} Tight: \begin{enumerate} \def\labelenumi{\arabic{enumi}.} \tightlist \item First \item Second \item Third \end{enumerate} and: \begin{enumerate} \def\labelenumi{\arabic{enumi}.} \tightlist \item One \item Two \item Three \end{enumerate} Loose using tabs: \begin{enumerate} \def\labelenumi{\arabic{enumi}.} \item First \item Second \item Third \end{enumerate} and using spaces: \begin{enumerate} \def\labelenumi{\arabic{enumi}.} \item One \item Two \item Three \end{enumerate} Multiple paragraphs: \begin{enumerate} \def\labelenumi{\arabic{enumi}.} \item Item 1, graf one. Item 1. graf two. The quick brown fox jumped over the lazy dog's back. \item Item 2. \item Item 3. \end{enumerate} \hypertarget{nested}{% \subsection{Nested}\label{nested}} \begin{itemize} \tightlist \item Tab \begin{itemize} \tightlist \item Tab \begin{itemize} \tightlist \item Tab \end{itemize} \end{itemize} \end{itemize} Here's another: \begin{enumerate} \def\labelenumi{\arabic{enumi}.} \tightlist \item First \item Second: \begin{itemize} \tightlist \item Fee \item Fie \item Foe \end{itemize} \item Third \end{enumerate} Same thing but with paragraphs: \begin{enumerate} \def\labelenumi{\arabic{enumi}.} \item First \item Second: \begin{itemize} \tightlist \item Fee \item Fie \item Foe \end{itemize} \item Third \end{enumerate} \hypertarget{tabs-and-spaces}{% \subsection{Tabs and spaces}\label{tabs-and-spaces}} \begin{itemize} \item this is a list item indented with tabs \item this is a list item indented with spaces \begin{itemize} \item this is an example list item indented with tabs \item this is an example list item indented with spaces \end{itemize} \end{itemize} \hypertarget{fancy-list-markers}{% \subsection{Fancy list markers}\label{fancy-list-markers}} \begin{enumerate} \def\labelenumi{(\arabic{enumi})} \setcounter{enumi}{1} \item begins with 2 \item and now 3 with a continuation \begin{enumerate} \def\labelenumii{\roman{enumii}.} \setcounter{enumii}{3} \tightlist \item sublist with roman numerals, starting with 4 \item more items \begin{enumerate} \def\labelenumiii{(\Alph{enumiii})} \tightlist \item a subsublist \item a subsublist \end{enumerate} \end{enumerate} \end{enumerate} Nesting: \begin{enumerate} \def\labelenumi{\Alph{enumi}.} \tightlist \item Upper Alpha \begin{enumerate} \def\labelenumii{\Roman{enumii}.} \tightlist \item Upper Roman. \begin{enumerate} \def\labelenumiii{(\arabic{enumiii})} \setcounter{enumiii}{5} \tightlist \item Decimal start with 6 \begin{enumerate} \def\labelenumiv{\alph{enumiv})} \setcounter{enumiv}{2} \tightlist \item Lower alpha with paren \end{enumerate} \end{enumerate} \end{enumerate} \end{enumerate} Autonumbering: \begin{enumerate} \tightlist \item Autonumber. \item More. \begin{enumerate} \tightlist \item Nested. \end{enumerate} \end{enumerate} Should not be a list item: M.A.~2007 B. Williams \begin{center}\rule{0.5\linewidth}{0.5pt}\end{center} \hypertarget{definition-lists}{% \section{Definition Lists}\label{definition-lists}} Tight using spaces: \begin{description} \tightlist \item[apple] red fruit \item[orange] orange fruit \item[banana] yellow fruit \end{description} Tight using tabs: \begin{description} \tightlist \item[apple] red fruit \item[orange] orange fruit \item[banana] yellow fruit \end{description} Loose: \begin{description} \item[apple] red fruit \item[orange] orange fruit \item[banana] yellow fruit \end{description} Multiple blocks with italics: \begin{description} \item[\emph{apple}] red fruit contains seeds, crisp, pleasant to taste \item[\emph{orange}] orange fruit \begin{verbatim} { orange code block } \end{verbatim} \begin{quote} orange block quote \end{quote} \end{description} Multiple definitions, tight: \begin{description} \tightlist \item[apple] red fruit computer \item[orange] orange fruit bank \end{description} Multiple definitions, loose: \begin{description} \item[apple] red fruit computer \item[orange] orange fruit bank \end{description} Blank line after term, indented marker, alternate markers: \begin{description} \item[apple] red fruit computer \item[orange] orange fruit \begin{enumerate} \def\labelenumi{\arabic{enumi}.} \tightlist \item sublist \item sublist \end{enumerate} \end{description} \hypertarget{html-blocks}{% \section{HTML Blocks}\label{html-blocks}} Simple block on one line: foo And nested without indentation: foo bar Interpreted markdown in a table: This is \emph{emphasized} And this is \textbf{strong} Here's a simple block: foo This should be a code block, though: \begin{verbatim}
                foo
                \end{verbatim} As should this: \begin{verbatim}
                foo
                \end{verbatim} Now, nested: foo This should just be an HTML comment: Multiline: Code block: \begin{verbatim} \end{verbatim} Just plain comment, with trailing spaces on the line: Code: \begin{verbatim}
                \end{verbatim} Hr's: \begin{center}\rule{0.5\linewidth}{0.5pt}\end{center} \hypertarget{inline-markup}{% \section{Inline Markup}\label{inline-markup}} This is \emph{emphasized}, and so \emph{is this}. This is \textbf{strong}, and so \textbf{is this}. An \emph{\href{/url}{emphasized link}}. \textbf{\emph{This is strong and em.}} So is \textbf{\emph{this}} word. \textbf{\emph{This is strong and em.}} So is \textbf{\emph{this}} word. This is code: \texttt{\textgreater{}}, \texttt{\$}, \texttt{\textbackslash{}}, \texttt{\textbackslash{}\$}, \texttt{\textless{}html\textgreater{}}. \st{This is \emph{strikeout}.} Superscripts: a\textsuperscript{bc}d a\textsuperscript{\emph{hello}} a\textsuperscript{hello~there}. Subscripts: H\textsubscript{2}O, H\textsubscript{23}O, H\textsubscript{many~of~them}O. These should not be superscripts or subscripts, because of the unescaped spaces: a\^{}b c\^{}d, a\textasciitilde b c\textasciitilde d. \begin{center}\rule{0.5\linewidth}{0.5pt}\end{center} \hypertarget{smart-quotes-ellipses-dashes}{% \section{Smart quotes, ellipses, dashes}\label{smart-quotes-ellipses-dashes}} ``Hello,'' said the spider. ``\,`Shelob' is my name.'' `A', `B', and `C' are letters. `Oak,' `elm,' and `beech' are names of trees. So is `pine.' `He said, ``I want to go.''\,' Were you alive in the 70's? Here is some quoted `\texttt{code}' and a ``\href{http://example.com/?foo=1\&bar=2}{quoted link}''. Some dashes: one---two --- three---four --- five. Dashes between numbers: 5--7, 255--66, 1987--1999. Ellipses\ldots and\ldots and\ldots. \begin{center}\rule{0.5\linewidth}{0.5pt}\end{center} \hypertarget{latex}{% \section{LaTeX}\label{latex}} \begin{itemize} \tightlist \item \cite[22-23]{smith.1899} \item \(2+2=4\) \item \(x \in y\) \item \(\alpha \wedge \omega\) \item \(223\) \item \(p\)-Tree \item Here's some display math: \[\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}\] \item Here's one that has a line break in it: \(\alpha + \omega \times x^2\). \end{itemize} These shouldn't be math: \begin{itemize} \tightlist \item To get the famous equation, write \texttt{\$e\ =\ mc\^{}2\$}. \item \$22,000 is a \emph{lot} of money. So is \$34,000. (It worked if ``lot'' is emphasized.) \item Shoes (\$20) and socks (\$5). \item Escaped \texttt{\$}: \$73 \emph{this should be emphasized} 23\$. \end{itemize} Here's a LaTeX table: \begin{tabular}{|l|l|}\hline Animal & Number \\ \hline Dog & 2 \\ Cat & 1 \\ \hline \end{tabular} \begin{center}\rule{0.5\linewidth}{0.5pt}\end{center} \hypertarget{special-characters}{% \section{Special Characters}\label{special-characters}} Here is some unicode: \begin{itemize} \tightlist \item I hat: Î \item o umlaut: ö \item section: § \item set membership: ∈ \item copyright: © \end{itemize} AT\&T has an ampersand in their name. AT\&T is another way to write it. This \& that. 4 \textless{} 5. 6 \textgreater{} 5. Backslash: \textbackslash{} Backtick: ` Asterisk: * Underscore: \_ Left brace: \{ Right brace: \} Left bracket: {[} Right bracket: {]} Left paren: ( Right paren: ) Greater-than: \textgreater{} Hash: \# Period: . Bang: ! Plus: + Minus: - \begin{center}\rule{0.5\linewidth}{0.5pt}\end{center} \hypertarget{links}{% \section{Links}\label{links}} \hypertarget{explicit}{% \subsection{Explicit}\label{explicit}} Just a \href{/url/}{URL}. \href{/url/}{URL and title}. \href{/url/}{URL and title}. \href{/url/}{URL and title}. \href{/url/}{URL and title} \href{/url/}{URL and title} \href{/url/with_underscore}{with\_underscore} \href{mailto:nobody@nowhere.net}{Email link} \href{}{Empty}. \hypertarget{reference}{% \subsection{Reference}\label{reference}} Foo \href{/url/}{bar}. With \href{/url/}{embedded {[}brackets{]}}. \href{/url/}{b} by itself should be a link. Indented \href{/url}{once}. Indented \href{/url}{twice}. Indented \href{/url}{thrice}. This should {[}not{]}{[}{]} be a link. \begin{verbatim} [not]: /url \end{verbatim} Foo \href{/url/}{bar}. Foo \href{/url/}{biz}. \hypertarget{with-ampersands}{% \subsection{With ampersands}\label{with-ampersands}} Here's a \href{http://example.com/?foo=1\&bar=2}{link with an ampersand in the URL}. Here's a link with an amersand in the link text: \href{http://att.com/}{AT\&T}. Here's an \href{/script?foo=1\&bar=2}{inline link}. Here's an \href{/script?foo=1\&bar=2}{inline link in pointy braces}. \hypertarget{autolinks}{% \subsection{Autolinks}\label{autolinks}} With an ampersand: \url{http://example.com/?foo=1\&bar=2} \begin{itemize} \tightlist \item In a list? \item \url{http://example.com/} \item It should. \end{itemize} An e-mail address: \href{mailto:nobody@nowhere.net}{\nolinkurl{nobody@nowhere.net}} \begin{quote} Blockquoted: \url{http://example.com/} \end{quote} Auto-links should not occur here: \texttt{\textless{}http://example.com/\textgreater{}} \begin{verbatim} or here: \end{verbatim} \begin{center}\rule{0.5\linewidth}{0.5pt}\end{center} \hypertarget{images}{% \section{Images}\label{images}} From ``Voyage dans la Lune'' by Georges Melies (1902): \begin{figure} \centering \includegraphics{lalune.jpg} \caption{lalune} \end{figure} Here is a movie \includegraphics{movie.jpg} icon. \begin{center}\rule{0.5\linewidth}{0.5pt}\end{center} \hypertarget{footnotes}{% \section{Footnotes}\label{footnotes}} Here is a footnote reference,\footnote{Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document.} and another.\footnote{Here's the long note. This one contains multiple blocks. Subsequent blocks are indented to show that they belong to the footnote (as with list items). \begin{Verbatim} { } \end{Verbatim} If you want, you can indent every line, but you can also be lazy and just indent the first line of each block.} This should \emph{not} be a footnote reference, because it contains a space.{[}\^{}my note{]} Here is an inline note.\footnote{This is \emph{easier} to type. Inline notes may contain \href{http://google.com}{links} and \texttt{{]}} verbatim characters, as well as {[}bracketed text{]}.} \begin{quote} Notes can go in quotes.\footnote{In quote.} \end{quote} \begin{enumerate} \def\labelenumi{\arabic{enumi}.} \tightlist \item And in list items.\footnote{In list.} \end{enumerate} This paragraph should not be part of the note, as it is not indented. \end{document} pandoc-3.1.3/test/writer.man0000644000000000000000000002434407346545000014152 0ustar0000000000000000.\" Define V font for inline verbatim, using C font in formats .\" that render this, and otherwise B font. .ie "\f[CB]x\f[]"x" \{\ . ftr V B . ftr VI BI . ftr VB B . ftr VBI BI .\} .el \{\ . ftr V CR . ftr VI CI . ftr VB CB . ftr VBI CBI .\} .TH "Pandoc Test Suite" "" "July 17, 2006" "" "" .hy .PP This is a set of tests for pandoc. Most of them are adapted from John Gruber\[cq]s markdown test suite. .PP * * * * * .SH Headers .SS Level 2 with an embedded link .SS Level 3 with \f[I]emphasis\f[R] .SS Level 4 .SS Level 5 .SH Level 1 .SS Level 2 with \f[I]emphasis\f[R] .SS Level 3 .PP with no blank line .SS Level 2 .PP with no blank line .PP * * * * * .SH Paragraphs .PP Here\[cq]s a regular paragraph. .PP In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item. .PP Here\[cq]s one with a bullet. * criminey. .PP There should be a hard line break .PD 0 .P .PD here. .PP * * * * * .SH Block Quotes .PP E-mail style: .RS .PP This is a block quote. It is pretty short. .RE .RS .PP Code in a block quote: .IP .nf \f[C] sub status { print \[dq]working\[dq]; } \f[R] .fi .PP A list: .IP "1." 3 item one .IP "2." 3 item two .PP Nested block quotes: .RS .PP nested .RE .RS .PP nested .RE .RE .PP This should not be a block quote: 2 > 1. .PP And a following paragraph. .PP * * * * * .SH Code Blocks .PP Code: .IP .nf \f[C] ---- (should be four hyphens) sub status { print \[dq]working\[dq]; } this code block is indented by one tab \f[R] .fi .PP And: .IP .nf \f[C] this code block is indented by two tabs These should not be escaped: \[rs]$ \[rs]\[rs] \[rs]> \[rs][ \[rs]{ \f[R] .fi .PP * * * * * .SH Lists .SS Unordered .PP Asterisks tight: .IP \[bu] 2 asterisk 1 .IP \[bu] 2 asterisk 2 .IP \[bu] 2 asterisk 3 .PP Asterisks loose: .IP \[bu] 2 asterisk 1 .IP \[bu] 2 asterisk 2 .IP \[bu] 2 asterisk 3 .PP Pluses tight: .IP \[bu] 2 Plus 1 .IP \[bu] 2 Plus 2 .IP \[bu] 2 Plus 3 .PP Pluses loose: .IP \[bu] 2 Plus 1 .IP \[bu] 2 Plus 2 .IP \[bu] 2 Plus 3 .PP Minuses tight: .IP \[bu] 2 Minus 1 .IP \[bu] 2 Minus 2 .IP \[bu] 2 Minus 3 .PP Minuses loose: .IP \[bu] 2 Minus 1 .IP \[bu] 2 Minus 2 .IP \[bu] 2 Minus 3 .SS Ordered .PP Tight: .IP "1." 3 First .IP "2." 3 Second .IP "3." 3 Third .PP and: .IP "1." 3 One .IP "2." 3 Two .IP "3." 3 Three .PP Loose using tabs: .IP "1." 3 First .IP "2." 3 Second .IP "3." 3 Third .PP and using spaces: .IP "1." 3 One .IP "2." 3 Two .IP "3." 3 Three .PP Multiple paragraphs: .IP "1." 3 Item 1, graf one. .RS 4 .PP Item 1. graf two. The quick brown fox jumped over the lazy dog\[cq]s back. .RE .IP "2." 3 Item 2. .IP "3." 3 Item 3. .SS Nested .IP \[bu] 2 Tab .RS 2 .IP \[bu] 2 Tab .RS 2 .IP \[bu] 2 Tab .RE .RE .PP Here\[cq]s another: .IP "1." 3 First .IP "2." 3 Second: .RS 4 .IP \[bu] 2 Fee .IP \[bu] 2 Fie .IP \[bu] 2 Foe .RE .IP "3." 3 Third .PP Same thing but with paragraphs: .IP "1." 3 First .IP "2." 3 Second: .RS 4 .IP \[bu] 2 Fee .IP \[bu] 2 Fie .IP \[bu] 2 Foe .RE .IP "3." 3 Third .SS Tabs and spaces .IP \[bu] 2 this is a list item indented with tabs .IP \[bu] 2 this is a list item indented with spaces .RS 2 .IP \[bu] 2 this is an example list item indented with tabs .IP \[bu] 2 this is an example list item indented with spaces .RE .SS Fancy list markers .IP "(2)" 4 begins with 2 .IP "(3)" 4 and now 3 .RS 4 .PP with a continuation .IP "iv." 4 sublist with roman numerals, starting with 4 .IP " v." 4 more items .RS 4 .IP "(A)" 4 a subsublist .IP "(B)" 4 a subsublist .RE .RE .PP Nesting: .IP "A." 3 Upper Alpha .RS 4 .IP "I." 3 Upper Roman. .RS 4 .IP "(6)" 4 Decimal start with 6 .RS 4 .IP "c)" 3 Lower alpha with paren .RE .RE .RE .PP Autonumbering: .IP "1." 3 Autonumber. .IP "2." 3 More. .RS 4 .IP "1." 3 Nested. .RE .PP Should not be a list item: .PP M.A.\ 2007 .PP B. Williams .PP * * * * * .SH Definition Lists .PP Tight using spaces: .TP apple red fruit .TP orange orange fruit .TP banana yellow fruit .PP Tight using tabs: .TP apple red fruit .TP orange orange fruit .TP banana yellow fruit .PP Loose: .TP apple red fruit .TP orange orange fruit .TP banana yellow fruit .PP Multiple blocks with italics: .TP \f[I]apple\f[R] red fruit .RS .PP contains seeds, crisp, pleasant to taste .RE .TP \f[I]orange\f[R] orange fruit .RS .IP .nf \f[C] { orange code block } \f[R] .fi .RS .PP orange block quote .RE .RE .PP Multiple definitions, tight: .TP apple red fruit computer .TP orange orange fruit bank .PP Multiple definitions, loose: .TP apple red fruit computer .TP orange orange fruit bank .PP Blank line after term, indented marker, alternate markers: .TP apple red fruit computer .TP orange orange fruit .RS .IP "1." 3 sublist .IP "2." 3 sublist .RE .SH HTML Blocks .PP Simple block on one line: foo .PP And nested without indentation: .PP foo bar .PP Interpreted markdown in a table: This is \f[I]emphasized\f[R] And this is \f[B]strong\f[R] .PP Here\[cq]s a simple block: .PP foo .PP This should be a code block, though: .IP .nf \f[C]
                foo
                \f[R] .fi .PP As should this: .IP .nf \f[C]
                foo
                \f[R] .fi .PP Now, nested: foo .PP This should just be an HTML comment: .PP Multiline: .PP Code block: .IP .nf \f[C] \f[R] .fi .PP Just plain comment, with trailing spaces on the line: .PP Code: .IP .nf \f[C]
                \f[R] .fi .PP Hr\[cq]s: .PP * * * * * .SH Inline Markup .PP This is \f[I]emphasized\f[R], and so \f[I]is this\f[R]. .PP This is \f[B]strong\f[R], and so \f[B]is this\f[R]. .PP An \f[I]emphasized link\f[R]. .PP \f[B]\f[BI]This is strong and em.\f[B]\f[R] .PP So is \f[B]\f[BI]this\f[B]\f[R] word. .PP \f[B]\f[BI]This is strong and em.\f[B]\f[R] .PP So is \f[B]\f[BI]this\f[B]\f[R] word. .PP This is code: \f[V]>\f[R], \f[V]$\f[R], \f[V]\[rs]\f[R], \f[V]\[rs]$\f[R], \f[V]\f[R]. .PP [STRIKEOUT:This is \f[I]strikeout\f[R].] .PP Superscripts: a^bc^d a^\f[I]hello\f[R]^ a^hello\ there^. .PP Subscripts: H~2~O, H~23~O, H~many\ of\ them~O. .PP These should not be superscripts or subscripts, because of the unescaped spaces: a\[ha]b c\[ha]d, a\[ti]b c\[ti]d. .PP * * * * * .SH Smart quotes, ellipses, dashes .PP \[lq]Hello,\[rq] said the spider. \[lq]`Shelob' is my name.\[rq] .PP `A', `B', and `C' are letters. .PP `Oak,' `elm,' and `beech' are names of trees. So is `pine.' .PP `He said, \[lq]I want to go.\[rq]' Were you alive in the 70\[cq]s? .PP Here is some quoted `\f[V]code\f[R]' and a \[lq]quoted link (http://example.com/?foo=1&bar=2)\[rq]. .PP Some dashes: one\[em]two \[em] three\[em]four \[em] five. .PP Dashes between numbers: 5\[en]7, 255\[en]66, 1987\[en]1999. .PP Ellipses\&...and\&...and\&.... .PP * * * * * .SH LaTeX .IP \[bu] 2 .IP \[bu] 2 2 + 2 = 4 .IP \[bu] 2 \f[I]x\f[R] ∈ \f[I]y\f[R] .IP \[bu] 2 \f[I]α\f[R] ∧ \f[I]ω\f[R] .IP \[bu] 2 223 .IP \[bu] 2 \f[I]p\f[R]-Tree .IP \[bu] 2 Here\[cq]s some display math: .RS $$\[rs]frac{d}{dx}f(x)=\[rs]lim_{h\[rs]to 0}\[rs]frac{f(x+h)-f(x)}{h}$$ .RE .IP \[bu] 2 Here\[cq]s one that has a line break in it: \f[I]α\f[R] + \f[I]ω\f[R] × \f[I]x\f[R]^2^. .PP These shouldn\[cq]t be math: .IP \[bu] 2 To get the famous equation, write \f[V]$e = mc\[ha]2$\f[R]. .IP \[bu] 2 $22,000 is a \f[I]lot\f[R] of money. So is $34,000. (It worked if \[lq]lot\[rq] is emphasized.) .IP \[bu] 2 Shoes ($20) and socks ($5). .IP \[bu] 2 Escaped \f[V]$\f[R]: $73 \f[I]this should be emphasized\f[R] 23$. .PP Here\[cq]s a LaTeX table: .PP * * * * * .SH Special Characters .PP Here is some unicode: .IP \[bu] 2 I hat: Î .IP \[bu] 2 o umlaut: ö .IP \[bu] 2 section: § .IP \[bu] 2 set membership: ∈ .IP \[bu] 2 copyright: © .PP AT&T has an ampersand in their name. .PP AT&T is another way to write it. .PP This & that. .PP 4 < 5. .PP 6 > 5. .PP Backslash: \[rs] .PP Backtick: \[ga] .PP Asterisk: * .PP Underscore: _ .PP Left brace: { .PP Right brace: } .PP Left bracket: [ .PP Right bracket: ] .PP Left paren: ( .PP Right paren: ) .PP Greater-than: > .PP Hash: # .PP Period: . .PP Bang: ! .PP Plus: + .PP Minus: - .PP * * * * * .SH Links .SS Explicit .PP Just a URL. .PP URL and title. .PP URL and title. .PP URL and title. .PP URL and title .PP URL and title .PP with_underscore .PP Email link (mailto:nobody@nowhere.net) .PP Empty. .SS Reference .PP Foo bar. .PP With embedded [brackets]. .PP b by itself should be a link. .PP Indented once. .PP Indented twice. .PP Indented thrice. .PP This should [not][] be a link. .IP .nf \f[C] [not]: /url \f[R] .fi .PP Foo bar. .PP Foo biz. .SS With ampersands .PP Here\[cq]s a link with an ampersand in the URL (http://example.com/?foo=1&bar=2). .PP Here\[cq]s a link with an amersand in the link text: AT&T (http://att.com/). .PP Here\[cq]s an inline link. .PP Here\[cq]s an inline link in pointy braces. .SS Autolinks .PP With an ampersand: .IP \[bu] 2 In a list? .IP \[bu] 2 .IP \[bu] 2 It should. .PP An e-mail address: .RS .PP Blockquoted: .RE .PP Auto-links should not occur here: \f[V]\f[R] .IP .nf \f[C] or here: \f[R] .fi .PP * * * * * .SH Images .PP From \[lq]Voyage dans la Lune\[rq] by Georges Melies (1902): [IMAGE: lalune] lalune .PP Here is a movie [IMAGE: movie] icon. .PP * * * * * .SH Footnotes .PP Here is a footnote reference,[1] and another.[2] This should \f[I]not\f[R] be a footnote reference, because it contains a space.[\[ha]my note] Here is an inline note.[3] .RS .PP Notes can go in quotes.[4] .RE .IP "1." 3 And in list items.[5] .PP This paragraph should not be part of the note, as it is not indented. .SH NOTES .SS [1] .PP Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document. .SS [2] .PP Here\[cq]s the long note. This one contains multiple blocks. .PP Subsequent blocks are indented to show that they belong to the footnote (as with list items). .IP .nf \f[C] { } \f[R] .fi .PP If you want, you can indent every line, but you can also be lazy and just indent the first line of each block. .SS [3] .PP This is \f[I]easier\f[R] to type. Inline notes may contain links (http://google.com) and \f[V]]\f[R] verbatim characters, as well as [bracketed text]. .SS [4] .PP In quote. .SS [5] .PP In list. .SH AUTHORS John MacFarlane; Anonymous. pandoc-3.1.3/test/writer.markdown0000644000000000000000000002454007346545000015217 0ustar0000000000000000--- author: - John MacFarlane - Anonymous date: July 17, 2006 title: Pandoc Test Suite --- This is a set of tests for pandoc. Most of them are adapted from John Gruber's markdown test suite. -------------------------------------------------------------------------------- # Headers ## Level 2 with an [embedded link](/url) ### Level 3 with *emphasis* #### Level 4 ##### Level 5 # Level 1 ## Level 2 with *emphasis* ### Level 3 with no blank line ## Level 2 with no blank line -------------------------------------------------------------------------------- # Paragraphs Here's a regular paragraph. In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item. Here's one with a bullet. \* criminey. There should be a hard line break\ here. -------------------------------------------------------------------------------- # Block Quotes E-mail style: > This is a block quote. It is pretty short. > Code in a block quote: > > sub status { > print "working"; > } > > A list: > > 1. item one > 2. item two > > Nested block quotes: > > > nested > > > nested This should not be a block quote: 2 \> 1. And a following paragraph. -------------------------------------------------------------------------------- # Code Blocks Code: ---- (should be four hyphens) sub status { print "working"; } this code block is indented by one tab And: this code block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{ -------------------------------------------------------------------------------- # Lists ## Unordered Asterisks tight: - asterisk 1 - asterisk 2 - asterisk 3 Asterisks loose: - asterisk 1 - asterisk 2 - asterisk 3 Pluses tight: - Plus 1 - Plus 2 - Plus 3 Pluses loose: - Plus 1 - Plus 2 - Plus 3 Minuses tight: - Minus 1 - Minus 2 - Minus 3 Minuses loose: - Minus 1 - Minus 2 - Minus 3 ## Ordered Tight: 1. First 2. Second 3. Third and: 1. One 2. Two 3. Three Loose using tabs: 1. First 2. Second 3. Third and using spaces: 1. One 2. Two 3. Three Multiple paragraphs: 1. Item 1, graf one. Item 1. graf two. The quick brown fox jumped over the lazy dog's back. 2. Item 2. 3. Item 3. ## Nested - Tab - Tab - Tab Here's another: 1. First 2. Second: - Fee - Fie - Foe 3. Third Same thing but with paragraphs: 1. First 2. Second: - Fee - Fie - Foe 3. Third ## Tabs and spaces - this is a list item indented with tabs - this is a list item indented with spaces - this is an example list item indented with tabs - this is an example list item indented with spaces ## Fancy list markers (2) begins with 2 (3) and now 3 with a continuation iv. sublist with roman numerals, starting with 4 v. more items (A) a subsublist (B) a subsublist Nesting: A. Upper Alpha I. Upper Roman. (6) Decimal start with 6 c) Lower alpha with paren Autonumbering: 1. Autonumber. 2. More. 1. Nested. Should not be a list item: M.A. 2007 B. Williams -------------------------------------------------------------------------------- # Definition Lists Tight using spaces: apple : red fruit orange : orange fruit banana : yellow fruit Tight using tabs: apple : red fruit orange : orange fruit banana : yellow fruit Loose: apple : red fruit orange : orange fruit banana : yellow fruit Multiple blocks with italics: *apple* : red fruit contains seeds, crisp, pleasant to taste *orange* : orange fruit { orange code block } > orange block quote Multiple definitions, tight: apple : red fruit : computer orange : orange fruit : bank Multiple definitions, loose: apple : red fruit : computer orange : orange fruit : bank Blank line after term, indented marker, alternate markers: apple : red fruit : computer orange : orange fruit 1. sublist 2. sublist # HTML Blocks Simple block on one line:
                foo
                And nested without indentation:
                foo
                bar
                Interpreted markdown in a table: ```{=html} ``` ```{=html} ``` ```{=html} ``` ```{=html} ``` ```{=html} ``` ```{=html}
                ``` This is *emphasized* ```{=html} ``` And this is **strong** ```{=html}
                ``` ```{=html} ``` Here's a simple block:
                foo
                This should be a code block, though:
                foo
                As should this:
                foo
                Now, nested:
                foo
                This should just be an HTML comment: ```{=html} ``` Multiline: ```{=html} ``` ```{=html} ``` Code block: Just plain comment, with trailing spaces on the line: ```{=html} ``` Code:
                Hr's: ```{=html}
                ``` ```{=html}
                ``` ```{=html}
                ``` ```{=html}
                ``` ```{=html}
                ``` ```{=html}
                ``` ```{=html}
                ``` ```{=html}
                ``` ```{=html}
                ``` -------------------------------------------------------------------------------- # Inline Markup This is *emphasized*, and so *is this*. This is **strong**, and so **is this**. An *[emphasized link](/url)*. ***This is strong and em.*** So is ***this*** word. ***This is strong and em.*** So is ***this*** word. This is code: `>`, `$`, `\`, `\$`, ``. ~~This is *strikeout*.~~ Superscripts: a^bc^d a^*hello*^ a^hello there^. Subscripts: H~2~O, H~23~O, H~many of them~O. These should not be superscripts or subscripts, because of the unescaped spaces: a\^b c\^d, a\~b c\~d. -------------------------------------------------------------------------------- # Smart quotes, ellipses, dashes "Hello," said the spider. "'Shelob' is my name." 'A', 'B', and 'C' are letters. 'Oak,' 'elm,' and 'beech' are names of trees. So is 'pine.' 'He said, "I want to go."' Were you alive in the 70's? Here is some quoted '`code`' and a "[quoted link](http://example.com/?foo=1&bar=2)". Some dashes: one---two --- three---four --- five. Dashes between numbers: 5--7, 255--66, 1987--1999. Ellipses...and...and.... -------------------------------------------------------------------------------- # LaTeX - `\cite[22-23]{smith.1899}`{=tex} - $2+2=4$ - $x \in y$ - $\alpha \wedge \omega$ - $223$ - $p$-Tree - Here's some display math: $$\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$$ - Here's one that has a line break in it: $\alpha + \omega \times x^2$. These shouldn't be math: - To get the famous equation, write `$e = mc^2$`. - \$22,000 is a *lot* of money. So is \$34,000. (It worked if "lot" is emphasized.) - Shoes (\$20) and socks (\$5). - Escaped `$`: \$73 *this should be emphasized* 23\$. Here's a LaTeX table: ```{=tex} \begin{tabular}{|l|l|}\hline Animal & Number \\ \hline Dog & 2 \\ Cat & 1 \\ \hline \end{tabular} ``` -------------------------------------------------------------------------------- # Special Characters Here is some unicode: - I hat: Î - o umlaut: ö - section: § - set membership: ∈ - copyright: © AT&T has an ampersand in their name. AT&T is another way to write it. This & that. 4 \< 5. 6 \> 5. Backslash: \\ Backtick: \` Asterisk: \* Underscore: \_ Left brace: { Right brace: } Left bracket: \[ Right bracket: \] Left paren: ( Right paren: ) Greater-than: \> Hash: \# Period: . Bang: ! Plus: + Minus: - -------------------------------------------------------------------------------- # Links ## Explicit Just a [URL](/url/). [URL and title](/url/ "title"). [URL and title](/url/ "title preceded by two spaces"). [URL and title](/url/ "title preceded by a tab"). [URL and title](/url/ "title with "quotes" in it") [URL and title](/url/ "title with single quotes") [with_underscore](/url/with_underscore) [Email link](mailto:nobody@nowhere.net) [Empty](). ## Reference Foo [bar](/url/). With [embedded \[brackets\]](/url/). [b](/url/) by itself should be a link. Indented [once](/url). Indented [twice](/url). Indented [thrice](/url). This should \[not\]\[\] be a link. [not]: /url Foo [bar](/url/ "Title with "quotes" inside"). Foo [biz](/url/ "Title with "quote" inside"). ## With ampersands Here's a [link with an ampersand in the URL](http://example.com/?foo=1&bar=2). Here's a link with an amersand in the link text: [AT&T](http://att.com/ "AT&T"). Here's an [inline link](/script?foo=1&bar=2). Here's an [inline link in pointy braces](/script?foo=1&bar=2). ## Autolinks With an ampersand: - In a list? - - It should. An e-mail address: > Blockquoted: Auto-links should not occur here: `` or here: -------------------------------------------------------------------------------- # Images From "Voyage dans la Lune" by Georges Melies (1902): ![lalune](lalune.jpg "Voyage dans la Lune") Here is a movie ![movie](movie.jpg) icon. -------------------------------------------------------------------------------- # Footnotes Here is a footnote reference,[^1] and another.[^2] This should *not* be a footnote reference, because it contains a space.\[\^my note\] Here is an inline note.[^3] > Notes can go in quotes.[^4] 1. And in list items.[^5] This paragraph should not be part of the note, as it is not indented. [^1]: Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document. [^2]: Here's the long note. This one contains multiple blocks. Subsequent blocks are indented to show that they belong to the footnote (as with list items). { } If you want, you can indent every line, but you can also be lazy and just indent the first line of each block. [^3]: This is *easier* to type. Inline notes may contain [links](http://google.com) and `]` verbatim characters, as well as \[bracketed text\]. [^4]: In quote. [^5]: In list. pandoc-3.1.3/test/writer.markua0000644000000000000000000002202407346545000014650 0ustar0000000000000000This is a set of tests for pandoc. Most of them are adapted from John Gruber’s markdown test suite. * * * {id: headers} # Headers {id: level-2-with-an-embedded-link} ## Level 2 with an [embedded link](/url) {id: level-3-with-emphasis} ### Level 3 with *emphasis* {id: level-4} #### Level 4 {id: level-5} ##### Level 5 {id: level-1} # Level 1 {id: level-2-with-emphasis} ## Level 2 with *emphasis* {id: level-3} ### Level 3 with no blank line {id: level-2} ## Level 2 with no blank line * * * {id: paragraphs} # Paragraphs Here’s a regular paragraph. In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item. Here’s one with a bullet. * criminey. There should be a hard line break here. * * * {id: block-quotes} # Block Quotes E-mail style: > This is a block quote. It is pretty short. > Code in a block quote: > > ``` > sub status { > print "working"; > } > ``` > > A list: > > 1. item one > 2. item two > > Nested block quotes: > > > nested > > > nested This should not be a block quote: 2 > 1. And a following paragraph. * * * {id: code-blocks} # Code Blocks Code: ``` ---- (should be four hyphens) sub status { print "working"; } this code block is indented by one tab ``` And: ``` this code block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{ ``` * * * {id: lists} # Lists {id: unordered} ## Unordered Asterisks tight: * asterisk 1 * asterisk 2 * asterisk 3 Asterisks loose: * asterisk 1 * asterisk 2 * asterisk 3 Pluses tight: * Plus 1 * Plus 2 * Plus 3 Pluses loose: * Plus 1 * Plus 2 * Plus 3 Minuses tight: * Minus 1 * Minus 2 * Minus 3 Minuses loose: * Minus 1 * Minus 2 * Minus 3 {id: ordered} ## Ordered Tight: 1. First 2. Second 3. Third and: 1. One 2. Two 3. Three Loose using tabs: 1. First 2. Second 3. Third and using spaces: 1. One 2. Two 3. Three Multiple paragraphs: 1. Item 1, graf one. Item 1. graf two. The quick brown fox jumped over the lazy dog’s back. 2. Item 2. 3. Item 3. {id: nested} ## Nested * Tab * Tab * Tab Here’s another: 1. First 2. Second: * Fee * Fie * Foe 3. Third Same thing but with paragraphs: 1. First 2. Second: * Fee * Fie * Foe 3. Third {id: tabs-and-spaces} ## Tabs and spaces * this is a list item indented with tabs * this is a list item indented with spaces * this is an example list item indented with tabs * this is an example list item indented with spaces {id: fancy-list-markers} ## Fancy list markers 2) begins with 2 3) and now 3 with a continuation iv. sublist with roman numerals, starting with 4 v. more items A) a subsublist B) a subsublist Nesting: A. Upper Alpha I. Upper Roman. 6) Decimal start with 6 c) Lower alpha with paren Autonumbering: 1. Autonumber. 2. More. 1. Nested. Should not be a list item: M.A. 2007 B. Williams * * * {id: definition-lists} # Definition Lists Tight using spaces: apple : red fruit orange : orange fruit banana : yellow fruit Tight using tabs: apple : red fruit orange : orange fruit banana : yellow fruit Loose: apple : red fruit orange : orange fruit banana : yellow fruit Multiple blocks with italics: *apple* : red fruit contains seeds, crisp, pleasant to taste *orange* : orange fruit ``` { orange code block } ``` > orange block quote Multiple definitions, tight: apple : red fruit : computer orange : orange fruit : bank Multiple definitions, loose: apple : red fruit : computer orange : orange fruit : bank Blank line after term, indented marker, alternate markers: apple : red fruit : computer orange : orange fruit 1. sublist 2. sublist {id: html-blocks} # HTML Blocks Simple block on one line: foo And nested without indentation: foo bar Interpreted markdown in a table: This is *emphasized* And this is **strong** Here’s a simple block: foo This should be a code block, though: ```
                foo
                ``` As should this: ```
                foo
                ``` Now, nested: foo This should just be an HTML comment: Multiline: Code block: ``` ``` Just plain comment, with trailing spaces on the line: Code: ```
                ``` Hr’s: * * * {id: inline-markup} # Inline Markup This is *emphasized*, and so *is this*. This is **strong**, and so **is this**. An *[emphasized link](/url)*. ***This is strong and em.*** So is ***this*** word. ***This is strong and em.*** So is ***this*** word. This is code: `>`, `$`, `\`, `\$`, ``. ~~This is *strikeout*.~~ Superscripts: a^bc^d a^*hello*^ a^hello there^. Subscripts: H~2~O, H~23~O, H~many of them~O. These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d. * * * {id: smart-quotes-ellipses-dashes} # Smart quotes, ellipses, dashes "Hello," said the spider. "'Shelob' is my name." 'A', 'B', and 'C' are letters. 'Oak,' 'elm,' and 'beech' are names of trees. So is 'pine.' 'He said, "I want to go."' Were you alive in the 70’s? Here is some quoted '`code`' and a "[quoted link](http://example.com/?foo=1&bar=2)". Some dashes: one—two — three—four — five. Dashes between numbers: 5–7, 255–66, 1987–1999. Ellipses…and…and…. * * * {id: latex} # LaTeX * * `2+2=4`$ * `x \in y`$ * `\alpha \wedge \omega`$ * `223`$ * `p`$-Tree * Here’s some display math: {format: latex} ``` \frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h} ``` * Here’s one that has a line break in it: `\alpha + \omega \times x^2`$. These shouldn’t be math: * To get the famous equation, write `$e = mc^2$`. * $22,000 is a *lot* of money. So is $34,000. (It worked if "lot" is emphasized.) * Shoes ($20) and socks ($5). * Escaped `$`: $73 *this should be emphasized* 23$. Here’s a LaTeX table: * * * {id: special-characters} # Special Characters Here is some unicode: * I hat: Î * o umlaut: ö * section: § * set membership: ∈ * copyright: © AT&T has an ampersand in their name. AT&T is another way to write it. This & that. 4 < 5. 6 > 5. Backslash: \ Backtick: ` Asterisk: * Underscore: _ Left brace: { Right brace: } Left bracket: [ Right bracket: ] Left paren: ( Right paren: ) Greater-than: > Hash: # Period: . Bang: ! Plus: + Minus: - * * * {id: links} # Links {id: explicit} ## Explicit Just a [URL](/url/). [URL and title](/url/){title: "title"}. [URL and title](/url/){title: "title preceded by two spaces"}. [URL and title](/url/){title: "title preceded by a tab"}. [URL and title](/url/){title: "title with "quotes" in it"} [URL and title](/url/){title: "title with single quotes"} [with_underscore](/url/with_underscore) [Email link](mailto:nobody@nowhere.net) [Empty](). {id: reference} ## Reference Foo [bar](/url/). With [embedded [brackets]](/url/). [b](/url/) by itself should be a link. Indented [once](/url). Indented [twice](/url). Indented [thrice](/url). This should [not][] be a link. ``` [not]: /url ``` Foo [bar](/url/){title: "Title with "quotes" inside"}. Foo [biz](/url/){title: "Title with "quote" inside"}. {id: with-ampersands} ## With ampersands Here’s a [link with an ampersand in the URL](http://example.com/?foo=1&bar=2). Here’s a link with an amersand in the link text: [AT&T](http://att.com/){title: "AT&T"}. Here’s an [inline link](/script?foo=1&bar=2). Here’s an [inline link in pointy braces](/script?foo=1&bar=2). {id: autolinks} ## Autolinks With an ampersand: [http:~/~/example.com/?foo=1&bar=2](http://example.com/?foo=1&bar=2){class: uri} * In a list? * [http:~/~/example.com/](http://example.com/){class: uri} * It should. An e-mail address: [nobody@nowhere.net](mailto:nobody@nowhere.net){class: email} > Blockquoted: [http:~/~/example.com/](http://example.com/){class: uri} Auto-links should not occur here: `` ``` or here: ``` * * * {id: images} # Images From "Voyage dans la Lune" by Georges Melies (1902): {alt: "lalune", title: "Voyage dans la Lune"} ![](lalune.jpg) lalune Here is a movie {alt: "movie"} ![](movie.jpg) icon. * * * {id: footnotes} # Footnotes Here is a footnote reference,[^1] and another.[^2] This should *not* be a footnote reference, because it contains a space.[^my note] Here is an inline note.[^3] > Notes can go in quotes.[^4] 1. And in list items.[^5] This paragraph should not be part of the note, as it is not indented. [^1]: Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document. [^2]: Here’s the long note. This one contains multiple blocks. Subsequent blocks are indented to show that they belong to the footnote (as with list items). ``` { } ``` If you want, you can indent every line, but you can also be lazy and just indent the first line of each block. [^3]: This is *easier* to type. Inline notes may contain [links](http://google.com) and `]` verbatim characters, as well as [bracketed text]. [^4]: In quote. [^5]: In list. pandoc-3.1.3/test/writer.mediawiki0000644000000000000000000002532707346545000015344 0ustar0000000000000000This is a set of tests for pandoc. Most of them are adapted from John Gruber’s markdown test suite. ----- = Headers = == Level 2 with an [[url|embedded link]] == === Level 3 with ''emphasis'' === ==== Level 4 ==== ===== Level 5 ===== = Level 1 = == Level 2 with ''emphasis'' == === Level 3 === with no blank line == Level 2 == with no blank line ----- = Paragraphs = Here’s a regular paragraph. In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item. Here’s one with a bullet. * criminey. There should be a hard line break
                here. ----- = Block Quotes = E-mail style:
                This is a block quote. It is pretty short.
                Code in a block quote:
                sub status {
                    print "working";
                }
                A list: # item one # item two Nested block quotes:
                nested
                nested
                This should not be a block quote: 2 > 1. And a following paragraph. ----- = Code Blocks = Code:
                ---- (should be four hyphens)
                
                sub status {
                    print "working";
                }
                
                this code block is indented by one tab
                And:
                    this code block is indented by two tabs
                
                These should not be escaped:  \$ \\ \> \[ \{
                ----- = Lists = == Unordered == Asterisks tight: * asterisk 1 * asterisk 2 * asterisk 3 Asterisks loose: * asterisk 1 * asterisk 2 * asterisk 3 Pluses tight: * Plus 1 * Plus 2 * Plus 3 Pluses loose: * Plus 1 * Plus 2 * Plus 3 Minuses tight: * Minus 1 * Minus 2 * Minus 3 Minuses loose: * Minus 1 * Minus 2 * Minus 3 == Ordered == Tight: # First # Second # Third and: # One # Two # Three Loose using tabs: # First # Second # Third and using spaces: # One # Two # Three Multiple paragraphs:
                1. Item 1, graf one.

                  Item 1. graf two. The quick brown fox jumped over the lazy dog’s back.

                2. Item 2.

                3. Item 3.

                == Nested == * Tab ** Tab *** Tab Here’s another: # First # Second: #* Fee #* Fie #* Foe # Third Same thing but with paragraphs: # First # Second: #* Fee #* Fie #* Foe # Third == Tabs and spaces == * this is a list item indented with tabs * this is a list item indented with spaces ** this is an example list item indented with tabs ** this is an example list item indented with spaces == Fancy list markers ==
                1. begins with 2

                2. and now 3

                  with a continuation

                  1. sublist with roman numerals, starting with 4
                  2. more items
                    1. a subsublist
                    2. a subsublist
                Nesting:
                1. Upper Alpha
                  1. Upper Roman.
                    1. Decimal start with 6
                      1. Lower alpha with paren
                Autonumbering: # Autonumber. # More. ## Nested. Should not be a list item: M.A. 2007 B. Williams ----- = Definition Lists = Tight using spaces: ; apple : red fruit ; orange : orange fruit ; banana : yellow fruit Tight using tabs: ; apple : red fruit ; orange : orange fruit ; banana : yellow fruit Loose: ; apple : red fruit ; orange : orange fruit ; banana : yellow fruit Multiple blocks with italics:
                ''apple''

                red fruit

                contains seeds, crisp, pleasant to taste

                ''orange''

                orange fruit

                { orange code block }

                orange block quote

                Multiple definitions, tight: ; apple : red fruit : computer ; orange : orange fruit : bank Multiple definitions, loose: ; apple : red fruit : computer ; orange : orange fruit : bank Blank line after term, indented marker, alternate markers: ; apple : red fruit : computer ; orange : orange fruit ;# sublist ;# sublist = HTML Blocks = Simple block on one line:
                foo
                And nested without indentation:
                foo
                bar
                Interpreted markdown in a table:
                This is ''emphasized'' And this is '''strong'''
                Here’s a simple block:
                foo
                This should be a code block, though:
                <div>
                    foo
                </div>
                As should this:
                <div>foo</div>
                Now, nested:
                foo
                This should just be an HTML comment: Multiline: Code block:
                <!-- Comment -->
                Just plain comment, with trailing spaces on the line: Code:
                <hr />
                Hr’s:








                ----- = Inline Markup = This is ''emphasized'', and so ''is this''. This is '''strong''', and so '''is this'''. An ''[[url|emphasized link]]''. '''''This is strong and em.''''' So is '''''this''''' word. '''''This is strong and em.''''' So is '''''this''''' word. This is code: >, $, \, \$, <html>. This is ''strikeout''. Superscripts: abcd a''hello'' ahello there. Subscripts: H2O, H23O, Hmany of themO. These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d. ----- = Smart quotes, ellipses, dashes = “Hello,” said the spider. “‘Shelob’ is my name.” ‘A’, ‘B’, and ‘C’ are letters. ‘Oak,’ ‘elm,’ and ‘beech’ are names of trees. So is ‘pine.’ ‘He said, “I want to go.”’ Were you alive in the 70’s? Here is some quoted ‘code’ and a “[http://example.com/?foo=1&bar=2 quoted link]”. Some dashes: one—two — three—four — five. Dashes between numbers: 5–7, 255–66, 1987–1999. Ellipses…and…and…. ----- = LaTeX = * * 2+2=4 * x \in y * \alpha \wedge \omega * 223 * p-Tree * Here’s some display math: \frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h} * Here’s one that has a line break in it: \alpha + \omega \times x^2. These shouldn’t be math: * To get the famous equation, write $e = mc^2$. * $22,000 is a ''lot'' of money. So is $34,000. (It worked if “lot” is emphasized.) * Shoes ($20) and socks ($5). * Escaped $: $73 ''this should be emphasized'' 23$. Here’s a LaTeX table: ----- = Special Characters = Here is some unicode: * I hat: Î * o umlaut: ö * section: § * set membership: ∈ * copyright: © AT&T has an ampersand in their name. AT&T is another way to write it. This & that. 4 < 5. 6 > 5. Backslash: \ Backtick: ` Asterisk: * Underscore: _ Left brace: { Right brace: } Left bracket: [ Right bracket: ] Left paren: ( Right paren: ) Greater-than: > Hash: # Period: . Bang: ! Plus: + Minus: - ----- = Links = == Explicit == Just a [[url/|URL]]. [[url/|URL and title]]. [[url/|URL and title]]. [[url/|URL and title]]. [[url/|URL and title]] [[url/|URL and title]] [[url/with_underscore|with_underscore]] [mailto:nobody@nowhere.net Email link] [[|Empty]]. == Reference == Foo [[url/|bar]]. With [[url/|embedded [brackets]]]. [[url/|b]] by itself should be a link. Indented [[url|once]]. Indented [[url|twice]]. Indented [[url|thrice]]. This should [not][] be a link.
                [not]: /url
                Foo [[url/|bar]]. Foo [[url/|biz]]. == With ampersands == Here’s a [http://example.com/?foo=1&bar=2 link with an ampersand in the URL]. Here’s a link with an amersand in the link text: [http://att.com/ AT&T]. Here’s an [[script?foo=1&bar=2|inline link]]. Here’s an [[script?foo=1&bar=2|inline link in pointy braces]]. == Autolinks == With an ampersand: http://example.com/?foo=1&bar=2 * In a list? * http://example.com/ * It should. An e-mail address: [mailto:nobody@nowhere.net nobody@nowhere.net]
                Blockquoted: http://example.com/
                Auto-links should not occur here: <http://example.com/>
                or here: <http://example.com/>
                ----- = Images = From “Voyage dans la Lune” by Georges Melies (1902):
                [[File:lalune.jpg|lalune]]
                Here is a movie [[File:movie.jpg|movie]] icon. ----- = Footnotes = Here is a footnote reference,Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document. and another.Here’s the long note. This one contains multiple blocks. Subsequent blocks are indented to show that they belong to the footnote (as with list items).
                  { <code> }
                If you want, you can indent every line, but you can also be lazy and just indent the first line of each block.
                This should ''not'' be a footnote reference, because it contains a space.[^my note] Here is an inline note.This is ''easier'' to type. Inline notes may contain [http://google.com links] and ] verbatim characters, as well as [bracketed text].
                Notes can go in quotes.In quote.
                # And in list items.In list. This paragraph should not be part of the note, as it is not indented. pandoc-3.1.3/test/writer.ms0000644000000000000000000003536007346545000014016 0ustar0000000000000000.\" **** Custom macro definitions ********************************* .\" * Super/subscript .\" (https://lists.gnu.org/archive/html/groff/2012-07/msg00046.html) .ds { \v'-0.3m'\\s[\\n[.s]*9u/12u] .ds } \s0\v'0.3m' .ds < \v'0.3m'\s[\\n[.s]*9u/12u] .ds > \s0\v'-0.3m' .\" * Horizontal line .de HLINE .LP .ce \l'20' .. .\" **** Settings ************************************************* .\" text width .nr LL 5.5i .\" left margin .nr PO 1.25i .\" top margin .nr HM 1.25i .\" bottom margin .nr FM 1.25i .\" header/footer width .nr LT \n[LL] .\" point size .nr PS 10p .\" line height .nr VS 12p .\" font family: A, BM, H, HN, N, P, T, ZCM .fam P .\" paragraph indent .nr PI 0m .\" interparagraph space .nr PD 0.4v .\" footnote width .nr FL \n[LL] .\" footnote point size .nr FPS (\n[PS] - 2000) .\" color used for strikeout .defcolor strikecolor rgb 0.7 0.7 0.7 .\" color for links (rgb) .ds PDFHREF.COLOUR 0.35 0.00 0.60 .\" border for links (default none) .ds PDFHREF.BORDER 0 0 0 .\" point size difference between heading levels .nr PSINCR 1p .\" heading level above which point size no longer changes .nr GROWPS 2 .\" comment these out if you want a dot after section numbers: .als SN SN-NO-DOT .als SN-STYLE SN-NO-DOT .\" page numbers in footer, centered .ds CH .ds CF % .\" pdf outline fold level .nr PDFOUTLINE.FOLDLEVEL 3 .\" start out in outline view .pdfview /PageMode /UseOutlines .\" *************************************************************** .\" PDF metadata .pdfinfo /Title "Pandoc Test Suite" .pdfinfo /Author "John MacFarlane; Anonymous" .hy .EQ delim @@ .EN .TL Pandoc Test Suite .AU John MacFarlane .AU Anonymous .AU .sp 0.5 .ft R July 17, 2006 .\" 1 column (use .2C for two column) .1C .LP This is a set of tests for pandoc. Most of them are adapted from John Gruber\[cq]s markdown test suite. .HLINE .SH 1 Headers .pdfhref O 1 "Headers" .pdfhref M "headers" .SH 2 Level 2 with an \c .pdfhref W -D "/url" -A "\c" \ -- "embedded link" \& .pdfhref O 2 "Level 2 with an embedded link" .pdfhref M "level-2-with-an-embedded-link" .SH 3 Level 3 with \f[BI]emphasis\f[B] .pdfhref O 3 "Level 3 with emphasis" .pdfhref M "level-3-with-emphasis" .SH 4 Level 4 .pdfhref O 4 "Level 4" .pdfhref M "level-4" .SH 5 Level 5 .pdfhref O 5 "Level 5" .pdfhref M "level-5" .SH 1 Level 1 .pdfhref O 1 "Level 1" .pdfhref M "level-1" .SH 2 Level 2 with \f[BI]emphasis\f[B] .pdfhref O 2 "Level 2 with emphasis" .pdfhref M "level-2-with-emphasis" .SH 3 Level 3 .pdfhref O 3 "Level 3" .pdfhref M "level-3" .LP with no blank line .SH 2 Level 2 .pdfhref O 2 "Level 2" .pdfhref M "level-2" .LP with no blank line .HLINE .SH 1 Paragraphs .pdfhref O 1 "Paragraphs" .pdfhref M "paragraphs" .LP Here\[cq]s a regular paragraph. .PP In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item. .PP Here\[cq]s one with a bullet. * criminey. .PP There should be a hard line break .br here. .HLINE .SH 1 Block Quotes .pdfhref O 1 "Block Quotes" .pdfhref M "block-quotes" .LP E-mail style: .QS .LP This is a block quote. It is pretty short. .QE .QS .LP Code in a block quote: .IP .nf \f[C] sub status { print \[dq]working\[dq]; } \f[] .fi .LP A list: .IP " 1." 4 item one .IP " 2." 4 item two .LP Nested block quotes: .QS .LP nested .QE .QS .LP nested .QE .QE .LP This should not be a block quote: 2 > 1. .PP And a following paragraph. .HLINE .SH 1 Code Blocks .pdfhref O 1 "Code Blocks" .pdfhref M "code-blocks" .LP Code: .IP .nf \f[C] ---- (should be four hyphens) sub status { print \[dq]working\[dq]; } this code block is indented by one tab \f[] .fi .LP And: .IP .nf \f[C] this code block is indented by two tabs These should not be escaped: \[rs]$ \[rs]\[rs] \[rs]> \[rs][ \[rs]{ \f[] .fi .HLINE .SH 1 Lists .pdfhref O 1 "Lists" .pdfhref M "lists" .SH 2 Unordered .pdfhref O 2 "Unordered" .pdfhref M "unordered" .LP Asterisks tight: .IP \[bu] 3 asterisk 1 .IP \[bu] 3 asterisk 2 .IP \[bu] 3 asterisk 3 .LP Asterisks loose: .IP \[bu] 3 asterisk 1 .IP \[bu] 3 asterisk 2 .IP \[bu] 3 asterisk 3 .LP Pluses tight: .IP \[bu] 3 Plus 1 .IP \[bu] 3 Plus 2 .IP \[bu] 3 Plus 3 .LP Pluses loose: .IP \[bu] 3 Plus 1 .IP \[bu] 3 Plus 2 .IP \[bu] 3 Plus 3 .LP Minuses tight: .IP \[bu] 3 Minus 1 .IP \[bu] 3 Minus 2 .IP \[bu] 3 Minus 3 .LP Minuses loose: .IP \[bu] 3 Minus 1 .IP \[bu] 3 Minus 2 .IP \[bu] 3 Minus 3 .SH 2 Ordered .pdfhref O 2 "Ordered" .pdfhref M "ordered" .LP Tight: .IP " 1." 4 First .IP " 2." 4 Second .IP " 3." 4 Third .LP and: .IP " 1." 4 One .IP " 2." 4 Two .IP " 3." 4 Three .LP Loose using tabs: .IP " 1." 4 First .IP " 2." 4 Second .IP " 3." 4 Third .LP and using spaces: .IP " 1." 4 One .IP " 2." 4 Two .IP " 3." 4 Three .LP Multiple paragraphs: .IP " 1." 4 Item 1, graf one. .RS 4 .PP Item 1. graf two. The quick brown fox jumped over the lazy dog\[cq]s back. .RE .IP " 2." 4 Item 2. .IP " 3." 4 Item 3. .SH 2 Nested .pdfhref O 2 "Nested" .pdfhref M "nested" .IP \[bu] 3 Tab .RS 3 .IP \[bu] 3 Tab .RS 3 .IP \[bu] 3 Tab .RE .RE .LP Here\[cq]s another: .IP " 1." 4 First .IP " 2." 4 Second: .RS 4 .IP \[bu] 3 Fee .IP \[bu] 3 Fie .IP \[bu] 3 Foe .RE .IP " 3." 4 Third .LP Same thing but with paragraphs: .IP " 1." 4 First .IP " 2." 4 Second: .RS 4 .IP \[bu] 3 Fee .IP \[bu] 3 Fie .IP \[bu] 3 Foe .RE .IP " 3." 4 Third .SH 2 Tabs and spaces .pdfhref O 2 "Tabs and spaces" .pdfhref M "tabs-and-spaces" .IP \[bu] 3 this is a list item indented with tabs .IP \[bu] 3 this is a list item indented with spaces .RS 3 .IP \[bu] 3 this is an example list item indented with tabs .IP \[bu] 3 this is an example list item indented with spaces .RE .SH 2 Fancy list markers .pdfhref O 2 "Fancy list markers" .pdfhref M "fancy-list-markers" .IP " (2)" 5 begins with 2 .IP " (3)" 5 and now 3 .RS 5 .LP with a continuation .IP " iv." 5 sublist with roman numerals, starting with 4 .IP " v." 5 more items .RS 5 .IP " (A)" 5 a subsublist .IP " (B)" 5 a subsublist .RE .RE .LP Nesting: .IP " A." 4 Upper Alpha .RS 4 .IP " I." 4 Upper Roman. .RS 4 .IP " (6)" 5 Decimal start with 6 .RS 5 .IP " c)" 4 Lower alpha with paren .RE .RE .RE .LP Autonumbering: .IP " 1." 4 Autonumber. .IP " 2." 4 More. .RS 4 .IP " 1." 4 Nested. .RE .LP Should not be a list item: .PP M.A.\ 2007 .PP B. Williams .HLINE .SH 1 Definition Lists .pdfhref O 1 "Definition Lists" .pdfhref M "definition-lists" .LP Tight using spaces: .IP "\f[B]apple\f[R]" 3 red fruit .RS 3 .RE .IP "\f[B]orange\f[R]" 3 orange fruit .RS 3 .RE .IP "\f[B]banana\f[R]" 3 yellow fruit .RS 3 .RE .LP Tight using tabs: .IP "\f[B]apple\f[R]" 3 red fruit .RS 3 .RE .IP "\f[B]orange\f[R]" 3 orange fruit .RS 3 .RE .IP "\f[B]banana\f[R]" 3 yellow fruit .RS 3 .RE .LP Loose: .IP "\f[B]apple\f[R]" 3 red fruit .RS 3 .RE .IP "\f[B]orange\f[R]" 3 orange fruit .RS 3 .RE .IP "\f[B]banana\f[R]" 3 yellow fruit .RS 3 .RE .LP Multiple blocks with italics: .IP "\f[B]\f[BI]apple\f[B]\f[R]" 3 red fruit .RS 3 .PP contains seeds, crisp, pleasant to taste .RE .IP "\f[B]\f[BI]orange\f[B]\f[R]" 3 orange fruit .RS 3 .IP .nf \f[C] { orange code block } \f[] .fi .QS .LP orange block quote .QE .RE .LP Multiple definitions, tight: .IP "\f[B]apple\f[R]" 3 red fruit .RS 3 .RE computer .RS 3 .RE .IP "\f[B]orange\f[R]" 3 orange fruit .RS 3 .RE bank .RS 3 .RE .LP Multiple definitions, loose: .IP "\f[B]apple\f[R]" 3 red fruit .RS 3 .RE computer .RS 3 .RE .IP "\f[B]orange\f[R]" 3 orange fruit .RS 3 .RE bank .RS 3 .RE .LP Blank line after term, indented marker, alternate markers: .IP "\f[B]apple\f[R]" 3 red fruit .RS 3 .RE computer .RS 3 .RE .IP "\f[B]orange\f[R]" 3 orange fruit .RS 3 .IP " 1." 4 sublist .IP " 2." 4 sublist .RE .SH 1 HTML Blocks .pdfhref O 1 "HTML Blocks" .pdfhref M "html-blocks" .LP Simple block on one line: foo .LP And nested without indentation: .LP foo bar .LP Interpreted markdown in a table: This is \f[I]emphasized\f[R] And this is \f[B]strong\f[R] .PP Here\[cq]s a simple block: .LP foo .LP This should be a code block, though: .IP .nf \f[C]
                foo
                \f[] .fi .LP As should this: .IP .nf \f[C]
                foo
                \f[] .fi .LP Now, nested: foo .LP This should just be an HTML comment: .PP Multiline: .PP Code block: .IP .nf \f[C] \f[] .fi .LP Just plain comment, with trailing spaces on the line: .PP Code: .IP .nf \f[C]
                \f[] .fi .LP Hr\[cq]s: .HLINE .SH 1 Inline Markup .pdfhref O 1 "Inline Markup" .pdfhref M "inline-markup" .LP This is \f[I]emphasized\f[R], and so \f[I]is this\f[R]. .PP This is \f[B]strong\f[R], and so \f[B]is this\f[R]. .PP An \f[I]\c .pdfhref W -D "/url" -A "\c" \ -- "emphasized link" \&\f[R]. .PP \f[B]\f[BI]This is strong and em.\f[B]\f[R] .PP So is \f[B]\f[BI]this\f[B]\f[R] word. .PP \f[B]\f[BI]This is strong and em.\f[B]\f[R] .PP So is \f[B]\f[BI]this\f[B]\f[R] word. .PP This is code: \f[C]>\f[R], \f[C]$\f[R], \f[C]\[rs]\f[R], \f[C]\[rs]$\f[R], \f[C]\f[R]. .PP \m[strikecolor]This is \f[I]strikeout\f[R].\m[] .PP Superscripts: a\*{bc\*}d a\*{\f[I]hello\f[R]\*} a\*{hello\ there\*}. .PP Subscripts: H\*<2\*>O, H\*<23\*>O, H\*O. .PP These should not be superscripts or subscripts, because of the unescaped spaces: a\[ha]b c\[ha]d, a\[ti]b c\[ti]d. .HLINE .SH 1 Smart quotes, ellipses, dashes .pdfhref O 1 "Smart quotes, ellipses, dashes" .pdfhref M "smart-quotes-ellipses-dashes" .LP \[lq]Hello,\[rq] said the spider. \[lq]`Shelob' is my name.\[rq] .PP `A', `B', and `C' are letters. .PP `Oak,' `elm,' and `beech' are names of trees. So is `pine.' .PP `He said, \[lq]I want to go.\[rq]' Were you alive in the 70\[cq]s? .PP Here is some quoted `\f[C]code\f[R]' and a \[lq]\c .pdfhref W -D "http://example.com/?foo=1&bar=2" -A "\c" \ -- "quoted link" \&\[rq]. .PP Some dashes: one\[em]two \[em] three\[em]four \[em] five. .PP Dashes between numbers: 5\[en]7, 255\[en]66, 1987\[en]1999. .PP Ellipses\&...and\&...and\&.... .HLINE .SH 1 LaTeX .pdfhref O 1 "LaTeX" .pdfhref M "latex" .IP \[bu] 3 .IP \[bu] 3 @2 + 2 = 4@ .IP \[bu] 3 @x \[u2208] y@ .IP \[bu] 3 @alpha \[u2227] omega@ .IP \[bu] 3 @223@ .IP \[bu] 3 @p@-Tree .IP \[bu] 3 Here\[cq]s some display math: .EQ d over {d x} f left ( x right ) = lim from {h -> 0} {f left ( x + h right ) - f left ( x right )} over h .EN .IP \[bu] 3 Here\[cq]s one that has a line break in it: @alpha + omega times x sup 2@. .LP These shouldn\[cq]t be math: .IP \[bu] 3 To get the famous equation, write \f[C]$e = mc\[ha]2$\f[R]. .IP \[bu] 3 $22,000 is a \f[I]lot\f[R] of money. So is $34,000. (It worked if \[lq]lot\[rq] is emphasized.) .IP \[bu] 3 Shoes ($20) and socks ($5). .IP \[bu] 3 Escaped \f[C]$\f[R]: $73 \f[I]this should be emphasized\f[R] 23$. .LP Here\[cq]s a LaTeX table: .HLINE .SH 1 Special Characters .pdfhref O 1 "Special Characters" .pdfhref M "special-characters" .LP Here is some unicode: .IP \[bu] 3 I hat: Î .IP \[bu] 3 o umlaut: ö .IP \[bu] 3 section: § .IP \[bu] 3 set membership: ∈ .IP \[bu] 3 copyright: © .LP AT&T has an ampersand in their name. .PP AT&T is another way to write it. .PP This & that. .PP 4 < 5. .PP 6 > 5. .PP Backslash: \[rs] .PP Backtick: \[ga] .PP Asterisk: * .PP Underscore: _ .PP Left brace: { .PP Right brace: } .PP Left bracket: [ .PP Right bracket: ] .PP Left paren: ( .PP Right paren: ) .PP Greater-than: > .PP Hash: # .PP Period: . .PP Bang: ! .PP Plus: + .PP Minus: - .HLINE .SH 1 Links .pdfhref O 1 "Links" .pdfhref M "links" .SH 2 Explicit .pdfhref O 2 "Explicit" .pdfhref M "explicit" .LP Just a \c .pdfhref W -D "/url/" -A "\c" \ -- "URL" \&. .PP \c .pdfhref W -D "/url/" -A "\c" \ -- "URL and title" \&. .PP \c .pdfhref W -D "/url/" -A "\c" \ -- "URL and title" \&. .PP \c .pdfhref W -D "/url/" -A "\c" \ -- "URL and title" \&. .PP \c .pdfhref W -D "/url/" -A "\c" \ -- "URL and title" \& .PP \c .pdfhref W -D "/url/" -A "\c" \ -- "URL and title" \& .PP \c .pdfhref W -D "/url/with_underscore" -A "\c" \ -- "with_underscore" \& .PP \c .pdfhref W -D "mailto:nobody%40nowhere.net" -A "\c" \ -- "Email link" \& .PP \c .pdfhref W -D "" -A "\c" \ -- "Empty" \&. .SH 2 Reference .pdfhref O 2 "Reference" .pdfhref M "reference" .LP Foo \c .pdfhref W -D "/url/" -A "\c" \ -- "bar" \&. .PP With \c .pdfhref W -D "/url/" -A "\c" \ -- "embedded [brackets]" \&. .PP \c .pdfhref W -D "/url/" -A "\c" \ -- "b" \& by itself should be a link. .PP Indented \c .pdfhref W -D "/url" -A "\c" \ -- "once" \&. .PP Indented \c .pdfhref W -D "/url" -A "\c" \ -- "twice" \&. .PP Indented \c .pdfhref W -D "/url" -A "\c" \ -- "thrice" \&. .PP This should [not][] be a link. .IP .nf \f[C] [not]: /url \f[] .fi .LP Foo \c .pdfhref W -D "/url/" -A "\c" \ -- "bar" \&. .PP Foo \c .pdfhref W -D "/url/" -A "\c" \ -- "biz" \&. .SH 2 With ampersands .pdfhref O 2 "With ampersands" .pdfhref M "with-ampersands" .LP Here\[cq]s a \c .pdfhref W -D "http://example.com/?foo=1&bar=2" -A "\c" \ -- "link with an ampersand in the URL" \&. .PP Here\[cq]s a link with an amersand in the link text: \c .pdfhref W -D "http://att.com/" -A "\c" \ -- "AT&T" \&. .PP Here\[cq]s an \c .pdfhref W -D "/script?foo=1&bar=2" -A "\c" \ -- "inline link" \&. .PP Here\[cq]s an \c .pdfhref W -D "/script?foo=1&bar=2" -A "\c" \ -- "inline link in pointy braces" \&. .SH 2 Autolinks .pdfhref O 2 "Autolinks" .pdfhref M "autolinks" .LP With an ampersand: \c .pdfhref W -D "http://example.com/?foo=1&bar=2" -A "\c" \ -- "http://example.com/?foo=1&bar=2" \& .IP \[bu] 3 In a list? .IP \[bu] 3 \c .pdfhref W -D "http://example.com/" -A "\c" \ -- "http://example.com/" \& .IP \[bu] 3 It should. .LP An e-mail address: \c .pdfhref W -D "mailto:nobody%40nowhere.net" -A "\c" \ -- "nobody\[at]nowhere.net" \& .QS .LP Blockquoted: \c .pdfhref W -D "http://example.com/" -A "\c" \ -- "http://example.com/" \& .QE .LP Auto-links should not occur here: \f[C]\f[R] .IP .nf \f[C] or here: \f[] .fi .HLINE .SH 1 Images .pdfhref O 1 "Images" .pdfhref M "images" .LP From \[lq]Voyage dans la Lune\[rq] by Georges Melies (1902): [IMAGE: lalune] .LP Here is a movie [IMAGE: movie] icon. .HLINE .SH 1 Footnotes .pdfhref O 1 "Footnotes" .pdfhref M "footnotes" .LP Here is a footnote reference,\** .FS Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document. .FE and another.\** .FS Here\[cq]s the long note. This one contains multiple blocks. .PP Subsequent blocks are indented to show that they belong to the footnote (as with list items). .IP .nf \f[C] { } \f[] .fi .LP If you want, you can indent every line, but you can also be lazy and just indent the first line of each block. .FE This should \f[I]not\f[R] be a footnote reference, because it contains a space.[\[ha]my note] Here is an inline note.\** .FS This is \f[I]easier\f[R] to type. Inline notes may contain \c .pdfhref W -D "http://google.com" -A "\c" \ -- "links" \& and \f[C]]\f[R] verbatim characters, as well as [bracketed text]. .FE .QS .LP Notes can go in quotes.\** .FS In quote. .FE .QE .IP " 1." 4 And in list items.\** .FS In list. .FE .LP This paragraph should not be part of the note, as it is not indented. .pdfsync pandoc-3.1.3/test/writer.muse0000644000000000000000000002420607346545000014345 0ustar0000000000000000#author John MacFarlane; Anonymous #title Pandoc Test Suite #date July 17, 2006 This is a set of tests for pandoc. Most of them are adapted from John Gruber’s markdown test suite. ---- * Headers ** Level 2 with an [[/url][embedded link]] *** Level 3 with *emphasis* **** Level 4 ***** Level 5 * Level 1 ** Level 2 with *emphasis* *** Level 3 with no blank line ** Level 2 with no blank line ---- * Paragraphs Here’s a regular paragraph. In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item. Here’s one with a bullet. * criminey. There should be a hard line break
                here. ---- * Block Quotes E-mail style: This is a block quote. It is pretty short. Code in a block quote: sub status { print "working"; } A list: 1. item one 2. item two Nested block quotes: nested nested This should not be a block quote: 2 > 1. And a following paragraph. ---- * Code Blocks Code: ---- (should be four hyphens) sub status { print "working"; } this code block is indented by one tab And: this code block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{ ---- * Lists ** Unordered Asterisks tight: - asterisk 1 - asterisk 2 - asterisk 3 Asterisks loose: - asterisk 1 - asterisk 2 - asterisk 3 Pluses tight: - Plus 1 - Plus 2 - Plus 3 Pluses loose: - Plus 1 - Plus 2 - Plus 3 Minuses tight: - Minus 1 - Minus 2 - Minus 3 Minuses loose: - Minus 1 - Minus 2 - Minus 3 ** Ordered Tight: 1. First 2. Second 3. Third and: 1. One 2. Two 3. Three Loose using tabs: 1. First 2. Second 3. Third and using spaces: 1. One 2. Two 3. Three Multiple paragraphs: 1. Item 1, graf one. Item 1. graf two. The quick brown fox jumped over the lazy dog’s back. 2. Item 2. 3. Item 3. ** Nested - Tab - Tab - Tab Here’s another: 1. First 2. Second: - Fee - Fie - Foe 3. Third Same thing but with paragraphs: 1. First 2. Second: - Fee - Fie - Foe 3. Third ** Tabs and spaces - this is a list item indented with tabs - this is a list item indented with spaces - this is an example list item indented with tabs - this is an example list item indented with spaces ** Fancy list markers 2. begins with 2 3. and now 3 with a continuation iv. sublist with roman numerals, starting with 4 v. more items A. a subsublist B. a subsublist Nesting: A. Upper Alpha I. Upper Roman. 6. Decimal start with 6 c. Lower alpha with paren Autonumbering: 1. Autonumber. 2. More. 1. Nested. Should not be a list item: M.A. 2007 B. Williams ---- * Definition Lists Tight using spaces: apple :: red fruit orange :: orange fruit banana :: yellow fruit Tight using tabs: apple :: red fruit orange :: orange fruit banana :: yellow fruit Loose: apple :: red fruit orange :: orange fruit banana :: yellow fruit Multiple blocks with italics: *apple* :: red fruit contains seeds, crisp, pleasant to taste *orange* :: orange fruit { orange code block } orange block quote Multiple definitions, tight: apple :: red fruit :: computer orange :: orange fruit :: bank Multiple definitions, loose: apple :: red fruit :: computer orange :: orange fruit :: bank Blank line after term, indented marker, alternate markers: apple :: red fruit :: computer orange :: orange fruit 1. sublist 2. sublist * HTML Blocks Simple block on one line: foo And nested without indentation: foo bar Interpreted markdown in a table:
                This is *emphasized* And this is **strong**
                Here’s a simple block: foo This should be a code block, though:
                foo
                As should this:
                foo
                Now, nested: foo This should just be an HTML comment: Multiline: Code block: Just plain comment, with trailing spaces on the line: Code:
                Hr’s:








                ---- * Inline Markup This is *emphasized*, and so *is this*. This is **strong**, and so **is this**. An *[[/url][emphasized link]]*. ***This is strong and em.*** So is ***this*** word. ***This is strong and em.*** So is ***this*** word. This is code: =>=, =$=, =\=, =\$=, ==. This is *strikeout*. Superscripts: abcd a*hello* ahello there. Subscripts: H2O, H23O, Hmany of themO. These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d. ---- * Smart quotes, ellipses, dashes “Hello,” said the spider. “‘Shelob’ is my name.” ‘A’, ‘B’, and ‘C’ are letters. ‘Oak,’ ‘elm,’ and ‘beech’ are names of trees. So is ‘pine.’ ‘He said, “I want to go.”’ Were you alive in the 70’s? Here is some quoted ‘=code=’ and a “[[http://example.com/?foo=1&bar=2][quoted link]]”. Some dashes: one—two — three—four — five. Dashes between numbers: 5–7, 255–66, 1987–1999. Ellipses…and…and…. ---- * LaTeX - \cite[22-23]{smith.1899} - 2 + 2 = 4 - *x* ∈ *y* - *α* ∧ *ω* - 223 - *p*-Tree - Here’s some display math: $$\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$$ - Here’s one that has a line break in it: *α* + *ω* × *x*2. These shouldn’t be math: - To get the famous equation, write $e = mc^2$. - $22,000 is a *lot* of money. So is $34,000. (It worked if “lot” is emphasized.) - Shoes ($20) and socks ($5). - Escaped =$=: $73 *this should be emphasized* 23$. Here’s a LaTeX table: \begin{tabular}{|l|l|}\hline Animal & Number \\ \hline Dog & 2 \\ Cat & 1 \\ \hline \end{tabular} ---- * Special Characters Here is some unicode: - I hat: Î - o umlaut: ö - section: § - set membership: ∈ - copyright: © AT&T has an ampersand in their name. AT&T is another way to write it. This & that. 4 < 5. 6 > 5. Backslash: \ Backtick: ` Asterisk: * Underscore: _ Left brace: { Right brace: } Left bracket: [ Right bracket: ] Left paren: ( Right paren: ) Greater-than: > Hash: # Period: . Bang: ! Plus: + Minus: - ---- * Links ** Explicit Just a [[/url/][URL]]. [[/url/][URL and title]]. [[/url/][URL and title]]. [[/url/][URL and title]]. [[/url/][URL and title]] [[/url/][URL and title]] [[/url/with_underscore][with_underscore]] [[mailto:nobody@nowhere.net][Email link]] [[][Empty]]. ** Reference Foo [[/url/][bar]]. With [[/url/][embedded [brackets]]]. [[/url/][b]] by itself should be a link. Indented [[/url][once]]. Indented [[/url][twice]]. Indented [[/url][thrice]]. This should [not][] be a link. [not]: /url Foo [[/url/][bar]]. Foo [[/url/][biz]]. ** With ampersands Here’s a [[http://example.com/?foo=1&bar=2][link with an ampersand in the URL]]. Here’s a link with an amersand in the link text: [[http://att.com/][AT&T]]. Here’s an [[/script?foo=1&bar=2][inline link]]. Here’s an [[/script?foo=1&bar=2][inline link in pointy braces]]. ** Autolinks With an ampersand: [[http://example.com/?foo=1&bar=2]] - In a list? - [[http://example.com/]] - It should. An e-mail address: [[mailto:nobody@nowhere.net][nobody@nowhere.net]] Blockquoted: [[http://example.com/]] Auto-links should not occur here: == or here: ---- * Images From “Voyage dans la Lune” by Georges Melies (1902): [[lalune.jpg][Voyage dans la Lune]] lalune Here is a movie [[movie.jpg][movie]] icon. ---- * Footnotes Here is a footnote reference,[1] and another.[2] This should *not* be a footnote reference, because it contains a space.[^my note] Here is an inline note.[3] Notes can go in quotes.[4] 1. And in list items.[5] This paragraph should not be part of the note, as it is not indented. [1] Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document. [2] Here’s the long note. This one contains multiple blocks. Subsequent blocks are indented to show that they belong to the footnote (as with list items). { } If you want, you can indent every line, but you can also be lazy and just indent the first line of each block. [3] This is *easier* to type. Inline notes may contain [[http://google.com][links]] and =]= verbatim characters, as well as [bracketed text]. [4] In quote. [5] In list. pandoc-3.1.3/test/writer.native0000644000000000000000000014175307346545000014671 0ustar0000000000000000Pandoc Meta { unMeta = fromList [ ( "author" , MetaList [ MetaInlines [ Str "John" , Space , Str "MacFarlane" ] , MetaInlines [ Str "Anonymous" ] ] ) , ( "date" , MetaInlines [ Str "July" , Space , Str "17," , Space , Str "2006" ] ) , ( "title" , MetaInlines [ Str "Pandoc" , Space , Str "Test" , Space , Str "Suite" ] ) ] } [ Para [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "set" , Space , Str "of" , Space , Str "tests" , Space , Str "for" , Space , Str "pandoc." , Space , Str "Most" , Space , Str "of" , Space , Str "them" , Space , Str "are" , Space , Str "adapted" , Space , Str "from" , SoftBreak , Str "John" , Space , Str "Gruber\8217s" , Space , Str "markdown" , Space , Str "test" , Space , Str "suite." ] , HorizontalRule , Header 1 ( "headers" , [] , [] ) [ Str "Headers" ] , Header 2 ( "level-2-with-an-embedded-link" , [] , [] ) [ Str "Level" , Space , Str "2" , Space , Str "with" , Space , Str "an" , Space , Link ( "" , [] , [] ) [ Str "embedded" , Space , Str "link" ] ( "/url" , "" ) ] , Header 3 ( "level-3-with-emphasis" , [] , [] ) [ Str "Level" , Space , Str "3" , Space , Str "with" , Space , Emph [ Str "emphasis" ] ] , Header 4 ( "level-4" , [] , [] ) [ Str "Level" , Space , Str "4" ] , Header 5 ( "level-5" , [] , [] ) [ Str "Level" , Space , Str "5" ] , Header 1 ( "level-1" , [] , [] ) [ Str "Level" , Space , Str "1" ] , Header 2 ( "level-2-with-emphasis" , [] , [] ) [ Str "Level" , Space , Str "2" , Space , Str "with" , Space , Emph [ Str "emphasis" ] ] , Header 3 ( "level-3" , [] , [] ) [ Str "Level" , Space , Str "3" ] , Para [ Str "with" , Space , Str "no" , Space , Str "blank" , Space , Str "line" ] , Header 2 ( "level-2" , [] , [] ) [ Str "Level" , Space , Str "2" ] , Para [ Str "with" , Space , Str "no" , Space , Str "blank" , Space , Str "line" ] , HorizontalRule , Header 1 ( "paragraphs" , [] , [] ) [ Str "Paragraphs" ] , Para [ Str "Here\8217s" , Space , Str "a" , Space , Str "regular" , Space , Str "paragraph." ] , Para [ Str "In" , Space , Str "Markdown" , Space , Str "1.0.0" , Space , Str "and" , Space , Str "earlier." , Space , Str "Version" , SoftBreak , Str "8." , Space , Str "This" , Space , Str "line" , Space , Str "turns" , Space , Str "into" , Space , Str "a" , Space , Str "list" , Space , Str "item." , SoftBreak , Str "Because" , Space , Str "a" , Space , Str "hard-wrapped" , Space , Str "line" , Space , Str "in" , Space , Str "the" , SoftBreak , Str "middle" , Space , Str "of" , Space , Str "a" , Space , Str "paragraph" , Space , Str "looked" , Space , Str "like" , Space , Str "a" , SoftBreak , Str "list" , Space , Str "item." ] , Para [ Str "Here\8217s" , Space , Str "one" , Space , Str "with" , Space , Str "a" , Space , Str "bullet." , SoftBreak , Str "*" , Space , Str "criminey." ] , Para [ Str "There" , Space , Str "should" , Space , Str "be" , Space , Str "a" , Space , Str "hard" , Space , Str "line" , Space , Str "break" , LineBreak , Str "here." ] , HorizontalRule , Header 1 ( "block-quotes" , [] , [] ) [ Str "Block" , Space , Str "Quotes" ] , Para [ Str "E-mail" , Space , Str "style:" ] , BlockQuote [ Para [ Str "This" , Space , Str "is" , Space , Str "a" , Space , Str "block" , Space , Str "quote." , SoftBreak , Str "It" , Space , Str "is" , Space , Str "pretty" , Space , Str "short." ] ] , BlockQuote [ Para [ Str "Code" , Space , Str "in" , Space , Str "a" , Space , Str "block" , Space , Str "quote:" ] , CodeBlock ( "" , [] , [] ) "sub status {\n print \"working\";\n}" , Para [ Str "A" , Space , Str "list:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Plain [ Str "item" , Space , Str "one" ] ] , [ Plain [ Str "item" , Space , Str "two" ] ] ] , Para [ Str "Nested" , Space , Str "block" , Space , Str "quotes:" ] , BlockQuote [ Para [ Str "nested" ] ] , BlockQuote [ Para [ Str "nested" ] ] ] , Para [ Str "This" , Space , Str "should" , Space , Str "not" , Space , Str "be" , Space , Str "a" , Space , Str "block" , Space , Str "quote:" , Space , Str "2" , SoftBreak , Str ">" , Space , Str "1." ] , Para [ Str "And" , Space , Str "a" , Space , Str "following" , Space , Str "paragraph." ] , HorizontalRule , Header 1 ( "code-blocks" , [] , [] ) [ Str "Code" , Space , Str "Blocks" ] , Para [ Str "Code:" ] , CodeBlock ( "" , [] , [] ) "---- (should be four hyphens)\n\nsub status {\n print \"working\";\n}\n\nthis code block is indented by one tab" , Para [ Str "And:" ] , CodeBlock ( "" , [] , [] ) " this code block is indented by two tabs\n\nThese should not be escaped: \\$ \\\\ \\> \\[ \\{" , HorizontalRule , Header 1 ( "lists" , [] , [] ) [ Str "Lists" ] , Header 2 ( "unordered" , [] , [] ) [ Str "Unordered" ] , Para [ Str "Asterisks" , Space , Str "tight:" ] , BulletList [ [ Plain [ Str "asterisk" , Space , Str "1" ] ] , [ Plain [ Str "asterisk" , Space , Str "2" ] ] , [ Plain [ Str "asterisk" , Space , Str "3" ] ] ] , Para [ Str "Asterisks" , Space , Str "loose:" ] , BulletList [ [ Para [ Str "asterisk" , Space , Str "1" ] ] , [ Para [ Str "asterisk" , Space , Str "2" ] ] , [ Para [ Str "asterisk" , Space , Str "3" ] ] ] , Para [ Str "Pluses" , Space , Str "tight:" ] , BulletList [ [ Plain [ Str "Plus" , Space , Str "1" ] ] , [ Plain [ Str "Plus" , Space , Str "2" ] ] , [ Plain [ Str "Plus" , Space , Str "3" ] ] ] , Para [ Str "Pluses" , Space , Str "loose:" ] , BulletList [ [ Para [ Str "Plus" , Space , Str "1" ] ] , [ Para [ Str "Plus" , Space , Str "2" ] ] , [ Para [ Str "Plus" , Space , Str "3" ] ] ] , Para [ Str "Minuses" , Space , Str "tight:" ] , BulletList [ [ Plain [ Str "Minus" , Space , Str "1" ] ] , [ Plain [ Str "Minus" , Space , Str "2" ] ] , [ Plain [ Str "Minus" , Space , Str "3" ] ] ] , Para [ Str "Minuses" , Space , Str "loose:" ] , BulletList [ [ Para [ Str "Minus" , Space , Str "1" ] ] , [ Para [ Str "Minus" , Space , Str "2" ] ] , [ Para [ Str "Minus" , Space , Str "3" ] ] ] , Header 2 ( "ordered" , [] , [] ) [ Str "Ordered" ] , Para [ Str "Tight:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Plain [ Str "First" ] ] , [ Plain [ Str "Second" ] ] , [ Plain [ Str "Third" ] ] ] , Para [ Str "and:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Plain [ Str "One" ] ] , [ Plain [ Str "Two" ] ] , [ Plain [ Str "Three" ] ] ] , Para [ Str "Loose" , Space , Str "using" , Space , Str "tabs:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Para [ Str "First" ] ] , [ Para [ Str "Second" ] ] , [ Para [ Str "Third" ] ] ] , Para [ Str "and" , Space , Str "using" , Space , Str "spaces:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Para [ Str "One" ] ] , [ Para [ Str "Two" ] ] , [ Para [ Str "Three" ] ] ] , Para [ Str "Multiple" , Space , Str "paragraphs:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Para [ Str "Item" , Space , Str "1," , Space , Str "graf" , Space , Str "one." ] , Para [ Str "Item" , Space , Str "1." , Space , Str "graf" , Space , Str "two." , Space , Str "The" , Space , Str "quick" , Space , Str "brown" , Space , Str "fox" , Space , Str "jumped" , Space , Str "over" , Space , Str "the" , Space , Str "lazy" , Space , Str "dog\8217s" , SoftBreak , Str "back." ] ] , [ Para [ Str "Item" , Space , Str "2." ] ] , [ Para [ Str "Item" , Space , Str "3." ] ] ] , Header 2 ( "nested" , [] , [] ) [ Str "Nested" ] , BulletList [ [ Plain [ Str "Tab" ] , BulletList [ [ Plain [ Str "Tab" ] , BulletList [ [ Plain [ Str "Tab" ] ] ] ] ] ] ] , Para [ Str "Here\8217s" , Space , Str "another:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Plain [ Str "First" ] ] , [ Plain [ Str "Second:" ] , BulletList [ [ Plain [ Str "Fee" ] ] , [ Plain [ Str "Fie" ] ] , [ Plain [ Str "Foe" ] ] ] ] , [ Plain [ Str "Third" ] ] ] , Para [ Str "Same" , Space , Str "thing" , Space , Str "but" , Space , Str "with" , Space , Str "paragraphs:" ] , OrderedList ( 1 , Decimal , Period ) [ [ Para [ Str "First" ] ] , [ Para [ Str "Second:" ] , BulletList [ [ Plain [ Str "Fee" ] ] , [ Plain [ Str "Fie" ] ] , [ Plain [ Str "Foe" ] ] ] ] , [ Para [ Str "Third" ] ] ] , Header 2 ( "tabs-and-spaces" , [] , [] ) [ Str "Tabs" , Space , Str "and" , Space , Str "spaces" ] , BulletList [ [ Para [ Str "this" , Space , Str "is" , Space , Str "a" , Space , Str "list" , Space , Str "item" , SoftBreak , Str "indented" , Space , Str "with" , Space , Str "tabs" ] ] , [ Para [ Str "this" , Space , Str "is" , Space , Str "a" , Space , Str "list" , Space , Str "item" , SoftBreak , Str "indented" , Space , Str "with" , Space , Str "spaces" ] , BulletList [ [ Para [ Str "this" , Space , Str "is" , Space , Str "an" , Space , Str "example" , Space , Str "list" , Space , Str "item" , SoftBreak , Str "indented" , Space , Str "with" , Space , Str "tabs" ] ] , [ Para [ Str "this" , Space , Str "is" , Space , Str "an" , Space , Str "example" , Space , Str "list" , Space , Str "item" , SoftBreak , Str "indented" , Space , Str "with" , Space , Str "spaces" ] ] ] ] ] , Header 2 ( "fancy-list-markers" , [] , [] ) [ Str "Fancy" , Space , Str "list" , Space , Str "markers" ] , OrderedList ( 2 , Decimal , TwoParens ) [ [ Para [ Str "begins" , Space , Str "with" , Space , Str "2" ] ] , [ Para [ Str "and" , Space , Str "now" , Space , Str "3" ] , Para [ Str "with" , Space , Str "a" , Space , Str "continuation" ] , OrderedList ( 4 , LowerRoman , Period ) [ [ Plain [ Str "sublist" , Space , Str "with" , Space , Str "roman" , Space , Str "numerals," , SoftBreak , Str "starting" , Space , Str "with" , Space , Str "4" ] ] , [ Plain [ Str "more" , Space , Str "items" ] , OrderedList ( 1 , UpperAlpha , TwoParens ) [ [ Plain [ Str "a" , Space , Str "subsublist" ] ] , [ Plain [ Str "a" , Space , Str "subsublist" ] ] ] ] ] ] ] , Para [ Str "Nesting:" ] , OrderedList ( 1 , UpperAlpha , Period ) [ [ Plain [ Str "Upper" , Space , Str "Alpha" ] , OrderedList ( 1 , UpperRoman , Period ) [ [ Plain [ Str "Upper" , Space , Str "Roman." ] , OrderedList ( 6 , Decimal , TwoParens ) [ [ Plain [ Str "Decimal" , Space , Str "start" , Space , Str "with" , Space , Str "6" ] , OrderedList ( 3 , LowerAlpha , OneParen ) [ [ Plain [ Str "Lower" , Space , Str "alpha" , Space , Str "with" , Space , Str "paren" ] ] ] ] ] ] ] ] ] , Para [ Str "Autonumbering:" ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Autonumber." ] ] , [ Plain [ Str "More." ] , OrderedList ( 1 , DefaultStyle , DefaultDelim ) [ [ Plain [ Str "Nested." ] ] ] ] ] , Para [ Str "Should" , Space , Str "not" , Space , Str "be" , Space , Str "a" , Space , Str "list" , Space , Str "item:" ] , Para [ Str "M.A.\160\&2007" ] , Para [ Str "B." , Space , Str "Williams" ] , HorizontalRule , Header 1 ( "definition-lists" , [] , [] ) [ Str "Definition" , Space , Str "Lists" ] , Para [ Str "Tight" , Space , Str "using" , Space , Str "spaces:" ] , DefinitionList [ ( [ Str "apple" ] , [ [ Plain [ Str "red" , Space , Str "fruit" ] ] ] ) , ( [ Str "orange" ] , [ [ Plain [ Str "orange" , Space , Str "fruit" ] ] ] ) , ( [ Str "banana" ] , [ [ Plain [ Str "yellow" , Space , Str "fruit" ] ] ] ) ] , Para [ Str "Tight" , Space , Str "using" , Space , Str "tabs:" ] , DefinitionList [ ( [ Str "apple" ] , [ [ Plain [ Str "red" , Space , Str "fruit" ] ] ] ) , ( [ Str "orange" ] , [ [ Plain [ Str "orange" , Space , Str "fruit" ] ] ] ) , ( [ Str "banana" ] , [ [ Plain [ Str "yellow" , Space , Str "fruit" ] ] ] ) ] , Para [ Str "Loose:" ] , DefinitionList [ ( [ Str "apple" ] , [ [ Para [ Str "red" , Space , Str "fruit" ] ] ] ) , ( [ Str "orange" ] , [ [ Para [ Str "orange" , Space , Str "fruit" ] ] ] ) , ( [ Str "banana" ] , [ [ Para [ Str "yellow" , Space , Str "fruit" ] ] ] ) ] , Para [ Str "Multiple" , Space , Str "blocks" , Space , Str "with" , Space , Str "italics:" ] , DefinitionList [ ( [ Emph [ Str "apple" ] ] , [ [ Para [ Str "red" , Space , Str "fruit" ] , Para [ Str "contains" , Space , Str "seeds," , SoftBreak , Str "crisp," , Space , Str "pleasant" , Space , Str "to" , Space , Str "taste" ] ] ] ) , ( [ Emph [ Str "orange" ] ] , [ [ Para [ Str "orange" , Space , Str "fruit" ] , CodeBlock ( "" , [] , [] ) "{ orange code block }" , BlockQuote [ Para [ Str "orange" , Space , Str "block" , Space , Str "quote" ] ] ] ] ) ] , Para [ Str "Multiple" , Space , Str "definitions," , Space , Str "tight:" ] , DefinitionList [ ( [ Str "apple" ] , [ [ Plain [ Str "red" , Space , Str "fruit" ] ] , [ Plain [ Str "computer" ] ] ] ) , ( [ Str "orange" ] , [ [ Plain [ Str "orange" , Space , Str "fruit" ] ] , [ Plain [ Str "bank" ] ] ] ) ] , Para [ Str "Multiple" , Space , Str "definitions," , Space , Str "loose:" ] , DefinitionList [ ( [ Str "apple" ] , [ [ Para [ Str "red" , Space , Str "fruit" ] ] , [ Para [ Str "computer" ] ] ] ) , ( [ Str "orange" ] , [ [ Para [ Str "orange" , Space , Str "fruit" ] ] , [ Para [ Str "bank" ] ] ] ) ] , Para [ Str "Blank" , Space , Str "line" , Space , Str "after" , Space , Str "term," , Space , Str "indented" , Space , Str "marker," , Space , Str "alternate" , Space , Str "markers:" ] , DefinitionList [ ( [ Str "apple" ] , [ [ Para [ Str "red" , Space , Str "fruit" ] ] , [ Para [ Str "computer" ] ] ] ) , ( [ Str "orange" ] , [ [ Para [ Str "orange" , Space , Str "fruit" ] , OrderedList ( 1 , Decimal , Period ) [ [ Plain [ Str "sublist" ] ] , [ Plain [ Str "sublist" ] ] ] ] ] ) ] , Header 1 ( "html-blocks" , [] , [] ) [ Str "HTML" , Space , Str "Blocks" ] , Para [ Str "Simple" , Space , Str "block" , Space , Str "on" , Space , Str "one" , Space , Str "line:" ] , Div ( "" , [] , [] ) [ Plain [ Str "foo" ] ] , Para [ Str "And" , Space , Str "nested" , Space , Str "without" , Space , Str "indentation:" ] , Div ( "" , [] , [] ) [ Div ( "" , [] , [] ) [ Div ( "" , [] , [] ) [ Para [ Str "foo" ] ] ] , Div ( "" , [] , [] ) [ Plain [ Str "bar" ] ] ] , Para [ Str "Interpreted" , Space , Str "markdown" , Space , Str "in" , Space , Str "a" , Space , Str "table:" ] , RawBlock (Format "html") "" , RawBlock (Format "html") "" , RawBlock (Format "html") "" , RawBlock (Format "html") "" , RawBlock (Format "html") "" , RawBlock (Format "html") "
                " , Plain [ Str "This" , Space , Str "is" , Space , Emph [ Str "emphasized" ] ] , RawBlock (Format "html") "" , Plain [ Str "And" , Space , Str "this" , Space , Str "is" , Space , Strong [ Str "strong" ] ] , RawBlock (Format "html") "
                " , RawBlock (Format "html") "" , Para [ Str "Here\8217s" , Space , Str "a" , Space , Str "simple" , Space , Str "block:" ] , Div ( "" , [] , [] ) [ Para [ Str "foo" ] ] , Para [ Str "This" , Space , Str "should" , Space , Str "be" , Space , Str "a" , Space , Str "code" , Space , Str "block," , Space , Str "though:" ] , CodeBlock ( "" , [] , [] ) "
                \n foo\n
                " , Para [ Str "As" , Space , Str "should" , Space , Str "this:" ] , CodeBlock ( "" , [] , [] ) "
                foo
                " , Para [ Str "Now," , Space , Str "nested:" ] , Div ( "" , [] , [] ) [ Div ( "" , [] , [] ) [ Div ( "" , [] , [] ) [ Plain [ Str "foo" ] ] ] ] , Para [ Str "This" , Space , Str "should" , Space , Str "just" , Space , Str "be" , Space , Str "an" , Space , Str "HTML" , Space , Str "comment:" ] , RawBlock (Format "html") "" , Para [ Str "Multiline:" ] , RawBlock (Format "html") "" , RawBlock (Format "html") "" , Para [ Str "Code" , Space , Str "block:" ] , CodeBlock ( "" , [] , [] ) "" , Para [ Str "Just" , Space , Str "plain" , Space , Str "comment," , Space , Str "with" , Space , Str "trailing" , Space , Str "spaces" , Space , Str "on" , Space , Str "the" , Space , Str "line:" ] , RawBlock (Format "html") "" , Para [ Str "Code:" ] , CodeBlock ( "" , [] , [] ) "
                " , Para [ Str "Hr\8217s:" ] , RawBlock (Format "html") "
                " , RawBlock (Format "html") "
                " , RawBlock (Format "html") "
                " , RawBlock (Format "html") "
                " , RawBlock (Format "html") "
                " , RawBlock (Format "html") "
                " , RawBlock (Format "html") "
                " , RawBlock (Format "html") "
                " , RawBlock (Format "html") "
                " , HorizontalRule , Header 1 ( "inline-markup" , [] , [] ) [ Str "Inline" , Space , Str "Markup" ] , Para [ Str "This" , Space , Str "is" , Space , Emph [ Str "emphasized" ] , Str "," , Space , Str "and" , Space , Str "so" , Space , Emph [ Str "is" , Space , Str "this" ] , Str "." ] , Para [ Str "This" , Space , Str "is" , Space , Strong [ Str "strong" ] , Str "," , Space , Str "and" , Space , Str "so" , Space , Strong [ Str "is" , Space , Str "this" ] , Str "." ] , Para [ Str "An" , Space , Emph [ Link ( "" , [] , [] ) [ Str "emphasized" , Space , Str "link" ] ( "/url" , "" ) ] , Str "." ] , Para [ Strong [ Emph [ Str "This" , Space , Str "is" , Space , Str "strong" , Space , Str "and" , Space , Str "em." ] ] ] , Para [ Str "So" , Space , Str "is" , Space , Strong [ Emph [ Str "this" ] ] , Space , Str "word." ] , Para [ Strong [ Emph [ Str "This" , Space , Str "is" , Space , Str "strong" , Space , Str "and" , Space , Str "em." ] ] ] , Para [ Str "So" , Space , Str "is" , Space , Strong [ Emph [ Str "this" ] ] , Space , Str "word." ] , Para [ Str "This" , Space , Str "is" , Space , Str "code:" , Space , Code ( "" , [] , [] ) ">" , Str "," , Space , Code ( "" , [] , [] ) "$" , Str "," , Space , Code ( "" , [] , [] ) "\\" , Str "," , Space , Code ( "" , [] , [] ) "\\$" , Str "," , Space , Code ( "" , [] , [] ) "" , Str "." ] , Para [ Strikeout [ Str "This" , Space , Str "is" , Space , Emph [ Str "strikeout" ] , Str "." ] ] , Para [ Str "Superscripts:" , Space , Str "a" , Superscript [ Str "bc" ] , Str "d" , Space , Str "a" , Superscript [ Emph [ Str "hello" ] ] , Space , Str "a" , Superscript [ Str "hello\160there" ] , Str "." ] , Para [ Str "Subscripts:" , Space , Str "H" , Subscript [ Str "2" ] , Str "O," , Space , Str "H" , Subscript [ Str "23" ] , Str "O," , Space , Str "H" , Subscript [ Str "many\160of\160them" ] , Str "O." ] , Para [ Str "These" , Space , Str "should" , Space , Str "not" , Space , Str "be" , Space , Str "superscripts" , Space , Str "or" , Space , Str "subscripts," , SoftBreak , Str "because" , Space , Str "of" , Space , Str "the" , Space , Str "unescaped" , Space , Str "spaces:" , Space , Str "a^b" , Space , Str "c^d," , Space , Str "a~b" , Space , Str "c~d." ] , HorizontalRule , Header 1 ( "smart-quotes-ellipses-dashes" , [] , [] ) [ Str "Smart" , Space , Str "quotes," , Space , Str "ellipses," , Space , Str "dashes" ] , Para [ Quoted DoubleQuote [ Str "Hello," ] , Space , Str "said" , Space , Str "the" , Space , Str "spider." , Space , Quoted DoubleQuote [ Quoted SingleQuote [ Str "Shelob" ] , Space , Str "is" , Space , Str "my" , Space , Str "name." ] ] , Para [ Quoted SingleQuote [ Str "A" ] , Str "," , Space , Quoted SingleQuote [ Str "B" ] , Str "," , Space , Str "and" , Space , Quoted SingleQuote [ Str "C" ] , Space , Str "are" , Space , Str "letters." ] , Para [ Quoted SingleQuote [ Str "Oak," ] , Space , Quoted SingleQuote [ Str "elm," ] , Space , Str "and" , Space , Quoted SingleQuote [ Str "beech" ] , Space , Str "are" , Space , Str "names" , Space , Str "of" , Space , Str "trees." , SoftBreak , Str "So" , Space , Str "is" , Space , Quoted SingleQuote [ Str "pine." ] ] , Para [ Quoted SingleQuote [ Str "He" , Space , Str "said," , Space , Quoted DoubleQuote [ Str "I" , Space , Str "want" , Space , Str "to" , Space , Str "go." ] ] , Space , Str "Were" , Space , Str "you" , Space , Str "alive" , Space , Str "in" , Space , Str "the" , SoftBreak , Str "70\8217s?" ] , Para [ Str "Here" , Space , Str "is" , Space , Str "some" , Space , Str "quoted" , Space , Quoted SingleQuote [ Code ( "" , [] , [] ) "code" ] , Space , Str "and" , Space , Str "a" , Space , Quoted DoubleQuote [ Link ( "" , [] , [] ) [ Str "quoted" , Space , Str "link" ] ( "http://example.com/?foo=1&bar=2" , "" ) ] , Str "." ] , Para [ Str "Some" , Space , Str "dashes:" , Space , Str "one\8212two" , Space , Str "\8212" , Space , Str "three\8212four" , Space , Str "\8212" , Space , Str "five." ] , Para [ Str "Dashes" , Space , Str "between" , Space , Str "numbers:" , Space , Str "5\8211\&7," , Space , Str "255\8211\&66," , Space , Str "1987\8211\&1999." ] , Para [ Str "Ellipses\8230and\8230and\8230." ] , HorizontalRule , Header 1 ( "latex" , [] , [] ) [ Str "LaTeX" ] , BulletList [ [ Plain [ RawInline (Format "tex") "\\cite[22-23]{smith.1899}" ] ] , [ Plain [ Math InlineMath "2+2=4" ] ] , [ Plain [ Math InlineMath "x \\in y" ] ] , [ Plain [ Math InlineMath "\\alpha \\wedge \\omega" ] ] , [ Plain [ Math InlineMath "223" ] ] , [ Plain [ Math InlineMath "p" , Str "-Tree" ] ] , [ Plain [ Str "Here\8217s" , Space , Str "some" , Space , Str "display" , Space , Str "math:" , SoftBreak , Math DisplayMath "\\frac{d}{dx}f(x)=\\lim_{h\\to 0}\\frac{f(x+h)-f(x)}{h}" ] ] , [ Plain [ Str "Here\8217s" , Space , Str "one" , Space , Str "that" , Space , Str "has" , Space , Str "a" , Space , Str "line" , Space , Str "break" , Space , Str "in" , Space , Str "it:" , Space , Math InlineMath "\\alpha + \\omega \\times x^2" , Str "." ] ] ] , Para [ Str "These" , Space , Str "shouldn\8217t" , Space , Str "be" , Space , Str "math:" ] , BulletList [ [ Plain [ Str "To" , Space , Str "get" , Space , Str "the" , Space , Str "famous" , Space , Str "equation," , Space , Str "write" , Space , Code ( "" , [] , [] ) "$e = mc^2$" , Str "." ] ] , [ Plain [ Str "$22,000" , Space , Str "is" , Space , Str "a" , Space , Emph [ Str "lot" ] , Space , Str "of" , Space , Str "money." , Space , Str "So" , Space , Str "is" , Space , Str "$34,000." , SoftBreak , Str "(It" , Space , Str "worked" , Space , Str "if" , Space , Quoted DoubleQuote [ Str "lot" ] , Space , Str "is" , Space , Str "emphasized.)" ] ] , [ Plain [ Str "Shoes" , Space , Str "($20)" , Space , Str "and" , Space , Str "socks" , Space , Str "($5)." ] ] , [ Plain [ Str "Escaped" , Space , Code ( "" , [] , [] ) "$" , Str ":" , Space , Str "$73" , Space , Emph [ Str "this" , Space , Str "should" , Space , Str "be" , Space , Str "emphasized" ] , Space , Str "23$." ] ] ] , Para [ Str "Here\8217s" , Space , Str "a" , Space , Str "LaTeX" , Space , Str "table:" ] , RawBlock (Format "tex") "\\begin{tabular}{|l|l|}\\hline\nAnimal & Number \\\\ \\hline\nDog & 2 \\\\\nCat & 1 \\\\ \\hline\n\\end{tabular}" , HorizontalRule , Header 1 ( "special-characters" , [] , [] ) [ Str "Special" , Space , Str "Characters" ] , Para [ Str "Here" , Space , Str "is" , Space , Str "some" , Space , Str "unicode:" ] , BulletList [ [ Plain [ Str "I" , Space , Str "hat:" , Space , Str "\206" ] ] , [ Plain [ Str "o" , Space , Str "umlaut:" , Space , Str "\246" ] ] , [ Plain [ Str "section:" , Space , Str "\167" ] ] , [ Plain [ Str "set" , Space , Str "membership:" , Space , Str "\8712" ] ] , [ Plain [ Str "copyright:" , Space , Str "\169" ] ] ] , Para [ Str "AT&T" , Space , Str "has" , Space , Str "an" , Space , Str "ampersand" , Space , Str "in" , Space , Str "their" , Space , Str "name." ] , Para [ Str "AT&T" , Space , Str "is" , Space , Str "another" , Space , Str "way" , Space , Str "to" , Space , Str "write" , Space , Str "it." ] , Para [ Str "This" , Space , Str "&" , Space , Str "that." ] , Para [ Str "4" , Space , Str "<" , Space , Str "5." ] , Para [ Str "6" , Space , Str ">" , Space , Str "5." ] , Para [ Str "Backslash:" , Space , Str "\\" ] , Para [ Str "Backtick:" , Space , Str "`" ] , Para [ Str "Asterisk:" , Space , Str "*" ] , Para [ Str "Underscore:" , Space , Str "_" ] , Para [ Str "Left" , Space , Str "brace:" , Space , Str "{" ] , Para [ Str "Right" , Space , Str "brace:" , Space , Str "}" ] , Para [ Str "Left" , Space , Str "bracket:" , Space , Str "[" ] , Para [ Str "Right" , Space , Str "bracket:" , Space , Str "]" ] , Para [ Str "Left" , Space , Str "paren:" , Space , Str "(" ] , Para [ Str "Right" , Space , Str "paren:" , Space , Str ")" ] , Para [ Str "Greater-than:" , Space , Str ">" ] , Para [ Str "Hash:" , Space , Str "#" ] , Para [ Str "Period:" , Space , Str "." ] , Para [ Str "Bang:" , Space , Str "!" ] , Para [ Str "Plus:" , Space , Str "+" ] , Para [ Str "Minus:" , Space , Str "-" ] , HorizontalRule , Header 1 ( "links" , [] , [] ) [ Str "Links" ] , Header 2 ( "explicit" , [] , [] ) [ Str "Explicit" ] , Para [ Str "Just" , Space , Str "a" , Space , Link ( "" , [] , [] ) [ Str "URL" ] ( "/url/" , "" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , Space , Str "and" , Space , Str "title" ] ( "/url/" , "title" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , Space , Str "and" , Space , Str "title" ] ( "/url/" , "title preceded by two spaces" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , Space , Str "and" , Space , Str "title" ] ( "/url/" , "title preceded by a tab" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , Space , Str "and" , Space , Str "title" ] ( "/url/" , "title with \"quotes\" in it" ) ] , Para [ Link ( "" , [] , [] ) [ Str "URL" , Space , Str "and" , Space , Str "title" ] ( "/url/" , "title with single quotes" ) ] , Para [ Link ( "" , [] , [] ) [ Str "with_underscore" ] ( "/url/with_underscore" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "Email" , Space , Str "link" ] ( "mailto:nobody@nowhere.net" , "" ) ] , Para [ Link ( "" , [] , [] ) [ Str "Empty" ] ( "" , "" ) , Str "." ] , Header 2 ( "reference" , [] , [] ) [ Str "Reference" ] , Para [ Str "Foo" , Space , Link ( "" , [] , [] ) [ Str "bar" ] ( "/url/" , "" ) , Str "." ] , Para [ Str "With" , Space , Link ( "" , [] , [] ) [ Str "embedded" , Space , Str "[brackets]" ] ( "/url/" , "" ) , Str "." ] , Para [ Link ( "" , [] , [] ) [ Str "b" ] ( "/url/" , "" ) , Space , Str "by" , Space , Str "itself" , Space , Str "should" , Space , Str "be" , Space , Str "a" , Space , Str "link." ] , Para [ Str "Indented" , Space , Link ( "" , [] , [] ) [ Str "once" ] ( "/url" , "" ) , Str "." ] , Para [ Str "Indented" , Space , Link ( "" , [] , [] ) [ Str "twice" ] ( "/url" , "" ) , Str "." ] , Para [ Str "Indented" , Space , Link ( "" , [] , [] ) [ Str "thrice" ] ( "/url" , "" ) , Str "." ] , Para [ Str "This" , Space , Str "should" , Space , Str "[not][]" , Space , Str "be" , Space , Str "a" , Space , Str "link." ] , CodeBlock ( "" , [] , [] ) "[not]: /url" , Para [ Str "Foo" , Space , Link ( "" , [] , [] ) [ Str "bar" ] ( "/url/" , "Title with \"quotes\" inside" ) , Str "." ] , Para [ Str "Foo" , Space , Link ( "" , [] , [] ) [ Str "biz" ] ( "/url/" , "Title with \"quote\" inside" ) , Str "." ] , Header 2 ( "with-ampersands" , [] , [] ) [ Str "With" , Space , Str "ampersands" ] , Para [ Str "Here\8217s" , Space , Str "a" , Space , Link ( "" , [] , [] ) [ Str "link" , Space , Str "with" , Space , Str "an" , Space , Str "ampersand" , Space , Str "in" , Space , Str "the" , Space , Str "URL" ] ( "http://example.com/?foo=1&bar=2" , "" ) , Str "." ] , Para [ Str "Here\8217s" , Space , Str "a" , Space , Str "link" , Space , Str "with" , Space , Str "an" , Space , Str "amersand" , Space , Str "in" , Space , Str "the" , Space , Str "link" , Space , Str "text:" , Space , Link ( "" , [] , [] ) [ Str "AT&T" ] ( "http://att.com/" , "AT&T" ) , Str "." ] , Para [ Str "Here\8217s" , Space , Str "an" , Space , Link ( "" , [] , [] ) [ Str "inline" , Space , Str "link" ] ( "/script?foo=1&bar=2" , "" ) , Str "." ] , Para [ Str "Here\8217s" , Space , Str "an" , Space , Link ( "" , [] , [] ) [ Str "inline" , Space , Str "link" , Space , Str "in" , Space , Str "pointy" , Space , Str "braces" ] ( "/script?foo=1&bar=2" , "" ) , Str "." ] , Header 2 ( "autolinks" , [] , [] ) [ Str "Autolinks" ] , Para [ Str "With" , Space , Str "an" , Space , Str "ampersand:" , Space , Link ( "" , [ "uri" ] , [] ) [ Str "http://example.com/?foo=1&bar=2" ] ( "http://example.com/?foo=1&bar=2" , "" ) ] , BulletList [ [ Plain [ Str "In" , Space , Str "a" , Space , Str "list?" ] ] , [ Plain [ Link ( "" , [ "uri" ] , [] ) [ Str "http://example.com/" ] ( "http://example.com/" , "" ) ] ] , [ Plain [ Str "It" , Space , Str "should." ] ] ] , Para [ Str "An" , Space , Str "e-mail" , Space , Str "address:" , Space , Link ( "" , [ "email" ] , [] ) [ Str "nobody@nowhere.net" ] ( "mailto:nobody@nowhere.net" , "" ) ] , BlockQuote [ Para [ Str "Blockquoted:" , Space , Link ( "" , [ "uri" ] , [] ) [ Str "http://example.com/" ] ( "http://example.com/" , "" ) ] ] , Para [ Str "Auto-links" , Space , Str "should" , Space , Str "not" , Space , Str "occur" , Space , Str "here:" , Space , Code ( "" , [] , [] ) "" ] , CodeBlock ( "" , [] , [] ) "or here: " , HorizontalRule , Header 1 ( "images" , [] , [] ) [ Str "Images" ] , Para [ Str "From" , Space , Quoted DoubleQuote [ Str "Voyage" , Space , Str "dans" , Space , Str "la" , Space , Str "Lune" ] , Space , Str "by" , Space , Str "Georges" , Space , Str "Melies" , Space , Str "(1902):" ] , Figure ( "" , [] , [] ) (Caption Nothing [ Plain [ Str "lalune" ] ]) [ Plain [ Image ( "" , [] , [] ) [ Str "lalune" ] ( "lalune.jpg" , "Voyage dans la Lune" ) ] ] , Para [ Str "Here" , Space , Str "is" , Space , Str "a" , Space , Str "movie" , Space , Image ( "" , [] , [] ) [ Str "movie" ] ( "movie.jpg" , "" ) , Space , Str "icon." ] , HorizontalRule , Header 1 ( "footnotes" , [] , [] ) [ Str "Footnotes" ] , Para [ Str "Here" , Space , Str "is" , Space , Str "a" , Space , Str "footnote" , Space , Str "reference," , Note [ Para [ Str "Here" , Space , Str "is" , Space , Str "the" , Space , Str "footnote." , Space , Str "It" , Space , Str "can" , Space , Str "go" , Space , Str "anywhere" , Space , Str "after" , Space , Str "the" , Space , Str "footnote" , SoftBreak , Str "reference." , Space , Str "It" , Space , Str "need" , Space , Str "not" , Space , Str "be" , Space , Str "placed" , Space , Str "at" , Space , Str "the" , Space , Str "end" , Space , Str "of" , Space , Str "the" , Space , Str "document." ] ] , Space , Str "and" , Space , Str "another." , Note [ Para [ Str "Here\8217s" , Space , Str "the" , Space , Str "long" , Space , Str "note." , Space , Str "This" , Space , Str "one" , Space , Str "contains" , Space , Str "multiple" , SoftBreak , Str "blocks." ] , Para [ Str "Subsequent" , Space , Str "blocks" , Space , Str "are" , Space , Str "indented" , Space , Str "to" , Space , Str "show" , Space , Str "that" , Space , Str "they" , Space , Str "belong" , Space , Str "to" , Space , Str "the" , SoftBreak , Str "footnote" , Space , Str "(as" , Space , Str "with" , Space , Str "list" , Space , Str "items)." ] , CodeBlock ( "" , [] , [] ) " { }" , Para [ Str "If" , Space , Str "you" , Space , Str "want," , Space , Str "you" , Space , Str "can" , Space , Str "indent" , Space , Str "every" , Space , Str "line," , Space , Str "but" , Space , Str "you" , Space , Str "can" , Space , Str "also" , Space , Str "be" , SoftBreak , Str "lazy" , Space , Str "and" , Space , Str "just" , Space , Str "indent" , Space , Str "the" , Space , Str "first" , Space , Str "line" , Space , Str "of" , Space , Str "each" , Space , Str "block." ] ] , SoftBreak , Str "This" , Space , Str "should" , Space , Emph [ Str "not" ] , Space , Str "be" , Space , Str "a" , Space , Str "footnote" , Space , Str "reference," , Space , Str "because" , Space , Str "it" , SoftBreak , Str "contains" , Space , Str "a" , Space , Str "space.[^my" , Space , Str "note]" , Space , Str "Here" , Space , Str "is" , Space , Str "an" , Space , Str "inline" , Space , Str "note." , Note [ Para [ Str "This" , SoftBreak , Str "is" , Space , Emph [ Str "easier" ] , Space , Str "to" , Space , Str "type." , Space , Str "Inline" , Space , Str "notes" , Space , Str "may" , Space , Str "contain" , SoftBreak , Link ( "" , [] , [] ) [ Str "links" ] ( "http://google.com" , "" ) , Space , Str "and" , Space , Code ( "" , [] , [] ) "]" , Space , Str "verbatim" , Space , Str "characters," , SoftBreak , Str "as" , Space , Str "well" , Space , Str "as" , Space , Str "[bracketed" , Space , Str "text]." ] ] ] , BlockQuote [ Para [ Str "Notes" , Space , Str "can" , Space , Str "go" , Space , Str "in" , Space , Str "quotes." , Note [ Para [ Str "In" , Space , Str "quote." ] ] ] ] , OrderedList ( 1 , Decimal , Period ) [ [ Plain [ Str "And" , Space , Str "in" , Space , Str "list" , Space , Str "items." , Note [ Para [ Str "In" , Space , Str "list." ] ] ] ] ] , Para [ Str "This" , Space , Str "paragraph" , Space , Str "should" , Space , Str "not" , Space , Str "be" , Space , Str "part" , Space , Str "of" , Space , Str "the" , Space , Str "note," , Space , Str "as" , Space , Str "it" , Space , Str "is" , Space , Str "not" , Space , Str "indented." ] ] pandoc-3.1.3/test/writer.opendocument0000644000000000000000000044557107346545000016110 0ustar0000000000000000 Pandoc Test Suite John MacFarlane Anonymous July 17, 2006 This is a set of tests for pandoc. Most of them are adapted from John Gruber’s markdown test suite. Headers Level 2 with an embedded link Level 3 with emphasis Level 4 Level 5 Level 1 Level 2 with emphasis Level 3 with no blank line Level 2 with no blank line Paragraphs Here’s a regular paragraph. In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item. Here’s one with a bullet. * criminey. There should be a hard line breakhere. Block Quotes E-mail style: This is a block quote. It is pretty short. Code in a block quote: sub status { print "working"; } A list: item one item two Nested block quotes: nested nested This should not be a block quote: 2 > 1. And a following paragraph. Code Blocks Code: ---- (should be four hyphens) sub status { print "working"; } this code block is indented by one tab And: this code block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{ Lists Unordered Asterisks tight: asterisk 1 asterisk 2 asterisk 3 Asterisks loose: asterisk 1 asterisk 2 asterisk 3 Pluses tight: Plus 1 Plus 2 Plus 3 Pluses loose: Plus 1 Plus 2 Plus 3 Minuses tight: Minus 1 Minus 2 Minus 3 Minuses loose: Minus 1 Minus 2 Minus 3 Ordered Tight: First Second Third and: One Two Three Loose using tabs: First Second Third and using spaces: One Two Three Multiple paragraphs: Item 1, graf one. Item 1. graf two. The quick brown fox jumped over the lazy dog’s back. Item 2. Item 3. Nested Tab Tab Tab Here’s another: First Second: Fee Fie Foe Third Same thing but with paragraphs: First Second: Fee Fie Foe Third Tabs and spaces this is a list item indented with tabs this is a list item indented with spaces this is an example list item indented with tabs this is an example list item indented with spaces Fancy list markers begins with 2 and now 3 with a continuation sublist with roman numerals, starting with 4 more items a subsublist a subsublist Nesting: Upper Alpha Upper Roman. Decimal start with 6 Lower alpha with paren Autonumbering: Autonumber. More. Nested. Should not be a list item: M.A. 2007 B. Williams Definition Lists Tight using spaces: apple red fruit orange orange fruit banana yellow fruit Tight using tabs: apple red fruit orange orange fruit banana yellow fruit Loose: apple red fruit orange orange fruit banana yellow fruit Multiple blocks with italics: apple red fruitcontains seeds, crisp, pleasant to taste orange orange fruit{ orange code block }orange block quote Multiple definitions, tight: apple red fruit computer orange orange fruit bank Multiple definitions, loose: apple red fruit computer orange orange fruit bank Blank line after term, indented marker, alternate markers: apple red fruit computer orange orange fruit sublist sublist HTML Blocks Simple block on one line: foo And nested without indentation: foo bar Interpreted markdown in a table: This is emphasized And this is strong Here’s a simple block: foo This should be a code block, though: <div> foo </div> As should this: <div>foo</div> Now, nested: foo This should just be an HTML comment: Multiline: Code block: <!-- Comment --> Just plain comment, with trailing spaces on the line: Code: <hr /> Hr’s: Inline Markup This is emphasized, and so is this. This is strong, and so is this. An emphasized link. This is strong and em. So is this word. This is strong and em. So is this word. This is code: >, $, \, \$, <html>. This is strikeout. Superscripts: abcd ahello ahello there. Subscripts: H2O, H23O, Hmany of themO. These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d. Smart quotes, ellipses, dashes “Hello,” said the spider. “‘Shelob’ is my name.” ‘A’, ‘B’, and ‘C’ are letters. ‘Oak,’ ‘elm,’ and ‘beech’ are names of trees. So is ‘pine.’ ‘He said, “I want to go.”’ Were you alive in the 70’s? Here is some quoted ‘code’ and a “quoted link”. Some dashes: one—two — three—four — five. Dashes between numbers: 5–7, 255–66, 1987–1999. Ellipses…and…and…. LaTeX 2 + 2 = 4 x ∈ y α ∧ ω 223 p-Tree Here’s some display math: $$\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$$ Here’s one that has a line break in it: α + ω × x2. These shouldn’t be math: To get the famous equation, write $e = mc^2$. $22,000 is a lot of money. So is $34,000. (It worked if “lot” is emphasized.) Shoes ($20) and socks ($5). Escaped $: $73 this should be emphasized 23$. Here’s a LaTeX table: Special Characters Here is some unicode: I hat: Î o umlaut: ö section: § set membership: ∈ copyright: © AT&T has an ampersand in their name. AT&T is another way to write it. This & that. 4 < 5. 6 > 5. Backslash: \ Backtick: ` Asterisk: * Underscore: _ Left brace: { Right brace: } Left bracket: [ Right bracket: ] Left paren: ( Right paren: ) Greater-than: > Hash: # Period: . Bang: ! Plus: + Minus: - Links Explicit Just a URL. URL and title. URL and title. URL and title. URL and title URL and title with_underscore Email link Empty. Reference Foo bar. With embedded [brackets]. b by itself should be a link. Indented once. Indented twice. Indented thrice. This should [not][] be a link. [not]: /url Foo bar. Foo biz. With ampersands Here’s a link with an ampersand in the URL. Here’s a link with an amersand in the link text: AT&T. Here’s an inline link. Here’s an inline link in pointy braces. Autolinks With an ampersand: http://example.com/?foo=1&bar=2 In a list? http://example.com/ It should. An e-mail address: nobody@nowhere.net Blockquoted: http://example.com/ Auto-links should not occur here: <http://example.com/> or here: <http://example.com/> Images From “Voyage dans la Lune” by Georges Melies (1902): lalune Here is a movie icon. Footnotes Here is a footnote reference,1Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document. and another.2Here’s the long note. This one contains multiple blocks.Subsequent blocks are indented to show that they belong to the footnote (as with list items).{ <code> }If you want, you can indent every line, but you can also be lazy and just indent the first line of each block. This should not be a footnote reference, because it contains a space.[^my note] Here is an inline note.3This is easier to type. Inline notes may contain links and ] verbatim characters, as well as [bracketed text]. Notes can go in quotes.4In quote. And in list items.5In list. This paragraph should not be part of the note, as it is not indented. pandoc-3.1.3/test/writer.opml0000644000000000000000000003132107346545000014337 0ustar0000000000000000 Pandoc Test Suite Mon, 17 Jul 2006 00:00:00 UTC John MacFarlane; Anonymous pandoc-3.1.3/test/writer.org0000644000000000000000000002607007346545000014164 0ustar0000000000000000#+title: Pandoc Test Suite #+author: John MacFarlane; Anonymous #+date: July 17, 2006 This is a set of tests for pandoc. Most of them are adapted from John Gruber's markdown test suite. -------------- * Headers :PROPERTIES: :CUSTOM_ID: headers :END: ** Level 2 with an [[/url][embedded link]] :PROPERTIES: :CUSTOM_ID: level-2-with-an-embedded-link :END: *** Level 3 with /emphasis/ :PROPERTIES: :CUSTOM_ID: level-3-with-emphasis :END: **** Level 4 :PROPERTIES: :CUSTOM_ID: level-4 :END: ***** Level 5 :PROPERTIES: :CUSTOM_ID: level-5 :END: * Level 1 :PROPERTIES: :CUSTOM_ID: level-1 :END: ** Level 2 with /emphasis/ :PROPERTIES: :CUSTOM_ID: level-2-with-emphasis :END: *** Level 3 :PROPERTIES: :CUSTOM_ID: level-3 :END: with no blank line ** Level 2 :PROPERTIES: :CUSTOM_ID: level-2 :END: with no blank line -------------- * Paragraphs :PROPERTIES: :CUSTOM_ID: paragraphs :END: Here's a regular paragraph. In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item. Here's one with a bullet. * criminey. There should be a hard line break\\ here. -------------- * Block Quotes :PROPERTIES: :CUSTOM_ID: block-quotes :END: E-mail style: #+begin_quote This is a block quote. It is pretty short. #+end_quote #+begin_quote Code in a block quote: #+begin_example sub status { print "working"; } #+end_example A list: 1. item one 2. item two Nested block quotes: #+begin_quote nested #+end_quote #+begin_quote nested #+end_quote #+end_quote This should not be a block quote: 2 > 1. And a following paragraph. -------------- * Code Blocks :PROPERTIES: :CUSTOM_ID: code-blocks :END: Code: #+begin_example ---- (should be four hyphens) sub status { print "working"; } this code block is indented by one tab #+end_example And: #+begin_example this code block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{ #+end_example -------------- * Lists :PROPERTIES: :CUSTOM_ID: lists :END: ** Unordered :PROPERTIES: :CUSTOM_ID: unordered :END: Asterisks tight: - asterisk 1 - asterisk 2 - asterisk 3 Asterisks loose: - asterisk 1 - asterisk 2 - asterisk 3 Pluses tight: - Plus 1 - Plus 2 - Plus 3 Pluses loose: - Plus 1 - Plus 2 - Plus 3 Minuses tight: - Minus 1 - Minus 2 - Minus 3 Minuses loose: - Minus 1 - Minus 2 - Minus 3 ** Ordered :PROPERTIES: :CUSTOM_ID: ordered :END: Tight: 1. First 2. Second 3. Third and: 1. One 2. Two 3. Three Loose using tabs: 1. First 2. Second 3. Third and using spaces: 1. One 2. Two 3. Three Multiple paragraphs: 1. Item 1, graf one. Item 1. graf two. The quick brown fox jumped over the lazy dog's back. 2. Item 2. 3. Item 3. ** Nested :PROPERTIES: :CUSTOM_ID: nested :END: - Tab - Tab - Tab Here's another: 1. First 2. Second: - Fee - Fie - Foe 3. Third Same thing but with paragraphs: 1. First 2. Second: - Fee - Fie - Foe 3. Third ** Tabs and spaces :PROPERTIES: :CUSTOM_ID: tabs-and-spaces :END: - this is a list item indented with tabs - this is a list item indented with spaces - this is an example list item indented with tabs - this is an example list item indented with spaces ** Fancy list markers :PROPERTIES: :CUSTOM_ID: fancy-list-markers :END: 2) [@2] begins with 2 3) and now 3 with a continuation 4. [@4] sublist with roman numerals, starting with 4 5. more items 1) a subsublist 2) a subsublist Nesting: 1. Upper Alpha 1. Upper Roman. 6) [@6] Decimal start with 6 3) [@3] Lower alpha with paren Autonumbering: 1. Autonumber. 2. More. 1. Nested. Should not be a list item: M.A. 2007 B. Williams -------------- * Definition Lists :PROPERTIES: :CUSTOM_ID: definition-lists :END: Tight using spaces: - apple :: red fruit - orange :: orange fruit - banana :: yellow fruit Tight using tabs: - apple :: red fruit - orange :: orange fruit - banana :: yellow fruit Loose: - apple :: red fruit - orange :: orange fruit - banana :: yellow fruit Multiple blocks with italics: - /apple/ :: red fruit contains seeds, crisp, pleasant to taste - /orange/ :: orange fruit #+begin_example { orange code block } #+end_example #+begin_quote orange block quote #+end_quote Multiple definitions, tight: - apple :: red fruit computer - orange :: orange fruit bank Multiple definitions, loose: - apple :: red fruit computer - orange :: orange fruit bank Blank line after term, indented marker, alternate markers: - apple :: red fruit computer - orange :: orange fruit 1. sublist 2. sublist * HTML Blocks :PROPERTIES: :CUSTOM_ID: html-blocks :END: Simple block on one line: foo And nested without indentation: foo bar Interpreted markdown in a table: #+begin_html #+end_html #+begin_html #+end_html #+begin_html #+end_html #+begin_html #+end_html #+begin_html #+end_html #+begin_html
                #+end_html This is /emphasized/ #+begin_html #+end_html And this is *strong* #+begin_html
                #+end_html #+begin_html #+end_html Here's a simple block: foo This should be a code block, though: #+begin_example
                foo
                #+end_example As should this: #+begin_example
                foo
                #+end_example Now, nested: foo This should just be an HTML comment: #+begin_html #+end_html Multiline: #+begin_html #+end_html #+begin_html #+end_html Code block: #+begin_example #+end_example Just plain comment, with trailing spaces on the line: #+begin_html #+end_html Code: #+begin_example
                #+end_example Hr's: #+begin_html
                #+end_html #+begin_html
                #+end_html #+begin_html
                #+end_html #+begin_html
                #+end_html #+begin_html
                #+end_html #+begin_html
                #+end_html #+begin_html
                #+end_html #+begin_html
                #+end_html #+begin_html
                #+end_html -------------- * Inline Markup :PROPERTIES: :CUSTOM_ID: inline-markup :END: This is /emphasized/, and so /is this/. This is *strong*, and so *is this*. An /[[/url][emphasized link]]/. */This is strong and em./* So is */this/* word. */This is strong and em./* So is */this/* word. This is code: =>=, =$=, =\=, =\$=, ==. +This is /strikeout/.+ Superscripts: a^{bc}d a^{/hello/} a^{hello there}. Subscripts: H_{2}O, H_{23}O, H_{many of them}O. These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d. -------------- * Smart quotes, ellipses, dashes :PROPERTIES: :CUSTOM_ID: smart-quotes-ellipses-dashes :END: "Hello," said the spider. "'Shelob' is my name." 'A', 'B', and 'C' are letters. 'Oak,' 'elm,' and 'beech' are names of trees. So is 'pine.' 'He said, "I want to go."' Were you alive in the 70's? Here is some quoted '=code=' and a "[[http://example.com/?foo=1&bar=2][quoted link]]". Some dashes: one---two --- three---four --- five. Dashes between numbers: 5--7, 255--66, 1987--1999. Ellipses...and...and.... -------------- * LaTeX :PROPERTIES: :CUSTOM_ID: latex :END: - \cite[22-23]{smith.1899} - \(2+2=4\) - \(x \in y\) - \(\alpha \wedge \omega\) - \(223\) - \(p\)-Tree - Here's some display math: \[\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}\] - Here's one that has a line break in it: \(\alpha + \omega \times x^2\). These shouldn't be math: - To get the famous equation, write =$e = mc^2$=. - $22,000 is a /lot/ of money. So is $34,000. (It worked if "lot" is emphasized.) - Shoes ($20) and socks ($5). - Escaped =$=: $73 /this should be emphasized/ 23$. Here's a LaTeX table: \begin{tabular}{|l|l|}\hline Animal & Number \\ \hline Dog & 2 \\ Cat & 1 \\ \hline \end{tabular} -------------- * Special Characters :PROPERTIES: :CUSTOM_ID: special-characters :END: Here is some unicode: - I hat: Î - o umlaut: ö - section: § - set membership: ∈ - copyright: © AT&T has an ampersand in their name. AT&T is another way to write it. This & that. 4 < 5. 6 > 5. Backslash: \ Backtick: ` Asterisk: * Underscore: _ Left brace: { Right brace: } Left bracket: [ Right bracket: ] Left paren: ( Right paren: ) Greater-than: > Hash: # Period: . Bang: ! Plus: + Minus: - -------------- * Links :PROPERTIES: :CUSTOM_ID: links :END: ** Explicit :PROPERTIES: :CUSTOM_ID: explicit :END: Just a [[/url/][URL]]. [[/url/][URL and title]]. [[/url/][URL and title]]. [[/url/][URL and title]]. [[/url/][URL and title]] [[/url/][URL and title]] [[/url/with_underscore][with_underscore]] [[mailto:nobody@nowhere.net][Email link]] [[][Empty]]. ** Reference :PROPERTIES: :CUSTOM_ID: reference :END: Foo [[/url/][bar]]. With [[/url/][embedded [brackets]]]. [[/url/][b]] by itself should be a link. Indented [[/url][once]]. Indented [[/url][twice]]. Indented [[/url][thrice]]. This should [not][] be a link. #+begin_example [not]: /url #+end_example Foo [[/url/][bar]]. Foo [[/url/][biz]]. ** With ampersands :PROPERTIES: :CUSTOM_ID: with-ampersands :END: Here's a [[http://example.com/?foo=1&bar=2][link with an ampersand in the URL]]. Here's a link with an amersand in the link text: [[http://att.com/][AT&T]]. Here's an [[/script?foo=1&bar=2][inline link]]. Here's an [[/script?foo=1&bar=2][inline link in pointy braces]]. ** Autolinks :PROPERTIES: :CUSTOM_ID: autolinks :END: With an ampersand: [[http://example.com/?foo=1&bar=2]] - In a list? - [[http://example.com/]] - It should. An e-mail address: [[mailto:nobody@nowhere.net][nobody@nowhere.net]] #+begin_quote Blockquoted: [[http://example.com/]] #+end_quote Auto-links should not occur here: == #+begin_example or here: #+end_example -------------- * Images :PROPERTIES: :CUSTOM_ID: images :END: From "Voyage dans la Lune" by Georges Melies (1902): #+caption: lalune [[file:lalune.jpg]] Here is a movie [[file:movie.jpg]] icon. -------------- * Footnotes :PROPERTIES: :CUSTOM_ID: footnotes :END: Here is a footnote reference,[fn:1] and another.[fn:2] This should /not/ be a footnote reference, because it contains a space.[^my note] Here is an inline note.[fn:3] #+begin_quote Notes can go in quotes.[fn:4] #+end_quote 1. And in list items.[fn:5] This paragraph should not be part of the note, as it is not indented. [fn:1] Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document. [fn:2] Here's the long note. This one contains multiple blocks. Subsequent blocks are indented to show that they belong to the footnote (as with list items). #+begin_example { } #+end_example If you want, you can indent every line, but you can also be lazy and just indent the first line of each block. [fn:3] This is /easier/ to type. Inline notes may contain [[http://google.com][links]] and =]= verbatim characters, as well as [bracketed text]. [fn:4] In quote. [fn:5] In list. pandoc-3.1.3/test/writer.plain0000644000000000000000000002117107346545000014475 0ustar0000000000000000Pandoc Test Suite John MacFarlane; Anonymous July 17, 2006 This is a set of tests for pandoc. Most of them are adapted from John Gruber’s markdown test suite. -------------------------------------------------------------------------------- Headers Level 2 with an embedded link Level 3 with emphasis Level 4 Level 5 Level 1 Level 2 with emphasis Level 3 with no blank line Level 2 with no blank line -------------------------------------------------------------------------------- Paragraphs Here’s a regular paragraph. In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item. Here’s one with a bullet. * criminey. There should be a hard line break here. -------------------------------------------------------------------------------- Block Quotes E-mail style: This is a block quote. It is pretty short. Code in a block quote: sub status { print "working"; } A list: 1. item one 2. item two Nested block quotes: nested nested This should not be a block quote: 2 > 1. And a following paragraph. -------------------------------------------------------------------------------- Code Blocks Code: ---- (should be four hyphens) sub status { print "working"; } this code block is indented by one tab And: this code block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{ -------------------------------------------------------------------------------- Lists Unordered Asterisks tight: - asterisk 1 - asterisk 2 - asterisk 3 Asterisks loose: - asterisk 1 - asterisk 2 - asterisk 3 Pluses tight: - Plus 1 - Plus 2 - Plus 3 Pluses loose: - Plus 1 - Plus 2 - Plus 3 Minuses tight: - Minus 1 - Minus 2 - Minus 3 Minuses loose: - Minus 1 - Minus 2 - Minus 3 Ordered Tight: 1. First 2. Second 3. Third and: 1. One 2. Two 3. Three Loose using tabs: 1. First 2. Second 3. Third and using spaces: 1. One 2. Two 3. Three Multiple paragraphs: 1. Item 1, graf one. Item 1. graf two. The quick brown fox jumped over the lazy dog’s back. 2. Item 2. 3. Item 3. Nested - Tab - Tab - Tab Here’s another: 1. First 2. Second: - Fee - Fie - Foe 3. Third Same thing but with paragraphs: 1. First 2. Second: - Fee - Fie - Foe 3. Third Tabs and spaces - this is a list item indented with tabs - this is a list item indented with spaces - this is an example list item indented with tabs - this is an example list item indented with spaces Fancy list markers (2) begins with 2 (3) and now 3 with a continuation iv. sublist with roman numerals, starting with 4 v. more items (A) a subsublist (B) a subsublist Nesting: A. Upper Alpha I. Upper Roman. (6) Decimal start with 6 c) Lower alpha with paren Autonumbering: 1. Autonumber. 2. More. 1. Nested. Should not be a list item: M.A. 2007 B. Williams -------------------------------------------------------------------------------- Definition Lists Tight using spaces: apple red fruit orange orange fruit banana yellow fruit Tight using tabs: apple red fruit orange orange fruit banana yellow fruit Loose: apple red fruit orange orange fruit banana yellow fruit Multiple blocks with italics: apple red fruit contains seeds, crisp, pleasant to taste orange orange fruit { orange code block } orange block quote Multiple definitions, tight: apple red fruit computer orange orange fruit bank Multiple definitions, loose: apple red fruit computer orange orange fruit bank Blank line after term, indented marker, alternate markers: apple red fruit computer orange orange fruit 1. sublist 2. sublist HTML Blocks Simple block on one line: foo And nested without indentation: foo bar Interpreted markdown in a table: This is emphasized And this is strong Here’s a simple block: foo This should be a code block, though:
                foo
                As should this:
                foo
                Now, nested: foo This should just be an HTML comment: Multiline: Code block: Just plain comment, with trailing spaces on the line: Code:
                Hr’s: -------------------------------------------------------------------------------- Inline Markup This is emphasized, and so is this. This is strong, and so is this. An emphasized link. This is strong and em. So is this word. This is strong and em. So is this word. This is code: >, $, \, \$, . ~~This is strikeout.~~ Superscripts: a^(bc)d a^(hello) a^(hello there). Subscripts: H₂O, H₂₃O, H_(many of them)O. These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d. -------------------------------------------------------------------------------- Smart quotes, ellipses, dashes “Hello,” said the spider. “‘Shelob’ is my name.” ‘A’, ‘B’, and ‘C’ are letters. ‘Oak,’ ‘elm,’ and ‘beech’ are names of trees. So is ‘pine.’ ‘He said, “I want to go.”’ Were you alive in the 70’s? Here is some quoted ‘code’ and a “quoted link”. Some dashes: one—two — three—four — five. Dashes between numbers: 5–7, 255–66, 1987–1999. Ellipses…and…and…. -------------------------------------------------------------------------------- LaTeX - - 2 + 2 = 4 - x ∈ y - α ∧ ω - 223 - p-Tree - Here’s some display math: $$\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$$ - Here’s one that has a line break in it: α + ω × x². These shouldn’t be math: - To get the famous equation, write $e = mc^2$. - $22,000 is a lot of money. So is $34,000. (It worked if “lot” is emphasized.) - Shoes ($20) and socks ($5). - Escaped $: $73 this should be emphasized 23$. Here’s a LaTeX table: -------------------------------------------------------------------------------- Special Characters Here is some unicode: - I hat: Î - o umlaut: ö - section: § - set membership: ∈ - copyright: © AT&T has an ampersand in their name. AT&T is another way to write it. This & that. 4 < 5. 6 > 5. Backslash: \ Backtick: ` Asterisk: * Underscore: _ Left brace: { Right brace: } Left bracket: [ Right bracket: ] Left paren: ( Right paren: ) Greater-than: > Hash: # Period: . Bang: ! Plus: + Minus: - -------------------------------------------------------------------------------- Links Explicit Just a URL. URL and title. URL and title. URL and title. URL and title URL and title with_underscore Email link Empty. Reference Foo bar. With embedded [brackets]. b by itself should be a link. Indented once. Indented twice. Indented thrice. This should [not][] be a link. [not]: /url Foo bar. Foo biz. With ampersands Here’s a link with an ampersand in the URL. Here’s a link with an amersand in the link text: AT&T. Here’s an inline link. Here’s an inline link in pointy braces. Autolinks With an ampersand: http://example.com/?foo=1&bar=2 - In a list? - http://example.com/ - It should. An e-mail address: nobody@nowhere.net Blockquoted: http://example.com/ Auto-links should not occur here: or here: -------------------------------------------------------------------------------- Images From “Voyage dans la Lune” by Georges Melies (1902): [lalune] Here is a movie [movie] icon. -------------------------------------------------------------------------------- Footnotes Here is a footnote reference,[1] and another.[2] This should not be a footnote reference, because it contains a space.[^my note] Here is an inline note.[3] Notes can go in quotes.[4] 1. And in list items.[5] This paragraph should not be part of the note, as it is not indented. [1] Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document. [2] Here’s the long note. This one contains multiple blocks. Subsequent blocks are indented to show that they belong to the footnote (as with list items). { } If you want, you can indent every line, but you can also be lazy and just indent the first line of each block. [3] This is easier to type. Inline notes may contain links and ] verbatim characters, as well as [bracketed text]. [4] In quote. [5] In list. pandoc-3.1.3/test/writer.rst0000644000000000000000000002417307346545000014207 0ustar0000000000000000================= Pandoc Test Suite ================= :Author: John MacFarlane :Author: Anonymous :Date: July 17, 2006 .. role:: raw-latex(raw) :format: latex .. This is a set of tests for pandoc. Most of them are adapted from John Gruber’s markdown test suite. -------------- Headers ======= Level 2 with an `embedded link `__ ---------------------------------------- Level 3 with *emphasis* ~~~~~~~~~~~~~~~~~~~~~~~ Level 4 ^^^^^^^ Level 5 ''''''' Level 1 ======= Level 2 with *emphasis* ----------------------- Level 3 ~~~~~~~ with no blank line Level 2 ------- with no blank line -------------- Paragraphs ========== Here’s a regular paragraph. In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item. Here’s one with a bullet. \* criminey. | There should be a hard line break | here. -------------- Block Quotes ============ E-mail style: This is a block quote. It is pretty short. .. Code in a block quote: :: sub status { print "working"; } A list: 1. item one 2. item two Nested block quotes: nested .. nested This should not be a block quote: 2 > 1. And a following paragraph. -------------- Code Blocks =========== Code: :: ---- (should be four hyphens) sub status { print "working"; } this code block is indented by one tab And: :: this code block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{ -------------- Lists ===== Unordered --------- Asterisks tight: - asterisk 1 - asterisk 2 - asterisk 3 Asterisks loose: - asterisk 1 - asterisk 2 - asterisk 3 Pluses tight: - Plus 1 - Plus 2 - Plus 3 Pluses loose: - Plus 1 - Plus 2 - Plus 3 Minuses tight: - Minus 1 - Minus 2 - Minus 3 Minuses loose: - Minus 1 - Minus 2 - Minus 3 Ordered ------- Tight: 1. First 2. Second 3. Third and: 1. One 2. Two 3. Three Loose using tabs: 1. First 2. Second 3. Third and using spaces: 1. One 2. Two 3. Three Multiple paragraphs: 1. Item 1, graf one. Item 1. graf two. The quick brown fox jumped over the lazy dog’s back. 2. Item 2. 3. Item 3. Nested ------ - Tab - Tab - Tab Here’s another: 1. First 2. Second: - Fee - Fie - Foe 3. Third Same thing but with paragraphs: 1. First 2. Second: - Fee - Fie - Foe 3. Third Tabs and spaces --------------- - this is a list item indented with tabs - this is a list item indented with spaces - this is an example list item indented with tabs - this is an example list item indented with spaces Fancy list markers ------------------ (2) begins with 2 (3) and now 3 with a continuation iv. sublist with roman numerals, starting with 4 v. more items (A) a subsublist (B) a subsublist Nesting: A. Upper Alpha I. Upper Roman. (6) Decimal start with 6 c) Lower alpha with paren Autonumbering: #. Autonumber. #. More. #. Nested. Should not be a list item: M.A. 2007 B. Williams -------------- Definition Lists ================ Tight using spaces: apple red fruit orange orange fruit banana yellow fruit Tight using tabs: apple red fruit orange orange fruit banana yellow fruit Loose: apple red fruit orange orange fruit banana yellow fruit Multiple blocks with italics: *apple* red fruit contains seeds, crisp, pleasant to taste *orange* orange fruit :: { orange code block } .. orange block quote Multiple definitions, tight: apple red fruit computer orange orange fruit bank Multiple definitions, loose: apple red fruit computer orange orange fruit bank Blank line after term, indented marker, alternate markers: apple red fruit computer orange orange fruit 1. sublist 2. sublist HTML Blocks =========== Simple block on one line: .. container:: foo And nested without indentation: .. container:: .. container:: .. container:: foo .. container:: bar Interpreted markdown in a table: .. raw:: html .. raw:: html .. raw:: html .. raw:: html .. raw:: html .. raw:: html
                This is *emphasized* .. raw:: html And this is **strong** .. raw:: html
                .. raw:: html Here’s a simple block: .. container:: foo This should be a code block, though: ::
                foo
                As should this: ::
                foo
                Now, nested: .. container:: .. container:: .. container:: foo This should just be an HTML comment: .. raw:: html Multiline: .. raw:: html .. raw:: html Code block: :: Just plain comment, with trailing spaces on the line: .. raw:: html Code: ::
                Hr’s: .. raw:: html
                .. raw:: html
                .. raw:: html
                .. raw:: html
                .. raw:: html
                .. raw:: html
                .. raw:: html
                .. raw:: html
                .. raw:: html
                -------------- Inline Markup ============= This is *emphasized*, and so *is this*. This is **strong**, and so **is this**. An `emphasized link `__. **This is strong and em.** So is **this** word. **This is strong and em.** So is **this** word. This is code: ``>``, ``$``, ``\``, ``\$``, ````. [STRIKEOUT:This is strikeout.] Superscripts: a\ :sup:`bc`\ d a\ :sup:`hello` a\ :sup:`hello there`. Subscripts: H\ :sub:`2`\ O, H\ :sub:`23`\ O, H\ :sub:`many of them`\ O. These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d. -------------- Smart quotes, ellipses, dashes ============================== “Hello,” said the spider. “‘Shelob’ is my name.” ‘A’, ‘B’, and ‘C’ are letters. ‘Oak,’ ‘elm,’ and ‘beech’ are names of trees. So is ‘pine.’ ‘He said, “I want to go.”’ Were you alive in the 70’s? Here is some quoted ‘``code``’ and a “`quoted link `__”. Some dashes: one—two — three—four — five. Dashes between numbers: 5–7, 255–66, 1987–1999. Ellipses…and…and…. -------------- LaTeX ===== - :raw-latex:`\cite[22-23]{smith.1899}` - :math:`2+2=4` - :math:`x \in y` - :math:`\alpha \wedge \omega` - :math:`223` - :math:`p`-Tree - Here’s some display math: .. math:: \frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h} - Here’s one that has a line break in it: :math:`\alpha + \omega \times x^2`. These shouldn’t be math: - To get the famous equation, write ``$e = mc^2$``. - $22,000 is a *lot* of money. So is $34,000. (It worked if “lot” is emphasized.) - Shoes ($20) and socks ($5). - Escaped ``$``: $73 *this should be emphasized* 23$. Here’s a LaTeX table: .. raw:: latex \begin{tabular}{|l|l|}\hline Animal & Number \\ \hline Dog & 2 \\ Cat & 1 \\ \hline \end{tabular} -------------- Special Characters ================== Here is some unicode: - I hat: Î - o umlaut: ö - section: § - set membership: ∈ - copyright: © AT&T has an ampersand in their name. AT&T is another way to write it. This & that. 4 < 5. 6 > 5. Backslash: \\ Backtick: \` Asterisk: \* Underscore: \_ Left brace: { Right brace: } Left bracket: [ Right bracket: ] Left paren: ( Right paren: ) Greater-than: > Hash: # Period: . Bang: ! Plus: + Minus: - -------------- Links ===== Explicit -------- Just a `URL `__. `URL and title `__. `URL and title `__. `URL and title `__. `URL and title `__ `URL and title `__ `with_underscore `__ `Email link `__ `Empty <>`__. Reference --------- Foo `bar `__. With `embedded [brackets] `__. `b `__ by itself should be a link. Indented `once `__. Indented `twice `__. Indented `thrice `__. This should [not][] be a link. :: [not]: /url Foo `bar `__. Foo `biz `__. With ampersands --------------- Here’s a `link with an ampersand in the URL `__. Here’s a link with an amersand in the link text: `AT&T `__. Here’s an `inline link `__. Here’s an `inline link in pointy braces `__. Autolinks --------- With an ampersand: http://example.com/?foo=1&bar=2 - In a list? - http://example.com/ - It should. An e-mail address: nobody@nowhere.net Blockquoted: http://example.com/ Auto-links should not occur here: ```` :: or here: -------------- Images ====== From “Voyage dans la Lune” by Georges Melies (1902): .. figure:: lalune.jpg :alt: Voyage dans la Lune lalune Here is a movie |movie| icon. -------------- Footnotes ========= Here is a footnote reference, [1]_ and another. [2]_ This should *not* be a footnote reference, because it contains a space.[^my note] Here is an inline note. [3]_ Notes can go in quotes. [4]_ 1. And in list items. [5]_ This paragraph should not be part of the note, as it is not indented. .. [1] Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document. .. [2] Here’s the long note. This one contains multiple blocks. Subsequent blocks are indented to show that they belong to the footnote (as with list items). :: { } If you want, you can indent every line, but you can also be lazy and just indent the first line of each block. .. [3] This is *easier* to type. Inline notes may contain `links `__ and ``]`` verbatim characters, as well as [bracketed text]. .. [4] In quote. .. [5] In list. .. |movie| image:: movie.jpg pandoc-3.1.3/test/writer.rtf0000644000000000000000000016600507346545000014173 0ustar0000000000000000{\rtf1\ansi\deff0{\fonttbl{\f0 \fswiss Helvetica;}{\f1 \fmodern Courier;}} {\colortbl;\red255\green0\blue0;\red0\green0\blue255;} \widowctrl\hyphauto {\pard \qc \f0 \sa180 \li0 \fi0 \b \fs36 Pandoc Test Suite\par} {\pard \qc \f0 \sa180 \li0 \fi0 John MacFarlane\par} {\pard \qc \f0 \sa180 \li0 \fi0 Anonymous\par} {\pard \qc \f0 \sa180 \li0 \fi0 July 17, 2006\par} {\pard \ql \f0 \sa180 \li0 \fi0 \par} {\pard \ql \f0 \sa180 \li0 \fi0 This is a set of tests for pandoc. Most of them are adapted from John Gruber\u8217's markdown test suite.\par} {\pard \qc \f0 \sa180 \li0 \fi0 \emdash\emdash\emdash\emdash\emdash\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel0 \b \fs36 Headers\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel1 \b \fs32 Level 2 with an {\field{\*\fldinst{HYPERLINK "/url"}}{\fldrslt{\ul embedded link }}} \par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel2 \b \fs28 Level 3 with {\i emphasis}\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel3 \b \fs24 Level 4\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel4 \b \fs20 Level 5\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel0 \b \fs36 Level 1\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel1 \b \fs32 Level 2 with {\i emphasis}\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel2 \b \fs28 Level 3\par} {\pard \ql \f0 \sa180 \li0 \fi0 with no blank line\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel1 \b \fs32 Level 2\par} {\pard \ql \f0 \sa180 \li0 \fi0 with no blank line\par} {\pard \qc \f0 \sa180 \li0 \fi0 \emdash\emdash\emdash\emdash\emdash\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel0 \b \fs36 Paragraphs\par} {\pard \ql \f0 \sa180 \li0 \fi0 Here\u8217's a regular paragraph.\par} {\pard \ql \f0 \sa180 \li0 \fi0 In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item.\par} {\pard \ql \f0 \sa180 \li0 \fi0 Here\u8217's one with a bullet. * criminey.\par} {\pard \ql \f0 \sa180 \li0 \fi0 There should be a hard line break\line here.\par} {\pard \qc \f0 \sa180 \li0 \fi0 \emdash\emdash\emdash\emdash\emdash\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel0 \b \fs36 Block Quotes\par} {\pard \ql \f0 \sa180 \li0 \fi0 E-mail style:\par} {\pard \ql \f0 \sa180 \li720 \fi0 This is a block quote. It is pretty short.\par} {\pard \ql \f0 \sa180 \li720 \fi0 Code in a block quote:\par} {\pard \ql \f0 \sa180 \li720 \fi0 \f1 sub status \{\line print "working";\line \}\par} {\pard \ql \f0 \sa180 \li720 \fi0 A list:\par} {\pard \ql \f0 \sa0 \li1080 \fi-360 1.\tx360\tab item one\par} {\pard \ql \f0 \sa0 \li1080 \fi-360 2.\tx360\tab item two\sa180\par} {\pard \ql \f0 \sa180 \li720 \fi0 Nested block quotes:\par} {\pard \ql \f0 \sa180 \li1440 \fi0 nested\par} {\pard \ql \f0 \sa180 \li1440 \fi0 nested\par} {\pard \ql \f0 \sa180 \li0 \fi0 This should not be a block quote: 2 > 1.\par} {\pard \ql \f0 \sa180 \li0 \fi0 And a following paragraph.\par} {\pard \qc \f0 \sa180 \li0 \fi0 \emdash\emdash\emdash\emdash\emdash\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel0 \b \fs36 Code Blocks\par} {\pard \ql \f0 \sa180 \li0 \fi0 Code:\par} {\pard \ql \f0 \sa180 \li0 \fi0 \f1 ---- (should be four hyphens)\line \line sub status \{\line print "working";\line \}\line \line this code block is indented by one tab\par} {\pard \ql \f0 \sa180 \li0 \fi0 And:\par} {\pard \ql \f0 \sa180 \li0 \fi0 \f1 this code block is indented by two tabs\line \line These should not be escaped: \\$ \\\\ \\> \\[ \\\{\par} {\pard \qc \f0 \sa180 \li0 \fi0 \emdash\emdash\emdash\emdash\emdash\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel0 \b \fs36 Lists\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel1 \b \fs32 Unordered\par} {\pard \ql \f0 \sa180 \li0 \fi0 Asterisks tight:\par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab asterisk 1\par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab asterisk 2\par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab asterisk 3\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 Asterisks loose:\par} {\pard \ql \f0 \sa180 \li360 \fi-360 \bullet \tx360\tab asterisk 1\par} {\pard \ql \f0 \sa180 \li360 \fi-360 \bullet \tx360\tab asterisk 2\par} {\pard \ql \f0 \sa180 \li360 \fi-360 \bullet \tx360\tab asterisk 3\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 Pluses tight:\par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab Plus 1\par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab Plus 2\par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab Plus 3\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 Pluses loose:\par} {\pard \ql \f0 \sa180 \li360 \fi-360 \bullet \tx360\tab Plus 1\par} {\pard \ql \f0 \sa180 \li360 \fi-360 \bullet \tx360\tab Plus 2\par} {\pard \ql \f0 \sa180 \li360 \fi-360 \bullet \tx360\tab Plus 3\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 Minuses tight:\par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab Minus 1\par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab Minus 2\par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab Minus 3\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 Minuses loose:\par} {\pard \ql \f0 \sa180 \li360 \fi-360 \bullet \tx360\tab Minus 1\par} {\pard \ql \f0 \sa180 \li360 \fi-360 \bullet \tx360\tab Minus 2\par} {\pard \ql \f0 \sa180 \li360 \fi-360 \bullet \tx360\tab Minus 3\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel1 \b \fs32 Ordered\par} {\pard \ql \f0 \sa180 \li0 \fi0 Tight:\par} {\pard \ql \f0 \sa0 \li360 \fi-360 1.\tx360\tab First\par} {\pard \ql \f0 \sa0 \li360 \fi-360 2.\tx360\tab Second\par} {\pard \ql \f0 \sa0 \li360 \fi-360 3.\tx360\tab Third\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 and:\par} {\pard \ql \f0 \sa0 \li360 \fi-360 1.\tx360\tab One\par} {\pard \ql \f0 \sa0 \li360 \fi-360 2.\tx360\tab Two\par} {\pard \ql \f0 \sa0 \li360 \fi-360 3.\tx360\tab Three\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 Loose using tabs:\par} {\pard \ql \f0 \sa180 \li360 \fi-360 1.\tx360\tab First\par} {\pard \ql \f0 \sa180 \li360 \fi-360 2.\tx360\tab Second\par} {\pard \ql \f0 \sa180 \li360 \fi-360 3.\tx360\tab Third\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 and using spaces:\par} {\pard \ql \f0 \sa180 \li360 \fi-360 1.\tx360\tab One\par} {\pard \ql \f0 \sa180 \li360 \fi-360 2.\tx360\tab Two\par} {\pard \ql \f0 \sa180 \li360 \fi-360 3.\tx360\tab Three\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 Multiple paragraphs:\par} {\pard \ql \f0 \sa180 \li360 \fi-360 1.\tx360\tab Item 1, graf one.\par} {\pard \ql \f0 \sa180 \li360 \fi0 Item 1. graf two. The quick brown fox jumped over the lazy dog\u8217's back.\par} {\pard \ql \f0 \sa180 \li360 \fi-360 2.\tx360\tab Item 2.\par} {\pard \ql \f0 \sa180 \li360 \fi-360 3.\tx360\tab Item 3.\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel1 \b \fs32 Nested\par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab Tab\par} {\pard \ql \f0 \sa0 \li720 \fi-360 \endash \tx360\tab Tab\par} {\pard \ql \f0 \sa0 \li1080 \fi-360 \bullet \tx360\tab Tab\sa180\sa180\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 Here\u8217's another:\par} {\pard \ql \f0 \sa0 \li360 \fi-360 1.\tx360\tab First\par} {\pard \ql \f0 \sa0 \li360 \fi-360 2.\tx360\tab Second:\par} {\pard \ql \f0 \sa0 \li720 \fi-360 \endash \tx360\tab Fee\par} {\pard \ql \f0 \sa0 \li720 \fi-360 \endash \tx360\tab Fie\par} {\pard \ql \f0 \sa0 \li720 \fi-360 \endash \tx360\tab Foe\sa180\par} {\pard \ql \f0 \sa0 \li360 \fi-360 3.\tx360\tab Third\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 Same thing but with paragraphs:\par} {\pard \ql \f0 \sa180 \li360 \fi-360 1.\tx360\tab First\par} {\pard \ql \f0 \sa180 \li360 \fi-360 2.\tx360\tab Second:\par} {\pard \ql \f0 \sa0 \li720 \fi-360 \endash \tx360\tab Fee\par} {\pard \ql \f0 \sa0 \li720 \fi-360 \endash \tx360\tab Fie\par} {\pard \ql \f0 \sa0 \li720 \fi-360 \endash \tx360\tab Foe\sa180\par} {\pard \ql \f0 \sa180 \li360 \fi-360 3.\tx360\tab Third\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel1 \b \fs32 Tabs and spaces\par} {\pard \ql \f0 \sa180 \li360 \fi-360 \bullet \tx360\tab this is a list item indented with tabs\par} {\pard \ql \f0 \sa180 \li360 \fi-360 \bullet \tx360\tab this is a list item indented with spaces\par} {\pard \ql \f0 \sa180 \li720 \fi-360 \endash \tx360\tab this is an example list item indented with tabs\par} {\pard \ql \f0 \sa180 \li720 \fi-360 \endash \tx360\tab this is an example list item indented with spaces\sa180\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel1 \b \fs32 Fancy list markers\par} {\pard \ql \f0 \sa180 \li360 \fi-360 (2)\tx360\tab begins with 2\par} {\pard \ql \f0 \sa180 \li360 \fi-360 (3)\tx360\tab and now 3\par} {\pard \ql \f0 \sa180 \li360 \fi0 with a continuation\par} {\pard \ql \f0 \sa0 \li720 \fi-360 iv.\tx360\tab sublist with roman numerals, starting with 4\par} {\pard \ql \f0 \sa0 \li720 \fi-360 v.\tx360\tab more items\par} {\pard \ql \f0 \sa0 \li1080 \fi-360 (A)\tx360\tab a subsublist\par} {\pard \ql \f0 \sa0 \li1080 \fi-360 (B)\tx360\tab a subsublist\sa180\sa180\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 Nesting:\par} {\pard \ql \f0 \sa0 \li360 \fi-360 A.\tx360\tab Upper Alpha\par} {\pard \ql \f0 \sa0 \li720 \fi-360 I.\tx360\tab Upper Roman.\par} {\pard \ql \f0 \sa0 \li1080 \fi-360 (6)\tx360\tab Decimal start with 6\par} {\pard \ql \f0 \sa0 \li1440 \fi-360 c)\tx360\tab Lower alpha with paren\sa180\sa180\sa180\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 Autonumbering:\par} {\pard \ql \f0 \sa0 \li360 \fi-360 1.\tx360\tab Autonumber.\par} {\pard \ql \f0 \sa0 \li360 \fi-360 2.\tx360\tab More.\par} {\pard \ql \f0 \sa0 \li720 \fi-360 a.\tx360\tab Nested.\sa180\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 Should not be a list item:\par} {\pard \ql \f0 \sa180 \li0 \fi0 M.A.\u160 ?2007\par} {\pard \ql \f0 \sa180 \li0 \fi0 B. Williams\par} {\pard \qc \f0 \sa180 \li0 \fi0 \emdash\emdash\emdash\emdash\emdash\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel0 \b \fs36 Definition Lists\par} {\pard \ql \f0 \sa180 \li0 \fi0 Tight using spaces:\par} {\pard \ql \f0 \sa0 \li0 \fi0 apple\par} {\pard \ql \f0 \sa0 \li360 \fi0 red fruit\par} {\pard \ql \f0 \sa0 \li0 \fi0 orange\par} {\pard \ql \f0 \sa0 \li360 \fi0 orange fruit\par} {\pard \ql \f0 \sa0 \li0 \fi0 banana\par} {\pard \ql \f0 \sa0 \li360 \fi0 yellow fruit\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 Tight using tabs:\par} {\pard \ql \f0 \sa0 \li0 \fi0 apple\par} {\pard \ql \f0 \sa0 \li360 \fi0 red fruit\par} {\pard \ql \f0 \sa0 \li0 \fi0 orange\par} {\pard \ql \f0 \sa0 \li360 \fi0 orange fruit\par} {\pard \ql \f0 \sa0 \li0 \fi0 banana\par} {\pard \ql \f0 \sa0 \li360 \fi0 yellow fruit\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 Loose:\par} {\pard \ql \f0 \sa0 \li0 \fi0 apple\par} {\pard \ql \f0 \sa180 \li360 \fi0 red fruit\par} {\pard \ql \f0 \sa0 \li0 \fi0 orange\par} {\pard \ql \f0 \sa180 \li360 \fi0 orange fruit\par} {\pard \ql \f0 \sa0 \li0 \fi0 banana\par} {\pard \ql \f0 \sa180 \li360 \fi0 yellow fruit\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 Multiple blocks with italics:\par} {\pard \ql \f0 \sa0 \li0 \fi0 {\i apple}\par} {\pard \ql \f0 \sa180 \li360 \fi0 red fruit\par} {\pard \ql \f0 \sa180 \li360 \fi0 contains seeds, crisp, pleasant to taste\par} {\pard \ql \f0 \sa0 \li0 \fi0 {\i orange}\par} {\pard \ql \f0 \sa180 \li360 \fi0 orange fruit\par} {\pard \ql \f0 \sa180 \li360 \fi0 \f1 \{ orange code block \}\par} {\pard \ql \f0 \sa180 \li1080 \fi0 orange block quote\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 Multiple definitions, tight:\par} {\pard \ql \f0 \sa0 \li0 \fi0 apple\par} {\pard \ql \f0 \sa0 \li360 \fi0 red fruit\par} {\pard \ql \f0 \sa0 \li360 \fi0 computer\par} {\pard \ql \f0 \sa0 \li0 \fi0 orange\par} {\pard \ql \f0 \sa0 \li360 \fi0 orange fruit\par} {\pard \ql \f0 \sa0 \li360 \fi0 bank\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 Multiple definitions, loose:\par} {\pard \ql \f0 \sa0 \li0 \fi0 apple\par} {\pard \ql \f0 \sa180 \li360 \fi0 red fruit\par} {\pard \ql \f0 \sa180 \li360 \fi0 computer\par} {\pard \ql \f0 \sa0 \li0 \fi0 orange\par} {\pard \ql \f0 \sa180 \li360 \fi0 orange fruit\par} {\pard \ql \f0 \sa180 \li360 \fi0 bank\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 Blank line after term, indented marker, alternate markers:\par} {\pard \ql \f0 \sa0 \li0 \fi0 apple\par} {\pard \ql \f0 \sa180 \li360 \fi0 red fruit\par} {\pard \ql \f0 \sa180 \li360 \fi0 computer\par} {\pard \ql \f0 \sa0 \li0 \fi0 orange\par} {\pard \ql \f0 \sa180 \li360 \fi0 orange fruit\par} {\pard \ql \f0 \sa0 \li720 \fi-360 1.\tx360\tab sublist\par} {\pard \ql \f0 \sa0 \li720 \fi-360 2.\tx360\tab sublist\sa180\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel0 \b \fs36 HTML Blocks\par} {\pard \ql \f0 \sa180 \li0 \fi0 Simple block on one line:\par} {\pard \ql \f0 \sa0 \li0 \fi0 foo\par} {\pard \ql \f0 \sa180 \li0 \fi0 And nested without indentation:\par} {\pard \ql \f0 \sa180 \li0 \fi0 foo\par} {\pard \ql \f0 \sa0 \li0 \fi0 bar\par} {\pard \ql \f0 \sa180 \li0 \fi0 Interpreted markdown in a table:\par} {\pard \ql \f0 \sa0 \li0 \fi0 This is {\i emphasized}\par} {\pard \ql \f0 \sa0 \li0 \fi0 And this is {\b strong}\par} {\pard \ql \f0 \sa180 \li0 \fi0 Here\u8217's a simple block:\par} {\pard \ql \f0 \sa180 \li0 \fi0 foo\par} {\pard \ql \f0 \sa180 \li0 \fi0 This should be a code block, though:\par} {\pard \ql \f0 \sa180 \li0 \fi0 \f1
                \line foo\line
                \par} {\pard \ql \f0 \sa180 \li0 \fi0 As should this:\par} {\pard \ql \f0 \sa180 \li0 \fi0 \f1
                foo
                \par} {\pard \ql \f0 \sa180 \li0 \fi0 Now, nested:\par} {\pard \ql \f0 \sa0 \li0 \fi0 foo\par} {\pard \ql \f0 \sa180 \li0 \fi0 This should just be an HTML comment:\par} {\pard \ql \f0 \sa180 \li0 \fi0 Multiline:\par} {\pard \ql \f0 \sa180 \li0 \fi0 Code block:\par} {\pard \ql \f0 \sa180 \li0 \fi0 \f1 \par} {\pard \ql \f0 \sa180 \li0 \fi0 Just plain comment, with trailing spaces on the line:\par} {\pard \ql \f0 \sa180 \li0 \fi0 Code:\par} {\pard \ql \f0 \sa180 \li0 \fi0 \f1
                \par} {\pard \ql \f0 \sa180 \li0 \fi0 Hr\u8217's:\par} {\pard \qc \f0 \sa180 \li0 \fi0 \emdash\emdash\emdash\emdash\emdash\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel0 \b \fs36 Inline Markup\par} {\pard \ql \f0 \sa180 \li0 \fi0 This is {\i emphasized}, and so {\i is this}.\par} {\pard \ql \f0 \sa180 \li0 \fi0 This is {\b strong}, and so {\b is this}.\par} {\pard \ql \f0 \sa180 \li0 \fi0 An {\i {\field{\*\fldinst{HYPERLINK "/url"}}{\fldrslt{\ul emphasized link }}} }.\par} {\pard \ql \f0 \sa180 \li0 \fi0 {\b {\i This is strong and em.}}\par} {\pard \ql \f0 \sa180 \li0 \fi0 So is {\b {\i this}} word.\par} {\pard \ql \f0 \sa180 \li0 \fi0 {\b {\i This is strong and em.}}\par} {\pard \ql \f0 \sa180 \li0 \fi0 So is {\b {\i this}} word.\par} {\pard \ql \f0 \sa180 \li0 \fi0 This is code: {\f1 >}, {\f1 $}, {\f1 \\}, {\f1 \\$}, {\f1 }.\par} {\pard \ql \f0 \sa180 \li0 \fi0 {\strike This is {\i strikeout}.}\par} {\pard \ql \f0 \sa180 \li0 \fi0 Superscripts: a{\super bc}d a{\super {\i hello}} a{\super hello\u160 ?there}.\par} {\pard \ql \f0 \sa180 \li0 \fi0 Subscripts: H{\sub 2}O, H{\sub 23}O, H{\sub many\u160 ?of\u160 ?them}O.\par} {\pard \ql \f0 \sa180 \li0 \fi0 These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d.\par} {\pard \qc \f0 \sa180 \li0 \fi0 \emdash\emdash\emdash\emdash\emdash\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel0 \b \fs36 Smart quotes, ellipses, dashes\par} {\pard \ql \f0 \sa180 \li0 \fi0 \u8220"Hello,\u8221" said the spider. \u8220"\u8216'Shelob\u8217' is my name.\u8221"\par} {\pard \ql \f0 \sa180 \li0 \fi0 \u8216'A\u8217', \u8216'B\u8217', and \u8216'C\u8217' are letters.\par} {\pard \ql \f0 \sa180 \li0 \fi0 \u8216'Oak,\u8217' \u8216'elm,\u8217' and \u8216'beech\u8217' are names of trees. So is \u8216'pine.\u8217'\par} {\pard \ql \f0 \sa180 \li0 \fi0 \u8216'He said, \u8220"I want to go.\u8221"\u8217' Were you alive in the 70\u8217's?\par} {\pard \ql \f0 \sa180 \li0 \fi0 Here is some quoted \u8216'{\f1 code}\u8217' and a \u8220"{\field{\*\fldinst{HYPERLINK "http://example.com/?foo=1&bar=2"}}{\fldrslt{\ul quoted link }}} \u8221".\par} {\pard \ql \f0 \sa180 \li0 \fi0 Some dashes: one\u8212-two \u8212- three\u8212-four \u8212- five.\par} {\pard \ql \f0 \sa180 \li0 \fi0 Dashes between numbers: 5\u8211-7, 255\u8211-66, 1987\u8211-1999.\par} {\pard \ql \f0 \sa180 \li0 \fi0 Ellipses\u8230 ?and\u8230 ?and\u8230 ?.\par} {\pard \qc \f0 \sa180 \li0 \fi0 \emdash\emdash\emdash\emdash\emdash\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel0 \b \fs36 LaTeX\par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab \par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab 2\u8197 ?+\u8197 ?2\u8196 ?=\u8196 ?4\par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab {\i x}\u8196 ?\u8712 ?\u8196 ?{\i y}\par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab {\i \u945 ?}\u8197 ?\u8743 ?\u8197 ?{\i \u969 ?}\par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab 223\par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab {\i p}-Tree\par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab Here\u8217's some display math: $$\\frac\{d\}\{dx\}f(x)=\\lim_\{h\\to 0\}\\frac\{f(x+h)-f(x)\}\{h\}$$\par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab Here\u8217's one that has a line break in it: {\i \u945 ?}\u8197 ?+\u8197 ?{\i \u969 ?}\u8197 ?\u215 ?\u8197 ?{\i x}{\super 2}.\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 These shouldn\u8217't be math:\par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab To get the famous equation, write {\f1 $e = mc^2$}.\par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab $22,000 is a {\i lot} of money. So is $34,000. (It worked if \u8220"lot\u8221" is emphasized.)\par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab Shoes ($20) and socks ($5).\par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab Escaped {\f1 $}: $73 {\i this should be emphasized} 23$.\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 Here\u8217's a LaTeX table:\par} {\pard \qc \f0 \sa180 \li0 \fi0 \emdash\emdash\emdash\emdash\emdash\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel0 \b \fs36 Special Characters\par} {\pard \ql \f0 \sa180 \li0 \fi0 Here is some unicode:\par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab I hat: \u206 ?\par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab o umlaut: \u246 ?\par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab section: \u167 ?\par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab set membership: \u8712 ?\par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab copyright: \u169 ?\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 AT&T has an ampersand in their name.\par} {\pard \ql \f0 \sa180 \li0 \fi0 AT&T is another way to write it.\par} {\pard \ql \f0 \sa180 \li0 \fi0 This & that.\par} {\pard \ql \f0 \sa180 \li0 \fi0 4 < 5.\par} {\pard \ql \f0 \sa180 \li0 \fi0 6 > 5.\par} {\pard \ql \f0 \sa180 \li0 \fi0 Backslash: \\\par} {\pard \ql \f0 \sa180 \li0 \fi0 Backtick: `\par} {\pard \ql \f0 \sa180 \li0 \fi0 Asterisk: *\par} {\pard \ql \f0 \sa180 \li0 \fi0 Underscore: _\par} {\pard \ql \f0 \sa180 \li0 \fi0 Left brace: \{\par} {\pard \ql \f0 \sa180 \li0 \fi0 Right brace: \}\par} {\pard \ql \f0 \sa180 \li0 \fi0 Left bracket: [\par} {\pard \ql \f0 \sa180 \li0 \fi0 Right bracket: ]\par} {\pard \ql \f0 \sa180 \li0 \fi0 Left paren: (\par} {\pard \ql \f0 \sa180 \li0 \fi0 Right paren: )\par} {\pard \ql \f0 \sa180 \li0 \fi0 Greater-than: >\par} {\pard \ql \f0 \sa180 \li0 \fi0 Hash: #\par} {\pard \ql \f0 \sa180 \li0 \fi0 Period: .\par} {\pard \ql \f0 \sa180 \li0 \fi0 Bang: !\par} {\pard \ql \f0 \sa180 \li0 \fi0 Plus: +\par} {\pard \ql \f0 \sa180 \li0 \fi0 Minus: -\par} {\pard \qc \f0 \sa180 \li0 \fi0 \emdash\emdash\emdash\emdash\emdash\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel0 \b \fs36 Links\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel1 \b \fs32 Explicit\par} {\pard \ql \f0 \sa180 \li0 \fi0 Just a {\field{\*\fldinst{HYPERLINK "/url/"}}{\fldrslt{\ul URL }}} .\par} {\pard \ql \f0 \sa180 \li0 \fi0 {\field{\*\fldinst{HYPERLINK "/url/"}}{\fldrslt{\ul URL and title }}} .\par} {\pard \ql \f0 \sa180 \li0 \fi0 {\field{\*\fldinst{HYPERLINK "/url/"}}{\fldrslt{\ul URL and title }}} .\par} {\pard \ql \f0 \sa180 \li0 \fi0 {\field{\*\fldinst{HYPERLINK "/url/"}}{\fldrslt{\ul URL and title }}} .\par} {\pard \ql \f0 \sa180 \li0 \fi0 {\field{\*\fldinst{HYPERLINK "/url/"}}{\fldrslt{\ul URL and title }}} \par} {\pard \ql \f0 \sa180 \li0 \fi0 {\field{\*\fldinst{HYPERLINK "/url/"}}{\fldrslt{\ul URL and title }}} \par} {\pard \ql \f0 \sa180 \li0 \fi0 {\field{\*\fldinst{HYPERLINK "/url/with_underscore"}}{\fldrslt{\ul with_underscore }}} \par} {\pard \ql \f0 \sa180 \li0 \fi0 {\field{\*\fldinst{HYPERLINK "mailto:nobody@nowhere.net"}}{\fldrslt{\ul Email link }}} \par} {\pard \ql \f0 \sa180 \li0 \fi0 {\field{\*\fldinst{HYPERLINK ""}}{\fldrslt{\ul Empty }}} .\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel1 \b \fs32 Reference\par} {\pard \ql \f0 \sa180 \li0 \fi0 Foo {\field{\*\fldinst{HYPERLINK "/url/"}}{\fldrslt{\ul bar }}} .\par} {\pard \ql \f0 \sa180 \li0 \fi0 With {\field{\*\fldinst{HYPERLINK "/url/"}}{\fldrslt{\ul embedded [brackets] }}} .\par} {\pard \ql \f0 \sa180 \li0 \fi0 {\field{\*\fldinst{HYPERLINK "/url/"}}{\fldrslt{\ul b }}} by itself should be a link.\par} {\pard \ql \f0 \sa180 \li0 \fi0 Indented {\field{\*\fldinst{HYPERLINK "/url"}}{\fldrslt{\ul once }}} .\par} {\pard \ql \f0 \sa180 \li0 \fi0 Indented {\field{\*\fldinst{HYPERLINK "/url"}}{\fldrslt{\ul twice }}} .\par} {\pard \ql \f0 \sa180 \li0 \fi0 Indented {\field{\*\fldinst{HYPERLINK "/url"}}{\fldrslt{\ul thrice }}} .\par} {\pard \ql \f0 \sa180 \li0 \fi0 This should [not][] be a link.\par} {\pard \ql \f0 \sa180 \li0 \fi0 \f1 [not]: /url\par} {\pard \ql \f0 \sa180 \li0 \fi0 Foo {\field{\*\fldinst{HYPERLINK "/url/"}}{\fldrslt{\ul bar }}} .\par} {\pard \ql \f0 \sa180 \li0 \fi0 Foo {\field{\*\fldinst{HYPERLINK "/url/"}}{\fldrslt{\ul biz }}} .\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel1 \b \fs32 With ampersands\par} {\pard \ql \f0 \sa180 \li0 \fi0 Here\u8217's a {\field{\*\fldinst{HYPERLINK "http://example.com/?foo=1&bar=2"}}{\fldrslt{\ul link with an ampersand in the URL }}} .\par} {\pard \ql \f0 \sa180 \li0 \fi0 Here\u8217's a link with an amersand in the link text: {\field{\*\fldinst{HYPERLINK "http://att.com/"}}{\fldrslt{\ul AT&T }}} .\par} {\pard \ql \f0 \sa180 \li0 \fi0 Here\u8217's an {\field{\*\fldinst{HYPERLINK "/script?foo=1&bar=2"}}{\fldrslt{\ul inline link }}} .\par} {\pard \ql \f0 \sa180 \li0 \fi0 Here\u8217's an {\field{\*\fldinst{HYPERLINK "/script?foo=1&bar=2"}}{\fldrslt{\ul inline link in pointy braces }}} .\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel1 \b \fs32 Autolinks\par} {\pard \ql \f0 \sa180 \li0 \fi0 With an ampersand: {\field{\*\fldinst{HYPERLINK "http://example.com/?foo=1&bar=2"}}{\fldrslt{\ul http://example.com/?foo=1&bar=2 }}} \par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab In a list?\par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab {\field{\*\fldinst{HYPERLINK "http://example.com/"}}{\fldrslt{\ul http://example.com/ }}} \par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab It should.\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 An e-mail address: {\field{\*\fldinst{HYPERLINK "mailto:nobody@nowhere.net"}}{\fldrslt{\ul nobody@nowhere.net }}} \par} {\pard \ql \f0 \sa180 \li720 \fi0 Blockquoted: {\field{\*\fldinst{HYPERLINK "http://example.com/"}}{\fldrslt{\ul http://example.com/ }}} \par} {\pard \ql \f0 \sa180 \li0 \fi0 Auto-links should not occur here: {\f1 }\par} {\pard \ql \f0 \sa180 \li0 \fi0 \f1 or here: \par} {\pard \qc \f0 \sa180 \li0 \fi0 \emdash\emdash\emdash\emdash\emdash\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel0 \b \fs36 Images\par} {\pard \ql \f0 \sa180 \li0 \fi0 From \u8220"Voyage dans la Lune\u8221" by Georges Melies (1902):\par} {\pard \ql \f0 \sa0 \li0 \fi0 {\pict\jpegblip\picw250\pich250\picwgoal3000\pichgoal3000 ffd8ffe000104a46494600010101007800780000ffdb00430006040506050406060506070706080a100a0a09090a140e0f0c1017141818171416161a1d251f1a1b231c1616202c20232627292a29191f2d302d283025282928ffdb0043010707070a080a130a0a13281a161a2828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828ffc000110800fa00fa03011100021101031101ffc4001c0000000701010000000000000000000000010203040506070008ffc4003e100002010303020404040502050500030001020300041105122106311322415107617181143291a1234252b1c115f016336272d1082443e1f1265382ffc40017010101010100000000000000000000000000010204ffc4001b11010101010003010000000000000000000001110212213141ffda000c03010002110311003f00dadd18a10a704f6a95ccc57e37750782b0d8d9ea0cd32e7c5446e07e9f4ad723119a7b89e61e348f260719278aad613cbb640002938c76a182b264fc87bd13009c0c019c76e3d68a072e1cf6f4cd502d330c28269a61bb39c923923d4fad44c08dccb95cfd28b8280769ee08a263891e1808739e4f1d8d149392172cc714050dbb9fde8960ed8c60b79b1ed44103b05c331dbdb1dc5026ac1946d20ff8140aa631c773ec738a0346a003bf93e9cf02801895e7b9a01886796c923bd0090a06393c76a0142003ce3d86680d8dd9392303f5341ccc1b3cf7a2c812c37e4923d381429757013209fa511c18146c9247a0f6a007900c0c671c6280854e086c673eb45c27c038fd68aedff2fda836ef881f136f25d5e6b7d1262964aa02b03f98fbf153131935edcc97576f35c33349212cc4f39f7ab26186dfce5b200f73451f7600dcb8cf27e7400c0b291914046c9e0718fde81371b8e7273f4ef4007691919240e714097f31f376e7b5008caee27807b0f5a02c8e1b3c6d27d33cd0201d839523144d1a149ae084b78da47638211771fd050d582c3a0faab5119b6d12f8ab1c06788a0fd4e2ac356fd1fe08754ddccaba849696309e598c9e2103fed1dcfdeadc44fea5ff00a7f956366d375e492403ca935bedcf1eea4ff6ac68a55efc1beb3b552574f8e7009ff933a927ec715bc82b3a8f4d6bba5ca1352d22fe061cf9a0383f71dea5119cc6c0baed3eaac0f1fad40897dcc3d81f7a052366c1007df3400f21edefc5008c28f30c9c5170ee4fc37830086395250a7c66770c18e78da31c0c63de8609b41f7c515c5172a30c3b76344a3e377cb2339cf7a242aea89808cce368272b8c1a2e107c672a49f5c1a181c9c7ae7da8a2119e7b1f5068099ffa68258a132062d8f9e0f34059502b61bf2824e681bb297ced2a71efda80f19c47b9c77fdbe74057c13e539cf3c1a0eeeb9c73f33405ddb4f18249c1e28062b79ae242902024465b9214614649e7bd0362a7249eddc513456e5720f38f5a1a98e96e95d6baa6ebc2d1ad1e65521649bb469f563534d6d7d31f04347d2a2fc5f535db6a0e83718906c887cbbe5a9a8bef44dce9f731ca9a2e89169d6d6f2184b1455dc07b11dcfeb4d16f119c649a681285b03d3e5500f87820ff006a0e098191de80ac9b8904647b55d11da9681a56a31f87a869f6970b8ffe4883629a289aefc16e92d441682da5b098f21ed9f033f353914d19b751fc08d66cc16d12fe2bf45ec92ff0df1fdbfb559ec667aff4eeb1a04db359d3ae6d40eccebe53f46ec7f5ab82263da7dcf3eb5174e5181076918c7de869503232491ee4515c1803824f03b51287f30e0e7d803449494832c157278a2e8c71fcb9f9d144639236824d01e142efb1768cfb9c7ef40512a818de78ff00a682518e7cc30ab9e00a02cce9953247bd41e467191ed9a04205ee99da4e4e3d283a524b0427b5026c18a8e082067db8341ce0e39ed409b6502907391edda80f2dfdc496f0c124ac6184b144cf0a4e338fd2894f7a7342d4ba9b568f4fd261f12571966270a8bfd47d8511bae85f02b47b7fc34bac5d5c5dc88a0c90ab6c8d9bedce3ef4d1ad691a6dae976a96d616d15b409f9638d70054a1dbc68ea51d4329f4619a8022b78e04548515117b05000a035c5c4702a995c26e3819f534047bcb68a458cce866719540724d02e41c0f7a012a40f6141cbc8e7bd01719e38e6838af1c0a04ca8206d3cd037bdb082fad9e0bd8a39e0718649141047d0d5d18f759fc0cd3af164b8e9999acae4e4f81236e898f7c0f55fed574615aee83a96817ef67abda3db4ebdb7f66f983d88a061bb8db9e3d45165076db83c1f950a53780d8247c80a2398f182724f1c7ad080c608cfa7a51a0062adc7afbd0130173bb9c5070f071cb37e82826106e8f615e01c9e680d6b35bc534be3c1e3831b2aa962bb188f2b71df1de819ae4b1048c7f57bd01a58268e332642ae0704f7cf6207af6a01b99e17b7b6416e227407c494139909ed9f4c0a04a4e501e0f1eb40d263e53dce7fa682c9d0bd13abf58dd6db18bc2b157c4975270ab8ef8f563f21447a73a03a1f4de8eb031582b497328066b97fcd21ff038edfde88b7e32703bd64188e7e6283864b73400cd804b67ca3268317eacea6d56ff005233592f8b6303f953fa4af7c2fa93417fe98b763e0ea171297bab98558068f695ce0e08fdbd281e5c6a57ba5e9d14d716ef7774f2ec112601da4f27ec2827ada74bab559a20e148fcae36b0f91140283729c77a0e0a7777a01dac68395719e39a029607cb901b19c501480ab9279f4a086ea8d0b48d76c0586b7143224a76c61ce1831fe93e86b43cd1f12fe19ea7d2533dcdbeebcd20b612651e68f9ece3fcf6fa5067cbcf20ff009a051724905411e94032799060723da8406d6c67e7ea68d0e1770fe5cfb5026c37039ef9a02eca098c91e6e01e71c500b1d8a49c12786cf6a06a4e256008e3d050119958007920e2801154e32fb4120927b014017eb1c523ac5209a356215c291b87be28957ef853f0d66eaa99352d515e1d190f947669ce7b0ffa7e74a8f4be996569a5d9c56b6704705b46bb5238d42851f2ac875712bc70b3c30f892019540704d01ad2669a0491936330c95ce7140b2e4939a03638c7e8680ae485e33bbe540d60d3ada162c90a02c7270a39340a4f28b68da4645007a8f6a069a746f73235ddcefc391e12b2e1916824948742c99382473c73404791c617695279dc0640f9502c578c9efeb4095cb4cb0830ba21cf999c6401f4f5a05061d430c8079a02e03b3004311c7d281b5e3cd676c65489ee594e4aafe6c7ae07a9a0a075bbea3a8ea96f047d3935ebc404f04ad29411e08e011d98fed416fd212ee5b05b4d5ad6300c615807f1171eaa49eff5ad418c7c55f8466dd66d57a521f20cbcd66a7247a9283dbe5418a63862479877cf1f6c5008e400bdf1ce684016fe53dfbd1a73794600e08ce3d6800377c8c7d6800a9cf75fd4503d91492460f7ee3d28247a7b459f5fd592d22711c206f9e563858a31f99cfd050583518ba75247b1d134f9aed21396d4669769931dc01c003f7a329c4d17458ac5b55d36c12e040a3f1da75c1cb04ede2447f7f6a94567ad7a66db4fbbb29ba7d65b8b4bd8ccd09c8231eaa07b8ab04a7c2cf87b3f53ea8d77abc72c1a5dabe2452bb5a561fc83e5ee7e541e988218ed2dd22b7855228d76a46a00000ec00a510bd4dd511f4fe84da95cc31f880022da4902b1e7d3e99ac86fd03d631f565b4ee6d4dbbc649009cab2e48c83f514165b8b94b6895c44f279c280839e78ce28178ae6de46748a789e453865570483ec6812d42e85a421fc37918b00a883924d024c6e99b7a2a966c0009e17dc9f9fed40f81c77e28139218e4ff9815b9cf23340a01c907b9140201038ed402fcafd28386464e4fd33c50272bc60032609cf00fbd024f722dc66f24822ddf972f8feff00e280f69b24844919cac9ce7de83a447f30ded823007b50459d6ecacb528349b979127651b1dc795f1f3f7a0990148054823dc5015d491c0a0c3be337c2ff00c489b5ee9c87172016b9b541c49ff5a8f7f71eb560c1fc43e0a47e1aa94277310431f91fa551c1727f29ed409b641c86e31839a3454805739c1f6a026f1fd740f64665fc8c31cfde82db79bb40e9e8f49b62eb7d7e8b717ec832c91ff247fa1dc7df2281bcc9369d671493c422b7911654c1215f92bb8827bf068624ba635392df5eb4b9924558ee5bc19b71cee43c6dc7cf34c657be8db0b0b9d0f51d2afe668934dbf9628ddb8c2b8c0073f3a80da37546a7d25174fd95dc125c69f7313ee5655dfc313bd483cf07b1f6a68d5b48d5ec758b612e9d7293211c8fe653f35ee2a084eb9e8bb1eafb3582fe496278f3e1c919fcb9f97ad03ee8dd017a6741b6d3229dae161057c5750a48249ec3eb4139238568f6a9e7b103b5037934cb3793c610a2cd9277a8da73f5140ee38f6280c4b11c65b934023006d50050030e4647de80c846de3b500fcf9fbd0197273ed4007b91400e580c8e45074a82400e72682b36fd2162b7f25ddc09af2766ceeb872db79cf00f6a0b3229550140e07007a50092db860673de818df473c862686dad6470d9cce3b7b63e740fa1de6252ebb5bd81cd00bee2d800d003a6464004763ce683ce9f1cbe1f1d3a67ea1d1a30b68edffba814708c7f9c63d0fafceaca31e6dc71e1f07daa82608c83819f7a1a11ce149238fd68d0a579ec682cfd27a7c3a86bd10bc38b3b756b8b93c1fe1a8c91f7381f7a034f752ea5aa5c5eb292f732128037619c018f6ec282e5a2cb047abda74d5ce9b6da80f136de4a496219b3e48c92000323ea73467519d3da5bb757dbda410ac90c77c23058f99007ee7ec31416882ee47d23acb5185caf8bab4691b1efe57fff0038a9457ee75a82f6e7429350466b482f2742c0f74241c80c38c64541a9cfa1e89ac0177d33ab3d8de28f2b5bca429f91140e2c7a9b5ae9fb85b6ea9b46b9b3c796fe040768f76ec0fafb1f9505df4ebdb3d4edd6e74db98ee216fe68ce47d280648f75e2485a44da385ddc13f4a025ddbdbea16a633286566ce55f9c8f6c502ad750db2c514f30dec428247e6340bbf04100b73402afb943ed2b9e30683836defe9403bc1e06734020e06280cafe8683a375941d841c77c1a0151b467b50159f00e4127e5402872371040c5046eb5aadbe9b1c02e2f6dad25b89047099c677b7b0140fe3f1010afc803f3018e68160c3041ee2823f5dba92d34db89a1d9e2843b03b6d05bd013560c1748d57aa2797c6b35bab78e6959dc47231580ff336dcfb03c1a58364b5bbb7d7fa7b7427f1f673830c8664285bd1815238fad20f2c7c41e979ba43aa2e2c1cb1b663bede438f3a13c7dc76fb5515e9065b851f7a02950002a09c51a1b83cf14176e90d3645e9ad7752752aac23b3439c066665c827e944d29a6410aea725c4567135bd840d3c88a723728c29c9efe6c50d3ee9545b0bf8ef2e6e3c2fc2c6f72f2920e5f19039ee4938a9a875d03278377acf52ddf867f036ef71923932bfe51fbd3475cdc369df0db4fb389d4ea37970fa9cc0b00511795ce7d4f181eb4cd2451755fc45ac16d637381b14ca36b641dfce723e4053170d6cb52bbb362f6d3cb19241f2b9029862f09f143549ba7e7d2eef6caf2797c66ee17fdfd69862d1a069da7dfdac579d17adcda5ea9e1a992376c4723e39e3b024fd7e94c458ac3e25dee8d31d3bae74e7b79002bf8b8549471db38f5f4ed4c165e943a06a328d4ba605b4b22a1523c420c64fbaf38a82d36f0ce7cf7463790729b53017e940e0b0ceceed8ce0500e1b70daa08f5c9ed41d271cd0132476e7d7ff00aa069797d2411168ed9a41fcc858211f73c5075acb25ca6fb82aa31e58a36c81f561dcd033d42169e158ac64b98151b3981c2966cf639f4a064c7a8ac55e4865b7d493701e1c8e52403ea3cbfda827e390ca3f2c914aa81991bd281cdacc2747215c60e0ee5c67e940cb51b0b2bcbd824bfb08ee1a252d1caea1821cfa67b1fa504982b2283ce08f518a08abb82f6dd0369a5662081e14ce40c7ae1b04fda82275cb0bfd4f4536f7114589a5412461f3e4ce4e0e060f63f6ab2893d3b4b5b5b78e22ed22aae3cc3cc7e64fad3449a22a461500007602a0cd7e3b74c26b5d2ad79147baf34eccca40e4a7f30ff3f6aba3cd0543267eb5427b86f1f4c76ef45d0eca1ad5ef224d13e1cf4fd9b22192fa67bc955f8c8c617fba9fb510d7a6ed3fd43a735e5b54964be658c048fb6cdd9e7eb8a186bac97d174e6d22e23437b7ac26b95e77c68bf950fa7279e2b22dba45b59e97a669fa4ea36aeff89cea9a90451fc355ff0096ad9f4ce3f41570675d4fa8c77da8de5cde5be26bc653171ca47dc1f6c9fed5562b97f70276808da7c24f0c1c63804e33fa8a2928c0e0383c8f7ed41d92a41393f4a2548595c2c37493db4cd04e8a08f139566edfef3445b6e7aeaf65d2df48ea2b11776ae02a93e564c772adef409f4ee8ba9a21d73a36fa579ad9f325afe599171ed9c30a960d5ba0fe2843abb47a6f510fc26a4c36890f9558fcc6783506a1147b510024e30339ce680d2c6ae9861eb9a009178a0205443b989e39cd01d8075e3047ce80563057ca381ed4011c4531e503d85013c91b804a21279c903341131cda8c3abdc8650f6d20c4321232adec3dc504bab2c113c9293bb1963df3408dd4b75e1efb2856463dbc43b4631fad047e9177ad4fe32ea16b1db4b8fe1aa92571f5f5a0916bc8e0895af5c46c17cd8c9ff7da80f6d736f7f6915c59cab35bc837238ed8a072a31c1ef4062870718a06f7702dc5b3c522ee4752ae0fa8230683c75d6ba3b74ef535fe984929149e4278ca9e47edfdab42058003763ed409f88ffd6dfad06b1f12ae612fa0c76e0b471e9916d23f973eb4158d3efeff004a984da5debc1295d8e4018dbf3145d583a2ad96f356bbd7f5d90dc59587f1e79a6392f28fcaa3ee47159444ea3aa5ddfc7acf50dcdc344d7a4dbc317f52641200f6000fdeb41b5ef51d8eab672ffa9e971c97c11638268e431a46000012a3b9a351567db823b11f3ef40948e428048207a8340ab48ae83cb83ee0f3428a982719edf3e68c9cc97d3fe15ad8c9be138f2bf38e7b8f6ef40f7a5f55bdd3f56b46d3649127f1405f08e7249c76f5fa50689d48ba5f545cdcbdb462cba9206411b2b055bb07d4fb1c73528d4fa8f52d62cf47b6b8d2e65fc458c49f8a818795c151939f977a823ba0fe253750eb7fe937b04293f9f6c90be41dbdc7ff006283473c1efc1a06f69776d73bbf0f2aca32572bc80470450284a46dfca19f819f5a04e799614def26c0bdce09cfd85045dc75769d12dc3c3e2491db0dd3c85195235f7c91cfd066ae0cdba9be31f4ec61a386c1ef9d4ee473e45cfb1cf34c101d3ff1ac9d481d46c628ed24751881880833f988e7b0fa5328dfed2f2def2ce2b9b79925b791772ca87208f7a60182ee2b95cc0c48f53823fbd40ac658b30f4f4a086d4ee1d75bb6b78f4e965596366fc5211b23238008fde81f43692da5bc30d97831a0397dc09e3d714087506bf61a2c4cd77324726d2caaec141f9fd2ae0c435bf8c57173ad7876f7a2daca10489121244cdf319ce3dbf5a834fe81f881a6f57bcb6ba7c53c72c11873e28cee1db391dbef4199ff00ea4348116a5a66a8a8a04aad04847a90723f6ad7d18c312ddc02a3815423ba0f63fa541687bd9efe1b533b3c9e0a78473e899e318a09bd0ba6eef543e3b2bd8e9b10064bd9e4da001dc81401aeeb29a984d0ba7d5e1d06d4e6594f06523bc8e7f5c0ac8af752dfc17d7090d9218ec6d9447129ee71fcc4fb9cd6842ab10dc0014f3e5a2c1704b671dfdc734525226dc939e283a362c7f940344a380393df144733e2276e38f5efcd01b4bbbfc3dda4a9298a44395902e4a9c70682660d4265d62de40b1bdc1545054f95c8fe627df141af7c3af8808f3dd68dd5d2a45765884b8908d8c3b6c27b7a77a945d7a5fa474bd2ba8e4d5748b28624955d5d8b13b79ee9e983d8d40a753758c7a46b96f6114725dc92279a2810b3a64f94900763cfafa503fd3b59b79ed84da34713c0cd890f0a158fa1f981de826e1b548959fc4dc5cee24b6467e59ed4101ff19e9f676baa5d6a72c50adb4ad1ac790ccc076200f7ad41e7df881d79a87576a5f87b0f161d381db1c2a36e7e6d8ff3416bf87ff082c6f208ef7a82f22b9761bd6d619785f6dc477fa53705ab57f83bd297ceb1e9caf67708db9c4526723e849e3e94f212dd25d117fd29a8c09a76b534fa39cf8b6b71ced38e36fb73417f52e64548e34007e673e9f21ef590a1c918c90718dc281a69b68f67118d9da5058b798f6fa7fe280daadd1b2d36eae70710c4d263df0a4d583cc7a668fd4bf11b5837d7c93dcd9a3146959822a0e781f4cfa55161e9dd7fa67a4f55b9e9aea3e9f81fc09ca0ba118998fcdb2338c7b528d39f4cd2ba76e2d357d292df4eb391809963420ce1b1b576fa1e7359119f1eb4e17dd033ca172d6b2a4df303383fdeb5c8f2eef3bce4e0e335684cb0c9f354160d36f64b0baf16072b91b5f03391f43c51aab23a5debe91c4fad4d73689e6fc3a290573ff4f03e59f4a3280d67581ce916567f84b58ce0a1fccec3d58fa9a084de08c90464e4d1a8e419059b201f4a05630a176918efc50176293872c17bf14042aa0125b03db14046c60b60123fde6827fa0c68edd5365ff11346ba6292ee64194240c807e59a32b7fc51bfe8bd5ed5db424860beb62b89218422ce09c11c01dbbd0660ae110bf1bf2154838dbebfefeb41a8f4cdac7f117458f4d9ecd2df53b4cf81a822808c47255c0f7c8e7fb54a2ec2cfabba3b4b4b8d3af12eedad40926b0f070a13f9b633649f7a82eba6ea4357d321d4ecad512daf20df26e016507fa4fbfaf3e98f9d067dd2bd2faac9aa4d72d72d1e9510ca46a7631c7a320e18f1dfd7bd059afb7da816d23de4ba5de211346a1e4785f190548e4648c63b64e6b43ce9d5baafe3b539c5b452dbda46c638a167cb281c73ee4ff9340e3a3fa5f5aea4ba58f4bb57dbfcf2b02a8bf7f7a0de3a5fa0b50d2a2d92eb3e048c0a97c867dbedcf6a944e5cf4f6b76d1b3d8ea42795066266c87c81c65b9cfaf15048e83af3cd64abac08edaf01546c38dae4e0657ee6826e5b892de3702292e2545ddb55700fd0fbfca81c4b3bc718716eef9eeaa402280d14ab3c0b2c65c06fe571823ed40df56b217fa6dd5ab9216689a33f2c8c558307e83b8d77a37aaa7d22f2512c28768800c9954671b3d33ebef568d0ef7a7749eb0b5bbbb162d657b32b46d2e1564c8ed9c5644d1b0b9bbd261d2a440af6cb0e2e5b1e7dbc1238e0f7a0375b696daa7496a3a4dac8a92cf078685b271db04d391e40d5ec4586a1716de2a49e0c8c85d3b120f715ba1899173ff305413070abd89cfe9f5a2d3ee9c8639fa874eb6b804c52dc46b20c9f302c3bd11e84d47e1af4d5dc6521d3e3b662c19a58721ff5a9a321f89bd27a374b456d158dccd34d333332c9b4b2afbe47a7cb1f7aa33d2bc0d8c0f1c8f6a2c14b6d501b39cf63450897380c319e3de8065031c038f7ed40d8faf1ce41e4d004876a8dc3cc7e743025c956c818028c904579e7f0e15695c9c0541924f6c00283d0bf07f42d6b48820b8d62d20b2b58d656404959e52f83c8ff00fcfafbd4a35bb06f12391a48dd55cee2b2f3818ed8f6a8158a159890f02242079147623e631c502b0db436d1ecb7458d4738038fb0a087d6eeb508f48bb7d32d95750752b6c26c905b3ddb6f61eb574794f5cb6b9d0fa9678b512b25d24bbe52b8c1638278fbd582c57ff12afaed45b5bc0d0d8a8c08a2731ee3eec5793f40450466a1d59af446293c186cd53ca0c36eab93dc649e49fbd048e89f1675ed35e301e293919dcbf9867b37cbe94a35fe94ea4d33aba6824306dc48015750d86c6e247b0cf63591a40b8dc23fc30f14138dcac3000f9d03687547f12e8dd5af816b13148dddbcd29039c0f6f6f7a0eb5d62caf5636825db70c9bc4328f0dc0271c8a090627d3073ce681acf6505ccf14d35bc2f2c2731bb28254fb8a075144a83ca806792400334049ee6281e2496408656d880ff0031f61fa50446bd76058ea1b9e21025a3bb48afe71df9c7b71de9c8f196a0de23ca7b827d4f7add117e0cbfd4b5059392369663ff004e71c51aa97e8f555eadd258f2bf8a889cff00dc28cbd0bf123a926e96d163bdb74490bca2321c678209ff001591e71eafd7a7d7ef45cde2c20aae144638033fb9ad2e1b5e69d058da431ccf21d4a5c3b4631b62523807feaf5c7a50222f2d648c25f5aeec8c2cd19dae3d3e87e944d3eb7e90d425b49ef2292de38224f1505c3f8724a9eeaa7bd0d57a60406059436306868a7803839c7ad1a158039c13f4a33a716767f8cb9b6b55e1ae2458813e9938cd07a9f42d0b4de99b4b7d1f41b58ff19b03c93ba06607fa8b1f5f619a5b8266d74a65d42da6ba90cce996dcdc8c9fff006a5a2c2635083b05ef83eb5028076341db4b1ed9f7a04651fc41db18ed419d75b744dbea335fcb0db0335f2057901c05da73c8f9d5d18a75174a3f4c47335e35da4ce418a489374254f707d463d33565d1529b569a489a17944b06ec8057d71dcd037b4b6b8bfba31584124b27e62a8a4f1ea68357f83da7ea5a76bfe0912453ccabb49194653cb60f6ce3dfda983d196cd108c2401711f9768e306b2297d73fc6d02773a8b591922693c5004bb9d72542fa2f6efde8314ff867aeeec27500b77bb5670e36ca19b1dff2e7f2fd2837ce8bd5dd348b78b552219022870d9c46e792a4f6c608a0b846c8e03232b29ec41cd0199f1410fd4b24b1e8f712c0a5e4452d851e6c639dbf3238a0afa42ba77475e4ba8470896681da45180b18da76af3c9029c8f26dc1df2b9c606e273e86b743331924f27f4a82c12280e59b008e79f6a2d4d74188ff00e30d203a82ad7519c1ff00b860d11ba7c5e86c9fa3afae6f4091e043e021270b21e01c7dcd6479ab4dd3aeb56be4b7b184cf2b301b57d07bfd2b4bad0fe25e9f6960ba7c7a55ac50cd750335ccaade7723b83b8f6e38a2207a5ba4e7ea3d93780cb616ca53781f99fbff009a0b675a5be9765d43a75a6ad3b25adb4185429b831c70303dfdfd2831eb8954ca48f3827819c71ed406b2b1b9bf9a5fc1c4ce2253238047957dc9345d122b792eee522811a495ce1157b93ed444ff0049f476b1aaf51c761345269d25be269259570c833c6077249e062a68f53e8ef0da69509d4ae225b92a04af232ab16f98cf1f4a5a266d4dbca8af13a329ecca723f51502d14f0cb9f05d1c8ee01c91f6a0393b4edfe63c8a031608859b38f97340d84d04e5846eae50f9829ce3eb400fb24466041f5e3d2823f56d22db57b192d6e61468a41c823ff0035651916bbf04ada7badda5cad6d1b72c09dc33f2a6875d25f0865d06fe2bc6d4c4d3282026cca8cfafcfd29a34cd234a10c768f711a78f1bb392a3001208e3ec69a26a58d640c832091c90706a084ea1d3eeafdadf4f86da3166c0b4b397c18f046140f5ce4d04f4702436e91c28a9122e028ed8a0a9f5a5b6a09a1bc5a135bc72cce048b3c5bc15c638f9d59043fc2db997481aa69dae49e1cb6bb643239211939e467818f97bd305965ebce9a10bc8da9dbaa2679dd9ce3d8530572cfac87566ab05ae9f1490692b9696e1f833738555f96793504df5f25945d2576b7ec16dc46792381c7b7ad5e60f234980e42f6c9c56a82ec3eff00bd4124e49700f1c646e3cd169ce9575f83d52cee324347323f6e3861ff008a23d47d4ba6a75074fdcd8ef317e2e2ff0098bdd4706a60c3f4ae8cd5f44eb8fc3e97248a638cbc73bf90483d463b373e9574685abf42a6b5649fea72bbdeac4a8d3b018cfae31f7a6895b6b29b41d30d8e9f6bbed9213e1b7a994e724fcbb5064bd7835a9752d3af75d8116354778f660788cbd9483dbb0a0cd20b2b8d43528ad2088bdcccf854039cff00e2827a0d34e9da1de896f2182492efc0976f998aa827d3d334113a74aa9a9298628e74570478bc0c7cf1da83724bb8246d3e6416b0384da61b5501c9f5c3704f152c037561a95f5fce61d3ad6db4ab950f34b331dd9f4191db8fdcd406d67a675ab4b6d325d1af248272a43430315ddec7038f6ad4b3f448bf47eb71cb69abddebf21d5e26896203846c30c8603b9c6452d9835901405660376319ac84bf13180779d8bb82827d4fb0a06f777367a75acd7170f1430a9f331200cfceae061a0cf6dac692d7365266191db0578f5edf3a6075a6c9278b3433188a467860d96fbd40fe540471409aa0c1140750001ed8ed4058e15133c983960077edf6a06faade5c5b7822d2d926766cb967da2341dd8f0727d85033d27597d62e2ee3163756915bbf8799d71e2f19dcbf2a092b88dd9a311950a0e5b70ce47fe6ac18af53f5b69da9752dd69da9ca906876e24465d9e69881c6ff005c679c0aa2bfd267a347512c93dbb5d42d90d3c800b68c9ce0ec3cfa528db74ad034db5905ee8be1ac728dc153984f3f980f4fb56453be2de8f647a6aff53796596f0aed46798ec033ce149c0fb0ad71479c9bb9dc3bf3c55a0b95f65a825150b481a407b93c0fda8a29c06671dc93803bd131eafd0af6dffe18d2ee25982a4b04603b7a9c631fad03bbe586381bc5945b96385718c827db3eb5288eb8ba934eb15fc3c535f05427796dcccdec7150637d5bd55d5362b7975aa4d0d919018adec8637807bb60723000e4f7cd58203538aefa8aeb478a7b9beba924547b8774cf8608036a80704639cf1f9855d1a7f4c68b67a03de5e5d59dad8d988c62e1c0f107a1e7fdf7a082ea6d07a6e3e99375a7cb6b3db093c727701e2360f7f53dfb50653d4130d42ee18f48b3f0232a15218936963ebf5fbd06dbf0cfa74855b9d46e04b730c6144691e12307d33ea7de8348ba6b5478a279a004f98c479247b81f5a9438805ac0be2e02e73c9ef8fbd40c2346d43578eefc40da7da1dc8b8eefea4fcb9fef419beabf12a4bcebcb2d2fa7ee0dc58492084b30236bb6467dce383f6a0b87556a67a7f4d95a0bbb5468816f0a69c78b2e072572719ce78357079dfab3af2e7a92c963b88d94abbbf91cedc93edf418aa2c5f0dbe2a6a9a0c90d8de34773a6a8da1186d6403fa48fec682d9adeb7a9b4c9d572dacc9a6c9700456e5ca910e000ecbd8e580352fb1ae7476bd6dd49a325e5a9f3025245fe961dea097523cc0919a032af039a006936c81423104649c703ef40dcce64bc3035a87b6f0c378f9fe7cf2b8fdf340a4b6e25962915d94a67807839f7a043586922b5636ec44c061063f31f6ab079d7fe19b7eb2d4efeef55d5d74f992e9a0fc3a441dcb13927b838c9aa2d4bf042c618e178efee6e18104870172318edf5c1e6945bbe1a748ea7d2315edbea3a99bcb190030c401010e4e783ee0fa56455be3d6b90c1a6268d69e17f1486900ee98ec29ccc183119419e7e55ba11f089f523ef5058363a8059fb8e31e9421b491056c01819e28d3d0ff07eea3d53a1e3b6b8db235aca63c139c0eea68ca47a9fa6ef757b83ff00bf68ad428c2f248c7a8f9fcea518df516adac74e7544f63a2ea172f1800291e6cee19ec78cd5826344e85b6bad25ba8fade5b99dae0ee11efc71e858f7e7d054a2d7d39a75ae8f7b6b00b8917f1516624b78429da327cec493db1db1d8540cf4aea28f58d6aeae2f6dd64b498082d880488d149fcea7d4939ab04175e6850a8d32de3b78e380c8de32c4db4e18e430fef543cf86fd0d691b4fabdf6648b3b2db69ce7dd87be68342d2f4fb9b5b891af1a28a2dc05bc5036d001e0eef7352884b961a2ea9aa7555c885e08d45b5bc52b61b686c120fb939fb541276bd4b61d53624d942e2f6200bc32290633e99f4233416dd3ad3f0d611c0c77b632e71dc9ef41156dd27a45addcb3dbd9c513b1dd941821bdc7b558333b9f873757fd69a85e3f813e9c7723b5d93265d872473c11544a68ff08fa75e290b42ec4e4124e70738fa5048e89f0f745d2aeadd2decedda6525c975121183c77f7a945c754d0e0d563682ed43425369403bff00bcd58308ba7d5fe13f5a05889974a9d8b46aede4914f707d88ff001528ddf4fd7edb54d1a1d56c312dab2e64dbc9418e78f5c541296d70b716d1cd6f8789977230ecc280cb7519b816f212b205de4e0843ce300f6cfcb39a0545c42cee88e0b458ddec33ee680eac92266360debc7b5056fad2d354b9b189745744be121daf27e550548ce3d4d58324d07a725e98ea2b7ff5381f5169a7579d021fe13904ee43ddfbe49038ab46e76cf05cc714f6d309232a4a98ce54fd6b2196bb7f2e9b631b2c427b891b6851db3eff002007341e5bf887aa2ea3d4f77378be381e42fdb711ed5a1554395caf1cd07617dcd04fc85402101da791421b49920331381c60d1a69bf02f56f03a925b12c162b98c955f775e47df19a32d99b518268e4491668704a79d4aeec7b7bd4a30feb7e9144d76e265697c3e2693631674273803e556087d76f35fd49859e9925ccf611141106f2e182e3241f727f5a94681a268f79ad1b1b8b9dd66b1c2b1ce9bb06361c1e7bf3fe6a096b0d3ba57488e485b52b40909c386901607d47bf7a0ae758eb69ac4d15be81a748f0a9c35cc90b2eff4c03c1c638a0b77405c5d5d45f87be5fe359a88b81b401dc1c7d38fb50586fed18ea3015790091591e447c1518c8c7a0a0a5754d8c9d49a8d9f4ee9dba0b3b5224b9692327728f627e7c6682f9a7e996b6b3a8b6b748a348820c7720761412c064e3041ce282b5d4bd73d3bd3f33daea97ac2e540dd0a292dc8cd043c1f15ba2a7923b65bb910371b9a12141f9d02edf13ba2ade56857551e5e77244c54fd0e280746ebfe99bbbd655d56dcdc9ce08465565f4ee3bfca82d53eb3a6dac3e25c5f5ba646402e33fa77a0aff5b74ad8757e9ca972844aa37c520fcca7d3f5ab067bd369a8f467544d626c98e9f7118f0200e4465c903049c8c9e6ad1b24334b6fa6249716cab20037c309dd83db03b5640dddac3764a4f02cb1103863919fa7a1a06d6f600c37162911b7b252b87dc773f1927393f4a079f868edae1ae6328a8b1ed38e30050226e85d5dc1f879011b3c47c2f604719f9d01eff4f4b83e3c6b18bb452b1cac9b8a83de80b16e8208a3b7b58e1407cc061427cc0ff1560ce7a8f592d69a97504cad2dac01a2b53900c3e9e51ea58f727d0551e73bfb86b99a49a46dcf21c96340dc13804f20f6f9501c0e3b8a0963316fcc4607007f57bd084d64dec01200ce483468ff0040d525d1755b4d4206ff0095207c11dc67ff0019a18f56584f6daad9dade4211e39104a8ded9152b235cd8c530613229c8c1c8ef50472e81690ee00322b0c100f0debdbb7ca8111ace856371358cba85aa5cc407891ccf83f2ef4048b4ad2e59bf116769672c72f99dd1437239078e2824a4d3e1b94559234110e781839fa0a0561b38ad532a12319c86c6307e740a9732a3a00cac870cd8e0faf0681be8b6db965bb909df3c85806eeabced5a09523647e6e0fef419a6adf116daf7ac34be9dd1da686e7f1ca2e243b76320ce57df9ff1560cc3e3f470ff00c78255b842b35bc6c4af9b6e323d3e95467b6365f8dbcf062beb68c119595d8aaff6e282422e9899b4f6bb5d46cda2562a76316c1078f4a0859e1b9b762c0bf94f0e84feb4125a57505c58ea70dd5d0174a986d92b1c13f6f5a0de7a5be366877260b5d42dee2d2423124a487507ebdf15289dd3fac7a7bab6feded74d61733473acdb5a162142ff00313d81ed505fa58fc6d809380c1b9f5c502e0e05040ea367a85dea454de2ff00a610375b04c16c7a16ef8340b5f6930dce9375636acf6a278f04c5dd4f1dbf4a084e91d06f3a52dee62bbd4a2b882494ced3c8a448063b63b638fde803ab7ae749b2b3096d792c93c8c109b55dcd18ce3710473ffdd043dc758dc5869044565aa5dda4c3c2b7bc78c1f14e3963db03e7c0ab066bf1327d41ba76ca6bc48ecad24c456f6b0c87cf8e4bbfa138c0fa9aa3297c83dd4e28395811cf2680a5b93c7ed413cd1ff0f3c797b8031406645236b0508406f30e68ba49c051b97d0e0e7d28ad57e19f575c5be8f269515dac772877c11bc464dea7ba8c739ce78f9d3193bb8ebfea2bcbd6b5b6b8b58bb7f13c2f0ce31cf0deb4c0f2dbad6d743d2ee99efae752d6c02a86e0054524f6383c7ff94c0b6af274c75149a46a5a82c46f1e1479fc3190bd8156fbe7f4a960bf74e9d253f1167a3ac09e0856610e3041ec7f6c540f67b892cee7f8d18368232ef2af2508c7047cf340ead5bf130accc9b1186541e723d09ffc5033bbb1b82d74d6b37f1244daa1b38073df3f4a08eeb1d3b50d4fa6a5b4d32f12cef1902ee73e523d476fde8306eb0d3fabfa4ba92c278af67bb7281606472f90bdd58558253a6afb40ea1d62283a8b461a66a6f931cf6a7c2466f7cfb939e7b5515fbed3747b5eb8f06eb78d35080a2ec9719c76f98049a0b4ebdd37d1bad869acbf0b03c5c16b29444adf50ded41995f68564a263a66b31cd02be152505493f51c1a088bab69ad1bc179e320f07c37c8a0692b46c4995f0381db39a0b2fc34e971d57d4705bc8db6c50ef9dd97b81fcbf7381528f5ae97a1d8e996d1db69b0c7648855b10a81b80f43c739c54134147b9a036063279fb5046e957726a0f2cfe04915b06db1788305ffeac7a0a00d72f8d9c491c06337533050ac7185cf2df6a06da2da4293488f34973328c34aea428c9ec3eded40ee7d2ad249448f6b133820ee2833df3fde819ea96897461b05b87815f2ee919e5d47704fa039ab079b3e326b70eafd4ef6d6650d8e9ebf868b69c8247723efebf2aa280eb9193ebedc5002a124e015340018fb8fde82cf32b1603d0678cd02406dce3008e47ce81b499c331383c9c9f5a2e9c69377369f7d6f796a4acf148acb83fb511e91b3b3d0bab745b7d45acedd8e3732b71b1fd73f7a5a19eafd09a56a0a96b1c705b49c48510761ce4fcfbd4d0d752826b2b583476fc3daacb295b79d768de8a32b1e71f989e49f6a7d14dd1af5ba275a45b8b093c054492ea769092373765c1da4679fbd306e36ba9595fe9f0dcdbcc92c33e1579cf27d0d409ea178f68521b6b76926ee8a7853f7ff140bc768d78f6f73748d1cd103b543f0091cf6efc502f7319dac194371d8b6326829f0c501d7ae6fa568d5d4942c806d4db81839f53c8cd59456fae6e628749b5bab8b1865b08e4726588ec11e7f2e49071c93da9a31dd4341d675e9a5bad374f9858162d0b4ac70e18f0573df35a0c759f87bd53a404f174f965dfff00f479b1ef570576e34bd4b4cc0bdb3b9b7258a00e846e3f2a94376475cee4914af7ca9150685f09ba61efb52fc7dd69bf8eb7c158d1d0b47bb38f37efde968d6eeb4eb5e91d6ad25b660aee59974db6881690918e31ce39279e062a5a34bb57b88adedd1e379679065d80036679e6a07e8391bce7e940c659ef5afe1286de3b16f2b8903094b7b2fa7ce81eb380c4260ed193f2a0cd6fa5d4a4ea0fc7bdadcce923158a3039db83c038e3ef41a0e96b2ad8a35e009291b8a939d9f227e43bd590436bbd6fa269202c974b7123602c76e779624e00e29833bf897d493e896525dbcb2a6b5a9c3e1456b91b6d60cf989c7f31f7a60c02490961ebcf3eb541308e39e067b507007b96007a67fb50178f97eb4165ce18165c2927b773fad023202d9c8dbb7818ff003408300b87f2f1c107d0d0c15a4f2e339c90467f6a18bdfc2cea8ff4bd561b4b9ba686d6e64552c4f954e7d7e46a60f4688d240af1b2bc6cbf5047ca960617ba658de1b792f2d94a5ab33461b18524633fa1a81b5c8b5168967369d23c0e0a24622dc981d81c76aba29df0bb48d660d52fceb88d069f04aeb69130037127f37b9c0ed9a8350781240bbc06da72323b1f7a0eb8816e633192ebc8c9472a78fa50349b4c83c068e24f0ddbcc1c13b837be4d055b57e98b996d4db5b4a893dc1e6620b6ccf2c467efc504ce97a38d3f4d874bf09af6d46e2f25cb82724e791db15650a43f878b51fc34f3da8f132b6d6a98c80a39ff007e99aba249631b58b9047239ec3e55368aeeb7d2da6f52c0eb7f16e87f2c6e836ba90724ab7a67b55d115ac7c3e8aed2182def4c56a14096368959a423d77e3229a27b41e9d8343b01069c8a8dc9660aa3713df3c64d4a1c695d3d6b67a8cba94b9b8d4e61869e4e4a8c636a7f4afcaa09a485519caae19b966f7a0435196582c656b74df3e308beec7b50629375775b691ac5bdb6b16d6378779f019b00a31cf391c9c2f1daae0b35ef52f5374de88d77aa45a6cd25ddc0108694ee2188c28007603d6a0d16c92430a4b2ed3230dc401855cfa0a0a07c45d7b5db9d462e9ee960b14b2ee134ef8c850012147ec78ab0670b643a2efae753d72686e6e2da211db42176079c8e768f65e39f7aa332d6f58bbd635096f6fe6692695b24f603d801e82823cb900ee00e68006460051dfd680ed9f0c905b713d8d006d5f5419fa505a18f94e40501b1b81a04186d62402c87be3d6810b81290aea8467201231cd1749dbc437f9f1e201db3de8ba07dc0175c027f28a335b17c26f888d6b6d0e8fabf892a29c453b1e547f49f7a946d6424f08236491c833ee0835073294888894120700f0280813c40a6711bc8843e00fca7d3ef40e41dc081f9a811681c6f7565329185623b7e9de812b3bcf11ff0b74563bd50494cf120071b97e5fda80d7577046c9019d5669dbc340324eec67fb734103d5da96bf67a7cf0e916f6e2765f25ddc4c11107ab1c8c647cce2816d3ec7f0f6564cae6e67da375e6d52cc4af2e4fb13ed4145f899d47b3499f4bb6d46cda49b69b92921565c3648e3dd40c81cd5c0ae89f13ec246d3e379ed2d6da180b5d34849da1780b128e49271c9f4a60ba685d5fa36bc42d95c324ec7090cc9b1d87b81ed50588958977cacaaa3b9341c655f12348d1dcb8dc1946540f99a019e2134454eeda7bed3839cd052fe2136b536b5d3563a1ca53c49da4b9507198940ce7e5c9fbe281c6b7a974cf4ee4ea7242d76dc784a3c595b3e9b464e3f6ad0ac745ccbd4fadcbabea42da56959a382ce7460d6b1a93c01f97272093ebf6a82f1ad6af0e9da5cb3cecf6902216919f82aa3818c7a9f4c530649a9f5269ba7429d472239bc991a1b0d3c3152880f0f23039e7bf3de90635ab6a377aa5ebdcdecef2c9239e59f3827e5ed54302195fcc38cd01245395c1f5f4a05b606538e483c501b6939e3b5077860f3914165754c33e549000dbe87de813b820c27fa7baafb8a04a69c98e281e42618c795338033df1f3a06c03e4e029247007ad010093c35674da71f977640340081a190658e41c820f141b0fc33f8926c218b4ed609366a02249bb2d19ce3ea4528dbece68eead926b7916689c643a9e0d643387521fea2f693c2d6efc786ee46d9bfed3eff2a04669edf5295ff057a60bd865309246d3bbbedc1efef41d63a8dec9ab4fa7dd4510fc3c69234ca186e2d9c003b7a67bd034bad0a5bb96e25d575267889cc1b54446d9bd0a37bfbfbd02925945a72cba8dddc48b3f87b1e58f23c623f292bdb7fa7cf38a0a5750f54ebba56a9a67fc516b6d6fd3970ea9234677c8dc7f38f6e4640ce282d1ac4b16bfa72c1d2bad430cd1ba822061865f5007d3daac19cf547c189357d561bbd3eee683c62cd786e9b73337b8c7bd512bd39f06adedec2de0d5ae639da372e6485363107f97767b505cee755d03a5e58ac228659af123184b7b733322e38c91dbf5a943ab3d52e64b49ee755d2e64950e238e35f10c884e17cbe87dc540e6d7509a4f110e9f7566a471712850abf6ce463e6280bacea36fd33a4497f773cf32c698dcc4beee33938edc7ad05534aea683ae61d64c4d2a69b6b88d16d5ca5c303f3e386cf61db140e27b5e99e96b64bdd562b6b30aa36c6c37cac7dc9eec6b42c1a66a962fa70beb6b516d0cbe76322f86c78f6c66831bf8b5d5d2dfa35a5dce60b1933b6ce3c788769f2b331ec1b8fd2831b79649984b239773c1dc68129725c1c640e73400ec781d8fb1a03c4a85d0c8582640257bd01e51fc42236263c9c67be280429c6037eb405dbf5fd682c2a0bb976cf07d3fc5009279ef8ec4e68193a9902b28e7dc71fb501d95b098e0f6dd9e0d0049131019b047b8390281bb292484e47c8500c4f242c3076bf704704739a0be7c3febfbae9a5daf23cd017c7e19fb107bb67d0f6fd6837cd2757d1fab34f4f05e37dde630b1c3a91edf4f7159103d6eb7da65fdbdf59dadb5e2460ac876ed9e1c8c060f9efe9c8a0a75cfc42d5742d2ee5a7e9dbb494b6d6b9bc930cce4f940e3cd81ed4160e98f88315e689fff0022b57664199cc5196f0c7a164ef8f98cd0589baffa68590985eb15c0db1985839f6c2919340b69d03f5285bdd6f4bf021424db4329cb153fccc3d09c76a090d3340d2f479a7bab3b38e2924e5e451cfd280d7dafe936f6c5e4bd89813b02a36589ce318a0358dc35cc4e17f9bf234cdbb78fa0c607a7340e6cec20b1596610c6934b8323226379edda81da8dcb9ec40a042f50b5bb21645473b58b11dbd7bfca8304f8add5d67a9ea8ba5d8ea72c1a4d8a952f10f2c920e368cf71e99fad5833dd0754d6ed66bdb2e9a91a5babb2a310465a57c1ddc1038e7bd5171d3748b8d46ee1ff005298dc6a764c27d4eeaee7fe1c01795881c9e7804fe940dbe287c4b6d75a1b1d1c986d62277c91bf131f4c0f6fad0663737135d3b497124924871f98e7803007d2811dc5b83903dc0a0333f03be7de8122df2c9a05a11e5f51f7a05ce7071804fca8033e5da0734020b0183bb23e5416269577ed0e5323078ceeefdff6a03dbcd62914c2f629a47c622689800879e4fbd046f9d8a2a03e31385c0e73da8b83ca590947dcaead8208e73da8849b3e19ce704f7c5015586d006431f5cf61f3a04ee586ff002481c8fe6191408f0011eb8e30682774dea9bbb5784492ca6385832e1ca95e3d2834be9df8c312e2db5eb4375080337000f1303d18763591a469baef4d755989ec6f6dae5a23e20b599406dd8e080ddbed41272f4dd8caf1c86d163910f9595882a3d718a035edd695d3b6a926b57d0ac65b10b4e06eedd863bf141077fd7af2782bd3fa26a1a8891d57c630948c0279393dcd04cf5875258f4de9f0cb7b7b6d66d2b81ba752d85f5214724fed41036bd79d2fe319d7a8f4b9c81e58de2f04827b9ce09a07a3acecf54b790685ace8697606009e52c377b7f2e682b097d7d36acf0f55df5edbdc0977412468cb6ce3be10af3c63b9c8a0b0751f505be9690dd5d752436f62a3fe4c6448f3b7b0c64e38f615734651f107e3045ac42b67a7693018633b965bc1bc838ee173807bf7cd33065baaeb1a95f2c11dfcd2bc51fe48880aa3e8a062a8b059f595df4ae9a74de9e9ec499d43c97b1427c6e47e525bb63e4282ad3ea3712893c599dbc4259c1627713c927de81043950df97db1406da8411c92063be280230839627078e79a0390a71b5bb5003a8c1232338e4507025573e9fbd02a0e41dc0e680c3691cf714053bb34160895dc16f291d98d02322aa39f3e14707ffaa06f202a5bb0c7201f4a343aca51090497efdfbfce89840c8db8e46573923ff14410b00490d9f5c1a0425dd8ce4673e873cd0265e4dbe7041ed814009b8cbb8e5863bd07163b7716e0607b6698060b96b7b9478dc8643918247ee39a60b7e97f133a8b4e0c63d4ee597380923970a3ef4c0e13e25dfcfab457ba95bdbddb212016501867b9cfbfda982f907c74b282da34874a9048aa479c83838edc62982b7ac7c42d235cd67f15ac5b40c366418a2cb0c1c81e6f5e31db14c160d035de8cd4a3f18ea96562cc37359dfe9cac887fef039fd6b39446f56ea5d13a9dca4579a922496b1975b8d22dfc3566cf9557230703be715ac1431d4d2275325d7fae6b4f6f182a93ef1e32a9f41938f6a60afeb1a95c5fea53dccf772cf2c8c489240031f627e7565c0d67bbf160487c1801073bc0c31f91f953420f2bc8c7c52cc540032738a809905c0f4fa501940208e73df34028e703938a0577ae013f4a001300db4f03b71407461ce0502dca8c9c7dcf6a003fafcbdcd0070bc1e0fd734070db467b8a04cb9c9e68274b93bcb1daa40200ed4099765249ec476cf340849b8b264823bf34689ee009cb671df1409bc8e8b8e770e3ec68984d9c953cf97be2860b248caaebc107dc67f7a184c31232db88fd451031ce50e76039f5c8045026efb8f93279e0fd680b239504f0483d88ef409ee25bb90c79c0e050151c6e21b39ce783eb40adbcc2cefa17bdb61322387781c950e3dbdf9c8a066f28790b22e013db3dbef54726081e63c6460d34191b1bb0720f634060e7600412c781502409c8e3d7b500ed71dbef8ed40243f181c0a02e5d4e0fad006f644e4819e3b501f7e3049e7b501bc43b4e391da80558003392d40a23305e320d02e64cf998e1bf5a032b0c927b8e68049c8c8e71c6280377043118f4e680bbff00de0504ddbb3128371c1c64668024e59f3cd02521254e4fad1a2107e48fe6a6809ddb9e78a029e1463d05027ffc744a6c3857c7b1a205ff00e637fbf4a02b12b1794e39f4a02024e7249ed409924720906800005173fd7404989698ee39e4f7a04cf723d07a501fff0097ed406ffe36a018ff00281e99a037f4d0731f3bfd28007e53400ff99a810248c0cf140bc60123233cff008a0557f9beb4056eff007a07109243e79a03778b27bfbd02b128c27039a054001b818a06609de793da815006070283ffd9}\par} {\pard \ql \f0 \sa0 \li0 \fi0 lalune\par} {\pard \ql \f0 \sa180 \li0 \fi0 Here is a movie {\pict\jpegblip\picw20\pich22\picwgoal400\pichgoal440 ffd8ffe000104a46494600010101004800480000fffe0050546869732061727420697320696e20746865207075626c696320646f6d61696e2e204b6576696e204875676865732c206b6576696e68406569742e636f6d2c2053657074656d6265722031393935ffdb00430001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101ffdb00430101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101ffc00011080016001403012200021101031101ffc4001a000100020301000000000000000000000000080905060a07ffc400231000010501000300010500000000000000060304050708020001090a11153976b7ffc400160101010100000000000000000000000000060800ffc400261101000102050109000000000000000000010200030405061121b33134365154717475b4ffda000c03010002110311003f00a90cf388f366a62aa720ed6ae07f96901f3831d973452b8cf36fe3570fc908e46d466433e5dd954f2e96992d9e498c7753faa44916e016ca91cc7d88b38fe60a5b97737defcbcc539c98d336a57f4fc2ca9a486bf07ab575ad9a3af4df221d8215e36df86c4504ff0024574551b3d687ee0575757b3ad64e311ee62bd94158d37e24198c43973099f1fc0c41614d950246513a081abf76cfe7061f6863281e6352fd1670949c148dd6dfb0d25f5b3689b1d5c965b0eacbf4e0932ad28e22ab9ae945633f4744bd3c8cee0a7fdf085b9000f449c5f7afa30b83e0b6fd7b0c8429c9467ff9715347c891e25fa24a205861aa715e6a09bd0488237dc2723414d9891381524e8ca7c0894664f835653631ab55ee7e3de433e4ff001b30949124e4c10c8b6ad0a479b3f9c937b2cf5bc0095ad600a0a41a0e9faee174a1c605e161c6c7a313539650b0113190f1a8368e60d5b24f30ff008ea7f0bf867fa6595feeb6978f1fe0f9c26177f4d63a51a9235184750e7d18811339cd000000c75f000e00380380ae390c350def826ed42ad051fa6f501c50f9b699c3b69cbeb76476d202bf3ac985b6e0e968be66572893e6a744540bd9722e5c87956848629bc2559306bd113e8653d3b6aff651dfad7a3ac8b02958cba02a93ccf525757039bae6cff090e1d90688e8aa233ee86a4c4a3e0586d6b2340522e47dcb7d0046d8a5acb05a123ee25d2b230b2ada6e2e2f9ede3c05202520ec2487b0d56562529d8b3393bca76adca4ec1bca508abb001babc007915d84fe3dd14e207e3c62f8379da2a3b861fb6629d28dba53b6ea388ebfed866bf6dfb553455e91ed547ae92e9445253a4fdf3efb4f8ebdfbe7d3c78f1ee0bb9e13e358e942a4ed49e22cff00eeb35fdd7ebfffd9} icon.\par} {\pard \qc \f0 \sa180 \li0 \fi0 \emdash\emdash\emdash\emdash\emdash\par} {\pard \ql \f0 \sa180 \li0 \fi0 \outlinelevel0 \b \fs36 Footnotes\par} {\pard \ql \f0 \sa180 \li0 \fi0 Here is a footnote reference,{\super\chftn}{\*\footnote\chftn\~\plain\pard {\pard \ql \f0 \sa180 \li0 \fi0 Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document.\par} } and another.{\super\chftn}{\*\footnote\chftn\~\plain\pard {\pard \ql \f0 \sa180 \li0 \fi0 Here\u8217's the long note. This one contains multiple blocks.\par} {\pard \ql \f0 \sa180 \li0 \fi0 Subsequent blocks are indented to show that they belong to the footnote (as with list items).\par} {\pard \ql \f0 \sa180 \li0 \fi0 \f1 \{ \}\par} {\pard \ql \f0 \sa180 \li0 \fi0 If you want, you can indent every line, but you can also be lazy and just indent the first line of each block.\par} } This should {\i not} be a footnote reference, because it contains a space.[^my note] Here is an inline note.{\super\chftn}{\*\footnote\chftn\~\plain\pard {\pard \ql \f0 \sa180 \li0 \fi0 This is {\i easier} to type. Inline notes may contain {\field{\*\fldinst{HYPERLINK "http://google.com"}}{\fldrslt{\ul links }}} and {\f1 ]} verbatim characters, as well as [bracketed text].\par} }\par} {\pard \ql \f0 \sa180 \li720 \fi0 Notes can go in quotes.{\super\chftn}{\*\footnote\chftn\~\plain\pard {\pard \ql \f0 \sa180 \li0 \fi0 In quote.\par} }\par} {\pard \ql \f0 \sa0 \li360 \fi-360 1.\tx360\tab And in list items.{\super\chftn}{\*\footnote\chftn\~\plain\pard {\pard \ql \f0 \sa180 \li0 \fi0 In list.\par} }\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 This paragraph should not be part of the note, as it is not indented.\par} } pandoc-3.1.3/test/writer.tei0000644000000000000000000005372607346545000014166 0ustar0000000000000000 Pandoc Test Suite John MacFarlane Anonymous July 17, 2006

                Produced by pandoc.

                This is a set of tests for pandoc. Most of them are adapted from John Gruber’s markdown test suite.

                Headers
                Level 2 with an embedded link
                Level 3 with emphasis
                Level 4
                Level 5

                Level 1
                Level 2 with emphasis
                Level 3

                with no blank line

                Level 2

                with no blank line

                Paragraphs

                Here’s a regular paragraph.

                In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item.

                Here’s one with a bullet. * criminey.

                There should be a hard line breakhere.

                Block Quotes

                E-mail style:

                This is a block quote. It is pretty short.

                Code in a block quote:

                sub status { print "working"; }

                A list:

                item one

                item two

                Nested block quotes:

                nested

                nested

                This should not be a block quote: 2 > 1.

                And a following paragraph.

                Code Blocks

                Code:

                ---- (should be four hyphens) sub status { print "working"; } this code block is indented by one tab

                And:

                this code block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{
                Lists
                Unordered

                Asterisks tight:

                asterisk 1

                asterisk 2

                asterisk 3

                Asterisks loose:

                asterisk 1

                asterisk 2

                asterisk 3

                Pluses tight:

                Plus 1

                Plus 2

                Plus 3

                Pluses loose:

                Plus 1

                Plus 2

                Plus 3

                Minuses tight:

                Minus 1

                Minus 2

                Minus 3

                Minuses loose:

                Minus 1

                Minus 2

                Minus 3

                Ordered

                Tight:

                First

                Second

                Third

                and:

                One

                Two

                Three

                Loose using tabs:

                First

                Second

                Third

                and using spaces:

                One

                Two

                Three

                Multiple paragraphs:

                Item 1, graf one.

                Item 1. graf two. The quick brown fox jumped over the lazy dog’s back.

                Item 2.

                Item 3.

                Nested

                Tab

                Tab

                Tab

                Here’s another:

                First

                Second:

                Fee

                Fie

                Foe

                Third

                Same thing but with paragraphs:

                First

                Second:

                Fee

                Fie

                Foe

                Third

                Tabs and spaces

                this is a list item indented with tabs

                this is a list item indented with spaces

                this is an example list item indented with tabs

                this is an example list item indented with spaces

                Fancy list markers

                begins with 2

                and now 3

                with a continuation

                sublist with roman numerals, starting with 4

                more items

                a subsublist

                a subsublist

                Nesting:

                Upper Alpha

                Upper Roman.

                Decimal start with 6

                Lower alpha with paren

                Autonumbering:

                Autonumber.

                More.

                Nested.

                Should not be a list item:

                M.A. 2007

                B. Williams

                Definition Lists

                Tight using spaces:

                red fruit

                orange fruit

                yellow fruit

                Tight using tabs:

                red fruit

                orange fruit

                yellow fruit

                Loose:

                red fruit

                orange fruit

                yellow fruit

                Multiple blocks with italics:

                red fruit

                contains seeds, crisp, pleasant to taste

                orange fruit

                { orange code block }

                orange block quote

                Multiple definitions, tight:

                red fruit

                computer

                orange fruit

                bank

                Multiple definitions, loose:

                red fruit

                computer

                orange fruit

                bank

                Blank line after term, indented marker, alternate markers:

                red fruit

                computer

                orange fruit

                sublist

                sublist

                HTML Blocks

                Simple block on one line:

                foo

                And nested without indentation:

                foo

                bar

                Interpreted markdown in a table:

                This is emphasized

                And this is strong

                Here’s a simple block:

                foo

                This should be a code block, though:

                <div> foo </div>

                As should this:

                <div>foo</div>

                Now, nested:

                foo

                This should just be an HTML comment:

                Multiline:

                Code block:

                <!-- Comment -->

                Just plain comment, with trailing spaces on the line:

                Code:

                <hr />

                Hr’s:

                Inline Markup

                This is emphasized, and so is this.

                This is strong, and so is this.

                An emphasized link.

                This is strong and em.

                So is this word.

                This is strong and em.

                So is this word.

                This is code: >, $, \, \$, <html>.

                This is strikeout.

                Superscripts: abcd ahello ahello there.

                Subscripts: H2O, H23O, Hmany of themO.

                These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d.

                Smart quotes, ellipses, dashes

                Hello, said the spider. Shelob is my name.

                A, B, and C are letters.

                Oak, elm, and beech are names of trees. So is pine.

                He said, I want to go. Were you alive in the 70’s?

                Here is some quoted code and a quoted link.

                Some dashes: one—two — three—four — five.

                Dashes between numbers: 5–7, 255–66, 1987–1999.

                Ellipses…and…and….

                LaTeX

                2+2=4

                x \in y

                \alpha \wedge \omega

                223

                p-Tree

                Here’s some display math:

                \frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}

                Here’s one that has a line break in it: \alpha + \omega \times x^2.

                These shouldn’t be math:

                To get the famous equation, write $e = mc^2$.

                $22,000 is a lot of money. So is $34,000. (It worked if lot is emphasized.)

                Shoes ($20) and socks ($5).

                Escaped $: $73 this should be emphasized 23$.

                Here’s a LaTeX table:

                Special Characters

                Here is some unicode:

                I hat: Î

                o umlaut: ö

                section: §

                set membership: ∈

                copyright: ©

                AT&T has an ampersand in their name.

                AT&T is another way to write it.

                This & that.

                4 < 5.

                6 > 5.

                Backslash: \

                Backtick: `

                Asterisk: *

                Underscore: _

                Left brace: {

                Right brace: }

                Left bracket: [

                Right bracket: ]

                Left paren: (

                Right paren: )

                Greater-than: >

                Hash: #

                Period: .

                Bang: !

                Plus: +

                Minus: -

                Links
                Explicit

                Just a URL.

                URL and title.

                URL and title.

                URL and title.

                URL and title

                URL and title

                with_underscore

                Email link (nobody@nowhere.net)

                Empty.

                Reference

                Foo bar.

                With embedded [brackets].

                b by itself should be a link.

                Indented once.

                Indented twice.

                Indented thrice.

                This should [not][] be a link.

                [not]: /url

                Foo bar.

                Foo biz.

                With ampersands

                Here’s a link with an ampersand in the URL.

                Here’s a link with an amersand in the link text: AT&T.

                Here’s an inline link.

                Here’s an inline link in pointy braces.

                Autolinks

                With an ampersand: http://example.com/?foo=1&bar=2

                In a list?

                http://example.com/

                It should.

                An e-mail address: nobody@nowhere.net

                Blockquoted: http://example.com/

                Auto-links should not occur here: <http://example.com/>

                or here: <http://example.com/>
                Images

                From Voyage dans la Lune by Georges Melies (1902):

                lalune Voyage dans la Lune

                lalune

                Here is a movie

                movie
                icon.

                Footnotes

                Here is a footnote reference,

                Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document.

                and another.

                Here’s the long note. This one contains multiple blocks.

                Subsequent blocks are indented to show that they belong to the footnote (as with list items).

                { <code> }

                If you want, you can indent every line, but you can also be lazy and just indent the first line of each block.

                This should not be a footnote reference, because it contains a space.[^my note] Here is an inline note.

                This is easier to type. Inline notes may contain links and ] verbatim characters, as well as [bracketed text].

                Notes can go in quotes.

                In quote.

                And in list items.

                In list.

                This paragraph should not be part of the note, as it is not indented.

                pandoc-3.1.3/test/writer.texinfo0000644000000000000000000003410507346545000015047 0ustar0000000000000000\input texinfo @documentencoding UTF-8 @macro textstrikeout{text} ~~\text\~~ @end macro @ifnottex @paragraphindent 0 @end ifnottex @titlepage @title Pandoc Test Suite @author John MacFarlane @author Anonymous July 17, 2006 @end titlepage @node Top @top Pandoc Test Suite This is a set of tests for pandoc. Most of them are adapted from John Gruber's markdown test suite. @iftex @bigskip@hrule@bigskip @end iftex @ifnottex ------------------------------------------------------------------------ @end ifnottex @menu * Headers:: * Level 1:: * Paragraphs:: * Block Quotes:: * Code Blocks:: * Lists:: * Definition Lists:: * HTML Blocks:: * Inline Markup:: * Smart quotes ellipses dashes:: * LaTeX:: * Special Characters:: * Links:: * Images:: * Footnotes:: @end menu @node Headers @chapter Headers @anchor{#headers} @menu * Level 2 with an embedded link:: @end menu @node Level 2 with an embedded link @section Level 2 with an @uref{/url,embedded link} @anchor{#level-2-with-an-embedded-link} @menu * Level 3 with emphasis:: @end menu @node Level 3 with emphasis @subsection Level 3 with @emph{emphasis} @anchor{#level-3-with-emphasis} @menu * Level 4:: @end menu @node Level 4 @subsubsection Level 4 @anchor{#level-4} Level 5 @node Level 1 @chapter Level 1 @anchor{#level-1} @menu * Level 2 with emphasis:: * Level 2:: @end menu @node Level 2 with emphasis @section Level 2 with @emph{emphasis} @anchor{#level-2-with-emphasis} @menu * Level 3:: @end menu @node Level 3 @subsection Level 3 @anchor{#level-3} with no blank line @node Level 2 @section Level 2 @anchor{#level-2} with no blank line @iftex @bigskip@hrule@bigskip @end iftex @ifnottex ------------------------------------------------------------------------ @end ifnottex @node Paragraphs @chapter Paragraphs @anchor{#paragraphs} Here's a regular paragraph. In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item. Here's one with a bullet. * criminey. There should be a hard line break@* here. @iftex @bigskip@hrule@bigskip @end iftex @ifnottex ------------------------------------------------------------------------ @end ifnottex @node Block Quotes @chapter Block Quotes @anchor{#block-quotes} E-mail style: @quotation This is a block quote. It is pretty short. @end quotation @quotation Code in a block quote: @verbatim sub status { print "working"; } @end verbatim A list: @enumerate @item item one @item item two @end enumerate Nested block quotes: @quotation nested @end quotation @quotation nested @end quotation @end quotation This should not be a block quote: 2 > 1. And a following paragraph. @iftex @bigskip@hrule@bigskip @end iftex @ifnottex ------------------------------------------------------------------------ @end ifnottex @node Code Blocks @chapter Code Blocks @anchor{#code-blocks} Code: @verbatim ---- (should be four hyphens) sub status { print "working"; } this code block is indented by one tab @end verbatim And: @verbatim this code block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{ @end verbatim @iftex @bigskip@hrule@bigskip @end iftex @ifnottex ------------------------------------------------------------------------ @end ifnottex @node Lists @chapter Lists @anchor{#lists} @menu * Unordered:: * Ordered:: * Nested:: * Tabs and spaces:: * Fancy list markers:: @end menu @node Unordered @section Unordered @anchor{#unordered} Asterisks tight: @itemize @item asterisk 1 @item asterisk 2 @item asterisk 3 @end itemize Asterisks loose: @itemize @item asterisk 1 @item asterisk 2 @item asterisk 3 @end itemize Pluses tight: @itemize @item Plus 1 @item Plus 2 @item Plus 3 @end itemize Pluses loose: @itemize @item Plus 1 @item Plus 2 @item Plus 3 @end itemize Minuses tight: @itemize @item Minus 1 @item Minus 2 @item Minus 3 @end itemize Minuses loose: @itemize @item Minus 1 @item Minus 2 @item Minus 3 @end itemize @node Ordered @section Ordered @anchor{#ordered} Tight: @enumerate @item First @item Second @item Third @end enumerate and: @enumerate @item One @item Two @item Three @end enumerate Loose using tabs: @enumerate @item First @item Second @item Third @end enumerate and using spaces: @enumerate @item One @item Two @item Three @end enumerate Multiple paragraphs: @enumerate @item Item 1, graf one. Item 1. graf two. The quick brown fox jumped over the lazy dog's back. @item Item 2. @item Item 3. @end enumerate @node Nested @section Nested @anchor{#nested} @itemize @item Tab @itemize @item Tab @itemize @item Tab @end itemize @end itemize @end itemize Here's another: @enumerate @item First @item Second: @itemize @item Fee @item Fie @item Foe @end itemize @item Third @end enumerate Same thing but with paragraphs: @enumerate @item First @item Second: @itemize @item Fee @item Fie @item Foe @end itemize @item Third @end enumerate @node Tabs and spaces @section Tabs and spaces @anchor{#tabs-and-spaces} @itemize @item this is a list item indented with tabs @item this is a list item indented with spaces @itemize @item this is an example list item indented with tabs @item this is an example list item indented with spaces @end itemize @end itemize @node Fancy list markers @section Fancy list markers @anchor{#fancy-list-markers} @enumerate 2 @item begins with 2 @item and now 3 with a continuation @enumerate 4 @item sublist with roman numerals, starting with 4 @item more items @enumerate A @item a subsublist @item a subsublist @end enumerate @end enumerate @end enumerate Nesting: @enumerate A @item Upper Alpha @enumerate @item Upper Roman. @enumerate 6 @item Decimal start with 6 @enumerate c @item Lower alpha with paren @end enumerate @end enumerate @end enumerate @end enumerate Autonumbering: @enumerate @item Autonumber. @item More. @enumerate @item Nested. @end enumerate @end enumerate Should not be a list item: M.A.@ 2007 B. Williams @iftex @bigskip@hrule@bigskip @end iftex @ifnottex ------------------------------------------------------------------------ @end ifnottex @node Definition Lists @chapter Definition Lists @anchor{#definition-lists} Tight using spaces: @table @asis @item apple red fruit @item orange orange fruit @item banana yellow fruit @end table Tight using tabs: @table @asis @item apple red fruit @item orange orange fruit @item banana yellow fruit @end table Loose: @table @asis @item apple red fruit @item orange orange fruit @item banana yellow fruit @end table Multiple blocks with italics: @table @asis @item @emph{apple} red fruit contains seeds, crisp, pleasant to taste @item @emph{orange} orange fruit @verbatim { orange code block } @end verbatim @quotation orange block quote @end quotation @end table Multiple definitions, tight: @table @asis @item apple red fruit computer @item orange orange fruit bank @end table Multiple definitions, loose: @table @asis @item apple red fruit computer @item orange orange fruit bank @end table Blank line after term, indented marker, alternate markers: @table @asis @item apple red fruit computer @item orange orange fruit @enumerate @item sublist @item sublist @end enumerate @end table @node HTML Blocks @chapter HTML Blocks @anchor{#html-blocks} Simple block on one line: foo And nested without indentation: foo bar Interpreted markdown in a table: This is @emph{emphasized} And this is @strong{strong} Here's a simple block: foo This should be a code block, though: @verbatim
                foo
                @end verbatim As should this: @verbatim
                foo
                @end verbatim Now, nested: foo This should just be an HTML comment: Multiline: Code block: @verbatim @end verbatim Just plain comment, with trailing spaces on the line: Code: @verbatim
                @end verbatim Hr's: @iftex @bigskip@hrule@bigskip @end iftex @ifnottex ------------------------------------------------------------------------ @end ifnottex @node Inline Markup @chapter Inline Markup @anchor{#inline-markup} This is @emph{emphasized}, and so @emph{is this}. This is @strong{strong}, and so @strong{is this}. An @emph{@uref{/url,emphasized link}}. @strong{@emph{This is strong and em.}} So is @strong{@emph{this}} word. @strong{@emph{This is strong and em.}} So is @strong{@emph{this}} word. This is code: @code{>}, @code{$}, @code{\}, @code{\$}, @code{}. @textstrikeout{This is @emph{strikeout}.} Superscripts: a@sup{bc}d a@sup{@emph{hello}} a@sup{hello@ there}. Subscripts: H@sub{2}O, H@sub{23}O, H@sub{many@ of@ them}O. These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d. @iftex @bigskip@hrule@bigskip @end iftex @ifnottex ------------------------------------------------------------------------ @end ifnottex @node Smart quotes ellipses dashes @chapter Smart quotes, ellipses, dashes @anchor{#smart-quotes-ellipses-dashes} ``Hello,'' said the spider. ```Shelob' is my name.'' `A', `B', and `C' are letters. `Oak,' `elm,' and `beech' are names of trees. So is `pine.' `He said, ``I want to go.''' Were you alive in the 70's? Here is some quoted `@code{code}' and a ``@uref{http://example.com/?foo=1&bar=2,quoted link}''. Some dashes: one---two --- three---four --- five. Dashes between numbers: 5--7, 255--66, 1987--1999. Ellipses@dots{}and@dots{}and@dots{}. @iftex @bigskip@hrule@bigskip @end iftex @ifnottex ------------------------------------------------------------------------ @end ifnottex @node LaTeX @chapter LaTeX @anchor{#latex} @itemize @item @tex \cite[22-23]{smith.1899} @end tex @item @math{2+2=4} @item @math{x \in y} @item @math{\alpha \wedge \omega} @item @math{223} @item @math{p}-Tree @item Here's some display math: @math{\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}} @item Here's one that has a line break in it: @math{\alpha + \omega \times x^2}. @end itemize These shouldn't be math: @itemize @item To get the famous equation, write @code{$e = mc^2$}. @item $22,000 is a @emph{lot} of money. So is $34,000. (It worked if ``lot'' is emphasized.) @item Shoes ($20) and socks ($5). @item Escaped @code{$}: $73 @emph{this should be emphasized} 23$. @end itemize Here's a LaTeX table: @tex \begin{tabular}{|l|l|}\hline Animal & Number \\ \hline Dog & 2 \\ Cat & 1 \\ \hline \end{tabular} @end tex @iftex @bigskip@hrule@bigskip @end iftex @ifnottex ------------------------------------------------------------------------ @end ifnottex @node Special Characters @chapter Special Characters @anchor{#special-characters} Here is some unicode: @itemize @item I hat: Î @item o umlaut: ö @item section: § @item set membership: ∈ @item copyright: © @end itemize AT&T has an ampersand in their name. AT&T is another way to write it. This & that. 4 < 5. 6 > 5. Backslash: \ Backtick: ` Asterisk: * Underscore: _ Left brace: @{ Right brace: @} Left bracket: [ Right bracket: ] Left paren: ( Right paren: ) Greater-than: > Hash: # Period: . Bang: ! Plus: + Minus: - @iftex @bigskip@hrule@bigskip @end iftex @ifnottex ------------------------------------------------------------------------ @end ifnottex @node Links @chapter Links @anchor{#links} @menu * Explicit:: * Reference:: * With ampersands:: * Autolinks:: @end menu @node Explicit @section Explicit @anchor{#explicit} Just a @uref{/url/,URL}. @uref{/url/,URL and title}. @uref{/url/,URL and title}. @uref{/url/,URL and title}. @uref{/url/,URL and title} @uref{/url/,URL and title} @uref{/url/with_underscore,with_underscore} @uref{mailto:nobody@@nowhere.net,Email link} @uref{,Empty}. @node Reference @section Reference @anchor{#reference} Foo @uref{/url/,bar}. With @uref{/url/,embedded [brackets]}. @uref{/url/,b} by itself should be a link. Indented @uref{/url,once}. Indented @uref{/url,twice}. Indented @uref{/url,thrice}. This should [not][] be a link. @verbatim [not]: /url @end verbatim Foo @uref{/url/,bar}. Foo @uref{/url/,biz}. @node With ampersands @section With ampersands @anchor{#with-ampersands} Here's a @uref{http://example.com/?foo=1&bar=2,link with an ampersand in the URL}. Here's a link with an amersand in the link text: @uref{http://att.com/,AT&T}. Here's an @uref{/script?foo=1&bar=2,inline link}. Here's an @uref{/script?foo=1&bar=2,inline link in pointy braces}. @node Autolinks @section Autolinks @anchor{#autolinks} With an ampersand: @url{http://example.com/?foo=1&bar=2} @itemize @item In a list? @item @url{http://example.com/} @item It should. @end itemize An e-mail address: @uref{mailto:nobody@@nowhere.net,nobody@@nowhere.net} @quotation Blockquoted: @url{http://example.com/} @end quotation Auto-links should not occur here: @code{} @verbatim or here: @end verbatim @iftex @bigskip@hrule@bigskip @end iftex @ifnottex ------------------------------------------------------------------------ @end ifnottex @node Images @chapter Images @anchor{#images} From ``Voyage dans la Lune'' by Georges Melies (1902): @float @image{lalune,,,lalune,jpg} @caption{lalune} @end float Here is a movie @image{movie,,,movie,jpg} icon. @iftex @bigskip@hrule@bigskip @end iftex @ifnottex ------------------------------------------------------------------------ @end ifnottex @node Footnotes @chapter Footnotes @anchor{#footnotes} Here is a footnote reference,@footnote{Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document.} and another.@footnote{Here's the long note. This one contains multiple blocks. Subsequent blocks are indented to show that they belong to the footnote (as with list items). @verbatim { } @end verbatim If you want, you can indent every line, but you can also be lazy and just indent the first line of each block.} This should @emph{not} be a footnote reference, because it contains a space.[^my note] Here is an inline note.@footnote{This is @emph{easier} to type. Inline notes may contain @uref{http://google.com,links} and @code{]} verbatim characters, as well as [bracketed text].} @quotation Notes can go in quotes.@footnote{In quote.} @end quotation @enumerate @item And in list items.@footnote{In list.} @end enumerate This paragraph should not be part of the note, as it is not indented. @bye pandoc-3.1.3/test/writer.textile0000644000000000000000000002415107346545000015051 0ustar0000000000000000This is a set of tests for pandoc. Most of them are adapted from John Gruber's markdown test suite.
                h1(#headers). Headers h2(#level-2-with-an-embedded-link). Level 2 with an "embedded link":/url h3(#level-3-with-emphasis). Level 3 with _emphasis_ h4(#level-4). Level 4 h5(#level-5). Level 5 h1(#level-1). Level 1 h2(#level-2-with-emphasis). Level 2 with _emphasis_ h3(#level-3). Level 3 with no blank line h2(#level-2). Level 2 with no blank line
                h1(#paragraphs). Paragraphs Here's a regular paragraph. In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item. Here's one with a bullet. * criminey. There should be a hard line break here.
                h1(#block-quotes). Block Quotes E-mail style: bq. This is a block quote. It is pretty short.
                Code in a block quote: bc. sub status { print "working"; } A list: # item one # item two Nested block quotes: bq. nested bq. nested
                This should not be a block quote: 2 > 1. And a following paragraph.
                h1(#code-blocks). Code Blocks Code:
                ---- (should be four hyphens)
                
                sub status {
                    print "working";
                }
                
                this code block is indented by one tab
                
                And:
                    this code block is indented by two tabs
                
                These should not be escaped:  \$ \\ \> \[ \{
                

                h1(#lists). Lists h2(#unordered). Unordered Asterisks tight: * asterisk 1 * asterisk 2 * asterisk 3 Asterisks loose: * asterisk 1 * asterisk 2 * asterisk 3 Pluses tight: * Plus 1 * Plus 2 * Plus 3 Pluses loose: * Plus 1 * Plus 2 * Plus 3 Minuses tight: * Minus 1 * Minus 2 * Minus 3 Minuses loose: * Minus 1 * Minus 2 * Minus 3 h2(#ordered). Ordered Tight: # First # Second # Third and: # One # Two # Three Loose using tabs: # First # Second # Third and using spaces: # One # Two # Three Multiple paragraphs:
                1. Item 1, graf one.

                  Item 1. graf two. The quick brown fox jumped over the lazy dog's back.

                2. Item 2.

                3. Item 3.

                h2(#nested). Nested * Tab ** Tab *** Tab Here's another: # First # Second: #* Fee #* Fie #* Foe # Third Same thing but with paragraphs: # First # Second: #* Fee #* Fie #* Foe # Third h2(#tabs-and-spaces). Tabs and spaces * this is a list item indented with tabs * this is a list item indented with spaces ** this is an example list item indented with tabs ** this is an example list item indented with spaces h2(#fancy-list-markers). Fancy list markers
                1. begins with 2

                2. and now 3

                  with a continuation

                  1. sublist with roman numerals, starting with 4
                  2. more items
                    1. a subsublist
                    2. a subsublist
                Nesting:
                1. Upper Alpha
                  1. Upper Roman.
                    1. Decimal start with 6
                      1. Lower alpha with paren
                Autonumbering: # Autonumber. # More. ## Nested. Should not be a list item: M.A. 2007 B. Williams
                h1(#definition-lists). Definition Lists Tight using spaces:
                apple
                red fruit
                orange
                orange fruit
                banana
                yellow fruit
                Tight using tabs:
                apple
                red fruit
                orange
                orange fruit
                banana
                yellow fruit
                Loose:
                apple

                red fruit

                orange

                orange fruit

                banana

                yellow fruit

                Multiple blocks with italics:
                _apple_

                red fruit

                contains seeds, crisp, pleasant to taste

                _orange_

                orange fruit

                bc. { orange code block } bq.

                orange block quote

                Multiple definitions, tight:
                apple
                red fruit
                computer
                orange
                orange fruit
                bank
                Multiple definitions, loose:
                apple

                red fruit

                computer

                orange

                orange fruit

                bank

                Blank line after term, indented marker, alternate markers:
                apple

                red fruit

                computer

                orange

                orange fruit

                1. sublist
                2. sublist
                h1(#html-blocks). HTML Blocks Simple block on one line:
                foo
                And nested without indentation:
                foo
                bar
                Interpreted markdown in a table:
                This is _emphasized_ And this is *strong*
                Here's a simple block:
                foo
                This should be a code block, though: bc.
                foo
                As should this: bc.
                foo
                Now, nested:
                foo
                This should just be an HTML comment: Multiline: Code block: bc. Just plain comment, with trailing spaces on the line: Code: bc.
                Hr's:









                h1(#inline-markup). Inline Markup This is _emphasized_, and so _is this_. This is *strong*, and so *is this*. An _"emphasized link":/url_. *_This is strong and em._* So is *_this_* word. *_This is strong and em._* So is *_this_* word. This is code: @>@, @$@, @\@, @\$@, @@. -This is _strikeout_.- Superscripts: a[^bc^]d a[^_hello_^] a[^hello there^]. Subscripts: H[~2~]O, H[~23~]O, H[~many of them~]O. These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d.
                h1(#smart-quotes-ellipses-dashes). Smart quotes, ellipses, dashes "Hello," said the spider. "'Shelob' is my name." 'A', 'B', and 'C' are letters. 'Oak,' 'elm,' and 'beech' are names of trees. So is 'pine.' 'He said, "I want to go."' Were you alive in the 70's? Here is some quoted '@code@' and a ""quoted link":http://example.com/?foo=1&bar=2". Some dashes: one -- two -- three -- four -- five. Dashes between numbers: 5 - 7, 255 - 66, 1987 - 1999. Ellipses...and...and....
                h1(#latex). LaTeX * * 2+2=4 * x \in y * \alpha \wedge \omega * 223 * p-Tree * Here's some display math: \frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h} * Here's one that has a line break in it: \alpha + \omega \times x^2. These shouldn't be math: * To get the famous equation, write @$e = mc^2$@. * $22,000 is a _lot_ of money. So is $34,000. (It worked if "lot" is emphasized.) * Shoes ($20) and socks ($5). * Escaped @$@: $73 _this should be emphasized_ 23$. Here's a LaTeX table:
                h1(#special-characters). Special Characters Here is some unicode: * I hat: Î * o umlaut: ö * section: § * set membership: ∈ * copyright: © AT&T has an ampersand in their name. AT&T is another way to write it. This & that. 4 < 5. 6 > 5. Backslash: \ Backtick: ` Asterisk: * Underscore: _ Left brace: { Right brace: } Left bracket: [ Right bracket: ] Left paren: ( Right paren: ) Greater-than: > Hash: # Period: . Bang: ! Plus: + Minus: -
                h1(#links). Links h2(#explicit). Explicit Just a "URL":/url/. "URL and title":/url/. "URL and title":/url/. "URL and title":/url/. "URL and title":/url/ "URL and title":/url/ "with_underscore":/url/with_underscore "Email link":mailto:nobody@nowhere.net "Empty":. h2(#reference). Reference Foo "bar":/url/. With "embedded [brackets]":/url/. "b":/url/ by itself should be a link. Indented "once":/url. Indented "twice":/url. Indented "thrice":/url. This should [not][] be a link. bc. [not]: /url Foo "bar":/url/. Foo "biz":/url/. h2(#with-ampersands). With ampersands Here's a "link with an ampersand in the URL":http://example.com/?foo=1&bar=2. Here's a link with an amersand in the link text: "AT&T":http://att.com/. Here's an "inline link":/script?foo=1&bar=2. Here's an "inline link in pointy braces":/script?foo=1&bar=2. h2(#autolinks). Autolinks With an ampersand: "$":http://example.com/?foo=1&bar=2 * In a list? * "$":http://example.com/ * It should. An e-mail address: "(email)nobody@nowhere.net":mailto:nobody@nowhere.net bq. Blockquoted: "$":http://example.com/ Auto-links should not occur here: @@ bc. or here:
                h1(#images). Images From "Voyage dans la Lune" by Georges Melies (1902):
                lalune
                !lalune.jpg(Voyage dans la Lune)!
                Here is a movie !movie.jpg(movie)! icon.
                h1(#footnotes). Footnotes Here is a footnote reference,[1] and another.[2] This should _not_ be a footnote reference, because it contains a space.[^my note] Here is an inline note.[3] bq. Notes can go in quotes.[4] # And in list items.[5] This paragraph should not be part of the note, as it is not indented. fn1. Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document. fn2. Here's the long note. This one contains multiple blocks. Subsequent blocks are indented to show that they belong to the footnote (as with list items). bc. { } If you want, you can indent every line, but you can also be lazy and just indent the first line of each block. fn3. This is _easier_ to type. Inline notes may contain "links":http://google.com and @]@ verbatim characters, as well as [bracketed text]. fn4. In quote. fn5. In list. pandoc-3.1.3/test/writer.typst0000644000000000000000000002662307346545000014564 0ustar0000000000000000// Some definitions presupposed by pandoc's typst output. #let blockquote(body) = [ #set text( size: 0.92em ) #block(inset: (left: 1.5em, top: 0.2em, bottom: 0.2em))[#body] ] #let horizontalrule = [ #line(start: (25%,0%), end: (75%,0%)) ] #let endnote(num, contents) = [ #stack(dir: ltr, spacing: 3pt, super[#num], contents) ] #show terms: it => { it.children .map(child => [ #strong[#child.term] #block(inset: (left: 1.5em, top: -0.4em))[#child.description] ]) .join() } #let conf( title: none, authors: none, date: none, abstract: none, cols: 1, margin: (x: 1.25in, y: 1.25in), paper: "us-letter", lang: "en", region: "US", font: (), fontsize: 11pt, sectionnumbering: none, doc, ) = { set page( paper: paper, margin: margin, numbering: "1", ) set par(justify: true) set text(lang: lang, region: region, font: font, size: fontsize) set heading(numbering: sectionnumbering) if title != none { align(center)[#block(inset: 2em)[ #text(weight: "bold", size: 1.5em)[#title] ]] } if authors != none { let count = authors.len() let ncols = calc.min(count, 3) grid( columns: (1fr,) * ncols, row-gutter: 1.5em, ..authors.map(author => align(center)[ #author.name \ #author.affiliation \ #author.email ] ) ) } if date != none { align(center)[#block(inset: 1em)[ #date ]] } if abstract != none { block(inset: 2em)[ #text(weight: "semibold")[Abstract] #h(1em) #abstract ] } if cols == 1 { doc } else { columns(cols, doc) } } #show: doc => conf( title: [Pandoc Test Suite], authors: ( ( name: [John MacFarlane], affiliation: [], email: [] ), ( name: [Anonymous], affiliation: [], email: [] ), ), date: [July 17, 2006], cols: 1, doc, ) This is a set of tests for pandoc. Most of them are adapted from John Gruber’s markdown test suite. #horizontalrule = Headers == Level 2 with an #link("/url")[embedded link] === Level 3 with #emph[emphasis] ==== Level 4 ===== Level 5 = Level 1 == Level 2 with #emph[emphasis] === Level 3 with no blank line == Level 2 with no blank line #horizontalrule = Paragraphs Here’s a regular paragraph. In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item. Here’s one with a bullet. \* criminey. There should be a hard line break \ here. #horizontalrule = Block Quotes E-mail style: #blockquote[ This is a block quote. It is pretty short. ] #blockquote[ Code in a block quote: ``` sub status { print "working"; } ``` A list: + item one + item two Nested block quotes: #blockquote[ nested ] #blockquote[ nested ] ] This should not be a block quote: 2 \> 1. And a following paragraph. #horizontalrule = Code Blocks Code: ``` ---- (should be four hyphens) sub status { print "working"; } this code block is indented by one tab ``` And: ``` this code block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{ ``` #horizontalrule = Lists == Unordered Asterisks tight: - asterisk 1 - asterisk 2 - asterisk 3 Asterisks loose: - asterisk 1 - asterisk 2 - asterisk 3 Pluses tight: - Plus 1 - Plus 2 - Plus 3 Pluses loose: - Plus 1 - Plus 2 - Plus 3 Minuses tight: - Minus 1 - Minus 2 - Minus 3 Minuses loose: - Minus 1 - Minus 2 - Minus 3 == Ordered Tight: + First + Second + Third and: + One + Two + Three Loose using tabs: + First + Second + Third and using spaces: + One + Two + Three Multiple paragraphs: + Item 1, graf one. Item 1. graf two. The quick brown fox jumped over the lazy dog’s back. + Item 2. + Item 3. == Nested - Tab - Tab - Tab Here’s another: + First + Second: - Fee - Fie - Foe + Third Same thing but with paragraphs: + First + Second: - Fee - Fie - Foe + Third == Tabs and spaces - this is a list item indented with tabs - this is a list item indented with spaces - this is an example list item indented with tabs - this is an example list item indented with spaces == Fancy list markers #block[ #set enum(numbering: "(1)", start: 2) + begins with 2 + and now 3 with a continuation #block[ #set enum(numbering: "i.", start: 4) + sublist with roman numerals, starting with 4 + more items #block[ #set enum(numbering: "(A)", start: 1) + a subsublist + a subsublist ] ] ] Nesting: #block[ #set enum(numbering: "A.", start: 1) + Upper Alpha #block[ #set enum(numbering: "I.", start: 1) + Upper Roman. #block[ #set enum(numbering: "(1)", start: 6) + Decimal start with 6 #block[ #set enum(numbering: "a)", start: 3) + Lower alpha with paren ] ] ] ] Autonumbering: + Autonumber. + More. + Nested. Should not be a list item: M.A. 2007 B. Williams #horizontalrule = Definition Lists Tight using spaces: / apple: #block[ red fruit ] / orange: #block[ orange fruit ] / banana: #block[ yellow fruit ] Tight using tabs: / apple: #block[ red fruit ] / orange: #block[ orange fruit ] / banana: #block[ yellow fruit ] Loose: / apple: #block[ red fruit ] / orange: #block[ orange fruit ] / banana: #block[ yellow fruit ] Multiple blocks with italics: / #emph[apple]: #block[ red fruit contains seeds, crisp, pleasant to taste ] / #emph[orange]: #block[ orange fruit ``` { orange code block } ``` #blockquote[ orange block quote ] ] Multiple definitions, tight: / apple: #block[ red fruit computer ] / orange: #block[ orange fruit bank ] Multiple definitions, loose: / apple: #block[ red fruit computer ] / orange: #block[ orange fruit bank ] Blank line after term, indented marker, alternate markers: / apple: #block[ red fruit computer ] / orange: #block[ orange fruit + sublist + sublist ] = HTML Blocks Simple block on one line: foo And nested without indentation: foo bar Interpreted markdown in a table: This is #emph[emphasized] And this is #strong[strong] Here’s a simple block: foo This should be a code block, though: ```
                foo
                ``` As should this: ```
                foo
                ``` Now, nested: foo This should just be an HTML comment: Multiline: Code block: ``` ``` Just plain comment, with trailing spaces on the line: Code: ```
                ``` Hr’s: #horizontalrule = Inline Markup This is #emph[emphasized], and so #emph[is this]. This is #strong[strong], and so #strong[is this]. An #emph[#link("/url")[emphasized link]]. #strong[#emph[This is strong and em.]] So is #strong[#emph[this]] word. #strong[#emph[This is strong and em.]] So is #strong[#emph[this]] word. This is code: `>`, `$`, `\`, `\$`, ``. #strike[This is #emph[strikeout].] Superscripts: a#super[bc]d a#super[#emph[hello]] a#super[hello there]. Subscripts: H#sub[2]O, H#sub[23]O, H#sub[many of them]O. These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d. #horizontalrule = Smart quotes, ellipses, dashes "Hello," said the spider. "'Shelob' is my name." 'A', 'B', and 'C' are letters. 'Oak,' 'elm,' and 'beech' are names of trees. So is 'pine.' 'He said, "I want to go."' Were you alive in the 70’s? Here is some quoted '`code`' and a "#link("http://example.com/?foo=1&bar=2")[quoted link]". Some dashes: one—two — three—four — five. Dashes between numbers: 5–7, 255–66, 1987–1999. Ellipses…and…and…. #horizontalrule = LaTeX - - $2 plus 2 eq 4$ - $x in y$ - $alpha and omega$ - $223$ - $p$-Tree - Here’s some display math: $ frac(d, d x) f lr((x)) eq lim_(h arrow.r 0) frac(f lr((x plus h)) minus f lr((x)), h) $ - Here’s one that has a line break in it: $alpha plus omega times x^2$. These shouldn’t be math: - To get the famous equation, write `$e = mc^2$`. - \$22,000 is a #emph[lot] of money. So is \$34,000. (It worked if "lot" is emphasized.) - Shoes (\$20) and socks (\$5). - Escaped `$`: \$73 #emph[this should be emphasized] 23\$. Here’s a LaTeX table: #horizontalrule = Special Characters Here is some unicode: - I hat: Î - o umlaut: ö - section: § - set membership: ∈ - copyright: © AT&T has an ampersand in their name. AT&T is another way to write it. This & that. 4 \< 5. 6 \> 5. Backslash: \\ Backtick: \` Asterisk: \* Underscore: \_ Left brace: { Right brace: } Left bracket: \[ Right bracket: \] Left paren: ( Right paren: ) Greater-than: \> Hash: \# Period: . Bang: ! Plus: + Minus: - #horizontalrule = Links == Explicit Just a #link("/url/")[URL]. #link("/url/")[URL and title]. #link("/url/")[URL and title]. #link("/url/")[URL and title]. #link("/url/")[URL and title] #link("/url/")[URL and title] #link("/url/with_underscore")[with\_underscore] #link("mailto:nobody@nowhere.net")[Email link] #link("")[Empty]. == Reference Foo #link("/url/")[bar]. With #link("/url/")[embedded \[brackets\]]. #link("/url/")[b] by itself should be a link. Indented #link("/url")[once]. Indented #link("/url")[twice]. Indented #link("/url")[thrice]. This should \[not\]\[\] be a link. ``` [not]: /url ``` Foo #link("/url/")[bar]. Foo #link("/url/")[biz]. == With ampersands Here’s a #link("http://example.com/?foo=1&bar=2")[link with an ampersand in the URL]. Here’s a link with an amersand in the link text: #link("http://att.com/")[AT&T]. Here’s an #link("/script?foo=1&bar=2")[inline link]. Here’s an #link("/script?foo=1&bar=2")[inline link in pointy braces]. == Autolinks With an ampersand: #link("http://example.com/?foo=1&bar=2")[http://example.com/?foo\=1&bar\=2] - In a list? - #link("http://example.com/") - It should. An e-mail address: #link("mailto:nobody@nowhere.net")[nobody\@nowhere.net] #blockquote[ Blockquoted: #link("http://example.com/") ] Auto-links should not occur here: `` ``` or here: ``` #horizontalrule = Images From "Voyage dans la Lune" by Georges Melies (1902): #figure([#image("lalune.jpg")], caption: [ lalune ] ) Here is a movie #image("movie.jpg") icon. #horizontalrule = Footnotes Here is a footnote reference,#footnote[Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document.] and another.#footnote[Here’s the long note. This one contains multiple blocks. Subsequent blocks are indented to show that they belong to the footnote (as with list items). ``` { } ``` If you want, you can indent every line, but you can also be lazy and just indent the first line of each block.] This should #emph[not] be a footnote reference, because it contains a space.\[^my note\] Here is an inline note.#footnote[This is #emph[easier] to type. Inline notes may contain #link("http://google.com")[links] and `]` verbatim characters, as well as \[bracketed text\].] #blockquote[ Notes can go in quotes.#footnote[In quote.] ] + And in list items.#footnote[In list.] This paragraph should not be part of the note, as it is not indented. pandoc-3.1.3/test/writer.xwiki0000644000000000000000000002305207346545000014525 0ustar0000000000000000This is a set of tests for pandoc. Most of them are adapted from John Gruber’s markdown test suite. ---- = Headers {{id name="headers" /}}= == Level 2 with an [[embedded link>>/url]] {{id name="level-2-with-an-embedded-link" /}}== === Level 3 with //emphasis// {{id name="level-3-with-emphasis" /}}=== ==== Level 4 {{id name="level-4" /}}==== ===== Level 5 {{id name="level-5" /}}===== = Level 1 {{id name="level-1" /}}= == Level 2 with //emphasis// {{id name="level-2-with-emphasis" /}}== === Level 3 {{id name="level-3" /}}=== with no blank line == Level 2 {{id name="level-2" /}}== with no blank line ---- = Paragraphs {{id name="paragraphs" /}}= Here’s a regular paragraph. In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item. Here’s one with a bullet. * criminey. There should be a hard line break\\here. ---- = Block Quotes {{id name="block-quotes" /}}= E-mail style: >This is a block quote. It is pretty short. > >Code in a block quote: > > >{{code}} >sub status { > print "working"; >} >{{/code}} > >A list: > >1. item one >1. item two > >Nested block quotes: > >>nested >> >>nested >> This should not be a block quote: 2 > 1. And a following paragraph. ---- = Code Blocks {{id name="code-blocks" /}}= Code: {{code}} ---- (should be four hyphens) sub status { print "working"; } this code block is indented by one tab {{/code}} And: {{code}} this code block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{ {{/code}} ---- = Lists {{id name="lists" /}}= == Unordered {{id name="unordered" /}}== Asterisks tight: *. asterisk 1 *. asterisk 2 *. asterisk 3 Asterisks loose: *. asterisk 1 *. asterisk 2 *. asterisk 3 Pluses tight: *. Plus 1 *. Plus 2 *. Plus 3 Pluses loose: *. Plus 1 *. Plus 2 *. Plus 3 Minuses tight: *. Minus 1 *. Minus 2 *. Minus 3 Minuses loose: *. Minus 1 *. Minus 2 *. Minus 3 == Ordered {{id name="ordered" /}}== Tight: 1. First 1. Second 1. Third and: 1. One 1. Two 1. Three Loose using tabs: 1. First 1. Second 1. Third and using spaces: 1. One 1. Two 1. Three Multiple paragraphs: 1. Item 1, graf one. Item 1. graf two. The quick brown fox jumped over the lazy dog’s back. 1. Item 2. 1. Item 3. == Nested {{id name="nested" /}}== *. Tab **. Tab ***. Tab Here’s another: 1. First 1. Second: 1*. Fee 1*. Fie 1*. Foe 1. Third Same thing but with paragraphs: 1. First 1. Second: 1*. Fee 1*. Fie 1*. Foe 1. Third == Tabs and spaces {{id name="tabs-and-spaces" /}}== *. this is a list item indented with tabs *. this is a list item indented with spaces **. this is an example list item indented with tabs **. this is an example list item indented with spaces == Fancy list markers {{id name="fancy-list-markers" /}}== 1. begins with 2 1. and now 3 with a continuation 11. sublist with roman numerals, starting with 4 11. more items 111. a subsublist 111. a subsublist Nesting: 1. Upper Alpha 11. Upper Roman. 111. Decimal start with 6 1111. Lower alpha with paren Autonumbering: 1. Autonumber. 1. More. 11. Nested. Should not be a list item: M.A. 2007 B. Williams ---- = Definition Lists {{id name="definition-lists" /}}= Tight using spaces: ; apple : red fruit ; orange : orange fruit ; banana : yellow fruit Tight using tabs: ; apple : red fruit ; orange : orange fruit ; banana : yellow fruit Loose: ; apple : red fruit ; orange : orange fruit ; banana : yellow fruit Multiple blocks with italics: ; //apple// : red fruit contains seeds, crisp, pleasant to taste ; //orange// : orange fruit {{code}} { orange code block } {{/code}} >orange block quote > Multiple definitions, tight: ; apple : red fruit : computer ; orange : orange fruit : bank Multiple definitions, loose: ; apple : red fruit : computer ; orange : orange fruit : bank Blank line after term, indented marker, alternate markers: ; apple : red fruit : computer ; orange : orange fruit ;1. sublist ;1. sublist = HTML Blocks {{id name="html-blocks" /}}= Simple block on one line: foo And nested without indentation: foo bar Interpreted markdown in a table: This is //emphasized// And this is **strong** Here’s a simple block: foo This should be a code block, though: {{code}}
                foo
                {{/code}} As should this: {{code}}
                foo
                {{/code}} Now, nested: foo This should just be an HTML comment: Multiline: Code block: {{code}} {{/code}} Just plain comment, with trailing spaces on the line: Code: {{code}}
                {{/code}} Hr’s: ---- = Inline Markup {{id name="inline-markup" /}}= This is //emphasized//, and so //is this//. This is **strong**, and so **is this**. An //[[emphasized link>>/url]]//. **//This is strong and em.//** So is **//this//** word. **//This is strong and em.//** So is **//this//** word. This is code: {{code}}>{{/code}}, {{code}}${{/code}}, {{code}}\{{/code}}, {{code}}\${{/code}}, {{code}}{{/code}}. --This is //strikeout//.-- Superscripts: a^^bc^^d a^^//hello//^^ a^^hello there^^. Subscripts: H,,2,,O, H,,23,,O, H,,many of them,,O. These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~~b c~~d. ---- = Smart quotes, ellipses, dashes {{id name="smart-quotes-ellipses-dashes" /}}= “Hello,” said the spider. “‘Shelob’ is my name.” ‘A’, ‘B’, and ‘C’ are letters. ‘Oak,’ ‘elm,’ and ‘beech’ are names of trees. So is ‘pine.’ ‘He said, “I want to go.”’ Were you alive in the 70’s? Here is some quoted ‘{{code}}code{{/code}}’ and a “[[quoted link>>http://example.com/?foo=1&bar=2]]”. Some dashes: one—two — three—four — five. Dashes between numbers: 5–7, 255–66, 1987–1999. Ellipses…and…and…. ---- = LaTeX {{id name="latex" /}}= *. *. {{formula}}2+2=4{{/formula}} *. {{formula}}x \in y{{/formula}} *. {{formula}}\alpha \wedge \omega{{/formula}} *. {{formula}}223{{/formula}} *. {{formula}}p{{/formula}}-Tree *. Here’s some display math: {{formula}}\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}{{/formula}} *. Here’s one that has a line break in it: {{formula}}\alpha + \omega \times x^2{{/formula}}. These shouldn’t be math: *. To get the famous equation, write {{code}}$e = mc^2${{/code}}. *. $22,000 is a //lot// of money. So is $34,000. (It worked if “lot” is emphasized.) *. Shoes ($20) and socks ($5). *. Escaped {{code}}${{/code}}: $73 //this should be emphasized// 23$. Here’s a LaTeX table: ---- = Special Characters {{id name="special-characters" /}}= Here is some unicode: *. I hat: Î *. o umlaut: ö *. section: § *. set membership: ∈ *. copyright: © AT&T has an ampersand in their name. AT&T is another way to write it. This & that. 4 < 5. 6 > 5. Backslash: \ Backtick: ` Asterisk: * Underscore: _ Left brace: { Right brace: } Left bracket: [ Right bracket: ] Left paren: ( Right paren: ) Greater-than: > Hash: # Period: . Bang: ! Plus: + Minus: - ---- = Links {{id name="links" /}}= == Explicit {{id name="explicit" /}}== Just a [[URL>>/url/]]. [[URL and title>>/url/]]. [[URL and title>>/url/]]. [[URL and title>>/url/]]. [[URL and title>>/url/]] [[URL and title>>/url/]] [[with_underscore>>/url/with_underscore]] [[Email link>>mailto:nobody@nowhere.net]] [[Empty>>]]. == Reference {{id name="reference" /}}== Foo [[bar>>/url/]]. With [[embedded [brackets]>>/url/]]. [[b>>/url/]] by itself should be a link. Indented [[once>>/url]]. Indented [[twice>>/url]]. Indented [[thrice>>/url]]. This should [not][] be a link. {{code}} [not]: /url {{/code}} Foo [[bar>>/url/]]. Foo [[biz>>/url/]]. == With ampersands {{id name="with-ampersands" /}}== Here’s a [[link with an ampersand in the URL>>http://example.com/?foo=1&bar=2]]. Here’s a link with an amersand in the link text: [[AT&T>>http://att.com/]]. Here’s an [[inline link>>/script?foo=1&bar=2]]. Here’s an [[inline link in pointy braces>>/script?foo=1&bar=2]]. == Autolinks {{id name="autolinks" /}}== With an ampersand: http://example.com/?foo=1&bar=2 *. In a list? *. http://example.com/ *. It should. An e-mail address: [[nobody@nowhere.net>>mailto:nobody@nowhere.net]] >Blockquoted: http://example.com/ > Auto-links should not occur here: {{code}}{{/code}} {{code}} or here: {{/code}} ---- = Images {{id name="images" /}}= From “Voyage dans la Lune” by Georges Melies (1902): ((( [[image:lalune.jpg||alt="lalune" title="Voyage dans la Lune"]] ))) Here is a movie [[image:movie.jpg||alt="movie"]] icon. ---- = Footnotes {{id name="footnotes" /}}= Here is a footnote reference,{{footnote}}Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document.{{/footnote}} and another.{{footnote}}Here’s the long note. This one contains multiple blocks. Subsequent blocks are indented to show that they belong to the footnote (as with list items). {{code}} { } {{/code}} If you want, you can indent every line, but you can also be lazy and just indent the first line of each block.{{/footnote}} This should //not// be a footnote reference, because it contains a space.[^my note] Here is an inline note.{{footnote}}This is //easier// to type. Inline notes may contain [[links>>http://google.com]] and {{code}}]{{/code}} verbatim characters, as well as [bracketed text].{{/footnote}} >Notes can go in quotes.{{footnote}}In quote.{{/footnote}} > 1. And in list items.{{footnote}}In list.{{/footnote}} This paragraph should not be part of the note, as it is not indented. pandoc-3.1.3/test/writer.zimwiki0000644000000000000000000002062507346545000015060 0ustar0000000000000000Content-Type: text/x-zim-wiki Wiki-Format: zim 0.4 This is a set of tests for pandoc. Most of them are adapted from John Gruber’s markdown test suite. ---- ====== Headers ====== ===== Level 2 with an [[url|embedded link]] ===== ==== Level 3 with //emphasis// ==== === Level 4 === == Level 5 == ====== Level 1 ====== ===== Level 2 with //emphasis// ===== ==== Level 3 ==== with no blank line ===== Level 2 ===== with no blank line ---- ====== Paragraphs ====== Here’s a regular paragraph. In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard-wrapped line in the middle of a paragraph looked like a list item. Here’s one with a bullet. * criminey. There should be a hard line break here. ---- ====== Block Quotes ====== E-mail style: > This is a block quote. It is pretty short. > Code in a block quote: > > ''' > sub status { > print "working"; > } > ''' > > A list: > > 1. item one > 2. item two > > Nested block quotes: > > > nested > > > nested This should not be a block quote: 2 > 1. And a following paragraph. ---- ====== Code Blocks ====== Code: ''' ---- (should be four hyphens) sub status { print "working"; } this code block is indented by one tab ''' And: ''' this code block is indented by two tabs These should not be escaped: \$ \\ \> \[ \{ ''' ---- ====== Lists ====== ===== Unordered ===== Asterisks tight: * asterisk 1 * asterisk 2 * asterisk 3 Asterisks loose: * asterisk 1 * asterisk 2 * asterisk 3 Pluses tight: * Plus 1 * Plus 2 * Plus 3 Pluses loose: * Plus 1 * Plus 2 * Plus 3 Minuses tight: * Minus 1 * Minus 2 * Minus 3 Minuses loose: * Minus 1 * Minus 2 * Minus 3 ===== Ordered ===== Tight: 1. First 2. Second 3. Third and: 1. One 2. Two 3. Three Loose using tabs: 1. First 2. Second 3. Third and using spaces: 1. One 2. Two 3. Three Multiple paragraphs: 1. Item 1, graf one. Item 1. graf two. The quick brown fox jumped over the lazy dog’s back. 2. Item 2. 3. Item 3. ===== Nested ===== * Tab * Tab * Tab Here’s another: 1. First 2. Second: * Fee * Fie * Foe 3. Third Same thing but with paragraphs: 1. First 2. Second: * Fee * Fie * Foe 3. Third ===== Tabs and spaces ===== * this is a list item indented with tabs * this is a list item indented with spaces * this is an example list item indented with tabs * this is an example list item indented with spaces ===== Fancy list markers ===== 1. begins with 2 2. and now 3 with a continuation 1. sublist with roman numerals, starting with 4 2. more items 1. a subsublist 2. a subsublist Nesting: 1. Upper Alpha 1. Upper Roman. 1. Decimal start with 6 1. Lower alpha with paren Autonumbering: 1. Autonumber. 2. More. 1. Nested. Should not be a list item: M.A. 2007 B. Williams ---- ====== Definition Lists ====== Tight using spaces: * **apple** red fruit * **orange** orange fruit * **banana** yellow fruit Tight using tabs: * **apple** red fruit * **orange** orange fruit * **banana** yellow fruit Loose: * **apple** red fruit * **orange** orange fruit * **banana** yellow fruit Multiple blocks with italics: * **//apple//** red fruit contains seeds, crisp, pleasant to taste * **//orange//** orange fruit ''' { orange code block } ''' > orange block quote Multiple definitions, tight: * **apple** red fruitcomputer * **orange** orange fruitbank Multiple definitions, loose: * **apple** red fruit computer * **orange** orange fruit bank Blank line after term, indented marker, alternate markers: * **apple** red fruit computer * **orange** orange fruit 1. sublist 2. sublist ====== HTML Blocks ====== Simple block on one line: foo And nested without indentation: foo bar Interpreted markdown in a table: This is //emphasized// And this is **strong** Here’s a simple block: foo This should be a code block, though: '''
                foo
                ''' As should this: '''
                foo
                ''' Now, nested: foo This should just be an HTML comment: Multiline: Code block: ''' ''' Just plain comment, with trailing spaces on the line: Code: '''
                ''' Hr’s: ---- ====== Inline Markup ====== This is //emphasized//, and so //is this//. This is **strong**, and so **is this**. An //[[url|emphasized link]]//. **//This is strong and em.//** So is **//this//** word. **//This is strong and em.//** So is **//this//** word. This is code: ''>'', ''$'', ''\'', ''\$'', ''''. ~~This is //strikeout//.~~ Superscripts: a^{bc}d a^{//hello//} a^{hello there}. Subscripts: H_{2}O, H_{23}O, H_{many of them}O. These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d. ---- ====== Smart quotes, ellipses, dashes ====== “Hello,” said the spider. “‘Shelob’ is my name.” ‘A’, ‘B’, and ‘C’ are letters. ‘Oak,’ ‘elm,’ and ‘beech’ are names of trees. So is ‘pine.’ ‘He said, “I want to go.”’ Were you alive in the 70’s? Here is some quoted ‘''code''’ and a “[[http://example.com/?foo=1&bar=2|quoted link]]”. Some dashes: one—two — three—four — five. Dashes between numbers: 5–7, 255–66, 1987–1999. Ellipses…and…and…. ---- ====== LaTeX ====== * * $2+2=4$ * $x \in y$ * $\alpha \wedge \omega$ * $223$ * $p$-Tree * Here’s some display math: $$\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$$ * Here’s one that has a line break in it: $\alpha + \omega \times x^2$. These shouldn’t be math: * To get the famous equation, write ''$e = mc^2$''. * $22,000 is a //lot// of money. So is $34,000. (It worked if “lot” is emphasized.) * Shoes ($20) and socks ($5). * Escaped ''$'': $73 //this should be emphasized// 23$. Here’s a LaTeX table: ---- ====== Special Characters ====== Here is some unicode: * I hat: Î * o umlaut: ö * section: § * set membership: ∈ * copyright: © AT&T has an ampersand in their name. AT&T is another way to write it. This & that. 4 < 5. 6 > 5. Backslash: \ Backtick: ` Asterisk: * Underscore: _ Left brace: { Right brace: } Left bracket: [ Right bracket: ] Left paren: ( Right paren: ) Greater-than: > Hash: # Period: . Bang: ! Plus: + Minus: - ---- ====== Links ====== ===== Explicit ===== Just a [[url/|URL]]. [[url/|URL and title]]. [[url/|URL and title]]. [[url/|URL and title]]. [[url/|URL and title]] [[url/|URL and title]] [[url/with_underscore|with_underscore]] [[mailto:nobody@nowhere.net|Email link]] [[|Empty]]. ===== Reference ===== Foo [[url/|bar]]. With [[url/|embedded [brackets]]]. [[url/|b]] by itself should be a link. Indented [[url|once]]. Indented [[url|twice]]. Indented [[url|thrice]]. This should [not][] be a link. ''' [not]: /url ''' Foo [[url/|bar]]. Foo [[url/|biz]]. ===== With ampersands ===== Here’s a [[http://example.com/?foo=1&bar=2|link with an ampersand in the URL]]. Here’s a link with an amersand in the link text: [[http://att.com/|AT&T]]. Here’s an [[script?foo=1&bar=2|inline link]]. Here’s an [[script?foo=1&bar=2|inline link in pointy braces]]. ===== Autolinks ===== With an ampersand: http://example.com/?foo=1&bar=2 * In a list? * http://example.com/ * It should. An e-mail address: > Blockquoted: http://example.com/ Auto-links should not occur here: '''' ''' or here: ''' ---- ====== Images ====== From “Voyage dans la Lune” by Georges Melies (1902): {{lalune.jpg|Voyage dans la Lune}} lalune Here is a movie {{movie.jpg|movie}} icon. ---- ====== Footnotes ====== Here is a footnote reference, **{Note:** Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document.**}** and another. **{Note:** Here’s the long note. This one contains multiple blocks. Subsequent blocks are indented to show that they belong to the footnote (as with list items). ''' { } ''' If you want, you can indent every line, but you can also be lazy and just indent the first line of each block.**}** This should //not// be a footnote reference, because it contains a space.[^my note] Here is an inline note. **{Note:** This is //easier// to type. Inline notes may contain [[http://google.com|links]] and '']'' verbatim characters, as well as [bracketed text].**}** > Notes can go in quotes. **{Note:** In quote.**}** 1. And in list items. **{Note:** In list.**}** This paragraph should not be part of the note, as it is not indented. pandoc-3.1.3/test/writers-lang-and-dir.context0000644000000000000000000000716307346545000017501 0ustar0000000000000000% Enable hyperlinks \setupinteraction [state=start, style=, color=, contrastcolor=] \setupurl[style=] % make chapter, section bookmarks visible when opening document \placebookmarks[chapter, section, subsection, subsubsection, subsubsubsection, subsubsubsubsection][chapter, section] \setupinteractionscreen[option={bookmark,title}] \setuppagenumbering[location={footer,middle}] \setupbackend[export=yes] \setupstructure[state=start,method=auto] % use microtypography \definefontfeature[default][default][script=latn, protrusion=quality, expansion=quality, itlc=yes, textitalics=yes, onum=yes, pnum=yes] \definefontfeature[default:tnum][default][tnum=yes, pnum=no] \definefontfeature[smallcaps][script=latn, protrusion=quality, expansion=quality, smcp=yes, onum=yes, pnum=yes] \setupalign[hz,hanging] \setupitaliccorrection[global, always] \setupbodyfontenvironment[default][em=italic] % use italic as em, not slanted \definefallbackfamily[mainface][rm][CMU Serif][preset=range:greek, force=yes] \definefontfamily[mainface][rm][Latin Modern Roman] \definefontfamily[mainface][mm][Latin Modern Math] \definefontfamily[mainface][ss][Latin Modern Sans] \definefontfamily[mainface][tt][Latin Modern Typewriter][features=none] \setupbodyfont[mainface] \setupwhitespace[medium] \setuphead[chapter] [style=\tfd\setupinterlinespace,header=empty] \setuphead[section] [style=\tfc\setupinterlinespace] \setuphead[subsection] [style=\tfb\setupinterlinespace] \setuphead[subsubsection] [style=\bf] \setuphead[subsubsubsection] [style=\sc] \setuphead[subsubsubsubsection][style=\it] \definesectionlevels [default] [section, subsection, subsubsection, subsubsubsection, subsubsubsubsection] \setuphead[chapter, section, subsection, subsubsection, subsubsubsection, subsubsubsubsection][number=no] \definedescription [description] [headstyle=bold, style=normal, location=hanging, width=broad, margin=1cm, alternative=hanging] \setupitemize[autointro] % prevent orphan list intro \setupitemize[indentnext=no] \defineitemgroup[enumerate] \setupenumerate[each][fit][itemalign=left,distance=.5em,style={\feature[+][default:tnum]}] \setupfloat[figure][default={here,nonumber}] \setupfloat[table][default={here,nonumber}] \setupxtable[frame=off] \setupxtable[head][topframe=on] \setupxtable[body][] \setupxtable[foot][] \setupxtable[lastrow][bottomframe=on] \starttext \startsectionlevel[title={Empty Divs and Spans},reference={empty-divs-and-spans}] Some text and div contents and more text. Next paragraph with a span and a word-thatincludesaspanright? \stopsectionlevel \startsectionlevel[title={Directionality},reference={directionality}] Some text and \startalignment[righttoleft] rtl div contents \stopalignment and more text. \startalignment[lefttoright] and a ltr div. with a {\righttoleft rtl span}. \stopalignment Next paragraph with a {\righttoleft rtl span} and a word-that-includesa{\lefttoright ltrspan}right? \stopsectionlevel \startsectionlevel[title={Languages},reference={languages}] Some text and \start\language[de] German div contents \stop and more text. Next paragraph with a {\language[en-gb]British span} and a word-that-includesa{\language[de-ch]Swiss German span}right? Some {\language[es]Spanish text}. \stopsectionlevel \startsectionlevel[title={Combined},reference={combined}] Some text and \start\language[fr] \startalignment[righttoleft] French rtl div contents \stopalignment \stop and more text. Next paragraph with a {\language[en-gb]{\lefttoright British ltr span}} and a word-that-includesa{\language[de-ch]{\lefttoright Swiss German ltr span}}right? \stopsectionlevel \stoptext pandoc-3.1.3/test/writers-lang-and-dir.latex0000644000000000000000000000672607346545000017136 0ustar0000000000000000% Options for packages loaded elsewhere \PassOptionsToPackage{unicode}{hyperref} \PassOptionsToPackage{hyphens}{url} % \documentclass[ ]{article} \usepackage{amsmath,amssymb} \usepackage{iftex} \ifPDFTeX \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{textcomp} % provide euro and other symbols \else % if luatex or xetex \usepackage{unicode-math} % this also loads fontspec \defaultfontfeatures{Scale=MatchLowercase} \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1} \fi \usepackage{lmodern} \ifPDFTeX\else % xetex/luatex font selection \fi % Use upquote if available, for straight quotes in verbatim environments \IfFileExists{upquote.sty}{\usepackage{upquote}}{} \IfFileExists{microtype.sty}{% use microtype if available \usepackage[]{microtype} \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts }{} \makeatletter \@ifundefined{KOMAClassName}{% if non-KOMA class \IfFileExists{parskip.sty}{% \usepackage{parskip} }{% else \setlength{\parindent}{0pt} \setlength{\parskip}{6pt plus 2pt minus 1pt}} }{% if KOMA class \KOMAoptions{parskip=half}} \makeatother \usepackage{xcolor} \setlength{\emergencystretch}{3em} % prevent overfull lines \providecommand{\tightlist}{% \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} \setcounter{secnumdepth}{-\maxdimen} % remove section numbering \ifLuaTeX \usepackage[bidi=basic]{babel} \else \usepackage[bidi=default]{babel} \fi \babelprovide[main,import]{english} \babelprovide[import]{ngerman} \babelprovide[import]{british} \babelprovide[import]{nswissgerman} \babelprovide[import]{spanish} \babelprovide[import]{french} % get rid of language-specific shorthands (see #6817): \let\LanguageShortHands\languageshorthands \def\languageshorthands#1{} \ifLuaTeX \usepackage{selnolig} % disable illegal ligatures \fi \ifPDFTeX \TeXXeTstate=1 \newcommand{\RL}[1]{\beginR #1\endR} \newcommand{\LR}[1]{\beginL #1\endL} \newenvironment{RTL}{\beginR}{\endR} \newenvironment{LTR}{\beginL}{\endL} \fi \IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}} \IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available \urlstyle{same} \hypersetup{ pdflang={en}, hidelinks, pdfcreator={LaTeX via pandoc}} \author{} \date{} \begin{document} \hypertarget{empty-divs-and-spans}{% \section{Empty Divs and Spans}\label{empty-divs-and-spans}} Some text and div contents and more text. Next paragraph with a {span} and a word-thatincludesa{span}right? \hypertarget{directionality}{% \section{Directionality}\label{directionality}} Some text and \begin{RTL} rtl div contents \end{RTL} and more text. \begin{LTR} and a ltr div. with a \RL{rtl span}. \end{LTR} Next paragraph with a \RL{rtl span} and a word-that-includesa\LR{ltrspan}right? \hypertarget{languages}{% \section{Languages}\label{languages}} Some text and \begin{otherlanguage}{ngerman} German div contents \end{otherlanguage} and more text. Next paragraph with a \foreignlanguage{british}{British span} and a word-that-includesa\foreignlanguage{nswissgerman}{Swiss German span}right? Some \foreignlanguage{spanish}{Spanish text}. \hypertarget{combined}{% \section{Combined}\label{combined}} Some text and \begin{RTL} \begin{otherlanguage}{french} French rtl div contents \end{otherlanguage} \end{RTL} and more text. Next paragraph with a \LR{\foreignlanguage{british}{British ltr span}} and a word-that-includesa\LR{\foreignlanguage{nswissgerman}{Swiss German ltr span}}right? \end{document} pandoc-3.1.3/test/writers-lang-and-dir.native0000644000000000000000000000466607346545000017310 0ustar0000000000000000Pandoc (Meta {unMeta = fromList []}) [Header 1 ("empty-divs-and-spans",[],[]) [Str "Empty",Space,Str "Divs",Space,Str "and",Space,Str "Spans"] ,Plain [Str "Some",Space,Str "text",Space,Str "and"] ,Div ("",[],[]) [Para [Str "div",Space,Str "contents"]] ,Para [Str "and",Space,Str "more",Space,Str "text."] ,Para [Str "Next",Space,Str "paragraph",Space,Str "with",Space,Str "a",Space,Span ("",[],[]) [Str "span"],Space,Str "and",Space,Str "a",Space,Str "word-thatincludesa",Span ("",[],[]) [Str "span"],Str "right?"] ,Header 1 ("directionality",[],[]) [Str "Directionality"] ,Plain [Str "Some",Space,Str "text",Space,Str "and"] ,Div ("",[],[("dir","rtl")]) [Para [Str "rtl",Space,Str "div",Space,Str "contents"]] ,Para [Str "and",Space,Str "more",Space,Str "text."] ,Div ("",[],[("dir","ltr")]) [Para [Str "and",Space,Str "a",Space,Str "ltr",Space,Str "div.",Space,Str "with",Space,Str "a",Space,Span ("",[],[("dir","rtl")]) [Str "rtl",Space,Str "span"],Str "."]] ,Para [Str "Next",Space,Str "paragraph",Space,Str "with",Space,Str "a",Space,Span ("",[],[("dir","rtl")]) [Str "rtl",Space,Str "span"],Space,Str "and",Space,Str "a",Space,Str "word-that-includesa",Span ("",[],[("dir","ltr")]) [Str "ltrspan"],Str "right?"] ,Header 1 ("languages",[],[]) [Str "Languages"] ,Plain [Str "Some",Space,Str "text",Space,Str "and"] ,Div ("",[],[("lang","de")]) [Para [Str "German",Space,Str "div",Space,Str "contents"]] ,Para [Str "and",Space,Str "more",Space,Str "text."] ,Para [Str "Next",Space,Str "paragraph",Space,Str "with",Space,Str "a",Space,Span ("",[],[("lang","en-GB")]) [Str "British",Space,Str "span"],Space,Str "and",Space,Str "a",Space,Str "word-that-includesa",Span ("",[],[("lang","de-CH")]) [Str "Swiss",Space,Str "German",Space,Str "span"],Str "right?"] ,Para [Str "Some",Space,Span ("",[],[("lang","es")]) [Str "Spanish",Space,Str "text"],Str "."] ,Header 1 ("combined",[],[]) [Str "Combined"] ,Plain [Str "Some",Space,Str "text",Space,Str "and"] ,Div ("",[],[("lang","fr"),("dir","rtl")]) [Para [Str "French",Space,Str "rtl",Space,Str "div",Space,Str "contents"]] ,Para [Str "and",Space,Str "more",Space,Str "text."] ,Para [Str "Next",Space,Str "paragraph",Space,Str "with",Space,Str "a",Space,Span ("",[],[("lang","en-GB"),("dir","ltr")]) [Str "British",Space,Str "ltr",Space,Str "span"],Space,Str "and",Space,Str "a",Space,Str "word-that-includesa",Span ("",[],[("lang","de-CH"),("dir","ltr")]) [Str "Swiss",Space,Str "German",Space,Str "ltr",Space,Str "span"],Str "right?"]] pandoc-3.1.3/xml-light/Text/Pandoc/XML/0000755000000000000000000000000007346545000015650 5ustar0000000000000000pandoc-3.1.3/xml-light/Text/Pandoc/XML/Light.hs0000644000000000000000000001076407346545000017263 0ustar0000000000000000{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.XML.Light Copyright : Copyright (C) 2021-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable xml-light, which we used in pandoc's the XML-based readers, has some limitations: in particular, it produces nodes with String instead of Text, and the parser falls over on processing instructions (see #7091). This module exports much of the API of xml-light, but using Text instead of String. In addition, the xml-light parsers are replaced by xml-conduit's well-tested parser. (The xml-conduit types are mapped to types isomorphic to xml-light's, to avoid the need for massive code modifications elsewhere.) Bridge functions to map xml-light types to this module's types are also provided (since libraries like texmath still use xml-light). Another advantage of the xml-conduit parser is that it gives us detailed information on xml parse errors. In the future we may want to move to using xml-conduit or another xml library in the code base, but this change gives us better performance and accuracy without much change in the code that used xml-light. -} module Text.Pandoc.XML.Light ( module Text.Pandoc.XML.Light.Types , module Text.Pandoc.XML.Light.Proc , module Text.Pandoc.XML.Light.Output -- * Replacement for xml-light's Text.XML.Input , parseXMLElement , parseXMLContents -- * Versions that allow passing in a custom entity table , parseXMLElementWithEntities , parseXMLContentsWithEntities ) where import qualified Control.Exception as E import qualified Text.XML as Conduit import Text.XML.Unresolved (InvalidEventStream(..)) import qualified Data.Text as T import qualified Data.Text.Lazy as TL import qualified Data.Map as M import Data.Maybe (mapMaybe) import Text.Pandoc.XML.Light.Types import Text.Pandoc.XML.Light.Proc import Text.Pandoc.XML.Light.Output import qualified Data.XML.Types as XML -- Drop in replacement for parseXMLDoc in xml-light. parseXMLElement :: TL.Text -> Either T.Text Element parseXMLElement = parseXMLElementWithEntities mempty -- Drop in replacement for parseXMLDoc in xml-light. parseXMLElementWithEntities :: M.Map T.Text T.Text -> TL.Text -> Either T.Text Element parseXMLElementWithEntities entityMap t = elementToElement . Conduit.documentRoot <$> either (Left . T.pack . E.displayException) Right (Conduit.parseText Conduit.def{ Conduit.psRetainNamespaces = True , Conduit.psDecodeEntities = decodeEnts } t) where decodeEnts ref = case M.lookup ref entityMap of Nothing -> XML.ContentEntity ref Just t' -> XML.ContentText t' parseXMLContents :: TL.Text -> Either T.Text [Content] parseXMLContents = parseXMLContentsWithEntities mempty parseXMLContentsWithEntities :: M.Map T.Text T.Text -> TL.Text -> Either T.Text [Content] parseXMLContentsWithEntities entityMap t = case Conduit.parseText Conduit.def{ Conduit.psRetainNamespaces = True , Conduit.psDecodeEntities = decodeEnts } t of Left e -> case E.fromException e of Just (ContentAfterRoot _) -> elContent <$> parseXMLElementWithEntities entityMap ("" <> t <> "") _ -> Left . T.pack . E.displayException $ e Right x -> Right [Elem . elementToElement . Conduit.documentRoot $ x] where decodeEnts ref = case M.lookup ref entityMap of Nothing -> XML.ContentEntity ref Just t' -> XML.ContentText t' elementToElement :: Conduit.Element -> Element elementToElement (Conduit.Element name attribMap nodes) = Element (nameToQname name) attrs (mapMaybe nodeToContent nodes) Nothing where attrs = map (\(n,v) -> Attr (nameToQname n) v) $ M.toList attribMap nameToQname (Conduit.Name localName mbns mbpref) = case mbpref of Nothing -> case T.stripPrefix "xmlns:" localName of Just rest -> QName rest mbns (Just "xmlns") Nothing -> QName localName mbns mbpref _ -> QName localName mbns mbpref nodeToContent :: Conduit.Node -> Maybe Content nodeToContent (Conduit.NodeElement el) = Just (Elem (elementToElement el)) nodeToContent (Conduit.NodeContent t) = Just (Text (CData CDataText t Nothing)) nodeToContent _ = Nothing pandoc-3.1.3/xml-light/Text/Pandoc/XML/Light/0000755000000000000000000000000007346545000016717 5ustar0000000000000000pandoc-3.1.3/xml-light/Text/Pandoc/XML/Light/Output.hs0000644000000000000000000001740607346545000020563 0ustar0000000000000000{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.XML.Light.Output Copyright : Copyright (C) 2007 Galois, Inc., 2021-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable This code is based on code from xml-light, released under the BSD3 license. We use a text Builder instead of ShowS. -} module Text.Pandoc.XML.Light.Output ( -- * Replacement for xml-light's Text.XML.Output ppTopElement , ppElement , ppContent , ppcElement , ppcContent , showTopElement , showElement , showContent , useShortEmptyTags , defaultConfigPP , ConfigPP(..) ) where import Data.Text (Text) import qualified Data.Text as T import qualified Data.Text.Lazy as TL import Data.Text.Lazy.Builder (Builder, singleton, fromText, toLazyText) import Text.Pandoc.XML.Light.Types -- -- duplicates functinos from Text.XML.Output -- -- | The XML 1.0 header xmlHeader :: Text xmlHeader = "" -------------------------------------------------------------------------------- data ConfigPP = ConfigPP { shortEmptyTag :: QName -> Bool , prettify :: Bool } -- | Default pretty orinting configuration. -- * Always use abbreviate empty tags. defaultConfigPP :: ConfigPP defaultConfigPP = ConfigPP { shortEmptyTag = const True , prettify = False } -- | The predicate specifies for which empty tags we should use XML's -- abbreviated notation . This is useful if we are working with -- some XML-ish standards (such as certain versions of HTML) where some -- empty tags should always be displayed in the form. useShortEmptyTags :: (QName -> Bool) -> ConfigPP -> ConfigPP useShortEmptyTags p c = c { shortEmptyTag = p } -- | Specify if we should use extra white-space to make document more readable. -- WARNING: This adds additional white-space to text elements, -- and so it may change the meaning of the document. useExtraWhiteSpace :: Bool -> ConfigPP -> ConfigPP useExtraWhiteSpace p c = c { prettify = p } -- | A configuration that tries to make things pretty -- (possibly at the cost of changing the semantics a bit -- through adding white space.) prettyConfigPP :: ConfigPP prettyConfigPP = useExtraWhiteSpace True defaultConfigPP -------------------------------------------------------------------------------- -- | Pretty printing renders XML documents faithfully, -- with the exception that whitespace may be added\/removed -- in non-verbatim character data. ppTopElement :: Element -> Text ppTopElement = ppcTopElement prettyConfigPP -- | Pretty printing elements ppElement :: Element -> Text ppElement = ppcElement prettyConfigPP -- | Pretty printing content ppContent :: Content -> Text ppContent = ppcContent prettyConfigPP -- | Pretty printing renders XML documents faithfully, -- with the exception that whitespace may be added\/removed -- in non-verbatim character data. ppcTopElement :: ConfigPP -> Element -> Text ppcTopElement c e = T.unlines [xmlHeader,ppcElement c e] -- | Pretty printing elements ppcElement :: ConfigPP -> Element -> Text ppcElement c = TL.toStrict . toLazyText . ppElementS c mempty -- | Pretty printing content ppcContent :: ConfigPP -> Content -> Text ppcContent c = TL.toStrict . toLazyText . ppContentS c mempty ppcCData :: ConfigPP -> CData -> Text ppcCData c = TL.toStrict . toLazyText . ppCDataS c mempty type Indent = Builder -- | Pretty printing content using ShowT ppContentS :: ConfigPP -> Indent -> Content -> Builder ppContentS c i x = case x of Elem e -> ppElementS c i e Text t -> ppCDataS c i t CRef r -> showCRefS r ppElementS :: ConfigPP -> Indent -> Element -> Builder ppElementS c i e = i <> tagStart (elName e) (elAttribs e) <> (case elContent e of [] | "?" `T.isPrefixOf` qName name -> fromText " ?>" | shortEmptyTag c name -> fromText " />" [Text t] -> singleton '>' <> ppCDataS c mempty t <> tagEnd name cs -> singleton '>' <> nl <> mconcat (map ((<> nl) . ppContentS c (sp <> i)) cs) <> i <> tagEnd name where (nl,sp) = if prettify c then ("\n"," ") else ("","") ) where name = elName e ppCDataS :: ConfigPP -> Indent -> CData -> Builder ppCDataS c i t = i <> if cdVerbatim t /= CDataText || not (prettify c) then showCDataS t else foldr cons mempty (T.unpack (showCData t)) where cons :: Char -> Builder -> Builder cons '\n' ys = singleton '\n' <> i <> ys cons y ys = singleton y <> ys -------------------------------------------------------------------------------- -- | Adds the header. showTopElement :: Element -> Text showTopElement c = xmlHeader <> showElement c showContent :: Content -> Text showContent = ppcContent defaultConfigPP showElement :: Element -> Text showElement = ppcElement defaultConfigPP showCData :: CData -> Text showCData = ppcCData defaultConfigPP -- Note: crefs should not contain '&', ';', etc. showCRefS :: Text -> Builder showCRefS r = singleton '&' <> fromText r <> singleton ';' -- | Convert a text element to characters. showCDataS :: CData -> Builder showCDataS cd = case cdVerbatim cd of CDataText -> escStr (cdData cd) CDataVerbatim -> fromText " escCData (cdData cd) <> fromText "]]>" CDataRaw -> fromText (cdData cd) -------------------------------------------------------------------------------- escCData :: Text -> Builder escCData t | "]]>" `T.isPrefixOf` t = fromText "]]]]>" <> fromText (T.drop 3 t) escCData t = case T.uncons t of Nothing -> mempty Just (c,t') -> singleton c <> escCData t' escChar :: Char -> Builder escChar c = case c of '<' -> fromText "<" '>' -> fromText ">" '&' -> fromText "&" '"' -> fromText """ -- we use ' instead of ' because IE apparently has difficulties -- rendering ' in xhtml. -- Reported by Rohan Drape . '\'' -> fromText "'" _ -> singleton c {- original xml-light version: -- NOTE: We escape '\r' explicitly because otherwise they get lost -- when parsed back in because of then end-of-line normalization rules. _ | isPrint c || c == '\n' -> singleton c | otherwise -> showText "&#" . showsT oc . singleton ';' where oc = ord c -} escStr :: Text -> Builder escStr cs = if T.any needsEscape cs then mconcat (map escChar (T.unpack cs)) else fromText cs where needsEscape '<' = True needsEscape '>' = True needsEscape '&' = True needsEscape '"' = True needsEscape '\'' = True needsEscape _ = False tagEnd :: QName -> Builder tagEnd qn = fromText " showQName qn <> singleton '>' tagStart :: QName -> [Attr] -> Builder tagStart qn as = singleton '<' <> showQName qn <> as_str where as_str = if null as then mempty else mconcat (map showAttr as) showAttr :: Attr -> Builder showAttr (Attr qn v) = singleton ' ' <> showQName qn <> singleton '=' <> singleton '"' <> escStr v <> singleton '"' showQName :: QName -> Builder showQName q = case qPrefix q of Nothing -> fromText (qName q) Just p -> fromText p <> singleton ':' <> fromText (qName q) pandoc-3.1.3/xml-light/Text/Pandoc/XML/Light/Proc.hs0000644000000000000000000001151707346545000020163 0ustar0000000000000000{-# LANGUAGE FlexibleInstances #-} {- | Module : Text.Pandoc.XML.Light.Proc Copyright : Copyright (C) 2007 Galois, Inc., 2021-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable This code is taken from xml-light, released under the BSD3 license. -} module Text.Pandoc.XML.Light.Proc ( -- * Replacement for xml-light's Text.XML.Proc strContent , onlyElems , elChildren , onlyText , findChildren , filterChildren , filterChildrenName , findChild , filterChild , filterChildName , findElement , filterElement , filterElementName , findElements , filterElements , filterElementsName , findAttr , lookupAttr , lookupAttrBy , findAttrBy ) where import Data.Text (Text) import Data.Maybe (listToMaybe) import Data.List(find) import Text.Pandoc.XML.Light.Types -- -- copied from xml-light Text.XML.Proc -- -- | Get the text value of an XML element. This function -- ignores non-text elements, and concatenates all text elements. strContent :: Element -> Text strContent = mconcat . map cdData . onlyText . elContent -- | Select only the elements from a list of XML content. onlyElems :: [Content] -> [Element] onlyElems xs = [ x | Elem x <- xs ] -- | Select only the elements from a parent. elChildren :: Element -> [Element] elChildren e = [ x | Elem x <- elContent e ] -- | Select only the text from a list of XML content. onlyText :: [Content] -> [CData] onlyText xs = [ x | Text x <- xs ] -- | Find all immediate children with the given name. findChildren :: QName -> Element -> [Element] findChildren q e = filterChildren ((q ==) . elName) e -- | Filter all immediate children wrt a given predicate. filterChildren :: (Element -> Bool) -> Element -> [Element] filterChildren p e = filter p (onlyElems (elContent e)) -- | Filter all immediate children wrt a given predicate over their names. filterChildrenName :: (QName -> Bool) -> Element -> [Element] filterChildrenName p e = filter (p.elName) (onlyElems (elContent e)) -- | Find an immediate child with the given name. findChild :: QName -> Element -> Maybe Element findChild q e = listToMaybe (findChildren q e) -- | Find an immediate child with the given name. filterChild :: (Element -> Bool) -> Element -> Maybe Element filterChild p e = listToMaybe (filterChildren p e) -- | Find an immediate child with name matching a predicate. filterChildName :: (QName -> Bool) -> Element -> Maybe Element filterChildName p e = listToMaybe (filterChildrenName p e) -- | Find the left-most occurrence of an element matching given name. findElement :: QName -> Element -> Maybe Element findElement q e = listToMaybe (findElements q e) -- | Filter the left-most occurrence of an element wrt. given predicate. filterElement :: (Element -> Bool) -> Element -> Maybe Element filterElement p e = listToMaybe (filterElements p e) -- | Filter the left-most occurrence of an element wrt. given predicate. filterElementName :: (QName -> Bool) -> Element -> Maybe Element filterElementName p e = listToMaybe (filterElementsName p e) -- | Find all non-nested occurrences of an element. -- (i.e., once we have found an element, we do not search -- for more occurrences among the element's children). findElements :: QName -> Element -> [Element] findElements qn e = filterElementsName (qn==) e -- | Find all non-nested occurrences of an element wrt. given predicate. -- (i.e., once we have found an element, we do not search -- for more occurrences among the element's children). filterElements :: (Element -> Bool) -> Element -> [Element] filterElements p e | p e = [e] | otherwise = concatMap (filterElements p) $ onlyElems $ elContent e -- | Find all non-nested occurrences of an element wrt a predicate over element names. -- (i.e., once we have found an element, we do not search -- for more occurrences among the element's children). filterElementsName :: (QName -> Bool) -> Element -> [Element] filterElementsName p e = filterElements (p.elName) e -- | Lookup the value of an attribute. findAttr :: QName -> Element -> Maybe Text findAttr x e = lookupAttr x (elAttribs e) -- | Lookup attribute name from list. lookupAttr :: QName -> [Attr] -> Maybe Text lookupAttr x = lookupAttrBy (x ==) -- | Lookup the first attribute whose name satisfies the given predicate. lookupAttrBy :: (QName -> Bool) -> [Attr] -> Maybe Text lookupAttrBy p as = attrVal `fmap` find (p . attrKey) as -- | Lookup the value of the first attribute whose name -- satisfies the given predicate. findAttrBy :: (QName -> Bool) -> Element -> Maybe Text findAttrBy p e = lookupAttrBy p (elAttribs e) pandoc-3.1.3/xml-light/Text/Pandoc/XML/Light/Types.hs0000644000000000000000000001454507346545000020370 0ustar0000000000000000{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE DeriveDataTypeable #-} {- | Module : Text.Pandoc.XML.Light.Types Copyright : Copyright (C) 2007 Galois, Inc., 2021-2023 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane Stability : alpha Portability : portable This code is taken from xml-light, released under the BSD3 license. It has been modified to use Text instead of String, and the fromXL* functions have been added. -} module Text.Pandoc.XML.Light.Types ( -- * Basic types, duplicating those from xml-light but with Text -- instead of String Line , Content(..) , Element(..) , Attr(..) , CData(..) , CDataKind(..) , QName(..) , Node(..) , unode , unqual , add_attr , add_attrs -- * Conversion functions from xml-light types , fromXLQName , fromXLCData , fromXLElement , fromXLAttr , fromXLContent ) where import Data.Text (Text) import qualified Data.Text as T import Data.Data (Data) import Data.Typeable (Typeable) import qualified Text.XML.Light as XL -- -- type definitions lightly modified from xml-light -- -- | A line is an Integer type Line = Integer -- | XML content data Content = Elem Element | Text CData | CRef Text deriving (Show, Typeable, Data, Ord, Eq) -- | XML elements data Element = Element { elName :: QName, elAttribs :: [Attr], elContent :: [Content], elLine :: Maybe Line } deriving (Show, Typeable, Data, Ord, Eq) -- | XML attributes data Attr = Attr { attrKey :: QName, attrVal :: Text } deriving (Eq, Ord, Show, Typeable, Data) -- | XML CData data CData = CData { cdVerbatim :: CDataKind, cdData :: Text, cdLine :: Maybe Line } deriving (Show, Typeable, Data, Ord, Eq) data CDataKind = CDataText -- ^ Ordinary character data; pretty printer escapes &, < etc. | CDataVerbatim -- ^ Unescaped character data; pretty printer embeds it in case (qURI q1, qURI q2) of (Nothing,Nothing) -> compare (qPrefix q1) (qPrefix q2) (u1,u2) -> compare u1 u2 x -> x class Node t where node :: QName -> t -> Element instance Node ([Attr],[Content]) where node n (attrs,cont) = Element { elName = n , elAttribs = attrs , elContent = cont , elLine = Nothing } instance Node [Attr] where node n as = node n (as,[]::[Content]) instance Node Attr where node n a = node n [a] instance Node () where node n () = node n ([]::[Attr]) instance Node [Content] where node n cs = node n ([]::[Attr],cs) instance Node Content where node n c = node n [c] instance Node ([Attr],Content) where node n (as,c) = node n (as,[c]) instance Node (Attr,Content) where node n (a,c) = node n ([a],[c]) instance Node ([Attr],[Element]) where node n (as,cs) = node n (as,map Elem cs) instance Node ([Attr],Element) where node n (as,c) = node n (as,[c]) instance Node (Attr,Element) where node n (a,c) = node n ([a],c) instance Node [Element] where node n es = node n ([]::[Attr],es) instance Node Element where node n e = node n [e] instance Node ([Attr],[CData]) where node n (as,cs) = node n (as,map Text cs) instance Node ([Attr],CData) where node n (as,c) = node n (as,[c]) instance Node (Attr,CData) where node n (a,c) = node n ([a],c) instance Node [CData] where node n es = node n ([]::[Attr],es) instance Node CData where node n e = node n [e] instance Node ([Attr],Text) where node n (as,t) = node n (as, CData { cdVerbatim = CDataText , cdData = t , cdLine = Nothing }) instance Node (Attr,Text ) where node n (a,t) = node n ([a],t) instance Node Text where node n t = node n ([]::[Attr],t) -- | Create node with unqualified name unode :: Node t => Text -> t -> Element unode = node . unqual unqual :: Text -> QName unqual x = QName x Nothing Nothing -- | Add an attribute to an element. add_attr :: Attr -> Element -> Element add_attr a e = add_attrs [a] e -- | Add some attributes to an element. add_attrs :: [Attr] -> Element -> Element add_attrs as e = e { elAttribs = as ++ elAttribs e } -- -- conversion from xml-light -- fromXLQName :: XL.QName -> QName fromXLQName qn = QName { qName = T.pack $ XL.qName qn , qURI = T.pack <$> XL.qURI qn , qPrefix = T.pack <$> XL.qPrefix qn } fromXLCData :: XL.CData -> CData fromXLCData cd = CData { cdVerbatim = case XL.cdVerbatim cd of XL.CDataText -> CDataText XL.CDataVerbatim -> CDataVerbatim XL.CDataRaw -> CDataRaw , cdData = T.pack $ XL.cdData cd , cdLine = XL.cdLine cd } fromXLElement :: XL.Element -> Element fromXLElement el = Element { elName = fromXLQName $ XL.elName el , elAttribs = map fromXLAttr $ XL.elAttribs el , elContent = map fromXLContent $ XL.elContent el , elLine = XL.elLine el } fromXLAttr :: XL.Attr -> Attr fromXLAttr (XL.Attr qn s) = Attr (fromXLQName qn) (T.pack s) fromXLContent :: XL.Content -> Content fromXLContent (XL.Elem el) = Elem $ fromXLElement el fromXLContent (XL.Text cd) = Text $ fromXLCData cd fromXLContent (XL.CRef s) = CRef (T.pack s)

                X[_]7<8QMR-$Mfhym5Z`^ kxY]{ۊ B4:l|pHtt:9:9:?]Ǖ9"͸d4]cq"\ޒ9vߘK[MǩB+/iz>FXEɢt¨~zPK! @' "ppt/slideLayouts/slideLayout16.xmlVn0w4TiRРw؞mlOc'BYG[\Ďs|dQ4#Ruʁ B\MnAJca8 wǢht|`0'Z=O ɰ:0sa Ƌ$22/w8 IiFA$XBhb4!;{^ѓHBF &@ !hBښ)1}b,Fξ$J#V8^0lf;XfUм@1 |0\09bNMT9TprQ*˨JJV!!~"ٴ")R TaB,=ha\Ckq*= J0/KC_M^s tw@iHjt&Y,h%T ˸]RŵB#Cp>5:9V@^&?Gn t.cjFed!l.Z2r782&!KɌO#NTxo!JX1]Iʒ&klxm%GP;le \gİٛ(~4+ݠ_;r[= A:͈916Rfz@ fŠ#o!T2121C{[IMMeS,C1/cnp*Q :iD4ސY[{Ԟ Tf~ݭm6~c =U_23`-/kp{oetDh}B.5 xZ穴 VϹ \VXí2vEc%s1y)t^kI(_P 8MHƮޥWaԔX6[:< !HNi`)#P R0%fsKiW]\JTfmx0{k-n.qʌZ0qe=3$PZOٴx'6-D{MVRSUMr¦(<PѡsQoFQ=A\\mzUj/ įK jab I$D -zyʳYFP08kXT(7YR)6F{5c'9"Y4V (\, a%} eԷtC?lbO<4RCiTk w\:Q1]ƃݴ]6Tjڿv+,SrxQ DkaYQ;шez%jze5i+}[$P_@4oYۛ/6CT-<gqQn|w2NzQL{s6fP.+bN–ρo(l z<0Әnc̄s`;Z|c {=z7Niv^}lj_-z?$9?h5?lX2ꭁMپ۽BB<;=$_.Q_u0(&4 *ĩkŨwՂ42P8l4'[0J {]Ë)XZ>۴M.Pj ,̨+QbPCkJ5zwP6RmF ZQ6R4TVjmEBI-%eKQ-_3juGƱT TɶݑJ?^~PK!q>!ppt/slideMasters/slideMaster1.xml[n/wǦ,g}@v״DYjhI4٢>Kߢ}}ΌH[vl'-5Ù>hݏwKi݊Ί|b%򨈳|1B۪c.\L{Q?wq-㏼V`*U:JŒ?YRTKZ^ʾ3%r[ҿH,EZ\5TBriVf)ae /EyUi&wUKYKUr.]}وr쟼7 (g>U%Tb3 z;%t.kR3R Jl?UħOWh%lF-5;wI+ĺ#W'E)+jFޣh֤Ƹqr3%u%y$BƐlBc{]^Mm ],uѬej{a^z%tC*Z>T3Z>U~dĜoTȦƒrΊ%9Omy=G`nE7?t0O[OaDʥ#^Y:8-VJ<dAWLOVt jϐ\&Hbt5"ާTRV2L.PKJ26 ݉EEc*(f&v2jQJU`"QXV4uc7ʺ2tۃpx8 r"!qtyHph&h,qtK,F5LMi"B7MȨ#ڴ[&HdLh .N3w^8z>ٔOOۀ hܻE)ރKu.P'l6w؆^,Ϳ`EEbbo+^ f94 ܐC<1k32ͱ#)`T|f2i/ AVe C# ""%7_t[)F Ǚ |(A..za8` ^LO#]``^4|?|_Ks`Ġ#Y}醁wВ Z2eʠţH 4tH#YFg$FI`$)DJ F`Z ]b>Ĕ [؎yC/toK>9ZuA] [Gt.tGu嶃# GB]]^{$xAV~,z[ʏo+)~0H++M Dg5Kxz{lDϪ:oDr} R,_\H M2j*Rzjz[L$k_?>I,jȎQL}uЈ_o[y>BW!)(n'I+G@pmN {t/J|K^]ӝM7aφ,ˁ7كiwN%ϋn t?etʗQʫZusxbFB :7Q<S~Ot6 B 0$Ȑ#:ȼm N4d d(<frZƌ ;< 3+~Ahי?$t0af3y c.ddhZ5ga+ac}ry 9.o1gQ+a\w!!879/DžJE>WMbԧTl/]x/f>?u!t:B'$;xcmsA܎΁?HzlcKXPK!ђ7,ppt/slideLayouts/_rels/slideLayout8.xml.relsϽ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQaLɟjYF<ڼ\emKYUG =%n(8Ѧ'XY̠ JZ+=`fPK!ñԷ!ppt/notesMasters/notesMaster1.xmlXmo6>`A>_l)b%nmP?h[Ej&-om?dG[ͼaE:GNg>q[ky[1:gmaZzd DKDz)}Z^hG{.DwݶX)MW>sK>%n*j|l: |ƊEpLyմ[ܨ[[:1)s2~U`3 ̷ݓ6֒6c)Kތ+Vx\E5 ,m^R Qvkx,!u Z[>`[vƢ2ns L80* WxΈFlm.YqZAp.֕E|6sK5w^r`ǁq)a zy:(, ފՖ6DžPL@VtD[!+$̟3ѶmvϏ"XZ(Nx#ArFVVJ^ARO߁J"uTڲ7<4 Z^!4d=y?3J8#BÈ3$CofBeQ? S0%:OixY~;^oQtd0qm~mIyQ4U6|,V~ziIGY^~|G!ϨAR( 0QvqLoViJ  B/ƚ_({.m+:Dݓm;)>FǏ(񼨳e9bPlCSrR7`.+aWHXZ]pv lNUƸ`^bGU&x=aw8b .{{TjCgabpĘ<4SӎvY xB[A2>oF*;S~͢&9a9O0ɒQgQf~Ľxe|ѶoF?~4antpd-x $ȳ3Rt((fy9~(͍ݻ3MųmVӗ8eacaov+B߫F5gq RydH] uԁSZ0hV6фFMd4F |-椢7|֔WH] PW`HY#~X5 y&㏚͕ Fto_yE+ ɿ]-h?![7{;)w.7Z=7Chg#}K p;Q~G HP4>?LAEoh5@A%BEnFFPek$:"BE(c^kwtPK !ܝ"  docProps/thumbnail.jpegJFIF``ExifMM*>F(iN``8Photoshop 3.08BIM8BIM%ُ B~" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzC  C  ?yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yy{yys>ee^}}ꏙG@zee^}}ꏙG@zee^}}ꏙG@zee^}}ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zgg^==ꏙG@zgg^==ꏙG@zgg^==ꏙG@zgg^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@zee^==ꏙG@ aee_ aee_ aee_ aee_ aee_ aee_ aee_ aee_ aee_ aee_ aee_ aee_ aee_ aee_ aee_ aeePK !ocB ppt/media/image1.pngPNG  IHDRLDgAMA abKGD1 IDATxAC2 `vG~?y>O3Ϸ 0000f0S VPPPPpVs 0|     YYA@       q@ VPPPP0 0k 0|     q@@@GXPPP0 `  8     0 07`(`(`CP   VPPp ހ `@     )`x +h(`(`(`8 >CP0 #,(`(`(`(`*`8g +h(`(`(`(`(`(`8+hXA@@@@@@@@@@@ ` +h(`(`(`(`(`(`8+hXA@@@@@@@@@47`(`(`(`(`s > 8  #,(`(`(`CP    VUpN@000 `XA@@@@@!(`x +h(`(`8 o0 `    Y 0@@@4000 a@@@@@@@@@@@!(`0000f040000004      `@` )`      040000 `XA@!(`x +h8 oPP0 `  Y 0@@@@@@@407`(`CP  VPPUpN@0 `XA@@@@@@@@@!(`x +h(`(`(`(`8+hXA@@@@@@@@@@@`V9 >CP0 #,(`(`(`(`(`p VPPPPP?`XA@      0f      `@!(`    0 07`(`(`(`(`CP   VPPp ހ   `@   )`x +h(`(`(`8 oP0 `    8  `@GXPPPPUpN@0 `XA@@@@@@@@@!XA@       q@ VPPPPP?`XA@       q@ VPPPP0 ` 8      0f    `@  q@@@0000 `XA@@@!(`x +h(`(`*`8   ?$++%tEXtdate:create2021-05-29T17:44:55+00:00o%tEXtdate:modify2021-05-29T17:44:55+00:008IENDB`PK!:~"Tppt/theme/theme1.xmlYAo6tw-Vlu Y4iiP@IvNeC.KwaN52 EI6i(@"=~|=J}" oۂYL&('F϶`̾'.O` -!]зfb[$7%4\t9\Mq8;̶2 CޫFXe1DžNŅ-Xup'^p€qqo;g7n7BoUFWUӖRy#]7q~g؍:K}X,th0 ltw#ixE{QT6;7j|$lzQg /Aesg\7`na*2%x TPKcBG-("S XHbAF;-gxN[\[N/&(bP6 )y\h/rW>f*|޼3ؿ}q_wf8WW/__x@X kPa0J{}SYנdzZ2at oްY[3T9]|"b-Fw@;I8r14\(9%a7C 0\U:|?OGyrHl )>q2*husϞ=ߟ?z˹vP^??|ۏkNjYǝ?NЌgOLhtܑ\]2ˌ G"JaQHJbhq֚j(vӳ;O&x$ F.{}MSY a¤LrC PK!`/J-ppt/viewProps.xmlRN0#4i DM+ M%׳)ړYl5%rHJx 0J@ɷ|6b30XBpE\A#p`-oD27 7u6qmxRKxr݀ IC-ǕvWsQsd"Ҕ™X+wO K+hD$pWribZc(yγSº|c+;a G9Uop clȢ5Y:vDزrGtDq(JPm7Z7 }`516. 'NRr=v|^+]NHzLn7>PK!ppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ>,Jw]I@<+%Wsӂ͍>-XPvGc˫e|Wu] ó[d6\tm>d/MZR'ejw Q"2(/bxJ4&iLgEJٌ[`ǰ116!_~3 PK!aO6KdocProps/app.xml (TQo0~$mȸ@McC"UL|!V۲=VwqHV4/˗ǝK%X'AGrͅOmG3ř \|K߿#k X/E(4.7$qy s,+Vch. \+P>Nq/~e:QrhP *#қt4t=z|,tƗOO$$ӞLT@SLwyЖ:rg9h]j X.׮صƈ$}.:; ">.$d,[f@/"YJ$9!U{ԩ鳘V3)L(lr&aтI(%X=k&,2~rk9cG;v}L5A8oB+N.`↎_V#oA;eKp;|[`ᡇ;ԗ:4cR쬸\v_ r{ڣ=0uu\YsD$-|mM&ppt/slideLayouts/slideLayout11.xmlPK-!5w "Bppt/slideLayouts/slideLayout12.xmlPK-!_f "Hppt/slideLayouts/slideLayout13.xmlPK-!%"Mppt/slideLayouts/slideLayout14.xmlPK-!`pC;"Rppt/slideLayouts/slideLayout15.xmlPK-! @' "Yppt/slideLayouts/slideLayout16.xmlPK-!}v "]ppt/slideLayouts/slideLayout17.xmlPK-!ђ7-`ppt/slideLayouts/_rels/slideLayout11.xml.relsPK-!ђ7-appt/slideLayouts/_rels/slideLayout12.xml.relsPK-!ђ7-bppt/slideLayouts/_rels/slideLayout10.xml.relsPK-!ђ7-cppt/slideLayouts/_rels/slideLayout15.xml.relsPK-!ђ7-dppt/slideLayouts/_rels/slideLayout13.xml.relsPK-!ђ7-eppt/slideLayouts/_rels/slideLayout14.xml.relsPK-!ђ7,fppt/slideLayouts/_rels/slideLayout9.xml.relsPK-!E ,gppt/slideMasters/_rels/slideMaster1.xml.relsPK-!q>!ippt/slideMasters/slideMaster1.xmlPK-!ђ7,qppt/slideLayouts/_rels/slideLayout8.xml.relsPK-!ђ7,rppt/slideLayouts/_rels/slideLayout1.xml.relsPK-!ђ7,sppt/slideLayouts/_rels/slideLayout2.xml.relsPK-!ђ7,tppt/slideLayouts/_rels/slideLayout3.xml.relsPK-!ђ7,uppt/slideLayouts/_rels/slideLayout4.xml.relsPK-!ђ7,vppt/slideLayouts/_rels/slideLayout5.xml.relsPK-!ђ7,wppt/slideLayouts/_rels/slideLayout6.xml.relsPK-!ђ7,xppt/slideLayouts/_rels/slideLayout7.xml.relsPK-!X$,yppt/notesMasters/_rels/notesMaster1.xml.relsPK-!ñԷ!zppt/notesMasters/notesMaster1.xmlPK- !ܝ"  docProps/thumbnail.jpegPK- !ocB 3ppt/media/image1.pngPK-!:~"T+ppt/theme/theme1.xmlPK-!{C] Bppt/theme/theme2.xmlPK-! 08ppt/presProps.xmlPK-!`/J-ppt/viewProps.xmlPK-!ppt/tableStyles.xmlPK-!̡v|docProps/core.xmlPK-!aO6K)docProps/app.xmlPK55|pandoc-3.1.3/test/pptx/images/0000755000000000000000000000000007346545000014372 5ustar0000000000000000pandoc-3.1.3/test/pptx/images/input.native0000644000000000000000000000044607346545000016745 0ustar0000000000000000Pandoc (Meta {unMeta = fromList []}) [Para [Image ("",[],[]) [] ("lalune.jpg","")] ,Para [Image ("",[],[]) [Str "The",Space,Str "Moon"] ("lalune.jpg","fig:")] ,Header 1 ("one-more",[],[]) [Str "One",Space,Str "More"] ,Para [Image ("",[],[]) [Str "The",Space,Str "Moon"] ("lalune.jpg","fig:")]] pandoc-3.1.3/test/pptx/images/output.pptx0000644000000000000000000013220007346545000016645 0ustar0000000000000000PK"TƵppt/slides/slide1.xmlS]o +'QĪ[U][M궪~k d~l'Y${׷N|PTt>+(#TO+z{sʠ%RJ^6FW2D 3`]0!:Eu\:ۺVZă raBsAsVJě{2wo%QJ 13 !4}Ⱦ(R!*N¢yZ4 vSb\QS^hf]C3bq̏G0v޷4pC Ǿ3эVQiM| pM.F!zMf8d$}ȰStU}m/>|^,b]JSQ؎$0?iͩ&ōMKs!W<FNJK]oGf)uPK"T_3Yppt/slides/slide2.xmlTn1}WX~/^*$%*4ju-5P߾'_V/;|*bt0.W3f,wP&f1R@^e"v]tyݵ3<:0⒩ }K]XQ"03\; B,yK\nLKlMEJCE+He礥9Z.(jtum7}7m7NJ{e@s/ѯŠr03h店Ȟ*薦+C ٛ%wm5oٓl ?yGwp)ikT*ЃLz~5r Μw6lǷkQYڟBX6OX%3-5^VOJHC̾$ Cӛ S6$Q6l[lAJ?,q PyWTV՜];m6.D! #Sv!cXgc` D vx{T%+6>g0S=G$o|2ɧYlaݮy҆B0~)dϥIvm|U5,ci#[б=c?+ 0`7Cӂ|tn{n$/g'y>=O3 )hDTTKa=ϦG&yIzIQ]PK"T V ppt/slides/_rels/slide1.xml.rels 0_%ݤAD^D(x!٦$}{^,xqggg>vۑ0&V@IavsQH 8 95cIhE>+G+rfAȫȚZL*U5lFɢ_*X£x)X5f~3SCK'-3(ʈ^K/6 PK"T V ppt/slides/_rels/slide2.xml.rels 0_%ݤAD^D(x!٦$}{^,xqggg>vۑ0&V@IavsQH 8 95cIhE>+G+rfAȫȚZL*U5lFɢ_*X£x)X5f~3SCK'-3(ʈ^K/6 PK"T V ppt/slides/_rels/slide3.xml.rels 0_%ݤAD^D(x!٦$}{^,xqggg>vۑ0&V@IavsQH 8 95cIhE>+G+rfAȫȚZL*U5lFɢ_*X£x)X5f~3SCK'-3(ʈ^K/6 PK"Ti\??ppt/media/image1.jpgweX^.tKww# XbE钐\iNYJ@S_o}<̙w杧5:L ;'4@ a@`0cSSQQSPг3вQP01rprpS3 s sqs KKECAmO]l-A$`<_00…rL aaba@$X`a2{8Hrn] Q+Il6ߧzSb{? $eVxZ$Tni?B$! ak!$Y[ bjΘ*K6kfjOAWd|(_#˲Mj5EV꿮-\\#ψh*lqm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPK"T.!ppt/slideMasters/slideMaster1.xmlZ]r6 }($GK8'v"YRt2;E۷%'$EZ-:Q\\.]pa?q=ƒ98 xQzSTu"Dߵ.jCV5 )ƍjNx"v;uÓ}\'9Ӆ`ow83G9?Qo$:ې6_n4UEd'ɁeALPfX"[2$ Qg옛^ X 3,5;a(PaǓs]+EWe|螎P`?{F8@:q1XsZWϟvQf #c!bpe0zh : ']s<ń ~T'酂SWQ`5թC9Py:t^6XY+Y.O-tUW\>}xM3!K7ˁYJP%AW\IH%!ĭ$n%* Tj؞''W#ӘYql J5YH *IUTbѐI=m)x9w_:n+; eM56ePv)Mm(۔rMo(w)MPmڷ \m'w9 uX"<}P."&HFѳd 5'EJ-P'yIZlw@yXͺdoҤx˲|DRq]o%r9o8eѵ'Vsړ0o,c]Na0TkqSqVڊވ(vXĔ/3*~O"NKE,d bz=*^O[PqT=*O \B;ޞd1,}X|O?0*nQA}a W?, vX `Iqa jXOд؁|e;,ݪltY/3&V}&q^Wz(ڮt#/@=lۣbvլ1FZ]1C Үڊֽ!iW[C Ү>[7>]}nC1HkPK"Tr,ppt/slideMasters/_rels/slideMaster1.xml.relsAk "ާIڦie ;yIdڱ~vIw"<|pF >hk-YA e[mzA//O =o0ʘ: ] 1=A 0n:'S{=(j3r&9sPr((cmrж(6Y>3OHʨʒ0E-Knm%[F9h;m4PK"T/"c@[Content_Types].xml͗n@_pȪmm<\pՃIlaĵ!շ1*Uҽ,;ϷKx ІI[A@2b"Fza0}j#ĄSRԜZ\(~HP 6lz0zK|t߻R}*Z&.ٙ!1{2"kb̔)sL[O6Sg9o="FTW1D2i A`v0Ʉs)0D - JYb|LWrnMy:Fi0xyt^]tEk:.Bݸuߡ^h!ʋzg}ʢ3z:G&S#i2qV‡OM?xQދQXPjc ֦XO>y.Sޕ{U/9e ͂w-b!|ZzFO%z\Z%zG|A5Cn[ Zd =O1E,J1OIbu@2HQƢ;(E|"y's9.Rry!%3$IIBhgQo\/PK"T0K ppt/viewProps.xmlSn0ﳈʔfɲln]XmE~ʔEr9*rt %<qT*d/s?~hics:&IJ/(%|*SPHjXA y}ϼ6re}$ _+ $ mqmNwcf OW|-zIu tbDF(ٸ{l.R~-:O}zލH=SS~9soT{fh.s 0zѰS_\&uȄDU'N kG+.g4F3FZj0hN+ 5H.Z'~QoۛLzH="jykΏQ֔+D ft9zPK"Tppt/tableStyles.xml I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥ託$S~E.N꤭+&Lyh >`gTb +𚼛&4wl3HEOǧj5~i}LYq_źً2j)%Z1j1\&MT2iQ__瓣߿;PK"Tppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|MLN0T ?E?9y/'<@xǁN/S^>ʌ:>/@_|gO^|?<6Df@|Sb+$qJc@TXAߞ` z.`^?(0w8g.6Le^ǁY=MsHgjb IE]!B3~@>POpG ݧ%:Tf4LL B+ٹ:o*3K*n GFqt-BU.D: O47{þ&Q)=0!oau6?8J:8ԱHQv2*!8^{]I$ㄍ0&_i{p}˅O6.xߥwwK/ͳvlM> #d%a1dD? aX1\}BU8@.a-U)؜ &~/%lH]P#eƕ79Y{4[& kgDsӰ!rjZBòfWKqrmb5:CGmkݭpҶFpla?v̂my*7ZxݜUN]fpED"2̩G*LLp1jZ4Z=Z2O-YMg|#4dcAf]>ӉnW-ܢ6_5Y"[Zsx6.ufz_Ӕ⾻ ӆݞ`9ڶP!. 3YHUB,}Jg}+7 T{4@BS dWv̩QgJue!azR-NI 74T]à\5ϳ5mo*&n.yn(Mf߃rGZECйNA%ȳg.|j{Dm {7cf`Wd?)L-!wĴxahORKل~K$nq&l&9Q.[d)VP2c.SǧmJO.K3K&ք֚dڈ3Kw^wtYq+K5EnCm:}z TgJF4I_,ni,ivAfrONC&sfy[U|E}]%UVJ۶h4gh/5 t#ah4"LBpcЪŐ%vt;?JdQ s!&gʽZ7j+嶮K죪i=c|۾)80¸SY|o[XIqJmU@i 6:)nŗs}ӄ-pT4t0`F/Z +;ǧfswޏC@cަs !b">@>_Cq-$ :Q d7FRf,ǽcE+y5;!WSZ^<BJ&8}>q֒2 OmtDG",R'Eٰ} JEcF?]\J-~e[&Jy4Ic+y.ȹB3LY t+_.Iq'Л坰XSSPÜji8᳦IOWS駊:U}l%h~ͯvfgkRZs9sȔYpYoY\ki\+yDY?y~& Gg{rw$\#D\?`+ zx?JhU>Ti)'r2^Аt6Rj뾘M?K C{[<0RY>2aD_--'DKɄe"6"фV䅑Hq$;}҈yī?4xS!I].&}/"nLm,j9XbXu[,9%-;Z6hCޭl[E)厭ҝe"Vʖ,3џ&PS_Fc2}unmqmntjWr@{y/+ zQqm$QƜϢj*!7|j:/ A_:7}<5Æ;c ]r_Tk>1ކO:.FGo:!\RɞXggʩz *F.p8х 4x2ߛXIIl!Bڻ2` SFM9tPt5q<~~cR5)sӽIJQej&1&1$Mbf,N\zW;Cs@FF3ygے9t! N|ס<YoG뻎6g NGjléjXrp=$#we"->r UeC!]TMzO"SKMDQF ԯWm6lRQ iK2; howS w %NJ0ĕ5jy(;R.T{Y(llCj^߶[2檴+PlG.(Odmtk6tuoU]k83%: FR, ҵ<vhޣoWj 4܅w[3:Kƶ'e}0tv:~/\4ͳ4Owne7 0BK#Wu;UV5Q>b HLzI&ȭ}"\_Pu$5"ȃ >PK"TE˧:!ppt/slideLayouts/slideLayout5.xmlYn6wkGA'I;0 M}Fccw(O2,)ao$?~-{?3kBHYqi ׶h$-/O^+-!IҞQawe[dF!IYG#qJZgCs"O$(f$#%jx j7ji#ſ2 {*Bx!o5鰋]dABQa=p)S$do~gr5-Uzh&Ė O+DFkTؠ`TBE *nP `XZYzK(1^/{ lB 1A.*Lt lFKFh+QMN\r o ۋa!+܅.ɆsG#a?sBFEhfl"m)qNٵ)V;eJqZ}׊f}>YXDq0Jh?`@L;F=֞ g9ǘp ӐއA Թ:wPAywP셏c-]T^.EPsC$]]T"q=0KB n;^7j55lGݛ6}?&T洗>9}K{-nFIHwy@8]oH '_GB!1f9()2|Sg ||K`N둨H?Kjݏ55{>>PvDH%)Z!R[x-rVh ݡ_| rY>P~'d5%sj^~KC_i̙`Cy:qJByRsfB4{ "A&[}7:"@ʇIܼfL*GgPK"T?N!ppt/slideLayouts/slideLayout4.xmlXݎ8_ibDM@&Q>L`v2ɮ*vOR@LIjn1`޼19-se Mr14>Χfh.P"BK<4oGpޠ-] m|Rj`Y(+?Jz bAѬg笧Y'xBUKQa !˼⭵k\ѫ$VH~Tб[bp ;{c)aSؠNa{6< ;lX 7Iǚ73Ȧy9eZ5&gX-Η9;ߠ{Xm;b=ce{m='{^{m 5o0~˽1f^eȏ=3{GchQlx^B*SybJ1] ZvKba~$A[)jſDQ2BLzh s%,#S ޯ'EԜ! tӷN|iKݹR߾~Z˲pь2(0#3rdޤ37yqc:t; aXH|(QN3qТ`Ukc75Rm=pa@o$ck:Z%B;TݮH */F:d PK"T6\#!ppt/slideLayouts/slideLayout3.xmlX]n8~_` h4)"'] M:=#ѶPgIڵwQ=NOCJi bQp_^YrW%[W 퀎Rwu}J`ꨪy ߦ,W9Cd@w!,/vg}5)?EK(\0 x5yB4Չ /2s|Lt~C6_FexՀ{ܹ͵xUeWNY?ƽDy6ڨr0h۸uR/Qx?(QkA>tY&*Y}Op鼂,ՍND3F5s)7`;K| Lloi͏uQ~ݤ1OG"O;rxk SKF 6,(1 U(sSiVUR>CA VwLpy4Ϙ_i &/ 3 WpJk>J8¾ctL@Ry(0YӀ7oYLvHz'Co_4x>K{a{%]{pxg /o F^$ްxDx-Hqw7)yxOr6Wo/ʮ~]i?g+=Ӯ iW/x+h)ܽ_$h8ԋəOgx "Bvw1Bg(}AAQf7L9JqUIATˆL\F$"2ƝEq .!m,rv\ 8Ch8\Un{}ݹ=Q^!{ZmK$=PGvY#sPK"TD9Bi !ppt/slideLayouts/slideLayout2.xmlVێ6}/ g-u6bl6EDP"KҎ"@~|I^uZ(̙Ѽy9Rh^xx6(Xs?>ܮ!MAhS}9Ѽ"{10=!S2FN0yEk/ +Gu E>vqC\x}u}Q, ojژDQN +&u&OAjqdwxR[x ĝyR-3"`e1hy(fkyܽXaq^tp{-Lv dԃn^]p6/ƽ|dF:<{DGxW+Ԩ pβ7i/qݓev(nL6k=H;87ˉ6m38?"#-A6T!g(hQnΗ0{~➟N$膓V`(olbp DIі$Y: =neMs[O@^G:0~p%6T'#&' M~I/1s|?oPm /NYBQ%2dc?K?'?OY0gr/jXMW~d#]Snf!p=]YmoR2S~4IIΑҨ6+n }bX)ȰgdYAM}9x_&4 (Aa TCD(EA4m xwT~㇯_Q%s]tؖ*{ wY9۾)wD^oFjWܖƳ|PK"TkO ' "ppt/slideLayouts/slideLayout11.xmlVݎ8_i^g8?THV+M;B{&fYPR_kq${$ t荓9dhM,x5+Bx^TC|jT9aCkKzod BQZKlIK"xM+X[pQ %sFNIjsŢgVeQ>T8$![ F  {ٌ"%L|"# {9(c&빠TU?E=v}'Pkrڅi6`}J(A"n9ed0-oOfNsj;N[Ivug$8$yhY4gl5QB\\#ձMiIa̺ 8 C&dBmotDCmdd-փ J1#~?kl(eE )h^(HE2YI23&. 蒳K(8 o6/XzE׏^jvP|~^h蚲3e!P˳3/;Aw &DG_s(v.!]ٻO׽s<P xtN´o{۳qq2ƶnO'uorHU%+AoWz:&RjWj9to`A3$S%( %U^:a!D2uXSvU~<%/Ij/4b߇"0Gvb?1Y3 sK ԪߺF D$I?i؉9~OО~I6;.$#9u? *eÁd埐̠wDOP,!Ѣ(/a1hVkT~/߿s 6 m@t؏A!Đ̆t^$Y:fmd+ߊ G=\r%(E.R|J 0h;-U8ar9Y׺9^)wD^oF*- j+# PK"To@h)!ppt/slideLayouts/slideLayout1.xmlXn6?` hFRa@uDB)Q#iP=NdGd)mn#QԹ|&7owL\6plruix"Rd)TųmRM襽ֺ 5++RȂjx+I d PAn1bSv%MJS :T':FZ%1)$Zklː-l`{ Y%-`㡦<ϘyX*jQKqVZN/Z20zƾt[ʢ#ݥ WTﱝf3w+j)@U #nDQY{jZ^O4{4ԯ^wFXqSaH<c jժлXd&*t•^=g桪/gpZW +GR=Mx~XkUIˤHj]ketQv9ylS_m]r| c/%hQp/@c *oL6eEmJPAwsnoKCaywꁸy^>:k둱sxIvu~xnC {p&z 8G=OQx<z.9O[N;Uw jfs(rOqgSuOu=ڊ?c?넣x,'N0Np30U竍dwmK:጖UO1"4evO%}2? \:àxD [z$8tcng~O} D?l_ωB]׃ q7"]tǦ귯_'U4-Q]Y!q<Hţ 8?%q4K/I*y˺i{/"OPb/RQ7'&+;l>{mغA٤hu5IRojb\9ғφPK"T%1,odocProps/app.xmlTQo0~`i{CL 0{v ؑA_KҤ6任OϟO&Gp^Y30t/_)A)50m:[ Ϝ0V8qp|4אﴒ=rw_))TG|^hUT]"4,С(J QV(c! ~O)yJ_(&КVօ.ZZ<{ v]&jWb㥀 hWX %&KGKlRdK$thInA%!weGa};ͺs$!GMm v̫BV/.$kG?M#""C:?h!sRIjGg81d9ԝ.0wB9ּ_rc6ぺ{sa@}B[°Q7gq9)gET.g,N73Mb{zXQ06e9'ĕ v?T u6IB U&];dE^Oz&w{;YUn_,OiUVX*VEԁEoP*yLx{j!TOF4lmdF VTfB"_I] խb1q8+`Lo ӥjv=HCM+ Winq8`B"%CaXZʦъ\ƨY*4,~g4W53/پĭ7.T4\bEԘ9POL -@v=HCM+ Winq8`B"%CaXZʦъ\ƨY*4,~g4W53/پĭ7.T4\bEԘ9POL -@v=HCM+ Winq8`B"%CaXZʦъ\ƨY*4,~g4W53/پĭ7.T4\bEԘ9POL -@qm(>759)BC޼)uINNn l7 (Zgi &4VrM򬵷ME>̔XF|/4d;ͬWN>b{k. MO{ |\z[ PzcYp8paOYv_m@h9灻 DMVq~G0 JR}$PK vRcm7 J|x:q;FSm#VptLu< }$\V.䍣 Q..LG"cȘnΡ἖\l[mA<Nja9*-ma^y7h?\ k4B{=̪)k]1 fBn SZ-)2'd͵bѥPkO3Ăy.#ߍb[ڽuve~[lHX?Jc$}W++ ׏ @V |5I_1(d|_fiŕu2/qw9!XeT+~Oܖ5\̟i"* v PXGd^j80"btky38pnrCoI7[ۺqD<gZ ,Oӭ:gߑchT 'U8g]LV8Wg8QL@%bz% ˬ0g$X\ fyIK1P玭{Cs(zENמ8AI GGhl<NVQ]ǟHZK;%:1㬗Qd9خbQ~j{mF*S}Б7bRTlUq:(0Rg[}Db% V7>2 _}8k?] ڬŅv`G 7DyܴP~ZSsB~]tԵ D rzK۷H\Fu? {3t*^"UJ_ .Vjx<S';!"ns $av"H=g'kXFVmBna;w`E0U!Ca\yc_Em.ΪRWYLU﫟ސ@$q}}QH)C,tH-u*n g:KD}OO?H]zSySzGIm7Wp¢dK'م'YxȖA}+Z ` J`'.ykPPCtrbޘ|23o֓p֒cV0rӾΕWd'q~7D}nC./hr3JpU7$mwCDMLfSBCxjR;Hw , p18qp㋬ᐲ+})ZD|y^d$C*2P~J{]%0gXcZ?-<)daI 邹hGRPm{/]AR$k 3jM4- _Ԏ/^9939xs~ק*Rgtco:NǐPGO`-nc. ;80sm>MVc>b T7M$x#|[R7)vS=E>caJEѤTk0{-•/5ZaS*W Ek}.3X9! U([1GcVPly(D!3KO@؅7èYnY=5:!`40ښA[' ݌$0mߙ<1.ʘW_!(I:#^"9PSr.@R~!/zsMIΙ(E e"< ?hGgp7vͲd{ʲ| vVzxh,xB+ @rnZ?Nݒ9|Ny~l.ď'@otQ{J&˲k{rE_a cNG(!4ۚ.jJPY3ӕqz_@Aww.CbCETnVYۇڑ4%Sw3}G"RVԷ(tgm8~myCXţxeް)%RSka?6f3㐺xXK\Tf-7먷yu{wjV~翇À e;ij b>o\U})wȫ:`_lD"ho٢%9FUXoMxTVa+p N#4OPG@ =̖pj8m79p€A)(JxҹύF9/+QlE}gaGO#ԘzWFZr}%".2]}.2?&IIyOI.;y~"%C{~N2W6t{4|2{J9 IZ crP=J޶2u) g-V'j!N5;tu.jePiKY5ZGէCNj!cQ4tvSfg;5oZ36J(xa秫.E|YKԉhtxe`@>=x=h+?&Q.V`<"!*RXYlҮS{`FC~8'kn_Ub)q4(F^ \h9֮=<.25xP~t-.;弐您֡`J-gu1J77[ y%Zs{^=ҫ_n\x>`$.kM ӾOˠ覐HP-:ͬur8\Hn}̎LڹbL&'V\Poㅡd .D:/aɜPsm[82W\tjɚk6nv%ոJcԖyQo~Lni#|?tWV1joc `"pO$1)c-r/7m<_+/y.ȱ% uX̓'l߅/, s6=7M_˟Vټ?`|خZ=?[oiޔW}]qě_Rn:yƦDW]iYYðvۅ~ dݡW4|/=<3OU+s8LrU8g}Y&72pıOƣs=[2X`OIض ^z!0?'̿YJէxߑH'-"'ӁWrt#!ks@?HQ]v5 =xf6XWzp2Zw;-sBܹ{rtahQWZ*(;?;UdhA#{G`o|Tk(43Xȅ\o "+,.o% b림Bh"g7+.ѯ5539~1sEOVXW?y $Qx7$ 8 7ò2ՒJhV_驌+_lt2 bR㱎c <BuU7-3ˤ!!}cI|n1Vk#eZ{)*@ AHb~Hv4Kɂ/ֱ]- ~ղ[]+Jyfh9>m8-9Bw]-k|Ô<@I͵ qڡs} Wx5 /__iWiz"\{>'_Ƚ("3ۥ0}Vp?3Xz=ޜ,ۤfbTBRSapKztB`Aax+H[|sS2XUʑ5"t'K^s,ZQ{#o4[1n: tآﴓY?2{Bhe(ůU28vSu/N)D\FQ=%i晃*U5 xhnb.8xCMy~4aX).@tu+.bJvlD́Ai~L_z^fwfA^,<Ҿ#|!_|Y]jtf?剽F0G5ˁp3ЇL/ie8VA&9p՝؇5Nk6![.&n,)fWnDwetT.y{E\2x|6]#f.CK[m ^EBv} q| ܿM}DN㙴Y~M6xZ/?ܫBvRɵk¢r? '}t@9y(?tVOX Bn 9r2}ǰKB|ғ ogBh.fl7</ fOHh(;?9)**2TJc@,oBn g88B;C_8Ov >.ܞ)lN; b2ŒKR>m6ԥOvՅ9 wT53#9)4u%Q]~5<]w7zs{N@ٓa_ -ͺqP9ʠz\*R&Tw)70SsGn%Fv?iVD(T1 N.lWEx?{{D@ʩ@lM#yrTT5jjdG +q,a<ǐ46X?O58۸صQav)P(o-eb,:| Z։ TkowOQ+Á$!3 X)O->Wo:c><F&:I_O":Kj,BgxP3_:<& o}c?aD7klz?+?49m.fR;MbR$9dOpz5$p4Zo]vU46>[=>{]keNbyON)F5DDMP?h\vo*cpBvHjxK7[ߺEۆ/*SQ-$q9wXpE5)RGt$_}W `zQMh-q/v&)1s1ZWhNW78n6ս5|ը"Zoo> eŗY:E3SIl~#Ű㧻'@ɮRWc;H:7!ه.ha?׺,1=0!13R^#].1j>u_.|Ȕ9rٿs6ďe /N-<V:qFucgBay8?H>01[b -#L1zBrc*B`!0h;Q_ Z4rAzOcL;t.|9%VNw&# ןQoɔ<=T]u.pӐ :nNh`*$IfY:76q)h7&3ʘt"s_?y_̣klbڴ Ozm?E_῜1^xT b)!<_jьݧb >TL,Pj!@ С8mRG(ȻHZ>bXg5JJ^ O̎7 { D\gg,LZB. iܩX`ѶR/wLk0Mm'-|qt B7a䗪l.3>_[ ]I?bK9pS9=-FKVJU!ȯ?t1CYΚVRe3>ets}E7|dt x.θq}-£HLHle0BSe}ľby GРtP uN2*B[Ŀ6^r+5uw;U%UiSR&Y}a]2+&J}CP8aj[Gt(2{xrbj2ǩnUa9¹Θؠ0H6|iAzr05 3tF1ܛ.|8 ͯ'])BTt  1.g@V7I}B (wG|^|&vw+K׮0.1*w%>c+x}xEh1})5LzRxjj=Gd!`h.iH5ȉkJhnMժ3?w9zG̚Y5eMƈYDA,<ףFLշ1*1lƣan0qWv(?fs3~wB Q{ΐTGN7VK;ЌDo'<Ϙuw'㥪Zf\@MB߬iҕHVG}(MJJ3G02yfYa3~G؄=cNҢ~#)B1IyJ/~#]qb 9ۑo5)Cm7tCr 1N%! ϒE9|Q?k~hcgS@Ŵx pБ`ԽVq[V+dS~N%R?$g% KcBe㼉b.~ۅI]Y./ĈsFZG}~Wڟz8%k(S;>r"Vud:h+tJ zŧ$ >xs;wYǤxߡQI ?r~R S+䅼j%9d==.AxWVؠz=^$dOV`j<:*+ /9|t"NJVuz!Pq5;o n6ߎc{kb՟j ;F秳ɡ(4s 9zSu ՟檫4"TJgRjƋHm 6/ƣi+VmU}Eۏ/nE*N]eDӜ~2:=u?h~5n-nmE:HthX>g~ńÒt*Fbdk !ྔwAbYd<"ۑ#MK!v)Uh_OйwvMJ9[yġ=T >l['zdmrCZ`IB=w٧D19>:CG؈7u3W-l1!"oYXʽ|GꍖD)@Դ~K]Ik86ff#&Kڃ*1(,Ig1Y}"hp"ń۪%.*u!*m߃JsՏ:ԅv5}m8R^?>3wSL-I]D9/a៑Yu-˶u?Ʋk۝[VCUz$ L5;1wd+7Gg.:D /LoGʹPɄB $gɛ*:qq C3YZhԷ_+~`V'G^1b< |`-!1.^3yYs˸ g<&-Y䌹ҟ _1e{@?~j13XZY{kc`91+dgܤE\6/x{U/ %Y:}Y/״rܽ&IlLhD5\K2($zp#kJ :bIDr~i_nsig/fK$&a:A c̬?ʏ+{~.E#U2/]evLJXKvaSC9''ѩve\Ve%)@D`,m黨,"q!t,LNG(v B ;5WHcb't}DSHc "Y{P$i;H *[tOR{{"nOdtЌCǵb <;W $ɝT$pMnQ~ͪ@BJV D xf+/ݞ iw&-82\qtl=^PTR,^W}ϝ\D}^WjB0Oƅ` U7ޚlY4X /z̻~mSs( 6ـG؉.6ۇFc=!hm ë</%j%d?)tJ _}ƕ;};P2i)Y6`Vˆ͋p$iMX B2=erX@q mJ%KF8;p&;ձ'\_lv~`86=X F4J>+վ~qKi0 VPZJxGS_ ;+ ;& OTvu?Y uU%eD2V"2C6xr> $[>"[պtZ UrvZyl' %t54676oНwdvnuxְٮ$eBo^9y 9G2 'um_[tzNR6$R8u'kN;d8aCf;pQ(lNE澅X-sU^n@~Zt4I`[NWVu%O _qQsEVL}gGo"Fc[r#<f{="ݠc}+MKS86{M~Ybu*|e:gD(gXj:ݨYy"DpJZډ$,< z7A8W`}gnn}'gl|w&ea29d *-`;8lÁlFS~2  сEEpLVEb^ՉFGʞ?PG{Y֚7إ3 fh"9v/E6Dx=v|ON?jaA1vy)vql @XxaI|c{ OSf]ZiY /`Å O^₼,T#Z;byG^#1{/#&ȕm6~$Z8kN6h[X/djԵxhh.!)tdƱjבg %\lcg{& wV >m+-zhgt\ ;z8Gܠb<3'TS r\AA(AjͮL)3lƨ(L9V^|1!sW ֨!u yQԢn~(N(Kc9"xgzA4y"ρ b![Bw~Mu:{3YGrx-˨<-8Cw:9_~gĩm" 47­R}Mi:~ـBxǺ;_KFٗ>1u b*z("z5Bй0]: bq!1vx/n9} 9 >6"sxգm pcu$p @:j"[^*c$~¨kQ9[AE7&U<0X&rەB迭Ģ(M1C 8~kعիrٚ$]Z$ܓ[CfX ĝvtI~SFsI~g%CIW{yPF rJm6˚;^R\/v@*⬃Ƹ(Bl fzkfͣsUk48-5f,-Ԣd}nJDCJ^jD GzqA6fk}φX|p$o\@^YYB)fL r}7Ht?whuƤk!1ذ{8KI/< sz(|h;L{^8oLKOlIȵ t Uc{Ϙ& k.EOWYV uQ*}P e*O{H ;:^Bɶq. ߼,|F Kz.FQYޖ-{-G=f Z&C$ BHNR"r[KDBT>Eǚޯ\Y^/'`85O)o^ESҦ9qM\ľg~ӷeB0dGAF쉚'#ζSʹ ڇ @\ AAPD`ZRr m:ۊ͘v'zqN\#hDz3Mv fu\ _Z7kI^=B6@ƽvBTtȄߞaף`/4igS:p wPVe/VwK5wwr97CtM# ݹR>{s(8eRwne t)`0Vl)+7,`R)IEh2!y;TM;m,W<Oa[-ʕǤvQ]Ű(xs,-~|gĵ_(E1(&zİ@ȎkK0Bt@(}),m3xM-*RTl!YMd/b3G=R _ut(Tv-㝋IA^_#ޫ'~QɉLX g5 }ViUdp}#&ﶘ_)bc9k[! M8.'x _34^{a1<$Fj{b&GW@6;CS 3bG iv8@fjG},]!AxP&o[H]7"kH<4Љch޺I  }hU[ʎF2I!z5'DzF~̀Qz! ҁp8|}0tޅ0"ZkRo4`\oᴽZReXFє\V7"[/o2wyS~./Hb+ Zn撠 c/3̮]E L* Ed0Cԝ$ >c=$.PuZR(&m$$L<ڼFf3>2Q9.O( OF.@&+SkU ex !NQ8XZ뇛J@N] !OPKDS1G# @!ppt/slideMasters/slideMaster1.xml[n6AJ?:E{ dA>e)EYܐ-QɭI@DF3f+j\^f9;48cˉl+%?Rn ㉙ Q-RwyA ,`r]B}IEdGȪpB2͊Ҕ4Ų{Ώf,Ԉlbmx.t₀Ld1Y-H<1WuΪ8$O$ 7r j=H6$tVV|ztY\pB]y!>^s#t W0oS POj]U#kGR:+y"7ZFTQ9Ju[ZR,WLPbS41*jPgytY,*T ްTf"5čt͍ej7s)!Zw̄l] +C Tp+ VYOJ\O0 n?t@=U7#y2·n=ͩrh &>0ZITT((\܀c Ô(Ys(W̚G4. $uR0J)TJIX|9 DULm) ,-d;MICkS# !:PAG9X\^2+ѷƛ4 r+,oK)z9r\z΃\|g +ȒNxO#~vQq{AШ,&j}{/i #@Z7oZ`8p <x m4v0;Ύ{-4tݧ㨏d~9!Έ0p&ĬfMq4WS\M4_S|M 4teH9IN ^FZ:}93"9'/Mc[yC/tog!׷e:0wfF-fwb1-fb1->cG{mhχA{h>/E}n 6^?nquVXu)41br4յjt2CRq;o2^?UU~?g_Br|" W%X&ET69d몼 A$M<^?Bݭj]pVkUe8e{?-w[eWeD&$O~PO`ũyz}v ǩ;Xa~^Q6n,gиfy z}"Q:ë3[=SN/0иC -vBޠ .v'p B?@3n{KÏ}| U-6@yEBoK-7o<|~p*sm|=6c>h\?|׏5m뇍w9״q{֮׏a-stHKh}=(ƹH |K7ΫWM\3r\Jl YސjB9HC-!@ [Ғ1 5f]HY" %A[W]ʙ54J̜'AIP.BպtEPTWNRfr tWNR9>Sc_^S\{/Ł92*!o=L O]Bx#7L%ŸJ !~Ƹ!grfGgTʵ/9eb/͜W-B6j@J>*!s-+H& PKDS9nGdocProps/core.xmlOO!ſʆ.5Fv{5o-'0ڭMzx4ox7'b6n3'oeyGmP>K"HEnsI0'[ (Mj V*;\>Z К[j(XH~ZM,8LWѦ i \ɽOf2}_s:ZP:mhe^}":eh.r1>)ﳇՒ5yYnV^L0y< I`L|PKDSy%docProps/custom.xml 0_ DJ^ij꽤6`!-~aǴ+<Q\eNƈkb '0iM3i`+q?lxA,Ɍ[7%:ĖT-@a;x`á+Qυnb[? *̕EX3#a\(rzpzVQ yH&g$#`YH;:20l 3%y/,'cHŭw 29r0Hes\~oO3Xi՟8>ԋ0 4Q9>002K00]`8 :!05@ hhM +#+nZp.ґH96WQ) ٬ E Fef$l`PXx O,ڶG84XZh8@ $3}H@N`9MPhg la# 1a@}jJ`HDcXm{EMXd1@oPMj8͈F8q3B0(kxP}q@b8<ҰE< < pރ,yD  I ~C577a2PV(:kd N?8gll(DPĖ1#93cgj46l|R@U҂l\6L[ZBo`HF0Xc<`Vڀ-@nHL#x`H\U͂}z$( qd}(zkgR^= LR-q(II,IJ.JR FFF!V&&VVYZP4dU i) PK!ppt/tableStyles.xmlUTux  I0@Ὁwh}-CQ$ +w*!@he/?JXd45ݤ{c@qqi` yߥOfzJ2Q|ŸDN=yV̀" 'I<)>WSWܤyH1g1r++a-dQV c9]zLVw6j/Nl*gaGߧ' V >םڬ (rqI9\V+YN+[!`UQMC:d#7;Qb*'-[99{>n_scVEӽ00%\"џGGoPKDSppt/theme/theme2.xmlYOFKoe;i&%DZ4&;Ҙ(ɱP(MK/z(m ~)m I3GIl `kޛ߼H:41 [L]yDb']5ALrv?<)̠&szt0X$Ā#S I#DͰaod庖L:jI}wi|OY!0=eYS.Ɖ!<庆㢣G7v+%t%QY-#ԣx躞V6n W@Z[XVU ۃ`X5d[;kµ%Pu)|ء[{k jbmMwlW {_ )*7Zn:2\)HBј"m%H) b6G#~[^;Hڕ(b[",œ_Tw|3Oj Ͼ~Ͼ(= 2eiWvdbn; Y' Q< \=xJ^ݮ>H#rՀ>9].ƒ0t&p;܈p6)T&h^" 9ZG TB}QȄkHC4jK(qx|S2?uXLB\sE0 S2{*sθt1ц1dLskt/ >gu$H9 SMQ؏ؑHQ]#\IWHqyco"ھ!:AU- Hq'拍V3oTv}eWWEʥYϛpU<$4F~Y~ u󾆿޴Ͼr!K3Y~0>s XY晘^<²Q*n\ W%%ӃL0V9BM hhf>+e-Rkhr-J۱0W}}`uD <+24P<܊7a\ĩ_F#m:EFBJ: ) SMǺQVo#vmy5xL]}"2 {'yWL) VvUT(.kn.y 2L`$諌({\4L>Hmg:p`_y3FTJ7b)֞(,vWzEGGtsVʅdt6f4VK5+OY:měoִw@o7 6֐Εek5?zp*eu9ڌ~znh{al{ÖfVkYoNify#q?狷0|ML,x-FX\rʎ2M&Vf,T; 9;\0`\ tumc)YInPrsdbWrt<\ 7~ֿ~;r*c1QkSD+[v^l;~~ &w69A;gYa_R&~g^BF+}Y_ )joI <&t ƫr 8!ֵ䄉i=3on}-]$+f]%.ϗO|K|c|Ӂd_>zկ;5Տ{<`(O@J2 T"@><8 舧 3U{鱇TqqJ)Ҭi~T-MNcm:q8UBM H2LacCcdBBFF\{@J!W Le"(CGJ}6bR qÍwLdXFHhp8TXhQS|Ig GʰYDR&* sd +E vDi.-~`#܁XЪp<@TȔ$E8#ymo 75f웚}S?⚽*ӆ|d#QG Vw&f Dgըd"sk ܘ^xzBX* c6W=fZA"f|/E؏٪z<]Zc&*NB2$(Hw#aWXocaHQOK ϭt&ejEt=ٜۜ^[$tk0 \X:ԶF!bml7[ڙXs'Ġ#q6Y!l<λz?KkX5T?CR LYvx9c=p41ҳjZr=eL49ӆxJ(mLKo&JɽZ/EՖZ)(r14 u-V4l Um+GS:c}x AQSsԶx l5g!+2|,2/NSY\<"u%zkS –fN+<NJ< fW<I7dSdP Jbي).yE Srmiٽ|vZEmq V Vw( ~0.NS^/ZPK!ђ7-ppt/slideLayouts/_rels/slideLayout17.xml.relsUTux Ͻ 0]&4uE$ۛт}\MxRbZV ț`5ܮgIÛr\h\xpEQ98%Ӧb#&Rb>ad,R^3/] ]˅EC>Z'Ĥ9 xK]Q G='_!wI]RRM>$^yX $ьS Tͦɦ43%VvƩxĨvK0x)ϐƵ3us;TMt{hTf.vƍ4A [_r+PV Jݓ86tkM=iqǛNQio8a ' )+$ϘF undh1 }hU3 D4aY]WZk\T}G5Fn,bN[g١_PI>]yBwQCC Gb/EE@y<29xMټI5 < t1 @o 0 @:N[q p*I\=Ka9}gSR01at'N1lҝ5S*_&OuI]pPQXO<i.Idxfhyȋb Tl?o8{Hd:ƍ_`;YֵJ8=5ҳ~rЧȾ^~6AͪS7#k(u@~d/c?ve&z&DZ 6x9"PBE^*߯_Zx/;.x`;Tv9 &v6YMVHfT[U)1>WWEEV({y{f}-W@Je5n7awsqQdL D# G~`F(v}ɢBn/tW?2dU4}T;Č7dI ?ǖ2Ru\-X;FԹђ%_,I3 )uJQӥ KOie'إ116~>n)NȪRy=j4Y)ȅ(I"%D%}JqzRVnB> ʜoTU= s.iynˋy]򼖇\}.k~9QtoA t(O-0C`irZ`~xbPjWL0T}Ǿ[!. E]T>OKg#*UAxӷR S̹sKYF+!( |3_dB9`w) BFu~]՜>ubidc=M=^샎*l Ѫ<xf GS"Mv *7l@ *Э *Э *PVJ`H~WD+:)ozçYoސ'/j{.Ի/tٓ Ft6y2LGdz|?jR,'lZZGmDzSFQtlAYQwU|XcvhB{[B|6YJ:x` *Q'sRSǙEq0K]LU G6S;]LgvXh˙ҮW~o߿;h>S~ۍynjL[.oE`PK!z&!ppt/slideLayouts/slideLayout6.xmlUTux UKn0vPRO؁U$Q'`$:B,IvV{Cʲp64y3P[z|*jNbfRW§~ $6h)&^%^feR/*&l 7RMMifG,ɮl,#流`S^ A+0:/܎Q1&_7ˉFe6l66n/UCJ{ ZUCI,kc|7iU]ܿtbBh˪ר+?$$qkz[[|_x6~rӈeW#Y]{XS(ehS7LwS^rFV;eD(-2|1p ҩcFbB5(SZI#%=m$MehiPK| u |!!L@O gigp$iI $ :a7ڭ0 5gXV>,4/,>ش}i]/b@lN4'ҍ~{Nўu- M轴i5LyY0t_)C!zH;q;{pԂaNӠ Lv6LaxαqT}~Q R_T^q/]zx#΅PK!=[!ppt/slideLayouts/slideLayout4.xmlUTux Wێ0}GKҊ.mZ^]n![9| Sh+^x9gF>[4̱5}/|xӂ5{o&#?T0KOyOZ{R,* qLܔ)+n`)Эn س.pΊYjA&HeUs!h\`anHju]^]'z$tŘFLn04|"06_t\1J4+K&V`kd?zh[3}O 4OhB,6EugmQ rjj1ȥ3 \g+I@Ǥߦ^l޼r(`&sR V.kG% Cx 2UfQ]..k^"6Ұ,G .rY 'X#ƎU]+ \1Rp#X~}Ӟ?ayO04Jvk/ $ Ӷ:qqvǁr𜬕KAMVO#(tv\G<HIU#Gl&Tu0|XzZVOJѭa7⸛[+VJ\+H>b/ 06uG6E3jz=s=zJ w_Vm)ANZ޲ɣ%rGP:b(. bPoo^8eZRGsM% w-Vh8}j X=oPg2Ќ8SSDԬd L/? 51j&݅,X6 Mᴥ|D v#D^l@r I3']Hk{l\.L{KqD9Aפ5S8x-sw"h8P:A_\Պ+58A)f7%Y #z U'djt= j/4egiL76- k-+o}O:~4pt0lzSLÄk=QVvrkY_MZȨيCm]2 Hl(2;*}sμu3o=ܚmrN[1_k-}tb}g9ܗco~8h?C\? QpV $%dbJUYѮd- faoY {s&y.v{ ́~[a;.2Ooe͔&1AVg!*i {{T{c˚Uaj<2Bwǥ< O uAAH@m*'tL|Fu/n$py V0 + H4#b)JgM烆YY  Ȭ3(YaOtxB;&uqƴq^3?SFñzM]_ʾw47ip){k ʷ^#U$٢7Sֿ \ PK!h "ppt/slideLayouts/slideLayout13.xmlUTux ݒ6;w׎,ϝЛN<'JB:k'鑌aIK 96eayŇqxZe9O3;BTg8-?odmR0CTXKVRE%Jx,8.i^c_-yʒ*]"XA_.ZZ->ܒk[p6i &Tdf@O1_E=~Vi»4>2if~f A[ĺm6iכ.NMq-j6u)WޫvOoh|zim (Q HD8";p8B rڌl͟ R.+3ҝD3ZjCTs-i l#?9maNQAc8WI('RNoGq<z#7.0耮e=` 0QԴr:`~xaRoV, LISA6mmJbɻFmԫD/MT8(x\6xtéSۛϠ5xDA'j7de%J}e>$G&gVU:HB&?G&lc3/Y(B5"w@ |b/q,sƾ퍒ĆNl'q(Xj9,~/_}U^x!amb^51]5م{nPK!s@y#!ppt/slideLayouts/slideLayout5.xmlUTux Yn6?`@h]+hR$v= KDZ)R#in1=Nd$%YrbrlÐ?E߹|Yo- c q,iʲNAl!a[+,w'?<$;G+6@aPqmt $ްSlxS;.:Nh(V&<# Le1AR/fy)ZɱP0fJrU*k'vĮ~YjZ'dBM YQ" FQr.~My͆5yꍖ]?&3m6CtB_7RRLtvem:{e;BUrqsnsI0k}EyҏPWWT6k9k\ .{"(^@7 tNm, &Z\lߩ!o`sSW H 7*g 9$ѵɐG Y.s`T Ҩb 1ͮGGr.;LFFWi7Yޚ,kR6hau96lal{q 1S6nalDQMw6S`T,}%6jSo[(*; i?=8QH9TqX;ORu_$S N Lz{r}\z瓭/;;;SWUwZLb. ?~Reѩ PQXFgnL >x"ɐ4ӹd\VTwO͠y!=j~Ө]E6[5;|f?|Q;k~-fَl!7R)|I~# S#'$3V|9ghѩq I`p;ElGjLyt\Z[Vs0]-5JK7Ӊ٥'zz&okw;ۇM =)Ñ$T!| h8#'ƧNXh˩ҮW~O߾k_꓄8Z Tivs7PK!=t!ppt/slideLayouts/slideLayout1.xmlUTux Xn6}/ BZqNԾM@C\"ƴ,P[}: ^ 'xBT'(+Rd9pF`԰M3rZ/$ȸ9)D iV:bvI+Vd ml K;ȣ)QshJ[cUU) CY,Mhn4یZI-GvOV ?$k- )#+Zu(޳7J?mQUn8kU/.螣xduxuJG)4̈́oɰm3 :L\ZkMZn6olY !!p%4Zje֐(SDpS1InAt=8Zr.)eE R-6[\!L2Of0k {hw` KQ*g'o:Bg˅GSZ]_5NC3fw5x Ahh+C;A[oy/n=av{a{mjl:/)6a~Q-;a{ i`vj3og n%-fg,4Ӥ736 OeMFNltwl:tᐝg/PEI6_0rwOmX!GZAW LRvH<['W}XhKgcJ^ 7{]-٣ oGcޛ$$=5;unMo2OFf81[5鷯?oFuĨSv}H\7NPK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux Vݮ8GwoZуچp½Iܓ'niA+ZÓiGVĉ=ybxZR!K^-c!ZgITs(LֹhcSl4QB\\+ձM~N4Aq N[rE^l5a캱3!7!j#03Z|dFLZ3j>0I 0fD7ShJM%Vu7ae )h^*tO -RLb#1r^ 'gc*2ǝ?WQQ##-8!)j  {=?o)q5XSrQ\Hh! CNi蒲3 gE)G/DOBlRr~vt͖Ez̿FS ͻr~^TdHU|NⱝȳǓdbQa&w'miaSۇcۍw@[v⤜ܗ'{CF]%j.֔2/Q4vBFGL„ 6gHIgGL`Xx>݋t343RvFC뛯}P1m <h [[0AɫAGay5ZQDgf'ʡTK63nfn٣6ND֢F7⌤t-Or yV|Q GDOMf,xлYC`f iI88~vaFt;>6 ;}_'m^9${ʕ_RpZ]Q1![?PK!)J.  !ppt/slideLayouts/slideLayout2.xmlUTux V[r0Lq@П&a Yb FTIPh3VWH L{=ty5/Qs^"Hs>i{6 Nނjݥli~& 150n#[$BRBT]0\ $j:d"%_g%<M*-,$_= ^+^x'C"N Qꠞ\#E}OJ@ywByjqV= I>)Ik>Vhg {v Jf4&͞h\&[I-eqiz;rT֬z,'>:beRX(~u)_ta< fhi/ 2bM0c(kAL htK b`U8$(5r+t嗵RKZ+%] Ih&X T&p7!'VZ3Z[;̶ָrd!MVFg_=~pڑ}1U&;~,|>ދ~>KNI acoet6`YFCG5nnnqpm*|2U~j=ٖ+O5i av{hبeM eNk:6a͐)EwBS(',+R >jߌB\7z7f3A~7kk˜Cu?'5/ޜTgӼp{J I8v$߄cl/PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux Zn6w kW"%JTФHz>#ѶPg$9铌$KNIt|cQ_~$W%2+cLbv|x?HE` ΫxYI^Лr(=vJUG+9˩|QVϦȩҷb概s" ݜf/,a2YP5`*glѪ}*7UOR[ mlrSP\O䋼z/3bKa]^ f{q2dvHVS69R 'n6۲6޲m=ƪZ-֞ Y²(6_۷^QmJC)~0ݾt':`F?M@CzGme#BlWzĥR7ٛX5v|bJ\sF9ϒ@oTLk>M(*%i&T/Tչm;Z:X+&l^T낆~j! :~8 Q E2/5\;f(Of^G؎j8SqaIV/j lj"%?i`$܎TT4Ge9`INUkL7D=ʋMs:ӽƁz0iErrr캽[s< `O Q ȄrdhuyȒ^5JkTCa ]TC :TG06 tK!Ol"DB)a`;b`tsm%l܃ 5=6 Q]F^>TOem)1URpU8lNW QLlB8݂"7 IK5KU`Ah>7m @fx7om}$`XmAV,`qp_(걗L@kK!Seo,8@\o婵dO&g#}@Fg~t6">=_Ob*MUY&l!ػESwm\ȃsoYޘmp&ei?x=* sfR.[ɗ<[!1B#x#Mp䍽pr:z1^4Z~A9rϒǹxCwKrֹbָ[>:PK!p O;"ppt/slideLayouts/slideLayout15.xmlUTux [n6w kW%RФp7i-vMK:]gÀ8}1ȱnlJ"?W-ay&I4|j 8 0Mr]\{uO/:p 0 k!ٙ~HbH3gŘK 0=QYjd$ab.(+ ZH.`&'l+<6 ᬿHp,nX*0M&N<de슩aW D)kzTC5|]5nb-vӵ=/n]?p9[&[J ݱʟO[yv_r!_ݣpZ~g!יJ áp-W$Nh9ȄfPL1JoM "X})u\KrhueX>/>ԱS_O "bW HiW(HW᏷V2ese^l^-+}4>'vM3- .R 7Fu3г  Dc:kN0̲$lxx1Njo)@٥%QMy/PLUі+lYuZ3#JU;yYU*5)e`X;S. {%;:o\mT%E6}powͤFm` M*YL'li"N95ʜl%Tj5i]QMwjPմƦهXԂuXuS`v܂V7n+1z-XG)^V##'=ub JP~=,P,05 dgjNUA'ŁA *c9KƹM|櫌mEձi`SqL<L%`Wo %+Q)E|Ka:2&"9y}!JKt-`)5"2r%{nauL]{][Zvļ,>=JM @w{މI鑟&q`}wOXOЅ*wO{pAм<~Y?v,{f1gz&1gz0gz&0GTx'ā%gYGS! ԐA ԐA ԐXϫ8!3!2!2!ϡxc-5dfu54Ԑ(lPCG 1CƮ!VWAA9vC8,G^992!2!R1h>Wo`+"hӘ &o6rctqu&iQUdEe)xj/Z uӡaMOYMjm}2񽗓8#Ҫ=UljoAxy+By9  =ru 3hdOfb92f3C:Υ牰_ū7ԋSg*⬩Eɺ yEo_PK!!ppt/slideLayouts/slideLayout3.xmlUTux Xn6}/ B} 8q>dCAiPKIڱ[j?gdɉq6uu+%.(ZiSC$/#T5.L ڧXqM0J~GZ&D}d/d{0_V.㬂T(aKQh yr1JzE-G.`QeDΗU?x4TZ0LsJQJm"enGimj'S S|Xeq^%,rV]]-t/| Z@%CĞs4~l1OƠ`4/{akx)IځG"{uD WJ$l%whNGLr.#^xn QnckE_j[%ƴp#>V[X%sj˥8W?T`e;z0ϵRS`*)3ȧ.mǧ4oIr1P%Dʇ$er u՞1|v|5[_'Eձ%lU`v8)/8/r`q$d:'8 ͽ >`}~~/Lhsٌv?fy0kHĴ}r-^ z6-'`ClءzlǶP{`KZa-_ǎؾ;;# ]* /+ <3ŷIHd^ @Ng[K HrB9v_D={9]oms6,N-ƶ-2Ɋթn> - $)ʂZ;*wg:,$r-( 9R)EҜ7eE uoYH`g3mۇ9 c2iTiVVq*$wnk#7jYg*xP\mB*9)J#QqJΫEuˍ斃,P >P_Kr]\_UFR/{t+A\onakjp2(@ZEuYƟ(Jo/QǬUڤ_j(M L4CaNԱ"߶~Ģ e"%EטLȅ1jeC bWJʣBU^.gbO<,d hIpED:U]-C$uenÅ-OX %K;ϒm'2wj!> fc U:'YԞŀEZDG\и,膲H4ѝ#嚫;=>[DqR/%:>i@)aK.)|tI! Ʈ}L}۪LM9!B*TK3"QE/Z= Vwps{I23kq)dU)g7biNߕ+wL=$ 6zȚm݆=:lx<ee0"&&!g Yf$O9h0v:ㆃH:K D> lG<-ˑy;NhMΣ09ͰwPeyZszA:sWgC4Um(쒮[re=Kk~\,^+7A /!}0I?xy9#ԟ7qϣh::ؑϣ=αБʻQ~=o&_fcr53[UVw"y?PK!ҦB!ppt/slideLayouts/slideLayout9.xmlUTux r6@; Q/M|LB't&~N )[iC{.v9G[&dV~XIftD)eN{&wg:<=F!`ZkۖɚT)+VwRTbe~vm8Ӭ}1D\.dB8U`\gliZ%>4IWm%; 1 l OQAsظ }hIFFV1*ꦺFr{-PjTF̮~jdݩmv %f&#i={iݹgjy|(~^YV&J6 K<ȍ(2.z~9=a+{,}k;OiK(ԻɥQƠ-? u}X?FObn^fb,u6Y4SJ2{ DMW dEzMfBr][w6O۵\kN.y  bSYD 뤇W#7eGGòpHtLYxQċB=Y(\Hl.,Ijj{D}xnNj y}񼎇P߮@:F$^;` u=`sr ;`5mxRQ{_xޕ%eMSTjZ~F[XJ7DnMTŝ czFG,ɴ*7؇6Uӟ{+AEƹYsJ RӈG06m)6#+W(c7E{㴁mdc==YOihM4[;u },t hea^ڃwhGP&GǀOn->{Hz]}oC3m|)F!}s&>ӕa@R9Y[&ԳۚL}tppt/slideLayouts/_rels/slideLayout6.xml.relsUTux PK!ђ7-Vuppt/slideLayouts/_rels/slideLayout10.xml.relsUTux PK!ђ7-ovppt/slideLayouts/_rels/slideLayout11.xml.relsUTux PK!ђ7,wppt/slideLayouts/_rels/slideLayout9.xml.relsUTux PK!ђ7,xppt/slideLayouts/_rels/slideLayout8.xml.relsUTux PK!ђ7,yppt/slideLayouts/_rels/slideLayout3.xml.relsUTux PK!ђ7,zppt/slideLayouts/_rels/slideLayout2.xml.relsUTux PK!ђ7-{ppt/slideLayouts/_rels/slideLayout14.xml.relsUTux PK!ђ7-}ppt/slideLayouts/_rels/slideLayout15.xml.relsUTux PK!ђ7-~ppt/slideLayouts/_rels/slideLayout13.xml.relsUTux PK!ђ7-3ppt/slideLayouts/_rels/slideLayout12.xml.relsUTux PK!ђ7,Lppt/slideLayouts/_rels/slideLayout4.xml.relsUTux PK!ђ7,dppt/slideLayouts/_rels/slideLayout5.xml.relsUTux PK! L|!|ppt/slideLayouts/slideLayout7.xmlUTux PK!3Y "Oppt/slideLayouts/slideLayout11.xmlUTux PK!Ex"_ppt/slideLayouts/slideLayout10.xmlUTux PK!z&!Lppt/slideLayouts/slideLayout6.xmlUTux PK!=[!Uppt/slideLayouts/slideLayout4.xmlUTux PK!im "ppt/slideLayouts/slideLayout12.xmlUTux PK!h ".ppt/slideLayouts/slideLayout13.xmlUTux PK!s@y#!Oppt/slideLayouts/slideLayout5.xmlUTux PK!=t!ɤppt/slideLayouts/slideLayout1.xmlUTux PK!f\$ "ppt/slideLayouts/slideLayout17.xmlUTux PK!(D "ӭppt/slideLayouts/slideLayout16.xmlUTux PK!)J.  !Sppt/slideLayouts/slideLayout2.xmlUTux PK!;FdvU&"ppt/slideLayouts/slideLayout14.xmlUTux PK!p O;"appt/slideLayouts/slideLayout15.xmlUTux PK!!ppt/slideLayouts/slideLayout3.xmlUTux PK!K%!Zppt/slideLayouts/slideLayout8.xmlUTux PK!ҦB!Jppt/slideLayouts/slideLayout9.xmlUTux PK!x%,GdocProps/app.xmlUTux PK88pandoc-3.1.3/test/pptx/incremental-lists/with-flag/0000755000000000000000000000000007346545000020444 5ustar0000000000000000pandoc-3.1.3/test/pptx/incremental-lists/with-flag/input.native0000644000000000000000000001167407346545000023024 0ustar0000000000000000[Header 1 ("slide-1-content",[],[]) [Str "Slide",Space,Str "1",Space,Str "(Content)"] ,BulletList [[Plain [Str "These"]] ,[Plain [Str "bullets"]] ,[Plain [Str "should"]] ,[Plain [Str "be"]] ,[Plain [Str "incremental"]]] ,Header 1 ("slide-2-content",[],[]) [Str "Slide",Space,Str "2",Space,Str "(Content)"] ,BulletList [[Para [Str "as"]] ,[Para [Str "should"]] ,[Para [Str "these"]]] ,Header 1 ("slide-3-content",[],[]) [Str "Slide",Space,Str "3",Space,Str "(Content)"] ,Para [Str "Even",Space,Str "with",Space,Str "some",Space,Str "text",Space,Str "first,",Space,Str "these",Space,Str "should:"] ,BulletList [[Plain [Str "also"]] ,[Plain [Str "be"]] ,[Plain [Str "incremental"]]] ,Header 1 ("slide-4-content",[],[]) [Str "Slide",Space,Str "4",Space,Str "(Content)"] ,OrderedList (1,Decimal,Period) [[Plain [Str "These"]] ,[Plain [Str "are"]] ,[Plain [Str "incremental"]]] ,Para [Str "But",Space,Str "this",Space,Str "text",Space,Str "isn\8217t"] ,BulletList [[Plain [Str "But"]] ,[Plain [Str "these"]] ,[Plain [Str "are"]]] ,Header 1 ("slide-5-two-content",[],[]) [Str "Slide",Space,Str "5",Space,Str "(Two",Space,Str "Content)"] ,Div ("",["columns"],[]) [Div ("",["column"],[]) [Para [Str "Incremental",Space,Str "on",Space,Str "the",Space,Str "left:"] ,BulletList [[Plain [Str "one"]] ,[Plain [Str "by"]] ,[Plain [Str "one"]]] ,Para [Str "With",Space,Str "something",Space,Str "below"]] ,Div ("",["column"],[]) [Para [Str "Incremental",Space,Str "on",Space,Str "the",Space,Str "right:"] ,BulletList [[Plain [Str "one"]] ,[Plain [Str "by"]] ,[Plain [Str "one"]]] ,Para [Str "With",Space,Str "something",Space,Str "else",Space,Str "below"]]] ,Header 1 ("slide-6-two-content-right",[],[]) [Str "Slide",Space,Str "6",Space,Str "(Two",Space,Str "Content",Space,Str "Right)"] ,Div ("",["columns"],[]) [Div ("",["column"],[]) [Para [Image ("",[],[]) [Str "an",Space,Str "image"] ("lalune.jpg","fig:")]] ,Div ("",["column"],[]) [BulletList [[Plain [Str "An"]] ,[Plain [Str "Incremental"]] ,[Plain [Str "List"]]]]] ,Header 1 ("slide-7-content-with-caption",[],[]) [Str "Slide",Space,Str "7",Space,Str "(Content",Space,Str "with",Space,Str "Caption)"] ,Para [Str "First,",Space,Str "we",Space,Str "have",Space,Str "some",Space,Str "incremental",Space,Str "bullets:"] ,BulletList [[Plain [Str "one"]] ,[Plain [Str "two"]] ,[Plain [Str "three"]]] ,Para [Str "Then,",Space,Str "a",Space,Str "picture:"] ,Para [Image ("",[],[]) [Str "An",Space,Str "image"] ("./lalune.jpg","fig:")] ,Header 1 ("slide-8-comparison",[],[]) [Str "Slide",Space,Str "8",Space,Str "(Comparison)"] ,Div ("",["columns"],[]) [Div ("",["column"],[]) [BulletList [[Plain [Str "one"]] ,[Plain [Str "two"]] ,[Plain [Str "three"]]] ,Para [Image ("",[],[]) [Str "An",Space,Str "image"] ("./lalune.jpg","fig:")]] ,Div ("",["column"],[]) [OrderedList (1,Decimal,Period) [[Plain [Str "one"]] ,[Plain [Str "two"]] ,[Plain [Str "three"]]] ,Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidth 5.555555555555555e-2)] (TableHead ("",[],[]) [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1"]]]]) [(TableBody ("",[],[]) (RowHeadColumns 0) [] [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "2"]]]])] (TableFoot ("",[],[]) [])]] ,Header 1 ("slide-9-content",[],[]) [Str "Slide",Space,Str "9",Space,Str "(Content)"] ,Div ("",["nonincremental"],[]) [BulletList [[Plain [Str "these"]] ,[Plain [Str "are"]] ,[Plain [Str "not"]] ,[Plain [Str "incremental"]]]] ,BulletList [[Plain [Str "these"]] ,[Plain [Str "are"]]] ,Header 1 ("slide-10-content",[],[]) [Str "Slide",Space,Str "10",Space,Str "(Content)"] ,Div ("",["incremental","nonincremental"],[]) [BulletList [[Plain [Str "these"]] ,[Plain [Str "are"]] ,[Plain [Str "incremental"]] ,[Plain [Str "(the",Space,Str "incremental",Space,Str "class",Space,Str "wins)"]]]] ,Header 1 ("slide-11-content",[],[]) [Str "Slide",Space,Str "11",Space,Str "(Content)"] ,Para [Str "These",Space,Str "bullets",Space,Str "are",Space,Str "not",Space,Str "incremental:"] ,BlockQuote [BulletList [[Plain [Str "one"]] ,[Plain [Str "two"]] ,[Plain [Str "three"]]]] ,Para [Str "These",Space,Str "are:"] ,Div ("",["nonincremental"],[]) [BlockQuote [BulletList [[Plain [Str "one"]] ,[Plain [Str "two"]] ,[Plain [Str "three"]]]]] ,Para [Str "These",Space,Str "are",Space,Str "not:"] ,BlockQuote [Div ("",["nonincremental"],[]) [BulletList [[Plain [Str "one"]] ,[Plain [Str "two"]] ,[Plain [Str "three"]]]]] ,Header 1 ("slide-12-content",[],[]) [Str "Slide",Space,Str "12",Space,Str "(Content)"] ,Div ("",["nonincremental"],[]) [Div ("",["incremental"],[]) [BulletList [[Plain [Str "these"]] ,[Plain [Str "are"]] ,[Plain [Str "incremental"]]]]] ,Div ("",["incremental"],[]) [Div ("",["nonincremental"],[]) [BulletList [[Plain [Str "these"]] ,[Plain [Str "are"]] ,[Plain [Str "not"]]]]]] pandoc-3.1.3/test/pptx/incremental-lists/with-flag/output.pptx0000644000000000000000000022654007346545000022732 0ustar0000000000000000PK"Tv󭁰 ppt/slides/slide1.xmlXQo6+QX۴(FiE*$GR$yI,/#xwRiÕ$(ALr$H]FP[IRX[16yJbNT$ؖJT0o(Fs\.>Z.y>.D3A,i ^VVifƟ2g f̍dYWjj) IJ6I[K/eFxad^=!=$@ba5-}j~c\笲՜[P%6յo 4$[BYn*,ٲᬸlYn<* cgvY&}aIxFIF~" N!M%-ZBs>idEDSArV(AFٱ|rH =z~Q 9\3y8